From a6d585ba466f8b10f0e609cbc4d5508366a0fb2e Mon Sep 17 00:00:00 2001 From: Ben Leggiero Date: Sun, 19 Jul 2020 02:42:28 -0600 Subject: [PATCH] Added function to show elements which are only to be shown when JS is on --- .../general/js/BHStudios General Scripts.js | 149 +- .../js/BHStudios General Scripts.js.map | 2 +- .../js/BHStudios General Scripts.meta.js | 2 +- .../org/bh/scripts/general/general.kjsm | Bin 651 -> 679 bytes assets/v2/general/js/lib/kotlin.js | 9142 ++++++++++++----- assets/v2/general/js/lib/kotlin.js.map | 2 +- assets/v2/general/js/lib/kotlin.meta.js | 2 +- .../components/themeSwatches/Test.java | 8 - .../kt/src/org/bh/scripts/general/Main.kt | 15 + 9 files changed, 6470 insertions(+), 2852 deletions(-) delete mode 100644 assets/v2/general/kt/src/org/bh/scripts/components/themeSwatches/Test.java diff --git a/assets/v2/general/js/BHStudios General Scripts.js b/assets/v2/general/js/BHStudios General Scripts.js index fee1702..13fd8f3 100644 --- a/assets/v2/general/js/BHStudios General Scripts.js +++ b/assets/v2/general/js/BHStudios General Scripts.js @@ -1,7 +1,6 @@ if (typeof kotlin === 'undefined') { throw new Error("Error loading module 'BHStudios General Scripts'. Its dependency 'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to 'BHStudios General Scripts'."); -} -this['BHStudios General Scripts'] = function (_, Kotlin) { +}this['BHStudios General Scripts'] = function (_, Kotlin) { 'use strict'; var $$importsForInline$$ = _.$$importsForInline$$ || (_.$$importsForInline$$ = {}); var defineInlineFunction = Kotlin.defineInlineFunction; @@ -174,8 +173,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function ButtonModel$Companion_getInstance() { if (ButtonModel$Companion_instance === null) { new ButtonModel$Companion(); - } - return ButtonModel$Companion_instance; + }return ButtonModel$Companion_instance; } ButtonModel.$metadata$ = { kind: Kind_CLASS, @@ -218,8 +216,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { var tmp$; if (buttonModel != null && sidebarController != null) { tmp$ = new SidebarButtonController(buttonModel, sidebarController); - } - else { + } else { tmp$ = null; } return tmp$; @@ -233,8 +230,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function SidebarButtonController$Companion_getInstance() { if (SidebarButtonController$Companion_instance === null) { new SidebarButtonController$Companion(); - } - return SidebarButtonController$Companion_instance; + }return SidebarButtonController$Companion_instance; } function SidebarButtonController_init$lambda(this$SidebarButtonController) { return function (event) { @@ -296,8 +292,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { this.suppressChangeReactions_0 = true; if (newView == null) { this.didShowOrHide_dqye30$(this.model.isShown, this.model.isShown); - } - else { + } else { loadFromView_0(this.model, newView); newView.scrimHtmlElement.click(SidebarController$didSetView$lambda(this)); } @@ -313,8 +308,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { SidebarController$Companion.prototype.invoke_ejp6n4$ = function (htmlElement) { if (htmlElement == null) { return this.anySidebar; - } - else { + } else { return new SidebarController(SidebarModel$Companion_getInstance().invoke_2rdptt$(htmlElement), new SidebarViewWrapper(htmlElement)); } }; @@ -335,23 +329,19 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function SidebarController$Companion_getInstance() { if (SidebarController$Companion_instance === null) { new SidebarController$Companion(); - } - return SidebarController$Companion_instance; + }return SidebarController$Companion_instance; } SidebarController.prototype.didShowOrHide_dqye30$ = function (oldIsShown, newIsShown) { if (this.suppressChangeReactions_0) { return; - } - var view = this.view; + }var view = this.view; if (view == null) { if (newIsShown) { SidebarViewWrapper$Companion_getInstance().defaultContainerElement.addClass(SidebarViewWrapper$Companion_getInstance().sidebarShownClassName); - } - else { + } else { SidebarViewWrapper$Companion_getInstance().defaultContainerElement.removeClass(SidebarViewWrapper$Companion_getInstance().sidebarShownClassName); } - } - else { + } else { view.isShown = newIsShown; } }; @@ -432,8 +422,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function SidebarModel$Companion_getInstance() { if (SidebarModel$Companion_instance === null) { new SidebarModel$Companion(); - } - return SidebarModel$Companion_instance; + }return SidebarModel$Companion_instance; } function SidebarModel$isShown$lambda(this$SidebarModel) { return function (f, oldValue, newValue) { @@ -463,8 +452,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { this.scrimHtmlElementGetter_0 = SidebarViewWrapper$Companion_getInstance().scrimElementGetter_r6ezyp$(this.containerElement_0); if (0 === this.scrimHtmlElementGetter_0().length) { this.containerElement_0.prepend(SidebarViewWrapper$Companion_getInstance().generateNewScrimHtmlString()); - } - } + }} Object.defineProperty(SidebarViewWrapper.prototype, 'htmlElement', { get: function () { return this.htmlElement_1oaz9d$_0; @@ -516,8 +504,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function SidebarViewWrapper$Companion_getInstance() { if (SidebarViewWrapper$Companion_instance === null) { new SidebarViewWrapper$Companion(); - } - return SidebarViewWrapper$Companion_instance; + }return SidebarViewWrapper$Companion_instance; } SidebarViewWrapper.$metadata$ = { kind: Kind_CLASS, @@ -545,8 +532,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function ThemeSwatchController$Companion_getInstance() { if (ThemeSwatchController$Companion_instance === null) { new ThemeSwatchController$Companion(); - } - return ThemeSwatchController$Companion_instance; + }return ThemeSwatchController$Companion_instance; } function ThemeSwatchController_init$lambda(this$ThemeSwatchController) { return function (it) { @@ -566,8 +552,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { tmp$ = invoke_1(ThemeSwatchModel$Companion_getInstance(), view); if (tmp$ == null) { return null; - } - var model = tmp$; + }var model = tmp$; return new ThemeSwatchController(model, view); } function ThemeSwatchModel() { @@ -590,8 +575,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function ThemeSwatchModel$color$Companion_getInstance() { if (ThemeSwatchModel$color$Companion_instance === null) { new ThemeSwatchModel$color$Companion(); - } - return ThemeSwatchModel$color$Companion_instance; + }return ThemeSwatchModel$color$Companion_instance; } ThemeSwatchModel$color.$metadata$ = { kind: Kind_CLASS, @@ -615,8 +599,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function ThemeSwatchModel$brightness$Companion_getInstance() { if (ThemeSwatchModel$brightness$Companion_instance === null) { new ThemeSwatchModel$brightness$Companion(); - } - return ThemeSwatchModel$brightness$Companion_instance; + }return ThemeSwatchModel$brightness$Companion_instance; } ThemeSwatchModel$brightness.$metadata$ = { kind: Kind_CLASS, @@ -635,8 +618,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function ThemeSwatchModel$Companion_getInstance() { if (ThemeSwatchModel$Companion_instance === null) { new ThemeSwatchModel$Companion(); - } - return ThemeSwatchModel$Companion_instance; + }return ThemeSwatchModel$Companion_instance; } ThemeSwatchModel.$metadata$ = { kind: Kind_CLASS, @@ -649,8 +631,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { else if (Kotlin.isType($receiver, ThemeSwatchModel$brightness)) { ThemeBrightnessTier$Companion_getInstance(); return 'brightness' + '.' + $receiver.brightnessTier; - } - else + } else return Kotlin.noWhenBranchMatched(); } function generateModel($receiver) { @@ -658,13 +639,11 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { tmp$ = $receiver.htmlElement.getAttribute(ThemeSwatchViewWrapper$Companion_getInstance().themeSwatchTypeAttributeName); if (tmp$ == null) { return null; - } - var swatchType = tmp$; + }var swatchType = tmp$; tmp$_0 = $receiver.htmlElement.getAttribute(ThemeSwatchViewWrapper$Companion_getInstance().themeSwatchValueAttributeName); if (tmp$_0 == null) { return null; - } - var swatchValue = tmp$_0; + }var swatchValue = tmp$_0; if (equals(swatchType, ThemeColor$Companion_getInstance().serialKey)) tmp$_1 = new ThemeSwatchModel$color(swatchValue); else { @@ -691,8 +670,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { tmp$ = tryOrNull(invoke$lambda(serialValue)); if (tmp$ == null) { return null; - } - return new ThemeSwatchModel$brightness(tmp$); + }return new ThemeSwatchModel$brightness(tmp$); } function invoke_1($receiver, viewWrapper) { var tmp$, tmp$_0, tmp$_1; @@ -702,8 +680,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { tmp$_0 = generateModel(viewWrapper); if (tmp$_0 == null) { return null; - } - return invoke_3(tmp$_1, tmp$, tmp$_0); + }return invoke_3(tmp$_1, tmp$, tmp$_0); } function invoke_2($receiver, htmlElement) { return invoke_1(ThemeSwatchModel$Companion_getInstance(), new ThemeSwatchViewWrapper(htmlElement)); @@ -742,8 +719,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function ThemeSwatchViewWrapper$Companion_getInstance() { if (ThemeSwatchViewWrapper$Companion_instance === null) { new ThemeSwatchViewWrapper$Companion(); - } - return ThemeSwatchViewWrapper$Companion_instance; + }return ThemeSwatchViewWrapper$Companion_instance; } ThemeSwatchViewWrapper.$metadata$ = { kind: Kind_CLASS, @@ -753,6 +729,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function main$lambda(it) { Setup_getInstance().performCommonPageConnections(); Setup_getInstance().reloadStates(); + Setup_getInstance().showJsOnlyElements(); return Unit; } function main(args) { @@ -774,9 +751,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { var sidebarElement = $('#' + toString(specifiedSidebarId)).get(0); if (sidebarElement != null) { return new SidebarButtonController(ButtonController_init(sidebarButtonElement), SidebarController$Companion_getInstance().invoke_ejp6n4$(sidebarElement)); - } - } - return new SidebarButtonController(ButtonController_init(sidebarButtonElement), SidebarController$Companion_getInstance().invoke_ejp6n4$($('.sidebar').get(0))); + }}return new SidebarButtonController(ButtonController_init(sidebarButtonElement), SidebarController$Companion_getInstance().invoke_ejp6n4$($('.sidebar').get(0))); } Setup.prototype.connectAllSidebarsToSidebarButtons_0 = function () { addAll(this.sidebarButtonControllers_0, $('.show-sidebar-button').map(Setup$connectAllSidebarsToSidebarButtons$lambda)); @@ -793,6 +768,9 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { Setup.prototype.reloadTheme_0 = function () { ThemeController_getInstance().reloadTheme(); }; + Setup.prototype.showJsOnlyElements = function () { + $('.show-js').removeClass('show-js'); + }; Setup.$metadata$ = { kind: Kind_OBJECT, simpleName: 'Setup', @@ -802,8 +780,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function Setup_getInstance() { if (Setup_instance === null) { new Setup(); - } - return Setup_instance; + }return Setup_instance; } function LocalStorage() { LocalStorage_instance = this; @@ -815,8 +792,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { LocalStorage.prototype.set_jyasbz$ = function (keyName, newValue) { if (newValue == null) { window.localStorage.removeItem(keyName); - } - else { + } else { window.localStorage.setItem(keyName, newValue); } }; @@ -840,8 +816,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { if ((tmp$ = invoke_5(StoragePair$Companion_getInstance(), window.localStorage, this.index)) != null) { this.index = this.index + 1 | 0; tmp$_1 = tmp$; - } - else + } else tmp$_1 = null; var tmp$_2; if ((tmp$_0 = tmp$_1) != null) @@ -876,8 +851,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { LocalStorage.prototype.remove_11rb$ = function (element) { if (window.localStorage.getItem(element.keyName) == null) { return false; - } - else { + } else { window.localStorage.removeItem(element.keyName); return true; } @@ -891,8 +865,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function LocalStorage_getInstance() { if (LocalStorage_instance === null) { new LocalStorage(); - } - return LocalStorage_instance; + }return LocalStorage_instance; } function invoke_4($receiver, namespace) { return new NamespacedLocalStorage(namespace); @@ -954,8 +927,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function StoragePair$Companion_getInstance() { if (StoragePair$Companion_instance === null) { new StoragePair$Companion(); - } - return StoragePair$Companion_instance; + }return StoragePair$Companion_instance; } StoragePair.$metadata$ = { kind: Kind_CLASS, @@ -990,13 +962,11 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { tmp$ = from.key(index); if (tmp$ == null) { return null; - } - var keyName = tmp$; + }var keyName = tmp$; tmp$_0 = storage.getItem(keyName); if (tmp$_0 == null) { return null; - } - return new StoragePair(keyName, tmp$_0); + }return new StoragePair(keyName, tmp$_0); } function get_0($receiver, key, backupValue) { var tmp$; @@ -1005,8 +975,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { var answer = backupValue(); $receiver.put_xwzc9p$(key, answer); tmp$ = answer; - } - else { + } else { tmp$ = value; } return tmp$; @@ -1017,12 +986,10 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function tryOrNull(danger) { try { return danger(); - } - catch (_) { + } catch (_) { if (Kotlin.isType(_, Throwable)) { return null; - } - else + } else throw _; } } @@ -1081,8 +1048,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { ThemeBrightnessTier_initFields(); if (ThemeBrightnessTier$Companion_instance === null) { new ThemeBrightnessTier$Companion(); - } - return ThemeBrightnessTier$Companion_instance; + }return ThemeBrightnessTier$Companion_instance; } ThemeBrightnessTier.$metadata$ = { kind: Kind_CLASS, @@ -1126,8 +1092,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { if ($(':root').hasClass(get_className_0(element))) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -1143,8 +1108,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { if (equals(element.name, serialValue)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -1200,8 +1164,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function ThemeColor$Companion_getInstance() { if (ThemeColor$Companion_instance === null) { new ThemeColor$Companion(); - } - return ThemeColor$Companion_instance; + }return ThemeColor$Companion_instance; } ThemeColor.$metadata$ = { kind: Kind_CLASS, @@ -1219,18 +1182,15 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { tmp$_0 = typeof (tmp$ = $(ThemeController_getInstance().themeSheetLinkElementSelector).attr('href')) === 'string' ? tmp$ : null; if (tmp$_0 == null) { return null; - } - var stylesheetUrl = tmp$_0; + }var stylesheetUrl = tmp$_0; tmp$_1 = $receiver.stylesheetUrlRegex_8be2vx$.exec(stylesheetUrl); if (tmp$_1 == null) { return null; - } - var match = tmp$_1; + }var match = tmp$_1; tmp$_3 = typeof (tmp$_2 = match.groups[$receiver.stylesheetRegexPatternColorGroupName_8be2vx$]) === 'string' ? tmp$_2 : null; if (tmp$_3 == null) { return null; - } - var colorName = tmp$_3; + }var colorName = tmp$_3; return new ThemeColor(colorName); } function ThemeController() { @@ -1245,8 +1205,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { getCallableRef('setTheme', function ($receiver, model) { return $receiver.setTheme_xxas9g$(model), Unit; }.bind(null, this))(tmp$); - } - }; + }}; ThemeController.prototype.saveTheme_xxas9g$ = function (model) { var tmp$, tmp$_0; var serialModel = (tmp$_0 = (tmp$ = this.loadTheme()) != null ? getCallableRef('fillingInMissingData', function ($receiver, other) { @@ -1260,13 +1219,11 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { getCallableRef('setColor', function ($receiver, newColor) { return $receiver.setColor_y2sk0q$(newColor), Unit; }.bind(null, this))(tmp$); - } - if ((tmp$_0 = model.brightnessTier) != null) { + }if ((tmp$_0 = model.brightnessTier) != null) { getCallableRef('setBrightness', function ($receiver, newBrightness) { return $receiver.setBrightness_9hws1c$(newBrightness), Unit; }.bind(null, this))(tmp$_0); - } - this.saveTheme_xxas9g$(model); + }this.saveTheme_xxas9g$(model); }; ThemeController.prototype.loadTheme = function () { var tmp$; @@ -1289,8 +1246,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function ThemeController_getInstance() { if (ThemeController_instance === null) { new ThemeController(); - } - return ThemeController_instance; + }return ThemeController_instance; } function ThemeModel(color, brightnessTier) { ThemeModel$Companion_getInstance(); @@ -1317,8 +1273,7 @@ this['BHStudios General Scripts'] = function (_, Kotlin) { function ThemeModel$Companion_getInstance() { if (ThemeModel$Companion_instance === null) { new ThemeModel$Companion(); - } - return ThemeModel$Companion_instance; + }return ThemeModel$Companion_instance; } ThemeModel.$metadata$ = { kind: Kind_CLASS, diff --git a/assets/v2/general/js/BHStudios General Scripts.js.map b/assets/v2/general/js/BHStudios General Scripts.js.map index 7db48ee..30f7089 100644 --- a/assets/v2/general/js/BHStudios General Scripts.js.map +++ b/assets/v2/general/js/BHStudios General Scripts.js.map @@ -1 +1 @@ -{"version":3,"file":"BHStudios General Scripts.js","sources":["collections/Sets.kt","properties/Delegates.kt","collections/Maps.kt","collections/Collections.kt","util/Preconditions.kt","../kt/src/jQueryInterface/jQuery Headers.kt","../kt/src/org/bh/scripts/components/HtmlElement.kt","../kt/src/org/bh/scripts/components/button/ButtonController.kt","../../../../../../../../../../../dummy.kt","generated/_Collections.kt","../kt/src/org/bh/scripts/components/button/ButtonModel.kt","../kt/src/org/bh/scripts/components/button/ButtonViewWrapper.kt","../kt/src/org/bh/scripts/components/sidebar/SidebarButtonController.kt","../kt/src/org/bh/scripts/components/sidebar/SidebarController.kt","util/Lazy.kt","../kt/src/org/bh/scripts/components/sidebar/SidebarModel.kt","../kt/src/org/bh/scripts/components/sidebar/SidebarViewWrapper.kt","../kt/src/org/bh/scripts/components/themeSwatches/ThemeSwatchController.kt","../kt/src/org/bh/scripts/components/themeSwatches/ThemeSwatchModel.kt","../kt/src/org/bh/scripts/theming/ThemeBrightnessTier.kt","text/Strings.kt","../kt/src/org/bh/scripts/components/themeSwatches/ThemeSwatchViewWrapper.kt","../kt/src/org/bh/scripts/general/Main.kt","../kt/src/org/bh/scripts/general/serialization/LocalStorage.kt","../kt/src/org/bh/scripts/general/serialization/NamespacedLocalStorage.kt","../kt/src/org/bh/scripts/general/serialization/StoragePair.kt","../kt/src/org/bh/scripts/general/utilities/Map Extensions.kt","../kt/src/org/bh/scripts/general/utilities/RegExp Extensions.kt","../kt/src/org/bh/scripts/general/utilities/tryOrNull.kt","generated/_Arrays.kt","../kt/src/org/bh/scripts/theming/ThemeColor.kt","kotlin/text/string.kt","../kt/src/org/bh/scripts/theming/ThemeController.kt","util/Standard.kt","../kt/src/org/bh/scripts/theming/ThemeModel.kt"],"sourcesContent":["/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"SetsKt\")\n\npackage kotlin.collections\n\n\ninternal object EmptySet : Set, Serializable {\n private const val serialVersionUID: Long = 3406603774387020532\n\n override fun equals(other: Any?): Boolean = other is Set<*> && other.isEmpty()\n override fun hashCode(): Int = 0\n override fun toString(): String = \"[]\"\n\n override val size: Int get() = 0\n override fun isEmpty(): Boolean = true\n override fun contains(element: Nothing): Boolean = false\n override fun containsAll(elements: Collection): Boolean = elements.isEmpty()\n\n override fun iterator(): Iterator = EmptyIterator\n\n private fun readResolve(): Any = EmptySet\n}\n\n\n/**\n * Returns an empty read-only set. The returned set is serializable (JVM).\n * @sample samples.collections.Collections.Sets.emptyReadOnlySet\n */\npublic fun emptySet(): Set = EmptySet\n\n/**\n * Returns a new read-only set with the given elements.\n * Elements of the set are iterated in the order they were specified.\n * The returned set is serializable (JVM).\n * @sample samples.collections.Collections.Sets.readOnlySet\n */\npublic fun setOf(vararg elements: T): Set = if (elements.size > 0) elements.toSet() else emptySet()\n\n/**\n * Returns an empty read-only set. The returned set is serializable (JVM).\n * @sample samples.collections.Collections.Sets.emptyReadOnlySet\n */\n@kotlin.internal.InlineOnly\npublic inline fun setOf(): Set = emptySet()\n\n/**\n * Returns an empty new [MutableSet].\n *\n * The returned set preserves the element iteration order.\n * @sample samples.collections.Collections.Sets.emptyMutableSet\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun mutableSetOf(): MutableSet = LinkedHashSet()\n\n/**\n * Returns a new [MutableSet] with the given elements.\n * Elements of the set are iterated in the order they were specified.\n * @sample samples.collections.Collections.Sets.mutableSet\n */\npublic fun mutableSetOf(vararg elements: T): MutableSet = elements.toCollection(LinkedHashSet(mapCapacity(elements.size)))\n\n/** Returns an empty new [HashSet]. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun hashSetOf(): HashSet = HashSet()\n\n/** Returns a new [HashSet] with the given elements. */\npublic fun hashSetOf(vararg elements: T): HashSet = elements.toCollection(HashSet(mapCapacity(elements.size)))\n\n/** Returns an empty new [LinkedHashSet]. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun linkedSetOf(): LinkedHashSet = LinkedHashSet()\n\n/**\n * Returns a new [LinkedHashSet] with the given elements.\n * Elements of the set are iterated in the order they were specified.\n */\npublic fun linkedSetOf(vararg elements: T): LinkedHashSet = elements.toCollection(LinkedHashSet(mapCapacity(elements.size)))\n\n/** Returns this Set if it's not `null` and the empty set otherwise. */\n@kotlin.internal.InlineOnly\npublic inline fun Set?.orEmpty(): Set = this ?: emptySet()\n\ninternal fun Set.optimizeReadOnlySet() = when (size) {\n 0 -> emptySet()\n 1 -> setOf(iterator().next())\n else -> this\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.properties\n\nimport kotlin.reflect.KProperty\n\n/**\n * Standard property delegates.\n */\npublic object Delegates {\n /**\n * Returns a property delegate for a read/write property with a non-`null` value that is initialized not during\n * object construction time but at a later time. Trying to read the property before the initial value has been\n * assigned results in an exception.\n *\n * @sample samples.properties.Delegates.notNullDelegate\n */\n public fun notNull(): ReadWriteProperty = NotNullVar()\n\n /**\n * Returns a property delegate for a read/write property that calls a specified callback function when changed.\n * @param initialValue the initial value of the property.\n * @param onChange the callback which is called after the change of the property is made. The value of the property\n * has already been changed when this callback is invoked.\n *\n * @sample samples.properties.Delegates.observableDelegate\n */\n public inline fun observable(initialValue: T, crossinline onChange: (property: KProperty<*>, oldValue: T, newValue: T) -> Unit):\n ReadWriteProperty =\n object : ObservableProperty(initialValue) {\n override fun afterChange(property: KProperty<*>, oldValue: T, newValue: T) = onChange(property, oldValue, newValue)\n }\n\n /**\n * Returns a property delegate for a read/write property that calls a specified callback function when changed,\n * allowing the callback to veto the modification.\n * @param initialValue the initial value of the property.\n * @param onChange the callback which is called before a change to the property value is attempted.\n * The value of the property hasn't been changed yet, when this callback is invoked.\n * If the callback returns `true` the value of the property is being set to the new value,\n * and if the callback returns `false` the new value is discarded and the property remains its old value.\n *\n * @sample samples.properties.Delegates.vetoableDelegate\n * @sample samples.properties.Delegates.throwVetoableDelegate\n */\n public inline fun vetoable(initialValue: T, crossinline onChange: (property: KProperty<*>, oldValue: T, newValue: T) -> Boolean):\n ReadWriteProperty =\n object : ObservableProperty(initialValue) {\n override fun beforeChange(property: KProperty<*>, oldValue: T, newValue: T): Boolean = onChange(property, oldValue, newValue)\n }\n\n}\n\n\nprivate class NotNullVar() : ReadWriteProperty {\n private var value: T? = null\n\n public override fun getValue(thisRef: Any?, property: KProperty<*>): T {\n return value ?: throw IllegalStateException(\"Property ${property.name} should be initialized before get.\")\n }\n\n public override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) {\n this.value = value\n }\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"MapsKt\")\n\npackage kotlin.collections\n\nimport kotlin.contracts.*\n\nprivate object EmptyMap : Map, Serializable {\n private const val serialVersionUID: Long = 8246714829545688274\n\n override fun equals(other: Any?): Boolean = other is Map<*, *> && other.isEmpty()\n override fun hashCode(): Int = 0\n override fun toString(): String = \"{}\"\n\n override val size: Int get() = 0\n override fun isEmpty(): Boolean = true\n\n override fun containsKey(key: Any?): Boolean = false\n override fun containsValue(value: Nothing): Boolean = false\n override fun get(key: Any?): Nothing? = null\n override val entries: Set> get() = EmptySet\n override val keys: Set get() = EmptySet\n override val values: Collection get() = EmptyList\n\n private fun readResolve(): Any = EmptyMap\n}\n\n/**\n * Returns an empty read-only map of specified type.\n *\n * The returned map is serializable (JVM).\n * @sample samples.collections.Maps.Instantiation.emptyReadOnlyMap\n */\npublic fun emptyMap(): Map = @Suppress(\"UNCHECKED_CAST\") (EmptyMap as Map)\n\n/**\n * Returns a new read-only map with the specified contents, given as a list of pairs\n * where the first value is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * The returned map is serializable (JVM).\n *\n * @sample samples.collections.Maps.Instantiation.mapFromPairs\n */\npublic fun mapOf(vararg pairs: Pair): Map =\n if (pairs.size > 0) pairs.toMap(LinkedHashMap(mapCapacity(pairs.size))) else emptyMap()\n\n/**\n * Returns an empty read-only map.\n *\n * The returned map is serializable (JVM).\n * @sample samples.collections.Maps.Instantiation.emptyReadOnlyMap\n */\n@kotlin.internal.InlineOnly\npublic inline fun mapOf(): Map = emptyMap()\n\n/**\n * Returns an empty new [MutableMap].\n *\n * The returned map preserves the entry iteration order.\n * @sample samples.collections.Maps.Instantiation.emptyMutableMap\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun mutableMapOf(): MutableMap = LinkedHashMap()\n\n/**\n * Returns a new [MutableMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * @sample samples.collections.Maps.Instantiation.mutableMapFromPairs\n * @sample samples.collections.Maps.Instantiation.emptyMutableMap\n */\npublic fun mutableMapOf(vararg pairs: Pair): MutableMap =\n LinkedHashMap(mapCapacity(pairs.size)).apply { putAll(pairs) }\n\n/**\n * Returns an empty new [HashMap].\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun hashMapOf(): HashMap = HashMap()\n\n/**\n * Returns a new [HashMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * @sample samples.collections.Maps.Instantiation.hashMapFromPairs\n */\npublic fun hashMapOf(vararg pairs: Pair): HashMap = HashMap(mapCapacity(pairs.size)).apply { putAll(pairs) }\n\n/**\n * Returns an empty new [LinkedHashMap].\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun linkedMapOf(): LinkedHashMap = LinkedHashMap()\n\n/**\n * Returns a new [LinkedHashMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * @sample samples.collections.Maps.Instantiation.linkedMapFromPairs\n */\npublic fun linkedMapOf(vararg pairs: Pair): LinkedHashMap = pairs.toMap(LinkedHashMap(mapCapacity(pairs.size)))\n\n/**\n * Calculate the initial capacity of a map, based on Guava's com.google.common.collect.Maps approach. This is equivalent\n * to the Collection constructor for HashSet, (c.size()/.75f) + 1, but provides further optimisations for very small or\n * very large sizes, allows support non-collection classes, and provides consistency for all map based class construction.\n */\n@PublishedApi\ninternal fun mapCapacity(expectedSize: Int): Int {\n if (expectedSize < 3) {\n return expectedSize + 1\n }\n if (expectedSize < INT_MAX_POWER_OF_TWO) {\n return expectedSize + expectedSize / 3\n }\n return Int.MAX_VALUE // any large value\n}\n\nprivate const val INT_MAX_POWER_OF_TWO: Int = Int.MAX_VALUE / 2 + 1\n\n/** Returns `true` if this map is not empty. */\n@kotlin.internal.InlineOnly\npublic inline fun Map.isNotEmpty(): Boolean = !isEmpty()\n\n/**\n * Returns `true` if this nullable map is either null or empty.\n * @sample samples.collections.Maps.Usage.mapIsNullOrEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Map?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || isEmpty()\n}\n\n/**\n * Returns the [Map] if its not `null`, or the empty [Map] otherwise.\n *\n * @sample samples.collections.Maps.Usage.mapOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map?.orEmpty(): Map = this ?: emptyMap()\n\n/**\n * Returns this map if it's not empty\n * or the result of calling [defaultValue] function if the map is empty.\n *\n * @sample samples.collections.Maps.Usage.mapIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun M.ifEmpty(defaultValue: () -> R): R where M : Map<*, *>, M : R =\n if (isEmpty()) defaultValue() else this\n\n/**\n * Checks if the map contains the given key.\n *\n * This method allows to use the `x in map` syntax for checking whether an object is contained in the map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <@kotlin.internal.OnlyInputTypes K, V> Map.contains(key: K): Boolean = containsKey(key)\n\n/**\n * Returns the value corresponding to the given [key], or `null` if such a key is not present in the map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <@kotlin.internal.OnlyInputTypes K, V> Map.get(key: K): V? =\n @Suppress(\"UNCHECKED_CAST\") (this as Map).get(key)\n\n/**\n * Allows to use the index operator for storing values in a mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.set(key: K, value: V): Unit {\n put(key, value)\n}\n\n/**\n * Returns `true` if the map contains the specified [key].\n *\n * Allows to overcome type-safety restriction of `containsKey` that requires to pass a key of type `K`.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes K> Map.containsKey(key: K): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as Map).containsKey(key)\n\n/**\n * Returns `true` if the map maps one or more keys to the specified [value].\n *\n * Allows to overcome type-safety restriction of `containsValue` that requires to pass a value of type `V`.\n *\n * @sample samples.collections.Maps.Usage.containsValue\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\n@kotlin.internal.InlineOnly\npublic inline fun Map.containsValue(value: V): Boolean = this.containsValue(value)\n\n\n/**\n * Removes the specified key and its corresponding value from this map.\n *\n * @return the previous value associated with the key, or `null` if the key was not present in the map.\n\n * Allows to overcome type-safety restriction of `remove` that requires to pass a key of type `K`.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes K, V> MutableMap.remove(key: K): V? =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableMap).remove(key)\n\n/**\n * Returns the key component of the map entry.\n *\n * This method allows to use destructuring declarations when working with maps, for example:\n * ```\n * for ((key, value) in map) {\n * // do something with the key and the value\n * }\n * ```\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Map.Entry.component1(): K = key\n\n/**\n * Returns the value component of the map entry.\n *\n * This method allows to use destructuring declarations when working with maps, for example:\n * ```\n * for ((key, value) in map) {\n * // do something with the key and the value\n * }\n * ```\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Map.Entry.component2(): V = value\n\n/**\n * Converts entry to [Pair] with key being first component and value being second.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.Entry.toPair(): Pair = Pair(key, value)\n\n/**\n * Returns the value for the given key, or the result of the [defaultValue] function if there was no entry for the given key.\n *\n * @sample samples.collections.Maps.Usage.getOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.getOrElse(key: K, defaultValue: () -> V): V = get(key) ?: defaultValue()\n\n\ninternal inline fun Map.getOrElseNullable(key: K, defaultValue: () -> V): V {\n val value = get(key)\n if (value == null && !containsKey(key)) {\n return defaultValue()\n } else {\n @Suppress(\"UNCHECKED_CAST\")\n return value as V\n }\n}\n\n/**\n * Returns the value for the given [key] or throws an exception if there is no such key in the map.\n *\n * If the map was created by [withDefault], resorts to its `defaultValue` provider function\n * instead of throwing an exception.\n *\n * @throws NoSuchElementException when the map doesn't contain a value for the specified key and\n * no implicit default value was provided for that map.\n */\n@SinceKotlin(\"1.1\")\npublic fun Map.getValue(key: K): V = getOrImplicitDefault(key)\n\n/**\n * Returns the value for the given key. If the key is not found in the map, calls the [defaultValue] function,\n * puts its result into the map under the given key and returns it.\n *\n * Note that the operation is not guaranteed to be atomic if the map is being modified concurrently.\n *\n * @sample samples.collections.Maps.Usage.getOrPut\n */\npublic inline fun MutableMap.getOrPut(key: K, defaultValue: () -> V): V {\n val value = get(key)\n return if (value == null) {\n val answer = defaultValue()\n put(key, answer)\n answer\n } else {\n value\n }\n}\n\n/**\n * Returns an [Iterator] over the entries in the [Map].\n *\n * @sample samples.collections.Maps.Usage.forOverEntries\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Map.iterator(): Iterator> = entries.iterator()\n\n/**\n * Returns a [MutableIterator] over the mutable entries in the [MutableMap].\n *\n */\n@kotlin.jvm.JvmName(\"mutableIterator\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.iterator(): MutableIterator> = entries.iterator()\n\n/**\n * Populates the given [destination] map with entries having the keys of this map and the values obtained\n * by applying the [transform] function to each entry in this [Map].\n */\npublic inline fun > Map.mapValuesTo(destination: M, transform: (Map.Entry) -> R): M {\n return entries.associateByTo(destination, { it.key }, transform)\n}\n\n/**\n * Populates the given [destination] map with entries having the keys obtained\n * by applying the [transform] function to each entry in this [Map] and the values of this map.\n *\n * In case if any two entries are mapped to the equal keys, the value of the latter one will overwrite\n * the value associated with the former one.\n */\npublic inline fun > Map.mapKeysTo(destination: M, transform: (Map.Entry) -> R): M {\n return entries.associateByTo(destination, transform, { it.value })\n}\n\n/**\n * Puts all the given [pairs] into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun MutableMap.putAll(pairs: Array>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Puts all the elements of the given collection into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun MutableMap.putAll(pairs: Iterable>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Puts all the elements of the given sequence into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun MutableMap.putAll(pairs: Sequence>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Returns a new map with entries having the keys of this map and the values obtained by applying the [transform]\n * function to each entry in this [Map].\n *\n * The returned map preserves the entry iteration order of the original map.\n *\n * @sample samples.collections.Maps.Transformations.mapValues\n */\npublic inline fun Map.mapValues(transform: (Map.Entry) -> R): Map {\n return mapValuesTo(LinkedHashMap(mapCapacity(size)), transform) // .optimizeReadOnlyMap()\n}\n\n/**\n * Returns a new Map with entries having the keys obtained by applying the [transform] function to each entry in this\n * [Map] and the values of this map.\n *\n * In case if any two entries are mapped to the equal keys, the value of the latter one will overwrite\n * the value associated with the former one.\n *\n * The returned map preserves the entry iteration order of the original map.\n *\n * @sample samples.collections.Maps.Transformations.mapKeys\n */\npublic inline fun Map.mapKeys(transform: (Map.Entry) -> R): Map {\n return mapKeysTo(LinkedHashMap(mapCapacity(size)), transform) // .optimizeReadOnlyMap()\n}\n\n/**\n * Returns a map containing all key-value pairs with keys matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterKeys\n */\npublic inline fun Map.filterKeys(predicate: (K) -> Boolean): Map {\n val result = LinkedHashMap()\n for (entry in this) {\n if (predicate(entry.key)) {\n result.put(entry.key, entry.value)\n }\n }\n return result\n}\n\n/**\n * Returns a map containing all key-value pairs with values matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterValues\n */\npublic inline fun Map.filterValues(predicate: (V) -> Boolean): Map {\n val result = LinkedHashMap()\n for (entry in this) {\n if (predicate(entry.value)) {\n result.put(entry.key, entry.value)\n }\n }\n return result\n}\n\n\n/**\n * Appends all entries matching the given [predicate] into the mutable map given as [destination] parameter.\n *\n * @return the destination map.\n * @sample samples.collections.Maps.Filtering.filterTo\n */\npublic inline fun > Map.filterTo(destination: M, predicate: (Map.Entry) -> Boolean): M {\n for (element in this) {\n if (predicate(element)) {\n destination.put(element.key, element.value)\n }\n }\n return destination\n}\n\n/**\n * Returns a new map containing all key-value pairs matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filter\n */\npublic inline fun Map.filter(predicate: (Map.Entry) -> Boolean): Map {\n return filterTo(LinkedHashMap(), predicate)\n}\n\n/**\n * Appends all entries not matching the given [predicate] into the given [destination].\n *\n * @return the destination map.\n * @sample samples.collections.Maps.Filtering.filterNotTo\n */\npublic inline fun > Map.filterNotTo(destination: M, predicate: (Map.Entry) -> Boolean): M {\n for (element in this) {\n if (!predicate(element)) {\n destination.put(element.key, element.value)\n }\n }\n return destination\n}\n\n/**\n * Returns a new map containing all key-value pairs not matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterNot\n */\npublic inline fun Map.filterNot(predicate: (Map.Entry) -> Boolean): Map {\n return filterNotTo(LinkedHashMap(), predicate)\n}\n\n/**\n * Returns a new map containing all key-value pairs from the given collection of pairs.\n *\n * The returned map preserves the entry iteration order of the original collection.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun Iterable>.toMap(): Map {\n if (this is Collection) {\n return when (size) {\n 0 -> emptyMap()\n 1 -> mapOf(if (this is List) this[0] else iterator().next())\n else -> toMap(LinkedHashMap(mapCapacity(size)))\n }\n }\n return toMap(LinkedHashMap()).optimizeReadOnlyMap()\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given collection of pairs.\n */\npublic fun > Iterable>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new map containing all key-value pairs from the given array of pairs.\n *\n * The returned map preserves the entry iteration order of the original array.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun Array>.toMap(): Map = when (size) {\n 0 -> emptyMap()\n 1 -> mapOf(this[0])\n else -> toMap(LinkedHashMap(mapCapacity(size)))\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given array of pairs.\n */\npublic fun > Array>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new map containing all key-value pairs from the given sequence of pairs.\n *\n * The returned map preserves the entry iteration order of the original sequence.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun Sequence>.toMap(): Map = toMap(LinkedHashMap()).optimizeReadOnlyMap()\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given sequence of pairs.\n */\npublic fun > Sequence>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new read-only map containing all key-value pairs from the original map.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic fun Map.toMap(): Map = when (size) {\n 0 -> emptyMap()\n 1 -> toSingletonMap()\n else -> toMutableMap()\n}\n\n/**\n * Returns a new mutable map containing all key-value pairs from the original map.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic fun Map.toMutableMap(): MutableMap = LinkedHashMap(this)\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given map.\n */\n@SinceKotlin(\"1.1\")\npublic fun > Map.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Creates a new read-only map by replacing or adding an entry to this map from a given key-value [pair].\n *\n * The returned map preserves the entry iteration order of the original map.\n * The [pair] is iterated in the end if it has a unique key.\n */\npublic operator fun Map.plus(pair: Pair): Map =\n if (this.isEmpty()) mapOf(pair) else LinkedHashMap(this).apply { put(pair.first, pair.second) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given collection of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] collection.\n */\npublic operator fun Map.plus(pairs: Iterable>): Map =\n if (this.isEmpty()) pairs.toMap() else LinkedHashMap(this).apply { putAll(pairs) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given array of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] array.\n */\npublic operator fun Map.plus(pairs: Array>): Map =\n if (this.isEmpty()) pairs.toMap() else LinkedHashMap(this).apply { putAll(pairs) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given sequence of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] sequence.\n */\npublic operator fun Map.plus(pairs: Sequence>): Map =\n LinkedHashMap(this).apply { putAll(pairs) }.optimizeReadOnlyMap()\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from another [map].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those entries of another [map] that are missing in this map are iterated in the end in the order of that [map].\n */\npublic operator fun Map.plus(map: Map): Map =\n LinkedHashMap(this).apply { putAll(map) }\n\n\n/**\n * Appends or replaces the given [pair] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pair: Pair) {\n put(pair.first, pair.second)\n}\n\n/**\n * Appends or replaces all pairs from the given collection of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pairs: Iterable>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all pairs from the given array of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pairs: Array>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all pairs from the given sequence of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pairs: Sequence>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all entries from the given [map] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(map: Map) {\n putAll(map)\n}\n\n/**\n * Returns a map containing all entries of the original map except the entry with the given [key].\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(key: K): Map =\n this.toMutableMap().apply { minusAssign(key) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] collection.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(keys: Iterable): Map =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] array.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(keys: Array): Map =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] sequence.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(keys: Sequence): Map =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Removes the entry with the given [key] from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(key: K) {\n remove(key)\n}\n\n/**\n * Removes all entries the keys of which are contained in the given [keys] collection from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(keys: Iterable) {\n this.keys.removeAll(keys)\n}\n\n/**\n * Removes all entries the keys of which are contained in the given [keys] array from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(keys: Array) {\n this.keys.removeAll(keys)\n}\n\n/**\n * Removes all entries from the keys of which are contained in the given [keys] sequence from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(keys: Sequence) {\n this.keys.removeAll(keys)\n}\n\n\n// do not expose for now @PublishedApi\ninternal fun Map.optimizeReadOnlyMap() = when (size) {\n 0 -> emptyMap()\n 1 -> toSingletonMapOrSelf()\n else -> this\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\nimport kotlin.contracts.*\n\ninternal object EmptyIterator : ListIterator {\n override fun hasNext(): Boolean = false\n override fun hasPrevious(): Boolean = false\n override fun nextIndex(): Int = 0\n override fun previousIndex(): Int = -1\n override fun next(): Nothing = throw NoSuchElementException()\n override fun previous(): Nothing = throw NoSuchElementException()\n}\n\ninternal object EmptyList : List, Serializable, RandomAccess {\n private const val serialVersionUID: Long = -7390468764508069838L\n\n override fun equals(other: Any?): Boolean = other is List<*> && other.isEmpty()\n override fun hashCode(): Int = 1\n override fun toString(): String = \"[]\"\n\n override val size: Int get() = 0\n override fun isEmpty(): Boolean = true\n override fun contains(element: Nothing): Boolean = false\n override fun containsAll(elements: Collection): Boolean = elements.isEmpty()\n\n override fun get(index: Int): Nothing = throw IndexOutOfBoundsException(\"Empty list doesn't contain element at index $index.\")\n override fun indexOf(element: Nothing): Int = -1\n override fun lastIndexOf(element: Nothing): Int = -1\n\n override fun iterator(): Iterator = EmptyIterator\n override fun listIterator(): ListIterator = EmptyIterator\n override fun listIterator(index: Int): ListIterator {\n if (index != 0) throw IndexOutOfBoundsException(\"Index: $index\")\n return EmptyIterator\n }\n\n override fun subList(fromIndex: Int, toIndex: Int): List {\n if (fromIndex == 0 && toIndex == 0) return this\n throw IndexOutOfBoundsException(\"fromIndex: $fromIndex, toIndex: $toIndex\")\n }\n\n private fun readResolve(): Any = EmptyList\n}\n\ninternal fun Array.asCollection(): Collection = ArrayAsCollection(this, isVarargs = false)\n\nprivate class ArrayAsCollection(val values: Array, val isVarargs: Boolean) : Collection {\n override val size: Int get() = values.size\n override fun isEmpty(): Boolean = values.isEmpty()\n override fun contains(element: T): Boolean = values.contains(element)\n override fun containsAll(elements: Collection): Boolean = elements.all { contains(it) }\n override fun iterator(): Iterator = values.iterator()\n // override hidden toArray implementation to prevent copying of values array\n public fun toArray(): Array = values.copyToArrayOfAny(isVarargs)\n}\n\n/**\n * Returns an empty read-only list. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.emptyReadOnlyList\n */\npublic fun emptyList(): List = EmptyList\n\n/**\n * Returns a new read-only list of given elements. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.readOnlyList\n */\npublic fun listOf(vararg elements: T): List = if (elements.size > 0) elements.asList() else emptyList()\n\n/**\n * Returns an empty read-only list. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.emptyReadOnlyList\n */\n@kotlin.internal.InlineOnly\npublic inline fun listOf(): List = emptyList()\n\n/**\n * Returns an empty new [MutableList].\n * @sample samples.collections.Collections.Lists.emptyMutableList\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun mutableListOf(): MutableList = ArrayList()\n\n/**\n * Returns an empty new [ArrayList].\n * @sample samples.collections.Collections.Lists.emptyArrayList\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun arrayListOf(): ArrayList = ArrayList()\n\n/**\n * Returns a new [MutableList] with the given elements.\n * @sample samples.collections.Collections.Lists.mutableList\n */\npublic fun mutableListOf(vararg elements: T): MutableList =\n if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))\n\n/**\n * Returns a new [ArrayList] with the given elements.\n * @sample samples.collections.Collections.Lists.arrayList\n */\npublic fun arrayListOf(vararg elements: T): ArrayList =\n if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))\n\n/**\n * Returns a new read-only list either of single given element, if it is not null, or empty list if the element is null. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.listOfNotNull\n */\npublic fun listOfNotNull(element: T?): List = if (element != null) listOf(element) else emptyList()\n\n/**\n * Returns a new read-only list only of those given elements, that are not null. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.listOfNotNull\n */\npublic fun listOfNotNull(vararg elements: T?): List = elements.filterNotNull()\n\n/**\n * Creates a new read-only list with the specified [size], where each element is calculated by calling the specified\n * [init] function. The [init] function returns a list element given its index.\n * @sample samples.collections.Collections.Lists.readOnlyListFromInitializer\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun List(size: Int, init: (index: Int) -> T): List = MutableList(size, init)\n\n/**\n * Creates a new mutable list with the specified [size], where each element is calculated by calling the specified\n * [init] function. The [init] function returns a list element given its index.\n * @sample samples.collections.Collections.Lists.mutableListFromInitializer\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun MutableList(size: Int, init: (index: Int) -> T): MutableList {\n val list = ArrayList(size)\n repeat(size) { index -> list.add(init(index)) }\n return list\n}\n\n/**\n * Returns an [IntRange] of the valid indices for this collection.\n * @sample samples.collections.Collections.Collections.indicesOfCollection\n */\npublic val Collection<*>.indices: IntRange\n get() = 0..size - 1\n\n/**\n * Returns the index of the last item in the list or -1 if the list is empty.\n *\n * @sample samples.collections.Collections.Lists.lastIndexOfList\n */\npublic val List.lastIndex: Int\n get() = this.size - 1\n\n/**\n * Returns `true` if the collection is not empty.\n * @sample samples.collections.Collections.Collections.collectionIsNotEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection.isNotEmpty(): Boolean = !isEmpty()\n\n/**\n * Returns `true` if this nullable collection is either null or empty.\n * @sample samples.collections.Collections.Collections.collectionIsNullOrEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Collection?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || this.isEmpty()\n}\n\n/**\n * Returns this Collection if it's not `null` and the empty list otherwise.\n * @sample samples.collections.Collections.Collections.collectionOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection?.orEmpty(): Collection = this ?: emptyList()\n\n/**\n * Returns this List if it's not `null` and the empty list otherwise.\n * @sample samples.collections.Collections.Lists.listOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun List?.orEmpty(): List = this ?: emptyList()\n\n/**\n * Returns this collection if it's not empty\n * or the result of calling [defaultValue] function if the collection is empty.\n *\n * @sample samples.collections.Collections.Collections.collectionIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun C.ifEmpty(defaultValue: () -> R): R where C : Collection<*>, C : R =\n if (isEmpty()) defaultValue() else this\n\n\n/**\n * Checks if all elements in the specified collection are contained in this collection.\n *\n * Allows to overcome type-safety restriction of `containsAll` that requires to pass a collection of type `Collection`.\n * @sample samples.collections.Collections.Collections.collectionContainsAll\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> Collection.containsAll(elements: Collection): Boolean = this.containsAll(elements)\n\ninternal fun List.optimizeReadOnlyList() = when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this\n}\n\n/**\n * Searches this list or its range for the provided [element] using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the Comparable natural ordering of its elements,\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements equal to the specified [element], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchOnComparable\n * @sample samples.collections.Collections.Lists.binarySearchWithBoundaries\n */\npublic fun > List.binarySearch(element: T?, fromIndex: Int = 0, toIndex: Int = size): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = compareValues(midVal, element)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Searches this list or its range for the provided [element] using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the specified [comparator],\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements equal to the specified [element], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted according to the specified [comparator].\n * @sample samples.collections.Collections.Lists.binarySearchWithComparator\n */\npublic fun List.binarySearch(element: T, comparator: Comparator, fromIndex: Int = 0, toIndex: Int = size): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = comparator.compare(midVal, element)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Searches this list or its range for an element having the key returned by the specified [selector] function\n * equal to the provided [key] value using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the Comparable natural ordering of keys of its elements.\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements with the specified [key], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element with the specified [key], if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchByKey\n */\npublic inline fun > List.binarySearchBy(\n key: K?,\n fromIndex: Int = 0,\n toIndex: Int = size,\n crossinline selector: (T) -> K?\n): Int =\n binarySearch(fromIndex, toIndex) { compareValues(selector(it), key) }\n\n// do not introduce this overload --- too rare\n//public fun List.binarySearchBy(key: K, comparator: Comparator, fromIndex: Int = 0, toIndex: Int = size(), selector: (T) -> K): Int =\n// binarySearch(fromIndex, toIndex) { comparator.compare(selector(it), key) }\n\n\n/**\n * Searches this list or its range for an element for which [comparison] function returns zero using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the provided [comparison],\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements for which [comparison] returns zero, there is no guarantee which one will be found.\n *\n * @param comparison function that compares an element of the list with the element being searched.\n *\n * @return the index of the found element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchWithComparisonFunction\n */\npublic fun List.binarySearch(fromIndex: Int = 0, toIndex: Int = size, comparison: (T) -> Int): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = comparison(midVal)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Checks that `from` and `to` are in\n * the range of [0..size] and throws an appropriate exception, if they aren't.\n */\nprivate fun rangeCheck(size: Int, fromIndex: Int, toIndex: Int) {\n when {\n fromIndex > toIndex -> throw IllegalArgumentException(\"fromIndex ($fromIndex) is greater than toIndex ($toIndex).\")\n fromIndex < 0 -> throw IndexOutOfBoundsException(\"fromIndex ($fromIndex) is less than zero.\")\n toIndex > size -> throw IndexOutOfBoundsException(\"toIndex ($toIndex) is greater than size ($size).\")\n }\n}\n\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal expect fun checkIndexOverflow(index: Int): Int\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal expect fun checkCountOverflow(count: Int): Int\n\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun throwIndexOverflow() { throw ArithmeticException(\"Index overflow has happened.\") }\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun throwCountOverflow() { throw ArithmeticException(\"Count overflow has happened.\") }\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"PreconditionsKt\")\n\npackage kotlin\n\nimport kotlin.contracts.contract\n\n/**\n * Throws an [IllegalArgumentException] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failRequireWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun require(value: Boolean): Unit {\n contract {\n returns() implies value\n }\n require(value) { \"Failed requirement.\" }\n}\n\n/**\n * Throws an [IllegalArgumentException] with the result of calling [lazyMessage] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failRequireWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun require(value: Boolean, lazyMessage: () -> Any): Unit {\n contract {\n returns() implies value\n }\n if (!value) {\n val message = lazyMessage()\n throw IllegalArgumentException(message.toString())\n }\n}\n\n/**\n * Throws an [IllegalArgumentException] if the [value] is null. Otherwise returns the not null value.\n */\n@kotlin.internal.InlineOnly\npublic inline fun requireNotNull(value: T?): T {\n contract {\n returns() implies (value != null)\n }\n return requireNotNull(value) { \"Required value was null.\" }\n}\n\n/**\n * Throws an [IllegalArgumentException] with the result of calling [lazyMessage] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failRequireWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun requireNotNull(value: T?, lazyMessage: () -> Any): T {\n contract {\n returns() implies (value != null)\n }\n\n if (value == null) {\n val message = lazyMessage()\n throw IllegalArgumentException(message.toString())\n } else {\n return value\n }\n}\n\n/**\n * Throws an [IllegalStateException] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun check(value: Boolean): Unit {\n contract {\n returns() implies value\n }\n check(value) { \"Check failed.\" }\n}\n\n/**\n * Throws an [IllegalStateException] with the result of calling [lazyMessage] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun check(value: Boolean, lazyMessage: () -> Any): Unit {\n contract {\n returns() implies value\n }\n if (!value) {\n val message = lazyMessage()\n throw IllegalStateException(message.toString())\n }\n}\n\n/**\n * Throws an [IllegalStateException] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun checkNotNull(value: T?): T {\n contract {\n returns() implies (value != null)\n }\n return checkNotNull(value) { \"Required value was null.\" }\n}\n\n/**\n * Throws an [IllegalStateException] with the result of calling [lazyMessage] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun checkNotNull(value: T?, lazyMessage: () -> Any): T {\n contract {\n returns() implies (value != null)\n }\n\n if (value == null) {\n val message = lazyMessage()\n throw IllegalStateException(message.toString())\n } else {\n return value\n }\n}\n\n\n/**\n * Throws an [IllegalStateException] with the given [message].\n *\n * @sample samples.misc.Preconditions.failWithError\n */\n@kotlin.internal.InlineOnly\npublic inline fun error(message: Any): Nothing = throw IllegalStateException(message.toString())\n",null,null,null,null,"/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component1(): T {\n return get(0)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component2(): T {\n return get(1)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component3(): T {\n return get(2)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component4(): T {\n return get(3)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component5(): T {\n return get(4)\n}\n\n/**\n * Returns `true` if [element] is found in the collection.\n */\npublic operator fun <@kotlin.internal.OnlyInputTypes T> Iterable.contains(element: T): Boolean {\n if (this is Collection)\n return contains(element)\n return indexOf(element) >= 0\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic fun Iterable.elementAt(index: Int): T {\n if (this is List)\n return get(index)\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"Collection doesn't contain element at index $index.\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.elementAt(index: Int): T {\n return get(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\npublic fun Iterable.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n if (this is List)\n return this.getOrElse(index, defaultValue)\n if (index < 0)\n return defaultValue(index)\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\npublic fun Iterable.elementAtOrNull(index: Int): T? {\n if (this is List)\n return this.getOrNull(index)\n if (index < 0)\n return null\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.elementAtOrNull(index: Int): T? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.find(predicate: (T) -> Boolean): T? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the collection is empty.\n */\npublic fun Iterable.first(): T {\n when (this) {\n is List -> return this.first()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n return iterator.next()\n }\n }\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the list is empty.\n */\npublic fun List.first(): T {\n if (isEmpty())\n throw NoSuchElementException(\"List is empty.\")\n return this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun Iterable.first(predicate: (T) -> Boolean): T {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element, or `null` if the collection is empty.\n */\npublic fun Iterable.firstOrNull(): T? {\n when (this) {\n is List -> {\n if (isEmpty())\n return null\n else\n return this[0]\n }\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n return iterator.next()\n }\n }\n}\n\n/**\n * Returns the first element, or `null` if the list is empty.\n */\npublic fun List.firstOrNull(): T? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun Iterable.firstOrNull(predicate: (T) -> Boolean): T? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this list.\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.getOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this list.\n */\npublic fun List.getOrNull(index: Int): T? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns first index of [element], or -1 if the collection does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Iterable.indexOf(element: T): Int {\n if (this is List) return this.indexOf(element)\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the list does not contain element.\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\npublic fun <@kotlin.internal.OnlyInputTypes T> List.indexOf(element: T): Int {\n return indexOf(element)\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the collection does not contain such element.\n */\npublic inline fun Iterable.indexOfFirst(predicate: (T) -> Boolean): Int {\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the list does not contain such element.\n */\npublic inline fun List.indexOfFirst(predicate: (T) -> Boolean): Int {\n var index = 0\n for (item in this) {\n if (predicate(item))\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the collection does not contain such element.\n */\npublic inline fun Iterable.indexOfLast(predicate: (T) -> Boolean): Int {\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the list does not contain such element.\n */\npublic inline fun List.indexOfLast(predicate: (T) -> Boolean): Int {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n if (predicate(iterator.previous())) {\n return iterator.nextIndex()\n }\n }\n return -1\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the collection is empty.\n */\npublic fun Iterable.last(): T {\n when (this) {\n is List -> return this.last()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n }\n }\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the list is empty.\n */\npublic fun List.last(): T {\n if (isEmpty())\n throw NoSuchElementException(\"List is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun Iterable.last(predicate: (T) -> Boolean): T {\n var last: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n last = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return last as T\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun List.last(predicate: (T) -> Boolean): T {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n val element = iterator.previous()\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"List contains no element matching the predicate.\")\n}\n\n/**\n * Returns last index of [element], or -1 if the collection does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Iterable.lastIndexOf(element: T): Int {\n if (this is List) return this.lastIndexOf(element)\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns last index of [element], or -1 if the list does not contain element.\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\npublic fun <@kotlin.internal.OnlyInputTypes T> List.lastIndexOf(element: T): Int {\n return lastIndexOf(element)\n}\n\n/**\n * Returns the last element, or `null` if the collection is empty.\n */\npublic fun Iterable.lastOrNull(): T? {\n when (this) {\n is List -> return if (isEmpty()) null else this[size - 1]\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n }\n }\n}\n\n/**\n * Returns the last element, or `null` if the list is empty.\n */\npublic fun List.lastOrNull(): T? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun Iterable.lastOrNull(predicate: (T) -> Boolean): T? {\n var last: T? = null\n for (element in this) {\n if (predicate(element)) {\n last = element\n }\n }\n return last\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun List.lastOrNull(predicate: (T) -> Boolean): T? {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n val element = iterator.previous()\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns a random element from this collection.\n * \n * @throws NoSuchElementException if this collection is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Collection.random(): T {\n return random(Random)\n}\n\n/**\n * Returns a random element from this collection using the specified source of randomness.\n * \n * @throws NoSuchElementException if this collection is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun Collection.random(random: Random): T {\n if (isEmpty())\n throw NoSuchElementException(\"Collection is empty.\")\n return elementAt(random.nextInt(size))\n}\n\n/**\n * Returns the single element, or throws an exception if the collection is empty or has more than one element.\n */\npublic fun Iterable.single(): T {\n when (this) {\n is List -> return this.single()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n val single = iterator.next()\n if (iterator.hasNext())\n throw IllegalArgumentException(\"Collection has more than one element.\")\n return single\n }\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the list is empty or has more than one element.\n */\npublic fun List.single(): T {\n return when (size) {\n 0 -> throw NoSuchElementException(\"List is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"List has more than one element.\")\n }\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun Iterable.single(predicate: (T) -> Boolean): T {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Collection contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as T\n}\n\n/**\n * Returns single element, or `null` if the collection is empty or has more than one element.\n */\npublic fun Iterable.singleOrNull(): T? {\n when (this) {\n is List -> return if (size == 1) this[0] else null\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n val single = iterator.next()\n if (iterator.hasNext())\n return null\n return single\n }\n }\n}\n\n/**\n * Returns single element, or `null` if the list is empty or has more than one element.\n */\npublic fun List.singleOrNull(): T? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun Iterable.singleOrNull(predicate: (T) -> Boolean): T? {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun Iterable.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return toList()\n val list: ArrayList\n if (this is Collection<*>) {\n val resultSize = size - n\n if (resultSize <= 0)\n return emptyList()\n if (resultSize == 1)\n return listOf(last())\n list = ArrayList(resultSize)\n if (this is List) {\n if (this is RandomAccess) {\n for (index in n until size)\n list.add(this[index])\n } else {\n for (item in listIterator(n))\n list.add(item)\n }\n return list\n }\n }\n else {\n list = ArrayList()\n }\n var count = 0\n for (item in this) {\n if (count >= n) list.add(item) else ++count\n }\n return list.optimizeReadOnlyList()\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun List.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun List.dropLastWhile(predicate: (T) -> Boolean): List {\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n if (!predicate(iterator.previous())) {\n return take(iterator.nextIndex() + 1)\n }\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun Iterable.dropWhile(predicate: (T) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun Iterable.filter(predicate: (T) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun Iterable.filterIndexed(predicate: (index: Int, T) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > Iterable.filterIndexedTo(destination: C, predicate: (index: Int, T) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Returns a list containing all elements that are instances of specified type parameter R.\n */\npublic inline fun Iterable<*>.filterIsInstance(): List<@kotlin.internal.NoInfer R> {\n return filterIsInstanceTo(ArrayList())\n}\n\n/**\n * Appends all elements that are instances of specified type parameter R to the given [destination].\n */\npublic inline fun > Iterable<*>.filterIsInstanceTo(destination: C): C {\n for (element in this) if (element is R) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun Iterable.filterNot(predicate: (T) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements that are not `null`.\n */\npublic fun Iterable.filterNotNull(): List {\n return filterNotNullTo(ArrayList())\n}\n\n/**\n * Appends all elements that are not `null` to the given [destination].\n */\npublic fun , T : Any> Iterable.filterNotNullTo(destination: C): C {\n for (element in this) if (element != null) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > Iterable.filterNotTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > Iterable.filterTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun List.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return this.subList(indices.start, indices.endInclusive + 1).toList()\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun List.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun Iterable.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (this is Collection) {\n if (n >= size) return toList()\n if (n == 1) return listOf(first())\n }\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list.optimizeReadOnlyList()\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun List.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(last())\n val list = ArrayList(n)\n if (this is RandomAccess) {\n for (index in size - n until size)\n list.add(this[index])\n } else {\n for (item in listIterator(size - n))\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun List.takeLastWhile(predicate: (T) -> Boolean): List {\n if (isEmpty())\n return emptyList()\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n if (!predicate(iterator.previous())) {\n iterator.next()\n val expectedSize = size - iterator.nextIndex()\n if (expectedSize == 0) return emptyList()\n return ArrayList(expectedSize).apply {\n while (iterator.hasNext())\n add(iterator.next())\n }\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun Iterable.takeWhile(predicate: (T) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Reverses elements in the list in-place.\n */\npublic expect fun MutableList.reverse(): Unit\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun Iterable.reversed(): List {\n if (this is Collection && size <= 1) return toList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Sorts elements in the list in-place according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > MutableList.sortBy(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareBy(selector))\n}\n\n/**\n * Sorts elements in the list in-place descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > MutableList.sortByDescending(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareByDescending(selector))\n}\n\n/**\n * Sorts elements in the list in-place descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > MutableList.sortDescending(): Unit {\n sortWith(reverseOrder())\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Iterable.sorted(): List {\n if (this is Collection) {\n if (size <= 1) return this.toList()\n @Suppress(\"UNCHECKED_CAST\")\n return (toTypedArray>() as Array).apply { sort() }.asList()\n }\n return toMutableList().apply { sort() }\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Iterable.sortedBy(crossinline selector: (T) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Iterable.sortedByDescending(crossinline selector: (T) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Iterable.sortedDescending(): List {\n return sortedWith(reverseOrder())\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun Iterable.sortedWith(comparator: Comparator): List {\n if (this is Collection) {\n if (size <= 1) return this.toList()\n @Suppress(\"UNCHECKED_CAST\")\n return (toTypedArray() as Array).apply { sortWith(comparator) }.asList()\n }\n return toMutableList().apply { sortWith(comparator) }\n}\n\n/**\n * Returns an array of Boolean containing all of the elements of this collection.\n */\npublic fun Collection.toBooleanArray(): BooleanArray {\n val result = BooleanArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Byte containing all of the elements of this collection.\n */\npublic fun Collection.toByteArray(): ByteArray {\n val result = ByteArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Char containing all of the elements of this collection.\n */\npublic fun Collection.toCharArray(): CharArray {\n val result = CharArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Double containing all of the elements of this collection.\n */\npublic fun Collection.toDoubleArray(): DoubleArray {\n val result = DoubleArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Float containing all of the elements of this collection.\n */\npublic fun Collection.toFloatArray(): FloatArray {\n val result = FloatArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Int containing all of the elements of this collection.\n */\npublic fun Collection.toIntArray(): IntArray {\n val result = IntArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Long containing all of the elements of this collection.\n */\npublic fun Collection.toLongArray(): LongArray {\n val result = LongArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Short containing all of the elements of this collection.\n */\npublic fun Collection.toShortArray(): ShortArray {\n val result = ShortArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given collection.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n */\npublic inline fun Iterable.associate(transform: (T) -> Pair): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing the elements from the given collection indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n */\npublic inline fun Iterable.associateBy(keySelector: (T) -> K): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given collection.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n */\npublic inline fun Iterable.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given collection\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > Iterable.associateByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given collection.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > Iterable.associateByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given collection.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > Iterable.associateTo(destination: M, transform: (T) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Returns a [Map] where keys are elements from the given collection and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.3\")\npublic inline fun Iterable.associateWith(valueSelector: (K) -> V): Map {\n val result = LinkedHashMap(mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16))\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given collection,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n */\n@SinceKotlin(\"1.3\")\npublic inline fun > Iterable.associateWithTo(destination: M, valueSelector: (K) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > Iterable.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun Iterable.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(collectionSizeOrDefault(12))))\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun Iterable.toList(): List {\n if (this is Collection) {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(if (this is List) get(0) else iterator().next())\n else -> this.toMutableList()\n }\n }\n return this.toMutableList().optimizeReadOnlyList()\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this collection.\n */\npublic fun Iterable.toMutableList(): MutableList {\n if (this is Collection)\n return this.toMutableList()\n return toCollection(ArrayList())\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this collection.\n */\npublic fun Collection.toMutableList(): MutableList {\n return ArrayList(this)\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic fun Iterable.toSet(): Set {\n if (this is Collection) {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(if (this is List) this[0] else iterator().next())\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n }\n return toCollection(LinkedHashSet()).optimizeReadOnlySet()\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original collection.\n */\npublic inline fun Iterable.flatMap(transform: (T) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original collection, to the given [destination].\n */\npublic inline fun > Iterable.flatMapTo(destination: C, transform: (T) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups elements of the original collection by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original collection.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun Iterable.groupBy(keySelector: (T) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original collection\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original collection.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun Iterable.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups elements of the original collection by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> Iterable.groupByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original collection\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> Iterable.groupByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Creates a [Grouping] source from a collection to be used later with one of group-and-fold operations\n * using the specified [keySelector] function to extract a key from each element.\n * \n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Iterable.groupingBy(crossinline keySelector: (T) -> K): Grouping {\n return object : Grouping {\n override fun sourceIterator(): Iterator = this@groupingBy.iterator()\n override fun keyOf(element: T): K = keySelector(element)\n }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original collection.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun Iterable.map(transform: (T) -> R): List {\n return mapTo(ArrayList(collectionSizeOrDefault(10)), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original collection.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Iterable.mapIndexed(transform: (index: Int, T) -> R): List {\n return mapIndexedTo(ArrayList(collectionSizeOrDefault(10)), transform)\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element and its index in the original collection.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Iterable.mapIndexedNotNull(transform: (index: Int, T) -> R?): List {\n return mapIndexedNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original collection\n * and appends only the non-null results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Iterable.mapIndexedNotNullTo(destination: C, transform: (index: Int, T) -> R?): C {\n forEachIndexed { index, element -> transform(index, element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original collection\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Iterable.mapIndexedTo(destination: C, transform: (index: Int, T) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(checkIndexOverflow(index++), item))\n return destination\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element in the original collection.\n */\npublic inline fun Iterable.mapNotNull(transform: (T) -> R?): List {\n return mapNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element in the original collection\n * and appends only the non-null results to the given [destination].\n */\npublic inline fun > Iterable.mapNotNullTo(destination: C, transform: (T) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original collection\n * and appends the results to the given [destination].\n */\npublic inline fun > Iterable.mapTo(destination: C, transform: (T) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original collection.\n */\npublic fun Iterable.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a list containing only distinct elements from the given collection.\n * \n * The elements in the resulting list are in the same order as they were in the source collection.\n */\npublic fun Iterable.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only elements from the given collection\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source collection.\n */\npublic inline fun Iterable.distinctBy(selector: (T) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic infix fun Iterable.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this collection and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic infix fun Iterable.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic fun Iterable.toMutableSet(): MutableSet {\n return when (this) {\n is Collection -> LinkedHashSet(this)\n else -> toCollection(LinkedHashSet())\n }\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original collection.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun Iterable.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun Iterable.all(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return true\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if collection has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun Iterable.any(): Boolean {\n if (this is Collection) return !isEmpty()\n return iterator().hasNext()\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun Iterable.any(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return false\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of elements in this collection.\n */\npublic fun Iterable.count(): Int {\n if (this is Collection) return size\n var count = 0\n for (element in this) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Returns the number of elements in this collection.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun Iterable.count(predicate: (T) -> Boolean): Int {\n if (this is Collection && isEmpty()) return 0\n var count = 0\n for (element in this) if (predicate(element)) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun Iterable.fold(initial: R, operation: (acc: R, T) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original collection.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun Iterable.foldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(checkIndexOverflow(index++), accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun List.foldRight(initial: R, operation: (T, acc: R) -> R): R {\n var accumulator = initial\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n accumulator = operation(iterator.previous(), accumulator)\n }\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original list and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun List.foldRightIndexed(initial: R, operation: (index: Int, T, acc: R) -> R): R {\n var accumulator = initial\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n val index = iterator.previousIndex()\n accumulator = operation(index, iterator.previous(), accumulator)\n }\n }\n return accumulator\n}\n\n/**\n * Performs the given [action] on each element.\n */\n@kotlin.internal.HidesMembers\npublic inline fun Iterable.forEach(action: (T) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun Iterable.forEachIndexed(action: (index: Int, T) -> Unit): Unit {\n var index = 0\n for (item in this) action(checkIndexOverflow(index++), item)\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Iterable.max(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n if (max.isNaN()) return max\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Iterable.max(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n if (max.isNaN()) return max\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun > Iterable.max(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > Iterable.maxBy(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxElem = iterator.next()\n if (!iterator.hasNext()) return maxElem\n var maxValue = selector(maxElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n } while (iterator.hasNext())\n return maxElem\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun Iterable.maxWith(comparator: Comparator): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Iterable.min(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n if (min.isNaN()) return min\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Iterable.min(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n if (min.isNaN()) return min\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun > Iterable.min(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > Iterable.minBy(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minElem = iterator.next()\n if (!iterator.hasNext()) return minElem\n var minValue = selector(minElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n } while (iterator.hasNext())\n return minElem\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun Iterable.minWith(comparator: Comparator): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the collection has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun Iterable.none(): Boolean {\n if (this is Collection) return isEmpty()\n return !iterator().hasNext()\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun Iterable.none(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return true\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Performs the given [action] on each element and returns the collection itself afterwards.\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > C.onEach(action: (T) -> Unit): C {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun Iterable.reduce(operation: (acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty collection can't be reduced.\")\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original collection.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun Iterable.reduceIndexed(operation: (index: Int, acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty collection can't be reduced.\")\n var index = 1\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(checkIndexOverflow(index++), accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun List.reduceRight(operation: (T, acc: S) -> S): S {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n throw UnsupportedOperationException(\"Empty list can't be reduced.\")\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n accumulator = operation(iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original list and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun List.reduceRightIndexed(operation: (index: Int, T, acc: S) -> S): S {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n throw UnsupportedOperationException(\"Empty list can't be reduced.\")\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n val index = iterator.previousIndex()\n accumulator = operation(index, iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\npublic inline fun Iterable.sumBy(selector: (T) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\npublic inline fun Iterable.sumByDouble(selector: (T) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n */\npublic fun Iterable.requireNoNulls(): Iterable {\n for (element in this) {\n if (element == null) {\n throw IllegalArgumentException(\"null element found in $this.\")\n }\n }\n @Suppress(\"UNCHECKED_CAST\")\n return this as Iterable\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n */\npublic fun List.requireNoNulls(): List {\n for (element in this) {\n if (element == null) {\n throw IllegalArgumentException(\"null element found in $this.\")\n }\n }\n @Suppress(\"UNCHECKED_CAST\")\n return this as List\n}\n\n/**\n * Splits this collection into a list of lists each not exceeding the given [size].\n * \n * The last list in the resulting list may have less elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this collection.\n * \n * @sample samples.collections.Collections.Transformations.chunked\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.chunked(size: Int): List> {\n return windowed(size, size, partialWindows = true)\n}\n\n/**\n * Splits this collection into several lists each not exceeding the given [size]\n * and applies the given [transform] function to an each.\n * \n * @return list of results of the [transform] applied to an each list.\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * The last list may have less elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this collection.\n * \n * @sample samples.text.Strings.chunkedTransform\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.chunked(size: Int, transform: (List) -> R): List {\n return windowed(size, size, partialWindows = true, transform = transform)\n}\n\n/**\n * Returns a list containing all elements of the original collection without the first occurrence of the given [element].\n */\npublic operator fun Iterable.minus(element: T): List {\n val result = ArrayList(collectionSizeOrDefault(10))\n var removed = false\n return this.filterTo(result) { if (!removed && it == element) { removed = true; false } else true }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] array.\n * \n * The [elements] array may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Iterable.minus(elements: Array): List {\n if (elements.isEmpty()) return this.toList()\n val other = elements.toHashSet()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] collection.\n * \n * The [elements] collection may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Iterable.minus(elements: Iterable): List {\n val other = elements.convertToSetForSetOperationWith(this)\n if (other.isEmpty())\n return this.toList()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] sequence.\n * \n * The [elements] sequence may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Iterable.minus(elements: Sequence): List {\n val other = elements.toHashSet()\n if (other.isEmpty())\n return this.toList()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection without the first occurrence of the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.minusElement(element: T): List {\n return minus(element)\n}\n\n/**\n * Splits the original collection into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun Iterable.partition(predicate: (T) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\npublic operator fun Iterable.plus(element: T): List {\n if (this is Collection) return this.plus(element)\n val result = ArrayList()\n result.addAll(this)\n result.add(element)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\npublic operator fun Collection.plus(element: T): List {\n val result = ArrayList(size + 1)\n result.addAll(this)\n result.add(element)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] array.\n */\npublic operator fun Iterable.plus(elements: Array): List {\n if (this is Collection) return this.plus(elements)\n val result = ArrayList()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] array.\n */\npublic operator fun Collection.plus(elements: Array): List {\n val result = ArrayList(this.size + elements.size)\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] collection.\n */\npublic operator fun Iterable.plus(elements: Iterable): List {\n if (this is Collection) return this.plus(elements)\n val result = ArrayList()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] collection.\n */\npublic operator fun Collection.plus(elements: Iterable): List {\n if (elements is Collection) {\n val result = ArrayList(this.size + elements.size)\n result.addAll(this)\n result.addAll(elements)\n return result\n } else {\n val result = ArrayList(this)\n result.addAll(elements)\n return result\n }\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] sequence.\n */\npublic operator fun Iterable.plus(elements: Sequence): List {\n val result = ArrayList()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] sequence.\n */\npublic operator fun Collection.plus(elements: Sequence): List {\n val result = ArrayList(this.size + 10)\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.plusElement(element: T): List {\n return plus(element)\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection.plusElement(element: T): List {\n return plus(element)\n}\n\n/**\n * Returns a list of snapshots of the window of the given [size]\n * sliding along this collection with the given [step], where each\n * snapshot is a list.\n * \n * Several last lists may have less elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this collection.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.takeWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false): List> {\n checkWindowSizeStep(size, step)\n if (this is RandomAccess && this is List) {\n val thisSize = this.size\n val result = ArrayList>((thisSize + step - 1) / step)\n var index = 0\n while (index < thisSize) {\n val windowSize = size.coerceAtMost(thisSize - index)\n if (windowSize < size && !partialWindows) break\n result.add(List(windowSize) { this[it + index] })\n index += step\n }\n return result\n }\n val result = ArrayList>()\n windowedIterator(iterator(), size, step, partialWindows, reuseBuffer = false).forEach {\n result.add(it)\n }\n return result\n}\n\n/**\n * Returns a list of results of applying the given [transform] function to\n * an each list representing a view over the window of the given [size]\n * sliding along this collection with the given [step].\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * Several last lists may have less elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this collection.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.averageWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false, transform: (List) -> R): List {\n checkWindowSizeStep(size, step)\n if (this is RandomAccess && this is List) {\n val thisSize = this.size\n val result = ArrayList((thisSize + step - 1) / step)\n val window = MovingSubList(this)\n var index = 0\n while (index < thisSize) {\n window.move(index, (index + size).coerceAtMost(thisSize))\n if (!partialWindows && window.size < size) break\n result.add(transform(window))\n index += step\n }\n return result\n }\n val result = ArrayList()\n windowedIterator(iterator(), size, step, partialWindows, reuseBuffer = true).forEach {\n result.add(transform(it))\n }\n return result\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Iterable.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` collection and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Iterable.zip(other: Array, transform: (a: T, b: R) -> V): List {\n val arraySize = other.size\n val list = ArrayList(minOf(collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in this) {\n if (i >= arraySize) break\n list.add(transform(element, other[i++]))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] collection with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Iterable.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` collection and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Iterable.zip(other: Iterable, transform: (a: T, b: R) -> V): List {\n val first = iterator()\n val second = other.iterator()\n val list = ArrayList(minOf(collectionSizeOrDefault(10), other.collectionSizeOrDefault(10)))\n while (first.hasNext() && second.hasNext()) {\n list.add(transform(first.next(), second.next()))\n }\n return list\n}\n\n/**\n * Returns a list of pairs of each two adjacent elements in this collection.\n * \n * The returned list is empty if this collection contains less than two elements.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNext\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.zipWithNext(): List> {\n return zipWithNext { a, b -> a to b }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to an each pair of two adjacent elements in this collection.\n * \n * The returned list is empty if this collection contains less than two elements.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNextToFindDeltas\n */\n@SinceKotlin(\"1.2\")\npublic inline fun Iterable.zipWithNext(transform: (a: T, b: T) -> R): List {\n val iterator = iterator()\n if (!iterator.hasNext()) return emptyList()\n val result = mutableListOf()\n var current = iterator.next()\n while (iterator.hasNext()) {\n val next = iterator.next()\n result.add(transform(current, next))\n current = next\n }\n return result\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun Iterable.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n buffer.appendElement(element, transform)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun Iterable.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Returns this collection as an [Iterable].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.asIterable(): Iterable {\n return this\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original collection returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromCollection\n */\npublic fun Iterable.asSequence(): Sequence {\n return Sequence { this.iterator() }\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfByte\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfShort\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfInt\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfLong\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfFloat\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfDouble\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfByte\")\npublic fun Iterable.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfShort\")\npublic fun Iterable.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfInt\")\npublic fun Iterable.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfLong\")\npublic fun Iterable.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfFloat\")\npublic fun Iterable.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfDouble\")\npublic fun Iterable.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n",null,null,null,null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"LazyKt\")\n@file:kotlin.jvm.JvmMultifileClass\n\npackage kotlin\n\nimport kotlin.reflect.KProperty\n\n/**\n * Represents a value with lazy initialization.\n *\n * To create an instance of [Lazy] use the [lazy] function.\n */\npublic interface Lazy {\n /**\n * Gets the lazily initialized value of the current Lazy instance.\n * Once the value was initialized it must not change during the rest of lifetime of this Lazy instance.\n */\n public val value: T\n\n /**\n * Returns `true` if a value for this Lazy instance has been already initialized, and `false` otherwise.\n * Once this function has returned `true` it stays `true` for the rest of lifetime of this Lazy instance.\n */\n public fun isInitialized(): Boolean\n}\n\n/**\n * Creates a new instance of the [Lazy] that is already initialized with the specified [value].\n */\npublic fun lazyOf(value: T): Lazy = InitializedLazyImpl(value)\n\n/**\n * An extension to delegate a read-only property of type [T] to an instance of [Lazy].\n *\n * This extension allows to use instances of Lazy for property delegation:\n * `val property: String by lazy { initializer }`\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Lazy.getValue(thisRef: Any?, property: KProperty<*>): T = value\n\n/**\n * Specifies how a [Lazy] instance synchronizes initialization among multiple threads.\n */\npublic enum class LazyThreadSafetyMode {\n\n /**\n * Locks are used to ensure that only a single thread can initialize the [Lazy] instance.\n */\n SYNCHRONIZED,\n\n /**\n * Initializer function can be called several times on concurrent access to uninitialized [Lazy] instance value,\n * but only the first returned value will be used as the value of [Lazy] instance.\n */\n PUBLICATION,\n\n /**\n * No locks are used to synchronize an access to the [Lazy] instance value; if the instance is accessed from multiple threads, its behavior is undefined.\n *\n * This mode should not be used unless the [Lazy] instance is guaranteed never to be initialized from more than one thread.\n */\n NONE,\n}\n\n\ninternal object UNINITIALIZED_VALUE\n\n// internal to be called from lazy in JS\ninternal class UnsafeLazyImpl(initializer: () -> T) : Lazy, Serializable {\n private var initializer: (() -> T)? = initializer\n private var _value: Any? = UNINITIALIZED_VALUE\n\n override val value: T\n get() {\n if (_value === UNINITIALIZED_VALUE) {\n _value = initializer!!()\n initializer = null\n }\n @Suppress(\"UNCHECKED_CAST\")\n return _value as T\n }\n\n override fun isInitialized(): Boolean = _value !== UNINITIALIZED_VALUE\n\n override fun toString(): String = if (isInitialized()) value.toString() else \"Lazy value not initialized yet.\"\n\n private fun writeReplace(): Any = InitializedLazyImpl(value)\n}\n\ninternal class InitializedLazyImpl(override val value: T) : Lazy, Serializable {\n\n override fun isInitialized(): Boolean = true\n\n override fun toString(): String = value.toString()\n\n}\n",null,null,null,null,null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n\npackage kotlin.text\n\nimport kotlin.contracts.contract\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trim(predicate: (Char) -> Boolean): CharSequence {\n var startIndex = 0\n var endIndex = length - 1\n var startFound = false\n\n while (startIndex <= endIndex) {\n val index = if (!startFound) startIndex else endIndex\n val match = predicate(this[index])\n\n if (!startFound) {\n if (!match)\n startFound = true\n else\n startIndex += 1\n } else {\n if (!match)\n break\n else\n endIndex -= 1\n }\n }\n\n return subSequence(startIndex, endIndex + 1)\n}\n\n/**\n * Returns a string having leading and trailing characters matching the [predicate] removed.\n */\npublic inline fun String.trim(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trim(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trimStart(predicate: (Char) -> Boolean): CharSequence {\n for (index in this.indices)\n if (!predicate(this[index]))\n return subSequence(index, length)\n\n return \"\"\n}\n\n/**\n * Returns a string having leading characters matching the [predicate] removed.\n */\npublic inline fun String.trimStart(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trimStart(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having trailing characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trimEnd(predicate: (Char) -> Boolean): CharSequence {\n for (index in this.indices.reversed())\n if (!predicate(this[index]))\n return subSequence(0, index + 1)\n\n return \"\"\n}\n\n/**\n * Returns a string having trailing characters matching the [predicate] removed.\n */\npublic inline fun String.trimEnd(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trimEnd(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing characters from the [chars] array removed.\n */\npublic fun CharSequence.trim(vararg chars: Char): CharSequence = trim { it in chars }\n\n/**\n * Returns a string having leading and trailing characters from the [chars] array removed.\n */\npublic fun String.trim(vararg chars: Char): String = trim { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having leading characters from the [chars] array removed.\n */\npublic fun CharSequence.trimStart(vararg chars: Char): CharSequence = trimStart { it in chars }\n\n/**\n * Returns a string having leading characters from the [chars] array removed.\n */\npublic fun String.trimStart(vararg chars: Char): String = trimStart { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having trailing characters from the [chars] array removed.\n */\npublic fun CharSequence.trimEnd(vararg chars: Char): CharSequence = trimEnd { it in chars }\n\n/**\n * Returns a string having trailing characters from the [chars] array removed.\n */\npublic fun String.trimEnd(vararg chars: Char): String = trimEnd { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing whitespace removed.\n */\npublic fun CharSequence.trim(): CharSequence = trim(Char::isWhitespace)\n\n/**\n * Returns a string having leading and trailing whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trim(): String = (this as CharSequence).trim().toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading whitespace removed.\n */\npublic fun CharSequence.trimStart(): CharSequence = trimStart(Char::isWhitespace)\n\n/**\n * Returns a string having leading whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trimStart(): String = (this as CharSequence).trimStart().toString()\n\n/**\n * Returns a sub sequence of this char sequence having trailing whitespace removed.\n */\npublic fun CharSequence.trimEnd(): CharSequence = trimEnd(Char::isWhitespace)\n\n/**\n * Returns a string having trailing whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trimEnd(): String = (this as CharSequence).trimEnd().toString()\n\n/**\n * Returns a char sequence with content of this char sequence padded at the beginning\n * to the specified [length] with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a char sequence of length at least [length] consisting of `this` char sequence prepended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padStart\n */\npublic fun CharSequence.padStart(length: Int, padChar: Char = ' '): CharSequence {\n if (length < 0)\n throw IllegalArgumentException(\"Desired length $length is less than zero.\")\n if (length <= this.length)\n return this.subSequence(0, this.length)\n\n val sb = StringBuilder(length)\n for (i in 1..(length - this.length))\n sb.append(padChar)\n sb.append(this)\n return sb\n}\n\n/**\n * Pads the string to the specified [length] at the beginning with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a string of length at least [length] consisting of `this` string prepended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padStart\n */\npublic fun String.padStart(length: Int, padChar: Char = ' '): String =\n (this as CharSequence).padStart(length, padChar).toString()\n\n/**\n * Returns a char sequence with content of this char sequence padded at the end\n * to the specified [length] with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a char sequence of length at least [length] consisting of `this` char sequence appended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padEnd\n */\npublic fun CharSequence.padEnd(length: Int, padChar: Char = ' '): CharSequence {\n if (length < 0)\n throw IllegalArgumentException(\"Desired length $length is less than zero.\")\n if (length <= this.length)\n return this.subSequence(0, this.length)\n\n val sb = StringBuilder(length)\n sb.append(this)\n for (i in 1..(length - this.length))\n sb.append(padChar)\n return sb\n}\n\n/**\n * Pads the string to the specified [length] at the end with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a string of length at least [length] consisting of `this` string appended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padEnd\n */\npublic fun String.padEnd(length: Int, padChar: Char = ' '): String =\n (this as CharSequence).padEnd(length, padChar).toString()\n\n/**\n * Returns `true` if this nullable char sequence is either `null` or empty.\n *\n * @sample samples.text.Strings.stringIsNullOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || this.length == 0\n}\n\n/**\n * Returns `true` if this char sequence is empty (contains no characters).\n *\n * @sample samples.text.Strings.stringIsEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isEmpty(): Boolean = length == 0\n\n/**\n * Returns `true` if this char sequence is not empty.\n *\n * @sample samples.text.Strings.stringIsNotEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isNotEmpty(): Boolean = length > 0\n\n// implemented differently in JVM and JS\n//public fun String.isBlank(): Boolean = length() == 0 || all { it.isWhitespace() }\n\n\n/**\n * Returns `true` if this char sequence is not empty and contains some characters except of whitespace characters.\n *\n * @sample samples.text.Strings.stringIsNotBlank\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isNotBlank(): Boolean = !isBlank()\n\n/**\n * Returns `true` if this nullable char sequence is either `null` or empty or consists solely of whitespace characters.\n *\n * @sample samples.text.Strings.stringIsNullOrBlank\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence?.isNullOrBlank(): Boolean {\n contract {\n returns(false) implies (this@isNullOrBlank != null)\n }\n\n return this == null || this.isBlank()\n}\n\n/**\n * Iterator for characters of the given char sequence.\n */\npublic operator fun CharSequence.iterator(): CharIterator = object : CharIterator() {\n private var index = 0\n\n public override fun nextChar(): Char = get(index++)\n\n public override fun hasNext(): Boolean = index < length\n}\n\n/** Returns the string if it is not `null`, or the empty string otherwise. */\n@kotlin.internal.InlineOnly\npublic inline fun String?.orEmpty(): String = this ?: \"\"\n\n/**\n * Returns this char sequence if it's not empty\n * or the result of calling [defaultValue] function if the char sequence is empty.\n *\n * @sample samples.text.Strings.stringIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun C.ifEmpty(defaultValue: () -> R): R where C : CharSequence, C : R =\n if (isEmpty()) defaultValue() else this\n\n/**\n * Returns this char sequence if it is not empty and doesn't consist solely of whitespace characters,\n * or the result of calling [defaultValue] function otherwise.\n *\n * @sample samples.text.Strings.stringIfBlank\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun C.ifBlank(defaultValue: () -> R): R where C : CharSequence, C : R =\n if (isBlank()) defaultValue() else this\n\n/**\n * Returns the range of valid character indices for this char sequence.\n */\npublic val CharSequence.indices: IntRange\n get() = 0..length - 1\n\n/**\n * Returns the index of the last character in the char sequence or -1 if it is empty.\n */\npublic val CharSequence.lastIndex: Int\n get() = this.length - 1\n\n/**\n * Returns `true` if this CharSequence has Unicode surrogate pair at the specified [index].\n */\npublic fun CharSequence.hasSurrogatePairAt(index: Int): Boolean {\n return index in 0..length - 2\n && this[index].isHighSurrogate()\n && this[index + 1].isLowSurrogate()\n}\n\n/**\n * Returns a substring specified by the given [range] of indices.\n */\npublic fun String.substring(range: IntRange): String = substring(range.start, range.endInclusive + 1)\n\n/**\n * Returns a subsequence of this char sequence specified by the given [range] of indices.\n */\npublic fun CharSequence.subSequence(range: IntRange): CharSequence = subSequence(range.start, range.endInclusive + 1)\n\n/**\n * Returns a subsequence of this char sequence.\n *\n * This extension is chosen only for invocation with old-named parameters.\n * Replace parameter names with the same as those of [CharSequence.subSequence].\n */\n@kotlin.internal.InlineOnly\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning\n@Deprecated(\"Use parameters named startIndex and endIndex.\", ReplaceWith(\"subSequence(startIndex = start, endIndex = end)\"))\npublic inline fun String.subSequence(start: Int, end: Int): CharSequence = subSequence(start, end)\n\n/**\n * Returns a substring of chars from a range of this char sequence starting at the [startIndex] and ending right before the [endIndex].\n *\n * @param startIndex the start index (inclusive).\n * @param endIndex the end index (exclusive). If not specified, the length of the char sequence is used.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.substring(startIndex: Int, endIndex: Int = length): String = subSequence(startIndex, endIndex).toString()\n\n/**\n * Returns a substring of chars at indices from the specified [range] of this char sequence.\n */\npublic fun CharSequence.substring(range: IntRange): String = subSequence(range.start, range.endInclusive + 1).toString()\n\n/**\n * Returns a substring before the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBefore(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring before the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBefore(delimiter: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring after the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfter(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + 1, length)\n}\n\n/**\n * Returns a substring after the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfter(delimiter: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + delimiter.length, length)\n}\n\n/**\n * Returns a substring before the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBeforeLast(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring before the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBeforeLast(delimiter: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring after the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfterLast(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + 1, length)\n}\n\n/**\n * Returns a substring after the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfterLast(delimiter: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + delimiter.length, length)\n}\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given range\n * is replaced with the [replacement] char sequence.\n * @param startIndex the index of the first character to be replaced.\n * @param endIndex the index of the first character after the replacement to keep in the string.\n */\npublic fun CharSequence.replaceRange(startIndex: Int, endIndex: Int, replacement: CharSequence): CharSequence {\n if (endIndex < startIndex)\n throw IndexOutOfBoundsException(\"End index ($endIndex) is less than start index ($startIndex).\")\n val sb = StringBuilder()\n sb.append(this, 0, startIndex)\n sb.append(replacement)\n sb.append(this, endIndex, length)\n return sb\n}\n\n/**\n * Replaces the part of the string at the given range with the [replacement] char sequence.\n * @param startIndex the index of the first character to be replaced.\n * @param endIndex the index of the first character after the replacement to keep in the string.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.replaceRange(startIndex: Int, endIndex: Int, replacement: CharSequence): String =\n (this as CharSequence).replaceRange(startIndex, endIndex, replacement).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given [range]\n * is replaced with the [replacement] char sequence.\n *\n * The end index of the [range] is included in the part to be replaced.\n */\npublic fun CharSequence.replaceRange(range: IntRange, replacement: CharSequence): CharSequence =\n replaceRange(range.start, range.endInclusive + 1, replacement)\n\n/**\n * Replace the part of string at the given [range] with the [replacement] string.\n *\n * The end index of the [range] is included in the part to be replaced.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.replaceRange(range: IntRange, replacement: CharSequence): String =\n (this as CharSequence).replaceRange(range, replacement).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given range is removed.\n *\n * @param startIndex the index of the first character to be removed.\n * @param endIndex the index of the first character after the removed part to keep in the string.\n *\n * [endIndex] is not included in the removed part.\n */\npublic fun CharSequence.removeRange(startIndex: Int, endIndex: Int): CharSequence {\n if (endIndex < startIndex)\n throw IndexOutOfBoundsException(\"End index ($endIndex) is less than start index ($startIndex).\")\n\n if (endIndex == startIndex)\n return this.subSequence(0, length)\n\n val sb = StringBuilder(length - (endIndex - startIndex))\n sb.append(this, 0, startIndex)\n sb.append(this, endIndex, length)\n return sb\n}\n\n/**\n * Removes the part of a string at a given range.\n * @param startIndex the index of the first character to be removed.\n * @param endIndex the index of the first character after the removed part to keep in the string.\n *\n * [endIndex] is not included in the removed part.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.removeRange(startIndex: Int, endIndex: Int): String =\n (this as CharSequence).removeRange(startIndex, endIndex).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given [range] is removed.\n *\n * The end index of the [range] is included in the removed part.\n */\npublic fun CharSequence.removeRange(range: IntRange): CharSequence = removeRange(range.start, range.endInclusive + 1)\n\n/**\n * Removes the part of a string at the given [range].\n *\n * The end index of the [range] is included in the removed part.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.removeRange(range: IntRange): String =\n (this as CharSequence).removeRange(range).toString()\n\n/**\n * If this char sequence starts with the given [prefix], returns a new char sequence\n * with the prefix removed. Otherwise, returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removePrefix(prefix: CharSequence): CharSequence {\n if (startsWith(prefix)) {\n return subSequence(prefix.length, length)\n }\n return subSequence(0, length)\n}\n\n/**\n * If this string starts with the given [prefix], returns a copy of this string\n * with the prefix removed. Otherwise, returns this string.\n */\npublic fun String.removePrefix(prefix: CharSequence): String {\n if (startsWith(prefix)) {\n return substring(prefix.length)\n }\n return this\n}\n\n/**\n * If this char sequence ends with the given [suffix], returns a new char sequence\n * with the suffix removed. Otherwise, returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSuffix(suffix: CharSequence): CharSequence {\n if (endsWith(suffix)) {\n return subSequence(0, length - suffix.length)\n }\n return subSequence(0, length)\n}\n\n/**\n * If this string ends with the given [suffix], returns a copy of this string\n * with the suffix removed. Otherwise, returns this string.\n */\npublic fun String.removeSuffix(suffix: CharSequence): String {\n if (endsWith(suffix)) {\n return substring(0, length - suffix.length)\n }\n return this\n}\n\n/**\n * When this char sequence starts with the given [prefix] and ends with the given [suffix],\n * returns a new char sequence having both the given [prefix] and [suffix] removed.\n * Otherwise returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSurrounding(prefix: CharSequence, suffix: CharSequence): CharSequence {\n if ((length >= prefix.length + suffix.length) && startsWith(prefix) && endsWith(suffix)) {\n return subSequence(prefix.length, length - suffix.length)\n }\n return subSequence(0, length)\n}\n\n/**\n * Removes from a string both the given [prefix] and [suffix] if and only if\n * it starts with the [prefix] and ends with the [suffix].\n * Otherwise returns this string unchanged.\n */\npublic fun String.removeSurrounding(prefix: CharSequence, suffix: CharSequence): String {\n if ((length >= prefix.length + suffix.length) && startsWith(prefix) && endsWith(suffix)) {\n return substring(prefix.length, length - suffix.length)\n }\n return this\n}\n\n/**\n * When this char sequence starts with and ends with the given [delimiter],\n * returns a new char sequence having this [delimiter] removed both from the start and end.\n * Otherwise returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSurrounding(delimiter: CharSequence): CharSequence = removeSurrounding(delimiter, delimiter)\n\n/**\n * Removes the given [delimiter] string from both the start and the end of this string\n * if and only if it starts with and ends with the [delimiter].\n * Otherwise returns this string unchanged.\n */\npublic fun String.removeSurrounding(delimiter: CharSequence): String = removeSurrounding(delimiter, delimiter)\n\n/**\n * Replace part of string before the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBefore(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string before the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBefore(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string after the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfter(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + 1, length, replacement)\n}\n\n/**\n * Replace part of string after the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfter(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + delimiter.length, length, replacement)\n}\n\n/**\n * Replace part of string after the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfterLast(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + delimiter.length, length, replacement)\n}\n\n/**\n * Replace part of string after the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfterLast(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + 1, length, replacement)\n}\n\n/**\n * Replace part of string before the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBeforeLast(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string before the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBeforeLast(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n\n// public fun String.replace(oldChar: Char, newChar: Char, ignoreCase: Boolean): String // JVM- and JS-specific\n// public fun String.replace(oldValue: String, newValue: String, ignoreCase: Boolean): String // JVM- and JS-specific\n\n/**\n * Returns a new string obtained by replacing each substring of this char sequence that matches the given regular expression\n * with the given [replacement].\n *\n * The [replacement] can consist of any combination of literal text and $-substitutions. To treat the replacement string\n * literally escape it with the [kotlin.text.Regex.Companion.escapeReplacement] method.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replace(regex: Regex, replacement: String): String = regex.replace(this, replacement)\n\n/**\n * Returns a new string obtained by replacing each substring of this char sequence that matches the given regular expression\n * with the result of the given function [transform] that takes [MatchResult] and returns a string to be used as a\n * replacement for that match.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replace(regex: Regex, noinline transform: (MatchResult) -> CharSequence): String =\n regex.replace(this, transform)\n\n/**\n * Replaces the first occurrence of the given regular expression [regex] in this char sequence with specified [replacement] expression.\n *\n * @param replacement A replacement expression that can include substitutions. See [Regex.replaceFirst] for details.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replaceFirst(regex: Regex, replacement: String): String = regex.replaceFirst(this, replacement)\n\n\n/**\n * Returns `true` if this char sequence matches the given regular expression.\n */\n@kotlin.internal.InlineOnly\npublic inline infix fun CharSequence.matches(regex: Regex): Boolean = regex.matches(this)\n\n/**\n * Implementation of [regionMatches] for CharSequences.\n * Invoked when it's already known that arguments are not Strings, so that no additional type checks are performed.\n */\ninternal fun CharSequence.regionMatchesImpl(thisOffset: Int, other: CharSequence, otherOffset: Int, length: Int, ignoreCase: Boolean): Boolean {\n if ((otherOffset < 0) || (thisOffset < 0) || (thisOffset > this.length - length) || (otherOffset > other.length - length)) {\n return false\n }\n\n for (index in 0 until length) {\n if (!this[thisOffset + index].equals(other[otherOffset + index], ignoreCase))\n return false\n }\n return true\n}\n\n/**\n * Returns `true` if this char sequence starts with the specified character.\n */\npublic fun CharSequence.startsWith(char: Char, ignoreCase: Boolean = false): Boolean =\n this.length > 0 && this[0].equals(char, ignoreCase)\n\n/**\n * Returns `true` if this char sequence ends with the specified character.\n */\npublic fun CharSequence.endsWith(char: Char, ignoreCase: Boolean = false): Boolean =\n this.length > 0 && this[lastIndex].equals(char, ignoreCase)\n\n/**\n * Returns `true` if this char sequence starts with the specified prefix.\n */\npublic fun CharSequence.startsWith(prefix: CharSequence, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && prefix is String)\n return this.startsWith(prefix)\n else\n return regionMatchesImpl(0, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if a substring of this char sequence starting at the specified offset [startIndex] starts with the specified prefix.\n */\npublic fun CharSequence.startsWith(prefix: CharSequence, startIndex: Int, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && prefix is String)\n return this.startsWith(prefix, startIndex)\n else\n return regionMatchesImpl(startIndex, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if this char sequence ends with the specified suffix.\n */\npublic fun CharSequence.endsWith(suffix: CharSequence, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && suffix is String)\n return this.endsWith(suffix)\n else\n return regionMatchesImpl(length - suffix.length, suffix, 0, suffix.length, ignoreCase)\n}\n\n\n// common prefix and suffix\n\n/**\n * Returns the longest string `prefix` such that this char sequence and [other] char sequence both start with this prefix,\n * taking care not to split surrogate pairs.\n * If this and [other] have no common prefix, returns the empty string.\n\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @sample samples.text.Strings.commonPrefixWith\n */\npublic fun CharSequence.commonPrefixWith(other: CharSequence, ignoreCase: Boolean = false): String {\n val shortestLength = minOf(this.length, other.length)\n\n var i = 0\n while (i < shortestLength && this[i].equals(other[i], ignoreCase = ignoreCase)) {\n i++\n }\n if (this.hasSurrogatePairAt(i - 1) || other.hasSurrogatePairAt(i - 1)) {\n i--\n }\n return subSequence(0, i).toString()\n}\n\n/**\n * Returns the longest string `suffix` such that this char sequence and [other] char sequence both end with this suffix,\n * taking care not to split surrogate pairs.\n * If this and [other] have no common suffix, returns the empty string.\n\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @sample samples.text.Strings.commonSuffixWith\n */\npublic fun CharSequence.commonSuffixWith(other: CharSequence, ignoreCase: Boolean = false): String {\n val thisLength = this.length\n val otherLength = other.length\n val shortestLength = minOf(thisLength, otherLength)\n\n var i = 0\n while (i < shortestLength && this[thisLength - i - 1].equals(other[otherLength - i - 1], ignoreCase = ignoreCase)) {\n i++\n }\n if (this.hasSurrogatePairAt(thisLength - i - 1) || other.hasSurrogatePairAt(otherLength - i - 1)) {\n i--\n }\n return subSequence(thisLength - i, thisLength).toString()\n}\n\n\n// indexOfAny()\n\n/**\n * Finds the index of the first occurrence of any of the specified [chars] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the first occurrence of matched character from [chars] or -1 if none of [chars] are found.\n *\n */\npublic fun CharSequence.indexOfAny(chars: CharArray, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n if (!ignoreCase && chars.size == 1 && this is String) {\n val char = chars.single()\n return nativeIndexOf(char, startIndex)\n }\n\n for (index in startIndex.coerceAtLeast(0)..lastIndex) {\n val charAtIndex = get(index)\n if (chars.any { it.equals(charAtIndex, ignoreCase) })\n return index\n }\n return -1\n}\n\n/**\n * Finds the index of the last occurrence of any of the specified [chars] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the last occurrence of matched character from [chars] or -1 if none of [chars] are found.\n *\n */\npublic fun CharSequence.lastIndexOfAny(chars: CharArray, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n if (!ignoreCase && chars.size == 1 && this is String) {\n val char = chars.single()\n return nativeLastIndexOf(char, startIndex)\n }\n\n\n for (index in startIndex.coerceAtMost(lastIndex) downTo 0) {\n val charAtIndex = get(index)\n if (chars.any { it.equals(charAtIndex, ignoreCase) })\n return index\n }\n\n return -1\n}\n\n\nprivate fun CharSequence.indexOf(other: CharSequence, startIndex: Int, endIndex: Int, ignoreCase: Boolean, last: Boolean = false): Int {\n val indices = if (!last)\n startIndex.coerceAtLeast(0)..endIndex.coerceAtMost(length)\n else\n startIndex.coerceAtMost(lastIndex) downTo endIndex.coerceAtLeast(0)\n\n if (this is String && other is String) { // smart cast\n for (index in indices) {\n if (other.regionMatches(0, this, index, other.length, ignoreCase))\n return index\n }\n } else {\n for (index in indices) {\n if (other.regionMatchesImpl(0, this, index, other.length, ignoreCase))\n return index\n }\n }\n return -1\n}\n\nprivate fun CharSequence.findAnyOf(strings: Collection, startIndex: Int, ignoreCase: Boolean, last: Boolean): Pair? {\n if (!ignoreCase && strings.size == 1) {\n val string = strings.single()\n val index = if (!last) indexOf(string, startIndex) else lastIndexOf(string, startIndex)\n return if (index < 0) null else index to string\n }\n\n val indices = if (!last) startIndex.coerceAtLeast(0)..length else startIndex.coerceAtMost(lastIndex) downTo 0\n\n if (this is String) {\n for (index in indices) {\n val matchingString = strings.firstOrNull { it.regionMatches(0, this, index, it.length, ignoreCase) }\n if (matchingString != null)\n return index to matchingString\n }\n } else {\n for (index in indices) {\n val matchingString = strings.firstOrNull { it.regionMatchesImpl(0, this, index, it.length, ignoreCase) }\n if (matchingString != null)\n return index to matchingString\n }\n }\n\n return null\n}\n\n/**\n * Finds the first occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return A pair of an index of the first occurrence of matched string from [strings] and the string matched\n * or `null` if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.findAnyOf(strings: Collection, startIndex: Int = 0, ignoreCase: Boolean = false): Pair? =\n findAnyOf(strings, startIndex, ignoreCase, last = false)\n\n/**\n * Finds the last occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return A pair of an index of the last occurrence of matched string from [strings] and the string matched or `null` if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the end toward the beginning of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.findLastAnyOf(strings: Collection, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Pair? =\n findAnyOf(strings, startIndex, ignoreCase, last = true)\n\n/**\n * Finds the index of the first occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the first occurrence of matched string from [strings] or -1 if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.indexOfAny(strings: Collection, startIndex: Int = 0, ignoreCase: Boolean = false): Int =\n findAnyOf(strings, startIndex, ignoreCase, last = false)?.first ?: -1\n\n/**\n * Finds the index of the last occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the last occurrence of matched string from [strings] or -1 if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the end toward the beginning of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.lastIndexOfAny(strings: Collection, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int =\n findAnyOf(strings, startIndex, ignoreCase, last = true)?.first ?: -1\n\n\n// indexOf\n\n/**\n * Returns the index within this string of the first occurrence of the specified character, starting from the specified [startIndex].\n *\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the first occurrence of [char] or -1 if none is found.\n */\npublic fun CharSequence.indexOf(char: Char, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOfAny(charArrayOf(char), startIndex, ignoreCase)\n else\n nativeIndexOf(char, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the first occurrence of the specified [string],\n * starting from the specified [startIndex].\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the first occurrence of [string] or `-1` if none is found.\n */\npublic fun CharSequence.indexOf(string: String, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOf(string, startIndex, length, ignoreCase)\n else\n nativeIndexOf(string, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the last occurrence of the specified character,\n * starting from the specified [startIndex].\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the first occurrence of [char] or -1 if none is found.\n */\npublic fun CharSequence.lastIndexOf(char: Char, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n lastIndexOfAny(charArrayOf(char), startIndex, ignoreCase)\n else\n nativeLastIndexOf(char, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the last occurrence of the specified [string],\n * starting from the specified [startIndex].\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the first occurrence of [string] or -1 if none is found.\n */\npublic fun CharSequence.lastIndexOf(string: String, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOf(string, startIndex, 0, ignoreCase, last = true)\n else\n nativeLastIndexOf(string, startIndex)\n}\n\n/**\n * Returns `true` if this char sequence contains the specified [other] sequence of characters as a substring.\n *\n * @param ignoreCase `true` to ignore character case when comparing strings. By default `false`.\n */\n@Suppress(\"INAPPLICABLE_OPERATOR_MODIFIER\")\npublic operator fun CharSequence.contains(other: CharSequence, ignoreCase: Boolean = false): Boolean =\n if (other is String)\n indexOf(other, ignoreCase = ignoreCase) >= 0\n else\n indexOf(other, 0, length, ignoreCase) >= 0\n\n\n\n/**\n * Returns `true` if this char sequence contains the specified character [char].\n *\n * @param ignoreCase `true` to ignore character case when comparing characters. By default `false`.\n */\n@Suppress(\"INAPPLICABLE_OPERATOR_MODIFIER\")\npublic operator fun CharSequence.contains(char: Char, ignoreCase: Boolean = false): Boolean =\n indexOf(char, ignoreCase = ignoreCase) >= 0\n\n/**\n * Returns `true` if this char sequence contains at least one match of the specified regular expression [regex].\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharSequence.contains(regex: Regex): Boolean = regex.containsMatchIn(this)\n\n\n// rangesDelimitedBy\n\n\nprivate class DelimitedRangesSequence(\n private val input: CharSequence,\n private val startIndex: Int,\n private val limit: Int,\n private val getNextMatch: CharSequence.(currentIndex: Int) -> Pair?\n) : Sequence {\n\n override fun iterator(): Iterator = object : Iterator {\n var nextState: Int = -1 // -1 for unknown, 0 for done, 1 for continue\n var currentStartIndex: Int = startIndex.coerceIn(0, input.length)\n var nextSearchIndex: Int = currentStartIndex\n var nextItem: IntRange? = null\n var counter: Int = 0\n\n private fun calcNext() {\n if (nextSearchIndex < 0) {\n nextState = 0\n nextItem = null\n } else {\n if (limit > 0 && ++counter >= limit || nextSearchIndex > input.length) {\n nextItem = currentStartIndex..input.lastIndex\n nextSearchIndex = -1\n } else {\n val match = input.getNextMatch(nextSearchIndex)\n if (match == null) {\n nextItem = currentStartIndex..input.lastIndex\n nextSearchIndex = -1\n } else {\n val (index, length) = match\n nextItem = currentStartIndex until index\n currentStartIndex = index + length\n nextSearchIndex = currentStartIndex + if (length == 0) 1 else 0\n }\n }\n nextState = 1\n }\n }\n\n override fun next(): IntRange {\n if (nextState == -1)\n calcNext()\n if (nextState == 0)\n throw NoSuchElementException()\n val result = nextItem as IntRange\n // Clean next to avoid keeping reference on yielded instance\n nextItem = null\n nextState = -1\n return result\n }\n\n override fun hasNext(): Boolean {\n if (nextState == -1)\n calcNext()\n return nextState == 1\n }\n }\n}\n\n/**\n * Returns a sequence of index ranges of substrings in this char sequence around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param startIndex The index to start searching delimiters from.\n * No range having its start value less than [startIndex] is returned.\n * [startIndex] is coerced to be non-negative and not greater than length of this string.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n */\nprivate fun CharSequence.rangesDelimitedBy(delimiters: CharArray, startIndex: Int = 0, ignoreCase: Boolean = false, limit: Int = 0): Sequence {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" })\n\n return DelimitedRangesSequence(this, startIndex, limit, { currentIndex ->\n indexOfAny(delimiters, currentIndex, ignoreCase = ignoreCase).let { if (it < 0) null else it to 1 }\n })\n}\n\n\n/**\n * Returns a sequence of index ranges of substrings in this char sequence around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param startIndex The index to start searching delimiters from.\n * No range having its start value less than [startIndex] is returned.\n * [startIndex] is coerced to be non-negative and not greater than length of this string.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [delimiters]\n * that matches this string at that position.\n */\nprivate fun CharSequence.rangesDelimitedBy(delimiters: Array, startIndex: Int = 0, ignoreCase: Boolean = false, limit: Int = 0): Sequence {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" } )\n val delimitersList = delimiters.asList()\n\n return DelimitedRangesSequence(this, startIndex, limit, { currentIndex -> findAnyOf(delimitersList, currentIndex, ignoreCase = ignoreCase, last = false)?.let { it.first to it.second.length } })\n\n}\n\n\n// split\n\n/**\n * Splits this char sequence to a sequence of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [delimiters]\n * that matches this string at that position.\n */\npublic fun CharSequence.splitToSequence(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): Sequence =\n rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).map { substring(it) }\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and matches at each position the first element in [delimiters]\n * that is equal to a delimiter in this instance at that position.\n */\npublic fun CharSequence.split(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): List {\n if (delimiters.size == 1) {\n val delimiter = delimiters[0]\n if (!delimiter.isEmpty()) {\n return split(delimiter, ignoreCase, limit)\n }\n }\n\n return rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).asIterable().map { substring(it) }\n}\n\n/**\n * Splits this char sequence to a sequence of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\npublic fun CharSequence.splitToSequence(vararg delimiters: Char, ignoreCase: Boolean = false, limit: Int = 0): Sequence =\n rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).map { substring(it) }\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\npublic fun CharSequence.split(vararg delimiters: Char, ignoreCase: Boolean = false, limit: Int = 0): List {\n if (delimiters.size == 1) {\n return split(delimiters[0].toString(), ignoreCase, limit)\n }\n\n return rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).asIterable().map { substring(it) }\n}\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiter].\n * This is specialized version of split which receives single non-empty delimiter and offers better performance\n *\n * @param delimiter String used as delimiter\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\nprivate fun CharSequence.split(delimiter: String, ignoreCase: Boolean, limit: Int): List {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" })\n\n var currentOffset = 0\n var nextIndex = indexOf(delimiter, currentOffset, ignoreCase)\n if (nextIndex == -1 || limit == 1) {\n return listOf(this.toString())\n }\n\n val isLimited = limit > 0\n val result = ArrayList(if (isLimited) limit.coerceAtMost(10) else 10)\n do {\n result.add(substring(currentOffset, nextIndex))\n currentOffset = nextIndex + delimiter.length\n // Do not search for next occurrence if we're reaching limit\n if (isLimited && result.size == limit - 1) break\n nextIndex = indexOf(delimiter, currentOffset, ignoreCase)\n } while (nextIndex != -1)\n\n result.add(substring(currentOffset, length))\n return result\n}\n\n/**\n * Splits this char sequence around matches of the given regular expression.\n *\n * @param limit Non-negative value specifying the maximum number of substrings to return.\n * Zero by default means no limit is set.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.split(regex: Regex, limit: Int = 0): List = regex.split(this, limit)\n\n/**\n * Splits this char sequence to a sequence of lines delimited by any of the following character sequences: CRLF, LF or CR.\n *\n * The lines returned do not include terminating line separators.\n */\npublic fun CharSequence.lineSequence(): Sequence = splitToSequence(\"\\r\\n\", \"\\n\", \"\\r\")\n\n/**\n * Splits this char sequence to a list of lines delimited by any of the following character sequences: CRLF, LF or CR.\n *\n * The lines returned do not include terminating line separators.\n */\npublic fun CharSequence.lines(): List = lineSequence().toList()\n",null,null,null,null,null,null,null,null,"/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"ArraysKt\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component1(): T {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component1(): Byte {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component1(): Short {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component1(): Int {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component1(): Long {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component1(): Float {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component1(): Double {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component1(): Boolean {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component1(): Char {\n return get(0)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component2(): T {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component2(): Byte {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component2(): Short {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component2(): Int {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component2(): Long {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component2(): Float {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component2(): Double {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component2(): Boolean {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component2(): Char {\n return get(1)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component3(): T {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component3(): Byte {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component3(): Short {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component3(): Int {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component3(): Long {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component3(): Float {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component3(): Double {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component3(): Boolean {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component3(): Char {\n return get(2)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component4(): T {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component4(): Byte {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component4(): Short {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component4(): Int {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component4(): Long {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component4(): Float {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component4(): Double {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component4(): Boolean {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component4(): Char {\n return get(3)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component5(): T {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component5(): Byte {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component5(): Short {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component5(): Int {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component5(): Long {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component5(): Float {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component5(): Double {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component5(): Boolean {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component5(): Char {\n return get(4)\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun <@kotlin.internal.OnlyInputTypes T> Array.contains(element: T): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun ByteArray.contains(element: Byte): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun ShortArray.contains(element: Short): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun IntArray.contains(element: Int): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun LongArray.contains(element: Long): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun FloatArray.contains(element: Float): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun DoubleArray.contains(element: Double): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun BooleanArray.contains(element: Boolean): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun CharArray.contains(element: Char): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun Array.elementAt(index: Int): T\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun ByteArray.elementAt(index: Int): Byte\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun ShortArray.elementAt(index: Int): Short\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun IntArray.elementAt(index: Int): Int\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun LongArray.elementAt(index: Int): Long\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun FloatArray.elementAt(index: Int): Float\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun DoubleArray.elementAt(index: Int): Double\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun BooleanArray.elementAt(index: Int): Boolean\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun CharArray.elementAt(index: Int): Char\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Byte): Byte {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Short): Short {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Int): Int {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Long): Long {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Float): Float {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Double): Double {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Boolean): Boolean {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Char): Char {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.elementAtOrNull(index: Int): T? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.elementAtOrNull(index: Int): Byte? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.elementAtOrNull(index: Int): Short? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.elementAtOrNull(index: Int): Int? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.elementAtOrNull(index: Int): Long? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.elementAtOrNull(index: Int): Float? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.elementAtOrNull(index: Int): Double? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.elementAtOrNull(index: Int): Boolean? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.elementAtOrNull(index: Int): Char? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.find(predicate: (T) -> Boolean): T? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.find(predicate: (Byte) -> Boolean): Byte? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.find(predicate: (Short) -> Boolean): Short? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.find(predicate: (Int) -> Boolean): Int? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.find(predicate: (Long) -> Boolean): Long? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.find(predicate: (Float) -> Boolean): Float? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.find(predicate: (Double) -> Boolean): Double? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.find(predicate: (Boolean) -> Boolean): Boolean? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.find(predicate: (Char) -> Boolean): Char? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.findLast(predicate: (Byte) -> Boolean): Byte? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.findLast(predicate: (Short) -> Boolean): Short? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.findLast(predicate: (Int) -> Boolean): Int? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.findLast(predicate: (Long) -> Boolean): Long? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.findLast(predicate: (Float) -> Boolean): Float? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.findLast(predicate: (Double) -> Boolean): Double? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.findLast(predicate: (Boolean) -> Boolean): Boolean? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.findLast(predicate: (Char) -> Boolean): Char? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun Array.first(): T {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ByteArray.first(): Byte {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ShortArray.first(): Short {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun IntArray.first(): Int {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun LongArray.first(): Long {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun FloatArray.first(): Float {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun DoubleArray.first(): Double {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun BooleanArray.first(): Boolean {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun CharArray.first(): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun Array.first(predicate: (T) -> Boolean): T {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ByteArray.first(predicate: (Byte) -> Boolean): Byte {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ShortArray.first(predicate: (Short) -> Boolean): Short {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun IntArray.first(predicate: (Int) -> Boolean): Int {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun LongArray.first(predicate: (Long) -> Boolean): Long {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun FloatArray.first(predicate: (Float) -> Boolean): Float {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun DoubleArray.first(predicate: (Double) -> Boolean): Double {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun BooleanArray.first(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun CharArray.first(predicate: (Char) -> Boolean): Char {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun Array.firstOrNull(): T? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun ByteArray.firstOrNull(): Byte? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun ShortArray.firstOrNull(): Short? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun IntArray.firstOrNull(): Int? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun LongArray.firstOrNull(): Long? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun FloatArray.firstOrNull(): Float? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun DoubleArray.firstOrNull(): Double? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun BooleanArray.firstOrNull(): Boolean? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun CharArray.firstOrNull(): Char? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun Array.firstOrNull(predicate: (T) -> Boolean): T? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun ByteArray.firstOrNull(predicate: (Byte) -> Boolean): Byte? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun ShortArray.firstOrNull(predicate: (Short) -> Boolean): Short? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun IntArray.firstOrNull(predicate: (Int) -> Boolean): Int? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun LongArray.firstOrNull(predicate: (Long) -> Boolean): Long? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun FloatArray.firstOrNull(predicate: (Float) -> Boolean): Float? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun DoubleArray.firstOrNull(predicate: (Double) -> Boolean): Double? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun BooleanArray.firstOrNull(predicate: (Boolean) -> Boolean): Boolean? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun CharArray.firstOrNull(predicate: (Char) -> Boolean): Char? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.getOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.getOrElse(index: Int, defaultValue: (Int) -> Byte): Byte {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.getOrElse(index: Int, defaultValue: (Int) -> Short): Short {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.getOrElse(index: Int, defaultValue: (Int) -> Int): Int {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.getOrElse(index: Int, defaultValue: (Int) -> Long): Long {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.getOrElse(index: Int, defaultValue: (Int) -> Float): Float {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.getOrElse(index: Int, defaultValue: (Int) -> Double): Double {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.getOrElse(index: Int, defaultValue: (Int) -> Boolean): Boolean {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.getOrElse(index: Int, defaultValue: (Int) -> Char): Char {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun Array.getOrNull(index: Int): T? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun ByteArray.getOrNull(index: Int): Byte? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun ShortArray.getOrNull(index: Int): Short? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun IntArray.getOrNull(index: Int): Int? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun LongArray.getOrNull(index: Int): Long? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun FloatArray.getOrNull(index: Int): Float? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun DoubleArray.getOrNull(index: Int): Double? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun BooleanArray.getOrNull(index: Int): Boolean? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun CharArray.getOrNull(index: Int): Char? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Array.indexOf(element: T): Int {\n if (element == null) {\n for (index in indices) {\n if (this[index] == null) {\n return index\n }\n }\n } else {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun ByteArray.indexOf(element: Byte): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun ShortArray.indexOf(element: Short): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun IntArray.indexOf(element: Int): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun LongArray.indexOf(element: Long): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun FloatArray.indexOf(element: Float): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun DoubleArray.indexOf(element: Double): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun BooleanArray.indexOf(element: Boolean): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun CharArray.indexOf(element: Char): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun Array.indexOfFirst(predicate: (T) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ByteArray.indexOfFirst(predicate: (Byte) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ShortArray.indexOfFirst(predicate: (Short) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun IntArray.indexOfFirst(predicate: (Int) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun LongArray.indexOfFirst(predicate: (Long) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun FloatArray.indexOfFirst(predicate: (Float) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun DoubleArray.indexOfFirst(predicate: (Double) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun BooleanArray.indexOfFirst(predicate: (Boolean) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun CharArray.indexOfFirst(predicate: (Char) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun Array.indexOfLast(predicate: (T) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ByteArray.indexOfLast(predicate: (Byte) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ShortArray.indexOfLast(predicate: (Short) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun IntArray.indexOfLast(predicate: (Int) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun LongArray.indexOfLast(predicate: (Long) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun FloatArray.indexOfLast(predicate: (Float) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun DoubleArray.indexOfLast(predicate: (Double) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun BooleanArray.indexOfLast(predicate: (Boolean) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun CharArray.indexOfLast(predicate: (Char) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun Array.last(): T {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ByteArray.last(): Byte {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ShortArray.last(): Short {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun IntArray.last(): Int {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun LongArray.last(): Long {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun FloatArray.last(): Float {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun DoubleArray.last(): Double {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun BooleanArray.last(): Boolean {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun CharArray.last(): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun Array.last(predicate: (T) -> Boolean): T {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ByteArray.last(predicate: (Byte) -> Boolean): Byte {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ShortArray.last(predicate: (Short) -> Boolean): Short {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun IntArray.last(predicate: (Int) -> Boolean): Int {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun LongArray.last(predicate: (Long) -> Boolean): Long {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun FloatArray.last(predicate: (Float) -> Boolean): Float {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun DoubleArray.last(predicate: (Double) -> Boolean): Double {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun BooleanArray.last(predicate: (Boolean) -> Boolean): Boolean {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun CharArray.last(predicate: (Char) -> Boolean): Char {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Array.lastIndexOf(element: T): Int {\n if (element == null) {\n for (index in indices.reversed()) {\n if (this[index] == null) {\n return index\n }\n }\n } else {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun ByteArray.lastIndexOf(element: Byte): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun ShortArray.lastIndexOf(element: Short): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun IntArray.lastIndexOf(element: Int): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun LongArray.lastIndexOf(element: Long): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun FloatArray.lastIndexOf(element: Float): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun DoubleArray.lastIndexOf(element: Double): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun BooleanArray.lastIndexOf(element: Boolean): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun CharArray.lastIndexOf(element: Char): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun Array.lastOrNull(): T? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun ByteArray.lastOrNull(): Byte? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun ShortArray.lastOrNull(): Short? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun IntArray.lastOrNull(): Int? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun LongArray.lastOrNull(): Long? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun FloatArray.lastOrNull(): Float? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun DoubleArray.lastOrNull(): Double? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun BooleanArray.lastOrNull(): Boolean? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun CharArray.lastOrNull(): Char? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun Array.lastOrNull(predicate: (T) -> Boolean): T? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun ByteArray.lastOrNull(predicate: (Byte) -> Boolean): Byte? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun ShortArray.lastOrNull(predicate: (Short) -> Boolean): Short? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun IntArray.lastOrNull(predicate: (Int) -> Boolean): Int? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun LongArray.lastOrNull(predicate: (Long) -> Boolean): Long? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun FloatArray.lastOrNull(predicate: (Float) -> Boolean): Float? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun DoubleArray.lastOrNull(predicate: (Double) -> Boolean): Double? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun BooleanArray.lastOrNull(predicate: (Boolean) -> Boolean): Boolean? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun CharArray.lastOrNull(predicate: (Char) -> Boolean): Char? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Array.random(): T {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.random(): Byte {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.random(): Short {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.random(): Int {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.random(): Long {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.random(): Float {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.random(): Double {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.random(): Boolean {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.random(): Char {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun Array.random(random: Random): T {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun ByteArray.random(random: Random): Byte {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun ShortArray.random(random: Random): Short {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun IntArray.random(random: Random): Int {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun LongArray.random(random: Random): Long {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun FloatArray.random(random: Random): Float {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun DoubleArray.random(random: Random): Double {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun BooleanArray.random(random: Random): Boolean {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun CharArray.random(random: Random): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun Array.single(): T {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun ByteArray.single(): Byte {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun ShortArray.single(): Short {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun IntArray.single(): Int {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun LongArray.single(): Long {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun FloatArray.single(): Float {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun DoubleArray.single(): Double {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun BooleanArray.single(): Boolean {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun CharArray.single(): Char {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun Array.single(predicate: (T) -> Boolean): T {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as T\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun ByteArray.single(predicate: (Byte) -> Boolean): Byte {\n var single: Byte? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Byte\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun ShortArray.single(predicate: (Short) -> Boolean): Short {\n var single: Short? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Short\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun IntArray.single(predicate: (Int) -> Boolean): Int {\n var single: Int? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Int\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun LongArray.single(predicate: (Long) -> Boolean): Long {\n var single: Long? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Long\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun FloatArray.single(predicate: (Float) -> Boolean): Float {\n var single: Float? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Float\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun DoubleArray.single(predicate: (Double) -> Boolean): Double {\n var single: Double? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Double\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun BooleanArray.single(predicate: (Boolean) -> Boolean): Boolean {\n var single: Boolean? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Boolean\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun CharArray.single(predicate: (Char) -> Boolean): Char {\n var single: Char? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Char\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun Array.singleOrNull(): T? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun ByteArray.singleOrNull(): Byte? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun ShortArray.singleOrNull(): Short? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun IntArray.singleOrNull(): Int? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun LongArray.singleOrNull(): Long? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun FloatArray.singleOrNull(): Float? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun DoubleArray.singleOrNull(): Double? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun BooleanArray.singleOrNull(): Boolean? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun CharArray.singleOrNull(): Char? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun Array.singleOrNull(predicate: (T) -> Boolean): T? {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun ByteArray.singleOrNull(predicate: (Byte) -> Boolean): Byte? {\n var single: Byte? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun ShortArray.singleOrNull(predicate: (Short) -> Boolean): Short? {\n var single: Short? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun IntArray.singleOrNull(predicate: (Int) -> Boolean): Int? {\n var single: Int? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun LongArray.singleOrNull(predicate: (Long) -> Boolean): Long? {\n var single: Long? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun FloatArray.singleOrNull(predicate: (Float) -> Boolean): Float? {\n var single: Float? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun DoubleArray.singleOrNull(predicate: (Double) -> Boolean): Double? {\n var single: Double? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun BooleanArray.singleOrNull(predicate: (Boolean) -> Boolean): Boolean? {\n var single: Boolean? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun CharArray.singleOrNull(predicate: (Char) -> Boolean): Char? {\n var single: Char? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun Array.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ByteArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ShortArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun IntArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun LongArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun FloatArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun DoubleArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun BooleanArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun CharArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun Array.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ByteArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ShortArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun IntArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun LongArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun FloatArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun DoubleArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun BooleanArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun CharArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun Array.dropLastWhile(predicate: (T) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ByteArray.dropLastWhile(predicate: (Byte) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ShortArray.dropLastWhile(predicate: (Short) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun IntArray.dropLastWhile(predicate: (Int) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun LongArray.dropLastWhile(predicate: (Long) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun FloatArray.dropLastWhile(predicate: (Float) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun DoubleArray.dropLastWhile(predicate: (Double) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun BooleanArray.dropLastWhile(predicate: (Boolean) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun CharArray.dropLastWhile(predicate: (Char) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun Array.dropWhile(predicate: (T) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ByteArray.dropWhile(predicate: (Byte) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ShortArray.dropWhile(predicate: (Short) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun IntArray.dropWhile(predicate: (Int) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun LongArray.dropWhile(predicate: (Long) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun FloatArray.dropWhile(predicate: (Float) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun DoubleArray.dropWhile(predicate: (Double) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun BooleanArray.dropWhile(predicate: (Boolean) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun CharArray.dropWhile(predicate: (Char) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun Array.filter(predicate: (T) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun ByteArray.filter(predicate: (Byte) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun ShortArray.filter(predicate: (Short) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun IntArray.filter(predicate: (Int) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun LongArray.filter(predicate: (Long) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun FloatArray.filter(predicate: (Float) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun DoubleArray.filter(predicate: (Double) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun BooleanArray.filter(predicate: (Boolean) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun CharArray.filter(predicate: (Char) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun Array.filterIndexed(predicate: (index: Int, T) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun ByteArray.filterIndexed(predicate: (index: Int, Byte) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun ShortArray.filterIndexed(predicate: (index: Int, Short) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun IntArray.filterIndexed(predicate: (index: Int, Int) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun LongArray.filterIndexed(predicate: (index: Int, Long) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun FloatArray.filterIndexed(predicate: (index: Int, Float) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun DoubleArray.filterIndexed(predicate: (index: Int, Double) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun BooleanArray.filterIndexed(predicate: (index: Int, Boolean) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun CharArray.filterIndexed(predicate: (index: Int, Char) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > Array.filterIndexedTo(destination: C, predicate: (index: Int, T) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > ByteArray.filterIndexedTo(destination: C, predicate: (index: Int, Byte) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > ShortArray.filterIndexedTo(destination: C, predicate: (index: Int, Short) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > IntArray.filterIndexedTo(destination: C, predicate: (index: Int, Int) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > LongArray.filterIndexedTo(destination: C, predicate: (index: Int, Long) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > FloatArray.filterIndexedTo(destination: C, predicate: (index: Int, Float) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > DoubleArray.filterIndexedTo(destination: C, predicate: (index: Int, Double) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > BooleanArray.filterIndexedTo(destination: C, predicate: (index: Int, Boolean) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > CharArray.filterIndexedTo(destination: C, predicate: (index: Int, Char) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Returns a list containing all elements that are instances of specified type parameter R.\n */\npublic inline fun Array<*>.filterIsInstance(): List<@kotlin.internal.NoInfer R> {\n return filterIsInstanceTo(ArrayList())\n}\n\n/**\n * Appends all elements that are instances of specified type parameter R to the given [destination].\n */\npublic inline fun > Array<*>.filterIsInstanceTo(destination: C): C {\n for (element in this) if (element is R) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun Array.filterNot(predicate: (T) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun ByteArray.filterNot(predicate: (Byte) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun ShortArray.filterNot(predicate: (Short) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun IntArray.filterNot(predicate: (Int) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun LongArray.filterNot(predicate: (Long) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun FloatArray.filterNot(predicate: (Float) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun DoubleArray.filterNot(predicate: (Double) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun BooleanArray.filterNot(predicate: (Boolean) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun CharArray.filterNot(predicate: (Char) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements that are not `null`.\n */\npublic fun Array.filterNotNull(): List {\n return filterNotNullTo(ArrayList())\n}\n\n/**\n * Appends all elements that are not `null` to the given [destination].\n */\npublic fun , T : Any> Array.filterNotNullTo(destination: C): C {\n for (element in this) if (element != null) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > Array.filterNotTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > ByteArray.filterNotTo(destination: C, predicate: (Byte) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > ShortArray.filterNotTo(destination: C, predicate: (Short) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > IntArray.filterNotTo(destination: C, predicate: (Int) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > LongArray.filterNotTo(destination: C, predicate: (Long) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > FloatArray.filterNotTo(destination: C, predicate: (Float) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > DoubleArray.filterNotTo(destination: C, predicate: (Double) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > BooleanArray.filterNotTo(destination: C, predicate: (Boolean) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > CharArray.filterNotTo(destination: C, predicate: (Char) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > Array.filterTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > ByteArray.filterTo(destination: C, predicate: (Byte) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > ShortArray.filterTo(destination: C, predicate: (Short) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > IntArray.filterTo(destination: C, predicate: (Int) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > LongArray.filterTo(destination: C, predicate: (Long) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > FloatArray.filterTo(destination: C, predicate: (Float) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > DoubleArray.filterTo(destination: C, predicate: (Double) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > BooleanArray.filterTo(destination: C, predicate: (Boolean) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > CharArray.filterTo(destination: C, predicate: (Char) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun Array.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun ByteArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun ShortArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun IntArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun LongArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun FloatArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun DoubleArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun BooleanArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun CharArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun Array.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun ByteArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun ShortArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun IntArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun LongArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun FloatArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun DoubleArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun BooleanArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun CharArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun Array.sliceArray(indices: Collection): Array {\n val result = arrayOfNulls(this, indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun ByteArray.sliceArray(indices: Collection): ByteArray {\n val result = ByteArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun ShortArray.sliceArray(indices: Collection): ShortArray {\n val result = ShortArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun IntArray.sliceArray(indices: Collection): IntArray {\n val result = IntArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun LongArray.sliceArray(indices: Collection): LongArray {\n val result = LongArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun FloatArray.sliceArray(indices: Collection): FloatArray {\n val result = FloatArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun DoubleArray.sliceArray(indices: Collection): DoubleArray {\n val result = DoubleArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun BooleanArray.sliceArray(indices: Collection): BooleanArray {\n val result = BooleanArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun CharArray.sliceArray(indices: Collection): CharArray {\n val result = CharArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun Array.sliceArray(indices: IntRange): Array {\n if (indices.isEmpty()) return copyOfRange(0, 0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun ByteArray.sliceArray(indices: IntRange): ByteArray {\n if (indices.isEmpty()) return ByteArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun ShortArray.sliceArray(indices: IntRange): ShortArray {\n if (indices.isEmpty()) return ShortArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun IntArray.sliceArray(indices: IntRange): IntArray {\n if (indices.isEmpty()) return IntArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun LongArray.sliceArray(indices: IntRange): LongArray {\n if (indices.isEmpty()) return LongArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun FloatArray.sliceArray(indices: IntRange): FloatArray {\n if (indices.isEmpty()) return FloatArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun DoubleArray.sliceArray(indices: IntRange): DoubleArray {\n if (indices.isEmpty()) return DoubleArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun BooleanArray.sliceArray(indices: IntRange): BooleanArray {\n if (indices.isEmpty()) return BooleanArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun CharArray.sliceArray(indices: IntRange): CharArray {\n if (indices.isEmpty()) return CharArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun Array.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ByteArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ShortArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun IntArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun LongArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun FloatArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun DoubleArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun BooleanArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun CharArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun Array.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ByteArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ShortArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun IntArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun LongArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun FloatArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun DoubleArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun BooleanArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun CharArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun Array.takeLastWhile(predicate: (T) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ByteArray.takeLastWhile(predicate: (Byte) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ShortArray.takeLastWhile(predicate: (Short) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun IntArray.takeLastWhile(predicate: (Int) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun LongArray.takeLastWhile(predicate: (Long) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun FloatArray.takeLastWhile(predicate: (Float) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun DoubleArray.takeLastWhile(predicate: (Double) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun BooleanArray.takeLastWhile(predicate: (Boolean) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun CharArray.takeLastWhile(predicate: (Char) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun Array.takeWhile(predicate: (T) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ByteArray.takeWhile(predicate: (Byte) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ShortArray.takeWhile(predicate: (Short) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun IntArray.takeWhile(predicate: (Int) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun LongArray.takeWhile(predicate: (Long) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun FloatArray.takeWhile(predicate: (Float) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun DoubleArray.takeWhile(predicate: (Double) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun BooleanArray.takeWhile(predicate: (Boolean) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun CharArray.takeWhile(predicate: (Char) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun Array.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun ByteArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun ShortArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun IntArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun LongArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun FloatArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun DoubleArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun BooleanArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun CharArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun Array.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun ByteArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun ShortArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun IntArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun LongArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun FloatArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun DoubleArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun BooleanArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun CharArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun Array.reversedArray(): Array {\n if (isEmpty()) return this\n val result = arrayOfNulls(this, size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun ByteArray.reversedArray(): ByteArray {\n if (isEmpty()) return this\n val result = ByteArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun ShortArray.reversedArray(): ShortArray {\n if (isEmpty()) return this\n val result = ShortArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun IntArray.reversedArray(): IntArray {\n if (isEmpty()) return this\n val result = IntArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun LongArray.reversedArray(): LongArray {\n if (isEmpty()) return this\n val result = LongArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun FloatArray.reversedArray(): FloatArray {\n if (isEmpty()) return this\n val result = FloatArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun DoubleArray.reversedArray(): DoubleArray {\n if (isEmpty()) return this\n val result = DoubleArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun BooleanArray.reversedArray(): BooleanArray {\n if (isEmpty()) return this\n val result = BooleanArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun CharArray.reversedArray(): CharArray {\n if (isEmpty()) return this\n val result = CharArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Sorts elements in the array in-place according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Array.sortBy(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareBy(selector))\n}\n\n/**\n * Sorts elements in the array in-place descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Array.sortByDescending(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareByDescending(selector))\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sortDescending(): Unit {\n sortWith(reverseOrder())\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun ByteArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun ShortArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun IntArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun LongArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun FloatArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun DoubleArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun CharArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sorted(): List {\n return sortedArray().asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun ByteArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun ShortArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun IntArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun LongArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun FloatArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun DoubleArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun CharArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sortedArray(): Array {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun ByteArray.sortedArray(): ByteArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun ShortArray.sortedArray(): ShortArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun IntArray.sortedArray(): IntArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun LongArray.sortedArray(): LongArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun FloatArray.sortedArray(): FloatArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun DoubleArray.sortedArray(): DoubleArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun CharArray.sortedArray(): CharArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sortedArrayDescending(): Array {\n if (isEmpty()) return this\n return this.copyOf().apply { sortWith(reverseOrder()) }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun ByteArray.sortedArrayDescending(): ByteArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun ShortArray.sortedArrayDescending(): ShortArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun IntArray.sortedArrayDescending(): IntArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun LongArray.sortedArrayDescending(): LongArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun FloatArray.sortedArrayDescending(): FloatArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun DoubleArray.sortedArrayDescending(): DoubleArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun CharArray.sortedArrayDescending(): CharArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun Array.sortedArrayWith(comparator: Comparator): Array {\n if (isEmpty()) return this\n return this.copyOf().apply { sortWith(comparator) }\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Array.sortedBy(crossinline selector: (T) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > ByteArray.sortedBy(crossinline selector: (Byte) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > ShortArray.sortedBy(crossinline selector: (Short) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > IntArray.sortedBy(crossinline selector: (Int) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > LongArray.sortedBy(crossinline selector: (Long) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > FloatArray.sortedBy(crossinline selector: (Float) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > DoubleArray.sortedBy(crossinline selector: (Double) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > BooleanArray.sortedBy(crossinline selector: (Boolean) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > CharArray.sortedBy(crossinline selector: (Char) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Array.sortedByDescending(crossinline selector: (T) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > ByteArray.sortedByDescending(crossinline selector: (Byte) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > ShortArray.sortedByDescending(crossinline selector: (Short) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > IntArray.sortedByDescending(crossinline selector: (Int) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > LongArray.sortedByDescending(crossinline selector: (Long) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > FloatArray.sortedByDescending(crossinline selector: (Float) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > DoubleArray.sortedByDescending(crossinline selector: (Double) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > BooleanArray.sortedByDescending(crossinline selector: (Boolean) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > CharArray.sortedByDescending(crossinline selector: (Char) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sortedDescending(): List {\n return sortedWith(reverseOrder())\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun ByteArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun ShortArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun IntArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun LongArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun FloatArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun DoubleArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun CharArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun Array.sortedWith(comparator: Comparator): List {\n return sortedArrayWith(comparator).asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun ByteArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun ShortArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun IntArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun LongArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun FloatArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun DoubleArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun BooleanArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun CharArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun Array.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun ByteArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun ShortArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun IntArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun LongArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun FloatArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun DoubleArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun BooleanArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun CharArray.asList(): List\n\n/**\n * Returns `true` if the two specified arrays are *deeply* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * If two corresponding elements are nested arrays, they are also compared deeply.\n * If any of arrays contains itself on any nesting level the behavior is undefined.\n * \n * The elements of other types are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun Array.contentDeepEquals(other: Array): Boolean\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level the behavior is undefined.\n */\n@SinceKotlin(\"1.1\")\npublic expect fun Array.contentDeepHashCode(): Int\n\n/**\n * Returns a string representation of the contents of this array as if it is a [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level that reference\n * is rendered as `\"[...]\"` to prevent recursion.\n * \n * @sample samples.collections.Arrays.ContentOperations.contentDeepToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun Array.contentDeepToString(): String\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun Array.contentEquals(other: Array): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun ByteArray.contentEquals(other: ByteArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun ShortArray.contentEquals(other: ShortArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun IntArray.contentEquals(other: IntArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun LongArray.contentEquals(other: LongArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun FloatArray.contentEquals(other: FloatArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun DoubleArray.contentEquals(other: DoubleArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun BooleanArray.contentEquals(other: BooleanArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun CharArray.contentEquals(other: CharArray): Boolean\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun Array.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun ByteArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun ShortArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun IntArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun LongArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun FloatArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun DoubleArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun BooleanArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun CharArray.contentHashCode(): Int\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun Array.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun ByteArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun ShortArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun IntArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun LongArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun FloatArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun DoubleArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun BooleanArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun CharArray.contentToString(): String\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun Array.copyInto(destination: Array, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): Array\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun ByteArray.copyInto(destination: ByteArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ByteArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun ShortArray.copyInto(destination: ShortArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ShortArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun IntArray.copyInto(destination: IntArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): IntArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun LongArray.copyInto(destination: LongArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): LongArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun FloatArray.copyInto(destination: FloatArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): FloatArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun DoubleArray.copyInto(destination: DoubleArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): DoubleArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun BooleanArray.copyInto(destination: BooleanArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): BooleanArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun CharArray.copyInto(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): CharArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun Array.copyOf(): Array\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun ByteArray.copyOf(): ByteArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun ShortArray.copyOf(): ShortArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun IntArray.copyOf(): IntArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun LongArray.copyOf(): LongArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun FloatArray.copyOf(): FloatArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun DoubleArray.copyOf(): DoubleArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun BooleanArray.copyOf(): BooleanArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun CharArray.copyOf(): CharArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun ByteArray.copyOf(newSize: Int): ByteArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun ShortArray.copyOf(newSize: Int): ShortArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun IntArray.copyOf(newSize: Int): IntArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun LongArray.copyOf(newSize: Int): LongArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun FloatArray.copyOf(newSize: Int): FloatArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun DoubleArray.copyOf(newSize: Int): DoubleArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with `false` values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `false` values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun BooleanArray.copyOf(newSize: Int): BooleanArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with null char (`\\u0000`) values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with null char (`\\u0000`) values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun CharArray.copyOf(newSize: Int): CharArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with `null` values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `null` values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizingCopyOf\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun Array.copyOf(newSize: Int): Array\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun Array.copyOfRange(fromIndex: Int, toIndex: Int): Array\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun ByteArray.copyOfRange(fromIndex: Int, toIndex: Int): ByteArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun ShortArray.copyOfRange(fromIndex: Int, toIndex: Int): ShortArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun IntArray.copyOfRange(fromIndex: Int, toIndex: Int): IntArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun LongArray.copyOfRange(fromIndex: Int, toIndex: Int): LongArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun FloatArray.copyOfRange(fromIndex: Int, toIndex: Int): FloatArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun DoubleArray.copyOfRange(fromIndex: Int, toIndex: Int): DoubleArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun BooleanArray.copyOfRange(fromIndex: Int, toIndex: Int): BooleanArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun CharArray.copyOfRange(fromIndex: Int, toIndex: Int): CharArray\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val Array.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val ByteArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val ShortArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val IntArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val LongArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val FloatArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val DoubleArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val BooleanArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val CharArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns the last valid index for the array.\n */\npublic val Array.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val ByteArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val ShortArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val IntArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val LongArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val FloatArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val DoubleArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val BooleanArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val CharArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect operator fun Array.plus(element: T): Array\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun ByteArray.plus(element: Byte): ByteArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun ShortArray.plus(element: Short): ShortArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun IntArray.plus(element: Int): IntArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun LongArray.plus(element: Long): LongArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun FloatArray.plus(element: Float): FloatArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun DoubleArray.plus(element: Double): DoubleArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun BooleanArray.plus(element: Boolean): BooleanArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun CharArray.plus(element: Char): CharArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect operator fun Array.plus(elements: Collection): Array\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun ByteArray.plus(elements: Collection): ByteArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun ShortArray.plus(elements: Collection): ShortArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun IntArray.plus(elements: Collection): IntArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun LongArray.plus(elements: Collection): LongArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun FloatArray.plus(elements: Collection): FloatArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun DoubleArray.plus(elements: Collection): DoubleArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun BooleanArray.plus(elements: Collection): BooleanArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun CharArray.plus(elements: Collection): CharArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect operator fun Array.plus(elements: Array): Array\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun ByteArray.plus(elements: ByteArray): ByteArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun ShortArray.plus(elements: ShortArray): ShortArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun IntArray.plus(elements: IntArray): IntArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun LongArray.plus(elements: LongArray): LongArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun FloatArray.plus(elements: FloatArray): FloatArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun DoubleArray.plus(elements: DoubleArray): DoubleArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun BooleanArray.plus(elements: BooleanArray): BooleanArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun CharArray.plus(elements: CharArray): CharArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun Array.plusElement(element: T): Array\n\n/**\n * Sorts the array in-place.\n */\npublic expect fun IntArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n */\npublic expect fun LongArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n */\npublic expect fun ByteArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n */\npublic expect fun ShortArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n */\npublic expect fun DoubleArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n */\npublic expect fun FloatArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n */\npublic expect fun CharArray.sort(): Unit\n\n/**\n * Sorts the array in-place according to the natural order of its elements.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic expect fun > Array.sort(): Unit\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic expect fun Array.sortWith(comparator: Comparator): Unit\n\n/**\n * Returns an array of Boolean containing all of the elements of this generic array.\n */\npublic fun Array.toBooleanArray(): BooleanArray {\n return BooleanArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Byte containing all of the elements of this generic array.\n */\npublic fun Array.toByteArray(): ByteArray {\n return ByteArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Char containing all of the elements of this generic array.\n */\npublic fun Array.toCharArray(): CharArray {\n return CharArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Double containing all of the elements of this generic array.\n */\npublic fun Array.toDoubleArray(): DoubleArray {\n return DoubleArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Float containing all of the elements of this generic array.\n */\npublic fun Array.toFloatArray(): FloatArray {\n return FloatArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Int containing all of the elements of this generic array.\n */\npublic fun Array.toIntArray(): IntArray {\n return IntArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Long containing all of the elements of this generic array.\n */\npublic fun Array.toLongArray(): LongArray {\n return LongArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Short containing all of the elements of this generic array.\n */\npublic fun Array.toShortArray(): ShortArray {\n return ShortArray(size) { index -> this[index] }\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun ByteArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun ShortArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun IntArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun LongArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun FloatArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun DoubleArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun BooleanArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun CharArray.toTypedArray(): Array\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun Array.associate(transform: (T) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun ByteArray.associate(transform: (Byte) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun ShortArray.associate(transform: (Short) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun IntArray.associate(transform: (Int) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun LongArray.associate(transform: (Long) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun FloatArray.associate(transform: (Float) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun DoubleArray.associate(transform: (Double) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun BooleanArray.associate(transform: (Boolean) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun CharArray.associate(transform: (Char) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun Array.associateBy(keySelector: (T) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun ByteArray.associateBy(keySelector: (Byte) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun ShortArray.associateBy(keySelector: (Short) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun IntArray.associateBy(keySelector: (Int) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun LongArray.associateBy(keySelector: (Long) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun FloatArray.associateBy(keySelector: (Float) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun DoubleArray.associateBy(keySelector: (Double) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun BooleanArray.associateBy(keySelector: (Boolean) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun CharArray.associateBy(keySelector: (Char) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun Array.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun ByteArray.associateBy(keySelector: (Byte) -> K, valueTransform: (Byte) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun ShortArray.associateBy(keySelector: (Short) -> K, valueTransform: (Short) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun IntArray.associateBy(keySelector: (Int) -> K, valueTransform: (Int) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun LongArray.associateBy(keySelector: (Long) -> K, valueTransform: (Long) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun FloatArray.associateBy(keySelector: (Float) -> K, valueTransform: (Float) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun DoubleArray.associateBy(keySelector: (Double) -> K, valueTransform: (Double) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun BooleanArray.associateBy(keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun CharArray.associateBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > Array.associateByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > ByteArray.associateByTo(destination: M, keySelector: (Byte) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > ShortArray.associateByTo(destination: M, keySelector: (Short) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > IntArray.associateByTo(destination: M, keySelector: (Int) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > LongArray.associateByTo(destination: M, keySelector: (Long) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > FloatArray.associateByTo(destination: M, keySelector: (Float) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > DoubleArray.associateByTo(destination: M, keySelector: (Double) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > BooleanArray.associateByTo(destination: M, keySelector: (Boolean) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > CharArray.associateByTo(destination: M, keySelector: (Char) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > Array.associateByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > ByteArray.associateByTo(destination: M, keySelector: (Byte) -> K, valueTransform: (Byte) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > ShortArray.associateByTo(destination: M, keySelector: (Short) -> K, valueTransform: (Short) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > IntArray.associateByTo(destination: M, keySelector: (Int) -> K, valueTransform: (Int) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > LongArray.associateByTo(destination: M, keySelector: (Long) -> K, valueTransform: (Long) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > FloatArray.associateByTo(destination: M, keySelector: (Float) -> K, valueTransform: (Float) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > DoubleArray.associateByTo(destination: M, keySelector: (Double) -> K, valueTransform: (Double) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > BooleanArray.associateByTo(destination: M, keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > CharArray.associateByTo(destination: M, keySelector: (Char) -> K, valueTransform: (Char) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > Array.associateTo(destination: M, transform: (T) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > ByteArray.associateTo(destination: M, transform: (Byte) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > ShortArray.associateTo(destination: M, transform: (Short) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > IntArray.associateTo(destination: M, transform: (Int) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > LongArray.associateTo(destination: M, transform: (Long) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > FloatArray.associateTo(destination: M, transform: (Float) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > DoubleArray.associateTo(destination: M, transform: (Double) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > BooleanArray.associateTo(destination: M, transform: (Boolean) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > CharArray.associateTo(destination: M, transform: (Char) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > Array.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > ByteArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > ShortArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > IntArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > LongArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > FloatArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > DoubleArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > BooleanArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > CharArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun Array.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun ByteArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun ShortArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun IntArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun LongArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun FloatArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun DoubleArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun BooleanArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun CharArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun Array.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun ByteArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun ShortArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun IntArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun LongArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun FloatArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun DoubleArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun BooleanArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun CharArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun Array.toMutableList(): MutableList {\n return ArrayList(this.asCollection())\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun ByteArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun ShortArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun IntArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun LongArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun FloatArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun DoubleArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun BooleanArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun CharArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun Array.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ByteArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ShortArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun IntArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun LongArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun FloatArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun DoubleArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun BooleanArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun CharArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun Array.flatMap(transform: (T) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun ByteArray.flatMap(transform: (Byte) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun ShortArray.flatMap(transform: (Short) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun IntArray.flatMap(transform: (Int) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun LongArray.flatMap(transform: (Long) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun FloatArray.flatMap(transform: (Float) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun DoubleArray.flatMap(transform: (Double) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun BooleanArray.flatMap(transform: (Boolean) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun CharArray.flatMap(transform: (Char) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > Array.flatMapTo(destination: C, transform: (T) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > ByteArray.flatMapTo(destination: C, transform: (Byte) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > ShortArray.flatMapTo(destination: C, transform: (Short) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > IntArray.flatMapTo(destination: C, transform: (Int) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > LongArray.flatMapTo(destination: C, transform: (Long) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > FloatArray.flatMapTo(destination: C, transform: (Float) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > DoubleArray.flatMapTo(destination: C, transform: (Double) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > BooleanArray.flatMapTo(destination: C, transform: (Boolean) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > CharArray.flatMapTo(destination: C, transform: (Char) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun Array.groupBy(keySelector: (T) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun ByteArray.groupBy(keySelector: (Byte) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun ShortArray.groupBy(keySelector: (Short) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun IntArray.groupBy(keySelector: (Int) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun LongArray.groupBy(keySelector: (Long) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun FloatArray.groupBy(keySelector: (Float) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun DoubleArray.groupBy(keySelector: (Double) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun BooleanArray.groupBy(keySelector: (Boolean) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun CharArray.groupBy(keySelector: (Char) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun Array.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun ByteArray.groupBy(keySelector: (Byte) -> K, valueTransform: (Byte) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun ShortArray.groupBy(keySelector: (Short) -> K, valueTransform: (Short) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun IntArray.groupBy(keySelector: (Int) -> K, valueTransform: (Int) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun LongArray.groupBy(keySelector: (Long) -> K, valueTransform: (Long) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun FloatArray.groupBy(keySelector: (Float) -> K, valueTransform: (Float) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun DoubleArray.groupBy(keySelector: (Double) -> K, valueTransform: (Double) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun BooleanArray.groupBy(keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun CharArray.groupBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> Array.groupByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> ByteArray.groupByTo(destination: M, keySelector: (Byte) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> ShortArray.groupByTo(destination: M, keySelector: (Short) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> IntArray.groupByTo(destination: M, keySelector: (Int) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> LongArray.groupByTo(destination: M, keySelector: (Long) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> FloatArray.groupByTo(destination: M, keySelector: (Float) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> DoubleArray.groupByTo(destination: M, keySelector: (Double) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> BooleanArray.groupByTo(destination: M, keySelector: (Boolean) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> CharArray.groupByTo(destination: M, keySelector: (Char) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> Array.groupByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> ByteArray.groupByTo(destination: M, keySelector: (Byte) -> K, valueTransform: (Byte) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> ShortArray.groupByTo(destination: M, keySelector: (Short) -> K, valueTransform: (Short) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> IntArray.groupByTo(destination: M, keySelector: (Int) -> K, valueTransform: (Int) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> LongArray.groupByTo(destination: M, keySelector: (Long) -> K, valueTransform: (Long) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> FloatArray.groupByTo(destination: M, keySelector: (Float) -> K, valueTransform: (Float) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> DoubleArray.groupByTo(destination: M, keySelector: (Double) -> K, valueTransform: (Double) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> BooleanArray.groupByTo(destination: M, keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> CharArray.groupByTo(destination: M, keySelector: (Char) -> K, valueTransform: (Char) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Creates a [Grouping] source from an array to be used later with one of group-and-fold operations\n * using the specified [keySelector] function to extract a key from each element.\n * \n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Array.groupingBy(crossinline keySelector: (T) -> K): Grouping {\n return object : Grouping {\n override fun sourceIterator(): Iterator = this@groupingBy.iterator()\n override fun keyOf(element: T): K = keySelector(element)\n }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun Array.map(transform: (T) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun ByteArray.map(transform: (Byte) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun ShortArray.map(transform: (Short) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun IntArray.map(transform: (Int) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun LongArray.map(transform: (Long) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun FloatArray.map(transform: (Float) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun DoubleArray.map(transform: (Double) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun BooleanArray.map(transform: (Boolean) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun CharArray.map(transform: (Char) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Array.mapIndexed(transform: (index: Int, T) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun ByteArray.mapIndexed(transform: (index: Int, Byte) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun ShortArray.mapIndexed(transform: (index: Int, Short) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun IntArray.mapIndexed(transform: (index: Int, Int) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun LongArray.mapIndexed(transform: (index: Int, Long) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun FloatArray.mapIndexed(transform: (index: Int, Float) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun DoubleArray.mapIndexed(transform: (index: Int, Double) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun BooleanArray.mapIndexed(transform: (index: Int, Boolean) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun CharArray.mapIndexed(transform: (index: Int, Char) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Array.mapIndexedNotNull(transform: (index: Int, T) -> R?): List {\n return mapIndexedNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends only the non-null results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Array.mapIndexedNotNullTo(destination: C, transform: (index: Int, T) -> R?): C {\n forEachIndexed { index, element -> transform(index, element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Array.mapIndexedTo(destination: C, transform: (index: Int, T) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > ByteArray.mapIndexedTo(destination: C, transform: (index: Int, Byte) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > ShortArray.mapIndexedTo(destination: C, transform: (index: Int, Short) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > IntArray.mapIndexedTo(destination: C, transform: (index: Int, Int) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > LongArray.mapIndexedTo(destination: C, transform: (index: Int, Long) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > FloatArray.mapIndexedTo(destination: C, transform: (index: Int, Float) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > DoubleArray.mapIndexedTo(destination: C, transform: (index: Int, Double) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > BooleanArray.mapIndexedTo(destination: C, transform: (index: Int, Boolean) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > CharArray.mapIndexedTo(destination: C, transform: (index: Int, Char) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element in the original array.\n */\npublic inline fun Array.mapNotNull(transform: (T) -> R?): List {\n return mapNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element in the original array\n * and appends only the non-null results to the given [destination].\n */\npublic inline fun > Array.mapNotNullTo(destination: C, transform: (T) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > Array.mapTo(destination: C, transform: (T) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > ByteArray.mapTo(destination: C, transform: (Byte) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > ShortArray.mapTo(destination: C, transform: (Short) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > IntArray.mapTo(destination: C, transform: (Int) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > LongArray.mapTo(destination: C, transform: (Long) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > FloatArray.mapTo(destination: C, transform: (Float) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > DoubleArray.mapTo(destination: C, transform: (Double) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > BooleanArray.mapTo(destination: C, transform: (Boolean) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > CharArray.mapTo(destination: C, transform: (Char) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun Array.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun ByteArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun ShortArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun IntArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun LongArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun FloatArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun DoubleArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun BooleanArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun CharArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun Array.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun ByteArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun ShortArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun IntArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun LongArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun FloatArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun DoubleArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun BooleanArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun CharArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun Array.distinctBy(selector: (T) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun ByteArray.distinctBy(selector: (Byte) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun ShortArray.distinctBy(selector: (Short) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun IntArray.distinctBy(selector: (Int) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun LongArray.distinctBy(selector: (Long) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun FloatArray.distinctBy(selector: (Float) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun DoubleArray.distinctBy(selector: (Double) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun BooleanArray.distinctBy(selector: (Boolean) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun CharArray.distinctBy(selector: (Char) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun Array.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun ByteArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun ShortArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun IntArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun LongArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun FloatArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun DoubleArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun BooleanArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun CharArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun Array.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun ByteArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun ShortArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun IntArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun LongArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun FloatArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun DoubleArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun BooleanArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun CharArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun Array.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ByteArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ShortArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun IntArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun LongArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun FloatArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun DoubleArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun BooleanArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun CharArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun Array.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun ByteArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun ShortArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun IntArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun LongArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun FloatArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun DoubleArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun BooleanArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun CharArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun Array.all(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun ByteArray.all(predicate: (Byte) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun ShortArray.all(predicate: (Short) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun IntArray.all(predicate: (Int) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun LongArray.all(predicate: (Long) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun FloatArray.all(predicate: (Float) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun DoubleArray.all(predicate: (Double) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun BooleanArray.all(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun CharArray.all(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun Array.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun ByteArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun ShortArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun IntArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun LongArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun FloatArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun DoubleArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun BooleanArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun CharArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun Array.any(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun ByteArray.any(predicate: (Byte) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun ShortArray.any(predicate: (Short) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun IntArray.any(predicate: (Int) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun LongArray.any(predicate: (Long) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun FloatArray.any(predicate: (Float) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun DoubleArray.any(predicate: (Double) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun BooleanArray.any(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun CharArray.any(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun Array.count(predicate: (T) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun ByteArray.count(predicate: (Byte) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun ShortArray.count(predicate: (Short) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun IntArray.count(predicate: (Int) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun LongArray.count(predicate: (Long) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun FloatArray.count(predicate: (Float) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun DoubleArray.count(predicate: (Double) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun BooleanArray.count(predicate: (Boolean) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun CharArray.count(predicate: (Char) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun Array.fold(initial: R, operation: (acc: R, T) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun ByteArray.fold(initial: R, operation: (acc: R, Byte) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun ShortArray.fold(initial: R, operation: (acc: R, Short) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun IntArray.fold(initial: R, operation: (acc: R, Int) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun LongArray.fold(initial: R, operation: (acc: R, Long) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun FloatArray.fold(initial: R, operation: (acc: R, Float) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun DoubleArray.fold(initial: R, operation: (acc: R, Double) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun BooleanArray.fold(initial: R, operation: (acc: R, Boolean) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun CharArray.fold(initial: R, operation: (acc: R, Char) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun Array.foldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun ByteArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Byte) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun ShortArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Short) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun IntArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Int) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun LongArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Long) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun FloatArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Float) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun DoubleArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Double) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun BooleanArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Boolean) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun CharArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun Array.foldRight(initial: R, operation: (T, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun ByteArray.foldRight(initial: R, operation: (Byte, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun ShortArray.foldRight(initial: R, operation: (Short, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun IntArray.foldRight(initial: R, operation: (Int, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun LongArray.foldRight(initial: R, operation: (Long, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun FloatArray.foldRight(initial: R, operation: (Float, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun DoubleArray.foldRight(initial: R, operation: (Double, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun BooleanArray.foldRight(initial: R, operation: (Boolean, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun CharArray.foldRight(initial: R, operation: (Char, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun Array.foldRightIndexed(initial: R, operation: (index: Int, T, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun ByteArray.foldRightIndexed(initial: R, operation: (index: Int, Byte, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun ShortArray.foldRightIndexed(initial: R, operation: (index: Int, Short, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun IntArray.foldRightIndexed(initial: R, operation: (index: Int, Int, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun LongArray.foldRightIndexed(initial: R, operation: (index: Int, Long, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun FloatArray.foldRightIndexed(initial: R, operation: (index: Int, Float, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun DoubleArray.foldRightIndexed(initial: R, operation: (index: Int, Double, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun BooleanArray.foldRightIndexed(initial: R, operation: (index: Int, Boolean, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun CharArray.foldRightIndexed(initial: R, operation: (index: Int, Char, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun Array.forEach(action: (T) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun ByteArray.forEach(action: (Byte) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun ShortArray.forEach(action: (Short) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun IntArray.forEach(action: (Int) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun LongArray.forEach(action: (Long) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun FloatArray.forEach(action: (Float) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun DoubleArray.forEach(action: (Double) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun BooleanArray.forEach(action: (Boolean) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun CharArray.forEach(action: (Char) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun Array.forEachIndexed(action: (index: Int, T) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun ByteArray.forEachIndexed(action: (index: Int, Byte) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun ShortArray.forEachIndexed(action: (index: Int, Short) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun IntArray.forEachIndexed(action: (index: Int, Int) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun LongArray.forEachIndexed(action: (index: Int, Long) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun FloatArray.forEachIndexed(action: (index: Int, Float) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun DoubleArray.forEachIndexed(action: (index: Int, Double) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun BooleanArray.forEachIndexed(action: (index: Int, Boolean) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun CharArray.forEachIndexed(action: (index: Int, Char) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Array.max(): Double? {\n if (isEmpty()) return null\n var max = this[0]\n if (max.isNaN()) return max\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Array.max(): Float? {\n if (isEmpty()) return null\n var max = this[0]\n if (max.isNaN()) return max\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun > Array.max(): T? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun ByteArray.max(): Byte? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun ShortArray.max(): Short? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun IntArray.max(): Int? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun LongArray.max(): Long? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\npublic fun FloatArray.max(): Float? {\n if (isEmpty()) return null\n var max = this[0]\n if (max.isNaN()) return max\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\npublic fun DoubleArray.max(): Double? {\n if (isEmpty()) return null\n var max = this[0]\n if (max.isNaN()) return max\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun CharArray.max(): Char? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > Array.maxBy(selector: (T) -> R): T? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > ByteArray.maxBy(selector: (Byte) -> R): Byte? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > ShortArray.maxBy(selector: (Short) -> R): Short? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > IntArray.maxBy(selector: (Int) -> R): Int? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > LongArray.maxBy(selector: (Long) -> R): Long? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > FloatArray.maxBy(selector: (Float) -> R): Float? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > DoubleArray.maxBy(selector: (Double) -> R): Double? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > BooleanArray.maxBy(selector: (Boolean) -> R): Boolean? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > CharArray.maxBy(selector: (Char) -> R): Char? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun Array.maxWith(comparator: Comparator): T? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun ByteArray.maxWith(comparator: Comparator): Byte? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun ShortArray.maxWith(comparator: Comparator): Short? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun IntArray.maxWith(comparator: Comparator): Int? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun LongArray.maxWith(comparator: Comparator): Long? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun FloatArray.maxWith(comparator: Comparator): Float? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun DoubleArray.maxWith(comparator: Comparator): Double? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun BooleanArray.maxWith(comparator: Comparator): Boolean? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun CharArray.maxWith(comparator: Comparator): Char? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Array.min(): Double? {\n if (isEmpty()) return null\n var min = this[0]\n if (min.isNaN()) return min\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Array.min(): Float? {\n if (isEmpty()) return null\n var min = this[0]\n if (min.isNaN()) return min\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun > Array.min(): T? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun ByteArray.min(): Byte? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun ShortArray.min(): Short? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun IntArray.min(): Int? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun LongArray.min(): Long? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\npublic fun FloatArray.min(): Float? {\n if (isEmpty()) return null\n var min = this[0]\n if (min.isNaN()) return min\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\npublic fun DoubleArray.min(): Double? {\n if (isEmpty()) return null\n var min = this[0]\n if (min.isNaN()) return min\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun CharArray.min(): Char? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > Array.minBy(selector: (T) -> R): T? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > ByteArray.minBy(selector: (Byte) -> R): Byte? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > ShortArray.minBy(selector: (Short) -> R): Short? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > IntArray.minBy(selector: (Int) -> R): Int? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > LongArray.minBy(selector: (Long) -> R): Long? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > FloatArray.minBy(selector: (Float) -> R): Float? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > DoubleArray.minBy(selector: (Double) -> R): Double? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > BooleanArray.minBy(selector: (Boolean) -> R): Boolean? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > CharArray.minBy(selector: (Char) -> R): Char? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun Array.minWith(comparator: Comparator): T? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun ByteArray.minWith(comparator: Comparator): Byte? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun ShortArray.minWith(comparator: Comparator): Short? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun IntArray.minWith(comparator: Comparator): Int? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun LongArray.minWith(comparator: Comparator): Long? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun FloatArray.minWith(comparator: Comparator): Float? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun DoubleArray.minWith(comparator: Comparator): Double? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun BooleanArray.minWith(comparator: Comparator): Boolean? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun CharArray.minWith(comparator: Comparator): Char? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun Array.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun ByteArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun ShortArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun IntArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun LongArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun FloatArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun DoubleArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun BooleanArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun CharArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun Array.none(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun ByteArray.none(predicate: (Byte) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun ShortArray.none(predicate: (Short) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun IntArray.none(predicate: (Int) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun LongArray.none(predicate: (Long) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun FloatArray.none(predicate: (Float) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun DoubleArray.none(predicate: (Double) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun BooleanArray.none(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun CharArray.none(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun Array.reduce(operation: (acc: S, T) -> S): S {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun ByteArray.reduce(operation: (acc: Byte, Byte) -> Byte): Byte {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun ShortArray.reduce(operation: (acc: Short, Short) -> Short): Short {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun IntArray.reduce(operation: (acc: Int, Int) -> Int): Int {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun LongArray.reduce(operation: (acc: Long, Long) -> Long): Long {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun FloatArray.reduce(operation: (acc: Float, Float) -> Float): Float {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun DoubleArray.reduce(operation: (acc: Double, Double) -> Double): Double {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun BooleanArray.reduce(operation: (acc: Boolean, Boolean) -> Boolean): Boolean {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun CharArray.reduce(operation: (acc: Char, Char) -> Char): Char {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun Array.reduceIndexed(operation: (index: Int, acc: S, T) -> S): S {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun ByteArray.reduceIndexed(operation: (index: Int, acc: Byte, Byte) -> Byte): Byte {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun ShortArray.reduceIndexed(operation: (index: Int, acc: Short, Short) -> Short): Short {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun IntArray.reduceIndexed(operation: (index: Int, acc: Int, Int) -> Int): Int {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun LongArray.reduceIndexed(operation: (index: Int, acc: Long, Long) -> Long): Long {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun FloatArray.reduceIndexed(operation: (index: Int, acc: Float, Float) -> Float): Float {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun DoubleArray.reduceIndexed(operation: (index: Int, acc: Double, Double) -> Double): Double {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun BooleanArray.reduceIndexed(operation: (index: Int, acc: Boolean, Boolean) -> Boolean): Boolean {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun CharArray.reduceIndexed(operation: (index: Int, acc: Char, Char) -> Char): Char {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun Array.reduceRight(operation: (T, acc: S) -> S): S {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun ByteArray.reduceRight(operation: (Byte, acc: Byte) -> Byte): Byte {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun ShortArray.reduceRight(operation: (Short, acc: Short) -> Short): Short {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun IntArray.reduceRight(operation: (Int, acc: Int) -> Int): Int {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun LongArray.reduceRight(operation: (Long, acc: Long) -> Long): Long {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun FloatArray.reduceRight(operation: (Float, acc: Float) -> Float): Float {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun DoubleArray.reduceRight(operation: (Double, acc: Double) -> Double): Double {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun BooleanArray.reduceRight(operation: (Boolean, acc: Boolean) -> Boolean): Boolean {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun CharArray.reduceRight(operation: (Char, acc: Char) -> Char): Char {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun Array.reduceRightIndexed(operation: (index: Int, T, acc: S) -> S): S {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun ByteArray.reduceRightIndexed(operation: (index: Int, Byte, acc: Byte) -> Byte): Byte {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun ShortArray.reduceRightIndexed(operation: (index: Int, Short, acc: Short) -> Short): Short {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun IntArray.reduceRightIndexed(operation: (index: Int, Int, acc: Int) -> Int): Int {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun LongArray.reduceRightIndexed(operation: (index: Int, Long, acc: Long) -> Long): Long {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun FloatArray.reduceRightIndexed(operation: (index: Int, Float, acc: Float) -> Float): Float {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun DoubleArray.reduceRightIndexed(operation: (index: Int, Double, acc: Double) -> Double): Double {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun BooleanArray.reduceRightIndexed(operation: (index: Int, Boolean, acc: Boolean) -> Boolean): Boolean {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun CharArray.reduceRightIndexed(operation: (index: Int, Char, acc: Char) -> Char): Char {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun Array.sumBy(selector: (T) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ByteArray.sumBy(selector: (Byte) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ShortArray.sumBy(selector: (Short) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun IntArray.sumBy(selector: (Int) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun LongArray.sumBy(selector: (Long) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun FloatArray.sumBy(selector: (Float) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun DoubleArray.sumBy(selector: (Double) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun BooleanArray.sumBy(selector: (Boolean) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun CharArray.sumBy(selector: (Char) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun Array.sumByDouble(selector: (T) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ByteArray.sumByDouble(selector: (Byte) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ShortArray.sumByDouble(selector: (Short) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun IntArray.sumByDouble(selector: (Int) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun LongArray.sumByDouble(selector: (Long) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun FloatArray.sumByDouble(selector: (Float) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun DoubleArray.sumByDouble(selector: (Double) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun BooleanArray.sumByDouble(selector: (Boolean) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun CharArray.sumByDouble(selector: (Char) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n */\npublic fun Array.requireNoNulls(): Array {\n for (element in this) {\n if (element == null) {\n throw IllegalArgumentException(\"null element found in $this.\")\n }\n }\n @Suppress(\"UNCHECKED_CAST\")\n return this as Array\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun Array.partition(predicate: (T) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun ByteArray.partition(predicate: (Byte) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun ShortArray.partition(predicate: (Short) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun IntArray.partition(predicate: (Int) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun LongArray.partition(predicate: (Long) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun FloatArray.partition(predicate: (Float) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun DoubleArray.partition(predicate: (Double) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun BooleanArray.partition(predicate: (Boolean) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun CharArray.partition(predicate: (Char) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Array.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ByteArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ShortArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun IntArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun LongArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun FloatArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun DoubleArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun BooleanArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun CharArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Array.zip(other: Array, transform: (a: T, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ByteArray.zip(other: Array, transform: (a: Byte, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ShortArray.zip(other: Array, transform: (a: Short, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun IntArray.zip(other: Array, transform: (a: Int, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun LongArray.zip(other: Array, transform: (a: Long, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun FloatArray.zip(other: Array, transform: (a: Float, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun DoubleArray.zip(other: Array, transform: (a: Double, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun BooleanArray.zip(other: Array, transform: (a: Boolean, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun CharArray.zip(other: Array, transform: (a: Char, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Array.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ByteArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ShortArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun IntArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun LongArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun FloatArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun DoubleArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun BooleanArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun CharArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Array.zip(other: Iterable, transform: (a: T, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ByteArray.zip(other: Iterable, transform: (a: Byte, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ShortArray.zip(other: Iterable, transform: (a: Short, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun IntArray.zip(other: Iterable, transform: (a: Int, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun LongArray.zip(other: Iterable, transform: (a: Long, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun FloatArray.zip(other: Iterable, transform: (a: Float, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun DoubleArray.zip(other: Iterable, transform: (a: Double, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun BooleanArray.zip(other: Iterable, transform: (a: Boolean, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun CharArray.zip(other: Iterable, transform: (a: Char, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ByteArray.zip(other: ByteArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ShortArray.zip(other: ShortArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun IntArray.zip(other: IntArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun LongArray.zip(other: LongArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun FloatArray.zip(other: FloatArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun DoubleArray.zip(other: DoubleArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun BooleanArray.zip(other: BooleanArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun CharArray.zip(other: CharArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ByteArray.zip(other: ByteArray, transform: (a: Byte, b: Byte) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ShortArray.zip(other: ShortArray, transform: (a: Short, b: Short) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun IntArray.zip(other: IntArray, transform: (a: Int, b: Int) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun LongArray.zip(other: LongArray, transform: (a: Long, b: Long) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun FloatArray.zip(other: FloatArray, transform: (a: Float, b: Float) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun DoubleArray.zip(other: DoubleArray, transform: (a: Double, b: Double) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun BooleanArray.zip(other: BooleanArray, transform: (a: Boolean, b: Boolean) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun CharArray.zip(other: CharArray, transform: (a: Char, b: Char) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun Array.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n buffer.appendElement(element, transform)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun ByteArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Byte) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun ShortArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Short) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun IntArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Int) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun LongArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Long) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun FloatArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Float) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun DoubleArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Double) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun BooleanArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Boolean) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun CharArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Char) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun Array.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun ByteArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Byte) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun ShortArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Short) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun IntArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Int) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun LongArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Long) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun FloatArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Float) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun DoubleArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Double) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun BooleanArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Boolean) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun CharArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Char) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun Array.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun ByteArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun ShortArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun IntArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun LongArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun FloatArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun DoubleArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun BooleanArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun CharArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun Array.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun ByteArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun ShortArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun IntArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun LongArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun FloatArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun DoubleArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun BooleanArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun CharArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfByte\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfShort\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfInt\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfLong\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfFloat\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfDouble\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun ByteArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun ShortArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun IntArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun LongArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun FloatArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun DoubleArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfByte\")\npublic fun Array.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfShort\")\npublic fun Array.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfInt\")\npublic fun Array.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfLong\")\npublic fun Array.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfFloat\")\npublic fun Array.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfDouble\")\npublic fun Array.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun ByteArray.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun ShortArray.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun IntArray.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun LongArray.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun FloatArray.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun DoubleArray.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n",null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\nimport kotlin.js.RegExp\n\n/**\n * Converts the characters in the specified array to a string.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun String(chars: CharArray): String {\n var result = \"\"\n for (char in chars) {\n result += char\n }\n return result\n}\n\n/**\n * Converts the characters from a portion of the specified array to a string.\n *\n * @throws IndexOutOfBoundsException if either [offset] or [length] are less than zero\n * or `offset + length` is out of [chars] array bounds.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun String(chars: CharArray, offset: Int, length: Int): String {\n if (offset < 0 || length < 0 || chars.size - offset < length)\n throw IndexOutOfBoundsException(\"size: ${chars.size}; offset: $offset; length: $length\")\n var result = \"\"\n for (index in offset until offset + length) {\n result += chars[index]\n }\n return result\n}\n\n/**\n * Concatenates characters in this [CharArray] into a String.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun CharArray.concatToString(): String {\n var result = \"\"\n for (char in this) {\n result += char\n }\n return result\n}\n\n/**\n * Concatenates characters in this [CharArray] or its subrange into a String.\n *\n * @param startIndex the beginning (inclusive) of the subrange of characters, 0 by default.\n * @param endIndex the end (exclusive) of the subrange of characters, size of this array by default.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n@ExperimentalStdlibApi\npublic actual fun CharArray.concatToString(startIndex: Int = 0, endIndex: Int = this.size): String {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, this.size)\n var result = \"\"\n for (index in startIndex until endIndex) {\n result += this[index]\n }\n return result\n}\n\n/**\n * Returns a [CharArray] containing characters of this string.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun String.toCharArray(): CharArray {\n return CharArray(length) { get(it) }\n}\n\n/**\n * Returns a [CharArray] containing characters of this string or its substring.\n *\n * @param startIndex the beginning (inclusive) of the substring, 0 by default.\n * @param endIndex the end (exclusive) of the substring, length of this string by default.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the length of this string.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n@ExperimentalStdlibApi\npublic actual fun String.toCharArray(startIndex: Int = 0, endIndex: Int = this.length): CharArray {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, length)\n return CharArray(endIndex - startIndex) { get(startIndex + it) }\n}\n\n/**\n * Decodes a string from the bytes in UTF-8 encoding in this array.\n *\n * Malformed byte sequences are replaced by the replacement char `\\uFFFD`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun ByteArray.decodeToString(): String {\n return decodeUtf8(this, 0, size, false)\n}\n\n/**\n * Decodes a string from the bytes in UTF-8 encoding in this array or its subrange.\n *\n * @param startIndex the beginning (inclusive) of the subrange to decode, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to decode, size of this array by default.\n * @param throwOnInvalidSequence specifies whether to throw an exception on malformed byte sequence or replace it by the replacement char `\\uFFFD`.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n * @throws CharacterCodingException if the byte array contains malformed UTF-8 byte sequence and [throwOnInvalidSequence] is true.\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n@ExperimentalStdlibApi\npublic actual fun ByteArray.decodeToString(\n startIndex: Int = 0,\n endIndex: Int = this.size,\n throwOnInvalidSequence: Boolean = false\n): String {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, this.size)\n return decodeUtf8(this, startIndex, endIndex, throwOnInvalidSequence)\n}\n\n/**\n * Encodes this string to an array of bytes in UTF-8 encoding.\n *\n * Any malformed char sequence is replaced by the replacement byte sequence.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun String.encodeToByteArray(): ByteArray {\n return encodeUtf8(this, 0, length, false)\n}\n\n/**\n * Encodes this string or its substring to an array of bytes in UTF-8 encoding.\n *\n * @param startIndex the beginning (inclusive) of the substring to encode, 0 by default.\n * @param endIndex the end (exclusive) of the substring to encode, length of this string by default.\n * @param throwOnInvalidSequence specifies whether to throw an exception on malformed char sequence or replace.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the length of this string.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n * @throws CharacterCodingException if this string contains malformed char sequence and [throwOnInvalidSequence] is true.\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n@ExperimentalStdlibApi\npublic actual fun String.encodeToByteArray(\n startIndex: Int = 0,\n endIndex: Int = this.length,\n throwOnInvalidSequence: Boolean = false\n): ByteArray {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, length)\n return encodeUtf8(this, startIndex, endIndex, throwOnInvalidSequence)\n}\n\n/**\n * Returns a copy of this string converted to upper case using the rules of the default locale.\n *\n * @sample samples.text.Strings.toUpperCase\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toUpperCase(): String = asDynamic().toUpperCase()\n\n/**\n * Returns a copy of this string converted to lower case using the rules of the default locale.\n *\n * @sample samples.text.Strings.toLowerCase\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toLowerCase(): String = asDynamic().toLowerCase()\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeIndexOf(str: String, fromIndex: Int): Int = asDynamic().indexOf(str, fromIndex)\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeLastIndexOf(str: String, fromIndex: Int): Int = asDynamic().lastIndexOf(str, fromIndex)\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeStartsWith(s: String, position: Int): Boolean = asDynamic().startsWith(s, position)\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeEndsWith(s: String): Boolean = asDynamic().endsWith(s)\n\n@kotlin.internal.InlineOnly\npublic actual inline fun String.substring(startIndex: Int): String = asDynamic().substring(startIndex)\n\n@kotlin.internal.InlineOnly\npublic actual inline fun String.substring(startIndex: Int, endIndex: Int): String = asDynamic().substring(startIndex, endIndex)\n\n@kotlin.internal.InlineOnly\npublic inline fun String.concat(str: String): String = asDynamic().concat(str)\n\n@kotlin.internal.InlineOnly\npublic inline fun String.match(regex: String): Array? = asDynamic().match(regex)\n\n//native public fun String.trim(): String\n//TODO: String.replace to implement effective trimLeading and trimTrailing\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeReplace(pattern: RegExp, replacement: String): String = asDynamic().replace(pattern, replacement)\n\n@SinceKotlin(\"1.2\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.compareTo(other: String, ignoreCase: Boolean = false): Int {\n if (ignoreCase) {\n val n1 = this.length\n val n2 = other.length\n val min = minOf(n1, n2)\n if (min == 0) return n1 - n2\n var start = 0\n while (true) {\n val end = minOf(start + 16, min)\n var s1 = this.substring(start, end)\n var s2 = other.substring(start, end)\n if (s1 != s2) {\n s1 = s1.toUpperCase()\n s2 = s2.toUpperCase()\n if (s1 != s2) {\n s1 = s1.toLowerCase()\n s2 = s2.toLowerCase()\n if (s1 != s2) {\n return s1.compareTo(s2)\n }\n }\n }\n if (end == min) break\n start = end\n }\n return n1 - n2\n } else {\n return compareTo(other)\n }\n}\n\n\nprivate val STRING_CASE_INSENSITIVE_ORDER = Comparator { a, b -> a.compareTo(b, ignoreCase = true) }\n\n@SinceKotlin(\"1.2\")\npublic actual val String.Companion.CASE_INSENSITIVE_ORDER: Comparator\n get() = STRING_CASE_INSENSITIVE_ORDER\n",null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StandardKt\")\npackage kotlin\n\nimport kotlin.contracts.*\n\n/**\n * An exception is thrown to indicate that a method body remains to be implemented.\n */\npublic class NotImplementedError(message: String = \"An operation is not implemented.\") : Error(message)\n\n/**\n * Always throws [NotImplementedError] stating that operation is not implemented.\n */\n\n@kotlin.internal.InlineOnly\npublic inline fun TODO(): Nothing = throw NotImplementedError()\n\n/**\n * Always throws [NotImplementedError] stating that operation is not implemented.\n *\n * @param reason a string explaining why the implementation is missing.\n */\n@kotlin.internal.InlineOnly\npublic inline fun TODO(reason: String): Nothing = throw NotImplementedError(\"An operation is not implemented: $reason\")\n\n\n\n/**\n * Calls the specified function [block] and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#run).\n */\n@kotlin.internal.InlineOnly\npublic inline fun run(block: () -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block()\n}\n\n/**\n * Calls the specified function [block] with `this` value as its receiver and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#run).\n */\n@kotlin.internal.InlineOnly\npublic inline fun T.run(block: T.() -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block()\n}\n\n/**\n * Calls the specified function [block] with the given [receiver] as its receiver and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#with).\n */\n@kotlin.internal.InlineOnly\npublic inline fun with(receiver: T, block: T.() -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return receiver.block()\n}\n\n/**\n * Calls the specified function [block] with `this` value as its receiver and returns `this` value.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#apply).\n */\n@kotlin.internal.InlineOnly\npublic inline fun T.apply(block: T.() -> Unit): T {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n block()\n return this\n}\n\n/**\n * Calls the specified function [block] with `this` value as its argument and returns `this` value.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#also).\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun T.also(block: (T) -> Unit): T {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n block(this)\n return this\n}\n\n/**\n * Calls the specified function [block] with `this` value as its argument and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#let).\n */\n@kotlin.internal.InlineOnly\npublic inline fun T.let(block: (T) -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block(this)\n}\n\n/**\n * Returns `this` value if it satisfies the given [predicate] or `null`, if it doesn't.\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun T.takeIf(predicate: (T) -> Boolean): T? {\n contract {\n callsInPlace(predicate, InvocationKind.EXACTLY_ONCE)\n }\n return if (predicate(this)) this else null\n}\n\n/**\n * Returns `this` value if it _does not_ satisfy the given [predicate] or `null`, if it does.\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun T.takeUnless(predicate: (T) -> Boolean): T? {\n contract {\n callsInPlace(predicate, InvocationKind.EXACTLY_ONCE)\n }\n return if (!predicate(this)) this else null\n}\n\n/**\n * Executes the given function [action] specified number of [times].\n *\n * A zero-based index of current iteration is passed as a parameter to [action].\n *\n * @sample samples.misc.ControlFlow.repeat\n */\n@kotlin.internal.InlineOnly\npublic inline fun repeat(times: Int, action: (Int) -> Unit) {\n contract { callsInPlace(action) }\n\n for (index in 0 until times) {\n action(index)\n }\n}\n",null],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"BHStudios General Scripts.js","sources":["collections/Sets.kt","properties/Delegates.kt","collections/Maps.kt","collections/Collections.kt","util/Preconditions.kt","../kt/src/jQueryInterface/jQuery Headers.kt","../kt/src/org/bh/scripts/components/HtmlElement.kt","../kt/src/org/bh/scripts/components/button/ButtonController.kt","generated/_Collections.kt","../kt/src/org/bh/scripts/components/button/ButtonModel.kt","../kt/src/org/bh/scripts/components/button/ButtonViewWrapper.kt","../kt/src/org/bh/scripts/components/sidebar/SidebarButtonController.kt","../kt/src/org/bh/scripts/components/sidebar/SidebarController.kt","util/Lazy.kt","../kt/src/org/bh/scripts/components/sidebar/SidebarModel.kt","../kt/src/org/bh/scripts/components/sidebar/SidebarViewWrapper.kt","../kt/src/org/bh/scripts/components/themeSwatches/ThemeSwatchController.kt","../kt/src/org/bh/scripts/components/themeSwatches/ThemeSwatchModel.kt","../kt/src/org/bh/scripts/theming/ThemeBrightnessTier.kt","text/Strings.kt","../kt/src/org/bh/scripts/components/themeSwatches/ThemeSwatchViewWrapper.kt","../kt/src/org/bh/scripts/general/Main.kt","../kt/src/org/bh/scripts/general/serialization/LocalStorage.kt","../kt/src/org/bh/scripts/general/serialization/NamespacedLocalStorage.kt","../kt/src/org/bh/scripts/general/serialization/StoragePair.kt","../kt/src/org/bh/scripts/general/utilities/Map Extensions.kt","../kt/src/org/bh/scripts/general/utilities/RegExp Extensions.kt","../kt/src/org/bh/scripts/general/utilities/tryOrNull.kt","generated/_Arrays.kt","../kt/src/org/bh/scripts/theming/ThemeColor.kt","kotlin/text/string.kt","../kt/src/org/bh/scripts/theming/ThemeController.kt","util/Standard.kt","../kt/src/org/bh/scripts/theming/ThemeModel.kt"],"sourcesContent":["/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"SetsKt\")\n@file:UseExperimental(kotlin.experimental.ExperimentalTypeInference::class)\n\npackage kotlin.collections\n\nimport kotlin.contracts.*\n\ninternal object EmptySet : Set, Serializable {\n private const val serialVersionUID: Long = 3406603774387020532\n\n override fun equals(other: Any?): Boolean = other is Set<*> && other.isEmpty()\n override fun hashCode(): Int = 0\n override fun toString(): String = \"[]\"\n\n override val size: Int get() = 0\n override fun isEmpty(): Boolean = true\n override fun contains(element: Nothing): Boolean = false\n override fun containsAll(elements: Collection): Boolean = elements.isEmpty()\n\n override fun iterator(): Iterator = EmptyIterator\n\n private fun readResolve(): Any = EmptySet\n}\n\n\n/**\n * Returns an empty read-only set. The returned set is serializable (JVM).\n * @sample samples.collections.Collections.Sets.emptyReadOnlySet\n */\npublic fun emptySet(): Set = EmptySet\n\n/**\n * Returns a new read-only set with the given elements.\n * Elements of the set are iterated in the order they were specified.\n * The returned set is serializable (JVM).\n * @sample samples.collections.Collections.Sets.readOnlySet\n */\npublic fun setOf(vararg elements: T): Set = if (elements.size > 0) elements.toSet() else emptySet()\n\n/**\n * Returns an empty read-only set. The returned set is serializable (JVM).\n * @sample samples.collections.Collections.Sets.emptyReadOnlySet\n */\n@kotlin.internal.InlineOnly\npublic inline fun setOf(): Set = emptySet()\n\n/**\n * Returns an empty new [MutableSet].\n *\n * The returned set preserves the element iteration order.\n * @sample samples.collections.Collections.Sets.emptyMutableSet\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun mutableSetOf(): MutableSet = LinkedHashSet()\n\n/**\n * Returns a new [MutableSet] with the given elements.\n * Elements of the set are iterated in the order they were specified.\n * @sample samples.collections.Collections.Sets.mutableSet\n */\npublic fun mutableSetOf(vararg elements: T): MutableSet = elements.toCollection(LinkedHashSet(mapCapacity(elements.size)))\n\n/** Returns an empty new [HashSet]. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun hashSetOf(): HashSet = HashSet()\n\n/** Returns a new [HashSet] with the given elements. */\npublic fun hashSetOf(vararg elements: T): HashSet = elements.toCollection(HashSet(mapCapacity(elements.size)))\n\n/**\n * Returns an empty new [LinkedHashSet].\n * @sample samples.collections.Collections.Sets.emptyLinkedHashSet\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun linkedSetOf(): LinkedHashSet = LinkedHashSet()\n\n/**\n * Returns a new [LinkedHashSet] with the given elements.\n * Elements of the set are iterated in the order they were specified.\n * @sample samples.collections.Collections.Sets.linkedHashSet\n */\npublic fun linkedSetOf(vararg elements: T): LinkedHashSet = elements.toCollection(LinkedHashSet(mapCapacity(elements.size)))\n\n/**\n * Builds a new read-only [Set] by populating a [MutableSet] using the given [builderAction]\n * and returning a read-only set with the same elements.\n *\n * The set passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * Elements of the set are iterated in the order they were added by the [builderAction].\n *\n * @sample samples.collections.Builders.Sets.buildSetSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildSet(@BuilderInference builderAction: MutableSet.() -> Unit): Set {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return LinkedHashSet().apply(builderAction)\n}\n\n/**\n * Builds a new read-only [Set] by populating a [MutableSet] using the given [builderAction]\n * and returning a read-only set with the same elements.\n *\n * The set passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * [capacity] is used to hint the expected number of elements added in the [builderAction].\n *\n * Elements of the set are iterated in the order they were added by the [builderAction].\n *\n * @throws IllegalArgumentException if the given [capacity] is negative.\n *\n * @sample samples.collections.Builders.Sets.buildSetSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildSet(capacity: Int, @BuilderInference builderAction: MutableSet.() -> Unit): Set {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n checkBuilderCapacity(capacity)\n return LinkedHashSet(mapCapacity(capacity)).apply(builderAction)\n}\n\n\n/** Returns this Set if it's not `null` and the empty set otherwise. */\n@kotlin.internal.InlineOnly\npublic inline fun Set?.orEmpty(): Set = this ?: emptySet()\n\ninternal fun Set.optimizeReadOnlySet() = when (size) {\n 0 -> emptySet()\n 1 -> setOf(iterator().next())\n else -> this\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.properties\n\nimport kotlin.reflect.KProperty\n\n/**\n * Standard property delegates.\n */\npublic object Delegates {\n /**\n * Returns a property delegate for a read/write property with a non-`null` value that is initialized not during\n * object construction time but at a later time. Trying to read the property before the initial value has been\n * assigned results in an exception.\n *\n * @sample samples.properties.Delegates.notNullDelegate\n */\n public fun notNull(): ReadWriteProperty = NotNullVar()\n\n /**\n * Returns a property delegate for a read/write property that calls a specified callback function when changed.\n * @param initialValue the initial value of the property.\n * @param onChange the callback which is called after the change of the property is made. The value of the property\n * has already been changed when this callback is invoked.\n *\n * @sample samples.properties.Delegates.observableDelegate\n */\n public inline fun observable(initialValue: T, crossinline onChange: (property: KProperty<*>, oldValue: T, newValue: T) -> Unit):\n ReadWriteProperty =\n object : ObservableProperty(initialValue) {\n override fun afterChange(property: KProperty<*>, oldValue: T, newValue: T) = onChange(property, oldValue, newValue)\n }\n\n /**\n * Returns a property delegate for a read/write property that calls a specified callback function when changed,\n * allowing the callback to veto the modification.\n * @param initialValue the initial value of the property.\n * @param onChange the callback which is called before a change to the property value is attempted.\n * The value of the property hasn't been changed yet, when this callback is invoked.\n * If the callback returns `true` the value of the property is being set to the new value,\n * and if the callback returns `false` the new value is discarded and the property remains its old value.\n *\n * @sample samples.properties.Delegates.vetoableDelegate\n * @sample samples.properties.Delegates.throwVetoableDelegate\n */\n public inline fun vetoable(initialValue: T, crossinline onChange: (property: KProperty<*>, oldValue: T, newValue: T) -> Boolean):\n ReadWriteProperty =\n object : ObservableProperty(initialValue) {\n override fun beforeChange(property: KProperty<*>, oldValue: T, newValue: T): Boolean = onChange(property, oldValue, newValue)\n }\n\n}\n\n\nprivate class NotNullVar() : ReadWriteProperty {\n private var value: T? = null\n\n public override fun getValue(thisRef: Any?, property: KProperty<*>): T {\n return value ?: throw IllegalStateException(\"Property ${property.name} should be initialized before get.\")\n }\n\n public override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) {\n this.value = value\n }\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"MapsKt\")\n@file:UseExperimental(kotlin.experimental.ExperimentalTypeInference::class)\n\npackage kotlin.collections\n\nimport kotlin.contracts.*\n\nprivate object EmptyMap : Map, Serializable {\n private const val serialVersionUID: Long = 8246714829545688274\n\n override fun equals(other: Any?): Boolean = other is Map<*, *> && other.isEmpty()\n override fun hashCode(): Int = 0\n override fun toString(): String = \"{}\"\n\n override val size: Int get() = 0\n override fun isEmpty(): Boolean = true\n\n override fun containsKey(key: Any?): Boolean = false\n override fun containsValue(value: Nothing): Boolean = false\n override fun get(key: Any?): Nothing? = null\n override val entries: Set> get() = EmptySet\n override val keys: Set get() = EmptySet\n override val values: Collection get() = EmptyList\n\n private fun readResolve(): Any = EmptyMap\n}\n\n/**\n * Returns an empty read-only map of specified type.\n *\n * The returned map is serializable (JVM).\n * @sample samples.collections.Maps.Instantiation.emptyReadOnlyMap\n */\npublic fun emptyMap(): Map = @Suppress(\"UNCHECKED_CAST\") (EmptyMap as Map)\n\n/**\n * Returns a new read-only map with the specified contents, given as a list of pairs\n * where the first value is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * The returned map is serializable (JVM).\n *\n * @sample samples.collections.Maps.Instantiation.mapFromPairs\n */\npublic fun mapOf(vararg pairs: Pair): Map =\n if (pairs.size > 0) pairs.toMap(LinkedHashMap(mapCapacity(pairs.size))) else emptyMap()\n\n/**\n * Returns an empty read-only map.\n *\n * The returned map is serializable (JVM).\n * @sample samples.collections.Maps.Instantiation.emptyReadOnlyMap\n */\n@kotlin.internal.InlineOnly\npublic inline fun mapOf(): Map = emptyMap()\n\n/**\n * Returns an empty new [MutableMap].\n *\n * The returned map preserves the entry iteration order.\n * @sample samples.collections.Maps.Instantiation.emptyMutableMap\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun mutableMapOf(): MutableMap = LinkedHashMap()\n\n/**\n * Returns a new [MutableMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * @sample samples.collections.Maps.Instantiation.mutableMapFromPairs\n * @sample samples.collections.Maps.Instantiation.emptyMutableMap\n */\npublic fun mutableMapOf(vararg pairs: Pair): MutableMap =\n LinkedHashMap(mapCapacity(pairs.size)).apply { putAll(pairs) }\n\n/**\n * Returns an empty new [HashMap].\n *\n * @sample samples.collections.Maps.Instantiation.emptyHashMap\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun hashMapOf(): HashMap = HashMap()\n\n/**\n * Returns a new [HashMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * @sample samples.collections.Maps.Instantiation.hashMapFromPairs\n */\npublic fun hashMapOf(vararg pairs: Pair): HashMap = HashMap(mapCapacity(pairs.size)).apply { putAll(pairs) }\n\n/**\n * Returns an empty new [LinkedHashMap].\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun linkedMapOf(): LinkedHashMap = LinkedHashMap()\n\n/**\n * Returns a new [LinkedHashMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * @sample samples.collections.Maps.Instantiation.linkedMapFromPairs\n */\npublic fun linkedMapOf(vararg pairs: Pair): LinkedHashMap = pairs.toMap(LinkedHashMap(mapCapacity(pairs.size)))\n\n/**\n * Builds a new read-only [Map] by populating a [MutableMap] using the given [builderAction]\n * and returning a read-only map with the same key-value pairs.\n *\n * The map passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * Entries of the map are iterated in the order they were added by the [builderAction].\n *\n * @sample samples.collections.Builders.Maps.buildMapSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildMap(@BuilderInference builderAction: MutableMap.() -> Unit): Map {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return LinkedHashMap().apply(builderAction)\n}\n\n/**\n * Builds a new read-only [Map] by populating a [MutableMap] using the given [builderAction]\n * and returning a read-only map with the same key-value pairs.\n *\n * The map passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * [capacity] is used to hint the expected number of pairs added in the [builderAction].\n *\n * Entries of the map are iterated in the order they were added by the [builderAction].\n *\n * @throws IllegalArgumentException if the given [capacity] is negative.\n *\n * @sample samples.collections.Builders.Maps.buildMapSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildMap(capacity: Int, @BuilderInference builderAction: MutableMap.() -> Unit): Map {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n checkBuilderCapacity(capacity)\n return LinkedHashMap(mapCapacity(capacity)).apply(builderAction)\n}\n\n/**\n * Calculate the initial capacity of a map.\n */\n@PublishedApi\ninternal expect fun mapCapacity(expectedSize: Int): Int\n\n/**\n * Checks a collection builder function capacity argument.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@PublishedApi\ninternal expect fun checkBuilderCapacity(capacity: Int)\n\n/**\n * Returns `true` if this map is not empty.\n * @sample samples.collections.Maps.Usage.mapIsNotEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.isNotEmpty(): Boolean = !isEmpty()\n\n/**\n * Returns `true` if this nullable map is either null or empty.\n * @sample samples.collections.Maps.Usage.mapIsNullOrEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Map?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || isEmpty()\n}\n\n/**\n * Returns the [Map] if its not `null`, or the empty [Map] otherwise.\n *\n * @sample samples.collections.Maps.Usage.mapOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map?.orEmpty(): Map = this ?: emptyMap()\n\n/**\n * Returns this map if it's not empty\n * or the result of calling [defaultValue] function if the map is empty.\n *\n * @sample samples.collections.Maps.Usage.mapIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun M.ifEmpty(defaultValue: () -> R): R where M : Map<*, *>, M : R =\n if (isEmpty()) defaultValue() else this\n\n/**\n * Checks if the map contains the given key.\n *\n * This method allows to use the `x in map` syntax for checking whether an object is contained in the map.\n *\n * @sample samples.collections.Maps.Usage.containsKey\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <@kotlin.internal.OnlyInputTypes K, V> Map.contains(key: K): Boolean = containsKey(key)\n\n/**\n * Returns the value corresponding to the given [key], or `null` if such a key is not present in the map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <@kotlin.internal.OnlyInputTypes K, V> Map.get(key: K): V? =\n @Suppress(\"UNCHECKED_CAST\") (this as Map).get(key)\n\n/**\n * Allows to use the index operator for storing values in a mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.set(key: K, value: V): Unit {\n put(key, value)\n}\n\n/**\n * Returns `true` if the map contains the specified [key].\n *\n * Allows to overcome type-safety restriction of `containsKey` that requires to pass a key of type `K`.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes K> Map.containsKey(key: K): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as Map).containsKey(key)\n\n/**\n * Returns `true` if the map maps one or more keys to the specified [value].\n *\n * Allows to overcome type-safety restriction of `containsValue` that requires to pass a value of type `V`.\n *\n * @sample samples.collections.Maps.Usage.containsValue\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\n@kotlin.internal.InlineOnly\npublic inline fun Map.containsValue(value: V): Boolean = this.containsValue(value)\n\n\n/**\n * Removes the specified key and its corresponding value from this map.\n *\n * @return the previous value associated with the key, or `null` if the key was not present in the map.\n\n * Allows to overcome type-safety restriction of `remove` that requires to pass a key of type `K`.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes K, V> MutableMap.remove(key: K): V? =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableMap).remove(key)\n\n/**\n * Returns the key component of the map entry.\n *\n * This method allows to use destructuring declarations when working with maps, for example:\n * ```\n * for ((key, value) in map) {\n * // do something with the key and the value\n * }\n * ```\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Map.Entry.component1(): K = key\n\n/**\n * Returns the value component of the map entry.\n *\n * This method allows to use destructuring declarations when working with maps, for example:\n * ```\n * for ((key, value) in map) {\n * // do something with the key and the value\n * }\n * ```\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Map.Entry.component2(): V = value\n\n/**\n * Converts entry to [Pair] with key being first component and value being second.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.Entry.toPair(): Pair = Pair(key, value)\n\n/**\n * Returns the value for the given key, or the result of the [defaultValue] function if there was no entry for the given key.\n *\n * @sample samples.collections.Maps.Usage.getOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.getOrElse(key: K, defaultValue: () -> V): V = get(key) ?: defaultValue()\n\n\ninternal inline fun Map.getOrElseNullable(key: K, defaultValue: () -> V): V {\n val value = get(key)\n if (value == null && !containsKey(key)) {\n return defaultValue()\n } else {\n @Suppress(\"UNCHECKED_CAST\")\n return value as V\n }\n}\n\n/**\n * Returns the value for the given [key] or throws an exception if there is no such key in the map.\n *\n * If the map was created by [withDefault], resorts to its `defaultValue` provider function\n * instead of throwing an exception.\n *\n * @throws NoSuchElementException when the map doesn't contain a value for the specified key and\n * no implicit default value was provided for that map.\n */\n@SinceKotlin(\"1.1\")\npublic fun Map.getValue(key: K): V = getOrImplicitDefault(key)\n\n/**\n * Returns the value for the given key. If the key is not found in the map, calls the [defaultValue] function,\n * puts its result into the map under the given key and returns it.\n *\n * Note that the operation is not guaranteed to be atomic if the map is being modified concurrently.\n *\n * @sample samples.collections.Maps.Usage.getOrPut\n */\npublic inline fun MutableMap.getOrPut(key: K, defaultValue: () -> V): V {\n val value = get(key)\n return if (value == null) {\n val answer = defaultValue()\n put(key, answer)\n answer\n } else {\n value\n }\n}\n\n/**\n * Returns an [Iterator] over the entries in the [Map].\n *\n * @sample samples.collections.Maps.Usage.forOverEntries\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Map.iterator(): Iterator> = entries.iterator()\n\n/**\n * Returns a [MutableIterator] over the mutable entries in the [MutableMap].\n *\n */\n@kotlin.jvm.JvmName(\"mutableIterator\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.iterator(): MutableIterator> = entries.iterator()\n\n/**\n * Populates the given [destination] map with entries having the keys of this map and the values obtained\n * by applying the [transform] function to each entry in this [Map].\n */\npublic inline fun > Map.mapValuesTo(destination: M, transform: (Map.Entry) -> R): M {\n return entries.associateByTo(destination, { it.key }, transform)\n}\n\n/**\n * Populates the given [destination] map with entries having the keys obtained\n * by applying the [transform] function to each entry in this [Map] and the values of this map.\n *\n * In case if any two entries are mapped to the equal keys, the value of the latter one will overwrite\n * the value associated with the former one.\n */\npublic inline fun > Map.mapKeysTo(destination: M, transform: (Map.Entry) -> R): M {\n return entries.associateByTo(destination, transform, { it.value })\n}\n\n/**\n * Puts all the given [pairs] into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun MutableMap.putAll(pairs: Array>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Puts all the elements of the given collection into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun MutableMap.putAll(pairs: Iterable>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Puts all the elements of the given sequence into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun MutableMap.putAll(pairs: Sequence>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Returns a new map with entries having the keys of this map and the values obtained by applying the [transform]\n * function to each entry in this [Map].\n *\n * The returned map preserves the entry iteration order of the original map.\n *\n * @sample samples.collections.Maps.Transformations.mapValues\n */\npublic inline fun Map.mapValues(transform: (Map.Entry) -> R): Map {\n return mapValuesTo(LinkedHashMap(mapCapacity(size)), transform) // .optimizeReadOnlyMap()\n}\n\n/**\n * Returns a new Map with entries having the keys obtained by applying the [transform] function to each entry in this\n * [Map] and the values of this map.\n *\n * In case if any two entries are mapped to the equal keys, the value of the latter one will overwrite\n * the value associated with the former one.\n *\n * The returned map preserves the entry iteration order of the original map.\n *\n * @sample samples.collections.Maps.Transformations.mapKeys\n */\npublic inline fun Map.mapKeys(transform: (Map.Entry) -> R): Map {\n return mapKeysTo(LinkedHashMap(mapCapacity(size)), transform) // .optimizeReadOnlyMap()\n}\n\n/**\n * Returns a map containing all key-value pairs with keys matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterKeys\n */\npublic inline fun Map.filterKeys(predicate: (K) -> Boolean): Map {\n val result = LinkedHashMap()\n for (entry in this) {\n if (predicate(entry.key)) {\n result.put(entry.key, entry.value)\n }\n }\n return result\n}\n\n/**\n * Returns a map containing all key-value pairs with values matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterValues\n */\npublic inline fun Map.filterValues(predicate: (V) -> Boolean): Map {\n val result = LinkedHashMap()\n for (entry in this) {\n if (predicate(entry.value)) {\n result.put(entry.key, entry.value)\n }\n }\n return result\n}\n\n\n/**\n * Appends all entries matching the given [predicate] into the mutable map given as [destination] parameter.\n *\n * @return the destination map.\n * @sample samples.collections.Maps.Filtering.filterTo\n */\npublic inline fun > Map.filterTo(destination: M, predicate: (Map.Entry) -> Boolean): M {\n for (element in this) {\n if (predicate(element)) {\n destination.put(element.key, element.value)\n }\n }\n return destination\n}\n\n/**\n * Returns a new map containing all key-value pairs matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filter\n */\npublic inline fun Map.filter(predicate: (Map.Entry) -> Boolean): Map {\n return filterTo(LinkedHashMap(), predicate)\n}\n\n/**\n * Appends all entries not matching the given [predicate] into the given [destination].\n *\n * @return the destination map.\n * @sample samples.collections.Maps.Filtering.filterNotTo\n */\npublic inline fun > Map.filterNotTo(destination: M, predicate: (Map.Entry) -> Boolean): M {\n for (element in this) {\n if (!predicate(element)) {\n destination.put(element.key, element.value)\n }\n }\n return destination\n}\n\n/**\n * Returns a new map containing all key-value pairs not matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterNot\n */\npublic inline fun Map.filterNot(predicate: (Map.Entry) -> Boolean): Map {\n return filterNotTo(LinkedHashMap(), predicate)\n}\n\n/**\n * Returns a new map containing all key-value pairs from the given collection of pairs.\n *\n * The returned map preserves the entry iteration order of the original collection.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun Iterable>.toMap(): Map {\n if (this is Collection) {\n return when (size) {\n 0 -> emptyMap()\n 1 -> mapOf(if (this is List) this[0] else iterator().next())\n else -> toMap(LinkedHashMap(mapCapacity(size)))\n }\n }\n return toMap(LinkedHashMap()).optimizeReadOnlyMap()\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given collection of pairs.\n */\npublic fun > Iterable>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new map containing all key-value pairs from the given array of pairs.\n *\n * The returned map preserves the entry iteration order of the original array.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun Array>.toMap(): Map = when (size) {\n 0 -> emptyMap()\n 1 -> mapOf(this[0])\n else -> toMap(LinkedHashMap(mapCapacity(size)))\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given array of pairs.\n */\npublic fun > Array>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new map containing all key-value pairs from the given sequence of pairs.\n *\n * The returned map preserves the entry iteration order of the original sequence.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun Sequence>.toMap(): Map = toMap(LinkedHashMap()).optimizeReadOnlyMap()\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given sequence of pairs.\n */\npublic fun > Sequence>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new read-only map containing all key-value pairs from the original map.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic fun Map.toMap(): Map = when (size) {\n 0 -> emptyMap()\n 1 -> toSingletonMap()\n else -> toMutableMap()\n}\n\n/**\n * Returns a new mutable map containing all key-value pairs from the original map.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic fun Map.toMutableMap(): MutableMap = LinkedHashMap(this)\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given map.\n */\n@SinceKotlin(\"1.1\")\npublic fun > Map.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Creates a new read-only map by replacing or adding an entry to this map from a given key-value [pair].\n *\n * The returned map preserves the entry iteration order of the original map.\n * The [pair] is iterated in the end if it has a unique key.\n */\npublic operator fun Map.plus(pair: Pair): Map =\n if (this.isEmpty()) mapOf(pair) else LinkedHashMap(this).apply { put(pair.first, pair.second) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given collection of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] collection.\n */\npublic operator fun Map.plus(pairs: Iterable>): Map =\n if (this.isEmpty()) pairs.toMap() else LinkedHashMap(this).apply { putAll(pairs) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given array of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] array.\n */\npublic operator fun Map.plus(pairs: Array>): Map =\n if (this.isEmpty()) pairs.toMap() else LinkedHashMap(this).apply { putAll(pairs) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given sequence of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] sequence.\n */\npublic operator fun Map.plus(pairs: Sequence>): Map =\n LinkedHashMap(this).apply { putAll(pairs) }.optimizeReadOnlyMap()\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from another [map].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those entries of another [map] that are missing in this map are iterated in the end in the order of that [map].\n */\npublic operator fun Map.plus(map: Map): Map =\n LinkedHashMap(this).apply { putAll(map) }\n\n\n/**\n * Appends or replaces the given [pair] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pair: Pair) {\n put(pair.first, pair.second)\n}\n\n/**\n * Appends or replaces all pairs from the given collection of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pairs: Iterable>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all pairs from the given array of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pairs: Array>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all pairs from the given sequence of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pairs: Sequence>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all entries from the given [map] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(map: Map) {\n putAll(map)\n}\n\n/**\n * Returns a map containing all entries of the original map except the entry with the given [key].\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(key: K): Map =\n this.toMutableMap().apply { minusAssign(key) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] collection.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(keys: Iterable): Map =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] array.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(keys: Array): Map =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] sequence.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(keys: Sequence): Map =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Removes the entry with the given [key] from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(key: K) {\n remove(key)\n}\n\n/**\n * Removes all entries the keys of which are contained in the given [keys] collection from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(keys: Iterable) {\n this.keys.removeAll(keys)\n}\n\n/**\n * Removes all entries the keys of which are contained in the given [keys] array from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(keys: Array) {\n this.keys.removeAll(keys)\n}\n\n/**\n * Removes all entries from the keys of which are contained in the given [keys] sequence from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(keys: Sequence) {\n this.keys.removeAll(keys)\n}\n\n\n// do not expose for now @PublishedApi\ninternal fun Map.optimizeReadOnlyMap() = when (size) {\n 0 -> emptyMap()\n 1 -> toSingletonMapOrSelf()\n else -> this\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n@file:UseExperimental(kotlin.experimental.ExperimentalTypeInference::class)\n\npackage kotlin.collections\n\nimport kotlin.contracts.*\n\ninternal object EmptyIterator : ListIterator {\n override fun hasNext(): Boolean = false\n override fun hasPrevious(): Boolean = false\n override fun nextIndex(): Int = 0\n override fun previousIndex(): Int = -1\n override fun next(): Nothing = throw NoSuchElementException()\n override fun previous(): Nothing = throw NoSuchElementException()\n}\n\ninternal object EmptyList : List, Serializable, RandomAccess {\n private const val serialVersionUID: Long = -7390468764508069838L\n\n override fun equals(other: Any?): Boolean = other is List<*> && other.isEmpty()\n override fun hashCode(): Int = 1\n override fun toString(): String = \"[]\"\n\n override val size: Int get() = 0\n override fun isEmpty(): Boolean = true\n override fun contains(element: Nothing): Boolean = false\n override fun containsAll(elements: Collection): Boolean = elements.isEmpty()\n\n override fun get(index: Int): Nothing = throw IndexOutOfBoundsException(\"Empty list doesn't contain element at index $index.\")\n override fun indexOf(element: Nothing): Int = -1\n override fun lastIndexOf(element: Nothing): Int = -1\n\n override fun iterator(): Iterator = EmptyIterator\n override fun listIterator(): ListIterator = EmptyIterator\n override fun listIterator(index: Int): ListIterator {\n if (index != 0) throw IndexOutOfBoundsException(\"Index: $index\")\n return EmptyIterator\n }\n\n override fun subList(fromIndex: Int, toIndex: Int): List {\n if (fromIndex == 0 && toIndex == 0) return this\n throw IndexOutOfBoundsException(\"fromIndex: $fromIndex, toIndex: $toIndex\")\n }\n\n private fun readResolve(): Any = EmptyList\n}\n\ninternal fun Array.asCollection(): Collection = ArrayAsCollection(this, isVarargs = false)\n\nprivate class ArrayAsCollection(val values: Array, val isVarargs: Boolean) : Collection {\n override val size: Int get() = values.size\n override fun isEmpty(): Boolean = values.isEmpty()\n override fun contains(element: T): Boolean = values.contains(element)\n override fun containsAll(elements: Collection): Boolean = elements.all { contains(it) }\n override fun iterator(): Iterator = values.iterator()\n // override hidden toArray implementation to prevent copying of values array\n public fun toArray(): Array = values.copyToArrayOfAny(isVarargs)\n}\n\n/**\n * Returns an empty read-only list. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.emptyReadOnlyList\n */\npublic fun emptyList(): List = EmptyList\n\n/**\n * Returns a new read-only list of given elements. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.readOnlyList\n */\npublic fun listOf(vararg elements: T): List = if (elements.size > 0) elements.asList() else emptyList()\n\n/**\n * Returns an empty read-only list. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.emptyReadOnlyList\n */\n@kotlin.internal.InlineOnly\npublic inline fun listOf(): List = emptyList()\n\n/**\n * Returns an empty new [MutableList].\n * @sample samples.collections.Collections.Lists.emptyMutableList\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun mutableListOf(): MutableList = ArrayList()\n\n/**\n * Returns an empty new [ArrayList].\n * @sample samples.collections.Collections.Lists.emptyArrayList\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun arrayListOf(): ArrayList = ArrayList()\n\n/**\n * Returns a new [MutableList] with the given elements.\n * @sample samples.collections.Collections.Lists.mutableList\n */\npublic fun mutableListOf(vararg elements: T): MutableList =\n if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))\n\n/**\n * Returns a new [ArrayList] with the given elements.\n * @sample samples.collections.Collections.Lists.arrayList\n */\npublic fun arrayListOf(vararg elements: T): ArrayList =\n if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))\n\n/**\n * Returns a new read-only list either of single given element, if it is not null, or empty list if the element is null. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.listOfNotNull\n */\npublic fun listOfNotNull(element: T?): List = if (element != null) listOf(element) else emptyList()\n\n/**\n * Returns a new read-only list only of those given elements, that are not null. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.listOfNotNull\n */\npublic fun listOfNotNull(vararg elements: T?): List = elements.filterNotNull()\n\n/**\n * Creates a new read-only list with the specified [size], where each element is calculated by calling the specified\n * [init] function.\n *\n * The function [init] is called for each list element sequentially starting from the first one.\n * It should return the value for a list element given its index.\n *\n * @sample samples.collections.Collections.Lists.readOnlyListFromInitializer\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun List(size: Int, init: (index: Int) -> T): List = MutableList(size, init)\n\n/**\n * Creates a new mutable list with the specified [size], where each element is calculated by calling the specified\n * [init] function.\n *\n * The function [init] is called for each list element sequentially starting from the first one.\n * It should return the value for a list element given its index.\n *\n * @sample samples.collections.Collections.Lists.mutableListFromInitializer\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun MutableList(size: Int, init: (index: Int) -> T): MutableList {\n val list = ArrayList(size)\n repeat(size) { index -> list.add(init(index)) }\n return list\n}\n\n/**\n * Builds a new read-only [List] by populating a [MutableList] using the given [builderAction]\n * and returning a read-only list with the same elements.\n *\n * The list passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * @sample samples.collections.Builders.Lists.buildListSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildList(@BuilderInference builderAction: MutableList.() -> Unit): List {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return ArrayList().apply(builderAction)\n}\n\n/**\n * Builds a new read-only [List] by populating a [MutableList] using the given [builderAction]\n * and returning a read-only list with the same elements.\n *\n * The list passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * [capacity] is used to hint the expected number of elements added in the [builderAction].\n *\n * @throws IllegalArgumentException if the given [capacity] is negative.\n *\n * @sample samples.collections.Builders.Lists.buildListSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildList(capacity: Int, @BuilderInference builderAction: MutableList.() -> Unit): List {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n checkBuilderCapacity(capacity)\n return ArrayList(capacity).apply(builderAction)\n}\n\n\n/**\n * Returns an [IntRange] of the valid indices for this collection.\n * @sample samples.collections.Collections.Collections.indicesOfCollection\n */\npublic val Collection<*>.indices: IntRange\n get() = 0..size - 1\n\n/**\n * Returns the index of the last item in the list or -1 if the list is empty.\n *\n * @sample samples.collections.Collections.Lists.lastIndexOfList\n */\npublic val List.lastIndex: Int\n get() = this.size - 1\n\n/**\n * Returns `true` if the collection is not empty.\n * @sample samples.collections.Collections.Collections.collectionIsNotEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection.isNotEmpty(): Boolean = !isEmpty()\n\n/**\n * Returns `true` if this nullable collection is either null or empty.\n * @sample samples.collections.Collections.Collections.collectionIsNullOrEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Collection?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || this.isEmpty()\n}\n\n/**\n * Returns this Collection if it's not `null` and the empty list otherwise.\n * @sample samples.collections.Collections.Collections.collectionOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection?.orEmpty(): Collection = this ?: emptyList()\n\n/**\n * Returns this List if it's not `null` and the empty list otherwise.\n * @sample samples.collections.Collections.Lists.listOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun List?.orEmpty(): List = this ?: emptyList()\n\n/**\n * Returns this collection if it's not empty\n * or the result of calling [defaultValue] function if the collection is empty.\n *\n * @sample samples.collections.Collections.Collections.collectionIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun C.ifEmpty(defaultValue: () -> R): R where C : Collection<*>, C : R =\n if (isEmpty()) defaultValue() else this\n\n\n/**\n * Checks if all elements in the specified collection are contained in this collection.\n *\n * Allows to overcome type-safety restriction of `containsAll` that requires to pass a collection of type `Collection`.\n * @sample samples.collections.Collections.Collections.collectionContainsAll\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> Collection.containsAll(elements: Collection): Boolean = this.containsAll(elements)\n\ninternal fun List.optimizeReadOnlyList() = when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this\n}\n\n/**\n * Searches this list or its range for the provided [element] using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the Comparable natural ordering of its elements,\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements equal to the specified [element], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchOnComparable\n * @sample samples.collections.Collections.Lists.binarySearchWithBoundaries\n */\npublic fun > List.binarySearch(element: T?, fromIndex: Int = 0, toIndex: Int = size): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = compareValues(midVal, element)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Searches this list or its range for the provided [element] using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the specified [comparator],\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements equal to the specified [element], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted according to the specified [comparator].\n * @sample samples.collections.Collections.Lists.binarySearchWithComparator\n */\npublic fun List.binarySearch(element: T, comparator: Comparator, fromIndex: Int = 0, toIndex: Int = size): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = comparator.compare(midVal, element)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Searches this list or its range for an element having the key returned by the specified [selector] function\n * equal to the provided [key] value using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the Comparable natural ordering of keys of its elements.\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements with the specified [key], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element with the specified [key], if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchByKey\n */\npublic inline fun > List.binarySearchBy(\n key: K?,\n fromIndex: Int = 0,\n toIndex: Int = size,\n crossinline selector: (T) -> K?\n): Int =\n binarySearch(fromIndex, toIndex) { compareValues(selector(it), key) }\n\n// do not introduce this overload --- too rare\n//public fun List.binarySearchBy(key: K, comparator: Comparator, fromIndex: Int = 0, toIndex: Int = size(), selector: (T) -> K): Int =\n// binarySearch(fromIndex, toIndex) { comparator.compare(selector(it), key) }\n\n\n/**\n * Searches this list or its range for an element for which the given [comparison] function returns zero using the binary search algorithm.\n *\n * The list is expected to be sorted so that the signs of the [comparison] function's return values ascend on the list elements,\n * i.e. negative values come before zero and zeroes come before positive values.\n * Otherwise, the result is undefined.\n *\n * If the list contains multiple elements for which [comparison] returns zero, there is no guarantee which one will be found.\n *\n * @param comparison function that returns zero when called on the list element being searched.\n * On the elements coming before the target element, the function must return negative values;\n * on the elements coming after the target element, the function must return positive values.\n *\n * @return the index of the found element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchWithComparisonFunction\n */\npublic fun List.binarySearch(fromIndex: Int = 0, toIndex: Int = size, comparison: (T) -> Int): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = comparison(midVal)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Checks that `from` and `to` are in\n * the range of [0..size] and throws an appropriate exception, if they aren't.\n */\nprivate fun rangeCheck(size: Int, fromIndex: Int, toIndex: Int) {\n when {\n fromIndex > toIndex -> throw IllegalArgumentException(\"fromIndex ($fromIndex) is greater than toIndex ($toIndex).\")\n fromIndex < 0 -> throw IndexOutOfBoundsException(\"fromIndex ($fromIndex) is less than zero.\")\n toIndex > size -> throw IndexOutOfBoundsException(\"toIndex ($toIndex) is greater than size ($size).\")\n }\n}\n\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal expect fun checkIndexOverflow(index: Int): Int\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal expect fun checkCountOverflow(count: Int): Int\n\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun throwIndexOverflow() { throw ArithmeticException(\"Index overflow has happened.\") }\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun throwCountOverflow() { throw ArithmeticException(\"Count overflow has happened.\") }\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"PreconditionsKt\")\n\npackage kotlin\n\nimport kotlin.contracts.contract\n\n/**\n * Throws an [IllegalArgumentException] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failRequireWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun require(value: Boolean): Unit {\n contract {\n returns() implies value\n }\n require(value) { \"Failed requirement.\" }\n}\n\n/**\n * Throws an [IllegalArgumentException] with the result of calling [lazyMessage] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failRequireWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun require(value: Boolean, lazyMessage: () -> Any): Unit {\n contract {\n returns() implies value\n }\n if (!value) {\n val message = lazyMessage()\n throw IllegalArgumentException(message.toString())\n }\n}\n\n/**\n * Throws an [IllegalArgumentException] if the [value] is null. Otherwise returns the not null value.\n */\n@kotlin.internal.InlineOnly\npublic inline fun requireNotNull(value: T?): T {\n contract {\n returns() implies (value != null)\n }\n return requireNotNull(value) { \"Required value was null.\" }\n}\n\n/**\n * Throws an [IllegalArgumentException] with the result of calling [lazyMessage] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failRequireWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun requireNotNull(value: T?, lazyMessage: () -> Any): T {\n contract {\n returns() implies (value != null)\n }\n\n if (value == null) {\n val message = lazyMessage()\n throw IllegalArgumentException(message.toString())\n } else {\n return value\n }\n}\n\n/**\n * Throws an [IllegalStateException] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun check(value: Boolean): Unit {\n contract {\n returns() implies value\n }\n check(value) { \"Check failed.\" }\n}\n\n/**\n * Throws an [IllegalStateException] with the result of calling [lazyMessage] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun check(value: Boolean, lazyMessage: () -> Any): Unit {\n contract {\n returns() implies value\n }\n if (!value) {\n val message = lazyMessage()\n throw IllegalStateException(message.toString())\n }\n}\n\n/**\n * Throws an [IllegalStateException] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun checkNotNull(value: T?): T {\n contract {\n returns() implies (value != null)\n }\n return checkNotNull(value) { \"Required value was null.\" }\n}\n\n/**\n * Throws an [IllegalStateException] with the result of calling [lazyMessage] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun checkNotNull(value: T?, lazyMessage: () -> Any): T {\n contract {\n returns() implies (value != null)\n }\n\n if (value == null) {\n val message = lazyMessage()\n throw IllegalStateException(message.toString())\n } else {\n return value\n }\n}\n\n\n/**\n * Throws an [IllegalStateException] with the given [message].\n *\n * @sample samples.misc.Preconditions.failWithError\n */\n@kotlin.internal.InlineOnly\npublic inline fun error(message: Any): Nothing = throw IllegalStateException(message.toString())\n",null,null,null,"/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns 1st *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 1.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component1(): T {\n return get(0)\n}\n\n/**\n * Returns 2nd *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 2.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component2(): T {\n return get(1)\n}\n\n/**\n * Returns 3rd *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 3.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component3(): T {\n return get(2)\n}\n\n/**\n * Returns 4th *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 4.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component4(): T {\n return get(3)\n}\n\n/**\n * Returns 5th *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 5.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component5(): T {\n return get(4)\n}\n\n/**\n * Returns `true` if [element] is found in the collection.\n */\npublic operator fun <@kotlin.internal.OnlyInputTypes T> Iterable.contains(element: T): Boolean {\n if (this is Collection)\n return contains(element)\n return indexOf(element) >= 0\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic fun Iterable.elementAt(index: Int): T {\n if (this is List)\n return get(index)\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"Collection doesn't contain element at index $index.\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.elementAt(index: Int): T {\n return get(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\npublic fun Iterable.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n if (this is List)\n return this.getOrElse(index, defaultValue)\n if (index < 0)\n return defaultValue(index)\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\npublic fun Iterable.elementAtOrNull(index: Int): T? {\n if (this is List)\n return this.getOrNull(index)\n if (index < 0)\n return null\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.elementAtOrNull(index: Int): T? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.find(predicate: (T) -> Boolean): T? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the collection is empty.\n */\npublic fun Iterable.first(): T {\n when (this) {\n is List -> return this.first()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n return iterator.next()\n }\n }\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the list is empty.\n */\npublic fun List.first(): T {\n if (isEmpty())\n throw NoSuchElementException(\"List is empty.\")\n return this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun Iterable.first(predicate: (T) -> Boolean): T {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element, or `null` if the collection is empty.\n */\npublic fun Iterable.firstOrNull(): T? {\n when (this) {\n is List -> {\n if (isEmpty())\n return null\n else\n return this[0]\n }\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n return iterator.next()\n }\n }\n}\n\n/**\n * Returns the first element, or `null` if the list is empty.\n */\npublic fun List.firstOrNull(): T? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun Iterable.firstOrNull(predicate: (T) -> Boolean): T? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this list.\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.getOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this list.\n */\npublic fun List.getOrNull(index: Int): T? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns first index of [element], or -1 if the collection does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Iterable.indexOf(element: T): Int {\n if (this is List) return this.indexOf(element)\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the list does not contain element.\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\npublic fun <@kotlin.internal.OnlyInputTypes T> List.indexOf(element: T): Int {\n return indexOf(element)\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the collection does not contain such element.\n */\npublic inline fun Iterable.indexOfFirst(predicate: (T) -> Boolean): Int {\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the list does not contain such element.\n */\npublic inline fun List.indexOfFirst(predicate: (T) -> Boolean): Int {\n var index = 0\n for (item in this) {\n if (predicate(item))\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the collection does not contain such element.\n */\npublic inline fun Iterable.indexOfLast(predicate: (T) -> Boolean): Int {\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the list does not contain such element.\n */\npublic inline fun List.indexOfLast(predicate: (T) -> Boolean): Int {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n if (predicate(iterator.previous())) {\n return iterator.nextIndex()\n }\n }\n return -1\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the collection is empty.\n */\npublic fun Iterable.last(): T {\n when (this) {\n is List -> return this.last()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n }\n }\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the list is empty.\n */\npublic fun List.last(): T {\n if (isEmpty())\n throw NoSuchElementException(\"List is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun Iterable.last(predicate: (T) -> Boolean): T {\n var last: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n last = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return last as T\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun List.last(predicate: (T) -> Boolean): T {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n val element = iterator.previous()\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"List contains no element matching the predicate.\")\n}\n\n/**\n * Returns last index of [element], or -1 if the collection does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Iterable.lastIndexOf(element: T): Int {\n if (this is List) return this.lastIndexOf(element)\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns last index of [element], or -1 if the list does not contain element.\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\npublic fun <@kotlin.internal.OnlyInputTypes T> List.lastIndexOf(element: T): Int {\n return lastIndexOf(element)\n}\n\n/**\n * Returns the last element, or `null` if the collection is empty.\n */\npublic fun Iterable.lastOrNull(): T? {\n when (this) {\n is List -> return if (isEmpty()) null else this[size - 1]\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n }\n }\n}\n\n/**\n * Returns the last element, or `null` if the list is empty.\n */\npublic fun List.lastOrNull(): T? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun Iterable.lastOrNull(predicate: (T) -> Boolean): T? {\n var last: T? = null\n for (element in this) {\n if (predicate(element)) {\n last = element\n }\n }\n return last\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun List.lastOrNull(predicate: (T) -> Boolean): T? {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n val element = iterator.previous()\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns a random element from this collection.\n * \n * @throws NoSuchElementException if this collection is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Collection.random(): T {\n return random(Random)\n}\n\n/**\n * Returns a random element from this collection using the specified source of randomness.\n * \n * @throws NoSuchElementException if this collection is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun Collection.random(random: Random): T {\n if (isEmpty())\n throw NoSuchElementException(\"Collection is empty.\")\n return elementAt(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this collection, or `null` if this collection is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun Collection.randomOrNull(): T? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this collection using the specified source of randomness, or `null` if this collection is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun Collection.randomOrNull(random: Random): T? {\n if (isEmpty())\n return null\n return elementAt(random.nextInt(size))\n}\n\n/**\n * Returns the single element, or throws an exception if the collection is empty or has more than one element.\n */\npublic fun Iterable.single(): T {\n when (this) {\n is List -> return this.single()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n val single = iterator.next()\n if (iterator.hasNext())\n throw IllegalArgumentException(\"Collection has more than one element.\")\n return single\n }\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the list is empty or has more than one element.\n */\npublic fun List.single(): T {\n return when (size) {\n 0 -> throw NoSuchElementException(\"List is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"List has more than one element.\")\n }\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun Iterable.single(predicate: (T) -> Boolean): T {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Collection contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as T\n}\n\n/**\n * Returns single element, or `null` if the collection is empty or has more than one element.\n */\npublic fun Iterable.singleOrNull(): T? {\n when (this) {\n is List -> return if (size == 1) this[0] else null\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n val single = iterator.next()\n if (iterator.hasNext())\n return null\n return single\n }\n }\n}\n\n/**\n * Returns single element, or `null` if the list is empty or has more than one element.\n */\npublic fun List.singleOrNull(): T? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun Iterable.singleOrNull(predicate: (T) -> Boolean): T? {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun Iterable.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return toList()\n val list: ArrayList\n if (this is Collection<*>) {\n val resultSize = size - n\n if (resultSize <= 0)\n return emptyList()\n if (resultSize == 1)\n return listOf(last())\n list = ArrayList(resultSize)\n if (this is List) {\n if (this is RandomAccess) {\n for (index in n until size)\n list.add(this[index])\n } else {\n for (item in listIterator(n))\n list.add(item)\n }\n return list\n }\n }\n else {\n list = ArrayList()\n }\n var count = 0\n for (item in this) {\n if (count >= n) list.add(item) else ++count\n }\n return list.optimizeReadOnlyList()\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun List.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun List.dropLastWhile(predicate: (T) -> Boolean): List {\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n if (!predicate(iterator.previous())) {\n return take(iterator.nextIndex() + 1)\n }\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun Iterable.dropWhile(predicate: (T) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun Iterable.filter(predicate: (T) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun Iterable.filterIndexed(predicate: (index: Int, T) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > Iterable.filterIndexedTo(destination: C, predicate: (index: Int, T) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Returns a list containing all elements that are instances of specified type parameter R.\n */\npublic inline fun Iterable<*>.filterIsInstance(): List<@kotlin.internal.NoInfer R> {\n return filterIsInstanceTo(ArrayList())\n}\n\n/**\n * Appends all elements that are instances of specified type parameter R to the given [destination].\n */\npublic inline fun > Iterable<*>.filterIsInstanceTo(destination: C): C {\n for (element in this) if (element is R) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun Iterable.filterNot(predicate: (T) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements that are not `null`.\n * \n * @sample samples.collections.Collections.Filtering.filterNotNull\n */\npublic fun Iterable.filterNotNull(): List {\n return filterNotNullTo(ArrayList())\n}\n\n/**\n * Appends all elements that are not `null` to the given [destination].\n */\npublic fun , T : Any> Iterable.filterNotNullTo(destination: C): C {\n for (element in this) if (element != null) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > Iterable.filterNotTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > Iterable.filterTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun List.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return this.subList(indices.start, indices.endInclusive + 1).toList()\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun List.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun Iterable.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (this is Collection) {\n if (n >= size) return toList()\n if (n == 1) return listOf(first())\n }\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list.optimizeReadOnlyList()\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun List.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(last())\n val list = ArrayList(n)\n if (this is RandomAccess) {\n for (index in size - n until size)\n list.add(this[index])\n } else {\n for (item in listIterator(size - n))\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun List.takeLastWhile(predicate: (T) -> Boolean): List {\n if (isEmpty())\n return emptyList()\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n if (!predicate(iterator.previous())) {\n iterator.next()\n val expectedSize = size - iterator.nextIndex()\n if (expectedSize == 0) return emptyList()\n return ArrayList(expectedSize).apply {\n while (iterator.hasNext())\n add(iterator.next())\n }\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun Iterable.takeWhile(predicate: (T) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Reverses elements in the list in-place.\n */\npublic expect fun MutableList.reverse(): Unit\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun Iterable.reversed(): List {\n if (this is Collection && size <= 1) return toList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Sorts elements in the list in-place according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > MutableList.sortBy(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareBy(selector))\n}\n\n/**\n * Sorts elements in the list in-place descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > MutableList.sortByDescending(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareByDescending(selector))\n}\n\n/**\n * Sorts elements in the list in-place descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > MutableList.sortDescending(): Unit {\n sortWith(reverseOrder())\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Iterable.sorted(): List {\n if (this is Collection) {\n if (size <= 1) return this.toList()\n @Suppress(\"UNCHECKED_CAST\")\n return (toTypedArray>() as Array).apply { sort() }.asList()\n }\n return toMutableList().apply { sort() }\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Iterable.sortedBy(crossinline selector: (T) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Iterable.sortedByDescending(crossinline selector: (T) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Iterable.sortedDescending(): List {\n return sortedWith(reverseOrder())\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun Iterable.sortedWith(comparator: Comparator): List {\n if (this is Collection) {\n if (size <= 1) return this.toList()\n @Suppress(\"UNCHECKED_CAST\")\n return (toTypedArray() as Array).apply { sortWith(comparator) }.asList()\n }\n return toMutableList().apply { sortWith(comparator) }\n}\n\n/**\n * Returns an array of Boolean containing all of the elements of this collection.\n */\npublic fun Collection.toBooleanArray(): BooleanArray {\n val result = BooleanArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Byte containing all of the elements of this collection.\n */\npublic fun Collection.toByteArray(): ByteArray {\n val result = ByteArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Char containing all of the elements of this collection.\n */\npublic fun Collection.toCharArray(): CharArray {\n val result = CharArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Double containing all of the elements of this collection.\n */\npublic fun Collection.toDoubleArray(): DoubleArray {\n val result = DoubleArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Float containing all of the elements of this collection.\n */\npublic fun Collection.toFloatArray(): FloatArray {\n val result = FloatArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Int containing all of the elements of this collection.\n */\npublic fun Collection.toIntArray(): IntArray {\n val result = IntArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Long containing all of the elements of this collection.\n */\npublic fun Collection.toLongArray(): LongArray {\n val result = LongArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Short containing all of the elements of this collection.\n */\npublic fun Collection.toShortArray(): ShortArray {\n val result = ShortArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given collection.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associate\n */\npublic inline fun Iterable.associate(transform: (T) -> Pair): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing the elements from the given collection indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associateBy\n */\npublic inline fun Iterable.associateBy(keySelector: (T) -> K): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given collection.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associateByWithValueTransform\n */\npublic inline fun Iterable.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given collection\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Collections.Transformations.associateByTo\n */\npublic inline fun > Iterable.associateByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given collection.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Collections.Transformations.associateByToWithValueTransform\n */\npublic inline fun > Iterable.associateByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given collection.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Collections.Transformations.associateTo\n */\npublic inline fun > Iterable.associateTo(destination: M, transform: (T) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Returns a [Map] where keys are elements from the given collection and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.3\")\npublic inline fun Iterable.associateWith(valueSelector: (K) -> V): Map {\n val result = LinkedHashMap(mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16))\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given collection,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n * \n * @sample samples.collections.Collections.Transformations.associateWithTo\n */\n@SinceKotlin(\"1.3\")\npublic inline fun > Iterable.associateWithTo(destination: M, valueSelector: (K) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > Iterable.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun Iterable.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(collectionSizeOrDefault(12))))\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun Iterable.toList(): List {\n if (this is Collection) {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(if (this is List) get(0) else iterator().next())\n else -> this.toMutableList()\n }\n }\n return this.toMutableList().optimizeReadOnlyList()\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this collection.\n */\npublic fun Iterable.toMutableList(): MutableList {\n if (this is Collection)\n return this.toMutableList()\n return toCollection(ArrayList())\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this collection.\n */\npublic fun Collection.toMutableList(): MutableList {\n return ArrayList(this)\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic fun Iterable.toSet(): Set {\n if (this is Collection) {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(if (this is List) this[0] else iterator().next())\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n }\n return toCollection(LinkedHashSet()).optimizeReadOnlySet()\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original collection.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun Iterable.flatMap(transform: (T) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original collection, to the given [destination].\n */\npublic inline fun > Iterable.flatMapTo(destination: C, transform: (T) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups elements of the original collection by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original collection.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun Iterable.groupBy(keySelector: (T) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original collection\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original collection.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun Iterable.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups elements of the original collection by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> Iterable.groupByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original collection\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> Iterable.groupByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Creates a [Grouping] source from a collection to be used later with one of group-and-fold operations\n * using the specified [keySelector] function to extract a key from each element.\n * \n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Iterable.groupingBy(crossinline keySelector: (T) -> K): Grouping {\n return object : Grouping {\n override fun sourceIterator(): Iterator = this@groupingBy.iterator()\n override fun keyOf(element: T): K = keySelector(element)\n }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original collection.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun Iterable.map(transform: (T) -> R): List {\n return mapTo(ArrayList(collectionSizeOrDefault(10)), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original collection.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Iterable.mapIndexed(transform: (index: Int, T) -> R): List {\n return mapIndexedTo(ArrayList(collectionSizeOrDefault(10)), transform)\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element and its index in the original collection.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Iterable.mapIndexedNotNull(transform: (index: Int, T) -> R?): List {\n return mapIndexedNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original collection\n * and appends only the non-null results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Iterable.mapIndexedNotNullTo(destination: C, transform: (index: Int, T) -> R?): C {\n forEachIndexed { index, element -> transform(index, element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original collection\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Iterable.mapIndexedTo(destination: C, transform: (index: Int, T) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(checkIndexOverflow(index++), item))\n return destination\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element in the original collection.\n */\npublic inline fun Iterable.mapNotNull(transform: (T) -> R?): List {\n return mapNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element in the original collection\n * and appends only the non-null results to the given [destination].\n */\npublic inline fun > Iterable.mapNotNullTo(destination: C, transform: (T) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original collection\n * and appends the results to the given [destination].\n */\npublic inline fun > Iterable.mapTo(destination: C, transform: (T) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original collection\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun Iterable.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a list containing only distinct elements from the given collection.\n * \n * The elements in the resulting list are in the same order as they were in the source collection.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun Iterable.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only elements from the given collection\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source collection.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun Iterable.distinctBy(selector: (T) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a set containing all elements that are contained by both this collection and the specified collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun Iterable.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this collection and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic infix fun Iterable.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic fun Iterable.toMutableSet(): MutableSet {\n return when (this) {\n is Collection -> LinkedHashSet(this)\n else -> toCollection(LinkedHashSet())\n }\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original collection.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun Iterable.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun Iterable.all(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return true\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if collection has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun Iterable.any(): Boolean {\n if (this is Collection) return !isEmpty()\n return iterator().hasNext()\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun Iterable.any(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return false\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of elements in this collection.\n */\npublic fun Iterable.count(): Int {\n if (this is Collection) return size\n var count = 0\n for (element in this) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Returns the number of elements in this collection.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun Iterable.count(predicate: (T) -> Boolean): Int {\n if (this is Collection && isEmpty()) return 0\n var count = 0\n for (element in this) if (predicate(element)) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun Iterable.fold(initial: R, operation: (acc: R, T) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original collection.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun Iterable.foldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(checkIndexOverflow(index++), accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun List.foldRight(initial: R, operation: (T, acc: R) -> R): R {\n var accumulator = initial\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n accumulator = operation(iterator.previous(), accumulator)\n }\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original list and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun List.foldRightIndexed(initial: R, operation: (index: Int, T, acc: R) -> R): R {\n var accumulator = initial\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n val index = iterator.previousIndex()\n accumulator = operation(index, iterator.previous(), accumulator)\n }\n }\n return accumulator\n}\n\n/**\n * Performs the given [action] on each element.\n */\n@kotlin.internal.HidesMembers\npublic inline fun Iterable.forEach(action: (T) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun Iterable.forEachIndexed(action: (index: Int, T) -> Unit): Unit {\n var index = 0\n for (item in this) action(checkIndexOverflow(index++), item)\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Iterable.max(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n if (max.isNaN()) return max\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Iterable.max(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n if (max.isNaN()) return max\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun > Iterable.max(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > Iterable.maxBy(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxElem = iterator.next()\n if (!iterator.hasNext()) return maxElem\n var maxValue = selector(maxElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n } while (iterator.hasNext())\n return maxElem\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun Iterable.maxWith(comparator: Comparator): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Iterable.min(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n if (min.isNaN()) return min\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Iterable.min(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n if (min.isNaN()) return min\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun > Iterable.min(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > Iterable.minBy(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minElem = iterator.next()\n if (!iterator.hasNext()) return minElem\n var minValue = selector(minElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n } while (iterator.hasNext())\n return minElem\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun Iterable.minWith(comparator: Comparator): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the collection has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun Iterable.none(): Boolean {\n if (this is Collection) return isEmpty()\n return !iterator().hasNext()\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun Iterable.none(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return true\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Performs the given [action] on each element and returns the collection itself afterwards.\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > C.onEach(action: (T) -> Unit): C {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun Iterable.reduce(operation: (acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty collection can't be reduced.\")\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original collection.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun Iterable.reduceIndexed(operation: (index: Int, acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty collection can't be reduced.\")\n var index = 1\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(checkIndexOverflow(index++), accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the collection is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Iterable.reduceOrNull(operation: (acc: S, T) -> S): S? {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return null\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun List.reduceRight(operation: (T, acc: S) -> S): S {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n throw UnsupportedOperationException(\"Empty list can't be reduced.\")\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n accumulator = operation(iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original list and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun List.reduceRightIndexed(operation: (index: Int, T, acc: S) -> S): S {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n throw UnsupportedOperationException(\"Empty list can't be reduced.\")\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n val index = iterator.previousIndex()\n accumulator = operation(index, iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the list is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun List.reduceRightOrNull(operation: (T, acc: S) -> S): S? {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n return null\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n accumulator = operation(iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Iterable.scan(initial: R, operation: (acc: R, T) -> R): List {\n val estimatedSize = collectionSizeOrDefault(9)\n if (estimatedSize == 0) return listOf(initial)\n val result = ArrayList(estimatedSize + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original collection and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Iterable.scanIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): List {\n val estimatedSize = collectionSizeOrDefault(9)\n if (estimatedSize == 0) return listOf(initial)\n val result = ArrayList(estimatedSize + 1).apply { add(initial) }\n var index = 0\n var accumulator = initial\n for (element in this) {\n accumulator = operation(index++, accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this collection.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and the element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Iterable.scanReduce(operation: (acc: S, T) -> S): List {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return emptyList()\n var accumulator: S = iterator.next()\n val result = ArrayList(collectionSizeOrDefault(10)).apply { add(accumulator) }\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original collection and current accumulator value that starts with the first element of this collection.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Iterable.scanReduceIndexed(operation: (index: Int, acc: S, T) -> S): List {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return emptyList()\n var accumulator: S = iterator.next()\n val result = ArrayList(collectionSizeOrDefault(10)).apply { add(accumulator) }\n var index = 1\n while (iterator.hasNext()) {\n accumulator = operation(index++, accumulator, iterator.next())\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\npublic inline fun Iterable.sumBy(selector: (T) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\npublic inline fun Iterable.sumByDouble(selector: (T) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n */\npublic fun Iterable.requireNoNulls(): Iterable {\n for (element in this) {\n if (element == null) {\n throw IllegalArgumentException(\"null element found in $this.\")\n }\n }\n @Suppress(\"UNCHECKED_CAST\")\n return this as Iterable\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n */\npublic fun List.requireNoNulls(): List {\n for (element in this) {\n if (element == null) {\n throw IllegalArgumentException(\"null element found in $this.\")\n }\n }\n @Suppress(\"UNCHECKED_CAST\")\n return this as List\n}\n\n/**\n * Splits this collection into a list of lists each not exceeding the given [size].\n * \n * The last list in the resulting list may have less elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this collection.\n * \n * @sample samples.collections.Collections.Transformations.chunked\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.chunked(size: Int): List> {\n return windowed(size, size, partialWindows = true)\n}\n\n/**\n * Splits this collection into several lists each not exceeding the given [size]\n * and applies the given [transform] function to an each.\n * \n * @return list of results of the [transform] applied to an each list.\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * The last list may have less elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this collection.\n * \n * @sample samples.text.Strings.chunkedTransform\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.chunked(size: Int, transform: (List) -> R): List {\n return windowed(size, size, partialWindows = true, transform = transform)\n}\n\n/**\n * Returns a list containing all elements of the original collection without the first occurrence of the given [element].\n */\npublic operator fun Iterable.minus(element: T): List {\n val result = ArrayList(collectionSizeOrDefault(10))\n var removed = false\n return this.filterTo(result) { if (!removed && it == element) { removed = true; false } else true }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] array.\n * \n * The [elements] array may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Iterable.minus(elements: Array): List {\n if (elements.isEmpty()) return this.toList()\n val other = elements.toHashSet()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] collection.\n * \n * The [elements] collection may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Iterable.minus(elements: Iterable): List {\n val other = elements.convertToSetForSetOperationWith(this)\n if (other.isEmpty())\n return this.toList()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] sequence.\n * \n * The [elements] sequence may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Iterable.minus(elements: Sequence): List {\n val other = elements.toHashSet()\n if (other.isEmpty())\n return this.toList()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection without the first occurrence of the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.minusElement(element: T): List {\n return minus(element)\n}\n\n/**\n * Splits the original collection into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Iterables.Operations.partition\n */\npublic inline fun Iterable.partition(predicate: (T) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\npublic operator fun Iterable.plus(element: T): List {\n if (this is Collection) return this.plus(element)\n val result = ArrayList()\n result.addAll(this)\n result.add(element)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\npublic operator fun Collection.plus(element: T): List {\n val result = ArrayList(size + 1)\n result.addAll(this)\n result.add(element)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] array.\n */\npublic operator fun Iterable.plus(elements: Array): List {\n if (this is Collection) return this.plus(elements)\n val result = ArrayList()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] array.\n */\npublic operator fun Collection.plus(elements: Array): List {\n val result = ArrayList(this.size + elements.size)\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] collection.\n */\npublic operator fun Iterable.plus(elements: Iterable): List {\n if (this is Collection) return this.plus(elements)\n val result = ArrayList()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] collection.\n */\npublic operator fun Collection.plus(elements: Iterable): List {\n if (elements is Collection) {\n val result = ArrayList(this.size + elements.size)\n result.addAll(this)\n result.addAll(elements)\n return result\n } else {\n val result = ArrayList(this)\n result.addAll(elements)\n return result\n }\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] sequence.\n */\npublic operator fun Iterable.plus(elements: Sequence): List {\n val result = ArrayList()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] sequence.\n */\npublic operator fun Collection.plus(elements: Sequence): List {\n val result = ArrayList(this.size + 10)\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.plusElement(element: T): List {\n return plus(element)\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection.plusElement(element: T): List {\n return plus(element)\n}\n\n/**\n * Returns a list of snapshots of the window of the given [size]\n * sliding along this collection with the given [step], where each\n * snapshot is a list.\n * \n * Several last lists may have less elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this collection.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.takeWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false): List> {\n checkWindowSizeStep(size, step)\n if (this is RandomAccess && this is List) {\n val thisSize = this.size\n val resultCapacity = thisSize / step + if (thisSize % step == 0) 0 else 1\n val result = ArrayList>(resultCapacity)\n var index = 0\n while (index in 0 until thisSize) {\n val windowSize = size.coerceAtMost(thisSize - index)\n if (windowSize < size && !partialWindows) break\n result.add(List(windowSize) { this[it + index] })\n index += step\n }\n return result\n }\n val result = ArrayList>()\n windowedIterator(iterator(), size, step, partialWindows, reuseBuffer = false).forEach {\n result.add(it)\n }\n return result\n}\n\n/**\n * Returns a list of results of applying the given [transform] function to\n * an each list representing a view over the window of the given [size]\n * sliding along this collection with the given [step].\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * Several last lists may have less elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this collection.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.averageWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false, transform: (List) -> R): List {\n checkWindowSizeStep(size, step)\n if (this is RandomAccess && this is List) {\n val thisSize = this.size\n val resultCapacity = thisSize / step + if (thisSize % step == 0) 0 else 1\n val result = ArrayList(resultCapacity)\n val window = MovingSubList(this)\n var index = 0\n while (index in 0 until thisSize) {\n val windowSize = size.coerceAtMost(thisSize - index)\n if (!partialWindows && windowSize < size) break\n window.move(index, index + windowSize)\n result.add(transform(window))\n index += step\n }\n return result\n }\n val result = ArrayList()\n windowedIterator(iterator(), size, step, partialWindows, reuseBuffer = true).forEach {\n result.add(transform(it))\n }\n return result\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Iterable.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` collection and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Iterable.zip(other: Array, transform: (a: T, b: R) -> V): List {\n val arraySize = other.size\n val list = ArrayList(minOf(collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in this) {\n if (i >= arraySize) break\n list.add(transform(element, other[i++]))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] collection with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Iterable.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` collection and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Iterable.zip(other: Iterable, transform: (a: T, b: R) -> V): List {\n val first = iterator()\n val second = other.iterator()\n val list = ArrayList(minOf(collectionSizeOrDefault(10), other.collectionSizeOrDefault(10)))\n while (first.hasNext() && second.hasNext()) {\n list.add(transform(first.next(), second.next()))\n }\n return list\n}\n\n/**\n * Returns a list of pairs of each two adjacent elements in this collection.\n * \n * The returned list is empty if this collection contains less than two elements.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNext\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.zipWithNext(): List> {\n return zipWithNext { a, b -> a to b }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to an each pair of two adjacent elements in this collection.\n * \n * The returned list is empty if this collection contains less than two elements.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNextToFindDeltas\n */\n@SinceKotlin(\"1.2\")\npublic inline fun Iterable.zipWithNext(transform: (a: T, b: T) -> R): List {\n val iterator = iterator()\n if (!iterator.hasNext()) return emptyList()\n val result = mutableListOf()\n var current = iterator.next()\n while (iterator.hasNext()) {\n val next = iterator.next()\n result.add(transform(current, next))\n current = next\n }\n return result\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun Iterable.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n buffer.appendElement(element, transform)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun Iterable.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Returns this collection as an [Iterable].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.asIterable(): Iterable {\n return this\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original collection returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromCollection\n */\npublic fun Iterable.asSequence(): Sequence {\n return Sequence { this.iterator() }\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfByte\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfShort\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfInt\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfLong\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfFloat\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfDouble\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfByte\")\npublic fun Iterable.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfShort\")\npublic fun Iterable.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfInt\")\npublic fun Iterable.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfLong\")\npublic fun Iterable.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfFloat\")\npublic fun Iterable.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfDouble\")\npublic fun Iterable.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n",null,null,null,null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"LazyKt\")\n@file:kotlin.jvm.JvmMultifileClass\n\npackage kotlin\n\nimport kotlin.reflect.KProperty\n\n/**\n * Represents a value with lazy initialization.\n *\n * To create an instance of [Lazy] use the [lazy] function.\n */\npublic interface Lazy {\n /**\n * Gets the lazily initialized value of the current Lazy instance.\n * Once the value was initialized it must not change during the rest of lifetime of this Lazy instance.\n */\n public val value: T\n\n /**\n * Returns `true` if a value for this Lazy instance has been already initialized, and `false` otherwise.\n * Once this function has returned `true` it stays `true` for the rest of lifetime of this Lazy instance.\n */\n public fun isInitialized(): Boolean\n}\n\n/**\n * Creates a new instance of the [Lazy] that is already initialized with the specified [value].\n */\npublic fun lazyOf(value: T): Lazy = InitializedLazyImpl(value)\n\n/**\n * An extension to delegate a read-only property of type [T] to an instance of [Lazy].\n *\n * This extension allows to use instances of Lazy for property delegation:\n * `val property: String by lazy { initializer }`\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Lazy.getValue(thisRef: Any?, property: KProperty<*>): T = value\n\n/**\n * Specifies how a [Lazy] instance synchronizes initialization among multiple threads.\n */\npublic enum class LazyThreadSafetyMode {\n\n /**\n * Locks are used to ensure that only a single thread can initialize the [Lazy] instance.\n */\n SYNCHRONIZED,\n\n /**\n * Initializer function can be called several times on concurrent access to uninitialized [Lazy] instance value,\n * but only the first returned value will be used as the value of [Lazy] instance.\n */\n PUBLICATION,\n\n /**\n * No locks are used to synchronize an access to the [Lazy] instance value; if the instance is accessed from multiple threads, its behavior is undefined.\n *\n * This mode should not be used unless the [Lazy] instance is guaranteed never to be initialized from more than one thread.\n */\n NONE,\n}\n\n\ninternal object UNINITIALIZED_VALUE\n\n// internal to be called from lazy in JS\ninternal class UnsafeLazyImpl(initializer: () -> T) : Lazy, Serializable {\n private var initializer: (() -> T)? = initializer\n private var _value: Any? = UNINITIALIZED_VALUE\n\n override val value: T\n get() {\n if (_value === UNINITIALIZED_VALUE) {\n _value = initializer!!()\n initializer = null\n }\n @Suppress(\"UNCHECKED_CAST\")\n return _value as T\n }\n\n override fun isInitialized(): Boolean = _value !== UNINITIALIZED_VALUE\n\n override fun toString(): String = if (isInitialized()) value.toString() else \"Lazy value not initialized yet.\"\n\n private fun writeReplace(): Any = InitializedLazyImpl(value)\n}\n\ninternal class InitializedLazyImpl(override val value: T) : Lazy, Serializable {\n\n override fun isInitialized(): Boolean = true\n\n override fun toString(): String = value.toString()\n\n}\n",null,null,null,null,null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n\npackage kotlin.text\n\nimport kotlin.contracts.contract\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trim(predicate: (Char) -> Boolean): CharSequence {\n var startIndex = 0\n var endIndex = length - 1\n var startFound = false\n\n while (startIndex <= endIndex) {\n val index = if (!startFound) startIndex else endIndex\n val match = predicate(this[index])\n\n if (!startFound) {\n if (!match)\n startFound = true\n else\n startIndex += 1\n } else {\n if (!match)\n break\n else\n endIndex -= 1\n }\n }\n\n return subSequence(startIndex, endIndex + 1)\n}\n\n/**\n * Returns a string having leading and trailing characters matching the [predicate] removed.\n */\npublic inline fun String.trim(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trim(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trimStart(predicate: (Char) -> Boolean): CharSequence {\n for (index in this.indices)\n if (!predicate(this[index]))\n return subSequence(index, length)\n\n return \"\"\n}\n\n/**\n * Returns a string having leading characters matching the [predicate] removed.\n */\npublic inline fun String.trimStart(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trimStart(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having trailing characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trimEnd(predicate: (Char) -> Boolean): CharSequence {\n for (index in this.indices.reversed())\n if (!predicate(this[index]))\n return subSequence(0, index + 1)\n\n return \"\"\n}\n\n/**\n * Returns a string having trailing characters matching the [predicate] removed.\n */\npublic inline fun String.trimEnd(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trimEnd(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing characters from the [chars] array removed.\n */\npublic fun CharSequence.trim(vararg chars: Char): CharSequence = trim { it in chars }\n\n/**\n * Returns a string having leading and trailing characters from the [chars] array removed.\n */\npublic fun String.trim(vararg chars: Char): String = trim { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having leading characters from the [chars] array removed.\n */\npublic fun CharSequence.trimStart(vararg chars: Char): CharSequence = trimStart { it in chars }\n\n/**\n * Returns a string having leading characters from the [chars] array removed.\n */\npublic fun String.trimStart(vararg chars: Char): String = trimStart { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having trailing characters from the [chars] array removed.\n */\npublic fun CharSequence.trimEnd(vararg chars: Char): CharSequence = trimEnd { it in chars }\n\n/**\n * Returns a string having trailing characters from the [chars] array removed.\n */\npublic fun String.trimEnd(vararg chars: Char): String = trimEnd { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing whitespace removed.\n */\npublic fun CharSequence.trim(): CharSequence = trim(Char::isWhitespace)\n\n/**\n * Returns a string having leading and trailing whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trim(): String = (this as CharSequence).trim().toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading whitespace removed.\n */\npublic fun CharSequence.trimStart(): CharSequence = trimStart(Char::isWhitespace)\n\n/**\n * Returns a string having leading whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trimStart(): String = (this as CharSequence).trimStart().toString()\n\n/**\n * Returns a sub sequence of this char sequence having trailing whitespace removed.\n */\npublic fun CharSequence.trimEnd(): CharSequence = trimEnd(Char::isWhitespace)\n\n/**\n * Returns a string having trailing whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trimEnd(): String = (this as CharSequence).trimEnd().toString()\n\n/**\n * Returns a char sequence with content of this char sequence padded at the beginning\n * to the specified [length] with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a char sequence of length at least [length] consisting of `this` char sequence prepended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padStart\n */\npublic fun CharSequence.padStart(length: Int, padChar: Char = ' '): CharSequence {\n if (length < 0)\n throw IllegalArgumentException(\"Desired length $length is less than zero.\")\n if (length <= this.length)\n return this.subSequence(0, this.length)\n\n val sb = StringBuilder(length)\n for (i in 1..(length - this.length))\n sb.append(padChar)\n sb.append(this)\n return sb\n}\n\n/**\n * Pads the string to the specified [length] at the beginning with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a string of length at least [length] consisting of `this` string prepended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padStart\n */\npublic fun String.padStart(length: Int, padChar: Char = ' '): String =\n (this as CharSequence).padStart(length, padChar).toString()\n\n/**\n * Returns a char sequence with content of this char sequence padded at the end\n * to the specified [length] with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a char sequence of length at least [length] consisting of `this` char sequence appended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padEnd\n */\npublic fun CharSequence.padEnd(length: Int, padChar: Char = ' '): CharSequence {\n if (length < 0)\n throw IllegalArgumentException(\"Desired length $length is less than zero.\")\n if (length <= this.length)\n return this.subSequence(0, this.length)\n\n val sb = StringBuilder(length)\n sb.append(this)\n for (i in 1..(length - this.length))\n sb.append(padChar)\n return sb\n}\n\n/**\n * Pads the string to the specified [length] at the end with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a string of length at least [length] consisting of `this` string appended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padEnd\n */\npublic fun String.padEnd(length: Int, padChar: Char = ' '): String =\n (this as CharSequence).padEnd(length, padChar).toString()\n\n/**\n * Returns `true` if this nullable char sequence is either `null` or empty.\n *\n * @sample samples.text.Strings.stringIsNullOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || this.length == 0\n}\n\n/**\n * Returns `true` if this char sequence is empty (contains no characters).\n *\n * @sample samples.text.Strings.stringIsEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isEmpty(): Boolean = length == 0\n\n/**\n * Returns `true` if this char sequence is not empty.\n *\n * @sample samples.text.Strings.stringIsNotEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isNotEmpty(): Boolean = length > 0\n\n// implemented differently in JVM and JS\n//public fun String.isBlank(): Boolean = length() == 0 || all { it.isWhitespace() }\n\n\n/**\n * Returns `true` if this char sequence is not empty and contains some characters except of whitespace characters.\n *\n * @sample samples.text.Strings.stringIsNotBlank\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isNotBlank(): Boolean = !isBlank()\n\n/**\n * Returns `true` if this nullable char sequence is either `null` or empty or consists solely of whitespace characters.\n *\n * @sample samples.text.Strings.stringIsNullOrBlank\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence?.isNullOrBlank(): Boolean {\n contract {\n returns(false) implies (this@isNullOrBlank != null)\n }\n\n return this == null || this.isBlank()\n}\n\n/**\n * Iterator for characters of the given char sequence.\n */\npublic operator fun CharSequence.iterator(): CharIterator = object : CharIterator() {\n private var index = 0\n\n public override fun nextChar(): Char = get(index++)\n\n public override fun hasNext(): Boolean = index < length\n}\n\n/** Returns the string if it is not `null`, or the empty string otherwise. */\n@kotlin.internal.InlineOnly\npublic inline fun String?.orEmpty(): String = this ?: \"\"\n\n/**\n * Returns this char sequence if it's not empty\n * or the result of calling [defaultValue] function if the char sequence is empty.\n *\n * @sample samples.text.Strings.stringIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun C.ifEmpty(defaultValue: () -> R): R where C : CharSequence, C : R =\n if (isEmpty()) defaultValue() else this\n\n/**\n * Returns this char sequence if it is not empty and doesn't consist solely of whitespace characters,\n * or the result of calling [defaultValue] function otherwise.\n *\n * @sample samples.text.Strings.stringIfBlank\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun C.ifBlank(defaultValue: () -> R): R where C : CharSequence, C : R =\n if (isBlank()) defaultValue() else this\n\n/**\n * Returns the range of valid character indices for this char sequence.\n */\npublic val CharSequence.indices: IntRange\n get() = 0..length - 1\n\n/**\n * Returns the index of the last character in the char sequence or -1 if it is empty.\n */\npublic val CharSequence.lastIndex: Int\n get() = this.length - 1\n\n/**\n * Returns `true` if this CharSequence has Unicode surrogate pair at the specified [index].\n */\npublic fun CharSequence.hasSurrogatePairAt(index: Int): Boolean {\n return index in 0..length - 2\n && this[index].isHighSurrogate()\n && this[index + 1].isLowSurrogate()\n}\n\n/**\n * Returns a substring specified by the given [range] of indices.\n */\npublic fun String.substring(range: IntRange): String = substring(range.start, range.endInclusive + 1)\n\n/**\n * Returns a subsequence of this char sequence specified by the given [range] of indices.\n */\npublic fun CharSequence.subSequence(range: IntRange): CharSequence = subSequence(range.start, range.endInclusive + 1)\n\n/**\n * Returns a subsequence of this char sequence.\n *\n * This extension is chosen only for invocation with old-named parameters.\n * Replace parameter names with the same as those of [CharSequence.subSequence].\n */\n@kotlin.internal.InlineOnly\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning\n@Deprecated(\"Use parameters named startIndex and endIndex.\", ReplaceWith(\"subSequence(startIndex = start, endIndex = end)\"))\npublic inline fun String.subSequence(start: Int, end: Int): CharSequence = subSequence(start, end)\n\n/**\n * Returns a substring of chars from a range of this char sequence starting at the [startIndex] and ending right before the [endIndex].\n *\n * @param startIndex the start index (inclusive).\n * @param endIndex the end index (exclusive). If not specified, the length of the char sequence is used.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.substring(startIndex: Int, endIndex: Int = length): String = subSequence(startIndex, endIndex).toString()\n\n/**\n * Returns a substring of chars at indices from the specified [range] of this char sequence.\n */\npublic fun CharSequence.substring(range: IntRange): String = subSequence(range.start, range.endInclusive + 1).toString()\n\n/**\n * Returns a substring before the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBefore(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring before the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBefore(delimiter: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring after the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfter(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + 1, length)\n}\n\n/**\n * Returns a substring after the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfter(delimiter: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + delimiter.length, length)\n}\n\n/**\n * Returns a substring before the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBeforeLast(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring before the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBeforeLast(delimiter: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring after the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfterLast(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + 1, length)\n}\n\n/**\n * Returns a substring after the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfterLast(delimiter: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + delimiter.length, length)\n}\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given range\n * is replaced with the [replacement] char sequence.\n * @param startIndex the index of the first character to be replaced.\n * @param endIndex the index of the first character after the replacement to keep in the string.\n */\n@UseExperimental(ExperimentalStdlibApi::class)\npublic fun CharSequence.replaceRange(startIndex: Int, endIndex: Int, replacement: CharSequence): CharSequence {\n if (endIndex < startIndex)\n throw IndexOutOfBoundsException(\"End index ($endIndex) is less than start index ($startIndex).\")\n val sb = StringBuilder()\n sb.appendRange(this, 0, startIndex)\n sb.append(replacement)\n sb.appendRange(this, endIndex, length)\n return sb\n}\n\n/**\n * Replaces the part of the string at the given range with the [replacement] char sequence.\n * @param startIndex the index of the first character to be replaced.\n * @param endIndex the index of the first character after the replacement to keep in the string.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.replaceRange(startIndex: Int, endIndex: Int, replacement: CharSequence): String =\n (this as CharSequence).replaceRange(startIndex, endIndex, replacement).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given [range]\n * is replaced with the [replacement] char sequence.\n *\n * The end index of the [range] is included in the part to be replaced.\n */\npublic fun CharSequence.replaceRange(range: IntRange, replacement: CharSequence): CharSequence =\n replaceRange(range.start, range.endInclusive + 1, replacement)\n\n/**\n * Replace the part of string at the given [range] with the [replacement] string.\n *\n * The end index of the [range] is included in the part to be replaced.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.replaceRange(range: IntRange, replacement: CharSequence): String =\n (this as CharSequence).replaceRange(range, replacement).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given range is removed.\n *\n * @param startIndex the index of the first character to be removed.\n * @param endIndex the index of the first character after the removed part to keep in the string.\n *\n * [endIndex] is not included in the removed part.\n */\n@UseExperimental(ExperimentalStdlibApi::class)\npublic fun CharSequence.removeRange(startIndex: Int, endIndex: Int): CharSequence {\n if (endIndex < startIndex)\n throw IndexOutOfBoundsException(\"End index ($endIndex) is less than start index ($startIndex).\")\n\n if (endIndex == startIndex)\n return this.subSequence(0, length)\n\n val sb = StringBuilder(length - (endIndex - startIndex))\n sb.appendRange(this, 0, startIndex)\n sb.appendRange(this, endIndex, length)\n return sb\n}\n\n/**\n * Removes the part of a string at a given range.\n * @param startIndex the index of the first character to be removed.\n * @param endIndex the index of the first character after the removed part to keep in the string.\n *\n * [endIndex] is not included in the removed part.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.removeRange(startIndex: Int, endIndex: Int): String =\n (this as CharSequence).removeRange(startIndex, endIndex).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given [range] is removed.\n *\n * The end index of the [range] is included in the removed part.\n */\npublic fun CharSequence.removeRange(range: IntRange): CharSequence = removeRange(range.start, range.endInclusive + 1)\n\n/**\n * Removes the part of a string at the given [range].\n *\n * The end index of the [range] is included in the removed part.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.removeRange(range: IntRange): String =\n (this as CharSequence).removeRange(range).toString()\n\n/**\n * If this char sequence starts with the given [prefix], returns a new char sequence\n * with the prefix removed. Otherwise, returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removePrefix(prefix: CharSequence): CharSequence {\n if (startsWith(prefix)) {\n return subSequence(prefix.length, length)\n }\n return subSequence(0, length)\n}\n\n/**\n * If this string starts with the given [prefix], returns a copy of this string\n * with the prefix removed. Otherwise, returns this string.\n */\npublic fun String.removePrefix(prefix: CharSequence): String {\n if (startsWith(prefix)) {\n return substring(prefix.length)\n }\n return this\n}\n\n/**\n * If this char sequence ends with the given [suffix], returns a new char sequence\n * with the suffix removed. Otherwise, returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSuffix(suffix: CharSequence): CharSequence {\n if (endsWith(suffix)) {\n return subSequence(0, length - suffix.length)\n }\n return subSequence(0, length)\n}\n\n/**\n * If this string ends with the given [suffix], returns a copy of this string\n * with the suffix removed. Otherwise, returns this string.\n */\npublic fun String.removeSuffix(suffix: CharSequence): String {\n if (endsWith(suffix)) {\n return substring(0, length - suffix.length)\n }\n return this\n}\n\n/**\n * When this char sequence starts with the given [prefix] and ends with the given [suffix],\n * returns a new char sequence having both the given [prefix] and [suffix] removed.\n * Otherwise returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSurrounding(prefix: CharSequence, suffix: CharSequence): CharSequence {\n if ((length >= prefix.length + suffix.length) && startsWith(prefix) && endsWith(suffix)) {\n return subSequence(prefix.length, length - suffix.length)\n }\n return subSequence(0, length)\n}\n\n/**\n * Removes from a string both the given [prefix] and [suffix] if and only if\n * it starts with the [prefix] and ends with the [suffix].\n * Otherwise returns this string unchanged.\n */\npublic fun String.removeSurrounding(prefix: CharSequence, suffix: CharSequence): String {\n if ((length >= prefix.length + suffix.length) && startsWith(prefix) && endsWith(suffix)) {\n return substring(prefix.length, length - suffix.length)\n }\n return this\n}\n\n/**\n * When this char sequence starts with and ends with the given [delimiter],\n * returns a new char sequence having this [delimiter] removed both from the start and end.\n * Otherwise returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSurrounding(delimiter: CharSequence): CharSequence = removeSurrounding(delimiter, delimiter)\n\n/**\n * Removes the given [delimiter] string from both the start and the end of this string\n * if and only if it starts with and ends with the [delimiter].\n * Otherwise returns this string unchanged.\n */\npublic fun String.removeSurrounding(delimiter: CharSequence): String = removeSurrounding(delimiter, delimiter)\n\n/**\n * Replace part of string before the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBefore(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string before the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBefore(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string after the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfter(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + 1, length, replacement)\n}\n\n/**\n * Replace part of string after the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfter(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + delimiter.length, length, replacement)\n}\n\n/**\n * Replace part of string after the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfterLast(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + delimiter.length, length, replacement)\n}\n\n/**\n * Replace part of string after the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfterLast(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + 1, length, replacement)\n}\n\n/**\n * Replace part of string before the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBeforeLast(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string before the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBeforeLast(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n\n// public fun String.replace(oldChar: Char, newChar: Char, ignoreCase: Boolean): String // JVM- and JS-specific\n// public fun String.replace(oldValue: String, newValue: String, ignoreCase: Boolean): String // JVM- and JS-specific\n\n/**\n * Returns a new string obtained by replacing each substring of this char sequence that matches the given regular expression\n * with the given [replacement].\n *\n * The [replacement] can consist of any combination of literal text and $-substitutions. To treat the replacement string\n * literally escape it with the [kotlin.text.Regex.Companion.escapeReplacement] method.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replace(regex: Regex, replacement: String): String = regex.replace(this, replacement)\n\n/**\n * Returns a new string obtained by replacing each substring of this char sequence that matches the given regular expression\n * with the result of the given function [transform] that takes [MatchResult] and returns a string to be used as a\n * replacement for that match.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replace(regex: Regex, noinline transform: (MatchResult) -> CharSequence): String =\n regex.replace(this, transform)\n\n/**\n * Replaces the first occurrence of the given regular expression [regex] in this char sequence with specified [replacement] expression.\n *\n * @param replacement A replacement expression that can include substitutions. See [Regex.replaceFirst] for details.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replaceFirst(regex: Regex, replacement: String): String = regex.replaceFirst(this, replacement)\n\n\n/**\n * Returns `true` if this char sequence matches the given regular expression.\n */\n@kotlin.internal.InlineOnly\npublic inline infix fun CharSequence.matches(regex: Regex): Boolean = regex.matches(this)\n\n/**\n * Implementation of [regionMatches] for CharSequences.\n * Invoked when it's already known that arguments are not Strings, so that no additional type checks are performed.\n */\ninternal fun CharSequence.regionMatchesImpl(thisOffset: Int, other: CharSequence, otherOffset: Int, length: Int, ignoreCase: Boolean): Boolean {\n if ((otherOffset < 0) || (thisOffset < 0) || (thisOffset > this.length - length) || (otherOffset > other.length - length)) {\n return false\n }\n\n for (index in 0 until length) {\n if (!this[thisOffset + index].equals(other[otherOffset + index], ignoreCase))\n return false\n }\n return true\n}\n\n/**\n * Returns `true` if this char sequence starts with the specified character.\n */\npublic fun CharSequence.startsWith(char: Char, ignoreCase: Boolean = false): Boolean =\n this.length > 0 && this[0].equals(char, ignoreCase)\n\n/**\n * Returns `true` if this char sequence ends with the specified character.\n */\npublic fun CharSequence.endsWith(char: Char, ignoreCase: Boolean = false): Boolean =\n this.length > 0 && this[lastIndex].equals(char, ignoreCase)\n\n/**\n * Returns `true` if this char sequence starts with the specified prefix.\n */\npublic fun CharSequence.startsWith(prefix: CharSequence, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && prefix is String)\n return this.startsWith(prefix)\n else\n return regionMatchesImpl(0, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if a substring of this char sequence starting at the specified offset [startIndex] starts with the specified prefix.\n */\npublic fun CharSequence.startsWith(prefix: CharSequence, startIndex: Int, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && prefix is String)\n return this.startsWith(prefix, startIndex)\n else\n return regionMatchesImpl(startIndex, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if this char sequence ends with the specified suffix.\n */\npublic fun CharSequence.endsWith(suffix: CharSequence, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && suffix is String)\n return this.endsWith(suffix)\n else\n return regionMatchesImpl(length - suffix.length, suffix, 0, suffix.length, ignoreCase)\n}\n\n\n// common prefix and suffix\n\n/**\n * Returns the longest string `prefix` such that this char sequence and [other] char sequence both start with this prefix,\n * taking care not to split surrogate pairs.\n * If this and [other] have no common prefix, returns the empty string.\n\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @sample samples.text.Strings.commonPrefixWith\n */\npublic fun CharSequence.commonPrefixWith(other: CharSequence, ignoreCase: Boolean = false): String {\n val shortestLength = minOf(this.length, other.length)\n\n var i = 0\n while (i < shortestLength && this[i].equals(other[i], ignoreCase = ignoreCase)) {\n i++\n }\n if (this.hasSurrogatePairAt(i - 1) || other.hasSurrogatePairAt(i - 1)) {\n i--\n }\n return subSequence(0, i).toString()\n}\n\n/**\n * Returns the longest string `suffix` such that this char sequence and [other] char sequence both end with this suffix,\n * taking care not to split surrogate pairs.\n * If this and [other] have no common suffix, returns the empty string.\n\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @sample samples.text.Strings.commonSuffixWith\n */\npublic fun CharSequence.commonSuffixWith(other: CharSequence, ignoreCase: Boolean = false): String {\n val thisLength = this.length\n val otherLength = other.length\n val shortestLength = minOf(thisLength, otherLength)\n\n var i = 0\n while (i < shortestLength && this[thisLength - i - 1].equals(other[otherLength - i - 1], ignoreCase = ignoreCase)) {\n i++\n }\n if (this.hasSurrogatePairAt(thisLength - i - 1) || other.hasSurrogatePairAt(otherLength - i - 1)) {\n i--\n }\n return subSequence(thisLength - i, thisLength).toString()\n}\n\n\n// indexOfAny()\n\n/**\n * Finds the index of the first occurrence of any of the specified [chars] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the first occurrence of matched character from [chars] or -1 if none of [chars] are found.\n *\n */\npublic fun CharSequence.indexOfAny(chars: CharArray, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n if (!ignoreCase && chars.size == 1 && this is String) {\n val char = chars.single()\n return nativeIndexOf(char, startIndex)\n }\n\n for (index in startIndex.coerceAtLeast(0)..lastIndex) {\n val charAtIndex = get(index)\n if (chars.any { it.equals(charAtIndex, ignoreCase) })\n return index\n }\n return -1\n}\n\n/**\n * Finds the index of the last occurrence of any of the specified [chars] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the last occurrence of matched character from [chars] or -1 if none of [chars] are found.\n *\n */\npublic fun CharSequence.lastIndexOfAny(chars: CharArray, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n if (!ignoreCase && chars.size == 1 && this is String) {\n val char = chars.single()\n return nativeLastIndexOf(char, startIndex)\n }\n\n\n for (index in startIndex.coerceAtMost(lastIndex) downTo 0) {\n val charAtIndex = get(index)\n if (chars.any { it.equals(charAtIndex, ignoreCase) })\n return index\n }\n\n return -1\n}\n\n\nprivate fun CharSequence.indexOf(other: CharSequence, startIndex: Int, endIndex: Int, ignoreCase: Boolean, last: Boolean = false): Int {\n val indices = if (!last)\n startIndex.coerceAtLeast(0)..endIndex.coerceAtMost(length)\n else\n startIndex.coerceAtMost(lastIndex) downTo endIndex.coerceAtLeast(0)\n\n if (this is String && other is String) { // smart cast\n for (index in indices) {\n if (other.regionMatches(0, this, index, other.length, ignoreCase))\n return index\n }\n } else {\n for (index in indices) {\n if (other.regionMatchesImpl(0, this, index, other.length, ignoreCase))\n return index\n }\n }\n return -1\n}\n\nprivate fun CharSequence.findAnyOf(strings: Collection, startIndex: Int, ignoreCase: Boolean, last: Boolean): Pair? {\n if (!ignoreCase && strings.size == 1) {\n val string = strings.single()\n val index = if (!last) indexOf(string, startIndex) else lastIndexOf(string, startIndex)\n return if (index < 0) null else index to string\n }\n\n val indices = if (!last) startIndex.coerceAtLeast(0)..length else startIndex.coerceAtMost(lastIndex) downTo 0\n\n if (this is String) {\n for (index in indices) {\n val matchingString = strings.firstOrNull { it.regionMatches(0, this, index, it.length, ignoreCase) }\n if (matchingString != null)\n return index to matchingString\n }\n } else {\n for (index in indices) {\n val matchingString = strings.firstOrNull { it.regionMatchesImpl(0, this, index, it.length, ignoreCase) }\n if (matchingString != null)\n return index to matchingString\n }\n }\n\n return null\n}\n\n/**\n * Finds the first occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return A pair of an index of the first occurrence of matched string from [strings] and the string matched\n * or `null` if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.findAnyOf(strings: Collection, startIndex: Int = 0, ignoreCase: Boolean = false): Pair? =\n findAnyOf(strings, startIndex, ignoreCase, last = false)\n\n/**\n * Finds the last occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return A pair of an index of the last occurrence of matched string from [strings] and the string matched or `null` if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the end toward the beginning of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.findLastAnyOf(strings: Collection, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Pair? =\n findAnyOf(strings, startIndex, ignoreCase, last = true)\n\n/**\n * Finds the index of the first occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the first occurrence of matched string from [strings] or -1 if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.indexOfAny(strings: Collection, startIndex: Int = 0, ignoreCase: Boolean = false): Int =\n findAnyOf(strings, startIndex, ignoreCase, last = false)?.first ?: -1\n\n/**\n * Finds the index of the last occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the last occurrence of matched string from [strings] or -1 if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the end toward the beginning of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.lastIndexOfAny(strings: Collection, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int =\n findAnyOf(strings, startIndex, ignoreCase, last = true)?.first ?: -1\n\n\n// indexOf\n\n/**\n * Returns the index within this string of the first occurrence of the specified character, starting from the specified [startIndex].\n *\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the first occurrence of [char] or -1 if none is found.\n */\npublic fun CharSequence.indexOf(char: Char, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOfAny(charArrayOf(char), startIndex, ignoreCase)\n else\n nativeIndexOf(char, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the first occurrence of the specified [string],\n * starting from the specified [startIndex].\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the first occurrence of [string] or `-1` if none is found.\n * @sample samples.text.Strings.indexOf\n */\npublic fun CharSequence.indexOf(string: String, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOf(string, startIndex, length, ignoreCase)\n else\n nativeIndexOf(string, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the last occurrence of the specified character,\n * starting from the specified [startIndex].\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the last occurrence of [char] or -1 if none is found.\n */\npublic fun CharSequence.lastIndexOf(char: Char, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n lastIndexOfAny(charArrayOf(char), startIndex, ignoreCase)\n else\n nativeLastIndexOf(char, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the last occurrence of the specified [string],\n * starting from the specified [startIndex].\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the last occurrence of [string] or -1 if none is found.\n */\npublic fun CharSequence.lastIndexOf(string: String, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOf(string, startIndex, 0, ignoreCase, last = true)\n else\n nativeLastIndexOf(string, startIndex)\n}\n\n/**\n * Returns `true` if this char sequence contains the specified [other] sequence of characters as a substring.\n *\n * @param ignoreCase `true` to ignore character case when comparing strings. By default `false`.\n */\n@Suppress(\"INAPPLICABLE_OPERATOR_MODIFIER\")\npublic operator fun CharSequence.contains(other: CharSequence, ignoreCase: Boolean = false): Boolean =\n if (other is String)\n indexOf(other, ignoreCase = ignoreCase) >= 0\n else\n indexOf(other, 0, length, ignoreCase) >= 0\n\n\n\n/**\n * Returns `true` if this char sequence contains the specified character [char].\n *\n * @param ignoreCase `true` to ignore character case when comparing characters. By default `false`.\n */\n@Suppress(\"INAPPLICABLE_OPERATOR_MODIFIER\")\npublic operator fun CharSequence.contains(char: Char, ignoreCase: Boolean = false): Boolean =\n indexOf(char, ignoreCase = ignoreCase) >= 0\n\n/**\n * Returns `true` if this char sequence contains at least one match of the specified regular expression [regex].\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharSequence.contains(regex: Regex): Boolean = regex.containsMatchIn(this)\n\n\n// rangesDelimitedBy\n\n\nprivate class DelimitedRangesSequence(\n private val input: CharSequence,\n private val startIndex: Int,\n private val limit: Int,\n private val getNextMatch: CharSequence.(currentIndex: Int) -> Pair?\n) : Sequence {\n\n override fun iterator(): Iterator = object : Iterator {\n var nextState: Int = -1 // -1 for unknown, 0 for done, 1 for continue\n var currentStartIndex: Int = startIndex.coerceIn(0, input.length)\n var nextSearchIndex: Int = currentStartIndex\n var nextItem: IntRange? = null\n var counter: Int = 0\n\n private fun calcNext() {\n if (nextSearchIndex < 0) {\n nextState = 0\n nextItem = null\n } else {\n if (limit > 0 && ++counter >= limit || nextSearchIndex > input.length) {\n nextItem = currentStartIndex..input.lastIndex\n nextSearchIndex = -1\n } else {\n val match = input.getNextMatch(nextSearchIndex)\n if (match == null) {\n nextItem = currentStartIndex..input.lastIndex\n nextSearchIndex = -1\n } else {\n val (index, length) = match\n nextItem = currentStartIndex until index\n currentStartIndex = index + length\n nextSearchIndex = currentStartIndex + if (length == 0) 1 else 0\n }\n }\n nextState = 1\n }\n }\n\n override fun next(): IntRange {\n if (nextState == -1)\n calcNext()\n if (nextState == 0)\n throw NoSuchElementException()\n val result = nextItem as IntRange\n // Clean next to avoid keeping reference on yielded instance\n nextItem = null\n nextState = -1\n return result\n }\n\n override fun hasNext(): Boolean {\n if (nextState == -1)\n calcNext()\n return nextState == 1\n }\n }\n}\n\n/**\n * Returns a sequence of index ranges of substrings in this char sequence around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param startIndex The index to start searching delimiters from.\n * No range having its start value less than [startIndex] is returned.\n * [startIndex] is coerced to be non-negative and not greater than length of this string.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n */\nprivate fun CharSequence.rangesDelimitedBy(delimiters: CharArray, startIndex: Int = 0, ignoreCase: Boolean = false, limit: Int = 0): Sequence {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" })\n\n return DelimitedRangesSequence(this, startIndex, limit, { currentIndex ->\n indexOfAny(delimiters, currentIndex, ignoreCase = ignoreCase).let { if (it < 0) null else it to 1 }\n })\n}\n\n\n/**\n * Returns a sequence of index ranges of substrings in this char sequence around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param startIndex The index to start searching delimiters from.\n * No range having its start value less than [startIndex] is returned.\n * [startIndex] is coerced to be non-negative and not greater than length of this string.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [delimiters]\n * that matches this string at that position.\n */\nprivate fun CharSequence.rangesDelimitedBy(delimiters: Array, startIndex: Int = 0, ignoreCase: Boolean = false, limit: Int = 0): Sequence {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" } )\n val delimitersList = delimiters.asList()\n\n return DelimitedRangesSequence(this, startIndex, limit, { currentIndex -> findAnyOf(delimitersList, currentIndex, ignoreCase = ignoreCase, last = false)?.let { it.first to it.second.length } })\n\n}\n\n\n// split\n\n/**\n * Splits this char sequence to a sequence of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [delimiters]\n * that matches this string at that position.\n */\npublic fun CharSequence.splitToSequence(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): Sequence =\n rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).map { substring(it) }\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and matches at each position the first element in [delimiters]\n * that is equal to a delimiter in this instance at that position.\n */\npublic fun CharSequence.split(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): List {\n if (delimiters.size == 1) {\n val delimiter = delimiters[0]\n if (!delimiter.isEmpty()) {\n return split(delimiter, ignoreCase, limit)\n }\n }\n\n return rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).asIterable().map { substring(it) }\n}\n\n/**\n * Splits this char sequence to a sequence of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\npublic fun CharSequence.splitToSequence(vararg delimiters: Char, ignoreCase: Boolean = false, limit: Int = 0): Sequence =\n rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).map { substring(it) }\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\npublic fun CharSequence.split(vararg delimiters: Char, ignoreCase: Boolean = false, limit: Int = 0): List {\n if (delimiters.size == 1) {\n return split(delimiters[0].toString(), ignoreCase, limit)\n }\n\n return rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).asIterable().map { substring(it) }\n}\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiter].\n * This is specialized version of split which receives single non-empty delimiter and offers better performance\n *\n * @param delimiter String used as delimiter\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\nprivate fun CharSequence.split(delimiter: String, ignoreCase: Boolean, limit: Int): List {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" })\n\n var currentOffset = 0\n var nextIndex = indexOf(delimiter, currentOffset, ignoreCase)\n if (nextIndex == -1 || limit == 1) {\n return listOf(this.toString())\n }\n\n val isLimited = limit > 0\n val result = ArrayList(if (isLimited) limit.coerceAtMost(10) else 10)\n do {\n result.add(substring(currentOffset, nextIndex))\n currentOffset = nextIndex + delimiter.length\n // Do not search for next occurrence if we're reaching limit\n if (isLimited && result.size == limit - 1) break\n nextIndex = indexOf(delimiter, currentOffset, ignoreCase)\n } while (nextIndex != -1)\n\n result.add(substring(currentOffset, length))\n return result\n}\n\n/**\n * Splits this char sequence around matches of the given regular expression.\n *\n * @param limit Non-negative value specifying the maximum number of substrings to return.\n * Zero by default means no limit is set.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.split(regex: Regex, limit: Int = 0): List = regex.split(this, limit)\n\n/**\n * Splits this char sequence to a sequence of lines delimited by any of the following character sequences: CRLF, LF or CR.\n *\n * The lines returned do not include terminating line separators.\n */\npublic fun CharSequence.lineSequence(): Sequence = splitToSequence(\"\\r\\n\", \"\\n\", \"\\r\")\n\n/**\n * Splits this char sequence to a list of lines delimited by any of the following character sequences: CRLF, LF or CR.\n *\n * The lines returned do not include terminating line separators.\n */\npublic fun CharSequence.lines(): List = lineSequence().toList()\n",null,null,null,null,null,null,null,null,"/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"ArraysKt\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component1(): T {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component1(): Byte {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component1(): Short {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component1(): Int {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component1(): Long {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component1(): Float {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component1(): Double {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component1(): Boolean {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component1(): Char {\n return get(0)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component2(): T {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component2(): Byte {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component2(): Short {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component2(): Int {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component2(): Long {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component2(): Float {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component2(): Double {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component2(): Boolean {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component2(): Char {\n return get(1)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component3(): T {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component3(): Byte {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component3(): Short {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component3(): Int {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component3(): Long {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component3(): Float {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component3(): Double {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component3(): Boolean {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component3(): Char {\n return get(2)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component4(): T {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component4(): Byte {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component4(): Short {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component4(): Int {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component4(): Long {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component4(): Float {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component4(): Double {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component4(): Boolean {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component4(): Char {\n return get(3)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component5(): T {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component5(): Byte {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component5(): Short {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component5(): Int {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component5(): Long {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component5(): Float {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component5(): Double {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component5(): Boolean {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component5(): Char {\n return get(4)\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun <@kotlin.internal.OnlyInputTypes T> Array.contains(element: T): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun ByteArray.contains(element: Byte): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun ShortArray.contains(element: Short): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun IntArray.contains(element: Int): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun LongArray.contains(element: Long): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun FloatArray.contains(element: Float): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun DoubleArray.contains(element: Double): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun BooleanArray.contains(element: Boolean): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun CharArray.contains(element: Char): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun Array.elementAt(index: Int): T\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun ByteArray.elementAt(index: Int): Byte\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun ShortArray.elementAt(index: Int): Short\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun IntArray.elementAt(index: Int): Int\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun LongArray.elementAt(index: Int): Long\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun FloatArray.elementAt(index: Int): Float\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun DoubleArray.elementAt(index: Int): Double\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun BooleanArray.elementAt(index: Int): Boolean\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun CharArray.elementAt(index: Int): Char\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Byte): Byte {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Short): Short {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Int): Int {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Long): Long {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Float): Float {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Double): Double {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Boolean): Boolean {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Char): Char {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.elementAtOrNull(index: Int): T? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.elementAtOrNull(index: Int): Byte? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.elementAtOrNull(index: Int): Short? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.elementAtOrNull(index: Int): Int? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.elementAtOrNull(index: Int): Long? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.elementAtOrNull(index: Int): Float? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.elementAtOrNull(index: Int): Double? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.elementAtOrNull(index: Int): Boolean? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.elementAtOrNull(index: Int): Char? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.find(predicate: (T) -> Boolean): T? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.find(predicate: (Byte) -> Boolean): Byte? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.find(predicate: (Short) -> Boolean): Short? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.find(predicate: (Int) -> Boolean): Int? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.find(predicate: (Long) -> Boolean): Long? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.find(predicate: (Float) -> Boolean): Float? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.find(predicate: (Double) -> Boolean): Double? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.find(predicate: (Boolean) -> Boolean): Boolean? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.find(predicate: (Char) -> Boolean): Char? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.findLast(predicate: (Byte) -> Boolean): Byte? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.findLast(predicate: (Short) -> Boolean): Short? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.findLast(predicate: (Int) -> Boolean): Int? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.findLast(predicate: (Long) -> Boolean): Long? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.findLast(predicate: (Float) -> Boolean): Float? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.findLast(predicate: (Double) -> Boolean): Double? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.findLast(predicate: (Boolean) -> Boolean): Boolean? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.findLast(predicate: (Char) -> Boolean): Char? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun Array.first(): T {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ByteArray.first(): Byte {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ShortArray.first(): Short {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun IntArray.first(): Int {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun LongArray.first(): Long {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun FloatArray.first(): Float {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun DoubleArray.first(): Double {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun BooleanArray.first(): Boolean {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun CharArray.first(): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun Array.first(predicate: (T) -> Boolean): T {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ByteArray.first(predicate: (Byte) -> Boolean): Byte {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ShortArray.first(predicate: (Short) -> Boolean): Short {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun IntArray.first(predicate: (Int) -> Boolean): Int {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun LongArray.first(predicate: (Long) -> Boolean): Long {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun FloatArray.first(predicate: (Float) -> Boolean): Float {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun DoubleArray.first(predicate: (Double) -> Boolean): Double {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun BooleanArray.first(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun CharArray.first(predicate: (Char) -> Boolean): Char {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun Array.firstOrNull(): T? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun ByteArray.firstOrNull(): Byte? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun ShortArray.firstOrNull(): Short? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun IntArray.firstOrNull(): Int? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun LongArray.firstOrNull(): Long? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun FloatArray.firstOrNull(): Float? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun DoubleArray.firstOrNull(): Double? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun BooleanArray.firstOrNull(): Boolean? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun CharArray.firstOrNull(): Char? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun Array.firstOrNull(predicate: (T) -> Boolean): T? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun ByteArray.firstOrNull(predicate: (Byte) -> Boolean): Byte? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun ShortArray.firstOrNull(predicate: (Short) -> Boolean): Short? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun IntArray.firstOrNull(predicate: (Int) -> Boolean): Int? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun LongArray.firstOrNull(predicate: (Long) -> Boolean): Long? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun FloatArray.firstOrNull(predicate: (Float) -> Boolean): Float? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun DoubleArray.firstOrNull(predicate: (Double) -> Boolean): Double? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun BooleanArray.firstOrNull(predicate: (Boolean) -> Boolean): Boolean? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun CharArray.firstOrNull(predicate: (Char) -> Boolean): Char? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.getOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.getOrElse(index: Int, defaultValue: (Int) -> Byte): Byte {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.getOrElse(index: Int, defaultValue: (Int) -> Short): Short {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.getOrElse(index: Int, defaultValue: (Int) -> Int): Int {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.getOrElse(index: Int, defaultValue: (Int) -> Long): Long {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.getOrElse(index: Int, defaultValue: (Int) -> Float): Float {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.getOrElse(index: Int, defaultValue: (Int) -> Double): Double {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.getOrElse(index: Int, defaultValue: (Int) -> Boolean): Boolean {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.getOrElse(index: Int, defaultValue: (Int) -> Char): Char {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun Array.getOrNull(index: Int): T? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun ByteArray.getOrNull(index: Int): Byte? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun ShortArray.getOrNull(index: Int): Short? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun IntArray.getOrNull(index: Int): Int? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun LongArray.getOrNull(index: Int): Long? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun FloatArray.getOrNull(index: Int): Float? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun DoubleArray.getOrNull(index: Int): Double? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun BooleanArray.getOrNull(index: Int): Boolean? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun CharArray.getOrNull(index: Int): Char? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Array.indexOf(element: T): Int {\n if (element == null) {\n for (index in indices) {\n if (this[index] == null) {\n return index\n }\n }\n } else {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun ByteArray.indexOf(element: Byte): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun ShortArray.indexOf(element: Short): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun IntArray.indexOf(element: Int): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun LongArray.indexOf(element: Long): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun FloatArray.indexOf(element: Float): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun DoubleArray.indexOf(element: Double): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun BooleanArray.indexOf(element: Boolean): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun CharArray.indexOf(element: Char): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun Array.indexOfFirst(predicate: (T) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ByteArray.indexOfFirst(predicate: (Byte) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ShortArray.indexOfFirst(predicate: (Short) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun IntArray.indexOfFirst(predicate: (Int) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun LongArray.indexOfFirst(predicate: (Long) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun FloatArray.indexOfFirst(predicate: (Float) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun DoubleArray.indexOfFirst(predicate: (Double) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun BooleanArray.indexOfFirst(predicate: (Boolean) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun CharArray.indexOfFirst(predicate: (Char) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun Array.indexOfLast(predicate: (T) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ByteArray.indexOfLast(predicate: (Byte) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ShortArray.indexOfLast(predicate: (Short) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun IntArray.indexOfLast(predicate: (Int) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun LongArray.indexOfLast(predicate: (Long) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun FloatArray.indexOfLast(predicate: (Float) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun DoubleArray.indexOfLast(predicate: (Double) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun BooleanArray.indexOfLast(predicate: (Boolean) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun CharArray.indexOfLast(predicate: (Char) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun Array.last(): T {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ByteArray.last(): Byte {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ShortArray.last(): Short {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun IntArray.last(): Int {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun LongArray.last(): Long {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun FloatArray.last(): Float {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun DoubleArray.last(): Double {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun BooleanArray.last(): Boolean {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun CharArray.last(): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun Array.last(predicate: (T) -> Boolean): T {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ByteArray.last(predicate: (Byte) -> Boolean): Byte {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ShortArray.last(predicate: (Short) -> Boolean): Short {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun IntArray.last(predicate: (Int) -> Boolean): Int {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun LongArray.last(predicate: (Long) -> Boolean): Long {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun FloatArray.last(predicate: (Float) -> Boolean): Float {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun DoubleArray.last(predicate: (Double) -> Boolean): Double {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun BooleanArray.last(predicate: (Boolean) -> Boolean): Boolean {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun CharArray.last(predicate: (Char) -> Boolean): Char {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Array.lastIndexOf(element: T): Int {\n if (element == null) {\n for (index in indices.reversed()) {\n if (this[index] == null) {\n return index\n }\n }\n } else {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun ByteArray.lastIndexOf(element: Byte): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun ShortArray.lastIndexOf(element: Short): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun IntArray.lastIndexOf(element: Int): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun LongArray.lastIndexOf(element: Long): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun FloatArray.lastIndexOf(element: Float): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun DoubleArray.lastIndexOf(element: Double): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun BooleanArray.lastIndexOf(element: Boolean): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun CharArray.lastIndexOf(element: Char): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun Array.lastOrNull(): T? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun ByteArray.lastOrNull(): Byte? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun ShortArray.lastOrNull(): Short? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun IntArray.lastOrNull(): Int? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun LongArray.lastOrNull(): Long? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun FloatArray.lastOrNull(): Float? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun DoubleArray.lastOrNull(): Double? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun BooleanArray.lastOrNull(): Boolean? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun CharArray.lastOrNull(): Char? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun Array.lastOrNull(predicate: (T) -> Boolean): T? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun ByteArray.lastOrNull(predicate: (Byte) -> Boolean): Byte? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun ShortArray.lastOrNull(predicate: (Short) -> Boolean): Short? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun IntArray.lastOrNull(predicate: (Int) -> Boolean): Int? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun LongArray.lastOrNull(predicate: (Long) -> Boolean): Long? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun FloatArray.lastOrNull(predicate: (Float) -> Boolean): Float? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun DoubleArray.lastOrNull(predicate: (Double) -> Boolean): Double? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun BooleanArray.lastOrNull(predicate: (Boolean) -> Boolean): Boolean? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun CharArray.lastOrNull(predicate: (Char) -> Boolean): Char? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Array.random(): T {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.random(): Byte {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.random(): Short {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.random(): Int {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.random(): Long {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.random(): Float {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.random(): Double {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.random(): Boolean {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.random(): Char {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun Array.random(random: Random): T {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun ByteArray.random(random: Random): Byte {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun ShortArray.random(random: Random): Short {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun IntArray.random(random: Random): Int {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun LongArray.random(random: Random): Long {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun FloatArray.random(random: Random): Float {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun DoubleArray.random(random: Random): Double {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun BooleanArray.random(random: Random): Boolean {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun CharArray.random(random: Random): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun Array.randomOrNull(): T? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.randomOrNull(): Byte? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.randomOrNull(): Short? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.randomOrNull(): Int? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.randomOrNull(): Long? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.randomOrNull(): Float? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.randomOrNull(): Double? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.randomOrNull(): Boolean? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.randomOrNull(): Char? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun Array.randomOrNull(random: Random): T? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun ByteArray.randomOrNull(random: Random): Byte? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun ShortArray.randomOrNull(random: Random): Short? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun IntArray.randomOrNull(random: Random): Int? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun LongArray.randomOrNull(random: Random): Long? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun FloatArray.randomOrNull(random: Random): Float? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun DoubleArray.randomOrNull(random: Random): Double? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun BooleanArray.randomOrNull(random: Random): Boolean? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun CharArray.randomOrNull(random: Random): Char? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun Array.single(): T {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun ByteArray.single(): Byte {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun ShortArray.single(): Short {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun IntArray.single(): Int {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun LongArray.single(): Long {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun FloatArray.single(): Float {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun DoubleArray.single(): Double {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun BooleanArray.single(): Boolean {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun CharArray.single(): Char {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun Array.single(predicate: (T) -> Boolean): T {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as T\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun ByteArray.single(predicate: (Byte) -> Boolean): Byte {\n var single: Byte? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Byte\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun ShortArray.single(predicate: (Short) -> Boolean): Short {\n var single: Short? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Short\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun IntArray.single(predicate: (Int) -> Boolean): Int {\n var single: Int? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Int\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun LongArray.single(predicate: (Long) -> Boolean): Long {\n var single: Long? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Long\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun FloatArray.single(predicate: (Float) -> Boolean): Float {\n var single: Float? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Float\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun DoubleArray.single(predicate: (Double) -> Boolean): Double {\n var single: Double? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Double\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun BooleanArray.single(predicate: (Boolean) -> Boolean): Boolean {\n var single: Boolean? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Boolean\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun CharArray.single(predicate: (Char) -> Boolean): Char {\n var single: Char? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Char\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun Array.singleOrNull(): T? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun ByteArray.singleOrNull(): Byte? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun ShortArray.singleOrNull(): Short? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun IntArray.singleOrNull(): Int? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun LongArray.singleOrNull(): Long? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun FloatArray.singleOrNull(): Float? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun DoubleArray.singleOrNull(): Double? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun BooleanArray.singleOrNull(): Boolean? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun CharArray.singleOrNull(): Char? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun Array.singleOrNull(predicate: (T) -> Boolean): T? {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun ByteArray.singleOrNull(predicate: (Byte) -> Boolean): Byte? {\n var single: Byte? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun ShortArray.singleOrNull(predicate: (Short) -> Boolean): Short? {\n var single: Short? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun IntArray.singleOrNull(predicate: (Int) -> Boolean): Int? {\n var single: Int? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun LongArray.singleOrNull(predicate: (Long) -> Boolean): Long? {\n var single: Long? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun FloatArray.singleOrNull(predicate: (Float) -> Boolean): Float? {\n var single: Float? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun DoubleArray.singleOrNull(predicate: (Double) -> Boolean): Double? {\n var single: Double? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun BooleanArray.singleOrNull(predicate: (Boolean) -> Boolean): Boolean? {\n var single: Boolean? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun CharArray.singleOrNull(predicate: (Char) -> Boolean): Char? {\n var single: Char? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun Array.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ByteArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ShortArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun IntArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun LongArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun FloatArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun DoubleArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun BooleanArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun CharArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun Array.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ByteArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ShortArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun IntArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun LongArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun FloatArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun DoubleArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun BooleanArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun CharArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun Array.dropLastWhile(predicate: (T) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ByteArray.dropLastWhile(predicate: (Byte) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ShortArray.dropLastWhile(predicate: (Short) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun IntArray.dropLastWhile(predicate: (Int) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun LongArray.dropLastWhile(predicate: (Long) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun FloatArray.dropLastWhile(predicate: (Float) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun DoubleArray.dropLastWhile(predicate: (Double) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun BooleanArray.dropLastWhile(predicate: (Boolean) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun CharArray.dropLastWhile(predicate: (Char) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun Array.dropWhile(predicate: (T) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ByteArray.dropWhile(predicate: (Byte) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ShortArray.dropWhile(predicate: (Short) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun IntArray.dropWhile(predicate: (Int) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun LongArray.dropWhile(predicate: (Long) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun FloatArray.dropWhile(predicate: (Float) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun DoubleArray.dropWhile(predicate: (Double) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun BooleanArray.dropWhile(predicate: (Boolean) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun CharArray.dropWhile(predicate: (Char) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun Array.filter(predicate: (T) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun ByteArray.filter(predicate: (Byte) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun ShortArray.filter(predicate: (Short) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun IntArray.filter(predicate: (Int) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun LongArray.filter(predicate: (Long) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun FloatArray.filter(predicate: (Float) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun DoubleArray.filter(predicate: (Double) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun BooleanArray.filter(predicate: (Boolean) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun CharArray.filter(predicate: (Char) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun Array.filterIndexed(predicate: (index: Int, T) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun ByteArray.filterIndexed(predicate: (index: Int, Byte) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun ShortArray.filterIndexed(predicate: (index: Int, Short) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun IntArray.filterIndexed(predicate: (index: Int, Int) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun LongArray.filterIndexed(predicate: (index: Int, Long) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun FloatArray.filterIndexed(predicate: (index: Int, Float) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun DoubleArray.filterIndexed(predicate: (index: Int, Double) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun BooleanArray.filterIndexed(predicate: (index: Int, Boolean) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun CharArray.filterIndexed(predicate: (index: Int, Char) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > Array.filterIndexedTo(destination: C, predicate: (index: Int, T) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > ByteArray.filterIndexedTo(destination: C, predicate: (index: Int, Byte) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > ShortArray.filterIndexedTo(destination: C, predicate: (index: Int, Short) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > IntArray.filterIndexedTo(destination: C, predicate: (index: Int, Int) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > LongArray.filterIndexedTo(destination: C, predicate: (index: Int, Long) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > FloatArray.filterIndexedTo(destination: C, predicate: (index: Int, Float) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > DoubleArray.filterIndexedTo(destination: C, predicate: (index: Int, Double) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > BooleanArray.filterIndexedTo(destination: C, predicate: (index: Int, Boolean) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > CharArray.filterIndexedTo(destination: C, predicate: (index: Int, Char) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Returns a list containing all elements that are instances of specified type parameter R.\n */\npublic inline fun Array<*>.filterIsInstance(): List<@kotlin.internal.NoInfer R> {\n return filterIsInstanceTo(ArrayList())\n}\n\n/**\n * Appends all elements that are instances of specified type parameter R to the given [destination].\n */\npublic inline fun > Array<*>.filterIsInstanceTo(destination: C): C {\n for (element in this) if (element is R) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun Array.filterNot(predicate: (T) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun ByteArray.filterNot(predicate: (Byte) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun ShortArray.filterNot(predicate: (Short) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun IntArray.filterNot(predicate: (Int) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun LongArray.filterNot(predicate: (Long) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun FloatArray.filterNot(predicate: (Float) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun DoubleArray.filterNot(predicate: (Double) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun BooleanArray.filterNot(predicate: (Boolean) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun CharArray.filterNot(predicate: (Char) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements that are not `null`.\n * \n * @sample samples.collections.Collections.Filtering.filterNotNull\n */\npublic fun Array.filterNotNull(): List {\n return filterNotNullTo(ArrayList())\n}\n\n/**\n * Appends all elements that are not `null` to the given [destination].\n */\npublic fun , T : Any> Array.filterNotNullTo(destination: C): C {\n for (element in this) if (element != null) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > Array.filterNotTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > ByteArray.filterNotTo(destination: C, predicate: (Byte) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > ShortArray.filterNotTo(destination: C, predicate: (Short) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > IntArray.filterNotTo(destination: C, predicate: (Int) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > LongArray.filterNotTo(destination: C, predicate: (Long) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > FloatArray.filterNotTo(destination: C, predicate: (Float) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > DoubleArray.filterNotTo(destination: C, predicate: (Double) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > BooleanArray.filterNotTo(destination: C, predicate: (Boolean) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > CharArray.filterNotTo(destination: C, predicate: (Char) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > Array.filterTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > ByteArray.filterTo(destination: C, predicate: (Byte) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > ShortArray.filterTo(destination: C, predicate: (Short) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > IntArray.filterTo(destination: C, predicate: (Int) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > LongArray.filterTo(destination: C, predicate: (Long) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > FloatArray.filterTo(destination: C, predicate: (Float) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > DoubleArray.filterTo(destination: C, predicate: (Double) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > BooleanArray.filterTo(destination: C, predicate: (Boolean) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > CharArray.filterTo(destination: C, predicate: (Char) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun Array.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun ByteArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun ShortArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun IntArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun LongArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun FloatArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun DoubleArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun BooleanArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun CharArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun Array.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun ByteArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun ShortArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun IntArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun LongArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun FloatArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun DoubleArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun BooleanArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun CharArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun Array.sliceArray(indices: Collection): Array {\n val result = arrayOfNulls(this, indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun ByteArray.sliceArray(indices: Collection): ByteArray {\n val result = ByteArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun ShortArray.sliceArray(indices: Collection): ShortArray {\n val result = ShortArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun IntArray.sliceArray(indices: Collection): IntArray {\n val result = IntArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun LongArray.sliceArray(indices: Collection): LongArray {\n val result = LongArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun FloatArray.sliceArray(indices: Collection): FloatArray {\n val result = FloatArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun DoubleArray.sliceArray(indices: Collection): DoubleArray {\n val result = DoubleArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun BooleanArray.sliceArray(indices: Collection): BooleanArray {\n val result = BooleanArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun CharArray.sliceArray(indices: Collection): CharArray {\n val result = CharArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun Array.sliceArray(indices: IntRange): Array {\n if (indices.isEmpty()) return copyOfRange(0, 0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun ByteArray.sliceArray(indices: IntRange): ByteArray {\n if (indices.isEmpty()) return ByteArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun ShortArray.sliceArray(indices: IntRange): ShortArray {\n if (indices.isEmpty()) return ShortArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun IntArray.sliceArray(indices: IntRange): IntArray {\n if (indices.isEmpty()) return IntArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun LongArray.sliceArray(indices: IntRange): LongArray {\n if (indices.isEmpty()) return LongArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun FloatArray.sliceArray(indices: IntRange): FloatArray {\n if (indices.isEmpty()) return FloatArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun DoubleArray.sliceArray(indices: IntRange): DoubleArray {\n if (indices.isEmpty()) return DoubleArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun BooleanArray.sliceArray(indices: IntRange): BooleanArray {\n if (indices.isEmpty()) return BooleanArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun CharArray.sliceArray(indices: IntRange): CharArray {\n if (indices.isEmpty()) return CharArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun Array.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ByteArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ShortArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun IntArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun LongArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun FloatArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun DoubleArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun BooleanArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun CharArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun Array.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ByteArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ShortArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun IntArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun LongArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun FloatArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun DoubleArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun BooleanArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun CharArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun Array.takeLastWhile(predicate: (T) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ByteArray.takeLastWhile(predicate: (Byte) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ShortArray.takeLastWhile(predicate: (Short) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun IntArray.takeLastWhile(predicate: (Int) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun LongArray.takeLastWhile(predicate: (Long) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun FloatArray.takeLastWhile(predicate: (Float) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun DoubleArray.takeLastWhile(predicate: (Double) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun BooleanArray.takeLastWhile(predicate: (Boolean) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun CharArray.takeLastWhile(predicate: (Char) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun Array.takeWhile(predicate: (T) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ByteArray.takeWhile(predicate: (Byte) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ShortArray.takeWhile(predicate: (Short) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun IntArray.takeWhile(predicate: (Int) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun LongArray.takeWhile(predicate: (Long) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun FloatArray.takeWhile(predicate: (Float) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun DoubleArray.takeWhile(predicate: (Double) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun BooleanArray.takeWhile(predicate: (Boolean) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun CharArray.takeWhile(predicate: (Char) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun Array.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun ByteArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun ShortArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun IntArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun LongArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun FloatArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun DoubleArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun BooleanArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun CharArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun Array.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun ByteArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun ShortArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun IntArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun LongArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun FloatArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun DoubleArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun BooleanArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun CharArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun Array.reversedArray(): Array {\n if (isEmpty()) return this\n val result = arrayOfNulls(this, size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun ByteArray.reversedArray(): ByteArray {\n if (isEmpty()) return this\n val result = ByteArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun ShortArray.reversedArray(): ShortArray {\n if (isEmpty()) return this\n val result = ShortArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun IntArray.reversedArray(): IntArray {\n if (isEmpty()) return this\n val result = IntArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun LongArray.reversedArray(): LongArray {\n if (isEmpty()) return this\n val result = LongArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun FloatArray.reversedArray(): FloatArray {\n if (isEmpty()) return this\n val result = FloatArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun DoubleArray.reversedArray(): DoubleArray {\n if (isEmpty()) return this\n val result = DoubleArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun BooleanArray.reversedArray(): BooleanArray {\n if (isEmpty()) return this\n val result = BooleanArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun CharArray.reversedArray(): CharArray {\n if (isEmpty()) return this\n val result = CharArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Sorts elements in the array in-place according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Array.sortBy(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareBy(selector))\n}\n\n/**\n * Sorts elements in the array in-place descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Array.sortByDescending(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareByDescending(selector))\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sortDescending(): Unit {\n sortWith(reverseOrder())\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun ByteArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun ShortArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun IntArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun LongArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun FloatArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun DoubleArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun CharArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sorted(): List {\n return sortedArray().asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun ByteArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun ShortArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun IntArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun LongArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun FloatArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun DoubleArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun CharArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sortedArray(): Array {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun ByteArray.sortedArray(): ByteArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun ShortArray.sortedArray(): ShortArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun IntArray.sortedArray(): IntArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun LongArray.sortedArray(): LongArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun FloatArray.sortedArray(): FloatArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun DoubleArray.sortedArray(): DoubleArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun CharArray.sortedArray(): CharArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sortedArrayDescending(): Array {\n if (isEmpty()) return this\n return this.copyOf().apply { sortWith(reverseOrder()) }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun ByteArray.sortedArrayDescending(): ByteArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun ShortArray.sortedArrayDescending(): ShortArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun IntArray.sortedArrayDescending(): IntArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun LongArray.sortedArrayDescending(): LongArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun FloatArray.sortedArrayDescending(): FloatArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun DoubleArray.sortedArrayDescending(): DoubleArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun CharArray.sortedArrayDescending(): CharArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun Array.sortedArrayWith(comparator: Comparator): Array {\n if (isEmpty()) return this\n return this.copyOf().apply { sortWith(comparator) }\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Array.sortedBy(crossinline selector: (T) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > ByteArray.sortedBy(crossinline selector: (Byte) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > ShortArray.sortedBy(crossinline selector: (Short) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > IntArray.sortedBy(crossinline selector: (Int) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > LongArray.sortedBy(crossinline selector: (Long) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > FloatArray.sortedBy(crossinline selector: (Float) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > DoubleArray.sortedBy(crossinline selector: (Double) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > BooleanArray.sortedBy(crossinline selector: (Boolean) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > CharArray.sortedBy(crossinline selector: (Char) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Array.sortedByDescending(crossinline selector: (T) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > ByteArray.sortedByDescending(crossinline selector: (Byte) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > ShortArray.sortedByDescending(crossinline selector: (Short) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > IntArray.sortedByDescending(crossinline selector: (Int) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > LongArray.sortedByDescending(crossinline selector: (Long) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > FloatArray.sortedByDescending(crossinline selector: (Float) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > DoubleArray.sortedByDescending(crossinline selector: (Double) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > BooleanArray.sortedByDescending(crossinline selector: (Boolean) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > CharArray.sortedByDescending(crossinline selector: (Char) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sortedDescending(): List {\n return sortedWith(reverseOrder())\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun ByteArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun ShortArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun IntArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun LongArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun FloatArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun DoubleArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun CharArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun Array.sortedWith(comparator: Comparator): List {\n return sortedArrayWith(comparator).asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun ByteArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun ShortArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun IntArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun LongArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun FloatArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun DoubleArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun BooleanArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun CharArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun Array.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun ByteArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun ShortArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun IntArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun LongArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun FloatArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun DoubleArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun BooleanArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun CharArray.asList(): List\n\n/**\n * Returns `true` if the two specified arrays are *deeply* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * If two corresponding elements are nested arrays, they are also compared deeply.\n * If any of arrays contains itself on any nesting level the behavior is undefined.\n * \n * The elements of other types are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun Array.contentDeepEquals(other: Array): Boolean\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level the behavior is undefined.\n */\n@SinceKotlin(\"1.1\")\npublic expect fun Array.contentDeepHashCode(): Int\n\n/**\n * Returns a string representation of the contents of this array as if it is a [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level that reference\n * is rendered as `\"[...]\"` to prevent recursion.\n * \n * @sample samples.collections.Arrays.ContentOperations.contentDeepToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun Array.contentDeepToString(): String\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun Array.contentEquals(other: Array): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun ByteArray.contentEquals(other: ByteArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun ShortArray.contentEquals(other: ShortArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun IntArray.contentEquals(other: IntArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun LongArray.contentEquals(other: LongArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun FloatArray.contentEquals(other: FloatArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun DoubleArray.contentEquals(other: DoubleArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun BooleanArray.contentEquals(other: BooleanArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun CharArray.contentEquals(other: CharArray): Boolean\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun Array.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun ByteArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun ShortArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun IntArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun LongArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun FloatArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun DoubleArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun BooleanArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun CharArray.contentHashCode(): Int\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun Array.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun ByteArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun ShortArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun IntArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun LongArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun FloatArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun DoubleArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun BooleanArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun CharArray.contentToString(): String\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun Array.copyInto(destination: Array, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): Array\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun ByteArray.copyInto(destination: ByteArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ByteArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun ShortArray.copyInto(destination: ShortArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ShortArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun IntArray.copyInto(destination: IntArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): IntArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun LongArray.copyInto(destination: LongArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): LongArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun FloatArray.copyInto(destination: FloatArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): FloatArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun DoubleArray.copyInto(destination: DoubleArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): DoubleArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun BooleanArray.copyInto(destination: BooleanArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): BooleanArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun CharArray.copyInto(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): CharArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun Array.copyOf(): Array\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun ByteArray.copyOf(): ByteArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun ShortArray.copyOf(): ShortArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun IntArray.copyOf(): IntArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun LongArray.copyOf(): LongArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun FloatArray.copyOf(): FloatArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun DoubleArray.copyOf(): DoubleArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun BooleanArray.copyOf(): BooleanArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun CharArray.copyOf(): CharArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun ByteArray.copyOf(newSize: Int): ByteArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun ShortArray.copyOf(newSize: Int): ShortArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun IntArray.copyOf(newSize: Int): IntArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun LongArray.copyOf(newSize: Int): LongArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun FloatArray.copyOf(newSize: Int): FloatArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun DoubleArray.copyOf(newSize: Int): DoubleArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with `false` values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `false` values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun BooleanArray.copyOf(newSize: Int): BooleanArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with null char (`\\u0000`) values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with null char (`\\u0000`) values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun CharArray.copyOf(newSize: Int): CharArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with `null` values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `null` values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizingCopyOf\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun Array.copyOf(newSize: Int): Array\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun Array.copyOfRange(fromIndex: Int, toIndex: Int): Array\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun ByteArray.copyOfRange(fromIndex: Int, toIndex: Int): ByteArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun ShortArray.copyOfRange(fromIndex: Int, toIndex: Int): ShortArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun IntArray.copyOfRange(fromIndex: Int, toIndex: Int): IntArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun LongArray.copyOfRange(fromIndex: Int, toIndex: Int): LongArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun FloatArray.copyOfRange(fromIndex: Int, toIndex: Int): FloatArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun DoubleArray.copyOfRange(fromIndex: Int, toIndex: Int): DoubleArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun BooleanArray.copyOfRange(fromIndex: Int, toIndex: Int): BooleanArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun CharArray.copyOfRange(fromIndex: Int, toIndex: Int): CharArray\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun Array.fill(element: T, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun ByteArray.fill(element: Byte, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun ShortArray.fill(element: Short, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun IntArray.fill(element: Int, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun LongArray.fill(element: Long, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun FloatArray.fill(element: Float, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun DoubleArray.fill(element: Double, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun BooleanArray.fill(element: Boolean, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun CharArray.fill(element: Char, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val Array.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val ByteArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val ShortArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val IntArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val LongArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val FloatArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val DoubleArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val BooleanArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val CharArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns the last valid index for the array.\n */\npublic val Array.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val ByteArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val ShortArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val IntArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val LongArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val FloatArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val DoubleArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val BooleanArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val CharArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect operator fun Array.plus(element: T): Array\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun ByteArray.plus(element: Byte): ByteArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun ShortArray.plus(element: Short): ShortArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun IntArray.plus(element: Int): IntArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun LongArray.plus(element: Long): LongArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun FloatArray.plus(element: Float): FloatArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun DoubleArray.plus(element: Double): DoubleArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun BooleanArray.plus(element: Boolean): BooleanArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun CharArray.plus(element: Char): CharArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect operator fun Array.plus(elements: Collection): Array\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun ByteArray.plus(elements: Collection): ByteArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun ShortArray.plus(elements: Collection): ShortArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun IntArray.plus(elements: Collection): IntArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun LongArray.plus(elements: Collection): LongArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun FloatArray.plus(elements: Collection): FloatArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun DoubleArray.plus(elements: Collection): DoubleArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun BooleanArray.plus(elements: Collection): BooleanArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun CharArray.plus(elements: Collection): CharArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect operator fun Array.plus(elements: Array): Array\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun ByteArray.plus(elements: ByteArray): ByteArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun ShortArray.plus(elements: ShortArray): ShortArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun IntArray.plus(elements: IntArray): IntArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun LongArray.plus(elements: LongArray): LongArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun FloatArray.plus(elements: FloatArray): FloatArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun DoubleArray.plus(elements: DoubleArray): DoubleArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun BooleanArray.plus(elements: BooleanArray): BooleanArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun CharArray.plus(elements: CharArray): CharArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun Array.plusElement(element: T): Array\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun IntArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun LongArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun ByteArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun ShortArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun DoubleArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun FloatArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun CharArray.sort(): Unit\n\n/**\n * Sorts the array in-place according to the natural order of its elements.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n * \n * @sample samples.collections.Arrays.Sorting.sortArrayOfComparable\n */\npublic expect fun > Array.sort(): Unit\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic expect fun Array.sortWith(comparator: Comparator): Unit\n\n/**\n * Returns an array of Boolean containing all of the elements of this generic array.\n */\npublic fun Array.toBooleanArray(): BooleanArray {\n return BooleanArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Byte containing all of the elements of this generic array.\n */\npublic fun Array.toByteArray(): ByteArray {\n return ByteArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Char containing all of the elements of this generic array.\n */\npublic fun Array.toCharArray(): CharArray {\n return CharArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Double containing all of the elements of this generic array.\n */\npublic fun Array.toDoubleArray(): DoubleArray {\n return DoubleArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Float containing all of the elements of this generic array.\n */\npublic fun Array.toFloatArray(): FloatArray {\n return FloatArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Int containing all of the elements of this generic array.\n */\npublic fun Array.toIntArray(): IntArray {\n return IntArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Long containing all of the elements of this generic array.\n */\npublic fun Array.toLongArray(): LongArray {\n return LongArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Short containing all of the elements of this generic array.\n */\npublic fun Array.toShortArray(): ShortArray {\n return ShortArray(size) { index -> this[index] }\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun ByteArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun ShortArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun IntArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun LongArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun FloatArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun DoubleArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun BooleanArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun CharArray.toTypedArray(): Array\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun Array.associate(transform: (T) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun ByteArray.associate(transform: (Byte) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun ShortArray.associate(transform: (Short) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun IntArray.associate(transform: (Int) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun LongArray.associate(transform: (Long) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun FloatArray.associate(transform: (Float) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun DoubleArray.associate(transform: (Double) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun BooleanArray.associate(transform: (Boolean) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun CharArray.associate(transform: (Char) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun Array.associateBy(keySelector: (T) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun ByteArray.associateBy(keySelector: (Byte) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun ShortArray.associateBy(keySelector: (Short) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun IntArray.associateBy(keySelector: (Int) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun LongArray.associateBy(keySelector: (Long) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun FloatArray.associateBy(keySelector: (Float) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun DoubleArray.associateBy(keySelector: (Double) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun BooleanArray.associateBy(keySelector: (Boolean) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun CharArray.associateBy(keySelector: (Char) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun Array.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun ByteArray.associateBy(keySelector: (Byte) -> K, valueTransform: (Byte) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun ShortArray.associateBy(keySelector: (Short) -> K, valueTransform: (Short) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun IntArray.associateBy(keySelector: (Int) -> K, valueTransform: (Int) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun LongArray.associateBy(keySelector: (Long) -> K, valueTransform: (Long) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun FloatArray.associateBy(keySelector: (Float) -> K, valueTransform: (Float) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun DoubleArray.associateBy(keySelector: (Double) -> K, valueTransform: (Double) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun BooleanArray.associateBy(keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun CharArray.associateBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > Array.associateByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > ByteArray.associateByTo(destination: M, keySelector: (Byte) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > ShortArray.associateByTo(destination: M, keySelector: (Short) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > IntArray.associateByTo(destination: M, keySelector: (Int) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > LongArray.associateByTo(destination: M, keySelector: (Long) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > FloatArray.associateByTo(destination: M, keySelector: (Float) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > DoubleArray.associateByTo(destination: M, keySelector: (Double) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > BooleanArray.associateByTo(destination: M, keySelector: (Boolean) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > CharArray.associateByTo(destination: M, keySelector: (Char) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > Array.associateByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > ByteArray.associateByTo(destination: M, keySelector: (Byte) -> K, valueTransform: (Byte) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > ShortArray.associateByTo(destination: M, keySelector: (Short) -> K, valueTransform: (Short) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > IntArray.associateByTo(destination: M, keySelector: (Int) -> K, valueTransform: (Int) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > LongArray.associateByTo(destination: M, keySelector: (Long) -> K, valueTransform: (Long) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > FloatArray.associateByTo(destination: M, keySelector: (Float) -> K, valueTransform: (Float) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > DoubleArray.associateByTo(destination: M, keySelector: (Double) -> K, valueTransform: (Double) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > BooleanArray.associateByTo(destination: M, keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > CharArray.associateByTo(destination: M, keySelector: (Char) -> K, valueTransform: (Char) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > Array.associateTo(destination: M, transform: (T) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > ByteArray.associateTo(destination: M, transform: (Byte) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > ShortArray.associateTo(destination: M, transform: (Short) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > IntArray.associateTo(destination: M, transform: (Int) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > LongArray.associateTo(destination: M, transform: (Long) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > FloatArray.associateTo(destination: M, transform: (Float) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > DoubleArray.associateTo(destination: M, transform: (Double) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > BooleanArray.associateTo(destination: M, transform: (Boolean) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > CharArray.associateTo(destination: M, transform: (Char) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > Array.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > ByteArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > ShortArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > IntArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > LongArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > FloatArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > DoubleArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > BooleanArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > CharArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun Array.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun ByteArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun ShortArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun IntArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun LongArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun FloatArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun DoubleArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun BooleanArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun CharArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun Array.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun ByteArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun ShortArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun IntArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun LongArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun FloatArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun DoubleArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun BooleanArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun CharArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun Array.toMutableList(): MutableList {\n return ArrayList(this.asCollection())\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun ByteArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun ShortArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun IntArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun LongArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun FloatArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun DoubleArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun BooleanArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun CharArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun Array.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ByteArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ShortArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun IntArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun LongArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun FloatArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun DoubleArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun BooleanArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun CharArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun Array.flatMap(transform: (T) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun ByteArray.flatMap(transform: (Byte) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun ShortArray.flatMap(transform: (Short) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun IntArray.flatMap(transform: (Int) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun LongArray.flatMap(transform: (Long) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun FloatArray.flatMap(transform: (Float) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun DoubleArray.flatMap(transform: (Double) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun BooleanArray.flatMap(transform: (Boolean) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun CharArray.flatMap(transform: (Char) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > Array.flatMapTo(destination: C, transform: (T) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > ByteArray.flatMapTo(destination: C, transform: (Byte) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > ShortArray.flatMapTo(destination: C, transform: (Short) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > IntArray.flatMapTo(destination: C, transform: (Int) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > LongArray.flatMapTo(destination: C, transform: (Long) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > FloatArray.flatMapTo(destination: C, transform: (Float) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > DoubleArray.flatMapTo(destination: C, transform: (Double) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > BooleanArray.flatMapTo(destination: C, transform: (Boolean) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > CharArray.flatMapTo(destination: C, transform: (Char) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun Array.groupBy(keySelector: (T) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun ByteArray.groupBy(keySelector: (Byte) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun ShortArray.groupBy(keySelector: (Short) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun IntArray.groupBy(keySelector: (Int) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun LongArray.groupBy(keySelector: (Long) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun FloatArray.groupBy(keySelector: (Float) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun DoubleArray.groupBy(keySelector: (Double) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun BooleanArray.groupBy(keySelector: (Boolean) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun CharArray.groupBy(keySelector: (Char) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun Array.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun ByteArray.groupBy(keySelector: (Byte) -> K, valueTransform: (Byte) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun ShortArray.groupBy(keySelector: (Short) -> K, valueTransform: (Short) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun IntArray.groupBy(keySelector: (Int) -> K, valueTransform: (Int) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun LongArray.groupBy(keySelector: (Long) -> K, valueTransform: (Long) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun FloatArray.groupBy(keySelector: (Float) -> K, valueTransform: (Float) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun DoubleArray.groupBy(keySelector: (Double) -> K, valueTransform: (Double) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun BooleanArray.groupBy(keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun CharArray.groupBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> Array.groupByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> ByteArray.groupByTo(destination: M, keySelector: (Byte) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> ShortArray.groupByTo(destination: M, keySelector: (Short) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> IntArray.groupByTo(destination: M, keySelector: (Int) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> LongArray.groupByTo(destination: M, keySelector: (Long) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> FloatArray.groupByTo(destination: M, keySelector: (Float) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> DoubleArray.groupByTo(destination: M, keySelector: (Double) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> BooleanArray.groupByTo(destination: M, keySelector: (Boolean) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> CharArray.groupByTo(destination: M, keySelector: (Char) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> Array.groupByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> ByteArray.groupByTo(destination: M, keySelector: (Byte) -> K, valueTransform: (Byte) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> ShortArray.groupByTo(destination: M, keySelector: (Short) -> K, valueTransform: (Short) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> IntArray.groupByTo(destination: M, keySelector: (Int) -> K, valueTransform: (Int) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> LongArray.groupByTo(destination: M, keySelector: (Long) -> K, valueTransform: (Long) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> FloatArray.groupByTo(destination: M, keySelector: (Float) -> K, valueTransform: (Float) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> DoubleArray.groupByTo(destination: M, keySelector: (Double) -> K, valueTransform: (Double) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> BooleanArray.groupByTo(destination: M, keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> CharArray.groupByTo(destination: M, keySelector: (Char) -> K, valueTransform: (Char) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Creates a [Grouping] source from an array to be used later with one of group-and-fold operations\n * using the specified [keySelector] function to extract a key from each element.\n * \n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Array.groupingBy(crossinline keySelector: (T) -> K): Grouping {\n return object : Grouping {\n override fun sourceIterator(): Iterator = this@groupingBy.iterator()\n override fun keyOf(element: T): K = keySelector(element)\n }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun Array.map(transform: (T) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun ByteArray.map(transform: (Byte) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun ShortArray.map(transform: (Short) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun IntArray.map(transform: (Int) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun LongArray.map(transform: (Long) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun FloatArray.map(transform: (Float) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun DoubleArray.map(transform: (Double) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun BooleanArray.map(transform: (Boolean) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun CharArray.map(transform: (Char) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Array.mapIndexed(transform: (index: Int, T) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun ByteArray.mapIndexed(transform: (index: Int, Byte) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun ShortArray.mapIndexed(transform: (index: Int, Short) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun IntArray.mapIndexed(transform: (index: Int, Int) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun LongArray.mapIndexed(transform: (index: Int, Long) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun FloatArray.mapIndexed(transform: (index: Int, Float) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun DoubleArray.mapIndexed(transform: (index: Int, Double) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun BooleanArray.mapIndexed(transform: (index: Int, Boolean) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun CharArray.mapIndexed(transform: (index: Int, Char) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Array.mapIndexedNotNull(transform: (index: Int, T) -> R?): List {\n return mapIndexedNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends only the non-null results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Array.mapIndexedNotNullTo(destination: C, transform: (index: Int, T) -> R?): C {\n forEachIndexed { index, element -> transform(index, element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Array.mapIndexedTo(destination: C, transform: (index: Int, T) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > ByteArray.mapIndexedTo(destination: C, transform: (index: Int, Byte) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > ShortArray.mapIndexedTo(destination: C, transform: (index: Int, Short) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > IntArray.mapIndexedTo(destination: C, transform: (index: Int, Int) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > LongArray.mapIndexedTo(destination: C, transform: (index: Int, Long) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > FloatArray.mapIndexedTo(destination: C, transform: (index: Int, Float) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > DoubleArray.mapIndexedTo(destination: C, transform: (index: Int, Double) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > BooleanArray.mapIndexedTo(destination: C, transform: (index: Int, Boolean) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > CharArray.mapIndexedTo(destination: C, transform: (index: Int, Char) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element in the original array.\n */\npublic inline fun Array.mapNotNull(transform: (T) -> R?): List {\n return mapNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element in the original array\n * and appends only the non-null results to the given [destination].\n */\npublic inline fun > Array.mapNotNullTo(destination: C, transform: (T) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > Array.mapTo(destination: C, transform: (T) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > ByteArray.mapTo(destination: C, transform: (Byte) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > ShortArray.mapTo(destination: C, transform: (Short) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > IntArray.mapTo(destination: C, transform: (Int) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > LongArray.mapTo(destination: C, transform: (Long) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > FloatArray.mapTo(destination: C, transform: (Float) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > DoubleArray.mapTo(destination: C, transform: (Double) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > BooleanArray.mapTo(destination: C, transform: (Boolean) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > CharArray.mapTo(destination: C, transform: (Char) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun Array.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun ByteArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun ShortArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun IntArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun LongArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun FloatArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun DoubleArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun BooleanArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun CharArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun Array.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun ByteArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun ShortArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun IntArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun LongArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun FloatArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun DoubleArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun BooleanArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun CharArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun Array.distinctBy(selector: (T) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun ByteArray.distinctBy(selector: (Byte) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun ShortArray.distinctBy(selector: (Short) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun IntArray.distinctBy(selector: (Int) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun LongArray.distinctBy(selector: (Long) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun FloatArray.distinctBy(selector: (Float) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun DoubleArray.distinctBy(selector: (Double) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun BooleanArray.distinctBy(selector: (Boolean) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun CharArray.distinctBy(selector: (Char) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun Array.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun ByteArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun ShortArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun IntArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun LongArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun FloatArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun DoubleArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun BooleanArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun CharArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun Array.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun ByteArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun ShortArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun IntArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun LongArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun FloatArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun DoubleArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun BooleanArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun CharArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun Array.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ByteArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ShortArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun IntArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun LongArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun FloatArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun DoubleArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun BooleanArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun CharArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun Array.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun ByteArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun ShortArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun IntArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun LongArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun FloatArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun DoubleArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun BooleanArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun CharArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun Array.all(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun ByteArray.all(predicate: (Byte) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun ShortArray.all(predicate: (Short) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun IntArray.all(predicate: (Int) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun LongArray.all(predicate: (Long) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun FloatArray.all(predicate: (Float) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun DoubleArray.all(predicate: (Double) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun BooleanArray.all(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun CharArray.all(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun Array.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun ByteArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun ShortArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun IntArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun LongArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun FloatArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun DoubleArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun BooleanArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun CharArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun Array.any(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun ByteArray.any(predicate: (Byte) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun ShortArray.any(predicate: (Short) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun IntArray.any(predicate: (Int) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun LongArray.any(predicate: (Long) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun FloatArray.any(predicate: (Float) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun DoubleArray.any(predicate: (Double) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun BooleanArray.any(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun CharArray.any(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun Array.count(predicate: (T) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun ByteArray.count(predicate: (Byte) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun ShortArray.count(predicate: (Short) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun IntArray.count(predicate: (Int) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun LongArray.count(predicate: (Long) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun FloatArray.count(predicate: (Float) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun DoubleArray.count(predicate: (Double) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun BooleanArray.count(predicate: (Boolean) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun CharArray.count(predicate: (Char) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun Array.fold(initial: R, operation: (acc: R, T) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun ByteArray.fold(initial: R, operation: (acc: R, Byte) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun ShortArray.fold(initial: R, operation: (acc: R, Short) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun IntArray.fold(initial: R, operation: (acc: R, Int) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun LongArray.fold(initial: R, operation: (acc: R, Long) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun FloatArray.fold(initial: R, operation: (acc: R, Float) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun DoubleArray.fold(initial: R, operation: (acc: R, Double) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun BooleanArray.fold(initial: R, operation: (acc: R, Boolean) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun CharArray.fold(initial: R, operation: (acc: R, Char) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun Array.foldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun ByteArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Byte) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun ShortArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Short) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun IntArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Int) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun LongArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Long) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun FloatArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Float) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun DoubleArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Double) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun BooleanArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Boolean) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun CharArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun Array.foldRight(initial: R, operation: (T, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun ByteArray.foldRight(initial: R, operation: (Byte, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun ShortArray.foldRight(initial: R, operation: (Short, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun IntArray.foldRight(initial: R, operation: (Int, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun LongArray.foldRight(initial: R, operation: (Long, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun FloatArray.foldRight(initial: R, operation: (Float, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun DoubleArray.foldRight(initial: R, operation: (Double, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun BooleanArray.foldRight(initial: R, operation: (Boolean, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun CharArray.foldRight(initial: R, operation: (Char, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun Array.foldRightIndexed(initial: R, operation: (index: Int, T, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun ByteArray.foldRightIndexed(initial: R, operation: (index: Int, Byte, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun ShortArray.foldRightIndexed(initial: R, operation: (index: Int, Short, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun IntArray.foldRightIndexed(initial: R, operation: (index: Int, Int, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun LongArray.foldRightIndexed(initial: R, operation: (index: Int, Long, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun FloatArray.foldRightIndexed(initial: R, operation: (index: Int, Float, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun DoubleArray.foldRightIndexed(initial: R, operation: (index: Int, Double, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun BooleanArray.foldRightIndexed(initial: R, operation: (index: Int, Boolean, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun CharArray.foldRightIndexed(initial: R, operation: (index: Int, Char, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun Array.forEach(action: (T) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun ByteArray.forEach(action: (Byte) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun ShortArray.forEach(action: (Short) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun IntArray.forEach(action: (Int) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun LongArray.forEach(action: (Long) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun FloatArray.forEach(action: (Float) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun DoubleArray.forEach(action: (Double) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun BooleanArray.forEach(action: (Boolean) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun CharArray.forEach(action: (Char) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun Array.forEachIndexed(action: (index: Int, T) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun ByteArray.forEachIndexed(action: (index: Int, Byte) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun ShortArray.forEachIndexed(action: (index: Int, Short) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun IntArray.forEachIndexed(action: (index: Int, Int) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun LongArray.forEachIndexed(action: (index: Int, Long) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun FloatArray.forEachIndexed(action: (index: Int, Float) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun DoubleArray.forEachIndexed(action: (index: Int, Double) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun BooleanArray.forEachIndexed(action: (index: Int, Boolean) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun CharArray.forEachIndexed(action: (index: Int, Char) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Array.max(): Double? {\n if (isEmpty()) return null\n var max = this[0]\n if (max.isNaN()) return max\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Array.max(): Float? {\n if (isEmpty()) return null\n var max = this[0]\n if (max.isNaN()) return max\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun > Array.max(): T? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun ByteArray.max(): Byte? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun ShortArray.max(): Short? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun IntArray.max(): Int? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun LongArray.max(): Long? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\npublic fun FloatArray.max(): Float? {\n if (isEmpty()) return null\n var max = this[0]\n if (max.isNaN()) return max\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\npublic fun DoubleArray.max(): Double? {\n if (isEmpty()) return null\n var max = this[0]\n if (max.isNaN()) return max\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun CharArray.max(): Char? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > Array.maxBy(selector: (T) -> R): T? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > ByteArray.maxBy(selector: (Byte) -> R): Byte? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > ShortArray.maxBy(selector: (Short) -> R): Short? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > IntArray.maxBy(selector: (Int) -> R): Int? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > LongArray.maxBy(selector: (Long) -> R): Long? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > FloatArray.maxBy(selector: (Float) -> R): Float? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > DoubleArray.maxBy(selector: (Double) -> R): Double? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > BooleanArray.maxBy(selector: (Boolean) -> R): Boolean? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > CharArray.maxBy(selector: (Char) -> R): Char? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun Array.maxWith(comparator: Comparator): T? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun ByteArray.maxWith(comparator: Comparator): Byte? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun ShortArray.maxWith(comparator: Comparator): Short? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun IntArray.maxWith(comparator: Comparator): Int? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun LongArray.maxWith(comparator: Comparator): Long? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun FloatArray.maxWith(comparator: Comparator): Float? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun DoubleArray.maxWith(comparator: Comparator): Double? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun BooleanArray.maxWith(comparator: Comparator): Boolean? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun CharArray.maxWith(comparator: Comparator): Char? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Array.min(): Double? {\n if (isEmpty()) return null\n var min = this[0]\n if (min.isNaN()) return min\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Array.min(): Float? {\n if (isEmpty()) return null\n var min = this[0]\n if (min.isNaN()) return min\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun > Array.min(): T? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun ByteArray.min(): Byte? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun ShortArray.min(): Short? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun IntArray.min(): Int? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun LongArray.min(): Long? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\npublic fun FloatArray.min(): Float? {\n if (isEmpty()) return null\n var min = this[0]\n if (min.isNaN()) return min\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\npublic fun DoubleArray.min(): Double? {\n if (isEmpty()) return null\n var min = this[0]\n if (min.isNaN()) return min\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun CharArray.min(): Char? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > Array.minBy(selector: (T) -> R): T? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > ByteArray.minBy(selector: (Byte) -> R): Byte? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > ShortArray.minBy(selector: (Short) -> R): Short? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > IntArray.minBy(selector: (Int) -> R): Int? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > LongArray.minBy(selector: (Long) -> R): Long? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > FloatArray.minBy(selector: (Float) -> R): Float? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > DoubleArray.minBy(selector: (Double) -> R): Double? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > BooleanArray.minBy(selector: (Boolean) -> R): Boolean? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > CharArray.minBy(selector: (Char) -> R): Char? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun Array.minWith(comparator: Comparator): T? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun ByteArray.minWith(comparator: Comparator): Byte? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun ShortArray.minWith(comparator: Comparator): Short? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun IntArray.minWith(comparator: Comparator): Int? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun LongArray.minWith(comparator: Comparator): Long? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun FloatArray.minWith(comparator: Comparator): Float? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun DoubleArray.minWith(comparator: Comparator): Double? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun BooleanArray.minWith(comparator: Comparator): Boolean? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun CharArray.minWith(comparator: Comparator): Char? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun Array.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun ByteArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun ShortArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun IntArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun LongArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun FloatArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun DoubleArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun BooleanArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun CharArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun Array.none(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun ByteArray.none(predicate: (Byte) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun ShortArray.none(predicate: (Short) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun IntArray.none(predicate: (Int) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun LongArray.none(predicate: (Long) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun FloatArray.none(predicate: (Float) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun DoubleArray.none(predicate: (Double) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun BooleanArray.none(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun CharArray.none(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun Array.reduce(operation: (acc: S, T) -> S): S {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun ByteArray.reduce(operation: (acc: Byte, Byte) -> Byte): Byte {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun ShortArray.reduce(operation: (acc: Short, Short) -> Short): Short {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun IntArray.reduce(operation: (acc: Int, Int) -> Int): Int {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun LongArray.reduce(operation: (acc: Long, Long) -> Long): Long {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun FloatArray.reduce(operation: (acc: Float, Float) -> Float): Float {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun DoubleArray.reduce(operation: (acc: Double, Double) -> Double): Double {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun BooleanArray.reduce(operation: (acc: Boolean, Boolean) -> Boolean): Boolean {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun CharArray.reduce(operation: (acc: Char, Char) -> Char): Char {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun Array.reduceIndexed(operation: (index: Int, acc: S, T) -> S): S {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun ByteArray.reduceIndexed(operation: (index: Int, acc: Byte, Byte) -> Byte): Byte {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun ShortArray.reduceIndexed(operation: (index: Int, acc: Short, Short) -> Short): Short {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun IntArray.reduceIndexed(operation: (index: Int, acc: Int, Int) -> Int): Int {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun LongArray.reduceIndexed(operation: (index: Int, acc: Long, Long) -> Long): Long {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun FloatArray.reduceIndexed(operation: (index: Int, acc: Float, Float) -> Float): Float {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun DoubleArray.reduceIndexed(operation: (index: Int, acc: Double, Double) -> Double): Double {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun BooleanArray.reduceIndexed(operation: (index: Int, acc: Boolean, Boolean) -> Boolean): Boolean {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun CharArray.reduceIndexed(operation: (index: Int, acc: Char, Char) -> Char): Char {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Array.reduceOrNull(operation: (acc: S, T) -> S): S? {\n if (isEmpty())\n return null\n var accumulator: S = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun ByteArray.reduceOrNull(operation: (acc: Byte, Byte) -> Byte): Byte? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun ShortArray.reduceOrNull(operation: (acc: Short, Short) -> Short): Short? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun IntArray.reduceOrNull(operation: (acc: Int, Int) -> Int): Int? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun LongArray.reduceOrNull(operation: (acc: Long, Long) -> Long): Long? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun FloatArray.reduceOrNull(operation: (acc: Float, Float) -> Float): Float? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun DoubleArray.reduceOrNull(operation: (acc: Double, Double) -> Double): Double? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun BooleanArray.reduceOrNull(operation: (acc: Boolean, Boolean) -> Boolean): Boolean? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun CharArray.reduceOrNull(operation: (acc: Char, Char) -> Char): Char? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun Array.reduceRight(operation: (T, acc: S) -> S): S {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun ByteArray.reduceRight(operation: (Byte, acc: Byte) -> Byte): Byte {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun ShortArray.reduceRight(operation: (Short, acc: Short) -> Short): Short {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun IntArray.reduceRight(operation: (Int, acc: Int) -> Int): Int {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun LongArray.reduceRight(operation: (Long, acc: Long) -> Long): Long {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun FloatArray.reduceRight(operation: (Float, acc: Float) -> Float): Float {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun DoubleArray.reduceRight(operation: (Double, acc: Double) -> Double): Double {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun BooleanArray.reduceRight(operation: (Boolean, acc: Boolean) -> Boolean): Boolean {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun CharArray.reduceRight(operation: (Char, acc: Char) -> Char): Char {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun Array.reduceRightIndexed(operation: (index: Int, T, acc: S) -> S): S {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun ByteArray.reduceRightIndexed(operation: (index: Int, Byte, acc: Byte) -> Byte): Byte {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun ShortArray.reduceRightIndexed(operation: (index: Int, Short, acc: Short) -> Short): Short {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun IntArray.reduceRightIndexed(operation: (index: Int, Int, acc: Int) -> Int): Int {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun LongArray.reduceRightIndexed(operation: (index: Int, Long, acc: Long) -> Long): Long {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun FloatArray.reduceRightIndexed(operation: (index: Int, Float, acc: Float) -> Float): Float {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun DoubleArray.reduceRightIndexed(operation: (index: Int, Double, acc: Double) -> Double): Double {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun BooleanArray.reduceRightIndexed(operation: (index: Int, Boolean, acc: Boolean) -> Boolean): Boolean {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun CharArray.reduceRightIndexed(operation: (index: Int, Char, acc: Char) -> Char): Char {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Array.reduceRightOrNull(operation: (T, acc: S) -> S): S? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator: S = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun ByteArray.reduceRightOrNull(operation: (Byte, acc: Byte) -> Byte): Byte? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun ShortArray.reduceRightOrNull(operation: (Short, acc: Short) -> Short): Short? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun IntArray.reduceRightOrNull(operation: (Int, acc: Int) -> Int): Int? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun LongArray.reduceRightOrNull(operation: (Long, acc: Long) -> Long): Long? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun FloatArray.reduceRightOrNull(operation: (Float, acc: Float) -> Float): Float? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun DoubleArray.reduceRightOrNull(operation: (Double, acc: Double) -> Double): Double? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun BooleanArray.reduceRightOrNull(operation: (Boolean, acc: Boolean) -> Boolean): Boolean? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun CharArray.reduceRightOrNull(operation: (Char, acc: Char) -> Char): Char? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Array.scan(initial: R, operation: (acc: R, T) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.scan(initial: R, operation: (acc: R, Byte) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.scan(initial: R, operation: (acc: R, Short) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.scan(initial: R, operation: (acc: R, Int) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.scan(initial: R, operation: (acc: R, Long) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.scan(initial: R, operation: (acc: R, Float) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.scan(initial: R, operation: (acc: R, Double) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.scan(initial: R, operation: (acc: R, Boolean) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.scan(initial: R, operation: (acc: R, Char) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Array.scanIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Byte) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Short) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Int) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Long) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Float) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Double) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Boolean) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and the element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Array.scanReduce(operation: (acc: S, T) -> S): List {\n if (isEmpty()) return emptyList()\n var accumulator: S = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.scanReduce(operation: (acc: Byte, Byte) -> Byte): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.scanReduce(operation: (acc: Short, Short) -> Short): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.scanReduce(operation: (acc: Int, Int) -> Int): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.scanReduce(operation: (acc: Long, Long) -> Long): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.scanReduce(operation: (acc: Float, Float) -> Float): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.scanReduce(operation: (acc: Double, Double) -> Double): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.scanReduce(operation: (acc: Boolean, Boolean) -> Boolean): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.scanReduce(operation: (acc: Char, Char) -> Char): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Array.scanReduceIndexed(operation: (index: Int, acc: S, T) -> S): List {\n if (isEmpty()) return emptyList()\n var accumulator: S = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.scanReduceIndexed(operation: (index: Int, acc: Byte, Byte) -> Byte): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.scanReduceIndexed(operation: (index: Int, acc: Short, Short) -> Short): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.scanReduceIndexed(operation: (index: Int, acc: Int, Int) -> Int): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.scanReduceIndexed(operation: (index: Int, acc: Long, Long) -> Long): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.scanReduceIndexed(operation: (index: Int, acc: Float, Float) -> Float): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.scanReduceIndexed(operation: (index: Int, acc: Double, Double) -> Double): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.scanReduceIndexed(operation: (index: Int, acc: Boolean, Boolean) -> Boolean): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.scanReduceIndexed(operation: (index: Int, acc: Char, Char) -> Char): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun Array.sumBy(selector: (T) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ByteArray.sumBy(selector: (Byte) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ShortArray.sumBy(selector: (Short) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun IntArray.sumBy(selector: (Int) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun LongArray.sumBy(selector: (Long) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun FloatArray.sumBy(selector: (Float) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun DoubleArray.sumBy(selector: (Double) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun BooleanArray.sumBy(selector: (Boolean) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun CharArray.sumBy(selector: (Char) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun Array.sumByDouble(selector: (T) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ByteArray.sumByDouble(selector: (Byte) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ShortArray.sumByDouble(selector: (Short) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun IntArray.sumByDouble(selector: (Int) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun LongArray.sumByDouble(selector: (Long) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun FloatArray.sumByDouble(selector: (Float) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun DoubleArray.sumByDouble(selector: (Double) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun BooleanArray.sumByDouble(selector: (Boolean) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun CharArray.sumByDouble(selector: (Char) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n */\npublic fun Array.requireNoNulls(): Array {\n for (element in this) {\n if (element == null) {\n throw IllegalArgumentException(\"null element found in $this.\")\n }\n }\n @Suppress(\"UNCHECKED_CAST\")\n return this as Array\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun Array.partition(predicate: (T) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun ByteArray.partition(predicate: (Byte) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun ShortArray.partition(predicate: (Short) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun IntArray.partition(predicate: (Int) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun LongArray.partition(predicate: (Long) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun FloatArray.partition(predicate: (Float) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun DoubleArray.partition(predicate: (Double) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun BooleanArray.partition(predicate: (Boolean) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun CharArray.partition(predicate: (Char) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Array.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ByteArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ShortArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun IntArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun LongArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun FloatArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun DoubleArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun BooleanArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun CharArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Array.zip(other: Array, transform: (a: T, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ByteArray.zip(other: Array, transform: (a: Byte, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ShortArray.zip(other: Array, transform: (a: Short, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun IntArray.zip(other: Array, transform: (a: Int, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun LongArray.zip(other: Array, transform: (a: Long, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun FloatArray.zip(other: Array, transform: (a: Float, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun DoubleArray.zip(other: Array, transform: (a: Double, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun BooleanArray.zip(other: Array, transform: (a: Boolean, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun CharArray.zip(other: Array, transform: (a: Char, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Array.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ByteArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ShortArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun IntArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun LongArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun FloatArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun DoubleArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun BooleanArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun CharArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Array.zip(other: Iterable, transform: (a: T, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ByteArray.zip(other: Iterable, transform: (a: Byte, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ShortArray.zip(other: Iterable, transform: (a: Short, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun IntArray.zip(other: Iterable, transform: (a: Int, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun LongArray.zip(other: Iterable, transform: (a: Long, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun FloatArray.zip(other: Iterable, transform: (a: Float, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun DoubleArray.zip(other: Iterable, transform: (a: Double, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun BooleanArray.zip(other: Iterable, transform: (a: Boolean, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun CharArray.zip(other: Iterable, transform: (a: Char, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ByteArray.zip(other: ByteArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ShortArray.zip(other: ShortArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun IntArray.zip(other: IntArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun LongArray.zip(other: LongArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun FloatArray.zip(other: FloatArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun DoubleArray.zip(other: DoubleArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun BooleanArray.zip(other: BooleanArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun CharArray.zip(other: CharArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ByteArray.zip(other: ByteArray, transform: (a: Byte, b: Byte) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ShortArray.zip(other: ShortArray, transform: (a: Short, b: Short) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun IntArray.zip(other: IntArray, transform: (a: Int, b: Int) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun LongArray.zip(other: LongArray, transform: (a: Long, b: Long) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun FloatArray.zip(other: FloatArray, transform: (a: Float, b: Float) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun DoubleArray.zip(other: DoubleArray, transform: (a: Double, b: Double) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun BooleanArray.zip(other: BooleanArray, transform: (a: Boolean, b: Boolean) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun CharArray.zip(other: CharArray, transform: (a: Char, b: Char) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun Array.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n buffer.appendElement(element, transform)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun ByteArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Byte) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun ShortArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Short) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun IntArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Int) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun LongArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Long) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun FloatArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Float) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun DoubleArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Double) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun BooleanArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Boolean) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun CharArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Char) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun Array.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun ByteArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Byte) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun ShortArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Short) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun IntArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Int) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun LongArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Long) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun FloatArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Float) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun DoubleArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Double) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun BooleanArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Boolean) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun CharArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Char) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun Array.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun ByteArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun ShortArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun IntArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun LongArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun FloatArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun DoubleArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun BooleanArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun CharArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun Array.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun ByteArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun ShortArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun IntArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun LongArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun FloatArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun DoubleArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun BooleanArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun CharArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfByte\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfShort\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfInt\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfLong\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfFloat\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfDouble\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun ByteArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun ShortArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun IntArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun LongArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun FloatArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun DoubleArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfByte\")\npublic fun Array.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfShort\")\npublic fun Array.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfInt\")\npublic fun Array.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfLong\")\npublic fun Array.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfFloat\")\npublic fun Array.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfDouble\")\npublic fun Array.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun ByteArray.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun ShortArray.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun IntArray.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun LongArray.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun FloatArray.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun DoubleArray.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n",null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\nimport kotlin.js.RegExp\n\n/**\n * Converts the characters in the specified array to a string.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun String(chars: CharArray): String {\n var result = \"\"\n for (char in chars) {\n result += char\n }\n return result\n}\n\n/**\n * Converts the characters from a portion of the specified array to a string.\n *\n * @throws IndexOutOfBoundsException if either [offset] or [length] are less than zero\n * or `offset + length` is out of [chars] array bounds.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun String(chars: CharArray, offset: Int, length: Int): String {\n if (offset < 0 || length < 0 || chars.size - offset < length)\n throw IndexOutOfBoundsException(\"size: ${chars.size}; offset: $offset; length: $length\")\n var result = \"\"\n for (index in offset until offset + length) {\n result += chars[index]\n }\n return result\n}\n\n/**\n * Concatenates characters in this [CharArray] into a String.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun CharArray.concatToString(): String {\n var result = \"\"\n for (char in this) {\n result += char\n }\n return result\n}\n\n/**\n * Concatenates characters in this [CharArray] or its subrange into a String.\n *\n * @param startIndex the beginning (inclusive) of the subrange of characters, 0 by default.\n * @param endIndex the end (exclusive) of the subrange of characters, size of this array by default.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n@ExperimentalStdlibApi\npublic actual fun CharArray.concatToString(startIndex: Int = 0, endIndex: Int = this.size): String {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, this.size)\n var result = \"\"\n for (index in startIndex until endIndex) {\n result += this[index]\n }\n return result\n}\n\n/**\n * Returns a [CharArray] containing characters of this string.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun String.toCharArray(): CharArray {\n return CharArray(length) { get(it) }\n}\n\n/**\n * Returns a [CharArray] containing characters of this string or its substring.\n *\n * @param startIndex the beginning (inclusive) of the substring, 0 by default.\n * @param endIndex the end (exclusive) of the substring, length of this string by default.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the length of this string.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n@ExperimentalStdlibApi\npublic actual fun String.toCharArray(startIndex: Int = 0, endIndex: Int = this.length): CharArray {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, length)\n return CharArray(endIndex - startIndex) { get(startIndex + it) }\n}\n\n/**\n * Decodes a string from the bytes in UTF-8 encoding in this array.\n *\n * Malformed byte sequences are replaced by the replacement char `\\uFFFD`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun ByteArray.decodeToString(): String {\n return decodeUtf8(this, 0, size, false)\n}\n\n/**\n * Decodes a string from the bytes in UTF-8 encoding in this array or its subrange.\n *\n * @param startIndex the beginning (inclusive) of the subrange to decode, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to decode, size of this array by default.\n * @param throwOnInvalidSequence specifies whether to throw an exception on malformed byte sequence or replace it by the replacement char `\\uFFFD`.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n * @throws CharacterCodingException if the byte array contains malformed UTF-8 byte sequence and [throwOnInvalidSequence] is true.\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n@ExperimentalStdlibApi\npublic actual fun ByteArray.decodeToString(\n startIndex: Int = 0,\n endIndex: Int = this.size,\n throwOnInvalidSequence: Boolean = false\n): String {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, this.size)\n return decodeUtf8(this, startIndex, endIndex, throwOnInvalidSequence)\n}\n\n/**\n * Encodes this string to an array of bytes in UTF-8 encoding.\n *\n * Any malformed char sequence is replaced by the replacement byte sequence.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun String.encodeToByteArray(): ByteArray {\n return encodeUtf8(this, 0, length, false)\n}\n\n/**\n * Encodes this string or its substring to an array of bytes in UTF-8 encoding.\n *\n * @param startIndex the beginning (inclusive) of the substring to encode, 0 by default.\n * @param endIndex the end (exclusive) of the substring to encode, length of this string by default.\n * @param throwOnInvalidSequence specifies whether to throw an exception on malformed char sequence or replace.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the length of this string.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n * @throws CharacterCodingException if this string contains malformed char sequence and [throwOnInvalidSequence] is true.\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n@ExperimentalStdlibApi\npublic actual fun String.encodeToByteArray(\n startIndex: Int = 0,\n endIndex: Int = this.length,\n throwOnInvalidSequence: Boolean = false\n): ByteArray {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, length)\n return encodeUtf8(this, startIndex, endIndex, throwOnInvalidSequence)\n}\n\n/**\n * Returns a copy of this string converted to upper case using the rules of the default locale.\n *\n * @sample samples.text.Strings.toUpperCase\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toUpperCase(): String = asDynamic().toUpperCase()\n\n/**\n * Returns a copy of this string converted to lower case using the rules of the default locale.\n *\n * @sample samples.text.Strings.toLowerCase\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toLowerCase(): String = asDynamic().toLowerCase()\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeIndexOf(str: String, fromIndex: Int): Int = asDynamic().indexOf(str, fromIndex)\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeLastIndexOf(str: String, fromIndex: Int): Int = asDynamic().lastIndexOf(str, fromIndex)\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeStartsWith(s: String, position: Int): Boolean = asDynamic().startsWith(s, position)\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeEndsWith(s: String): Boolean = asDynamic().endsWith(s)\n\n@kotlin.internal.InlineOnly\npublic actual inline fun String.substring(startIndex: Int): String = asDynamic().substring(startIndex)\n\n@kotlin.internal.InlineOnly\npublic actual inline fun String.substring(startIndex: Int, endIndex: Int): String = asDynamic().substring(startIndex, endIndex)\n\n@kotlin.internal.InlineOnly\npublic inline fun String.concat(str: String): String = asDynamic().concat(str)\n\n@kotlin.internal.InlineOnly\npublic inline fun String.match(regex: String): Array? = asDynamic().match(regex)\n\n//native public fun String.trim(): String\n//TODO: String.replace to implement effective trimLeading and trimTrailing\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeReplace(pattern: RegExp, replacement: String): String = asDynamic().replace(pattern, replacement)\n\n@SinceKotlin(\"1.2\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.compareTo(other: String, ignoreCase: Boolean = false): Int {\n if (ignoreCase) {\n val n1 = this.length\n val n2 = other.length\n val min = minOf(n1, n2)\n if (min == 0) return n1 - n2\n var start = 0\n while (true) {\n val end = minOf(start + 16, min)\n var s1 = this.substring(start, end)\n var s2 = other.substring(start, end)\n if (s1 != s2) {\n s1 = s1.toUpperCase()\n s2 = s2.toUpperCase()\n if (s1 != s2) {\n s1 = s1.toLowerCase()\n s2 = s2.toLowerCase()\n if (s1 != s2) {\n return s1.compareTo(s2)\n }\n }\n }\n if (end == min) break\n start = end\n }\n return n1 - n2\n } else {\n return compareTo(other)\n }\n}\n\n\nprivate val STRING_CASE_INSENSITIVE_ORDER = Comparator { a, b -> a.compareTo(b, ignoreCase = true) }\n\n@SinceKotlin(\"1.2\")\npublic actual val String.Companion.CASE_INSENSITIVE_ORDER: Comparator\n get() = STRING_CASE_INSENSITIVE_ORDER\n",null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StandardKt\")\npackage kotlin\n\nimport kotlin.contracts.*\n\n/**\n * An exception is thrown to indicate that a method body remains to be implemented.\n */\npublic class NotImplementedError(message: String = \"An operation is not implemented.\") : Error(message)\n\n/**\n * Always throws [NotImplementedError] stating that operation is not implemented.\n */\n\n@kotlin.internal.InlineOnly\npublic inline fun TODO(): Nothing = throw NotImplementedError()\n\n/**\n * Always throws [NotImplementedError] stating that operation is not implemented.\n *\n * @param reason a string explaining why the implementation is missing.\n */\n@kotlin.internal.InlineOnly\npublic inline fun TODO(reason: String): Nothing = throw NotImplementedError(\"An operation is not implemented: $reason\")\n\n\n\n/**\n * Calls the specified function [block] and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#run).\n */\n@kotlin.internal.InlineOnly\npublic inline fun run(block: () -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block()\n}\n\n/**\n * Calls the specified function [block] with `this` value as its receiver and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#run).\n */\n@kotlin.internal.InlineOnly\npublic inline fun T.run(block: T.() -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block()\n}\n\n/**\n * Calls the specified function [block] with the given [receiver] as its receiver and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#with).\n */\n@kotlin.internal.InlineOnly\npublic inline fun with(receiver: T, block: T.() -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return receiver.block()\n}\n\n/**\n * Calls the specified function [block] with `this` value as its receiver and returns `this` value.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#apply).\n */\n@kotlin.internal.InlineOnly\npublic inline fun T.apply(block: T.() -> Unit): T {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n block()\n return this\n}\n\n/**\n * Calls the specified function [block] with `this` value as its argument and returns `this` value.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#also).\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun T.also(block: (T) -> Unit): T {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n block(this)\n return this\n}\n\n/**\n * Calls the specified function [block] with `this` value as its argument and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#let).\n */\n@kotlin.internal.InlineOnly\npublic inline fun T.let(block: (T) -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block(this)\n}\n\n/**\n * Returns `this` value if it satisfies the given [predicate] or `null`, if it doesn't.\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun T.takeIf(predicate: (T) -> Boolean): T? {\n contract {\n callsInPlace(predicate, InvocationKind.EXACTLY_ONCE)\n }\n return if (predicate(this)) this else null\n}\n\n/**\n * Returns `this` value if it _does not_ satisfy the given [predicate] or `null`, if it does.\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun T.takeUnless(predicate: (T) -> Boolean): T? {\n contract {\n callsInPlace(predicate, InvocationKind.EXACTLY_ONCE)\n }\n return if (!predicate(this)) this else null\n}\n\n/**\n * Executes the given function [action] specified number of [times].\n *\n * A zero-based index of current iteration is passed as a parameter to [action].\n *\n * @sample samples.misc.ControlFlow.repeat\n */\n@kotlin.internal.InlineOnly\npublic inline fun repeat(times: Int, action: (Int) -> Unit) {\n contract { callsInPlace(action) }\n\n for (index in 0 until times) {\n action(index)\n }\n}\n",null],"names":[],"mappings":"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AAuB,mB;G;qCAAvB,Y;IAA4C,iB;G;uCAA5C,0B;IAAA,uBAAuB,2CAAvB,EAA4C,qCAA5C,C;G;mCAAA,Y;IAAA,OAAuB,sDAAvB,IAA4C,wCAA5C,O;G;mCAAA,Y;IAAA,c;IAAuB,wD;IAAqB,sD;IAA5C,a;G;iCAAA,iB;IAAA,4IAAuB,0CAAvB,IAA4C,sCAA5C,I;G;EAKA,uC;IAKuB,UAEmC,M;IALtD,cAAc,I;IACd,YAAY,E;IAEO,OAAL,IAAK,KAAI,KAAJ,C;IAAL,iB;MAAmB,OAAO,I;KAAxC,cAAc,I;IAEwC,SAAR,OAAQ,SAAQ,OAAR,C;IAAR,mB;MAA4B,OAAO,I;KAAjF,OAAO,gBAAsB,OAAtB,EAAuC,MAAvC,C;EACX,C;ECPA,4C;IvBsVW,Q;IADP,YAAY,oBuBpVI,GvBoVJ,C;IACL,IAAI,aAAJ,C;MACH,auBtViB,WvBsVJ,E;MACb,sBuBvVY,GvBuVZ,EAAS,MAAT,C;MACA,a;;MAEA,Y;;IuB1VJ,OvBqVA,I;EuBpVJ,C;yHCNoC,qB;IAAQ,OAAA,SAAY,O;G;ECJxD,2B;;MAAyC,OAAM,Q;;MAAW,gC;QAAjB,OAAwC,I;;QAAxC,O;;G;ETIzC,4C;IAAA,e;IAAA,iB;IAAA,uB;G;EAAA,0C;IAAA,6C;K;IAKI,wE;IAGA,sE;IAGA,wE;IAGA,wE;IAKA,2C;G;;EAdA,iD;IAAA,gC;IAAA,yC;G;;EAGA,gD;IAAA,gC;IAAA,wC;G;;EAGA,iD;IAAA,gC;IAAA,yC;G;;EAGA,iD;IAAA,gC;IAAA,yC;G;EAKA,yC;IAAA,6C;G;;4HACuB,yB;MAAA,sE;MAAA,mB;QAAQ,gC;O;KAAR,C;;;;;;;;EADvB,qD;IAAA,gC;IAAA,oD;MAAA,mC;KAAA,6C;G;;;;;;EAnBJ,sC;IAAA,0K;G;;EAAA,2C;IAAA,a;MAAA,a;QAAA,8C;MAAA,Y;QAAA,6C;MAAA,a;QAAA,8C;MAAA,a;QAAA,8C;MAAA,QAAA,+E;;G;;EA0BkC,oC;IAAQ,uBAAa,c;G;qHAGJ,qB;IAAQ,mB;G;2HAEhB,qB;IAAQ,qB;G;EAEnD,iC;IACS,kBAD8D,4B;IAC9D,sB;;MU0oCW,Q;MAAhB,wBAA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"} \ No newline at end of file diff --git a/assets/v2/general/js/BHStudios General Scripts.meta.js b/assets/v2/general/js/BHStudios General Scripts.meta.js index 4f675fb..1fdae9e 100644 --- a/assets/v2/general/js/BHStudios General Scripts.meta.js +++ b/assets/v2/general/js/BHStudios General Scripts.meta.js @@ -1 +1 @@ -// Kotlin.kotlin_module_metadata(393729, "BHStudios General Scripts", "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"); +// Kotlin.kotlin_module_metadata(393729, "BHStudios General Scripts", "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"); diff --git a/assets/v2/general/js/BHStudios General Scripts/org/bh/scripts/general/general.kjsm b/assets/v2/general/js/BHStudios General Scripts/org/bh/scripts/general/general.kjsm index 915aca7d9a22198afa217ee71f4ae1b330c8bc96..b0faedbf165263f49709eef873d12e240f2205b1 100644 GIT binary patch delta 97 zcmeBXUCuf|i}BY+ZC^%Vq2i4Ea<5|lyqrqcoYdUZyprO{<%})bk`fGDY#gitQW6YO zGE(9K;!;cod`3J15>gyOEJ92M0tWm$I2dMdFe_zDR%5c}@M04X11XuD$fN}T%K8-C delta 68 zcmZ3^+RZvai}Be;ZC}R8J&euT5)uqtY#gitk`fG3GE(9KVp2>7d`3J1;!+$!EJ92M Y0tWm$I2dMdFe@cYwqmlLT+5^d0NKP0rT_o{ diff --git a/assets/v2/general/js/lib/kotlin.js b/assets/v2/general/js/lib/kotlin.js index 5adccff..81d4a49 100644 --- a/assets/v2/general/js/lib/kotlin.js +++ b/assets/v2/general/js/lib/kotlin.js @@ -1,11 +1,9 @@ (function (root, factory) { if (typeof define === 'function' && define.amd) { define('kotlin', ['exports'], factory); - } - else if (typeof exports === 'object') { + } else if (typeof exports === 'object') { factory(module.exports); - } - else { + } else { root.kotlin = {}; factory(root.kotlin); } @@ -53,15 +51,12 @@ Kotlin.arrayEquals = function (a, b) { if (a === b) { return true; - } - if (!Kotlin.isArrayish(b) || a.length !== b.length) { + }if (!Kotlin.isArrayish(b) || a.length !== b.length) { return false; - } - for (var i = 0, n = a.length; i < n; i++) { + }for (var i = 0, n = a.length; i < n; i++) { if (!Kotlin.equals(a[i], b[i])) { return false; - } - } + }} return true; }; Kotlin.arrayDeepEquals = function (a, b) { @@ -107,8 +102,7 @@ function getPropertyRefMetadata(cache) { if (cache.value === null) { cache.value = {interfaces: [cache.implementedInterface()], baseClass: null, functions: {}, properties: {}, types: {}, staticMembers: {}}; - } - return cache.value; + }return cache.value; } Kotlin.toShort = function (a) { return (a & 65535) << 16 >> 16; @@ -159,49 +153,37 @@ Kotlin.equals = function (obj1, obj2) { if (obj1 == null) { return obj2 == null; - } - if (obj2 == null) { + }if (obj2 == null) { return false; - } - if (obj1 !== obj1) { + }if (obj1 !== obj1) { return obj2 !== obj2; - } - if (typeof obj1 === 'object' && typeof obj1.equals === 'function') { + }if (typeof obj1 === 'object' && typeof obj1.equals === 'function') { return obj1.equals(obj2); - } - if (typeof obj1 === 'number' && typeof obj2 === 'number') { + }if (typeof obj1 === 'number' && typeof obj2 === 'number') { return obj1 === obj2 && (obj1 !== 0 || 1 / obj1 === 1 / obj2); - } - return obj1 === obj2; + }return obj1 === obj2; }; Kotlin.hashCode = function (obj) { if (obj == null) { return 0; - } - var objType = typeof obj; + }var objType = typeof obj; if ('object' === objType) { return 'function' === typeof obj.hashCode ? obj.hashCode() : getObjectHashCode(obj); - } - if ('function' === objType) { + }if ('function' === objType) { return getObjectHashCode(obj); - } - if ('number' === objType) { + }if ('number' === objType) { return Kotlin.numberHashCode(obj); - } - if ('boolean' === objType) { + }if ('boolean' === objType) { return Number(obj); - } - var str = String(obj); + }var str = String(obj); return getStringHashCode(str); }; Kotlin.toString = function (o) { if (o == null) { return 'null'; - } - else if (Kotlin.isArrayish(o)) { + } else if (Kotlin.isArrayish(o)) { return '[...]'; - } - else { + } else { return o.toString(); } }; @@ -211,8 +193,7 @@ if (!(OBJECT_HASH_CODE_PROPERTY_NAME in obj)) { var hash = Math.random() * POW_2_32 | 0; Object.defineProperty(obj, OBJECT_HASH_CODE_PROPERTY_NAME, {value: hash, enumerable: false}); - } - return obj[OBJECT_HASH_CODE_PROPERTY_NAME]; + }return obj[OBJECT_HASH_CODE_PROPERTY_NAME]; } function getStringHashCode(str) { var hash = 0; @@ -234,28 +215,21 @@ var cachedObj = Kotlin.Long.IntCache_[value]; if (cachedObj) { return cachedObj; - } - } - var obj = new Kotlin.Long(value | 0, value < 0 ? -1 : 0); + }}var obj = new Kotlin.Long(value | 0, value < 0 ? -1 : 0); if (-128 <= value && value < 128) { Kotlin.Long.IntCache_[value] = obj; - } - return obj; + }return obj; }; Kotlin.Long.fromNumber = function (value) { - if (isNaN(value) || !isFinite(value)) { + if (isNaN(value)) { return Kotlin.Long.ZERO; - } - else if (value <= -Kotlin.Long.TWO_PWR_63_DBL_) { + } else if (value <= -Kotlin.Long.TWO_PWR_63_DBL_) { return Kotlin.Long.MIN_VALUE; - } - else if (value + 1 >= Kotlin.Long.TWO_PWR_63_DBL_) { + } else if (value + 1 >= Kotlin.Long.TWO_PWR_63_DBL_) { return Kotlin.Long.MAX_VALUE; - } - else if (value < 0) { + } else if (value < 0) { return Kotlin.Long.fromNumber(-value).negate(); - } - else { + } else { return new Kotlin.Long(value % Kotlin.Long.TWO_PWR_32_DBL_ | 0, value / Kotlin.Long.TWO_PWR_32_DBL_ | 0); } }; @@ -265,18 +239,14 @@ Kotlin.Long.fromString = function (str, opt_radix) { if (str.length == 0) { throw Error('number format error: empty string'); - } - var radix = opt_radix || 10; + }var radix = opt_radix || 10; if (radix < 2 || 36 < radix) { throw Error('radix out of range: ' + radix); - } - if (str.charAt(0) == '-') { + }if (str.charAt(0) == '-') { return Kotlin.Long.fromString(str.substring(1), radix).negate(); - } - else if (str.indexOf('-') >= 0) { + } else if (str.indexOf('-') >= 0) { throw Error('number format error: interior "-" character: ' + str); - } - var radixToPower = Kotlin.Long.fromNumber(Math.pow(radix, 8)); + }var radixToPower = Kotlin.Long.fromNumber(Math.pow(radix, 8)); var result = Kotlin.Long.ZERO; for (var i = 0; i < str.length; i += 8) { var size = Math.min(8, str.length - i); @@ -284,8 +254,7 @@ if (size < 8) { var power = Kotlin.Long.fromNumber(Math.pow(radix, size)); result = result.multiply(power).add(Kotlin.Long.fromNumber(value)); - } - else { + } else { result = result.multiply(radixToPower); result = result.add(Kotlin.Long.fromNumber(value)); } @@ -318,22 +287,18 @@ var radix = opt_radix || 10; if (radix < 2 || 36 < radix) { throw Error('radix out of range: ' + radix); - } - if (this.isZero()) { + }if (this.isZero()) { return '0'; - } - if (this.isNegative()) { + }if (this.isNegative()) { if (this.equalsLong(Kotlin.Long.MIN_VALUE)) { var radixLong = Kotlin.Long.fromNumber(radix); var div = this.div(radixLong); var rem = div.multiply(radixLong).subtract(this); return div.toString(radix) + rem.toInt().toString(radix); - } - else { + } else { return '-' + this.negate().toString(radix); } - } - var radixToPower = Kotlin.Long.fromNumber(Math.pow(radix, 6)); + }var radixToPower = Kotlin.Long.fromNumber(Math.pow(radix, 6)); var rem = this; var result = ''; while (true) { @@ -343,8 +308,7 @@ rem = remDiv; if (rem.isZero()) { return digits + result; - } - else { + } else { while (digits.length < 6) { digits = '0' + digits; } @@ -365,18 +329,15 @@ if (this.isNegative()) { if (this.equalsLong(Kotlin.Long.MIN_VALUE)) { return 64; - } - else { + } else { return this.negate().getNumBitsAbs(); } - } - else { + } else { var val = this.high_ != 0 ? this.high_ : this.low_; for (var bit = 31; bit > 0; bit--) { if ((val & 1 << bit) != 0) { break; - } - } + }} return this.high_ != 0 ? bit + 33 : bit + 1; } }; @@ -410,27 +371,22 @@ Kotlin.Long.prototype.compare = function (other) { if (this.equalsLong(other)) { return 0; - } - var thisNeg = this.isNegative(); + }var thisNeg = this.isNegative(); var otherNeg = other.isNegative(); if (thisNeg && !otherNeg) { return -1; - } - if (!thisNeg && otherNeg) { + }if (!thisNeg && otherNeg) { return 1; - } - if (this.subtract(other).isNegative()) { + }if (this.subtract(other).isNegative()) { return -1; - } - else { + } else { return 1; } }; Kotlin.Long.prototype.negate = function () { if (this.equalsLong(Kotlin.Long.MIN_VALUE)) { return Kotlin.Long.MIN_VALUE; - } - else { + } else { return this.not().add(Kotlin.Long.ONE); } }; @@ -463,31 +419,23 @@ Kotlin.Long.prototype.multiply = function (other) { if (this.isZero()) { return Kotlin.Long.ZERO; - } - else if (other.isZero()) { + } else if (other.isZero()) { return Kotlin.Long.ZERO; - } - if (this.equalsLong(Kotlin.Long.MIN_VALUE)) { + }if (this.equalsLong(Kotlin.Long.MIN_VALUE)) { return other.isOdd() ? Kotlin.Long.MIN_VALUE : Kotlin.Long.ZERO; - } - else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) { + } else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) { return this.isOdd() ? Kotlin.Long.MIN_VALUE : Kotlin.Long.ZERO; - } - if (this.isNegative()) { + }if (this.isNegative()) { if (other.isNegative()) { return this.negate().multiply(other.negate()); - } - else { + } else { return this.negate().multiply(other).negate(); } - } - else if (other.isNegative()) { + } else if (other.isNegative()) { return this.multiply(other.negate()).negate(); - } - if (this.lessThan(Kotlin.Long.TWO_PWR_24_) && other.lessThan(Kotlin.Long.TWO_PWR_24_)) { + }if (this.lessThan(Kotlin.Long.TWO_PWR_24_) && other.lessThan(Kotlin.Long.TWO_PWR_24_)) { return Kotlin.Long.fromNumber(this.toNumber() * other.toNumber()); - } - var a48 = this.high_ >>> 16; + }var a48 = this.high_ >>> 16; var a32 = this.high_ & 65535; var a16 = this.low_ >>> 16; var a00 = this.low_ & 65535; @@ -521,45 +469,35 @@ Kotlin.Long.prototype.div = function (other) { if (other.isZero()) { throw Error('division by zero'); - } - else if (this.isZero()) { + } else if (this.isZero()) { return Kotlin.Long.ZERO; - } - if (this.equalsLong(Kotlin.Long.MIN_VALUE)) { + }if (this.equalsLong(Kotlin.Long.MIN_VALUE)) { if (other.equalsLong(Kotlin.Long.ONE) || other.equalsLong(Kotlin.Long.NEG_ONE)) { return Kotlin.Long.MIN_VALUE; - } - else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) { + } else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) { return Kotlin.Long.ONE; - } - else { + } else { var halfThis = this.shiftRight(1); var approx = halfThis.div(other).shiftLeft(1); if (approx.equalsLong(Kotlin.Long.ZERO)) { return other.isNegative() ? Kotlin.Long.ONE : Kotlin.Long.NEG_ONE; - } - else { + } else { var rem = this.subtract(other.multiply(approx)); var result = approx.add(rem.div(other)); return result; } } - } - else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) { + } else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) { return Kotlin.Long.ZERO; - } - if (this.isNegative()) { + }if (this.isNegative()) { if (other.isNegative()) { return this.negate().div(other.negate()); - } - else { + } else { return this.negate().div(other).negate(); } - } - else if (other.isNegative()) { + } else if (other.isNegative()) { return this.div(other.negate()).negate(); - } - var res = Kotlin.Long.ZERO; + }var res = Kotlin.Long.ZERO; var rem = this; while (rem.greaterThanOrEqual(other)) { var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); @@ -574,8 +512,7 @@ } if (approxRes.isZero()) { approxRes = Kotlin.Long.ONE; - } - res = res.add(approxRes); + }res = res.add(approxRes); rem = rem.subtract(approxRem); } return res; @@ -599,14 +536,12 @@ numBits &= 63; if (numBits == 0) { return this; - } - else { + } else { var low = this.low_; if (numBits < 32) { var high = this.high_; return Kotlin.Long.fromBits(low << numBits, high << numBits | low >>> 32 - numBits); - } - else { + } else { return Kotlin.Long.fromBits(0, low << numBits - 32); } } @@ -615,14 +550,12 @@ numBits &= 63; if (numBits == 0) { return this; - } - else { + } else { var high = this.high_; if (numBits < 32) { var low = this.low_; return Kotlin.Long.fromBits(low >>> numBits | high << 32 - numBits, high >> numBits); - } - else { + } else { return Kotlin.Long.fromBits(high >> numBits - 32, high >= 0 ? 0 : -1); } } @@ -631,17 +564,14 @@ numBits &= 63; if (numBits == 0) { return this; - } - else { + } else { var high = this.high_; if (numBits < 32) { var low = this.low_; return Kotlin.Long.fromBits(low >>> numBits | high << 32 - numBits, high >>> numBits); - } - else if (numBits == 32) { + } else if (numBits == 32) { return Kotlin.Long.fromBits(high, 0); - } - else { + } else { return Kotlin.Long.fromBits(high >>> numBits - 32, 0); } } @@ -718,6 +648,9 @@ Kotlin.setCoroutineResult = function (value, qualifier) { throwMarkerError(); }; + Kotlin.getReifiedTypeParameterKType = function (typeParameter) { + throwMarkerError(); + }; function throwMarkerError() { throw new Error('This marker function should never been called. ' + 'Looks like compiler did not eliminate it properly. ' + 'Please, report an issue if you caught this exception.'); } @@ -731,13 +664,10 @@ if (typeA === 'number') { if (typeof b === 'number') { return Kotlin.doubleCompareTo(a, b); - } + }return Kotlin.primitiveCompareTo(a, b); + }if (typeA === 'string' || typeA === 'boolean') { return Kotlin.primitiveCompareTo(a, b); - } - if (typeA === 'string' || typeA === 'boolean') { - return Kotlin.primitiveCompareTo(a, b); - } - return a.compareTo_11rb$(b); + }return a.compareTo_11rb$(b); }; Kotlin.primitiveCompareTo = function (a, b) { return a < b ? -1 : a > b ? 1 : 0; @@ -752,8 +682,7 @@ return 0; var ia = 1 / a; return ia === 1 / b ? 0 : ia < 0 ? -1 : 1; - } - return a !== a ? b !== b ? 0 : 1 : -1; + }return a !== a ? b !== b ? 0 : 1 : -1; }; Kotlin.charInc = function (value) { return Kotlin.toChar(value + 1); @@ -777,8 +706,7 @@ if (bufInt32[lowIndex] !== 0) { lowIndex = 1; highIndex = 0; - } - Kotlin.doubleToBits = function (value) { + }Kotlin.doubleToBits = function (value) { return Kotlin.doubleToRawBits(isNaN(value) ? NaN : value); }; Kotlin.doubleToRawBits = function (value) { @@ -808,8 +736,7 @@ Kotlin.numberHashCode = function (obj) { if ((obj | 0) === obj) { return obj | 0; - } - else { + } else { bufFloat64[0] = obj; return (bufInt32[highIndex] * 31 | 0) + bufInt32[lowIndex] | 0; } @@ -823,39 +750,31 @@ position = position || 0; return this.lastIndexOf(searchString, position) === position; }; - } - if (typeof String.prototype.endsWith === 'undefined') { + }if (typeof String.prototype.endsWith === 'undefined') { String.prototype.endsWith = function (searchString, position) { var subjectString = this.toString(); if (position === undefined || position > subjectString.length) { position = subjectString.length; - } - position -= searchString.length; + }position -= searchString.length; var lastIndex = subjectString.indexOf(searchString, position); return lastIndex !== -1 && lastIndex === position; }; - } - if (typeof Math.sign === 'undefined') { + }if (typeof Math.sign === 'undefined') { Math.sign = function (x) { x = +x; if (x === 0 || isNaN(x)) { return Number(x); - } - return x > 0 ? 1 : -1; + }return x > 0 ? 1 : -1; }; - } - if (typeof Math.trunc === 'undefined') { + }if (typeof Math.trunc === 'undefined') { Math.trunc = function (x) { if (isNaN(x)) { return NaN; - } - if (x > 0) { + }if (x > 0) { return Math.floor(x); - } - return Math.ceil(x); + }return Math.ceil(x); }; - } - (function () { + }(function () { var epsilon = 2.220446049250313E-16; var taylor_2_bound = Math.sqrt(epsilon); var taylor_n_bound = Math.sqrt(taylor_2_bound); @@ -867,10 +786,8 @@ var result = x; if (Math.abs(x) > taylor_2_bound) { result += x * x * x / 6; - } - return result; - } - else { + }return result; + } else { var y = Math.exp(x); var y1 = 1 / y; if (!isFinite(y)) @@ -880,8 +797,7 @@ return (y - y1) / 2; } }; - } - if (typeof Math.cosh === 'undefined') { + }if (typeof Math.cosh === 'undefined') { Math.cosh = function (x) { var y = Math.exp(x); var y1 = 1 / y; @@ -889,110 +805,88 @@ return Math.exp(Math.abs(x) - Math.LN2); return (y + y1) / 2; }; - } - if (typeof Math.tanh === 'undefined') { + }if (typeof Math.tanh === 'undefined') { Math.tanh = function (x) { if (Math.abs(x) < taylor_n_bound) { var result = x; if (Math.abs(x) > taylor_2_bound) { result -= x * x * x / 3; - } - return result; - } - else { + }return result; + } else { var a = Math.exp(+x), b = Math.exp(-x); return a === Infinity ? 1 : b === Infinity ? -1 : (a - b) / (a + b); } }; - } - if (typeof Math.asinh === 'undefined') { + }if (typeof Math.asinh === 'undefined') { var asinh = function (x) { if (x >= +taylor_n_bound) { if (x > upper_taylor_n_bound) { if (x > upper_taylor_2_bound) { return Math.log(x) + Math.LN2; - } - else { + } else { return Math.log(x * 2 + 1 / (x * 2)); } - } - else { + } else { return Math.log(x + Math.sqrt(x * x + 1)); } - } - else if (x <= -taylor_n_bound) { + } else if (x <= -taylor_n_bound) { return -asinh(-x); - } - else { + } else { var result = x; if (Math.abs(x) >= taylor_2_bound) { var x3 = x * x * x; result -= x3 / 6; - } - return result; + }return result; } }; Math.asinh = asinh; - } - if (typeof Math.acosh === 'undefined') { + }if (typeof Math.acosh === 'undefined') { Math.acosh = function (x) { if (x < 1) { return NaN; - } - else if (x - 1 >= taylor_n_bound) { + } else if (x - 1 >= taylor_n_bound) { if (x > upper_taylor_2_bound) { return Math.log(x) + Math.LN2; - } - else { + } else { return Math.log(x + Math.sqrt(x * x - 1)); } - } - else { + } else { var y = Math.sqrt(x - 1); var result = y; if (y >= taylor_2_bound) { var y3 = y * y * y; result -= y3 / 12; - } - return Math.sqrt(2) * result; + }return Math.sqrt(2) * result; } }; - } - if (typeof Math.atanh === 'undefined') { + }if (typeof Math.atanh === 'undefined') { Math.atanh = function (x) { if (Math.abs(x) < taylor_n_bound) { var result = x; if (Math.abs(x) > taylor_2_bound) { result += x * x * x / 3; - } - return result; - } - return Math.log((1 + x) / (1 - x)) / 2; + }return result; + }return Math.log((1 + x) / (1 - x)) / 2; }; - } - if (typeof Math.log1p === 'undefined') { + }if (typeof Math.log1p === 'undefined') { Math.log1p = function (x) { if (Math.abs(x) < taylor_n_bound) { var x2 = x * x; var x3 = x2 * x; var x4 = x3 * x; return -x4 / 4 + x3 / 3 - x2 / 2 + x; - } - return Math.log(x + 1); + }return Math.log(x + 1); }; - } - if (typeof Math.expm1 === 'undefined') { + }if (typeof Math.expm1 === 'undefined') { Math.expm1 = function (x) { if (Math.abs(x) < taylor_n_bound) { var x2 = x * x; var x3 = x2 * x; var x4 = x3 * x; return x4 / 24 + x3 / 6 + x2 / 2 + x; - } - return Math.exp(x) - 1; + }return Math.exp(x) - 1; }; - } - }()); + }}()); if (typeof Math.hypot === 'undefined') { Math.hypot = function () { var y = 0; @@ -1000,28 +894,50 @@ for (var i = 0; i < length; i++) { if (arguments[i] === Infinity || arguments[i] === -Infinity) { return Infinity; - } - y += arguments[i] * arguments[i]; + }y += arguments[i] * arguments[i]; } return Math.sqrt(y); }; - } - if (typeof Math.log10 === 'undefined') { + }if (typeof Math.log10 === 'undefined') { Math.log10 = function (x) { return Math.log(x) * Math.LOG10E; }; - } - if (typeof Math.log2 === 'undefined') { + }if (typeof Math.log2 === 'undefined') { Math.log2 = function (x) { return Math.log(x) * Math.LOG2E; }; - } - if (typeof ArrayBuffer.isView === 'undefined') { + }if (typeof Math.clz32 === 'undefined') { + Math.clz32 = function (log, LN2) { + return function (x) { + var asUint = x >>> 0; + if (asUint === 0) { + return 32; + }return 31 - (log(asUint) / LN2 | 0) | 0; + }; + }(Math.log, Math.LN2); + }if (typeof ArrayBuffer.isView === 'undefined') { ArrayBuffer.isView = function (a) { return a != null && a.__proto__ != null && a.__proto__.__proto__ === Int8Array.prototype.__proto__; }; - } - (function () { + }if (typeof Array.prototype.fill === 'undefined') { + Array.prototype.fill = function () { + if (this == null) { + throw new TypeError('this is null or not defined'); + }var O = Object(this); + var len = O.length >>> 0; + var start = arguments[1]; + var relativeStart = start >> 0; + var k = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len); + var end = arguments[2]; + var relativeEnd = end === undefined ? len : end >> 0; + var final = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); + while (k < final) { + O[k] = value; + k++; + } + return O; + }; + }(function () { function normalizeOffset(offset, length) { if (offset < 0) return Math.max(0, offset + length); @@ -1030,23 +946,22 @@ function typedArraySlice(begin, end) { if (typeof end === 'undefined') { end = this.length; - } - begin = normalizeOffset(begin || 0, this.length); + }begin = normalizeOffset(begin || 0, this.length); end = Math.max(begin, normalizeOffset(end, this.length)); return new this.constructor(this.subarray(begin, end)); } var arrays = [Int8Array, Int16Array, Uint16Array, Int32Array, Float32Array, Float64Array]; for (var i = 0; i < arrays.length; ++i) { var TypedArray = arrays[i]; - if (typeof TypedArray.prototype.slice === 'undefined') { + if (typeof TypedArray.prototype.fill === 'undefined') { + TypedArray.prototype.fill = Array.prototype.fill; + }if (typeof TypedArray.prototype.slice === 'undefined') { Object.defineProperty(TypedArray.prototype, 'slice', {value: typedArraySlice}); - } - } + }} try { (function () { }.apply(null, new Int32Array(0))); - } - catch (e) { + } catch (e) { var apply = Function.prototype.apply; Object.defineProperty(Function.prototype, 'apply', {value: function (self, array) { return apply.call(this, self, [].slice.call(array)); @@ -1058,8 +973,7 @@ Object.defineProperty(TypedArray.prototype, 'map', {value: function (callback, self) { return [].slice.call(this).map(callback, self); }}); - } - } + }} var totalOrderComparator = function (a, b) { if (a < b) return -1; @@ -1070,8 +984,7 @@ return 0; var ia = 1 / a; return ia === 1 / b ? 0 : ia < 0 ? -1 : 1; - } - return a !== a ? b !== b ? 0 : 1 : -1; + }return a !== a ? b !== b ? 0 : 1 : -1; }; for (var i = 0; i < arrays.length; ++i) { var TypedArray = arrays[i]; @@ -1079,33 +992,28 @@ Object.defineProperty(TypedArray.prototype, 'sort', {value: function (compareFunction) { return Array.prototype.sort.call(this, compareFunction || totalOrderComparator); }}); - } - } + }} }()); Kotlin.Kind = {CLASS: 'class', INTERFACE: 'interface', OBJECT: 'object'}; Kotlin.callGetter = function (thisObject, klass, propertyName) { var propertyDescriptor = Object.getOwnPropertyDescriptor(klass, propertyName); if (propertyDescriptor != null && propertyDescriptor.get != null) { return propertyDescriptor.get.call(thisObject); - } - propertyDescriptor = Object.getOwnPropertyDescriptor(thisObject, propertyName); + }propertyDescriptor = Object.getOwnPropertyDescriptor(thisObject, propertyName); if (propertyDescriptor != null && 'value' in propertyDescriptor) { return thisObject[propertyName]; - } - return Kotlin.callGetter(thisObject, Object.getPrototypeOf(klass), propertyName); + }return Kotlin.callGetter(thisObject, Object.getPrototypeOf(klass), propertyName); }; Kotlin.callSetter = function (thisObject, klass, propertyName, value) { var propertyDescriptor = Object.getOwnPropertyDescriptor(klass, propertyName); if (propertyDescriptor != null && propertyDescriptor.set != null) { propertyDescriptor.set.call(thisObject, value); return; - } - propertyDescriptor = Object.getOwnPropertyDescriptor(thisObject, propertyName); + }propertyDescriptor = Object.getOwnPropertyDescriptor(thisObject, propertyName); if (propertyDescriptor != null && 'value' in propertyDescriptor) { thisObject[propertyName] = value; return; - } - Kotlin.callSetter(thisObject, Object.getPrototypeOf(klass), propertyName, value); + }Kotlin.callSetter(thisObject, Object.getPrototypeOf(klass), propertyName, value); }; function isInheritanceFromInterface(ctor, iface) { if (ctor === iface) @@ -1116,10 +1024,8 @@ for (var i = 0; i < interfaces.length; i++) { if (isInheritanceFromInterface(interfaces[i], iface)) { return true; - } - } - } - var superPrototype = ctor.prototype != null ? Object.getPrototypeOf(ctor.prototype) : null; + }} + }var superPrototype = ctor.prototype != null ? Object.getPrototypeOf(ctor.prototype) : null; var superConstructor = superPrototype != null ? superPrototype.constructor : null; return superConstructor != null && isInheritanceFromInterface(superConstructor, iface); } @@ -1133,29 +1039,22 @@ return true; default:return object instanceof Object; } - } - if (object == null || klass == null || (typeof object !== 'object' && typeof object !== 'function')) { + }if (object == null || klass == null || (typeof object !== 'object' && typeof object !== 'function')) { return false; - } - if (typeof klass === 'function' && object instanceof klass) { + }if (typeof klass === 'function' && object instanceof klass) { return true; - } - var proto = Object.getPrototypeOf(klass); + }var proto = Object.getPrototypeOf(klass); var constructor = proto != null ? proto.constructor : null; if (constructor != null && '$metadata$' in constructor) { var metadata = constructor.$metadata$; if (metadata.kind === Kotlin.Kind.OBJECT) { return object === klass; - } - } - var klassMetadata = klass.$metadata$; + }}var klassMetadata = klass.$metadata$; if (klassMetadata == null) { return object instanceof klass; - } - if (klassMetadata.kind === Kotlin.Kind.INTERFACE && object.constructor != null) { + }if (klassMetadata.kind === Kotlin.Kind.INTERFACE && object.constructor != null) { return isInheritanceFromInterface(object.constructor, klass); - } - return false; + }return false; }; Kotlin.isNumber = function (a) { return typeof a == 'number' || a instanceof Kotlin.Long; @@ -1213,8 +1112,7 @@ function Enum$Companion_getInstance() { if (Enum$Companion_instance === null) { new Enum$Companion(); - } - return Enum$Companion_instance; + }return Enum$Companion_instance; } Enum.$metadata$ = {kind: Kind_CLASS, simpleName: 'Enum', interfaces: [Comparable]}; function newArray(size, initValue) { @@ -1365,8 +1263,7 @@ function DoubleCompanionObject_getInstance() { if (DoubleCompanionObject_instance === null) { new DoubleCompanionObject(); - } - return DoubleCompanionObject_instance; + }return DoubleCompanionObject_instance; } function FloatCompanionObject() { FloatCompanionObject_instance = this; @@ -1381,8 +1278,7 @@ function FloatCompanionObject_getInstance() { if (FloatCompanionObject_instance === null) { new FloatCompanionObject(); - } - return FloatCompanionObject_instance; + }return FloatCompanionObject_instance; } function IntCompanionObject() { IntCompanionObject_instance = this; @@ -1396,8 +1292,7 @@ function IntCompanionObject_getInstance() { if (IntCompanionObject_instance === null) { new IntCompanionObject(); - } - return IntCompanionObject_instance; + }return IntCompanionObject_instance; } function LongCompanionObject() { LongCompanionObject_instance = this; @@ -1411,8 +1306,7 @@ function LongCompanionObject_getInstance() { if (LongCompanionObject_instance === null) { new LongCompanionObject(); - } - return LongCompanionObject_instance; + }return LongCompanionObject_instance; } function ShortCompanionObject() { ShortCompanionObject_instance = this; @@ -1426,8 +1320,7 @@ function ShortCompanionObject_getInstance() { if (ShortCompanionObject_instance === null) { new ShortCompanionObject(); - } - return ShortCompanionObject_instance; + }return ShortCompanionObject_instance; } function ByteCompanionObject() { ByteCompanionObject_instance = this; @@ -1441,8 +1334,7 @@ function ByteCompanionObject_getInstance() { if (ByteCompanionObject_instance === null) { new ByteCompanionObject(); - } - return ByteCompanionObject_instance; + }return ByteCompanionObject_instance; } function CharCompanionObject() { CharCompanionObject_instance = this; @@ -1462,8 +1354,7 @@ function CharCompanionObject_getInstance() { if (CharCompanionObject_instance === null) { new CharCompanionObject(); - } - return CharCompanionObject_instance; + }return CharCompanionObject_instance; } function StringCompanionObject() { StringCompanionObject_instance = this; @@ -1473,8 +1364,7 @@ function StringCompanionObject_getInstance() { if (StringCompanionObject_instance === null) { new StringCompanionObject(); - } - return StringCompanionObject_instance; + }return StringCompanionObject_instance; } function BooleanCompanionObject() { BooleanCompanionObject_instance = this; @@ -1484,8 +1374,7 @@ function BooleanCompanionObject_getInstance() { if (BooleanCompanionObject_instance === null) { new BooleanCompanionObject(); - } - return BooleanCompanionObject_instance; + }return BooleanCompanionObject_instance; } var package$kotlin = _.kotlin || (_.kotlin = {}); package$kotlin.Comparable = Comparable; @@ -1568,6 +1457,7 @@ var L3406603774387020532 = new Kotlin.Long(1993859828, 793161749); var DeprecationLevel = Kotlin.kotlin.DeprecationLevel; var L_9223372036854775807 = new Kotlin.Long(1, -2147483648); + var L_256204778801521550 = new Kotlin.Long(1908874354, -59652324); var L2047 = Kotlin.Long.fromInt(2047); CharProgressionIterator.prototype = Object.create(CharIterator.prototype); CharProgressionIterator.prototype.constructor = CharProgressionIterator; @@ -1699,16 +1589,26 @@ PrimitiveKClassImpl.prototype.constructor = PrimitiveKClassImpl; NothingKClassImpl.prototype = Object.create(KClassImpl.prototype); NothingKClassImpl.prototype.constructor = NothingKClassImpl; + CharacterCodingException.prototype = Object.create(Exception.prototype); + CharacterCodingException.prototype.constructor = CharacterCodingException; RegexOption.prototype = Object.create(Enum.prototype); RegexOption.prototype.constructor = RegexOption; findNext$ObjectLiteral$get_findNext$ObjectLiteral$groupValues$ObjectLiteral.prototype = Object.create(AbstractList.prototype); findNext$ObjectLiteral$get_findNext$ObjectLiteral$groupValues$ObjectLiteral.prototype.constructor = findNext$ObjectLiteral$get_findNext$ObjectLiteral$groupValues$ObjectLiteral; findNext$ObjectLiteral$groups$ObjectLiteral.prototype = Object.create(AbstractCollection.prototype); findNext$ObjectLiteral$groups$ObjectLiteral.prototype.constructor = findNext$ObjectLiteral$groups$ObjectLiteral; - CharacterCodingException.prototype = Object.create(Exception.prototype); - CharacterCodingException.prototype.constructor = CharacterCodingException; + DurationUnit.prototype = Object.create(Enum.prototype); + DurationUnit.prototype.constructor = DurationUnit; + HrTimeSource$markNow$ObjectLiteral.prototype = Object.create(TimeMark.prototype); + HrTimeSource$markNow$ObjectLiteral.prototype.constructor = HrTimeSource$markNow$ObjectLiteral; + PerformanceTimeSource.prototype = Object.create(AbstractDoubleTimeSource.prototype); + PerformanceTimeSource.prototype.constructor = PerformanceTimeSource; + DateNowTimeSource.prototype = Object.create(AbstractDoubleTimeSource.prototype); + DateNowTimeSource.prototype.constructor = DateNowTimeSource; Experimental$Level.prototype = Object.create(Enum.prototype); Experimental$Level.prototype.constructor = Experimental$Level; + RequiresOptIn$Level.prototype = Object.create(Enum.prototype); + RequiresOptIn$Level.prototype.constructor = RequiresOptIn$Level; State.prototype = Object.create(Enum.prototype); State.prototype.constructor = State; AbstractList$SubList.prototype = Object.create(AbstractList.prototype); @@ -1721,6 +1621,8 @@ AbstractMap$get_AbstractMap$keys$ObjectLiteral.prototype.constructor = AbstractMap$get_AbstractMap$keys$ObjectLiteral; AbstractMap$get_AbstractMap$values$ObjectLiteral.prototype = Object.create(AbstractCollection.prototype); AbstractMap$get_AbstractMap$values$ObjectLiteral.prototype.constructor = AbstractMap$get_AbstractMap$values$ObjectLiteral; + ArrayDeque.prototype = Object.create(AbstractMutableList.prototype); + ArrayDeque.prototype.constructor = ArrayDeque; ReversedListReadOnly.prototype = Object.create(AbstractList.prototype); ReversedListReadOnly.prototype.constructor = ReversedListReadOnly; ReversedList.prototype = Object.create(AbstractMutableList.prototype); @@ -1749,6 +1651,14 @@ XorWowRandom.prototype.constructor = XorWowRandom; iterator$ObjectLiteral.prototype = Object.create(CharIterator.prototype); iterator$ObjectLiteral.prototype.constructor = iterator$ObjectLiteral; + AdjustedTimeMark.prototype = Object.create(TimeMark.prototype); + AdjustedTimeMark.prototype.constructor = AdjustedTimeMark; + AbstractLongTimeSource$LongTimeMark.prototype = Object.create(TimeMark.prototype); + AbstractLongTimeSource$LongTimeMark.prototype.constructor = AbstractLongTimeSource$LongTimeMark; + AbstractDoubleTimeSource$DoubleTimeMark.prototype = Object.create(TimeMark.prototype); + AbstractDoubleTimeSource$DoubleTimeMark.prototype.constructor = AbstractDoubleTimeSource$DoubleTimeMark; + TestTimeSource.prototype = Object.create(AbstractLongTimeSource.prototype); + TestTimeSource.prototype.constructor = TestTimeSource; LazyThreadSafetyMode.prototype = Object.create(Enum.prototype); LazyThreadSafetyMode.prototype.constructor = LazyThreadSafetyMode; NotImplementedError.prototype = Object.create(Error_0.prototype); @@ -2063,8 +1973,7 @@ if (predicate(element)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -2079,8 +1988,7 @@ if (predicate(element)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -2095,8 +2003,7 @@ if (predicate(element)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -2111,8 +2018,7 @@ if (predicate(element)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -2127,8 +2033,7 @@ if (predicate(element)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -2143,8 +2048,7 @@ if (predicate(element)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -2159,8 +2063,7 @@ if (predicate(element)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -2175,8 +2078,7 @@ if (predicate(element)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -2194,8 +2096,7 @@ if (predicate(toBoxedChar(element))) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -2216,8 +2117,7 @@ if (predicate(element)) { lastOrNull$result = element; break lastOrNull$break; - } - } + }} lastOrNull$result = null; } while (false); @@ -2238,8 +2138,7 @@ if (predicate(element)) { lastOrNull$result = element; break lastOrNull$break; - } - } + }} lastOrNull$result = null; } while (false); @@ -2260,8 +2159,7 @@ if (predicate(element)) { lastOrNull$result = element; break lastOrNull$break; - } - } + }} lastOrNull$result = null; } while (false); @@ -2282,8 +2180,7 @@ if (predicate(element)) { lastOrNull$result = element; break lastOrNull$break; - } - } + }} lastOrNull$result = null; } while (false); @@ -2304,8 +2201,7 @@ if (predicate(element)) { lastOrNull$result = element; break lastOrNull$break; - } - } + }} lastOrNull$result = null; } while (false); @@ -2326,8 +2222,7 @@ if (predicate(element)) { lastOrNull$result = element; break lastOrNull$break; - } - } + }} lastOrNull$result = null; } while (false); @@ -2348,8 +2243,7 @@ if (predicate(element)) { lastOrNull$result = element; break lastOrNull$break; - } - } + }} lastOrNull$result = null; } while (false); @@ -2370,8 +2264,7 @@ if (predicate(element)) { lastOrNull$result = element; break lastOrNull$break; - } - } + }} lastOrNull$result = null; } while (false); @@ -2393,8 +2286,7 @@ if (predicate(toBoxedChar(element))) { lastOrNull$result = element; break lastOrNull$break; - } - } + }} lastOrNull$result = null; } while (false); @@ -2755,15 +2647,12 @@ for (var index = 0; index !== $receiver.length; ++index) { if ($receiver[index] == null) { return index; - } - } - } - else { + }} + } else { for (var index_0 = 0; index_0 !== $receiver.length; ++index_0) { if (equals(element, $receiver[index_0])) { return index_0; - } - } + }} } return -1; } @@ -2771,128 +2660,112 @@ for (var index = 0; index !== $receiver.length; ++index) { if (element === $receiver[index]) { return index; - } - } + }} return -1; } function indexOf_1($receiver, element) { for (var index = 0; index !== $receiver.length; ++index) { if (element === $receiver[index]) { return index; - } - } + }} return -1; } function indexOf_2($receiver, element) { for (var index = 0; index !== $receiver.length; ++index) { if (element === $receiver[index]) { return index; - } - } + }} return -1; } function indexOf_3($receiver, element) { for (var index = 0; index !== $receiver.length; ++index) { if (equals(element, $receiver[index])) { return index; - } - } + }} return -1; } function indexOf_4($receiver, element) { for (var index = 0; index !== $receiver.length; ++index) { if (element === $receiver[index]) { return index; - } - } + }} return -1; } function indexOf_5($receiver, element) { for (var index = 0; index !== $receiver.length; ++index) { if (element === $receiver[index]) { return index; - } - } + }} return -1; } function indexOf_6($receiver, element) { for (var index = 0; index !== $receiver.length; ++index) { if (element === $receiver[index]) { return index; - } - } + }} return -1; } function indexOf_7($receiver, element) { for (var index = 0; index !== $receiver.length; ++index) { if (element === $receiver[index]) { return index; - } - } + }} return -1; } var indexOfFirst = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_sfx99b$', function ($receiver, predicate) { for (var index = 0; index !== $receiver.length; ++index) { if (predicate($receiver[index])) { return index; - } - } + }} return -1; }); var indexOfFirst_0 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_c3i447$', function ($receiver, predicate) { for (var index = 0; index !== $receiver.length; ++index) { if (predicate($receiver[index])) { return index; - } - } + }} return -1; }); var indexOfFirst_1 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_247xw3$', function ($receiver, predicate) { for (var index = 0; index !== $receiver.length; ++index) { if (predicate($receiver[index])) { return index; - } - } + }} return -1; }); var indexOfFirst_2 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_il4kyb$', function ($receiver, predicate) { for (var index = 0; index !== $receiver.length; ++index) { if (predicate($receiver[index])) { return index; - } - } + }} return -1; }); var indexOfFirst_3 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_i1oc7r$', function ($receiver, predicate) { for (var index = 0; index !== $receiver.length; ++index) { if (predicate($receiver[index])) { return index; - } - } + }} return -1; }); var indexOfFirst_4 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_u4nq1f$', function ($receiver, predicate) { for (var index = 0; index !== $receiver.length; ++index) { if (predicate($receiver[index])) { return index; - } - } + }} return -1; }); var indexOfFirst_5 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_3vq27r$', function ($receiver, predicate) { for (var index = 0; index !== $receiver.length; ++index) { if (predicate($receiver[index])) { return index; - } - } + }} return -1; }); var indexOfFirst_6 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_xffwn9$', function ($receiver, predicate) { for (var index = 0; index !== $receiver.length; ++index) { if (predicate($receiver[index])) { return index; - } - } + }} return -1; }); var indexOfFirst_7 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_3ji0pj$', wrapFunction(function () { @@ -2901,8 +2774,7 @@ for (var index = 0; index !== $receiver.length; ++index) { if (predicate(toBoxedChar($receiver[index]))) { return index; - } - } + }} return -1; }; })); @@ -2916,8 +2788,7 @@ var index = tmp$.next(); if (predicate($receiver[index])) { return index; - } - } + }} return -1; }; })); @@ -2931,8 +2802,7 @@ var index = tmp$.next(); if (predicate($receiver[index])) { return index; - } - } + }} return -1; }; })); @@ -2946,8 +2816,7 @@ var index = tmp$.next(); if (predicate($receiver[index])) { return index; - } - } + }} return -1; }; })); @@ -2961,8 +2830,7 @@ var index = tmp$.next(); if (predicate($receiver[index])) { return index; - } - } + }} return -1; }; })); @@ -2976,8 +2844,7 @@ var index = tmp$.next(); if (predicate($receiver[index])) { return index; - } - } + }} return -1; }; })); @@ -2991,8 +2858,7 @@ var index = tmp$.next(); if (predicate($receiver[index])) { return index; - } - } + }} return -1; }; })); @@ -3006,8 +2872,7 @@ var index = tmp$.next(); if (predicate($receiver[index])) { return index; - } - } + }} return -1; }; })); @@ -3021,8 +2886,7 @@ var index = tmp$.next(); if (predicate($receiver[index])) { return index; - } - } + }} return -1; }; })); @@ -3037,8 +2901,7 @@ var index = tmp$.next(); if (predicate(toBoxedChar($receiver[index]))) { return index; - } - } + }} return -1; }; })); @@ -3240,17 +3103,14 @@ var index = tmp$.next(); if ($receiver[index] == null) { return index; - } - } - } - else { + }} + } else { tmp$_0 = reversed_9(get_indices($receiver)).iterator(); while (tmp$_0.hasNext()) { var index_0 = tmp$_0.next(); if (equals(element, $receiver[index_0])) { return index_0; - } - } + }} } return -1; } @@ -3261,8 +3121,7 @@ var index = tmp$.next(); if (element === $receiver[index]) { return index; - } - } + }} return -1; } function lastIndexOf_1($receiver, element) { @@ -3272,8 +3131,7 @@ var index = tmp$.next(); if (element === $receiver[index]) { return index; - } - } + }} return -1; } function lastIndexOf_2($receiver, element) { @@ -3283,8 +3141,7 @@ var index = tmp$.next(); if (element === $receiver[index]) { return index; - } - } + }} return -1; } function lastIndexOf_3($receiver, element) { @@ -3294,8 +3151,7 @@ var index = tmp$.next(); if (equals(element, $receiver[index])) { return index; - } - } + }} return -1; } function lastIndexOf_4($receiver, element) { @@ -3305,8 +3161,7 @@ var index = tmp$.next(); if (element === $receiver[index]) { return index; - } - } + }} return -1; } function lastIndexOf_5($receiver, element) { @@ -3316,8 +3171,7 @@ var index = tmp$.next(); if (element === $receiver[index]) { return index; - } - } + }} return -1; } function lastIndexOf_6($receiver, element) { @@ -3327,8 +3181,7 @@ var index = tmp$.next(); if (element === $receiver[index]) { return index; - } - } + }} return -1; } function lastIndexOf_7($receiver, element) { @@ -3338,8 +3191,7 @@ var index = tmp$.next(); if (element === $receiver[index]) { return index; - } - } + }} return -1; } function lastOrNull($receiver) { @@ -3613,6 +3465,114 @@ throw new NoSuchElementException('Array is empty.'); return $receiver[random.nextInt_za3lpa$($receiver.length)]; } + var randomOrNull = defineInlineFunction('kotlin.kotlin.collections.randomOrNull_us0mfu$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.collections.randomOrNull_lj338n$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + var randomOrNull_0 = defineInlineFunction('kotlin.kotlin.collections.randomOrNull_964n91$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.collections.randomOrNull_ciead0$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + var randomOrNull_1 = defineInlineFunction('kotlin.kotlin.collections.randomOrNull_i2lc79$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.collections.randomOrNull_wayomy$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + var randomOrNull_2 = defineInlineFunction('kotlin.kotlin.collections.randomOrNull_tmsbgo$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.collections.randomOrNull_os0q87$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + var randomOrNull_3 = defineInlineFunction('kotlin.kotlin.collections.randomOrNull_se6h4x$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.collections.randomOrNull_2uk8lc$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + var randomOrNull_4 = defineInlineFunction('kotlin.kotlin.collections.randomOrNull_rjqryz$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.collections.randomOrNull_zcvl96$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + var randomOrNull_5 = defineInlineFunction('kotlin.kotlin.collections.randomOrNull_bvy38s$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.collections.randomOrNull_k31a39$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + var randomOrNull_6 = defineInlineFunction('kotlin.kotlin.collections.randomOrNull_l1lu5t$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.collections.randomOrNull_mwcbea$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + var randomOrNull_7 = defineInlineFunction('kotlin.kotlin.collections.randomOrNull_355ntz$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.collections.randomOrNull_8kgqmy$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + function randomOrNull_8($receiver, random) { + if ($receiver.length === 0) + return null; + return $receiver[random.nextInt_za3lpa$($receiver.length)]; + } + function randomOrNull_9($receiver, random) { + if ($receiver.length === 0) + return null; + return $receiver[random.nextInt_za3lpa$($receiver.length)]; + } + function randomOrNull_10($receiver, random) { + if ($receiver.length === 0) + return null; + return $receiver[random.nextInt_za3lpa$($receiver.length)]; + } + function randomOrNull_11($receiver, random) { + if ($receiver.length === 0) + return null; + return $receiver[random.nextInt_za3lpa$($receiver.length)]; + } + function randomOrNull_12($receiver, random) { + if ($receiver.length === 0) + return null; + return $receiver[random.nextInt_za3lpa$($receiver.length)]; + } + function randomOrNull_13($receiver, random) { + if ($receiver.length === 0) + return null; + return $receiver[random.nextInt_za3lpa$($receiver.length)]; + } + function randomOrNull_14($receiver, random) { + if ($receiver.length === 0) + return null; + return $receiver[random.nextInt_za3lpa$($receiver.length)]; + } + function randomOrNull_15($receiver, random) { + if ($receiver.length === 0) + return null; + return $receiver[random.nextInt_za3lpa$($receiver.length)]; + } + function randomOrNull_16($receiver, random) { + if ($receiver.length === 0) + return null; + return $receiver[random.nextInt_za3lpa$($receiver.length)]; + } function single($receiver) { var tmp$; switch ($receiver.length) { @@ -3737,8 +3697,7 @@ throw IllegalArgumentException_init('Array contains more than one matching element.'); single = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Array contains no element matching the predicate.'); return (tmp$_0 = single) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); @@ -3759,8 +3718,7 @@ throw IllegalArgumentException_init('Array contains more than one matching element.'); single = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Array contains no element matching the predicate.'); return typeof (tmp$_0 = single) === 'number' ? tmp$_0 : throwCCE(); @@ -3781,8 +3739,7 @@ throw IllegalArgumentException_init('Array contains more than one matching element.'); single = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Array contains no element matching the predicate.'); return typeof (tmp$_0 = single) === 'number' ? tmp$_0 : throwCCE(); @@ -3803,8 +3760,7 @@ throw IllegalArgumentException_init('Array contains more than one matching element.'); single = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Array contains no element matching the predicate.'); return typeof (tmp$_0 = single) === 'number' ? tmp$_0 : throwCCE(); @@ -3825,8 +3781,7 @@ throw IllegalArgumentException_init('Array contains more than one matching element.'); single = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Array contains no element matching the predicate.'); return Kotlin.isType(tmp$_0 = single, Kotlin.Long) ? tmp$_0 : throwCCE(); @@ -3847,8 +3802,7 @@ throw IllegalArgumentException_init('Array contains more than one matching element.'); single = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Array contains no element matching the predicate.'); return typeof (tmp$_0 = single) === 'number' ? tmp$_0 : throwCCE(); @@ -3869,8 +3823,7 @@ throw IllegalArgumentException_init('Array contains more than one matching element.'); single = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Array contains no element matching the predicate.'); return typeof (tmp$_0 = single) === 'number' ? tmp$_0 : throwCCE(); @@ -3891,8 +3844,7 @@ throw IllegalArgumentException_init('Array contains more than one matching element.'); single = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Array contains no element matching the predicate.'); return typeof (tmp$_0 = single) === 'boolean' ? tmp$_0 : throwCCE(); @@ -3915,8 +3867,7 @@ throw IllegalArgumentException_init('Array contains more than one matching element.'); single = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Array contains no element matching the predicate.'); return unboxChar(Kotlin.isChar(tmp$_0 = toBoxedChar(single)) ? tmp$_0 : throwCCE()); @@ -3960,8 +3911,7 @@ return null; single = element; found = true; - } - } + }} if (!found) return null; return single; @@ -3977,8 +3927,7 @@ return null; single = element; found = true; - } - } + }} if (!found) return null; return single; @@ -3994,8 +3943,7 @@ return null; single = element; found = true; - } - } + }} if (!found) return null; return single; @@ -4011,8 +3959,7 @@ return null; single = element; found = true; - } - } + }} if (!found) return null; return single; @@ -4028,8 +3975,7 @@ return null; single = element; found = true; - } - } + }} if (!found) return null; return single; @@ -4045,8 +3991,7 @@ return null; single = element; found = true; - } - } + }} if (!found) return null; return single; @@ -4062,8 +4007,7 @@ return null; single = element; found = true; - } - } + }} if (!found) return null; return single; @@ -4079,8 +4023,7 @@ return null; single = element; found = true; - } - } + }} if (!found) return null; return single; @@ -4099,8 +4042,7 @@ return null; single = element; found = true; - } - } + }} if (!found) return null; return single; @@ -4110,127 +4052,109 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return takeLast($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function drop_0($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_0($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return takeLast_0($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function drop_1($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_1($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return takeLast_1($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function drop_2($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_2($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return takeLast_2($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function drop_3($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_3($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return takeLast_3($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function drop_4($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_4($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return takeLast_4($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function drop_5($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_5($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return takeLast_5($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function drop_6($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_6($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return takeLast_6($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function drop_7($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_7($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return takeLast_7($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function dropLast($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return take($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return take($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function dropLast_0($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return take_0($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return take_0($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function dropLast_1($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return take_1($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return take_1($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function dropLast_2($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return take_2($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return take_2($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function dropLast_3($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return take_3($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return take_3($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function dropLast_4($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return take_4($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return take_4($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function dropLast_5($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return take_5($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return take_5($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function dropLast_6($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return take_6($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return take_6($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function dropLast_7($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return take_7($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return take_7($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } var dropLastWhile = defineInlineFunction('kotlin.kotlin.collections.dropLastWhile_sfx99b$', wrapFunction(function () { var get_lastIndex = _.kotlin.collections.get_lastIndex_m7z4lg$; @@ -4240,8 +4164,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate($receiver[index])) { return take($receiver, index + 1 | 0); - } - } + }} return emptyList(); }; })); @@ -4253,8 +4176,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate($receiver[index])) { return take($receiver, index + 1 | 0); - } - } + }} return emptyList(); }; })); @@ -4266,8 +4188,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate($receiver[index])) { return take($receiver, index + 1 | 0); - } - } + }} return emptyList(); }; })); @@ -4279,8 +4200,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate($receiver[index])) { return take($receiver, index + 1 | 0); - } - } + }} return emptyList(); }; })); @@ -4292,8 +4212,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate($receiver[index])) { return take($receiver, index + 1 | 0); - } - } + }} return emptyList(); }; })); @@ -4305,8 +4224,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate($receiver[index])) { return take($receiver, index + 1 | 0); - } - } + }} return emptyList(); }; })); @@ -4318,8 +4236,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate($receiver[index])) { return take($receiver, index + 1 | 0); - } - } + }} return emptyList(); }; })); @@ -4331,8 +4248,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate($receiver[index])) { return take($receiver, index + 1 | 0); - } - } + }} return emptyList(); }; })); @@ -4345,8 +4261,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate(toBoxedChar($receiver[index]))) { return take($receiver, index + 1 | 0); - } - } + }} return emptyList(); }; })); @@ -4363,8 +4278,7 @@ else if (!predicate(item)) { list.add_11rb$(item); yielding = true; - } - } + }} return list; }; })); @@ -4381,8 +4295,7 @@ else if (!predicate(item)) { list.add_11rb$(item); yielding = true; - } - } + }} return list; }; })); @@ -4399,8 +4312,7 @@ else if (!predicate(item)) { list.add_11rb$(item); yielding = true; - } - } + }} return list; }; })); @@ -4417,8 +4329,7 @@ else if (!predicate(item)) { list.add_11rb$(item); yielding = true; - } - } + }} return list; }; })); @@ -4435,8 +4346,7 @@ else if (!predicate(item)) { list.add_11rb$(item); yielding = true; - } - } + }} return list; }; })); @@ -4453,8 +4363,7 @@ else if (!predicate(item)) { list.add_11rb$(item); yielding = true; - } - } + }} return list; }; })); @@ -4471,8 +4380,7 @@ else if (!predicate(item)) { list.add_11rb$(item); yielding = true; - } - } + }} return list; }; })); @@ -4489,8 +4397,7 @@ else if (!predicate(item)) { list.add_11rb$(item); yielding = true; - } - } + }} return list; }; })); @@ -4509,8 +4416,7 @@ else if (!predicate(toBoxedChar(item))) { list.add_11rb$(toBoxedChar(item)); yielding = true; - } - } + }} return list; }; })); @@ -5185,56 +5091,47 @@ function slice($receiver, indices) { if (indices.isEmpty()) { return emptyList(); - } - return asList(copyOfRange_3($receiver, indices.start, indices.endInclusive + 1 | 0)); + }return asList(copyOfRange_3($receiver, indices.start, indices.endInclusive + 1 | 0)); } function slice_0($receiver, indices) { if (indices.isEmpty()) { return emptyList(); - } - return asList(copyOfRange_4($receiver, indices.start, indices.endInclusive + 1 | 0)); + }return asList(copyOfRange_4($receiver, indices.start, indices.endInclusive + 1 | 0)); } function slice_1($receiver, indices) { if (indices.isEmpty()) { return emptyList(); - } - return asList(copyOfRange_5($receiver, indices.start, indices.endInclusive + 1 | 0)); + }return asList(copyOfRange_5($receiver, indices.start, indices.endInclusive + 1 | 0)); } function slice_2($receiver, indices) { if (indices.isEmpty()) { return emptyList(); - } - return asList(copyOfRange_6($receiver, indices.start, indices.endInclusive + 1 | 0)); + }return asList(copyOfRange_6($receiver, indices.start, indices.endInclusive + 1 | 0)); } function slice_3($receiver, indices) { if (indices.isEmpty()) { return emptyList(); - } - return asList(copyOfRange_7($receiver, indices.start, indices.endInclusive + 1 | 0)); + }return asList(copyOfRange_7($receiver, indices.start, indices.endInclusive + 1 | 0)); } function slice_4($receiver, indices) { if (indices.isEmpty()) { return emptyList(); - } - return asList(copyOfRange_8($receiver, indices.start, indices.endInclusive + 1 | 0)); + }return asList(copyOfRange_8($receiver, indices.start, indices.endInclusive + 1 | 0)); } function slice_5($receiver, indices) { if (indices.isEmpty()) { return emptyList(); - } - return asList(copyOfRange_9($receiver, indices.start, indices.endInclusive + 1 | 0)); + }return asList(copyOfRange_9($receiver, indices.start, indices.endInclusive + 1 | 0)); } function slice_6($receiver, indices) { if (indices.isEmpty()) { return emptyList(); - } - return asList(copyOfRange_10($receiver, indices.start, indices.endInclusive + 1 | 0)); + }return asList(copyOfRange_10($receiver, indices.start, indices.endInclusive + 1 | 0)); } function slice_7($receiver, indices) { if (indices.isEmpty()) { return emptyList(); - } - return asList_7(copyOfRange_11($receiver, indices.start, indices.endInclusive + 1 | 0)); + }return asList_7(copyOfRange_11($receiver, indices.start, indices.endInclusive + 1 | 0)); } function slice_8($receiver, indices) { var tmp$; @@ -5498,12 +5395,11 @@ return copyOfRange_11($receiver, indices.start, indices.endInclusive + 1 | 0); } function take($receiver, n) { - var tmp$, tmp$_0; + var tmp$; if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); if (n >= $receiver.length) return toList($receiver); @@ -5513,19 +5409,18 @@ var list = ArrayList_init_0(n); for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; list.add_11rb$(item); + if ((count = count + 1 | 0, count) === n) + break; } return list; } function take_0($receiver, n) { - var tmp$, tmp$_0; + var tmp$; if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); if (n >= $receiver.length) return toList_0($receiver); @@ -5535,19 +5430,18 @@ var list = ArrayList_init_0(n); for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; list.add_11rb$(item); + if ((count = count + 1 | 0, count) === n) + break; } return list; } function take_1($receiver, n) { - var tmp$, tmp$_0; + var tmp$; if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); if (n >= $receiver.length) return toList_1($receiver); @@ -5557,19 +5451,18 @@ var list = ArrayList_init_0(n); for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; list.add_11rb$(item); + if ((count = count + 1 | 0, count) === n) + break; } return list; } function take_2($receiver, n) { - var tmp$, tmp$_0; + var tmp$; if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); if (n >= $receiver.length) return toList_2($receiver); @@ -5579,19 +5472,18 @@ var list = ArrayList_init_0(n); for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; list.add_11rb$(item); + if ((count = count + 1 | 0, count) === n) + break; } return list; } function take_3($receiver, n) { - var tmp$, tmp$_0; + var tmp$; if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); if (n >= $receiver.length) return toList_3($receiver); @@ -5601,19 +5493,18 @@ var list = ArrayList_init_0(n); for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; list.add_11rb$(item); + if ((count = count + 1 | 0, count) === n) + break; } return list; } function take_4($receiver, n) { - var tmp$, tmp$_0; + var tmp$; if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); if (n >= $receiver.length) return toList_4($receiver); @@ -5623,19 +5514,18 @@ var list = ArrayList_init_0(n); for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; list.add_11rb$(item); + if ((count = count + 1 | 0, count) === n) + break; } return list; } function take_5($receiver, n) { - var tmp$, tmp$_0; + var tmp$; if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); if (n >= $receiver.length) return toList_5($receiver); @@ -5645,19 +5535,18 @@ var list = ArrayList_init_0(n); for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; list.add_11rb$(item); + if ((count = count + 1 | 0, count) === n) + break; } return list; } function take_6($receiver, n) { - var tmp$, tmp$_0; + var tmp$; if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); if (n >= $receiver.length) return toList_6($receiver); @@ -5667,19 +5556,18 @@ var list = ArrayList_init_0(n); for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; list.add_11rb$(item); + if ((count = count + 1 | 0, count) === n) + break; } return list; } function take_7($receiver, n) { - var tmp$, tmp$_0; + var tmp$; if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); if (n >= $receiver.length) return toList_7($receiver); @@ -5689,9 +5577,9 @@ var list = ArrayList_init_0(n); for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = unboxChar($receiver[tmp$]); - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; list.add_11rb$(toBoxedChar(item)); + if ((count = count + 1 | 0, count) === n) + break; } return list; } @@ -5699,8 +5587,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); var size = $receiver.length; if (n >= size) @@ -5716,8 +5603,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); var size = $receiver.length; if (n >= size) @@ -5733,8 +5619,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); var size = $receiver.length; if (n >= size) @@ -5750,8 +5635,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); var size = $receiver.length; if (n >= size) @@ -5767,8 +5651,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); var size = $receiver.length; if (n >= size) @@ -5784,8 +5667,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); var size = $receiver.length; if (n >= size) @@ -5801,8 +5683,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); var size = $receiver.length; if (n >= size) @@ -5818,8 +5699,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); var size = $receiver.length; if (n >= size) @@ -5835,8 +5715,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); var size = $receiver.length; if (n >= size) @@ -5856,8 +5735,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate($receiver[index])) { return drop($receiver, index + 1 | 0); - } - } + }} return toList($receiver); }; })); @@ -5869,8 +5747,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate($receiver[index])) { return drop($receiver, index + 1 | 0); - } - } + }} return toList($receiver); }; })); @@ -5882,8 +5759,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate($receiver[index])) { return drop($receiver, index + 1 | 0); - } - } + }} return toList($receiver); }; })); @@ -5895,8 +5771,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate($receiver[index])) { return drop($receiver, index + 1 | 0); - } - } + }} return toList($receiver); }; })); @@ -5908,8 +5783,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate($receiver[index])) { return drop($receiver, index + 1 | 0); - } - } + }} return toList($receiver); }; })); @@ -5921,8 +5795,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate($receiver[index])) { return drop($receiver, index + 1 | 0); - } - } + }} return toList($receiver); }; })); @@ -5934,8 +5807,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate($receiver[index])) { return drop($receiver, index + 1 | 0); - } - } + }} return toList($receiver); }; })); @@ -5947,8 +5819,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate($receiver[index])) { return drop($receiver, index + 1 | 0); - } - } + }} return toList($receiver); }; })); @@ -5961,8 +5832,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate(toBoxedChar($receiver[index]))) { return drop($receiver, index + 1 | 0); - } - } + }} return toList($receiver); }; })); @@ -6370,8 +6240,7 @@ return function ($receiver, selector) { if ($receiver.length > 1) { sortWith($receiver, new Comparator$ObjectLiteral(compareBy$lambda(selector))); - } - }; + }}; })); var sortByDescending = defineInlineFunction('kotlin.kotlin.collections.sortByDescending_99hh6x$', wrapFunction(function () { var sortWith = _.kotlin.collections.sortWith_iwcb0m$; @@ -6397,8 +6266,7 @@ return function ($receiver, selector) { if ($receiver.length > 1) { sortWith($receiver, new Comparator$ObjectLiteral(compareByDescending$lambda(selector))); - } - }; + }}; })); function sortDescending($receiver) { sortWith($receiver, reverseOrder()); @@ -6407,44 +6275,37 @@ if ($receiver.length > 1) { sort($receiver); reverse_0($receiver); - } - } + }} function sortDescending_1($receiver) { if ($receiver.length > 1) { sort($receiver); reverse_1($receiver); - } - } + }} function sortDescending_2($receiver) { if ($receiver.length > 1) { sort($receiver); reverse_2($receiver); - } - } + }} function sortDescending_3($receiver) { if ($receiver.length > 1) { sort_4($receiver); reverse_3($receiver); - } - } + }} function sortDescending_4($receiver) { if ($receiver.length > 1) { sort($receiver); reverse_4($receiver); - } - } + }} function sortDescending_5($receiver) { if ($receiver.length > 1) { sort($receiver); reverse_5($receiver); - } - } + }} function sortDescending_6($receiver) { if ($receiver.length > 1) { sort($receiver); reverse_7($receiver); - } - } + }} function sorted($receiver) { return asList(sortedArray($receiver)); } @@ -8641,8 +8502,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -8666,8 +8526,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -8691,8 +8550,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -8716,8 +8574,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -8741,8 +8598,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -8766,8 +8622,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -8791,8 +8646,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -8816,8 +8670,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -8843,8 +8696,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -8868,8 +8720,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -8893,8 +8744,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -8918,8 +8768,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -8943,8 +8792,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -8968,8 +8816,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -8993,8 +8840,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9018,8 +8864,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9043,8 +8888,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9070,8 +8914,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9093,8 +8936,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9116,8 +8958,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9139,8 +8980,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9162,8 +9002,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9185,8 +9024,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9208,8 +9046,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9231,8 +9068,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9254,8 +9090,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9279,8 +9114,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9302,8 +9136,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9325,8 +9158,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9348,8 +9180,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9371,8 +9202,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9394,8 +9224,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9417,8 +9246,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9440,8 +9268,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9463,8 +9290,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9488,8 +9314,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -9756,8 +9581,7 @@ var tmp$_1; if ((tmp$_1 = transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) != null) { destination.add_11rb$(tmp$_1); - } - } + }} return destination; }; })); @@ -9770,8 +9594,7 @@ var tmp$_1; if ((tmp$_1 = transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) != null) { destination.add_11rb$(tmp$_1); - } - } + }} return destination; }; })); @@ -9870,8 +9693,7 @@ var tmp$_0; if ((tmp$_0 = transform(element)) != null) { destination.add_11rb$(tmp$_0); - } - } + }} return destination; }; })); @@ -9883,8 +9705,7 @@ var tmp$_0; if ((tmp$_0 = transform(element)) != null) { destination.add_11rb$(tmp$_0); - } - } + }} return destination; }; })); @@ -10211,92 +10032,92 @@ })); function intersect($receiver, other) { var set = toMutableSet($receiver); - retainAll_2(set, other); + retainAll_0(set, other); return set; } function intersect_0($receiver, other) { var set = toMutableSet_0($receiver); - retainAll_2(set, other); + retainAll_0(set, other); return set; } function intersect_1($receiver, other) { var set = toMutableSet_1($receiver); - retainAll_2(set, other); + retainAll_0(set, other); return set; } function intersect_2($receiver, other) { var set = toMutableSet_2($receiver); - retainAll_2(set, other); + retainAll_0(set, other); return set; } function intersect_3($receiver, other) { var set = toMutableSet_3($receiver); - retainAll_2(set, other); + retainAll_0(set, other); return set; } function intersect_4($receiver, other) { var set = toMutableSet_4($receiver); - retainAll_2(set, other); + retainAll_0(set, other); return set; } function intersect_5($receiver, other) { var set = toMutableSet_5($receiver); - retainAll_2(set, other); + retainAll_0(set, other); return set; } function intersect_6($receiver, other) { var set = toMutableSet_6($receiver); - retainAll_2(set, other); + retainAll_0(set, other); return set; } function intersect_7($receiver, other) { var set = toMutableSet_7($receiver); - retainAll_2(set, other); + retainAll_0(set, other); return set; } function subtract($receiver, other) { var set = toMutableSet($receiver); - removeAll_2(set, other); + removeAll_0(set, other); return set; } function subtract_0($receiver, other) { var set = toMutableSet_0($receiver); - removeAll_2(set, other); + removeAll_0(set, other); return set; } function subtract_1($receiver, other) { var set = toMutableSet_1($receiver); - removeAll_2(set, other); + removeAll_0(set, other); return set; } function subtract_2($receiver, other) { var set = toMutableSet_2($receiver); - removeAll_2(set, other); + removeAll_0(set, other); return set; } function subtract_3($receiver, other) { var set = toMutableSet_3($receiver); - removeAll_2(set, other); + removeAll_0(set, other); return set; } function subtract_4($receiver, other) { var set = toMutableSet_4($receiver); - removeAll_2(set, other); + removeAll_0(set, other); return set; } function subtract_5($receiver, other) { var set = toMutableSet_5($receiver); - removeAll_2(set, other); + removeAll_0(set, other); return set; } function subtract_6($receiver, other) { var set = toMutableSet_6($receiver); - removeAll_2(set, other); + removeAll_0(set, other); return set; } function subtract_7($receiver, other) { var set = toMutableSet_7($receiver); - removeAll_2(set, other); + removeAll_0(set, other); return set; } function toMutableSet($receiver) { @@ -11445,8 +11266,7 @@ if (Kotlin.compareTo(maxValue, v) < 0) { maxElem = e; maxValue = v; - } - } + }} return maxElem; }; })); @@ -11466,8 +11286,7 @@ if (Kotlin.compareTo(maxValue, v) < 0) { maxElem = e; maxValue = v; - } - } + }} return maxElem; }; })); @@ -11487,8 +11306,7 @@ if (Kotlin.compareTo(maxValue, v) < 0) { maxElem = e; maxValue = v; - } - } + }} return maxElem; }; })); @@ -11508,8 +11326,7 @@ if (Kotlin.compareTo(maxValue, v) < 0) { maxElem = e; maxValue = v; - } - } + }} return maxElem; }; })); @@ -11529,8 +11346,7 @@ if (Kotlin.compareTo(maxValue, v) < 0) { maxElem = e; maxValue = v; - } - } + }} return maxElem; }; })); @@ -11550,8 +11366,7 @@ if (Kotlin.compareTo(maxValue, v) < 0) { maxElem = e; maxValue = v; - } - } + }} return maxElem; }; })); @@ -11571,8 +11386,7 @@ if (Kotlin.compareTo(maxValue, v) < 0) { maxElem = e; maxValue = v; - } - } + }} return maxElem; }; })); @@ -11592,8 +11406,7 @@ if (Kotlin.compareTo(maxValue, v) < 0) { maxElem = e; maxValue = v; - } - } + }} return maxElem; }; })); @@ -11614,8 +11427,7 @@ if (Kotlin.compareTo(maxValue, v) < 0) { maxElem = e; maxValue = v; - } - } + }} return maxElem; }; })); @@ -11898,8 +11710,7 @@ if (Kotlin.compareTo(minValue, v) > 0) { minElem = e; minValue = v; - } - } + }} return minElem; }; })); @@ -11919,8 +11730,7 @@ if (Kotlin.compareTo(minValue, v) > 0) { minElem = e; minValue = v; - } - } + }} return minElem; }; })); @@ -11940,8 +11750,7 @@ if (Kotlin.compareTo(minValue, v) > 0) { minElem = e; minValue = v; - } - } + }} return minElem; }; })); @@ -11961,8 +11770,7 @@ if (Kotlin.compareTo(minValue, v) > 0) { minElem = e; minValue = v; - } - } + }} return minElem; }; })); @@ -11982,8 +11790,7 @@ if (Kotlin.compareTo(minValue, v) > 0) { minElem = e; minValue = v; - } - } + }} return minElem; }; })); @@ -12003,8 +11810,7 @@ if (Kotlin.compareTo(minValue, v) > 0) { minElem = e; minValue = v; - } - } + }} return minElem; }; })); @@ -12024,8 +11830,7 @@ if (Kotlin.compareTo(minValue, v) > 0) { minElem = e; minValue = v; - } - } + }} return minElem; }; })); @@ -12045,8 +11850,7 @@ if (Kotlin.compareTo(minValue, v) > 0) { minElem = e; minValue = v; - } - } + }} return minElem; }; })); @@ -12067,8 +11871,7 @@ if (Kotlin.compareTo(minValue, v) > 0) { minElem = e; minValue = v; - } - } + }} return minElem; }; })); @@ -12575,6 +12378,134 @@ return accumulator; }; })); + var reduceOrNull = defineInlineFunction('kotlin.kotlin.collections.reduceOrNull_5bz9yp$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_m7z4lg$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.length === 0) + return null; + var accumulator = $receiver[0]; + tmp$ = get_lastIndex($receiver); + for (var index = 1; index <= tmp$; index++) { + accumulator = operation(accumulator, $receiver[index]); + } + return accumulator; + }; + })); + var reduceOrNull_0 = defineInlineFunction('kotlin.kotlin.collections.reduceOrNull_ua0gmo$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_964n91$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.length === 0) + return null; + var accumulator = $receiver[0]; + tmp$ = get_lastIndex($receiver); + for (var index = 1; index <= tmp$; index++) { + accumulator = operation(accumulator, $receiver[index]); + } + return accumulator; + }; + })); + var reduceOrNull_1 = defineInlineFunction('kotlin.kotlin.collections.reduceOrNull_5x6csy$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_i2lc79$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.length === 0) + return null; + var accumulator = $receiver[0]; + tmp$ = get_lastIndex($receiver); + for (var index = 1; index <= tmp$; index++) { + accumulator = operation(accumulator, $receiver[index]); + } + return accumulator; + }; + })); + var reduceOrNull_2 = defineInlineFunction('kotlin.kotlin.collections.reduceOrNull_vuuzha$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_tmsbgo$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.length === 0) + return null; + var accumulator = $receiver[0]; + tmp$ = get_lastIndex($receiver); + for (var index = 1; index <= tmp$; index++) { + accumulator = operation(accumulator, $receiver[index]); + } + return accumulator; + }; + })); + var reduceOrNull_3 = defineInlineFunction('kotlin.kotlin.collections.reduceOrNull_8z4g8g$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_se6h4x$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.length === 0) + return null; + var accumulator = $receiver[0]; + tmp$ = get_lastIndex($receiver); + for (var index = 1; index <= tmp$; index++) { + accumulator = operation(accumulator, $receiver[index]); + } + return accumulator; + }; + })); + var reduceOrNull_4 = defineInlineFunction('kotlin.kotlin.collections.reduceOrNull_m57mj6$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_rjqryz$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.length === 0) + return null; + var accumulator = $receiver[0]; + tmp$ = get_lastIndex($receiver); + for (var index = 1; index <= tmp$; index++) { + accumulator = operation(accumulator, $receiver[index]); + } + return accumulator; + }; + })); + var reduceOrNull_5 = defineInlineFunction('kotlin.kotlin.collections.reduceOrNull_5rthjk$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_bvy38s$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.length === 0) + return null; + var accumulator = $receiver[0]; + tmp$ = get_lastIndex($receiver); + for (var index = 1; index <= tmp$; index++) { + accumulator = operation(accumulator, $receiver[index]); + } + return accumulator; + }; + })); + var reduceOrNull_6 = defineInlineFunction('kotlin.kotlin.collections.reduceOrNull_if3lfm$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_l1lu5t$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.length === 0) + return null; + var accumulator = $receiver[0]; + tmp$ = get_lastIndex($receiver); + for (var index = 1; index <= tmp$; index++) { + accumulator = operation(accumulator, $receiver[index]); + } + return accumulator; + }; + })); + var reduceOrNull_7 = defineInlineFunction('kotlin.kotlin.collections.reduceOrNull_724a40$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_355ntz$; + var toBoxedChar = Kotlin.toBoxedChar; + var unboxChar = Kotlin.unboxChar; + return function ($receiver, operation) { + var tmp$; + if ($receiver.length === 0) + return null; + var accumulator = $receiver[0]; + tmp$ = get_lastIndex($receiver); + for (var index = 1; index <= tmp$; index++) { + accumulator = unboxChar(operation(toBoxedChar(accumulator), toBoxedChar($receiver[index]))); + } + return accumulator; + }; + })); var reduceRight = defineInlineFunction('kotlin.kotlin.collections.reduceRight_m9c08d$', wrapFunction(function () { var get_lastIndex = _.kotlin.collections.get_lastIndex_m7z4lg$; var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; @@ -12858,6 +12789,771 @@ return accumulator; }; })); + var reduceRightOrNull = defineInlineFunction('kotlin.kotlin.collections.reduceRightOrNull_m9c08d$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_m7z4lg$; + return function ($receiver, operation) { + var tmp$, tmp$_0; + var index = get_lastIndex($receiver); + if (index < 0) + return null; + var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; + while (index >= 0) { + accumulator = operation($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0], accumulator); + } + return accumulator; + }; + })); + var reduceRightOrNull_0 = defineInlineFunction('kotlin.kotlin.collections.reduceRightOrNull_ua0gmo$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_964n91$; + return function ($receiver, operation) { + var tmp$, tmp$_0; + var index = get_lastIndex($receiver); + if (index < 0) + return null; + var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; + while (index >= 0) { + accumulator = operation($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0], accumulator); + } + return accumulator; + }; + })); + var reduceRightOrNull_1 = defineInlineFunction('kotlin.kotlin.collections.reduceRightOrNull_5x6csy$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_i2lc79$; + return function ($receiver, operation) { + var tmp$, tmp$_0; + var index = get_lastIndex($receiver); + if (index < 0) + return null; + var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; + while (index >= 0) { + accumulator = operation($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0], accumulator); + } + return accumulator; + }; + })); + var reduceRightOrNull_2 = defineInlineFunction('kotlin.kotlin.collections.reduceRightOrNull_vuuzha$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_tmsbgo$; + return function ($receiver, operation) { + var tmp$, tmp$_0; + var index = get_lastIndex($receiver); + if (index < 0) + return null; + var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; + while (index >= 0) { + accumulator = operation($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0], accumulator); + } + return accumulator; + }; + })); + var reduceRightOrNull_3 = defineInlineFunction('kotlin.kotlin.collections.reduceRightOrNull_8z4g8g$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_se6h4x$; + return function ($receiver, operation) { + var tmp$, tmp$_0; + var index = get_lastIndex($receiver); + if (index < 0) + return null; + var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; + while (index >= 0) { + accumulator = operation($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0], accumulator); + } + return accumulator; + }; + })); + var reduceRightOrNull_4 = defineInlineFunction('kotlin.kotlin.collections.reduceRightOrNull_m57mj6$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_rjqryz$; + return function ($receiver, operation) { + var tmp$, tmp$_0; + var index = get_lastIndex($receiver); + if (index < 0) + return null; + var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; + while (index >= 0) { + accumulator = operation($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0], accumulator); + } + return accumulator; + }; + })); + var reduceRightOrNull_5 = defineInlineFunction('kotlin.kotlin.collections.reduceRightOrNull_5rthjk$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_bvy38s$; + return function ($receiver, operation) { + var tmp$, tmp$_0; + var index = get_lastIndex($receiver); + if (index < 0) + return null; + var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; + while (index >= 0) { + accumulator = operation($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0], accumulator); + } + return accumulator; + }; + })); + var reduceRightOrNull_6 = defineInlineFunction('kotlin.kotlin.collections.reduceRightOrNull_if3lfm$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_l1lu5t$; + return function ($receiver, operation) { + var tmp$, tmp$_0; + var index = get_lastIndex($receiver); + if (index < 0) + return null; + var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; + while (index >= 0) { + accumulator = operation($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0], accumulator); + } + return accumulator; + }; + })); + var reduceRightOrNull_7 = defineInlineFunction('kotlin.kotlin.collections.reduceRightOrNull_724a40$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_355ntz$; + var toBoxedChar = Kotlin.toBoxedChar; + var unboxChar = Kotlin.unboxChar; + return function ($receiver, operation) { + var tmp$, tmp$_0; + var index = get_lastIndex($receiver); + if (index < 0) + return null; + var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; + while (index >= 0) { + accumulator = unboxChar(operation(toBoxedChar($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0]), toBoxedChar(accumulator))); + } + return accumulator; + }; + })); + var scan = defineInlineFunction('kotlin.kotlin.collections.scan_agj4oo$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + var tmp$; + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { + var element = $receiver[tmp$]; + accumulator = operation(accumulator, element); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scan_0 = defineInlineFunction('kotlin.kotlin.collections.scan_fl151e$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + var tmp$; + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { + var element = $receiver[tmp$]; + accumulator = operation(accumulator, element); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scan_1 = defineInlineFunction('kotlin.kotlin.collections.scan_9nnzbm$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + var tmp$; + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { + var element = $receiver[tmp$]; + accumulator = operation(accumulator, element); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scan_2 = defineInlineFunction('kotlin.kotlin.collections.scan_sgag36$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + var tmp$; + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { + var element = $receiver[tmp$]; + accumulator = operation(accumulator, element); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scan_3 = defineInlineFunction('kotlin.kotlin.collections.scan_sc6mze$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + var tmp$; + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { + var element = $receiver[tmp$]; + accumulator = operation(accumulator, element); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scan_4 = defineInlineFunction('kotlin.kotlin.collections.scan_fnzdea$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + var tmp$; + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { + var element = $receiver[tmp$]; + accumulator = operation(accumulator, element); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scan_5 = defineInlineFunction('kotlin.kotlin.collections.scan_mnppu8$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + var tmp$; + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { + var element = $receiver[tmp$]; + accumulator = operation(accumulator, element); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scan_6 = defineInlineFunction('kotlin.kotlin.collections.scan_43zc0i$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + var tmp$; + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { + var element = $receiver[tmp$]; + accumulator = operation(accumulator, element); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scan_7 = defineInlineFunction('kotlin.kotlin.collections.scan_8nwlk6$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + var toBoxedChar = Kotlin.toBoxedChar; + var unboxChar = Kotlin.unboxChar; + return function ($receiver, initial, operation) { + var tmp$; + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { + var element = unboxChar($receiver[tmp$]); + accumulator = operation(accumulator, toBoxedChar(element)); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanIndexed = defineInlineFunction('kotlin.kotlin.collections.scanIndexed_oj0mn0$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (var index = 0; index !== $receiver.length; ++index) { + accumulator = operation(index, accumulator, $receiver[index]); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanIndexed_0 = defineInlineFunction('kotlin.kotlin.collections.scanIndexed_qzmh7i$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (var index = 0; index !== $receiver.length; ++index) { + accumulator = operation(index, accumulator, $receiver[index]); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanIndexed_1 = defineInlineFunction('kotlin.kotlin.collections.scanIndexed_aijnee$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (var index = 0; index !== $receiver.length; ++index) { + accumulator = operation(index, accumulator, $receiver[index]); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanIndexed_2 = defineInlineFunction('kotlin.kotlin.collections.scanIndexed_28ylm2$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (var index = 0; index !== $receiver.length; ++index) { + accumulator = operation(index, accumulator, $receiver[index]); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanIndexed_3 = defineInlineFunction('kotlin.kotlin.collections.scanIndexed_37s2ie$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (var index = 0; index !== $receiver.length; ++index) { + accumulator = operation(index, accumulator, $receiver[index]); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanIndexed_4 = defineInlineFunction('kotlin.kotlin.collections.scanIndexed_faee2y$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (var index = 0; index !== $receiver.length; ++index) { + accumulator = operation(index, accumulator, $receiver[index]); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanIndexed_5 = defineInlineFunction('kotlin.kotlin.collections.scanIndexed_ufoyfg$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (var index = 0; index !== $receiver.length; ++index) { + accumulator = operation(index, accumulator, $receiver[index]); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanIndexed_6 = defineInlineFunction('kotlin.kotlin.collections.scanIndexed_z82r06$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (var index = 0; index !== $receiver.length; ++index) { + accumulator = operation(index, accumulator, $receiver[index]); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanIndexed_7 = defineInlineFunction('kotlin.kotlin.collections.scanIndexed_sfak8u$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + var toBoxedChar = Kotlin.toBoxedChar; + return function ($receiver, initial, operation) { + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + for (var index = 0; index !== $receiver.length; ++index) { + accumulator = operation(index, accumulator, toBoxedChar($receiver[index])); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanReduce = defineInlineFunction('kotlin.kotlin.collections.scanReduce_5bz9yp$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = operation(accumulator.v, $receiver[index]); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduce_0 = defineInlineFunction('kotlin.kotlin.collections.scanReduce_ua0gmo$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = operation(accumulator.v, $receiver[index]); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduce_1 = defineInlineFunction('kotlin.kotlin.collections.scanReduce_5x6csy$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = operation(accumulator.v, $receiver[index]); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduce_2 = defineInlineFunction('kotlin.kotlin.collections.scanReduce_vuuzha$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = operation(accumulator.v, $receiver[index]); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduce_3 = defineInlineFunction('kotlin.kotlin.collections.scanReduce_8z4g8g$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = operation(accumulator.v, $receiver[index]); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduce_4 = defineInlineFunction('kotlin.kotlin.collections.scanReduce_m57mj6$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = operation(accumulator.v, $receiver[index]); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduce_5 = defineInlineFunction('kotlin.kotlin.collections.scanReduce_5rthjk$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = operation(accumulator.v, $receiver[index]); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduce_6 = defineInlineFunction('kotlin.kotlin.collections.scanReduce_if3lfm$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = operation(accumulator.v, $receiver[index]); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduce_7 = defineInlineFunction('kotlin.kotlin.collections.scanReduce_724a40$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + var toBoxedChar = Kotlin.toBoxedChar; + var unboxChar = Kotlin.unboxChar; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(toBoxedChar(accumulator.v)); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = unboxChar(operation(toBoxedChar(accumulator.v), toBoxedChar($receiver[index]))); + result.add_11rb$(toBoxedChar(accumulator.v)); + } + return result; + }; + })); + var scanReduceIndexed = defineInlineFunction('kotlin.kotlin.collections.scanReduceIndexed_f61gul$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = operation(index, accumulator.v, $receiver[index]); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduceIndexed_0 = defineInlineFunction('kotlin.kotlin.collections.scanReduceIndexed_y1rlg4$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = operation(index, accumulator.v, $receiver[index]); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduceIndexed_1 = defineInlineFunction('kotlin.kotlin.collections.scanReduceIndexed_ctdw5m$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = operation(index, accumulator.v, $receiver[index]); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduceIndexed_2 = defineInlineFunction('kotlin.kotlin.collections.scanReduceIndexed_y7bnwe$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = operation(index, accumulator.v, $receiver[index]); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduceIndexed_3 = defineInlineFunction('kotlin.kotlin.collections.scanReduceIndexed_54m7jg$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = operation(index, accumulator.v, $receiver[index]); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduceIndexed_4 = defineInlineFunction('kotlin.kotlin.collections.scanReduceIndexed_mzocqy$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = operation(index, accumulator.v, $receiver[index]); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduceIndexed_5 = defineInlineFunction('kotlin.kotlin.collections.scanReduceIndexed_i4uovg$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = operation(index, accumulator.v, $receiver[index]); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduceIndexed_6 = defineInlineFunction('kotlin.kotlin.collections.scanReduceIndexed_fqu0be$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = operation(index, accumulator.v, $receiver[index]); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduceIndexed_7 = defineInlineFunction('kotlin.kotlin.collections.scanReduceIndexed_n25zu4$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + var toBoxedChar = Kotlin.toBoxedChar; + var unboxChar = Kotlin.unboxChar; + return function ($receiver, operation) { + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver[0]}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(toBoxedChar(accumulator.v)); + var result = $receiver_0; + for (var index = 1; index < $receiver.length; index++) { + accumulator.v = unboxChar(operation(index, toBoxedChar(accumulator.v), toBoxedChar($receiver[index]))); + result.add_11rb$(toBoxedChar(accumulator.v)); + } + return result; + }; + })); var sumBy = defineInlineFunction('kotlin.kotlin.collections.sumBy_9qh8u2$', function ($receiver, selector) { var tmp$; var sum = 0; @@ -13034,8 +13730,7 @@ var element = $receiver[tmp$]; if (element == null) { throw IllegalArgumentException_init_0('null element found in ' + $receiver + '.'); - } - } + }} return Kotlin.isArray(tmp$_0 = $receiver) ? tmp$_0 : throwCCE_0(); } var partition = defineInlineFunction('kotlin.kotlin.collections.partition_sfx99b$', wrapFunction(function () { @@ -13049,8 +13744,7 @@ var element = $receiver[tmp$]; if (predicate(element)) { first.add_11rb$(element); - } - else { + } else { second.add_11rb$(element); } } @@ -13068,8 +13762,7 @@ var element = $receiver[tmp$]; if (predicate(element)) { first.add_11rb$(element); - } - else { + } else { second.add_11rb$(element); } } @@ -13087,8 +13780,7 @@ var element = $receiver[tmp$]; if (predicate(element)) { first.add_11rb$(element); - } - else { + } else { second.add_11rb$(element); } } @@ -13106,8 +13798,7 @@ var element = $receiver[tmp$]; if (predicate(element)) { first.add_11rb$(element); - } - else { + } else { second.add_11rb$(element); } } @@ -13125,8 +13816,7 @@ var element = $receiver[tmp$]; if (predicate(element)) { first.add_11rb$(element); - } - else { + } else { second.add_11rb$(element); } } @@ -13144,8 +13834,7 @@ var element = $receiver[tmp$]; if (predicate(element)) { first.add_11rb$(element); - } - else { + } else { second.add_11rb$(element); } } @@ -13163,8 +13852,7 @@ var element = $receiver[tmp$]; if (predicate(element)) { first.add_11rb$(element); - } - else { + } else { second.add_11rb$(element); } } @@ -13182,8 +13870,7 @@ var element = $receiver[tmp$]; if (predicate(element)) { first.add_11rb$(element); - } - else { + } else { second.add_11rb$(element); } } @@ -13203,8 +13890,7 @@ var element = unboxChar($receiver[tmp$]); if (predicate(toBoxedChar(element))) { first.add_11rb$(toBoxedChar(element)); - } - else { + } else { second.add_11rb$(toBoxedChar(element)); } } @@ -13873,8 +14559,7 @@ buffer.append_gw00v9$(separator); if (limit < 0 || count <= limit) { appendElement_0(buffer, element, transform); - } - else + } else break; } if (limit >= 0 && count > limit) @@ -13907,8 +14592,7 @@ buffer.append_gw00v9$(transform(element)); else buffer.append_gw00v9$(element.toString()); - } - else + } else break; } if (limit >= 0 && count > limit) @@ -13941,8 +14625,7 @@ buffer.append_gw00v9$(transform(element)); else buffer.append_gw00v9$(element.toString()); - } - else + } else break; } if (limit >= 0 && count > limit) @@ -13975,8 +14658,7 @@ buffer.append_gw00v9$(transform(element)); else buffer.append_gw00v9$(element.toString()); - } - else + } else break; } if (limit >= 0 && count > limit) @@ -14009,8 +14691,7 @@ buffer.append_gw00v9$(transform(element)); else buffer.append_gw00v9$(element.toString()); - } - else + } else break; } if (limit >= 0 && count > limit) @@ -14043,8 +14724,7 @@ buffer.append_gw00v9$(transform(element)); else buffer.append_gw00v9$(element.toString()); - } - else + } else break; } if (limit >= 0 && count > limit) @@ -14077,8 +14757,7 @@ buffer.append_gw00v9$(transform(element)); else buffer.append_gw00v9$(element.toString()); - } - else + } else break; } if (limit >= 0 && count > limit) @@ -14111,8 +14790,7 @@ buffer.append_gw00v9$(transform(element)); else buffer.append_gw00v9$(element.toString()); - } - else + } else break; } if (limit >= 0 && count > limit) @@ -14145,8 +14823,7 @@ buffer.append_gw00v9$(transform(toBoxedChar(element))); else buffer.append_s8itvh$(element); - } - else + } else break; } if (limit >= 0 && count > limit) @@ -14753,8 +15430,7 @@ var tmp$; if (Kotlin.isType($receiver, List)) { return index >= 0 && index <= get_lastIndex_12($receiver) ? $receiver.get_za3lpa$(index) : defaultValue(index); - } - if (index < 0) + }if (index < 0) return defaultValue(index); var iterator = $receiver.iterator(); var count = 0; @@ -14802,8 +15478,7 @@ if (predicate(element)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -14817,8 +15492,7 @@ var element = tmp$.next(); if (predicate(element)) { last = element; - } - } + }} return last; }); var findLast_9 = defineInlineFunction('kotlin.kotlin.collections.findLast_dmm9ex$', function ($receiver, predicate) { @@ -14830,8 +15504,7 @@ if (predicate(element)) { lastOrNull$result = element; break lastOrNull$break; - } - } + }} lastOrNull$result = null; } while (false); @@ -14968,8 +15641,7 @@ while (iterator.hasPrevious()) { if (predicate(iterator.previous())) { return iterator.nextIndex(); - } - } + }} return -1; }); function last_17($receiver) { @@ -15004,8 +15676,7 @@ if (predicate(element)) { last = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Collection contains no element matching the predicate.'); return (tmp$_0 = last) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); @@ -15066,8 +15737,7 @@ var element = tmp$.next(); if (predicate(element)) { last = element; - } - } + }} return last; }); var lastOrNull_20 = defineInlineFunction('kotlin.kotlin.collections.lastOrNull_dmm9ex$', function ($receiver, predicate) { @@ -15091,6 +15761,18 @@ throw new NoSuchElementException('Collection is empty.'); return elementAt($receiver, random.nextInt_za3lpa$($receiver.size)); } + var randomOrNull_17 = defineInlineFunction('kotlin.kotlin.collections.randomOrNull_4c7yge$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.collections.randomOrNull_iscd7z$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + function randomOrNull_18($receiver, random) { + if ($receiver.isEmpty()) + return null; + return elementAt($receiver, random.nextInt_za3lpa$($receiver.size)); + } function single_17($receiver) { if (Kotlin.isType($receiver, List)) return single_18($receiver); @@ -15133,8 +15815,7 @@ throw IllegalArgumentException_init('Collection contains more than one matching element.'); single = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Collection contains no element matching the predicate.'); return (tmp$_0 = single) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); @@ -15168,8 +15849,7 @@ return null; single = element; found = true; - } - } + }} if (!found) return null; return single; @@ -15179,8 +15859,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return toList_8($receiver); var list; if (Kotlin.isType($receiver, Collection)) { @@ -15195,8 +15874,7 @@ tmp$ = $receiver.size; for (var index = n; index < tmp$; index++) list.add_11rb$($receiver.get_za3lpa$(index)); - } - else { + } else { tmp$_0 = $receiver.listIterator_za3lpa$(n); while (tmp$_0.hasNext()) { var item = tmp$_0.next(); @@ -15204,9 +15882,7 @@ } } return list; - } - } - else { + }} else { list = ArrayList_init(); } var count = 0; @@ -15224,8 +15900,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return take_8($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); + }return take_8($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); } var dropLastWhile_8 = defineInlineFunction('kotlin.kotlin.collections.dropLastWhile_dmm9ex$', wrapFunction(function () { var take = _.kotlin.collections.take_ba2ldo$; @@ -15236,10 +15911,8 @@ while (iterator.hasPrevious()) { if (!predicate(iterator.previous())) { return take($receiver, iterator.nextIndex() + 1 | 0); - } - } - } - return emptyList(); + }} + }return emptyList(); }; })); var dropWhile_8 = defineInlineFunction('kotlin.kotlin.collections.dropWhile_6jwkkr$', wrapFunction(function () { @@ -15256,8 +15929,7 @@ else if (!predicate(item)) { list.add_11rb$(item); yielding = true; - } - } + }} return list; }; })); @@ -15379,8 +16051,7 @@ function slice_17($receiver, indices) { if (indices.isEmpty()) { return emptyList(); - } - return toList_8($receiver.subList_vux9f0$(indices.start, indices.endInclusive + 1 | 0)); + }return toList_8($receiver.subList_vux9f0$(indices.start, indices.endInclusive + 1 | 0)); } function slice_18($receiver, indices) { var tmp$; @@ -15396,27 +16067,25 @@ return list; } function take_8($receiver, n) { - var tmp$, tmp$_0; + var tmp$; if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); if (Kotlin.isType($receiver, Collection)) { if (n >= $receiver.size) return toList_8($receiver); if (n === 1) return listOf(first_17($receiver)); - } - var count = 0; + }var count = 0; var list = ArrayList_init_0(n); tmp$ = $receiver.iterator(); while (tmp$.hasNext()) { var item = tmp$.next(); - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; list.add_11rb$(item); + if ((count = count + 1 | 0, count) === n) + break; } return optimizeReadOnlyList(list); } @@ -15425,8 +16094,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); var size = $receiver.size; if (n >= size) @@ -15437,8 +16105,7 @@ if (Kotlin.isType($receiver, RandomAccess)) { for (var index = size - n | 0; index < size; index++) list.add_11rb$($receiver.get_za3lpa$(index)); - } - else { + } else { tmp$ = $receiver.listIterator_za3lpa$(size - n | 0); while (tmp$.hasNext()) { var item = tmp$.next(); @@ -15465,8 +16132,7 @@ while (iterator.hasNext()) $receiver_0.add_11rb$(iterator.next()); return $receiver_0; - } - } + }} return toList($receiver); }; })); @@ -15516,8 +16182,7 @@ return function ($receiver, selector) { if ($receiver.size > 1) { sortWith($receiver, new Comparator$ObjectLiteral(compareBy$lambda(selector))); - } - }; + }}; })); var sortByDescending_0 = defineInlineFunction('kotlin.kotlin.collections.sortByDescending_yag3x6$', wrapFunction(function () { var sortWith = _.kotlin.collections.sortWith_nqfjgj$; @@ -15543,8 +16208,7 @@ return function ($receiver, selector) { if ($receiver.size > 1) { sortWith($receiver, new Comparator$ObjectLiteral(compareByDescending$lambda(selector))); - } - }; + }}; })); function sortDescending_7($receiver) { sortWith_0($receiver, reverseOrder()); @@ -15557,8 +16221,7 @@ var $receiver_0 = Kotlin.isArray(tmp$ = copyToArray($receiver)) ? tmp$ : throwCCE_0(); sort_5($receiver_0); return asList($receiver_0); - } - var $receiver_1 = toMutableList_8($receiver); + }var $receiver_1 = toMutableList_8($receiver); sort_14($receiver_1); return $receiver_1; } @@ -15623,8 +16286,7 @@ var $receiver_0 = Kotlin.isArray(tmp$ = copyToArray($receiver)) ? tmp$ : throwCCE_0(); sortWith($receiver_0, comparator); return asList($receiver_0); - } - var $receiver_1 = toMutableList_8($receiver); + }var $receiver_1 = toMutableList_8($receiver); sortWith_0($receiver_1, comparator); return $receiver_1; } @@ -15847,8 +16509,7 @@ break; } return tmp$; - } - return optimizeReadOnlyList(toMutableList_8($receiver)); + }return optimizeReadOnlyList(toMutableList_8($receiver)); } function toMutableList_8($receiver) { if (Kotlin.isType($receiver, Collection)) @@ -15872,8 +16533,7 @@ break; } return tmp$; - } - return optimizeReadOnlySet(toCollection_8($receiver, LinkedHashSet_init_0())); + }return optimizeReadOnlySet(toCollection_8($receiver, LinkedHashSet_init_0())); } var flatMap_8 = defineInlineFunction('kotlin.kotlin.collections.flatMap_en2w03$', wrapFunction(function () { var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; @@ -15919,8 +16579,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -15945,8 +16604,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -15969,8 +16627,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -15993,8 +16650,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -16064,8 +16720,7 @@ var tmp$_1; if ((tmp$_1 = transform(checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)), item)) != null) { destination.add_11rb$(tmp$_1); - } - } + }} return destination; }; })); @@ -16080,8 +16735,7 @@ var tmp$_1; if ((tmp$_1 = transform(checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)), item)) != null) { destination.add_11rb$(tmp$_1); - } - } + }} return destination; }; })); @@ -16109,8 +16763,7 @@ var tmp$_0; if ((tmp$_0 = transform(element)) != null) { destination.add_11rb$(tmp$_0); - } - } + }} return destination; }; })); @@ -16123,8 +16776,7 @@ var tmp$_0; if ((tmp$_0 = transform(element)) != null) { destination.add_11rb$(tmp$_0); - } - } + }} return destination; }; })); @@ -16167,12 +16819,12 @@ })); function intersect_8($receiver, other) { var set = toMutableSet_8($receiver); - retainAll_2(set, other); + retainAll_0(set, other); return set; } function subtract_8($receiver, other) { var set = toMutableSet_8($receiver); - removeAll_2(set, other); + removeAll_0(set, other); return set; } function toMutableSet_8($receiver) { @@ -16286,8 +16938,7 @@ while (iterator.hasPrevious()) { accumulator = operation(iterator.previous(), accumulator); } - } - return accumulator; + }return accumulator; }); var foldRightIndexed_8 = defineInlineFunction('kotlin.kotlin.collections.foldRightIndexed_nj6056$', function ($receiver, initial, operation) { var accumulator = initial; @@ -16297,8 +16948,7 @@ var index = iterator.previousIndex(); accumulator = operation(index, iterator.previous(), accumulator); } - } - return accumulator; + }return accumulator; }); var forEach_8 = defineInlineFunction('kotlin.kotlin.collections.forEach_i7id1t$', function ($receiver, action) { var tmp$; @@ -16378,8 +17028,7 @@ if (Kotlin.compareTo(maxValue, v) < 0) { maxElem = e; maxValue = v; - } - } + }} while (iterator.hasNext()); return maxElem; }); @@ -16453,8 +17102,7 @@ if (Kotlin.compareTo(minValue, v) > 0) { minElem = e; minValue = v; - } - } + }} while (iterator.hasNext()); return minElem; }); @@ -16528,6 +17176,16 @@ return accumulator; }; })); + var reduceOrNull_8 = defineInlineFunction('kotlin.kotlin.collections.reduceOrNull_lrrcxv$', function ($receiver, operation) { + var iterator = $receiver.iterator(); + if (!iterator.hasNext()) + return null; + var accumulator = iterator.next(); + while (iterator.hasNext()) { + accumulator = operation(accumulator, iterator.next()); + } + return accumulator; + }); var reduceRight_8 = defineInlineFunction('kotlin.kotlin.collections.reduceRight_y5l5zf$', wrapFunction(function () { var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; return function ($receiver, operation) { @@ -16555,6 +17213,101 @@ return accumulator; }; })); + var reduceRightOrNull_8 = defineInlineFunction('kotlin.kotlin.collections.reduceRightOrNull_y5l5zf$', function ($receiver, operation) { + var iterator = $receiver.listIterator_za3lpa$($receiver.size); + if (!iterator.hasPrevious()) + return null; + var accumulator = iterator.previous(); + while (iterator.hasPrevious()) { + accumulator = operation(iterator.previous(), accumulator); + } + return accumulator; + }); + var scan_8 = defineInlineFunction('kotlin.kotlin.collections.scan_l1hrho$', wrapFunction(function () { + var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + var tmp$; + var estimatedSize = collectionSizeOrDefault($receiver, 9); + if (estimatedSize === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init(estimatedSize + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + tmp$ = $receiver.iterator(); + while (tmp$.hasNext()) { + var element = tmp$.next(); + accumulator = operation(accumulator, element); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanIndexed_8 = defineInlineFunction('kotlin.kotlin.collections.scanIndexed_a080b4$', wrapFunction(function () { + var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + var tmp$, tmp$_0; + var estimatedSize = collectionSizeOrDefault($receiver, 9); + if (estimatedSize === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init(estimatedSize + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var index = 0; + var accumulator = initial; + tmp$ = $receiver.iterator(); + while (tmp$.hasNext()) { + var element = tmp$.next(); + accumulator = operation((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), accumulator, element); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanReduce_8 = defineInlineFunction('kotlin.kotlin.collections.scanReduce_lrrcxv$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + var iterator = $receiver.iterator(); + if (!iterator.hasNext()) + return emptyList(); + var accumulator = {v: iterator.next()}; + var $receiver_0 = ArrayList_init(collectionSizeOrDefault($receiver, 10)); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + while (iterator.hasNext()) { + accumulator.v = operation(accumulator.v, iterator.next()); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduceIndexed_8 = defineInlineFunction('kotlin.kotlin.collections.scanReduceIndexed_8txfjb$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + var tmp$; + var iterator = $receiver.iterator(); + if (!iterator.hasNext()) + return emptyList(); + var accumulator = {v: iterator.next()}; + var $receiver_0 = ArrayList_init(collectionSizeOrDefault($receiver, 10)); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + var index = 1; + while (iterator.hasNext()) { + accumulator.v = operation((tmp$ = index, index = tmp$ + 1 | 0, tmp$), accumulator.v, iterator.next()); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); var sumBy_8 = defineInlineFunction('kotlin.kotlin.collections.sumBy_1nckxa$', function ($receiver, selector) { var tmp$; var sum = 0; @@ -16582,8 +17335,7 @@ var element = tmp$.next(); if (element == null) { throw IllegalArgumentException_init_0('null element found in ' + $receiver + '.'); - } - } + }} return Kotlin.isType(tmp$_0 = $receiver, Iterable) ? tmp$_0 : throwCCE_0(); } function requireNoNulls_1($receiver) { @@ -16593,8 +17345,7 @@ var element = tmp$.next(); if (element == null) { throw IllegalArgumentException_init_0('null element found in ' + $receiver + '.'); - } - } + }} return Kotlin.isType(tmp$_0 = $receiver, List) ? tmp$_0 : throwCCE_0(); } function chunked($receiver, size) { @@ -16614,8 +17365,7 @@ if (!removed.v && equals(element_0, element)) { removed.v = true; predicate$result = false; - } - else { + } else { predicate$result = true; } if (predicate$result) @@ -16683,8 +17433,7 @@ var element = tmp$.next(); if (predicate(element)) { first.add_11rb$(element); - } - else { + } else { second.add_11rb$(element); } } @@ -16733,8 +17482,7 @@ result.addAll_brywnq$($receiver); result.addAll_brywnq$(elements); return result; - } - else { + } else { var result_0 = ArrayList_init_1($receiver); addAll(result_0, elements); return result_0; @@ -16769,12 +17517,17 @@ step = 1; if (partialWindows === void 0) partialWindows = false; + var tmp$; checkWindowSizeStep(size, step); if (Kotlin.isType($receiver, RandomAccess) && Kotlin.isType($receiver, List)) { var thisSize = $receiver.size; - var result = ArrayList_init_0((thisSize + step - 1 | 0) / step | 0); + var resultCapacity = (thisSize / step | 0) + (thisSize % step === 0 ? 0 : 1) | 0; + var result = ArrayList_init_0(resultCapacity); var index = {v: 0}; - while (index.v < thisSize) { + while (true) { + tmp$ = index.v; + if (!(0 <= tmp$ && tmp$ < thisSize)) + break; var windowSize = coerceAtMost_2(size, thisSize - index.v | 0); if (windowSize < size && !partialWindows) break; @@ -16786,8 +17539,7 @@ index.v = index.v + step | 0; } return result; - } - var result_0 = ArrayList_init(); + }var result_0 = ArrayList_init(); var $receiver_0 = windowedIterator($receiver.iterator(), size, step, partialWindows, false); while ($receiver_0.hasNext()) { var element = $receiver_0.next(); @@ -16803,19 +17555,20 @@ checkWindowSizeStep(size, step); if (Kotlin.isType($receiver, RandomAccess) && Kotlin.isType($receiver, List)) { var thisSize = $receiver.size; - var result = ArrayList_init_0((thisSize + step - 1 | 0) / step | 0); + var resultCapacity = (thisSize / step | 0) + (thisSize % step === 0 ? 0 : 1) | 0; + var result = ArrayList_init_0(resultCapacity); var window_0 = new MovingSubList($receiver); var index = 0; - while (index < thisSize) { - window_0.move_vux9f0$(index, coerceAtMost_2(index + size | 0, thisSize)); - if (!partialWindows && window_0.size < size) + while (0 <= index && index < thisSize) { + var windowSize = coerceAtMost_2(size, thisSize - index | 0); + if (!partialWindows && windowSize < size) break; + window_0.move_vux9f0$(index, index + windowSize | 0); result.add_11rb$(transform(window_0)); index = index + step | 0; } return result; - } - var result_0 = ArrayList_init(); + }var result_0 = ArrayList_init(); var $receiver_0 = windowedIterator($receiver.iterator(), size, step, partialWindows, true); while ($receiver_0.hasNext()) { var element = $receiver_0.next(); @@ -16886,8 +17639,7 @@ if (!iterator.hasNext()) { zipWithNext$result = emptyList(); break zipWithNext$break; - } - var result = ArrayList_init(); + }var result = ArrayList_init(); var current = iterator.next(); while (iterator.hasNext()) { var next = iterator.next(); @@ -16939,8 +17691,7 @@ buffer.append_gw00v9$(separator); if (limit < 0 || count <= limit) { appendElement_0(buffer, element, transform); - } - else + } else break; } if (limit >= 0 && count > limit) @@ -17127,8 +17878,7 @@ var first = iterator.next(); if (!iterator.hasNext()) { return listOf(new Pair(first.key, first.value)); - } - var result = ArrayList_init_0($receiver.size); + }var result = ArrayList_init_0($receiver.size); result.add_11rb$(new Pair(first.key, first.value)); do { var $receiver_0 = iterator.next(); @@ -17189,8 +17939,7 @@ var tmp$_0; if ((tmp$_0 = transform(element)) != null) { destination.add_11rb$(tmp$_0); - } - } + }} return destination; }; })); @@ -17203,8 +17952,7 @@ var tmp$_0; if ((tmp$_0 = transform(element)) != null) { destination.add_11rb$(tmp$_0); - } - } + }} return destination; }; })); @@ -17276,21 +18024,18 @@ if (!iterator.hasNext()) { maxBy$result = null; break maxBy$break; - } - var maxElem = iterator.next(); + }var maxElem = iterator.next(); if (!iterator.hasNext()) { maxBy$result = maxElem; break maxBy$break; - } - var maxValue = selector(maxElem); + }var maxValue = selector(maxElem); do { var e = iterator.next(); var v = selector(e); if (Kotlin.compareTo(maxValue, v) < 0) { maxElem = e; maxValue = v; - } - } + }} while (iterator.hasNext()); maxBy$result = maxElem; } @@ -17311,21 +18056,18 @@ if (!iterator.hasNext()) { minBy$result = null; break minBy$break; - } - var minElem = iterator.next(); + }var minElem = iterator.next(); if (!iterator.hasNext()) { minBy$result = minElem; break minBy$break; - } - var minValue = selector(minElem); + }var minValue = selector(minElem); do { var e = iterator.next(); var v = selector(e); if (Kotlin.compareTo(minValue, v) > 0) { minElem = e; minValue = v; - } - } + }} while (iterator.hasNext()); minBy$result = minElem; } @@ -17389,39 +18131,69 @@ function random_22($receiver, random) { try { return nextInt(random, $receiver); - } - catch (e) { + } catch (e) { if (Kotlin.isType(e, IllegalArgumentException)) { throw new NoSuchElementException(e.message); - } - else + } else throw e; } } function random_23($receiver, random) { try { return nextLong(random, $receiver); - } - catch (e) { + } catch (e) { if (Kotlin.isType(e, IllegalArgumentException)) { throw new NoSuchElementException(e.message); - } - else + } else throw e; } } function random_24($receiver, random) { try { return toChar(random.nextInt_vux9f0$($receiver.first | 0, ($receiver.last | 0) + 1 | 0)); - } - catch (e) { + } catch (e) { if (Kotlin.isType(e, IllegalArgumentException)) { throw new NoSuchElementException(e.message); - } - else + } else throw e; } } + var randomOrNull_19 = defineInlineFunction('kotlin.kotlin.ranges.randomOrNull_9tsm8a$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.ranges.randomOrNull_xmiyix$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + var randomOrNull_20 = defineInlineFunction('kotlin.kotlin.ranges.randomOrNull_37ivyf$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.ranges.randomOrNull_6753zu$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + var randomOrNull_21 = defineInlineFunction('kotlin.kotlin.ranges.randomOrNull_m1hxcj$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.ranges.randomOrNull_bx1m1g$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + function randomOrNull_22($receiver, random) { + if ($receiver.isEmpty()) + return null; + return nextInt(random, $receiver); + } + function randomOrNull_23($receiver, random) { + if ($receiver.isEmpty()) + return null; + return nextLong(random, $receiver); + } + function randomOrNull_24($receiver, random) { + if ($receiver.isEmpty()) + return null; + return toChar(random.nextInt_vux9f0$($receiver.first | 0, ($receiver.last | 0) + 1 | 0)); + } var contains_9 = defineInlineFunction('kotlin.kotlin.ranges.contains_j7m49l$', function ($receiver, element) { return element != null && $receiver.contains_mef7kx$(element); }); @@ -17617,7 +18389,7 @@ return contains_37(new IntRange(kotlin_js_internal_ByteCompanionObject.MIN_VALUE, kotlin_js_internal_ByteCompanionObject.MAX_VALUE), $receiver) ? toByte($receiver) : null; } function toByteExactOrNull_2($receiver) { - return rangeTo_1(kotlin_js_internal_ByteCompanionObject.MIN_VALUE, kotlin_js_internal_ByteCompanionObject.MAX_VALUE).contains_mef7kx$($receiver) ? toByte(numberToInt($receiver)) : null; + return rangeTo_0(kotlin_js_internal_ByteCompanionObject.MIN_VALUE, kotlin_js_internal_ByteCompanionObject.MAX_VALUE).contains_mef7kx$($receiver) ? toByte(numberToInt($receiver)) : null; } function toByteExactOrNull_3($receiver) { return rangeTo_1(kotlin_js_internal_ByteCompanionObject.MIN_VALUE, kotlin_js_internal_ByteCompanionObject.MAX_VALUE).contains_mef7kx$($receiver) ? toByte(numberToInt($receiver)) : null; @@ -17626,13 +18398,13 @@ return L_2147483648.lessThanOrEqual($receiver) && $receiver.lessThanOrEqual(L2147483647) ? $receiver.toInt() : null; } function toIntExactOrNull_0($receiver) { - return rangeTo_1(-2147483648, 2147483647).contains_mef7kx$($receiver) ? numberToInt($receiver) : null; + return rangeTo_0(-2147483648, 2147483647).contains_mef7kx$($receiver) ? numberToInt($receiver) : null; } function toIntExactOrNull_1($receiver) { return rangeTo_1(-2147483648, 2147483647).contains_mef7kx$($receiver) ? numberToInt($receiver) : null; } function toLongExactOrNull($receiver) { - return rangeTo_1(Long$Companion$MIN_VALUE.toNumber(), Long$Companion$MAX_VALUE.toNumber()).contains_mef7kx$($receiver) ? Kotlin.Long.fromNumber($receiver) : null; + return rangeTo_0(Long$Companion$MIN_VALUE.toNumber(), Long$Companion$MAX_VALUE.toNumber()).contains_mef7kx$($receiver) ? Kotlin.Long.fromNumber($receiver) : null; } function toLongExactOrNull_0($receiver) { return rangeTo_1(Long$Companion$MIN_VALUE.toNumber(), Long$Companion$MAX_VALUE.toNumber()).contains_mef7kx$($receiver) ? Kotlin.Long.fromNumber($receiver) : null; @@ -17644,7 +18416,7 @@ return L_32768.lessThanOrEqual($receiver) && $receiver.lessThanOrEqual(L32767) ? toShort($receiver.toInt()) : null; } function toShortExactOrNull_1($receiver) { - return rangeTo_1(kotlin_js_internal_ShortCompanionObject.MIN_VALUE, kotlin_js_internal_ShortCompanionObject.MAX_VALUE).contains_mef7kx$($receiver) ? toShort(numberToInt($receiver)) : null; + return rangeTo_0(kotlin_js_internal_ShortCompanionObject.MIN_VALUE, kotlin_js_internal_ShortCompanionObject.MAX_VALUE).contains_mef7kx$($receiver) ? toShort(numberToInt($receiver)) : null; } function toShortExactOrNull_2($receiver) { return rangeTo_1(kotlin_js_internal_ShortCompanionObject.MIN_VALUE, kotlin_js_internal_ShortCompanionObject.MAX_VALUE).contains_mef7kx$($receiver) ? toShort(numberToInt($receiver)) : null; @@ -17766,8 +18538,7 @@ return minimumValue; if (Kotlin.compareTo($receiver, maximumValue) > 0) return maximumValue; - } - else { + } else { if (minimumValue !== null && Kotlin.compareTo($receiver, minimumValue) < 0) return minimumValue; if (maximumValue !== null && Kotlin.compareTo($receiver, maximumValue) > 0) @@ -17845,8 +18616,7 @@ var tmp$; if (Kotlin.isType(range, ClosedFloatingPointRange)) { return coerceIn_6($receiver, range); - } - if (range.isEmpty()) + }if (range.isEmpty()) throw IllegalArgumentException_init_0('Cannot coerce value to an empty range: ' + range + '.'); if (Kotlin.compareTo($receiver, range.start) < 0) tmp$ = range.start; @@ -17860,8 +18630,7 @@ var tmp$; if (Kotlin.isType(range, ClosedFloatingPointRange)) { return coerceIn_6($receiver, range); - } - if (range.isEmpty()) + }if (range.isEmpty()) throw IllegalArgumentException_init_0('Cannot coerce value to an empty range: ' + range + '.'); if ($receiver < range.start) tmp$ = range.start; @@ -17875,8 +18644,7 @@ var tmp$; if (Kotlin.isType(range, ClosedFloatingPointRange)) { return coerceIn_6($receiver, range); - } - if (range.isEmpty()) + }if (range.isEmpty()) throw IllegalArgumentException_init_0('Cannot coerce value to an empty range: ' + range + '.'); if ($receiver.compareTo_11rb$(range.start) < 0) tmp$ = range.start; @@ -17940,8 +18708,7 @@ if (predicate(element)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -17955,8 +18722,7 @@ var element = tmp$.next(); if (predicate(element)) { last = element; - } - } + }} return last; }); function first_20($receiver) { @@ -18063,8 +18829,7 @@ if (predicate(element)) { last = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Sequence contains no element matching the predicate.'); return (tmp$_0 = last) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); @@ -18101,8 +18866,7 @@ var element = tmp$.next(); if (predicate(element)) { last = element; - } - } + }} return last; }); function single_20($receiver) { @@ -18131,8 +18895,7 @@ throw IllegalArgumentException_init('Sequence contains more than one matching element.'); single = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Sequence contains no element matching the predicate.'); return (tmp$_0 = single) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); @@ -18159,8 +18922,7 @@ return null; single = element; found = true; - } - } + }} if (!found) return null; return single; @@ -18170,8 +18932,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) tmp$ = $receiver; else if (Kotlin.isType($receiver, DropTakeSequence)) tmp$ = $receiver.drop_za3lpa$(n); @@ -18279,8 +19040,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) tmp$ = emptySequence(); else if (Kotlin.isType($receiver, DropTakeSequence)) tmp$ = $receiver.take_za3lpa$(n); @@ -18515,8 +19275,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -18541,8 +19300,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -18565,8 +19323,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -18589,8 +19346,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -18637,8 +19393,7 @@ var tmp$_1; if ((tmp$_1 = transform(checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)), item)) != null) { destination.add_11rb$(tmp$_1); - } - } + }} return destination; }; })); @@ -18667,8 +19422,7 @@ var tmp$_0; if ((tmp$_0 = transform(element)) != null) { destination.add_11rb$(tmp$_0); - } - } + }} return destination; }; })); @@ -18852,8 +19606,7 @@ if (Kotlin.compareTo(maxValue, v) < 0) { maxElem = e; maxValue = v; - } - } + }} while (iterator.hasNext()); return maxElem; }); @@ -18927,8 +19680,7 @@ if (Kotlin.compareTo(minValue, v) > 0) { minElem = e; minValue = v; - } - } + }} while (iterator.hasNext()); return minElem; }); @@ -18995,6 +19747,332 @@ return accumulator; }; })); + var reduceOrNull_9 = defineInlineFunction('kotlin.kotlin.sequences.reduceOrNull_linb1r$', function ($receiver, operation) { + var iterator = $receiver.iterator(); + if (!iterator.hasNext()) + return null; + var accumulator = iterator.next(); + while (iterator.hasNext()) { + accumulator = operation(accumulator, iterator.next()); + } + return accumulator; + }); + function Coroutine$scan$lambda(closure$initial_0, this$scan_0, closure$operation_0, $receiver_0, controller, continuation_0) { + CoroutineImpl.call(this, continuation_0); + this.$controller = controller; + this.exceptionState_0 = 1; + this.local$closure$initial = closure$initial_0; + this.local$this$scan = this$scan_0; + this.local$closure$operation = closure$operation_0; + this.local$tmp$ = void 0; + this.local$accumulator = void 0; + this.local$$receiver = $receiver_0; + } + Coroutine$scan$lambda.$metadata$ = {kind: Kotlin.Kind.CLASS, simpleName: null, interfaces: [CoroutineImpl]}; + Coroutine$scan$lambda.prototype = Object.create(CoroutineImpl.prototype); + Coroutine$scan$lambda.prototype.constructor = Coroutine$scan$lambda; + Coroutine$scan$lambda.prototype.doResume = function () { + do + try { + switch (this.state_0) { + case 0: + this.state_0 = 2; + this.result_0 = this.local$$receiver.yield_11rb$(this.local$closure$initial, this); + if (this.result_0 === get_COROUTINE_SUSPENDED()) + return get_COROUTINE_SUSPENDED(); + continue; + case 1: + throw this.exception_0; + case 2: + this.local$accumulator = this.local$closure$initial; + this.local$tmp$ = this.local$this$scan.iterator(); + this.state_0 = 3; + continue; + case 3: + if (!this.local$tmp$.hasNext()) { + this.state_0 = 5; + continue; + } + var element = this.local$tmp$.next(); + this.local$accumulator = this.local$closure$operation(this.local$accumulator, element); + this.state_0 = 4; + this.result_0 = this.local$$receiver.yield_11rb$(this.local$accumulator, this); + if (this.result_0 === get_COROUTINE_SUSPENDED()) + return get_COROUTINE_SUSPENDED(); + continue; + case 4: + this.state_0 = 3; + continue; + case 5: + return Unit; + default:this.state_0 = 1; + throw new Error('State Machine Unreachable execution'); + } + } catch (e) { + if (this.state_0 === 1) { + this.exceptionState_0 = this.state_0; + throw e; + } else { + this.state_0 = this.exceptionState_0; + this.exception_0 = e; + } + } + while (true); + }; + function scan$lambda(closure$initial_0, this$scan_0, closure$operation_0) { + return function ($receiver_0, continuation_0, suspended) { + var instance = new Coroutine$scan$lambda(closure$initial_0, this$scan_0, closure$operation_0, $receiver_0, this, continuation_0); + if (suspended) + return instance; + else + return instance.doResume(null); + }; + } + function scan_9($receiver, initial, operation) { + return sequence(scan$lambda(initial, $receiver, operation)); + } + function Coroutine$scanIndexed$lambda(closure$initial_0, this$scanIndexed_0, closure$operation_0, $receiver_0, controller, continuation_0) { + CoroutineImpl.call(this, continuation_0); + this.$controller = controller; + this.exceptionState_0 = 1; + this.local$closure$initial = closure$initial_0; + this.local$this$scanIndexed = this$scanIndexed_0; + this.local$closure$operation = closure$operation_0; + this.local$tmp$ = void 0; + this.local$index = void 0; + this.local$accumulator = void 0; + this.local$$receiver = $receiver_0; + } + Coroutine$scanIndexed$lambda.$metadata$ = {kind: Kotlin.Kind.CLASS, simpleName: null, interfaces: [CoroutineImpl]}; + Coroutine$scanIndexed$lambda.prototype = Object.create(CoroutineImpl.prototype); + Coroutine$scanIndexed$lambda.prototype.constructor = Coroutine$scanIndexed$lambda; + Coroutine$scanIndexed$lambda.prototype.doResume = function () { + do + try { + switch (this.state_0) { + case 0: + var tmp$; + this.state_0 = 2; + this.result_0 = this.local$$receiver.yield_11rb$(this.local$closure$initial, this); + if (this.result_0 === get_COROUTINE_SUSPENDED()) + return get_COROUTINE_SUSPENDED(); + continue; + case 1: + throw this.exception_0; + case 2: + this.local$index = 0; + this.local$accumulator = this.local$closure$initial; + this.local$tmp$ = this.local$this$scanIndexed.iterator(); + this.state_0 = 3; + continue; + case 3: + if (!this.local$tmp$.hasNext()) { + this.state_0 = 5; + continue; + } + var element = this.local$tmp$.next(); + this.local$accumulator = this.local$closure$operation(checkIndexOverflow((tmp$ = this.local$index, this.local$index = tmp$ + 1 | 0, tmp$)), this.local$accumulator, element); + this.state_0 = 4; + this.result_0 = this.local$$receiver.yield_11rb$(this.local$accumulator, this); + if (this.result_0 === get_COROUTINE_SUSPENDED()) + return get_COROUTINE_SUSPENDED(); + continue; + case 4: + this.state_0 = 3; + continue; + case 5: + return Unit; + default:this.state_0 = 1; + throw new Error('State Machine Unreachable execution'); + } + } catch (e) { + if (this.state_0 === 1) { + this.exceptionState_0 = this.state_0; + throw e; + } else { + this.state_0 = this.exceptionState_0; + this.exception_0 = e; + } + } + while (true); + }; + function scanIndexed$lambda(closure$initial_0, this$scanIndexed_0, closure$operation_0) { + return function ($receiver_0, continuation_0, suspended) { + var instance = new Coroutine$scanIndexed$lambda(closure$initial_0, this$scanIndexed_0, closure$operation_0, $receiver_0, this, continuation_0); + if (suspended) + return instance; + else + return instance.doResume(null); + }; + } + function scanIndexed_9($receiver, initial, operation) { + return sequence(scanIndexed$lambda(initial, $receiver, operation)); + } + function Coroutine$scanReduce$lambda(this$scanReduce_0, closure$operation_0, $receiver_0, controller, continuation_0) { + CoroutineImpl.call(this, continuation_0); + this.$controller = controller; + this.exceptionState_0 = 1; + this.local$this$scanReduce = this$scanReduce_0; + this.local$closure$operation = closure$operation_0; + this.local$iterator = void 0; + this.local$accumulator = void 0; + this.local$$receiver = $receiver_0; + } + Coroutine$scanReduce$lambda.$metadata$ = {kind: Kotlin.Kind.CLASS, simpleName: null, interfaces: [CoroutineImpl]}; + Coroutine$scanReduce$lambda.prototype = Object.create(CoroutineImpl.prototype); + Coroutine$scanReduce$lambda.prototype.constructor = Coroutine$scanReduce$lambda; + Coroutine$scanReduce$lambda.prototype.doResume = function () { + do + try { + switch (this.state_0) { + case 0: + this.local$iterator = this.local$this$scanReduce.iterator(); + if (this.local$iterator.hasNext()) { + this.local$accumulator = this.local$iterator.next(); + this.state_0 = 2; + this.result_0 = this.local$$receiver.yield_11rb$(this.local$accumulator, this); + if (this.result_0 === get_COROUTINE_SUSPENDED()) + return get_COROUTINE_SUSPENDED(); + continue; + } else { + this.state_0 = 6; + continue; + } + + case 1: + throw this.exception_0; + case 2: + this.state_0 = 3; + continue; + case 3: + if (!this.local$iterator.hasNext()) { + this.state_0 = 5; + continue; + } + this.local$accumulator = this.local$closure$operation(this.local$accumulator, this.local$iterator.next()); + this.state_0 = 4; + this.result_0 = this.local$$receiver.yield_11rb$(this.local$accumulator, this); + if (this.result_0 === get_COROUTINE_SUSPENDED()) + return get_COROUTINE_SUSPENDED(); + continue; + case 4: + this.state_0 = 3; + continue; + case 5: + this.state_0 = 6; + continue; + case 6: + return Unit; + default:this.state_0 = 1; + throw new Error('State Machine Unreachable execution'); + } + } catch (e) { + if (this.state_0 === 1) { + this.exceptionState_0 = this.state_0; + throw e; + } else { + this.state_0 = this.exceptionState_0; + this.exception_0 = e; + } + } + while (true); + }; + function scanReduce$lambda(this$scanReduce_0, closure$operation_0) { + return function ($receiver_0, continuation_0, suspended) { + var instance = new Coroutine$scanReduce$lambda(this$scanReduce_0, closure$operation_0, $receiver_0, this, continuation_0); + if (suspended) + return instance; + else + return instance.doResume(null); + }; + } + function scanReduce_9($receiver, operation) { + return sequence(scanReduce$lambda($receiver, operation)); + } + function Coroutine$scanReduceIndexed$lambda(this$scanReduceIndexed_0, closure$operation_0, $receiver_0, controller, continuation_0) { + CoroutineImpl.call(this, continuation_0); + this.$controller = controller; + this.exceptionState_0 = 1; + this.local$this$scanReduceIndexed = this$scanReduceIndexed_0; + this.local$closure$operation = closure$operation_0; + this.local$iterator = void 0; + this.local$accumulator = void 0; + this.local$index = void 0; + this.local$$receiver = $receiver_0; + } + Coroutine$scanReduceIndexed$lambda.$metadata$ = {kind: Kotlin.Kind.CLASS, simpleName: null, interfaces: [CoroutineImpl]}; + Coroutine$scanReduceIndexed$lambda.prototype = Object.create(CoroutineImpl.prototype); + Coroutine$scanReduceIndexed$lambda.prototype.constructor = Coroutine$scanReduceIndexed$lambda; + Coroutine$scanReduceIndexed$lambda.prototype.doResume = function () { + do + try { + switch (this.state_0) { + case 0: + var tmp$; + this.local$iterator = this.local$this$scanReduceIndexed.iterator(); + if (this.local$iterator.hasNext()) { + this.local$accumulator = this.local$iterator.next(); + this.state_0 = 2; + this.result_0 = this.local$$receiver.yield_11rb$(this.local$accumulator, this); + if (this.result_0 === get_COROUTINE_SUSPENDED()) + return get_COROUTINE_SUSPENDED(); + continue; + } else { + this.state_0 = 6; + continue; + } + + case 1: + throw this.exception_0; + case 2: + this.local$index = 1; + this.state_0 = 3; + continue; + case 3: + if (!this.local$iterator.hasNext()) { + this.state_0 = 5; + continue; + } + this.local$accumulator = this.local$closure$operation(checkIndexOverflow((tmp$ = this.local$index, this.local$index = tmp$ + 1 | 0, tmp$)), this.local$accumulator, this.local$iterator.next()); + this.state_0 = 4; + this.result_0 = this.local$$receiver.yield_11rb$(this.local$accumulator, this); + if (this.result_0 === get_COROUTINE_SUSPENDED()) + return get_COROUTINE_SUSPENDED(); + continue; + case 4: + this.state_0 = 3; + continue; + case 5: + this.state_0 = 6; + continue; + case 6: + return Unit; + default:this.state_0 = 1; + throw new Error('State Machine Unreachable execution'); + } + } catch (e) { + if (this.state_0 === 1) { + this.exceptionState_0 = this.state_0; + throw e; + } else { + this.state_0 = this.exceptionState_0; + this.exception_0 = e; + } + } + while (true); + }; + function scanReduceIndexed$lambda(this$scanReduceIndexed_0, closure$operation_0) { + return function ($receiver_0, continuation_0, suspended) { + var instance = new Coroutine$scanReduceIndexed$lambda(this$scanReduceIndexed_0, closure$operation_0, $receiver_0, this, continuation_0); + if (suspended) + return instance; + else + return instance.doResume(null); + }; + } + function scanReduceIndexed_9($receiver, operation) { + return sequence(scanReduceIndexed$lambda($receiver, operation)); + } var sumBy_9 = defineInlineFunction('kotlin.kotlin.sequences.sumBy_gvemys$', function ($receiver, selector) { var tmp$; var sum = 0; @@ -19019,8 +20097,7 @@ return function (it) { if (it == null) { throw IllegalArgumentException_init_0('null element found in ' + this$requireNoNulls + '.'); - } - return it; + }return it; }; } function requireNoNulls_2($receiver) { @@ -19041,8 +20118,7 @@ if (!closure$removed.v && equals(it, closure$element)) { closure$removed.v = true; return false; - } - else + } else return true; }; } @@ -19131,8 +20207,7 @@ var element = tmp$.next(); if (predicate(element)) { first.add_11rb$(element); - } - else { + } else { second.add_11rb$(element); } } @@ -19208,8 +20283,7 @@ this.local$iterator = this.local$this$zipWithNext.iterator(); if (!this.local$iterator.hasNext()) { return; - } - else { + } else { this.state_0 = 2; continue; } @@ -19225,7 +20299,6 @@ this.state_0 = 5; continue; } - this.local$next = this.local$iterator.next(); this.state_0 = 4; this.result_0 = this.local$$receiver.yield_11rb$(this.local$closure$transform(this.local$current, this.local$next), this); @@ -19241,13 +20314,11 @@ default:this.state_0 = 1; throw new Error('State Machine Unreachable execution'); } - } - catch (e) { + } catch (e) { if (this.state_0 === 1) { this.exceptionState_0 = this.state_0; throw e; - } - else { + } else { this.state_0 = this.exceptionState_0; this.exception_0 = e; } @@ -19289,8 +20360,7 @@ buffer.append_gw00v9$(separator); if (limit < 0 || count <= limit) { appendElement_0(buffer, element, transform); - } - else + } else break; } if (limit >= 0 && count > limit) @@ -19467,8 +20537,7 @@ if (!removed.v && equals(element_0, element)) { removed.v = true; predicate$result = false; - } - else { + } else { predicate$result = true; } if (predicate$result) @@ -19478,7 +20547,7 @@ } function minus_8($receiver, elements) { var result = LinkedHashSet_init_1($receiver); - removeAll_4(result, elements); + removeAll_2(result, elements); return result; } function minus_9($receiver, elements) { @@ -19495,14 +20564,13 @@ destination.add_11rb$(element); } return destination; - } - var result = LinkedHashSet_init_1($receiver); + }var result = LinkedHashSet_init_1($receiver); result.removeAll_brywnq$(other); return result; } function minus_10($receiver, elements) { var result = LinkedHashSet_init_1($receiver); - removeAll_3(result, elements); + removeAll_1(result, elements); return result; } var minusElement_1 = defineInlineFunction('kotlin.kotlin.collections.minusElement_xfiyik$', wrapFunction(function () { @@ -19583,8 +20651,7 @@ if (predicate(toBoxedChar(element))) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -19606,8 +20673,7 @@ if (predicate(toBoxedChar(element))) { lastOrNull$result = element; break lastOrNull$break; - } - } + }} lastOrNull$result = null; } while (false); @@ -19675,8 +20741,7 @@ for (var index = tmp$_0; index <= tmp$_1; index += tmp$_2) { if (predicate(toBoxedChar($receiver.charCodeAt(index)))) { return index; - } - } + }} return -1; }; })); @@ -19691,8 +20756,7 @@ var index = tmp$.next(); if (predicate(toBoxedChar($receiver.charCodeAt(index)))) { return index; - } - } + }} return -1; }; })); @@ -19749,6 +20813,18 @@ throw new NoSuchElementException('Char sequence is empty.'); return $receiver.charCodeAt(random.nextInt_za3lpa$($receiver.length)); } + var randomOrNull_25 = defineInlineFunction('kotlin.kotlin.text.randomOrNull_gw00vp$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.text.randomOrNull_kewcp8$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + function randomOrNull_26($receiver, random) { + if ($receiver.length === 0) + return null; + return $receiver.charCodeAt(random.nextInt_za3lpa$($receiver.length)); + } function single_22($receiver) { var tmp$; switch ($receiver.length) { @@ -19780,8 +20856,7 @@ throw IllegalArgumentException_init('Char sequence contains more than one matching element.'); single = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Char sequence contains no character matching the predicate.'); return unboxChar(Kotlin.isChar(tmp$_0 = toBoxedChar(single)) ? tmp$_0 : throwCCE()); @@ -19806,8 +20881,7 @@ return null; single = element; found = true; - } - } + }} if (!found) return null; return single; @@ -19817,29 +20891,25 @@ if (!(n >= 0)) { var message = 'Requested character count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return Kotlin.subSequence($receiver, coerceAtMost_2(n, $receiver.length), $receiver.length); + }return Kotlin.subSequence($receiver, coerceAtMost_2(n, $receiver.length), $receiver.length); } function drop_11($receiver, n) { if (!(n >= 0)) { var message = 'Requested character count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return $receiver.substring(coerceAtMost_2(n, $receiver.length)); + }return $receiver.substring(coerceAtMost_2(n, $receiver.length)); } function dropLast_9($receiver, n) { if (!(n >= 0)) { var message = 'Requested character count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return take_10($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return take_10($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } function dropLast_10($receiver, n) { if (!(n >= 0)) { var message = 'Requested character count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return take_11($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); + }return take_11($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); } var dropLastWhile_9 = defineInlineFunction('kotlin.kotlin.text.dropLastWhile_2pivbd$', wrapFunction(function () { var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; @@ -19858,8 +20928,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) if (!predicate(toBoxedChar($receiver.charCodeAt(index)))) { return $receiver.substring(0, index + 1 | 0); - } - return ''; + }return ''; }; })); var dropWhile_10 = defineInlineFunction('kotlin.kotlin.text.dropWhile_2pivbd$', wrapFunction(function () { @@ -19889,8 +20958,7 @@ for (var index = tmp$_0; index <= tmp$_1; index += tmp$_2) if (!predicate(toBoxedChar($receiver.charCodeAt(index)))) { return $receiver.substring(index); - } - return ''; + }return ''; }; })); var filter_10 = defineInlineFunction('kotlin.kotlin.text.filter_2pivbd$', wrapFunction(function () { @@ -20078,30 +21146,26 @@ if (!(n >= 0)) { var message = 'Requested character count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return Kotlin.subSequence($receiver, 0, coerceAtMost_2(n, $receiver.length)); + }return Kotlin.subSequence($receiver, 0, coerceAtMost_2(n, $receiver.length)); } function take_11($receiver, n) { if (!(n >= 0)) { var message = 'Requested character count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return $receiver.substring(0, coerceAtMost_2(n, $receiver.length)); + }return $receiver.substring(0, coerceAtMost_2(n, $receiver.length)); } function takeLast_9($receiver, n) { if (!(n >= 0)) { var message = 'Requested character count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - var length = $receiver.length; + }var length = $receiver.length; return Kotlin.subSequence($receiver, length - coerceAtMost_2(n, length) | 0, length); } function takeLast_10($receiver, n) { if (!(n >= 0)) { var message = 'Requested character count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - var length = $receiver.length; + }var length = $receiver.length; return $receiver.substring(length - coerceAtMost_2(n, length) | 0); } var takeLastWhile_9 = defineInlineFunction('kotlin.kotlin.text.takeLastWhile_2pivbd$', wrapFunction(function () { @@ -20111,8 +21175,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate(toBoxedChar($receiver.charCodeAt(index)))) { return Kotlin.subSequence($receiver, index + 1 | 0, $receiver.length); - } - } + }} return Kotlin.subSequence($receiver, 0, $receiver.length); }; })); @@ -20123,8 +21186,7 @@ for (var index = get_lastIndex($receiver); index >= 0; index--) { if (!predicate(toBoxedChar($receiver.charCodeAt(index)))) { return $receiver.substring(index + 1 | 0); - } - } + }} return $receiver; }; })); @@ -20136,8 +21198,7 @@ for (var index = 0; index < tmp$; index++) if (!predicate(toBoxedChar($receiver.charCodeAt(index)))) { return Kotlin.subSequence($receiver, 0, index); - } - return Kotlin.subSequence($receiver, 0, $receiver.length); + }return Kotlin.subSequence($receiver, 0, $receiver.length); }; })); var takeWhile_11 = defineInlineFunction('kotlin.kotlin.text.takeWhile_ouje1d$', wrapFunction(function () { @@ -20148,8 +21209,7 @@ for (var index = 0; index < tmp$; index++) if (!predicate(toBoxedChar($receiver.charCodeAt(index)))) { return $receiver.substring(0, index); - } - return $receiver; + }return $receiver; }; })); function reversed_12($receiver) { @@ -20392,8 +21452,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -20421,8 +21480,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -20448,8 +21506,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -20475,8 +21532,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -20553,8 +21609,7 @@ var tmp$_1; if ((tmp$_1 = transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), toBoxedChar(item))) != null) { destination.add_11rb$(tmp$_1); - } - } + }} return destination; }; })); @@ -20571,8 +21626,7 @@ var tmp$_1; if ((tmp$_1 = transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), toBoxedChar(item))) != null) { destination.add_11rb$(tmp$_1); - } - } + }} return destination; }; })); @@ -20605,8 +21659,7 @@ var tmp$_0; if ((tmp$_0 = transform(toBoxedChar(element))) != null) { destination.add_11rb$(tmp$_0); - } - } + }} return destination; }; })); @@ -20622,8 +21675,7 @@ var tmp$_0; if ((tmp$_0 = transform(toBoxedChar(element))) != null) { destination.add_11rb$(tmp$_0); - } - } + }} return destination; }; })); @@ -20815,8 +21867,7 @@ if (Kotlin.compareTo(maxValue, v) < 0) { maxElem = e; maxValue = v; - } - } + }} return maxElem; }; })); @@ -20863,8 +21914,7 @@ if (Kotlin.compareTo(minValue, v) > 0) { minElem = e; minValue = v; - } - } + }} return minElem; }; })); @@ -20947,6 +21997,22 @@ return accumulator; }; })); + var reduceOrNull_10 = defineInlineFunction('kotlin.kotlin.text.reduceOrNull_bc19pa$', wrapFunction(function () { + var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; + var toBoxedChar = Kotlin.toBoxedChar; + var unboxChar = Kotlin.unboxChar; + return function ($receiver, operation) { + var tmp$; + if ($receiver.length === 0) + return null; + var accumulator = $receiver.charCodeAt(0); + tmp$ = get_lastIndex($receiver); + for (var index = 1; index <= tmp$; index++) { + accumulator = unboxChar(operation(toBoxedChar(accumulator), toBoxedChar($receiver.charCodeAt(index)))); + } + return accumulator; + }; + })); var reduceRight_9 = defineInlineFunction('kotlin.kotlin.text.reduceRight_bc19pa$', wrapFunction(function () { var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; @@ -20982,6 +22048,111 @@ return accumulator; }; })); + var reduceRightOrNull_9 = defineInlineFunction('kotlin.kotlin.text.reduceRightOrNull_bc19pa$', wrapFunction(function () { + var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; + var toBoxedChar = Kotlin.toBoxedChar; + var unboxChar = Kotlin.unboxChar; + return function ($receiver, operation) { + var tmp$, tmp$_0; + var index = get_lastIndex($receiver); + if (index < 0) + return null; + var accumulator = $receiver.charCodeAt((tmp$ = index, index = tmp$ - 1 | 0, tmp$)); + while (index >= 0) { + accumulator = unboxChar(operation(toBoxedChar($receiver.charCodeAt((tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0))), toBoxedChar(accumulator))); + } + return accumulator; + }; + })); + var scan_10 = defineInlineFunction('kotlin.kotlin.text.scan_riyz04$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + var iterator = _.kotlin.text.iterator_gw00vp$; + var toBoxedChar = Kotlin.toBoxedChar; + var unboxChar = Kotlin.unboxChar; + return function ($receiver, initial, operation) { + var tmp$; + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + tmp$ = iterator($receiver); + while (tmp$.hasNext()) { + var element = unboxChar(tmp$.next()); + accumulator = operation(accumulator, toBoxedChar(element)); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanIndexed_10 = defineInlineFunction('kotlin.kotlin.text.scanIndexed_l9i73k$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + var get_indices = _.kotlin.text.get_indices_gw00vp$; + var toBoxedChar = Kotlin.toBoxedChar; + return function ($receiver, initial, operation) { + var tmp$, tmp$_0, tmp$_1, tmp$_2; + if ($receiver.length === 0) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.length + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + tmp$ = get_indices($receiver); + tmp$_0 = tmp$.first; + tmp$_1 = tmp$.last; + tmp$_2 = tmp$.step; + for (var index = tmp$_0; index <= tmp$_1; index += tmp$_2) { + accumulator = operation(index, accumulator, toBoxedChar($receiver.charCodeAt(index))); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanReduce_10 = defineInlineFunction('kotlin.kotlin.text.scanReduce_bc19pa$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + var toBoxedChar = Kotlin.toBoxedChar; + var unboxChar = Kotlin.unboxChar; + return function ($receiver, operation) { + var tmp$; + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver.charCodeAt(0)}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(toBoxedChar(accumulator.v)); + var result = $receiver_0; + tmp$ = $receiver.length; + for (var index = 1; index < tmp$; index++) { + accumulator.v = unboxChar(operation(toBoxedChar(accumulator.v), toBoxedChar($receiver.charCodeAt(index)))); + result.add_11rb$(toBoxedChar(accumulator.v)); + } + return result; + }; + })); + var scanReduceIndexed_10 = defineInlineFunction('kotlin.kotlin.text.scanReduceIndexed_8uyn22$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + var toBoxedChar = Kotlin.toBoxedChar; + var unboxChar = Kotlin.unboxChar; + return function ($receiver, operation) { + var tmp$; + if ($receiver.length === 0) + return emptyList(); + var accumulator = {v: $receiver.charCodeAt(0)}; + var $receiver_0 = ArrayList_init($receiver.length); + $receiver_0.add_11rb$(toBoxedChar(accumulator.v)); + var result = $receiver_0; + tmp$ = $receiver.length; + for (var index = 1; index < tmp$; index++) { + accumulator.v = unboxChar(operation(index, toBoxedChar(accumulator.v), toBoxedChar($receiver.charCodeAt(index)))); + result.add_11rb$(toBoxedChar(accumulator.v)); + } + return result; + }; + })); var sumBy_10 = defineInlineFunction('kotlin.kotlin.text.sumBy_kg4n8i$', wrapFunction(function () { var iterator = _.kotlin.text.iterator_gw00vp$; var toBoxedChar = Kotlin.toBoxedChar; @@ -21042,8 +22213,7 @@ var element = unboxChar(tmp$.next()); if (predicate(toBoxedChar(element))) { first.append_s8itvh$(element); - } - else { + } else { second.append_s8itvh$(element); } } @@ -21065,8 +22235,7 @@ var element = unboxChar(tmp$.next()); if (predicate(toBoxedChar(element))) { first.append_s8itvh$(element); - } - else { + } else { second.append_s8itvh$(element); } } @@ -21091,17 +22260,17 @@ var tmp$; checkWindowSizeStep(size, step); var thisSize = $receiver.length; - var result = ArrayList_init_0((thisSize + step - 1 | 0) / step | 0); + var resultCapacity = (thisSize / step | 0) + (thisSize % step === 0 ? 0 : 1) | 0; + var result = ArrayList_init_0(resultCapacity); var index = 0; - while (index < thisSize) { + while (0 <= index && index < thisSize) { var end = index + size | 0; - if (end > thisSize) { + if (end < 0 || end > thisSize) { if (partialWindows) tmp$ = thisSize; else break; - } - else + } else tmp$ = end; var coercedEnd = tmp$; result.add_11rb$(transform(Kotlin.subSequence($receiver, index, coercedEnd))); @@ -21119,9 +22288,11 @@ partialWindows = false; return windowedSequence_0($receiver, size, step, partialWindows, windowedSequence$lambda); } - function windowedSequence$lambda_0(closure$transform, closure$size, this$windowedSequence) { + function windowedSequence$lambda_0(closure$size, this$windowedSequence, closure$transform) { return function (index) { - return closure$transform(Kotlin.subSequence(this$windowedSequence, index, coerceAtMost_2(index + closure$size | 0, this$windowedSequence.length))); + var end = index + closure$size | 0; + var coercedEnd = end < 0 || end > this$windowedSequence.length ? this$windowedSequence.length : end; + return closure$transform(Kotlin.subSequence(this$windowedSequence, index, coercedEnd)); }; } function windowedSequence_0($receiver, size, step_0, partialWindows, transform) { @@ -21131,7 +22302,7 @@ partialWindows = false; checkWindowSizeStep(size, step_0); var windows = step(partialWindows ? get_indices_13($receiver) : until_4(0, $receiver.length - size + 1 | 0), step_0); - return map_10(asSequence_8(windows), windowedSequence$lambda_0(transform, size, $receiver)); + return map_10(asSequence_8(windows), windowedSequence$lambda_0(size, $receiver, transform)); } function zip_57($receiver, other) { var length = Math_0.min($receiver.length, other.length); @@ -21161,8 +22332,7 @@ if (size < 1) { zipWithNext$result = emptyList(); break zipWithNext$break; - } - var result = ArrayList_init_0(size); + }var result = ArrayList_init_0(size); for (var index = 0; index < size; index++) { result.add_11rb$(to(toBoxedChar($receiver.charCodeAt(index)), toBoxedChar($receiver.charCodeAt(index + 1 | 0)))); } @@ -21195,8 +22365,7 @@ var tmp$ = typeof $receiver === 'string'; if (tmp$) { tmp$ = $receiver.length === 0; - } - if (tmp$) + }if (tmp$) return emptyList(); return new Iterable$ObjectLiteral_1(asIterable$lambda_9($receiver)); } @@ -21209,8 +22378,7 @@ var tmp$ = typeof $receiver === 'string'; if (tmp$) { tmp$ = $receiver.length === 0; - } - if (tmp$) + }if (tmp$) return emptySequence(); return new Sequence$ObjectLiteral_1(asSequence$lambda_9($receiver)); } @@ -21300,8 +22468,7 @@ var tmp$ = index >= 0; if (tmp$) { tmp$ = index <= get_lastIndex($receiver.storage); - } - return tmp$ ? $receiver.get_za3lpa$(index) : defaultValue(index); + }return tmp$ ? $receiver.get_za3lpa$(index) : defaultValue(index); }; })); var elementAtOrElse_13 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrElse_rzo8b8$', wrapFunction(function () { @@ -21310,8 +22477,7 @@ var tmp$ = index >= 0; if (tmp$) { tmp$ = index <= get_lastIndex($receiver.storage); - } - return tmp$ ? $receiver.get_za3lpa$(index) : defaultValue(index); + }return tmp$ ? $receiver.get_za3lpa$(index) : defaultValue(index); }; })); var elementAtOrElse_14 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrElse_e4wdik$', wrapFunction(function () { @@ -21320,8 +22486,7 @@ var tmp$ = index >= 0; if (tmp$) { tmp$ = index <= get_lastIndex($receiver.storage); - } - return tmp$ ? $receiver.get_za3lpa$(index) : defaultValue(index); + }return tmp$ ? $receiver.get_za3lpa$(index) : defaultValue(index); }; })); var elementAtOrElse_15 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrElse_9sv3bs$', wrapFunction(function () { @@ -21330,8 +22495,7 @@ var tmp$ = index >= 0; if (tmp$) { tmp$ = index <= get_lastIndex($receiver.storage); - } - return tmp$ ? $receiver.get_za3lpa$(index) : defaultValue(index); + }return tmp$ ? $receiver.get_za3lpa$(index) : defaultValue(index); }; })); var elementAtOrNull_12 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrNull_h8io69$', wrapFunction(function () { @@ -21368,8 +22532,7 @@ if (predicate(element)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -21385,8 +22548,7 @@ if (predicate(element)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -21402,8 +22564,7 @@ if (predicate(element)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -21419,8 +22580,7 @@ if (predicate(element)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -21440,8 +22600,7 @@ if (predicate(element)) { lastOrNull$result = element; break lastOrNull$break; - } - } + }} lastOrNull$result = null; } while (false); @@ -21462,8 +22621,7 @@ if (predicate(element)) { lastOrNull$result = element; break lastOrNull$break; - } - } + }} lastOrNull$result = null; } while (false); @@ -21484,8 +22642,7 @@ if (predicate(element)) { lastOrNull$result = element; break lastOrNull$break; - } - } + }} lastOrNull$result = null; } while (false); @@ -21506,8 +22663,7 @@ if (predicate(element)) { lastOrNull$result = element; break lastOrNull$break; - } - } + }} lastOrNull$result = null; } while (false); @@ -21652,8 +22808,7 @@ var tmp$ = index >= 0; if (tmp$) { tmp$ = index <= get_lastIndex($receiver.storage); - } - return tmp$ ? $receiver.get_za3lpa$(index) : defaultValue(index); + }return tmp$ ? $receiver.get_za3lpa$(index) : defaultValue(index); }; })); var getOrElse_11 = defineInlineFunction('kotlin.kotlin.collections.getOrElse_rzo8b8$', wrapFunction(function () { @@ -21662,8 +22817,7 @@ var tmp$ = index >= 0; if (tmp$) { tmp$ = index <= get_lastIndex($receiver.storage); - } - return tmp$ ? $receiver.get_za3lpa$(index) : defaultValue(index); + }return tmp$ ? $receiver.get_za3lpa$(index) : defaultValue(index); }; })); var getOrElse_12 = defineInlineFunction('kotlin.kotlin.collections.getOrElse_e4wdik$', wrapFunction(function () { @@ -21672,8 +22826,7 @@ var tmp$ = index >= 0; if (tmp$) { tmp$ = index <= get_lastIndex($receiver.storage); - } - return tmp$ ? $receiver.get_za3lpa$(index) : defaultValue(index); + }return tmp$ ? $receiver.get_za3lpa$(index) : defaultValue(index); }; })); var getOrElse_13 = defineInlineFunction('kotlin.kotlin.collections.getOrElse_9sv3bs$', wrapFunction(function () { @@ -21682,37 +22835,32 @@ var tmp$ = index >= 0; if (tmp$) { tmp$ = index <= get_lastIndex($receiver.storage); - } - return tmp$ ? $receiver.get_za3lpa$(index) : defaultValue(index); + }return tmp$ ? $receiver.get_za3lpa$(index) : defaultValue(index); }; })); function getOrNull_10($receiver, index) { var tmp$ = index >= 0; if (tmp$) { tmp$ = index <= get_lastIndex_2($receiver.storage); - } - return tmp$ ? $receiver.get_za3lpa$(index) : null; + }return tmp$ ? $receiver.get_za3lpa$(index) : null; } function getOrNull_11($receiver, index) { var tmp$ = index >= 0; if (tmp$) { tmp$ = index <= get_lastIndex_3($receiver.storage); - } - return tmp$ ? $receiver.get_za3lpa$(index) : null; + }return tmp$ ? $receiver.get_za3lpa$(index) : null; } function getOrNull_12($receiver, index) { var tmp$ = index >= 0; if (tmp$) { tmp$ = index <= get_lastIndex_0($receiver.storage); - } - return tmp$ ? $receiver.get_za3lpa$(index) : null; + }return tmp$ ? $receiver.get_za3lpa$(index) : null; } function getOrNull_13($receiver, index) { var tmp$ = index >= 0; if (tmp$) { tmp$ = index <= get_lastIndex_1($receiver.storage); - } - return tmp$ ? $receiver.get_za3lpa$(index) : null; + }return tmp$ ? $receiver.get_za3lpa$(index) : null; } var indexOf_11 = defineInlineFunction('kotlin.kotlin.collections.indexOf_xx0iru$', wrapFunction(function () { var indexOf = _.kotlin.collections.indexOf_c03ot6$; @@ -21757,8 +22905,7 @@ if (predicate(new UInt_init($receiver_0[index]))) { indexOfFirst$result = index; break indexOfFirst$break; - } - } + }} indexOfFirst$result = -1; } while (false); @@ -21784,8 +22931,7 @@ if (predicate(new ULong_init($receiver_0[index]))) { indexOfFirst$result = index; break indexOfFirst$break; - } - } + }} indexOfFirst$result = -1; } while (false); @@ -21811,8 +22957,7 @@ if (predicate(new UByte_init($receiver_0[index]))) { indexOfFirst$result = index; break indexOfFirst$break; - } - } + }} indexOfFirst$result = -1; } while (false); @@ -21838,8 +22983,7 @@ if (predicate(new UShort_init($receiver_0[index]))) { indexOfFirst$result = index; break indexOfFirst$break; - } - } + }} indexOfFirst$result = -1; } while (false); @@ -21870,8 +23014,7 @@ if (predicate(new UInt_init($receiver_0[index]))) { indexOfLast$result = index; break indexOfLast$break; - } - } + }} indexOfLast$result = -1; } while (false); @@ -21902,8 +23045,7 @@ if (predicate(new ULong_init($receiver_0[index]))) { indexOfLast$result = index; break indexOfLast$break; - } - } + }} indexOfLast$result = -1; } while (false); @@ -21934,8 +23076,7 @@ if (predicate(new UByte_init($receiver_0[index]))) { indexOfLast$result = index; break indexOfLast$break; - } - } + }} indexOfLast$result = -1; } while (false); @@ -21966,8 +23107,7 @@ if (predicate(new UShort_init($receiver_0[index]))) { indexOfLast$result = index; break indexOfLast$break; - } - } + }} indexOfLast$result = -1; } while (false); @@ -22210,6 +23350,54 @@ throw new NoSuchElementException('Array is empty.'); return $receiver.get_za3lpa$(random.nextInt_za3lpa$($receiver.size)); } + var randomOrNull_27 = defineInlineFunction('kotlin.kotlin.collections.randomOrNull_9hsmwz$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.collections.randomOrNull_b7l3ya$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + var randomOrNull_28 = defineInlineFunction('kotlin.kotlin.collections.randomOrNull_rnn80q$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.collections.randomOrNull_2qnwpx$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + var randomOrNull_29 = defineInlineFunction('kotlin.kotlin.collections.randomOrNull_o5f02i$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.collections.randomOrNull_i3mfo9$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + var randomOrNull_30 = defineInlineFunction('kotlin.kotlin.collections.randomOrNull_k4ndbq$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.collections.randomOrNull_7icwln$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + function randomOrNull_31($receiver, random) { + if ($receiver.isEmpty()) + return null; + return $receiver.get_za3lpa$(random.nextInt_za3lpa$($receiver.size)); + } + function randomOrNull_32($receiver, random) { + if ($receiver.isEmpty()) + return null; + return $receiver.get_za3lpa$(random.nextInt_za3lpa$($receiver.size)); + } + function randomOrNull_33($receiver, random) { + if ($receiver.isEmpty()) + return null; + return $receiver.get_za3lpa$(random.nextInt_za3lpa$($receiver.size)); + } + function randomOrNull_34($receiver, random) { + if ($receiver.isEmpty()) + return null; + return $receiver.get_za3lpa$(random.nextInt_za3lpa$($receiver.size)); + } var single_24 = defineInlineFunction('kotlin.kotlin.collections.single_9hsmwz$', wrapFunction(function () { var single = _.kotlin.collections.single_tmsbgo$; var UInt_init = _.kotlin.UInt; @@ -22255,8 +23443,7 @@ throw IllegalArgumentException_init('Array contains more than one matching element.'); single = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Array contains no element matching the predicate.'); return Kotlin.isType(tmp$_0 = single, UInt) ? tmp$_0 : throwCCE(); @@ -22279,8 +23466,7 @@ throw IllegalArgumentException_init('Array contains more than one matching element.'); single = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Array contains no element matching the predicate.'); return Kotlin.isType(tmp$_0 = single, ULong) ? tmp$_0 : throwCCE(); @@ -22303,8 +23489,7 @@ throw IllegalArgumentException_init('Array contains more than one matching element.'); single = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Array contains no element matching the predicate.'); return Kotlin.isType(tmp$_0 = single, UByte) ? tmp$_0 : throwCCE(); @@ -22327,8 +23512,7 @@ throw IllegalArgumentException_init('Array contains more than one matching element.'); single = element; found = true; - } - } + }} if (!found) throw new NoSuchElementException_init('Array contains no element matching the predicate.'); return Kotlin.isType(tmp$_0 = single, UShort) ? tmp$_0 : throwCCE(); @@ -22358,8 +23542,7 @@ return null; single = element; found = true; - } - } + }} if (!found) return null; return single; @@ -22376,8 +23559,7 @@ return null; single = element; found = true; - } - } + }} if (!found) return null; return single; @@ -22394,8 +23576,7 @@ return null; single = element; found = true; - } - } + }} if (!found) return null; return single; @@ -22412,8 +23593,7 @@ return null; single = element; found = true; - } - } + }} if (!found) return null; return single; @@ -22422,57 +23602,49 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_11($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); + }return takeLast_11($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); } function drop_13($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_12($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); + }return takeLast_12($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); } function drop_14($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_13($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); + }return takeLast_13($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); } function drop_15($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_14($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); + }return takeLast_14($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); } function dropLast_11($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return take_12($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); + }return take_12($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); } function dropLast_12($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return take_13($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); + }return take_13($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); } function dropLast_13($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return take_14($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); + }return take_14($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); } function dropLast_14($receiver, n) { if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - return take_15($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); + }return take_15($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); } var dropLastWhile_11 = defineInlineFunction('kotlin.kotlin.collections.dropLastWhile_qooazb$', wrapFunction(function () { var take = _.kotlin.collections.take_h8io69$; @@ -22482,8 +23654,7 @@ for (var index = get_lastIndex($receiver.storage); index >= 0; index--) { if (!predicate($receiver.get_za3lpa$(index))) { return take($receiver, index + 1 | 0); - } - } + }} return emptyList(); }; })); @@ -22495,8 +23666,7 @@ for (var index = get_lastIndex($receiver.storage); index >= 0; index--) { if (!predicate($receiver.get_za3lpa$(index))) { return take($receiver, index + 1 | 0); - } - } + }} return emptyList(); }; })); @@ -22508,8 +23678,7 @@ for (var index = get_lastIndex($receiver.storage); index >= 0; index--) { if (!predicate($receiver.get_za3lpa$(index))) { return take($receiver, index + 1 | 0); - } - } + }} return emptyList(); }; })); @@ -22521,8 +23690,7 @@ for (var index = get_lastIndex($receiver.storage); index >= 0; index--) { if (!predicate($receiver.get_za3lpa$(index))) { return take($receiver, index + 1 | 0); - } - } + }} return emptyList(); }; })); @@ -22540,8 +23708,7 @@ else if (!predicate(item)) { list.add_11rb$(item); yielding = true; - } - } + }} return list; }; })); @@ -22559,8 +23726,7 @@ else if (!predicate(item)) { list.add_11rb$(item); yielding = true; - } - } + }} return list; }; })); @@ -22578,8 +23744,7 @@ else if (!predicate(item)) { list.add_11rb$(item); yielding = true; - } - } + }} return list; }; })); @@ -22597,8 +23762,7 @@ else if (!predicate(item)) { list.add_11rb$(item); yielding = true; - } - } + }} return list; }; })); @@ -22901,26 +24065,22 @@ function slice_23($receiver, indices) { if (indices.isEmpty()) { return emptyList(); - } - return asList_8(new UIntArray(copyOfRange_6($receiver.storage, indices.start, indices.endInclusive + 1 | 0))); + }return asList_8(new UIntArray(copyOfRange_6($receiver.storage, indices.start, indices.endInclusive + 1 | 0))); } function slice_24($receiver, indices) { if (indices.isEmpty()) { return emptyList(); - } - return asList_9(new ULongArray(copyOfRange_7($receiver.storage, indices.start, indices.endInclusive + 1 | 0))); + }return asList_9(new ULongArray(copyOfRange_7($receiver.storage, indices.start, indices.endInclusive + 1 | 0))); } function slice_25($receiver, indices) { if (indices.isEmpty()) { return emptyList(); - } - return asList_10(new UByteArray(copyOfRange_4($receiver.storage, indices.start, indices.endInclusive + 1 | 0))); + }return asList_10(new UByteArray(copyOfRange_4($receiver.storage, indices.start, indices.endInclusive + 1 | 0))); } function slice_26($receiver, indices) { if (indices.isEmpty()) { return emptyList(); - } - return asList_11(new UShortArray(copyOfRange_5($receiver.storage, indices.start, indices.endInclusive + 1 | 0))); + }return asList_11(new UShortArray(copyOfRange_5($receiver.storage, indices.start, indices.endInclusive + 1 | 0))); } function slice_27($receiver, indices) { var tmp$; @@ -22999,12 +24159,11 @@ return new UShortArray(sliceArray_10($receiver.storage, indices)); } function take_12($receiver, n) { - var tmp$, tmp$_0; + var tmp$; if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); if (n >= $receiver.size) return toList_8($receiver); @@ -23015,19 +24174,18 @@ tmp$ = $receiver.iterator(); while (tmp$.hasNext()) { var item = tmp$.next(); - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; list.add_11rb$(item); + if ((count = count + 1 | 0, count) === n) + break; } return list; } function take_13($receiver, n) { - var tmp$, tmp$_0; + var tmp$; if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); if (n >= $receiver.size) return toList_8($receiver); @@ -23038,19 +24196,18 @@ tmp$ = $receiver.iterator(); while (tmp$.hasNext()) { var item = tmp$.next(); - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; list.add_11rb$(item); + if ((count = count + 1 | 0, count) === n) + break; } return list; } function take_14($receiver, n) { - var tmp$, tmp$_0; + var tmp$; if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); if (n >= $receiver.size) return toList_8($receiver); @@ -23061,19 +24218,18 @@ tmp$ = $receiver.iterator(); while (tmp$.hasNext()) { var item = tmp$.next(); - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; list.add_11rb$(item); + if ((count = count + 1 | 0, count) === n) + break; } return list; } function take_15($receiver, n) { - var tmp$, tmp$_0; + var tmp$; if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); if (n >= $receiver.size) return toList_8($receiver); @@ -23084,9 +24240,9 @@ tmp$ = $receiver.iterator(); while (tmp$.hasNext()) { var item = tmp$.next(); - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; list.add_11rb$(item); + if ((count = count + 1 | 0, count) === n) + break; } return list; } @@ -23094,8 +24250,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); var size = $receiver.size; if (n >= size) @@ -23111,8 +24266,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); var size = $receiver.size; if (n >= size) @@ -23128,8 +24282,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); var size = $receiver.size; if (n >= size) @@ -23145,8 +24298,7 @@ if (!(n >= 0)) { var message = 'Requested element count ' + n + ' is less than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) + }if (n === 0) return emptyList(); var size = $receiver.size; if (n >= size) @@ -23166,8 +24318,7 @@ for (var index = get_lastIndex($receiver.storage); index >= 0; index--) { if (!predicate($receiver.get_za3lpa$(index))) { return drop($receiver, index + 1 | 0); - } - } + }} return toList($receiver); }; })); @@ -23179,8 +24330,7 @@ for (var index = get_lastIndex($receiver.storage); index >= 0; index--) { if (!predicate($receiver.get_za3lpa$(index))) { return drop($receiver, index + 1 | 0); - } - } + }} return toList($receiver); }; })); @@ -23192,8 +24342,7 @@ for (var index = get_lastIndex($receiver.storage); index >= 0; index--) { if (!predicate($receiver.get_za3lpa$(index))) { return drop($receiver, index + 1 | 0); - } - } + }} return toList($receiver); }; })); @@ -23205,8 +24354,7 @@ for (var index = get_lastIndex($receiver.storage); index >= 0; index--) { if (!predicate($receiver.get_za3lpa$(index))) { return drop($receiver, index + 1 | 0); - } - } + }} return toList($receiver); }; })); @@ -23354,26 +24502,22 @@ if ($receiver.size > 1) { sort_0($receiver); reverse_2($receiver.storage); - } - } + }} function sortDescending_9($receiver) { if ($receiver.size > 1) { sort_1($receiver); reverse_3($receiver.storage); - } - } + }} function sortDescending_10($receiver) { if ($receiver.size > 1) { sort_2($receiver); reverse_0($receiver.storage); - } - } + }} function sortDescending_11($receiver) { if ($receiver.size > 1) { sort_3($receiver); reverse_1($receiver.storage); - } - } + }} function sorted_9($receiver) { var $receiver_0 = new UIntArray($receiver.storage.slice()); sort_0($receiver_0); @@ -23675,6 +24819,34 @@ return new UShortArray_init(copyOfRange($receiver.storage, fromIndex, toIndex)); }; })); + function fill($receiver, element, fromIndex, toIndex) { + if (fromIndex === void 0) + fromIndex = 0; + if (toIndex === void 0) + toIndex = $receiver.size; + fill_6($receiver.storage, element.data, fromIndex, toIndex); + } + function fill_0($receiver, element, fromIndex, toIndex) { + if (fromIndex === void 0) + fromIndex = 0; + if (toIndex === void 0) + toIndex = $receiver.size; + fill_7($receiver.storage, element.data, fromIndex, toIndex); + } + function fill_1($receiver, element, fromIndex, toIndex) { + if (fromIndex === void 0) + fromIndex = 0; + if (toIndex === void 0) + toIndex = $receiver.size; + fill_4($receiver.storage, element.data, fromIndex, toIndex); + } + function fill_2($receiver, element, fromIndex, toIndex) { + if (fromIndex === void 0) + fromIndex = 0; + if (toIndex === void 0) + toIndex = $receiver.size; + fill_5($receiver.storage, element.data, fromIndex, toIndex); + } var get_indices_8 = defineInlineFunction('kotlin.kotlin.collections.get_indices_9hsmwz$', wrapFunction(function () { var get_indices = _.kotlin.collections.get_indices_tmsbgo$; return function ($receiver) { @@ -24077,8 +25249,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -24103,8 +25274,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -24129,8 +25299,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -24155,8 +25324,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -24181,8 +25349,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -24207,8 +25374,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -24233,8 +25399,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -24259,8 +25424,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -24283,8 +25447,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -24307,8 +25470,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -24331,8 +25493,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -24355,8 +25516,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -24379,8 +25539,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -24403,8 +25562,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -24427,8 +25585,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -24451,8 +25608,7 @@ var answer = ArrayList_init(); destination.put_xwzc9p$(key, answer); tmp$_0 = answer; - } - else { + } else { tmp$_0 = value; } var list = tmp$_0; @@ -25141,8 +26297,7 @@ if (Kotlin.compareTo(maxValue, v) < 0) { maxElem = e; maxValue = v; - } - } + }} return maxElem; }; })); @@ -25162,8 +26317,7 @@ if (Kotlin.compareTo(maxValue, v) < 0) { maxElem = e; maxValue = v; - } - } + }} return maxElem; }; })); @@ -25183,8 +26337,7 @@ if (Kotlin.compareTo(maxValue, v) < 0) { maxElem = e; maxValue = v; - } - } + }} return maxElem; }; })); @@ -25204,8 +26357,7 @@ if (Kotlin.compareTo(maxValue, v) < 0) { maxElem = e; maxValue = v; - } - } + }} return maxElem; }; })); @@ -25329,8 +26481,7 @@ if (Kotlin.compareTo(minValue, v) > 0) { minElem = e; minValue = v; - } - } + }} return minElem; }; })); @@ -25350,8 +26501,7 @@ if (Kotlin.compareTo(minValue, v) > 0) { minElem = e; minValue = v; - } - } + }} return minElem; }; })); @@ -25371,8 +26521,7 @@ if (Kotlin.compareTo(minValue, v) > 0) { minElem = e; minValue = v; - } - } + }} return minElem; }; })); @@ -25392,8 +26541,7 @@ if (Kotlin.compareTo(minValue, v) > 0) { minElem = e; minValue = v; - } - } + }} return minElem; }; })); @@ -25621,6 +26769,62 @@ return accumulator; }; })); + var reduceOrNull_11 = defineInlineFunction('kotlin.kotlin.collections.reduceOrNull_3r8egg$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_tmsbgo$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.isEmpty()) + return null; + var accumulator = $receiver.get_za3lpa$(0); + tmp$ = get_lastIndex($receiver.storage); + for (var index = 1; index <= tmp$; index++) { + accumulator = operation(accumulator, $receiver.get_za3lpa$(index)); + } + return accumulator; + }; + })); + var reduceOrNull_12 = defineInlineFunction('kotlin.kotlin.collections.reduceOrNull_753k0q$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_se6h4x$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.isEmpty()) + return null; + var accumulator = $receiver.get_za3lpa$(0); + tmp$ = get_lastIndex($receiver.storage); + for (var index = 1; index <= tmp$; index++) { + accumulator = operation(accumulator, $receiver.get_za3lpa$(index)); + } + return accumulator; + }; + })); + var reduceOrNull_13 = defineInlineFunction('kotlin.kotlin.collections.reduceOrNull_go0zkm$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_964n91$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.isEmpty()) + return null; + var accumulator = $receiver.get_za3lpa$(0); + tmp$ = get_lastIndex($receiver.storage); + for (var index = 1; index <= tmp$; index++) { + accumulator = operation(accumulator, $receiver.get_za3lpa$(index)); + } + return accumulator; + }; + })); + var reduceOrNull_14 = defineInlineFunction('kotlin.kotlin.collections.reduceOrNull_t1b21c$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_i2lc79$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.isEmpty()) + return null; + var accumulator = $receiver.get_za3lpa$(0); + tmp$ = get_lastIndex($receiver.storage); + for (var index = 1; index <= tmp$; index++) { + accumulator = operation(accumulator, $receiver.get_za3lpa$(index)); + } + return accumulator; + }; + })); var reduceRight_10 = defineInlineFunction('kotlin.kotlin.collections.reduceRight_3r8egg$', wrapFunction(function () { var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; var get_lastIndex = _.kotlin.collections.get_lastIndex_tmsbgo$; @@ -25745,6 +26949,386 @@ return accumulator; }; })); + var reduceRightOrNull_10 = defineInlineFunction('kotlin.kotlin.collections.reduceRightOrNull_3r8egg$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_tmsbgo$; + return function ($receiver, operation) { + var tmp$, tmp$_0; + var index = get_lastIndex($receiver.storage); + if (index < 0) + return null; + var accumulator = $receiver.get_za3lpa$((tmp$ = index, index = tmp$ - 1 | 0, tmp$)); + while (index >= 0) { + accumulator = operation($receiver.get_za3lpa$((tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0)), accumulator); + } + return accumulator; + }; + })); + var reduceRightOrNull_11 = defineInlineFunction('kotlin.kotlin.collections.reduceRightOrNull_753k0q$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_se6h4x$; + return function ($receiver, operation) { + var tmp$, tmp$_0; + var index = get_lastIndex($receiver.storage); + if (index < 0) + return null; + var accumulator = $receiver.get_za3lpa$((tmp$ = index, index = tmp$ - 1 | 0, tmp$)); + while (index >= 0) { + accumulator = operation($receiver.get_za3lpa$((tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0)), accumulator); + } + return accumulator; + }; + })); + var reduceRightOrNull_12 = defineInlineFunction('kotlin.kotlin.collections.reduceRightOrNull_go0zkm$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_964n91$; + return function ($receiver, operation) { + var tmp$, tmp$_0; + var index = get_lastIndex($receiver.storage); + if (index < 0) + return null; + var accumulator = $receiver.get_za3lpa$((tmp$ = index, index = tmp$ - 1 | 0, tmp$)); + while (index >= 0) { + accumulator = operation($receiver.get_za3lpa$((tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0)), accumulator); + } + return accumulator; + }; + })); + var reduceRightOrNull_13 = defineInlineFunction('kotlin.kotlin.collections.reduceRightOrNull_t1b21c$', wrapFunction(function () { + var get_lastIndex = _.kotlin.collections.get_lastIndex_i2lc79$; + return function ($receiver, operation) { + var tmp$, tmp$_0; + var index = get_lastIndex($receiver.storage); + if (index < 0) + return null; + var accumulator = $receiver.get_za3lpa$((tmp$ = index, index = tmp$ - 1 | 0, tmp$)); + while (index >= 0) { + accumulator = operation($receiver.get_za3lpa$((tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0)), accumulator); + } + return accumulator; + }; + })); + var scan_11 = defineInlineFunction('kotlin.kotlin.collections.scan_cc7t7m$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + var tmp$; + if ($receiver.isEmpty()) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.size + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + tmp$ = $receiver.iterator(); + while (tmp$.hasNext()) { + var element = tmp$.next(); + accumulator = operation(accumulator, element); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scan_12 = defineInlineFunction('kotlin.kotlin.collections.scan_hnxoxe$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + var tmp$; + if ($receiver.isEmpty()) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.size + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + tmp$ = $receiver.iterator(); + while (tmp$.hasNext()) { + var element = tmp$.next(); + accumulator = operation(accumulator, element); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scan_13 = defineInlineFunction('kotlin.kotlin.collections.scan_108ycy$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + var tmp$; + if ($receiver.isEmpty()) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.size + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + tmp$ = $receiver.iterator(); + while (tmp$.hasNext()) { + var element = tmp$.next(); + accumulator = operation(accumulator, element); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scan_14 = defineInlineFunction('kotlin.kotlin.collections.scan_yg11c4$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, initial, operation) { + var tmp$; + if ($receiver.isEmpty()) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.size + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + tmp$ = $receiver.iterator(); + while (tmp$.hasNext()) { + var element = tmp$.next(); + accumulator = operation(accumulator, element); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanIndexed_11 = defineInlineFunction('kotlin.kotlin.collections.scanIndexed_rqncna$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + var get_indices = _.kotlin.collections.get_indices_tmsbgo$; + return function ($receiver, initial, operation) { + var tmp$, tmp$_0, tmp$_1, tmp$_2; + if ($receiver.isEmpty()) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.size + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + tmp$ = get_indices($receiver.storage); + tmp$_0 = tmp$.first; + tmp$_1 = tmp$.last; + tmp$_2 = tmp$.step; + for (var index = tmp$_0; index <= tmp$_1; index += tmp$_2) { + accumulator = operation(index, accumulator, $receiver.get_za3lpa$(index)); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanIndexed_12 = defineInlineFunction('kotlin.kotlin.collections.scanIndexed_qls2om$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + var get_indices = _.kotlin.collections.get_indices_se6h4x$; + return function ($receiver, initial, operation) { + var tmp$, tmp$_0, tmp$_1, tmp$_2; + if ($receiver.isEmpty()) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.size + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + tmp$ = get_indices($receiver.storage); + tmp$_0 = tmp$.first; + tmp$_1 = tmp$.last; + tmp$_2 = tmp$.step; + for (var index = tmp$_0; index <= tmp$_1; index += tmp$_2) { + accumulator = operation(index, accumulator, $receiver.get_za3lpa$(index)); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanIndexed_13 = defineInlineFunction('kotlin.kotlin.collections.scanIndexed_5t7keu$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + var get_indices = _.kotlin.collections.get_indices_964n91$; + return function ($receiver, initial, operation) { + var tmp$, tmp$_0, tmp$_1, tmp$_2; + if ($receiver.isEmpty()) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.size + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + tmp$ = get_indices($receiver.storage); + tmp$_0 = tmp$.first; + tmp$_1 = tmp$.last; + tmp$_2 = tmp$.step; + for (var index = tmp$_0; index <= tmp$_1; index += tmp$_2) { + accumulator = operation(index, accumulator, $receiver.get_za3lpa$(index)); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanIndexed_14 = defineInlineFunction('kotlin.kotlin.collections.scanIndexed_p2uijk$', wrapFunction(function () { + var listOf = _.kotlin.collections.listOf_mh5how$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + var get_indices = _.kotlin.collections.get_indices_i2lc79$; + return function ($receiver, initial, operation) { + var tmp$, tmp$_0, tmp$_1, tmp$_2; + if ($receiver.isEmpty()) + return listOf(initial); + var $receiver_0 = ArrayList_init($receiver.size + 1 | 0); + $receiver_0.add_11rb$(initial); + var result = $receiver_0; + var accumulator = initial; + tmp$ = get_indices($receiver.storage); + tmp$_0 = tmp$.first; + tmp$_1 = tmp$.last; + tmp$_2 = tmp$.step; + for (var index = tmp$_0; index <= tmp$_1; index += tmp$_2) { + accumulator = operation(index, accumulator, $receiver.get_za3lpa$(index)); + result.add_11rb$(accumulator); + } + return result; + }; + })); + var scanReduce_11 = defineInlineFunction('kotlin.kotlin.collections.scanReduce_3r8egg$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.isEmpty()) + return emptyList(); + var accumulator = {v: $receiver.get_za3lpa$(0)}; + var $receiver_0 = ArrayList_init($receiver.size); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + tmp$ = $receiver.size; + for (var index = 1; index < tmp$; index++) { + accumulator.v = operation(accumulator.v, $receiver.get_za3lpa$(index)); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduce_12 = defineInlineFunction('kotlin.kotlin.collections.scanReduce_753k0q$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.isEmpty()) + return emptyList(); + var accumulator = {v: $receiver.get_za3lpa$(0)}; + var $receiver_0 = ArrayList_init($receiver.size); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + tmp$ = $receiver.size; + for (var index = 1; index < tmp$; index++) { + accumulator.v = operation(accumulator.v, $receiver.get_za3lpa$(index)); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduce_13 = defineInlineFunction('kotlin.kotlin.collections.scanReduce_go0zkm$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.isEmpty()) + return emptyList(); + var accumulator = {v: $receiver.get_za3lpa$(0)}; + var $receiver_0 = ArrayList_init($receiver.size); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + tmp$ = $receiver.size; + for (var index = 1; index < tmp$; index++) { + accumulator.v = operation(accumulator.v, $receiver.get_za3lpa$(index)); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduce_14 = defineInlineFunction('kotlin.kotlin.collections.scanReduce_t1b21c$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.isEmpty()) + return emptyList(); + var accumulator = {v: $receiver.get_za3lpa$(0)}; + var $receiver_0 = ArrayList_init($receiver.size); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + tmp$ = $receiver.size; + for (var index = 1; index < tmp$; index++) { + accumulator.v = operation(accumulator.v, $receiver.get_za3lpa$(index)); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduceIndexed_11 = defineInlineFunction('kotlin.kotlin.collections.scanReduceIndexed_mwzc8c$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.isEmpty()) + return emptyList(); + var accumulator = {v: $receiver.get_za3lpa$(0)}; + var $receiver_0 = ArrayList_init($receiver.size); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + tmp$ = $receiver.size; + for (var index = 1; index < tmp$; index++) { + accumulator.v = operation(index, accumulator.v, $receiver.get_za3lpa$(index)); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduceIndexed_12 = defineInlineFunction('kotlin.kotlin.collections.scanReduceIndexed_ufwt8q$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.isEmpty()) + return emptyList(); + var accumulator = {v: $receiver.get_za3lpa$(0)}; + var $receiver_0 = ArrayList_init($receiver.size); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + tmp$ = $receiver.size; + for (var index = 1; index < tmp$; index++) { + accumulator.v = operation(index, accumulator.v, $receiver.get_za3lpa$(index)); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduceIndexed_13 = defineInlineFunction('kotlin.kotlin.collections.scanReduceIndexed_7gvi6e$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.isEmpty()) + return emptyList(); + var accumulator = {v: $receiver.get_za3lpa$(0)}; + var $receiver_0 = ArrayList_init($receiver.size); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + tmp$ = $receiver.size; + for (var index = 1; index < tmp$; index++) { + accumulator.v = operation(index, accumulator.v, $receiver.get_za3lpa$(index)); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); + var scanReduceIndexed_14 = defineInlineFunction('kotlin.kotlin.collections.scanReduceIndexed_pd8rcc$', wrapFunction(function () { + var emptyList = _.kotlin.collections.emptyList_287e2$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function ($receiver, operation) { + var tmp$; + if ($receiver.isEmpty()) + return emptyList(); + var accumulator = {v: $receiver.get_za3lpa$(0)}; + var $receiver_0 = ArrayList_init($receiver.size); + $receiver_0.add_11rb$(accumulator.v); + var result = $receiver_0; + tmp$ = $receiver.size; + for (var index = 1; index < tmp$; index++) { + accumulator.v = operation(index, accumulator.v, $receiver.get_za3lpa$(index)); + result.add_11rb$(accumulator.v); + } + return result; + }; + })); var sumBy_11 = defineInlineFunction('kotlin.kotlin.collections.sumBy_ea99pf$', wrapFunction(function () { var UInt = _.kotlin.UInt; return function ($receiver, selector) { @@ -26392,27 +27976,47 @@ function random_37($receiver, random) { try { return nextUInt_2(random, $receiver); - } - catch (e) { + } catch (e) { if (Kotlin.isType(e, IllegalArgumentException)) { throw new NoSuchElementException(e.message); - } - else + } else throw e; } } function random_38($receiver, random) { try { return nextULong_2(random, $receiver); - } - catch (e) { + } catch (e) { if (Kotlin.isType(e, IllegalArgumentException)) { throw new NoSuchElementException(e.message); - } - else + } else throw e; } } + var randomOrNull_35 = defineInlineFunction('kotlin.kotlin.ranges.randomOrNull_fouy9j$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.ranges.randomOrNull_7v08js$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + var randomOrNull_36 = defineInlineFunction('kotlin.kotlin.ranges.randomOrNull_6ij5nc$', wrapFunction(function () { + var Random = _.kotlin.random.Random; + var randomOrNull = _.kotlin.ranges.randomOrNull_nk0vix$; + return function ($receiver) { + return randomOrNull($receiver, Random.Default); + }; + })); + function randomOrNull_37($receiver, random) { + if ($receiver.isEmpty()) + return null; + return nextUInt_2(random, $receiver); + } + function randomOrNull_38($receiver, random) { + if ($receiver.isEmpty()) + return null; + return nextULong_2(random, $receiver); + } var contains_43 = defineInlineFunction('kotlin.kotlin.ranges.contains_dwfzbl$', function ($receiver, element) { return element != null && $receiver.contains_mef7kx$(element); }); @@ -26433,8 +28037,7 @@ var tmp$_0 = (tmp$ = new ULong(value.data.shiftRightUnsigned(32))) != null ? tmp$.equals(new ULong(Kotlin.Long.ZERO)) : null; if (tmp$_0) { tmp$_0 = $receiver.contains_mef7kx$(new UInt(value.data.toInt())); - } - return tmp$_0; + }return tmp$_0; } function contains_49($receiver, value) { return $receiver.contains_mef7kx$(new UInt(value.data & 65535)); @@ -26556,8 +28159,7 @@ var tmp$; if (Kotlin.isType(range, ClosedFloatingPointRange)) { return coerceIn_6($receiver, range); - } - if (range.isEmpty()) + }if (range.isEmpty()) throw IllegalArgumentException_init_0('Cannot coerce value to an empty range: ' + range + '.'); if (uintCompare($receiver.data, range.start.data) < 0) tmp$ = range.start; @@ -26573,8 +28175,7 @@ var tmp$; if (Kotlin.isType(range, ClosedFloatingPointRange)) { return coerceIn_6($receiver, range); - } - if (range.isEmpty()) + }if (range.isEmpty()) throw IllegalArgumentException_init_0('Cannot coerce value to an empty range: ' + range + '.'); if (ulongCompare($receiver.data, range.start.data) < 0) tmp$ = range.start; @@ -26756,8 +28357,7 @@ if (!this.hasNext_0) throw NoSuchElementException_init(); this.hasNext_0 = false; - } - else { + } else { this.next_0 = this.next_0 + this.step | 0; } return toChar(value); @@ -26779,8 +28379,7 @@ if (!this.hasNext_0) throw NoSuchElementException_init(); this.hasNext_0 = false; - } - else { + } else { this.next_0 = this.next_0 + this.step | 0; } return value; @@ -26802,8 +28401,7 @@ if (!this.hasNext_0) throw NoSuchElementException_init(); this.hasNext_0 = false; - } - else { + } else { this.next_0 = this.next_0.add(this.step); } return value; @@ -26845,8 +28443,7 @@ function CharProgression$Companion_getInstance() { if (CharProgression$Companion_instance === null) { new CharProgression$Companion(); - } - return CharProgression$Companion_instance; + }return CharProgression$Companion_instance; } CharProgression.$metadata$ = {kind: Kind_CLASS, simpleName: 'CharProgression', interfaces: [Iterable]}; function IntProgression(start, endInclusive, step) { @@ -26885,8 +28482,7 @@ function IntProgression$Companion_getInstance() { if (IntProgression$Companion_instance === null) { new IntProgression$Companion(); - } - return IntProgression$Companion_instance; + }return IntProgression$Companion_instance; } IntProgression.$metadata$ = {kind: Kind_CLASS, simpleName: 'IntProgression', interfaces: [Iterable]}; function LongProgression(start, endInclusive, step) { @@ -26925,8 +28521,7 @@ function LongProgression$Companion_getInstance() { if (LongProgression$Companion_instance === null) { new LongProgression$Companion(); - } - return LongProgression$Companion_instance; + }return LongProgression$Companion_instance; } LongProgression.$metadata$ = {kind: Kind_CLASS, simpleName: 'LongProgression', interfaces: [Iterable]}; function ClosedRange() { @@ -26972,8 +28567,7 @@ function CharRange$Companion_getInstance() { if (CharRange$Companion_instance === null) { new CharRange$Companion(); - } - return CharRange$Companion_instance; + }return CharRange$Companion_instance; } CharRange.$metadata$ = {kind: Kind_CLASS, simpleName: 'CharRange', interfaces: [ClosedRange, CharProgression]}; function IntRange(start, endInclusive) { @@ -27010,8 +28604,7 @@ function IntRange$Companion_getInstance() { if (IntRange$Companion_instance === null) { new IntRange$Companion(); - } - return IntRange$Companion_instance; + }return IntRange$Companion_instance; } IntRange.$metadata$ = {kind: Kind_CLASS, simpleName: 'IntRange', interfaces: [ClosedRange, IntProgression]}; function LongRange(start, endInclusive) { @@ -27048,8 +28641,7 @@ function LongRange$Companion_getInstance() { if (LongRange$Companion_instance === null) { new LongRange$Companion(); - } - return LongRange$Companion_instance; + }return LongRange$Companion_instance; } LongRange.$metadata$ = {kind: Kind_CLASS, simpleName: 'LongRange', interfaces: [ClosedRange, LongProgression]}; function Unit() { @@ -27063,8 +28655,7 @@ function Unit_getInstance() { if (Unit_instance === null) { new Unit(); - } - return Unit_instance; + }return Unit_instance; } function AnnotationTarget(name, ordinal) { Enum.call(this); @@ -27444,8 +29035,7 @@ function KTypeProjection$Companion_getInstance() { if (KTypeProjection$Companion_instance === null) { new KTypeProjection$Companion(); - } - return KTypeProjection$Companion_instance; + }return KTypeProjection$Companion_instance; } KTypeProjection.$metadata$ = {kind: Kind_CLASS, simpleName: 'KTypeProjection', interfaces: []}; KTypeProjection.prototype.component1 = function () { @@ -27579,8 +29169,7 @@ var tmp$; if (this.index < this.closure$arr.length) { return this.closure$arr[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else + } else throw new NoSuchElementException(this.index.toString()); }; arrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterator]}; @@ -27588,8 +29177,7 @@ if (type == null) { var arr = array; return new arrayIterator$ObjectLiteral(arr); - } - else + } else switch (type) { case 'BooleanArray': return booleanArrayIterator(array); @@ -27622,8 +29210,7 @@ var tmp$; if (this.index < this.closure$array.length) { return this.closure$array[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else + } else throw new NoSuchElementException(this.index.toString()); }; booleanArrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [BooleanIterator]}; @@ -27642,8 +29229,7 @@ var tmp$; if (this.index < this.closure$array.length) { return this.closure$array[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else + } else throw new NoSuchElementException(this.index.toString()); }; byteArrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [ByteIterator]}; @@ -27662,8 +29248,7 @@ var tmp$; if (this.index < this.closure$array.length) { return this.closure$array[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else + } else throw new NoSuchElementException(this.index.toString()); }; shortArrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [ShortIterator]}; @@ -27682,8 +29267,7 @@ var tmp$; if (this.index < this.closure$array.length) { return this.closure$array[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else + } else throw new NoSuchElementException(this.index.toString()); }; charArrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [CharIterator]}; @@ -27702,8 +29286,7 @@ var tmp$; if (this.index < this.closure$array.length) { return this.closure$array[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else + } else throw new NoSuchElementException(this.index.toString()); }; intArrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [IntIterator]}; @@ -27722,8 +29305,7 @@ var tmp$; if (this.index < this.closure$array.length) { return this.closure$array[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else + } else throw new NoSuchElementException(this.index.toString()); }; floatArrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [FloatIterator]}; @@ -27742,8 +29324,7 @@ var tmp$; if (this.index < this.closure$array.length) { return this.closure$array[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else + } else throw new NoSuchElementException(this.index.toString()); }; doubleArrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [DoubleIterator]}; @@ -27762,8 +29343,7 @@ var tmp$; if (this.index < this.closure$array.length) { return this.closure$array[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else + } else throw new NoSuchElementException(this.index.toString()); }; longArrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [LongIterator]}; @@ -27780,16 +29360,14 @@ function subSequence(c, startIndex, endIndex) { if (typeof c === 'string') { return c.substring(startIndex, endIndex); - } - else { + } else { return c.subSequence_vux9f0$(startIndex, endIndex); } } function captureStack(baseClass, instance) { if (Error.captureStackTrace) { Error.captureStackTrace(instance, get_js(Kotlin.getKClassFromExpression(instance))); - } - else { + } else { instance.stack = (new Error()).stack; } } @@ -27798,8 +29376,7 @@ var throwable = new Error(); if (equals(typeof message, 'undefined')) { tmp$ = cause != null ? cause.toString() : null; - } - else { + } else { tmp$ = message; } throwable.message = tmp$; @@ -27832,8 +29409,7 @@ var arr = args[i]; if (!Kotlin.isArray(arr)) { typed[i] = [].slice.call(arr); - } - else { + } else { typed[i] = arr; } } @@ -27846,8 +29422,7 @@ var arr = args[i]; if (!Kotlin.isArray(arr)) { typed[i] = [].slice.call(arr); - } - else { + } else { typed[i] = arr; } } @@ -27861,14 +29436,12 @@ var arr = args[i]; if (!Kotlin.isArray(arr)) { typed[i] = [].slice.call(arr); - } - else { + } else { typed[i] = arr; } } return [].concat.apply([], typed); - } - else { + } else { var size = 0; for (var i_0 = 0; i_0 !== args.length; ++i_0) { var tmp$; @@ -27877,8 +29450,7 @@ var result = new a.constructor(size); if (a.$type$ !== undefined) { result.$type$ = a.$type$; - } - size = 0; + }size = 0; for (var i_1 = 0; i_1 !== args.length; ++i_1) { var tmp$_0, tmp$_1; var arr_0 = args[i_1]; @@ -27943,8 +29515,7 @@ var tmp$; if (result.isFailure) { getOrNull$result = null; - } - else { + } else { getOrNull$result = (tmp$ = result.value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); } var currentResult = {v: getOrNull$result}; @@ -27955,8 +29526,7 @@ var completion = $receiver.resultContinuation_0; if (currentException.v == null) { $receiver.result_0 = currentResult.v; - } - else { + } else { $receiver.state_0 = $receiver.exceptionState_0; $receiver.exception_0 = currentException.v; } @@ -27966,27 +29536,23 @@ return; currentResult.v = outcome; currentException.v = null; - } - catch (exception) { + } catch (exception) { currentResult.v = null; currentException.v = exception; } $receiver.releaseIntercepted_0(); if (Kotlin.isType(completion, CoroutineImpl)) { current.v = completion; - } - else { + } else { var tmp$_1; if ((tmp$_0 = currentException.v) != null) { completion.resumeWith_tl1gpc$(new Result(createFailure(tmp$_0))); tmp$_1 = Unit; - } - else + } else tmp$_1 = null; if (tmp$_1 == null) { completion.resumeWith_tl1gpc$(new Result(currentResult.v)); - } - return; + }return; } } }; @@ -27994,8 +29560,7 @@ var intercepted = this.intercepted__0; if (intercepted != null && intercepted !== this) { ensureNotNull(this.context.get_j3r2sn$(ContinuationInterceptor$Key_getInstance())).releaseInterceptedContinuation_k98bjh$(intercepted); - } - this.intercepted__0 = CompletedContinuation_getInstance(); + }this.intercepted__0 = CompletedContinuation_getInstance(); }; CoroutineImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'CoroutineImpl', interfaces: [Continuation]}; function CompletedContinuation() { @@ -28015,8 +29580,7 @@ function CompletedContinuation_getInstance() { if (CompletedContinuation_instance === null) { new CompletedContinuation(); - } - return CompletedContinuation_instance; + }return CompletedContinuation_instance; } createCoroutineFromSuspendFunction$ObjectLiteral.prototype = Object.create(CoroutineImpl.prototype); createCoroutineFromSuspendFunction$ObjectLiteral.prototype.constructor = createCoroutineFromSuspendFunction$ObjectLiteral; @@ -28028,8 +29592,7 @@ var tmp$; if ((tmp$ = this.exception_0) != null) { throw tmp$; - } - return this.closure$block(); + }return this.closure$block(); }; createCoroutineFromSuspendFunction$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [CoroutineImpl]}; var startCoroutineUninterceptedOrReturn = defineInlineFunction('kotlin.kotlin.coroutines.intrinsics.startCoroutineUninterceptedOrReturn_x18nsh$', function ($receiver, completion) { @@ -28046,8 +29609,7 @@ function createCoroutineUnintercepted($receiver, completion) { if ($receiver.length == 2) { return $receiver(completion, true); - } - else { + } else { var tmp$; return new createCoroutineFromSuspendFunction$ObjectLiteral(createCoroutineUnintercepted$lambda($receiver, completion), Kotlin.isType(tmp$ = completion, Continuation) ? tmp$ : throwCCE_0()); } @@ -28060,8 +29622,7 @@ function createCoroutineUnintercepted_0($receiver, receiver, completion) { if ($receiver.length == 3) { return $receiver(receiver, completion, true); - } - else { + } else { var tmp$; return new createCoroutineFromSuspendFunction$ObjectLiteral(createCoroutineUnintercepted$lambda_0($receiver, receiver, completion), Kotlin.isType(tmp$ = completion, Continuation) ? tmp$ : throwCCE_0()); } @@ -28081,8 +29642,7 @@ var tmp$; if ((tmp$ = this.exception_0) != null) { throw tmp$; - } - return this.closure$block(); + }return this.closure$block(); }; createCoroutineFromSuspendFunction$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [CoroutineImpl]}; return function (completion, block) { @@ -28090,6 +29650,9 @@ return new createCoroutineFromSuspendFunction$ObjectLiteral(block, Kotlin.isType(tmp$ = completion, Continuation) ? tmp$ : throwCCE_0()); }; }); + var isArrayish = defineInlineFunction('kotlin.kotlin.js.isArrayish_kcmwxo$', function (o) { + return Kotlin.isArrayish(o); + }); var jsDeleteProperty = defineInlineFunction('kotlin.kotlin.js.jsDeleteProperty_dgzutr$', function (obj, property) { delete obj[property]; }); @@ -28126,15 +29689,13 @@ var result = source.slice(0, newSize); if (source.$type$ !== undefined) { result.$type$ = source.$type$; - } - var index = source.length; + }var index = source.length; if (newSize > index) { result.length = newSize; while (index < newSize) { result[tmp$ = index, index = tmp$ + 1 | 0, tmp$] = defaultValue; } - } - return result; + }return result; } function arrayPlusCollection(array, collection) { var tmp$, tmp$_0; @@ -28142,8 +29703,7 @@ result.length += collection.size; if (array.$type$ !== undefined) { result.$type$ = array.$type$; - } - var index = array.length; + }var index = array.length; tmp$ = collection.iterator(); while (tmp$.hasNext()) { var element = tmp$.next(); @@ -28164,11 +29724,33 @@ var copyArrayType = defineInlineFunction('kotlin.kotlin.copyArrayType_dgzutr$', function (from, to) { if (from.$type$ !== undefined) { to.$type$ = from.$type$; - } - }); + }}); var jsIsType = defineInlineFunction('kotlin.kotlin.jsIsType_dgzutr$', function (obj, jsClass) { return Kotlin.isType(obj, jsClass); }); + function withSign($receiver, sign) { + var thisSignBit = Kotlin.doubleSignBit($receiver); + var newSignBit = Kotlin.doubleSignBit(sign); + return thisSignBit === newSignBit ? $receiver : -$receiver; + } + var fromBits = defineInlineFunction('kotlin.kotlin.fromBits_pkt8ie$', function ($receiver, bits) { + return Kotlin.doubleFromBits(bits); + }); + var fromBits_0 = defineInlineFunction('kotlin.kotlin.fromBits_4ql4v8$', function ($receiver, bits) { + return Kotlin.floatFromBits(bits); + }); + var Long = defineInlineFunction('kotlin.kotlin.Long_6xvm5r$', function (low, high) { + return Kotlin.Long.fromBits(low, high); + }); + var get_low = defineInlineFunction('kotlin.kotlin.get_low_nzsbcz$', function ($receiver) { + return $receiver.getLowBits(); + }); + var get_high = defineInlineFunction('kotlin.kotlin.get_high_nzsbcz$', function ($receiver) { + return $receiver.getHighBits(); + }); + function toString_0($receiver, radix) { + return $receiver.toString(checkRadix(radix)); + } function elementAt_2($receiver, index) { var tmp$; if (index >= 0 && index <= get_lastIndex($receiver)) @@ -28485,29 +30067,25 @@ if (!(newSize >= 0)) { var message = 'Invalid new array size: ' + newSize + '.'; throw IllegalArgumentException_init_0(message.toString()); - } - return fillFrom($receiver, new Int8Array(newSize)); + }return fillFrom($receiver, new Int8Array(newSize)); } function copyOf_17($receiver, newSize) { if (!(newSize >= 0)) { var message = 'Invalid new array size: ' + newSize + '.'; throw IllegalArgumentException_init_0(message.toString()); - } - return fillFrom($receiver, new Int16Array(newSize)); + }return fillFrom($receiver, new Int16Array(newSize)); } function copyOf_18($receiver, newSize) { if (!(newSize >= 0)) { var message = 'Invalid new array size: ' + newSize + '.'; throw IllegalArgumentException_init_0(message.toString()); - } - return fillFrom($receiver, new Int32Array(newSize)); + }return fillFrom($receiver, new Int32Array(newSize)); } function copyOf_19($receiver, newSize) { if (!(newSize >= 0)) { var message = 'Invalid new array size: ' + newSize + '.'; throw IllegalArgumentException_init_0(message.toString()); - } - var type = 'LongArray'; + }var type = 'LongArray'; var array = arrayCopyResize($receiver, newSize, L0); array.$type$ = type; return array; @@ -28516,22 +30094,19 @@ if (!(newSize >= 0)) { var message = 'Invalid new array size: ' + newSize + '.'; throw IllegalArgumentException_init_0(message.toString()); - } - return fillFrom($receiver, new Float32Array(newSize)); + }return fillFrom($receiver, new Float32Array(newSize)); } function copyOf_21($receiver, newSize) { if (!(newSize >= 0)) { var message = 'Invalid new array size: ' + newSize + '.'; throw IllegalArgumentException_init_0(message.toString()); - } - return fillFrom($receiver, new Float64Array(newSize)); + }return fillFrom($receiver, new Float64Array(newSize)); } function copyOf_22($receiver, newSize) { if (!(newSize >= 0)) { var message = 'Invalid new array size: ' + newSize + '.'; throw IllegalArgumentException_init_0(message.toString()); - } - var type = 'BooleanArray'; + }var type = 'BooleanArray'; var array = arrayCopyResize($receiver, newSize, false); array.$type$ = type; return array; @@ -28540,8 +30115,7 @@ if (!(newSize >= 0)) { var message = 'Invalid new array size: ' + newSize + '.'; throw IllegalArgumentException_init_0(message.toString()); - } - var type = 'CharArray'; + }var type = 'CharArray'; var array = fillFrom($receiver, Kotlin.charArray(newSize)); array.$type$ = type; return array; @@ -28550,8 +30124,7 @@ if (!(newSize >= 0)) { var message = 'Invalid new array size: ' + newSize + '.'; throw IllegalArgumentException_init_0(message.toString()); - } - return arrayCopyResize($receiver, newSize, null); + }return arrayCopyResize($receiver, newSize, null); } function copyOfRange_3($receiver, fromIndex, toIndex) { AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); @@ -28598,6 +30171,78 @@ array.$type$ = type; return array; } + function fill_3($receiver, element, fromIndex, toIndex) { + if (fromIndex === void 0) + fromIndex = 0; + if (toIndex === void 0) + toIndex = $receiver.length; + AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); + $receiver.fill(element, fromIndex, toIndex); + } + function fill_4($receiver, element, fromIndex, toIndex) { + if (fromIndex === void 0) + fromIndex = 0; + if (toIndex === void 0) + toIndex = $receiver.length; + AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); + $receiver.fill(element, fromIndex, toIndex); + } + function fill_5($receiver, element, fromIndex, toIndex) { + if (fromIndex === void 0) + fromIndex = 0; + if (toIndex === void 0) + toIndex = $receiver.length; + AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); + $receiver.fill(element, fromIndex, toIndex); + } + function fill_6($receiver, element, fromIndex, toIndex) { + if (fromIndex === void 0) + fromIndex = 0; + if (toIndex === void 0) + toIndex = $receiver.length; + AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); + $receiver.fill(element, fromIndex, toIndex); + } + function fill_7($receiver, element, fromIndex, toIndex) { + if (fromIndex === void 0) + fromIndex = 0; + if (toIndex === void 0) + toIndex = $receiver.length; + AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); + $receiver.fill(element, fromIndex, toIndex); + } + function fill_8($receiver, element, fromIndex, toIndex) { + if (fromIndex === void 0) + fromIndex = 0; + if (toIndex === void 0) + toIndex = $receiver.length; + AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); + $receiver.fill(element, fromIndex, toIndex); + } + function fill_9($receiver, element, fromIndex, toIndex) { + if (fromIndex === void 0) + fromIndex = 0; + if (toIndex === void 0) + toIndex = $receiver.length; + AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); + $receiver.fill(element, fromIndex, toIndex); + } + function fill_10($receiver, element, fromIndex, toIndex) { + if (fromIndex === void 0) + fromIndex = 0; + if (toIndex === void 0) + toIndex = $receiver.length; + AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); + $receiver.fill(element, fromIndex, toIndex); + } + function fill_11($receiver, element, fromIndex, toIndex) { + if (fromIndex === void 0) + fromIndex = 0; + if (toIndex === void 0) + toIndex = $receiver.length; + AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); + $receiver.fill(element, fromIndex, toIndex); + } var plus_27 = defineInlineFunction('kotlin.kotlin.collections.plus_mjy6jw$', function ($receiver, element) { return $receiver.concat([element]); }); @@ -28736,8 +30381,7 @@ function sort_4($receiver) { if ($receiver.length > 1) { $receiver.sort(sort$lambda); - } - } + }} function sort_5($receiver) { if ($receiver.length > 1) sortArray($receiver); @@ -28971,8 +30615,7 @@ var tmp$ = index >= 0; if (tmp$) { tmp$ = index <= get_lastIndex_2($receiver.storage); - } - var tmp$_0; + }var tmp$_0; if (tmp$) tmp$_0 = $receiver.get_za3lpa$(index); else { @@ -28984,8 +30627,7 @@ var tmp$ = index >= 0; if (tmp$) { tmp$ = index <= get_lastIndex_3($receiver.storage); - } - var tmp$_0; + }var tmp$_0; if (tmp$) tmp$_0 = $receiver.get_za3lpa$(index); else { @@ -28997,8 +30639,7 @@ var tmp$ = index >= 0; if (tmp$) { tmp$ = index <= get_lastIndex_0($receiver.storage); - } - var tmp$_0; + }var tmp$_0; if (tmp$) tmp$_0 = $receiver.get_za3lpa$(index); else { @@ -29010,8 +30651,7 @@ var tmp$ = index >= 0; if (tmp$) { tmp$ = index <= get_lastIndex_1($receiver.storage); - } - var tmp$_0; + }var tmp$_0; if (tmp$) tmp$_0 = $receiver.get_za3lpa$(index); else { @@ -29237,6 +30877,12 @@ this.value = value; } JsQualifier.$metadata$ = {kind: Kind_CLASS, simpleName: 'JsQualifier', interfaces: [Annotation]}; + function ExperimentalJsExport() { + } + ExperimentalJsExport.$metadata$ = {kind: Kind_CLASS, simpleName: 'ExperimentalJsExport', interfaces: [Annotation]}; + function JsExport() { + } + JsExport.$metadata$ = {kind: Kind_CLASS, simpleName: 'JsExport', interfaces: [Annotation]}; function Volatile() { } Volatile.$metadata$ = {kind: Kind_CLASS, simpleName: 'Volatile', interfaces: [Annotation]}; @@ -29266,16 +30912,14 @@ var tmp$; if (array.length < collection.size) { return copyToArrayImpl(collection); - } - var iterator = collection.iterator(); + }var iterator = collection.iterator(); var index = 0; while (iterator.hasNext()) { array[tmp$ = index, index = tmp$ + 1 | 0, tmp$] = iterator.next(); } if (index < array.length) { array[index] = null; - } - return array; + }return array; } function listOf(element) { return arrayListOf_0([element]); @@ -29286,7 +30930,7 @@ function mapOf(pair) { return hashMapOf_0([pair]); } - function fill($receiver, value) { + function fill_12($receiver, value) { var tmp$; tmp$ = get_lastIndex_12($receiver); for (var index = 0; index <= tmp$; index++) { @@ -29326,14 +30970,12 @@ if (ArrayBuffer.isView(destination) && ArrayBuffer.isView(source)) { var subrange = source.subarray(startIndex, endIndex); destination.set(subrange, destinationOffset); - } - else { + } else { if (source !== destination || destinationOffset <= startIndex) { for (var index = 0; index < rangeSize; index++) { destination[destinationOffset + index | 0] = source[startIndex + index | 0]; } - } - else { + } else { for (var index_0 = rangeSize - 1 | 0; index_0 >= 0; index_0--) { destination[destinationOffset + index_0 | 0] = source[startIndex + index_0 | 0]; } @@ -29355,15 +30997,21 @@ function checkIndexOverflow(index) { if (index < 0) { throwIndexOverflow(); - } - return index; + }return index; } function checkCountOverflow(count) { if (count < 0) { throwCountOverflow(); - } - return count; + }return count; + } + function mapCapacity(expectedSize) { + return expectedSize; } + function checkBuilderCapacity(capacity) { + if (!(capacity >= 0)) { + var message = 'capacity must be non-negative.'; + throw IllegalArgumentException_init_0(message.toString()); + }} function AbstractMutableCollection() { AbstractCollection.call(this); } @@ -29373,8 +31021,7 @@ if (equals(iterator.next(), element)) { iterator.remove(); return true; - } - } + }} return false; }; AbstractMutableCollection.prototype.addAll_brywnq$ = function (elements) { @@ -29395,7 +31042,7 @@ } AbstractMutableCollection.prototype.removeAll_brywnq$ = function (elements) { var tmp$; - return removeAll_0(Kotlin.isType(tmp$ = this, MutableIterable) ? tmp$ : throwCCE_0(), AbstractMutableCollection$removeAll$lambda(elements)); + return removeAll_3(Kotlin.isType(tmp$ = this, MutableIterable) ? tmp$ : throwCCE_0(), AbstractMutableCollection$removeAll$lambda(elements)); }; function AbstractMutableCollection$retainAll$lambda(closure$elements) { return function (it) { @@ -29404,7 +31051,7 @@ } AbstractMutableCollection.prototype.retainAll_brywnq$ = function (elements) { var tmp$; - return removeAll_0(Kotlin.isType(tmp$ = this, MutableIterable) ? tmp$ : throwCCE_0(), AbstractMutableCollection$retainAll$lambda(elements)); + return removeAll_3(Kotlin.isType(tmp$ = this, MutableIterable) ? tmp$ : throwCCE_0(), AbstractMutableCollection$retainAll$lambda(elements)); }; AbstractMutableCollection.prototype.clear = function () { var iterator = this.iterator(); @@ -29446,7 +31093,7 @@ }; } AbstractMutableList.prototype.removeAll_brywnq$ = function (elements) { - return removeAll_1(this, AbstractMutableList$removeAll$lambda(elements)); + return removeAll_4(this, AbstractMutableList$removeAll$lambda(elements)); }; function AbstractMutableList$retainAll$lambda(closure$elements) { return function (it) { @@ -29454,7 +31101,7 @@ }; } AbstractMutableList.prototype.retainAll_brywnq$ = function (elements) { - return removeAll_1(this, AbstractMutableList$retainAll$lambda(elements)); + return removeAll_4(this, AbstractMutableList$retainAll$lambda(elements)); }; AbstractMutableList.prototype.iterator = function () { return new AbstractMutableList$IteratorImpl(this); @@ -29468,16 +31115,14 @@ for (var index = 0; index <= tmp$; index++) { if (equals(this.get_za3lpa$(index), element)) { return index; - } - } + }} return -1; }; AbstractMutableList.prototype.lastIndexOf_11rb$ = function (element) { for (var index = get_lastIndex_12(this); index >= 0; index--) { if (equals(this.get_za3lpa$(index), element)) { return index; - } - } + }} return -1; }; AbstractMutableList.prototype.listIterator = function () { @@ -29526,8 +31171,7 @@ if (!(this.last_0 !== -1)) { var message = 'Call next() or previous() before removing element from the iterator.'; throw IllegalStateException_init_0(message.toString()); - } - this.$outer.removeAt_za3lpa$(this.last_0); + }this.$outer.removeAt_za3lpa$(this.last_0); this.index_0 = this.last_0; this.last_0 = -1; }; @@ -29562,8 +31206,7 @@ if (!(this.last_0 !== -1)) { var message = 'Call next() or previous() before updating element value with the iterator.'; throw IllegalStateException_init_0(message.toString()); - } - this.$outer.set_wxm5ur$(this.last_0, element); + }this.$outer.set_wxm5ur$(this.last_0, element); }; AbstractMutableList$ListIteratorImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'ListIteratorImpl', interfaces: [MutableListIterator, AbstractMutableList$IteratorImpl]}; function AbstractMutableList$SubList(list, fromIndex, toIndex) { @@ -29670,8 +31313,7 @@ if (this.this$AbstractMutableMap.containsKey_11rb$(element)) { this.this$AbstractMutableMap.remove_11rb$(element); return true; - } - return false; + }return false; }; Object.defineProperty(AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral.prototype, 'size', {get: function () { return this.this$AbstractMutableMap.size; @@ -29680,8 +31322,7 @@ Object.defineProperty(AbstractMutableMap.prototype, 'keys', {get: function () { if (this._keys_qe2m0n$_0 == null) { this._keys_qe2m0n$_0 = new AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral(this); - } - return ensureNotNull(this._keys_qe2m0n$_0); + }return ensureNotNull(this._keys_qe2m0n$_0); }}); AbstractMutableMap.prototype.putAll_a2k3zr$ = function (from) { var tmp$; @@ -29740,8 +31381,7 @@ Object.defineProperty(AbstractMutableMap.prototype, 'values', {get: function () { if (this._values_kxdlqh$_0 == null) { this._values_kxdlqh$_0 = new AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral(this); - } - return ensureNotNull(this._values_kxdlqh$_0); + }return ensureNotNull(this._values_kxdlqh$_0); }}); AbstractMutableMap.prototype.remove_11rb$ = function (key) { var iter = this.entries.iterator(); @@ -29752,8 +31392,7 @@ var value = entry.value; iter.remove(); return value; - } - } + }} return null; }; AbstractMutableMap.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractMutableMap', interfaces: [MutableMap, AbstractMap]}; @@ -29819,8 +31458,7 @@ return this.addAll_brywnq$(elements); else if (index === 0) { this.array_hd7ov6$_0 = copyToArray(elements).concat(this.array_hd7ov6$_0); - } - else { + } else { this.array_hd7ov6$_0 = copyOfRange_3(this.array_hd7ov6$_0, 0, index).concat(copyToArray(elements), copyOfRange_3(this.array_hd7ov6$_0, index, this.size)); } this.modCount = this.modCount + 1 | 0; @@ -29839,8 +31477,7 @@ this.array_hd7ov6$_0.splice(index, 1); this.modCount = this.modCount + 1 | 0; return true; - } - } + }} return false; }; ArrayList.prototype.removeRange_vux9f0$ = function (fromIndex, toIndex) { @@ -29899,8 +31536,7 @@ function sortArrayWith(array, comparison) { if (getStableSortingIsSupported()) { array.sort(comparison); - } - else { + } else { mergeSort(array, 0, get_lastIndex(array), new Comparator$ObjectLiteral(comparison)); } } @@ -29913,8 +31549,7 @@ if (getStableSortingIsSupported()) { var comparison = sortArrayWith$lambda(comparator); array.sort(comparison); - } - else { + } else { mergeSort(array, 0, get_lastIndex(array), comparator); } } @@ -29925,8 +31560,7 @@ if (getStableSortingIsSupported()) { var comparison = sortArray$lambda; array.sort(comparison); - } - else { + } else { mergeSort(array, 0, get_lastIndex(array), naturalOrder()); } } @@ -29937,8 +31571,7 @@ function getStableSortingIsSupported() { if (_stableSortingIsSupported != null) { return _stableSortingIsSupported; - } - _stableSortingIsSupported = false; + }_stableSortingIsSupported = false; var array = []; for (var index = 0; index < 600; index++) array.push(index); @@ -29963,13 +31596,11 @@ var item = result[tmp$]; array[tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0] = item; } - } - } + }} function mergeSort_0(array, buffer, start, end, comparator) { if (start === end) { return array; - } - var median = (start + end | 0) / 2 | 0; + }var median = (start + end | 0) / 2 | 0; var left = mergeSort_0(array, buffer, start, median, comparator); var right = mergeSort_0(array, buffer, median + 1 | 0, end, comparator); var target = left === buffer ? array : buffer; @@ -29982,17 +31613,14 @@ if (comparator.compare(leftValue, rightValue) <= 0) { target[i] = leftValue; leftIndex = leftIndex + 1 | 0; - } - else { + } else { target[i] = rightValue; rightIndex = rightIndex + 1 | 0; } - } - else if (leftIndex <= median) { + } else if (leftIndex <= median) { target[i] = left[leftIndex]; leftIndex = leftIndex + 1 | 0; - } - else { + } else { target[i] = right[rightIndex]; rightIndex = rightIndex + 1 | 0; } @@ -30006,19 +31634,20 @@ var element = $receiver[tmp$]; if (element == null) tmp$_0 = 0; - else if (Kotlin.isArrayish(element)) { - tmp$_0 = contentDeepHashCodeImpl(element); + else { + if (Kotlin.isArrayish(element)) { + tmp$_0 = contentDeepHashCodeImpl(element); + } else if (Kotlin.isType(element, UByteArray)) + tmp$_0 = contentHashCode_2(element); + else if (Kotlin.isType(element, UShortArray)) + tmp$_0 = contentHashCode_3(element); + else if (Kotlin.isType(element, UIntArray)) + tmp$_0 = contentHashCode_0(element); + else if (Kotlin.isType(element, ULongArray)) + tmp$_0 = contentHashCode_1(element); + else + tmp$_0 = hashCode(element); } - else if (Kotlin.isType(element, UByteArray)) - tmp$_0 = contentHashCode_2(element); - else if (Kotlin.isType(element, UShortArray)) - tmp$_0 = contentHashCode_3(element); - else if (Kotlin.isType(element, UIntArray)) - tmp$_0 = contentHashCode_0(element); - else if (Kotlin.isType(element, ULongArray)) - tmp$_0 = contentHashCode_1(element); - else - tmp$_0 = hashCode(element); var elementHash = tmp$_0; result = (31 * result | 0) + elementHash | 0; } @@ -30041,8 +31670,7 @@ function EqualityComparator$HashCode_getInstance() { if (EqualityComparator$HashCode_instance === null) { new EqualityComparator$HashCode(); - } - return EqualityComparator$HashCode_instance; + }return EqualityComparator$HashCode_instance; } EqualityComparator.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'EqualityComparator', interfaces: []}; function HashMap() { @@ -30070,8 +31698,7 @@ if (this.contains_11rb$(element)) { this.$outer.remove_11rb$(element.key); return true; - } - return false; + }return false; }; Object.defineProperty(HashMap$EntrySet.prototype, 'size', {get: function () { return this.$outer.size; @@ -30091,15 +31718,13 @@ if (Kotlin.isType($receiver, Collection) && $receiver.isEmpty()) { any$result = false; break any$break; - } - tmp$ = $receiver.iterator(); + }tmp$ = $receiver.iterator(); while (tmp$.hasNext()) { var element = tmp$.next(); if (this.equality_vgh6cm$_0.equals_oaftn8$(element.value, value)) { any$result = true; break any$break; - } - } + }} any$result = false; } while (false); @@ -30108,8 +31733,7 @@ Object.defineProperty(HashMap.prototype, 'entries', {get: function () { if (this._entries_7ih87x$_0 == null) { this._entries_7ih87x$_0 = this.createEntrySet(); - } - return ensureNotNull(this._entries_7ih87x$_0); + }return ensureNotNull(this._entries_7ih87x$_0); }}); HashMap.prototype.createEntrySet = function () { return new HashMap$EntrySet(this); @@ -30148,12 +31772,10 @@ if (!(initialCapacity >= 0)) { var message = 'Negative initial capacity: ' + initialCapacity; throw IllegalArgumentException_init_0(message.toString()); - } - if (!(loadFactor >= 0)) { + }if (!(loadFactor >= 0)) { var message_0 = 'Non-positive load factor: ' + loadFactor; throw IllegalArgumentException_init_0(message_0.toString()); - } - return $this; + }return $this; } function HashMap_init_2(initialCapacity, $this) { $this = $this || Object.create(HashMap.prototype); @@ -30256,26 +31878,22 @@ var chainOrEntry = this.getChainOrEntryOrNull_0(hashCode); if (chainOrEntry == null) { this.backingMap_0[hashCode] = new AbstractMutableMap$SimpleEntry(key, value); - } - else { + } else { if (!Kotlin.isArray(chainOrEntry)) { var entry = chainOrEntry; if (this.equality.equals_oaftn8$(entry.key, key)) { return entry.setValue_11rc$(value); - } - else { + } else { this.backingMap_0[hashCode] = [entry, new AbstractMutableMap$SimpleEntry(key, value)]; this.size = this.size + 1 | 0; return null; } - } - else { + } else { var chain = chainOrEntry; var entry_0 = this.findEntryInChain_0(chain, key); if (entry_0 != null) { return entry_0.setValue_11rc$(value); - } - chain.push(new AbstractMutableMap$SimpleEntry(key, value)); + }chain.push(new AbstractMutableMap$SimpleEntry(key, value)); } } this.size = this.size + 1 | 0; @@ -30287,20 +31905,17 @@ tmp$ = this.getChainOrEntryOrNull_0(hashCode); if (tmp$ == null) { return null; - } - var chainOrEntry = tmp$; + }var chainOrEntry = tmp$; if (!Kotlin.isArray(chainOrEntry)) { var entry = chainOrEntry; if (this.equality.equals_oaftn8$(entry.key, key)) { delete this.backingMap_0[hashCode]; this.size = this.size - 1 | 0; return entry.value; - } - else { + } else { return null; } - } - else { + } else { var chain = chainOrEntry; for (var index = 0; index !== chain.length; ++index) { var entry_0 = chain[index]; @@ -30308,14 +31923,12 @@ if (chain.length === 1) { chain.length = 0; delete this.backingMap_0[hashCode]; - } - else { + } else { chain.splice(index, 1); } this.size = this.size - 1 | 0; return entry_0.value; - } - } + }} } return null; }; @@ -30335,18 +31948,15 @@ tmp$ = this.getChainOrEntryOrNull_0(this.equality.getHashCode_s8jyv4$(key)); if (tmp$ == null) { return null; - } - var chainOrEntry = tmp$; + }var chainOrEntry = tmp$; if (!Kotlin.isArray(chainOrEntry)) { var entry = chainOrEntry; if (this.equality.equals_oaftn8$(entry.key, key)) { return entry; - } - else { + } else { return null; } - } - else { + } else { var chain = chainOrEntry; return this.findEntryInChain_0(chain, key); } @@ -30360,8 +31970,7 @@ if (this.equality.equals_oaftn8$(element.key, key)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -30382,14 +31991,12 @@ var chainSize = this.chainOrEntry.length; if ((this.itemIndex = this.itemIndex + 1 | 0, this.itemIndex) < chainSize) return 0; - } - if ((this.keyIndex = this.keyIndex + 1 | 0, this.keyIndex) < this.keys.length) { + }if ((this.keyIndex = this.keyIndex + 1 | 0, this.keyIndex) < this.keys.length) { this.chainOrEntry = this.this$InternalHashCodeMap.backingMap_0[this.keys[this.keyIndex]]; this.isChain = Kotlin.isArray(this.chainOrEntry); this.itemIndex = 0; return 0; - } - else { + } else { this.chainOrEntry = null; return 1; } @@ -30405,8 +32012,7 @@ throw NoSuchElementException_init(); if (this.isChain) { tmp$ = this.chainOrEntry[this.itemIndex]; - } - else { + } else { tmp$ = this.chainOrEntry; } var lastEntry = tmp$; @@ -30418,8 +32024,7 @@ if (this.lastEntry == null) { var message = 'Required value was null.'; throw IllegalStateException_init_0(message.toString()); - } - this.this$InternalHashCodeMap.remove_11rb$(ensureNotNull(this.lastEntry).key); + }this.this$InternalHashCodeMap.remove_11rb$(ensureNotNull(this.lastEntry).key); this.lastEntry = null; this.itemIndex = this.itemIndex - 1 | 0; }; @@ -30469,14 +32074,12 @@ if (!(typeof key === 'string')) { var message = 'Failed requirement.'; throw IllegalArgumentException_init_0(message.toString()); - } - var oldValue = this.backingMap_0[key]; + }var oldValue = this.backingMap_0[key]; this.backingMap_0[key] = value; if (oldValue === undefined) { this.size = this.size + 1 | 0; return null; - } - else { + } else { return oldValue; } }; @@ -30488,8 +32091,7 @@ delete this.backingMap_0[key]; this.size = this.size - 1 | 0; return value; - } - else { + } else { return null; } }; @@ -30521,8 +32123,7 @@ if (value == null) { var message = 'Required value was null.'; throw IllegalStateException_init_0(message.toString()); - } - else { + } else { checkNotNull$result = value; } tmp$_0.remove_11rb$((tmp$ = checkNotNull$result) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0()); @@ -30595,8 +32196,7 @@ if (!(this.last_0 != null)) { var message = 'Check failed.'; throw IllegalStateException_init_0(message.toString()); - } - this.$outer.$outer.remove_aul5td$_0(ensureNotNull(this.last_0)); + }this.$outer.$outer.remove_aul5td$_0(ensureNotNull(this.last_0)); this.$outer.$outer.map_97q5dv$_0.remove_11rb$(ensureNotNull(this.last_0).key); this.last_0 = null; }; @@ -30617,8 +32217,7 @@ if (this.contains_11rb$(element)) { this.$outer.remove_11rb$(element.key); return true; - } - return false; + }return false; }; Object.defineProperty(LinkedHashMap$EntrySet.prototype, 'size', {get: function () { return this.$outer.size; @@ -30628,21 +32227,18 @@ if (!($receiver.next_8be2vx$ == null && $receiver.prev_8be2vx$ == null)) { var message = 'Check failed.'; throw IllegalStateException_init_0(message.toString()); - } - var _head = this.head_1lr44l$_0; + }var _head = this.head_1lr44l$_0; if (_head == null) { this.head_1lr44l$_0 = $receiver; $receiver.next_8be2vx$ = $receiver; $receiver.prev_8be2vx$ = $receiver; - } - else { + } else { var value = _head.prev_8be2vx$; var checkNotNull$result; if (value == null) { var message_0 = 'Required value was null.'; throw IllegalStateException_init_0(message_0.toString()); - } - else { + } else { checkNotNull$result = value; } var _tail = checkNotNull$result; @@ -30655,12 +32251,10 @@ LinkedHashMap.prototype.remove_aul5td$_0 = function ($receiver) { if ($receiver.next_8be2vx$ === $receiver) { this.head_1lr44l$_0 = null; - } - else { + } else { if (this.head_1lr44l$_0 === $receiver) { this.head_1lr44l$_0 = $receiver.next_8be2vx$; - } - ensureNotNull($receiver.next_8be2vx$).prev_8be2vx$ = $receiver.prev_8be2vx$; + }ensureNotNull($receiver.next_8be2vx$).prev_8be2vx$ = $receiver.prev_8be2vx$; ensureNotNull($receiver.prev_8be2vx$).next_8be2vx$ = $receiver.next_8be2vx$; } $receiver.next_8be2vx$ = null; @@ -30678,13 +32272,11 @@ tmp$ = this.head_1lr44l$_0; if (tmp$ == null) { return false; - } - var node = tmp$; + }var node = tmp$; do { if (equals(node.value, value)) { return true; - } - node = ensureNotNull(node.next_8be2vx$); + }node = ensureNotNull(node.next_8be2vx$); } while (node !== this.head_1lr44l$_0); return false; @@ -30703,8 +32295,7 @@ this.map_97q5dv$_0.put_xwzc9p$(key, newEntry); this.addToEnd_ufg2hg$_0(newEntry); return null; - } - else { + } else { return old.setValue_11rc$(value); } }; @@ -30713,8 +32304,7 @@ if (entry != null) { this.remove_aul5td$_0(entry); return entry.value; - } - return null; + }return null; }; Object.defineProperty(LinkedHashMap.prototype, 'size', {get: function () { return this.map_97q5dv$_0.size; @@ -30858,13 +32448,12 @@ } BufferedOutputToConsoleLog.prototype.print_s8jyv4$ = function (message) { var s = String(message); - var i = lastIndexOf_15(s, 10); + var i = s.lastIndexOf('\n', 0); if (i >= 0) { this.buffer = this.buffer + s.substring(0, i); this.flush(); s = s.substring(i + 1 | 0); - } - this.buffer = this.buffer + s; + }this.buffer = this.buffer + s; }; BufferedOutputToConsoleLog.prototype.flush = function () { console.log(this.buffer); @@ -30898,8 +32487,7 @@ else if (cur === get_COROUTINE_SUSPENDED()) { this.result_0 = CoroutineSingletons$RESUMED_getInstance(); this.delegate_0.resumeWith_tl1gpc$(result); - } - else + } else throw IllegalStateException_init_0('Already resumed'); }; SafeContinuation.prototype.getOrThrow = function () { @@ -30907,8 +32495,7 @@ if (this.result_0 === CoroutineSingletons$UNDECIDED_getInstance()) { this.result_0 = get_COROUTINE_SUSPENDED(); return get_COROUTINE_SUSPENDED(); - } - var result = this.result_0; + }var result = this.result_0; if (result === CoroutineSingletons$RESUMED_getInstance()) tmp$ = get_COROUTINE_SUSPENDED(); else if (Kotlin.isType(result, Result$Failure)) @@ -30973,15 +32560,13 @@ var tmp$_0; var presentClasses = trim_3(Kotlin.isCharSequence(tmp$_0 = $receiver.className) ? tmp$_0 : throwCCE()).toString(); var $receiver_0 = StringBuilder_init_1(); - $receiver_0.append_gw00v9$(presentClasses); + $receiver_0.append_61zpoe$(presentClasses); if (!(presentClasses.length === 0)) { - $receiver_0.append_gw00v9$(' '); - } - joinTo_8(missingClasses, $receiver_0, ' '); + $receiver_0.append_61zpoe$(' '); + }joinTo_8(missingClasses, $receiver_0, ' '); $receiver.className = $receiver_0.toString(); return true; - } - return false; + }return false; } function removeClass($receiver, cssClasses) { var any$result; @@ -30992,8 +32577,7 @@ if (hasClass($receiver, element)) { any$result = true; break any$break; - } - } + }} any$result = false; } while (false); @@ -31012,8 +32596,7 @@ } $receiver.className = joinToString_8(destination, ' '); return true; - } - return false; + }return false; } function get_isText($receiver) { return $receiver.nodeType === Node.TEXT_NODE || $receiver.nodeType === Node.CDATA_SECTION_NODE; @@ -31044,8 +32627,7 @@ asList$ObjectLiteral_4.prototype.get_za3lpa$ = function (index) { if (index >= 0 && index <= get_lastIndex_12(this)) { return this.this$asList.item(index); - } - else + } else throw new IndexOutOfBoundsException('index ' + index + ' is not in range [0..' + get_lastIndex_12(this) + ']'); }; asList$ObjectLiteral_4.$metadata$ = {kind: Kind_CLASS, interfaces: [AbstractList]}; @@ -31075,11 +32657,12 @@ var r = $receiver; if ($receiver['iterator'] != null) tmp$_0 = $receiver['iterator'](); - else if (Kotlin.isArrayish(r)) { - tmp$_0 = Kotlin.arrayIterator(r); + else { + if (Kotlin.isArrayish(r)) { + tmp$_0 = Kotlin.arrayIterator(r); + } else + tmp$_0 = (Kotlin.isType(tmp$ = r, Iterable) ? tmp$ : throwCCE_0()).iterator(); } - else - tmp$_0 = (Kotlin.isType(tmp$ = r, Iterable) ? tmp$ : throwCCE_0()).iterator(); return tmp$_0; } function throwNPE(message) { @@ -31422,8 +33005,7 @@ var key = keys[tmp$]; if (other.hasOwnProperty(key)) { $receiver[key] = other[key]; - } - } + }} return $receiver; } var sin = defineInlineFunction('kotlin.kotlin.math.sin_14dthe$', wrapFunction(function () { @@ -31578,8 +33160,7 @@ function round(x) { if (x % 0.5 !== 0.0) { return Math.round(x); - } - var floor = Math_0.floor(x); + }var floor = Math_0.floor(x); return floor % 2 === 0.0 ? floor : Math_0.ceil(x); } var abs = defineInlineFunction('kotlin.kotlin.math.abs_14dthe$', wrapFunction(function () { @@ -31630,11 +33211,6 @@ return Math_0.sign($receiver); }; })); - function withSign($receiver, sign) { - var thisSignBit = Kotlin.doubleSignBit($receiver); - var newSignBit = Kotlin.doubleSignBit(sign); - return thisSignBit === newSignBit ? $receiver : -$receiver; - } var withSign_0 = defineInlineFunction('kotlin.kotlin.math.withSign_j6vyb1$', wrapFunction(function () { var withSign = _.kotlin.math.withSign_38ydlf$; return function ($receiver, sign) { @@ -32001,12 +33577,99 @@ function isFinite_0($receiver) { return !isInfinite_0($receiver) && !isNaN_1($receiver); } - var fromBits = defineInlineFunction('kotlin.kotlin.fromBits_pkt8ie$', function ($receiver, bits) { - return Kotlin.doubleFromBits(bits); - }); - var fromBits_0 = defineInlineFunction('kotlin.kotlin.fromBits_4ql4v8$', function ($receiver, bits) { - return Kotlin.floatFromBits(bits); - }); + function countOneBits($receiver) { + var v = $receiver; + v = (v & 1431655765) + (v >>> 1 & 1431655765) | 0; + v = (v & 858993459) + (v >>> 2 & 858993459) | 0; + v = (v & 252645135) + (v >>> 4 & 252645135) | 0; + v = (v & 16711935) + (v >>> 8 & 16711935) | 0; + v = (v & 65535) + (v >>> 16) | 0; + return v; + } + var countLeadingZeroBits = defineInlineFunction('kotlin.kotlin.countLeadingZeroBits_s8ev3n$', wrapFunction(function () { + var Math_0 = Math; + return function ($receiver) { + return Math_0.clz32($receiver); + }; + })); + function countTrailingZeroBits($receiver) { + return 32 - Math_0.clz32(~($receiver | (-$receiver | 0))) | 0; + } + function takeHighestOneBit($receiver) { + return $receiver === 0 ? 0 : 1 << 31 - Math_0.clz32($receiver); + } + function takeLowestOneBit($receiver) { + return $receiver & (-$receiver | 0); + } + function rotateLeft($receiver, bitCount) { + return $receiver << bitCount | $receiver >>> 32 - bitCount; + } + function rotateRight($receiver, bitCount) { + return $receiver << 32 - bitCount | $receiver >>> bitCount; + } + function countOneBits_0($receiver) { + return countOneBits($receiver.getHighBits()) + countOneBits($receiver.getLowBits()) | 0; + } + function countLeadingZeroBits_0($receiver) { + var high = $receiver.getHighBits(); + if (high === 0) { + return 32 + Math_0.clz32($receiver.getLowBits()) | 0; + } else { + return Math_0.clz32(high); + } + } + function countTrailingZeroBits_0($receiver) { + var low = $receiver.getLowBits(); + if (low === 0) { + return 32 + countTrailingZeroBits($receiver.getHighBits()) | 0; + } else + return countTrailingZeroBits(low); + } + function takeHighestOneBit_0($receiver) { + var high = $receiver.getHighBits(); + if (high === 0) { + var low = takeHighestOneBit($receiver.getLowBits()); + return Kotlin.Long.fromBits(low, 0); + } else { + var high_0 = takeHighestOneBit(high); + return Kotlin.Long.fromBits(0, high_0); + } + } + function takeLowestOneBit_0($receiver) { + var low = $receiver.getLowBits(); + if (low === 0) { + var high = takeLowestOneBit($receiver.getHighBits()); + return Kotlin.Long.fromBits(0, high); + } else { + var low_0 = takeLowestOneBit(low); + return Kotlin.Long.fromBits(low_0, 0); + } + } + function rotateLeft_0($receiver, bitCount) { + if ((bitCount & 31) !== 0) { + var low = $receiver.getLowBits(); + var high = $receiver.getHighBits(); + var newLow = low << bitCount | high >>> (-bitCount | 0); + var newHigh = high << bitCount | low >>> (-bitCount | 0); + return (bitCount & 32) === 0 ? Kotlin.Long.fromBits(newLow, newHigh) : Kotlin.Long.fromBits(newHigh, newLow); + } else { + var tmp$; + if ((bitCount & 32) === 0) + tmp$ = $receiver; + else { + var tmp$_0 = $receiver.getHighBits(); + var high_0 = $receiver.getLowBits(); + tmp$ = Kotlin.Long.fromBits(tmp$_0, high_0); + } + return tmp$; + } + } + var rotateRight_0 = defineInlineFunction('kotlin.kotlin.rotateRight_if0zpk$', wrapFunction(function () { + var rotateLeft = _.kotlin.rotateLeft_if0zpk$; + return function ($receiver, bitCount) { + return rotateLeft($receiver, -bitCount | 0); + }; + })); var then = defineInlineFunction('kotlin.kotlin.js.then_eyvp0y$', function ($receiver, onFulfilled) { return $receiver.then(onFulfilled); }); @@ -32016,26 +33679,11 @@ function defaultPlatformRandom() { return Random_0(Math.random() * Math.pow(2, 32) | 0); } - function fastLog2(value) { - var v = value; - var log = -1; - while (v !== 0) { - v = v >>> 1; - log = log + 1 | 0; - } - return log; - } var INV_2_26; var INV_2_53; function doubleFromParts(hi26, low27) { return hi26 * INV_2_26 + low27 * INV_2_53; } - var rangeTo = defineInlineFunction('kotlin.kotlin.ranges.rangeTo_yni7l$', wrapFunction(function () { - var rangeTo = _.kotlin.ranges.rangeTo_38ydlf$; - return function ($receiver, that) { - return rangeTo($receiver, that); - }; - })); function get_jsClass($receiver) { switch (typeof $receiver) { case 'string': @@ -32177,9 +33825,180 @@ function NothingKClassImpl_getInstance() { if (NothingKClassImpl_instance === null) { new NothingKClassImpl(); + }return NothingKClassImpl_instance; + } + function createKType(classifier, arguments_0, isMarkedNullable) { + return new KTypeImpl(classifier, asList(arguments_0), isMarkedNullable); + } + function createDynamicKType() { + return DynamicKType_getInstance(); + } + function markKTypeNullable(kType) { + return new KTypeImpl(ensureNotNull(kType.classifier), kType.arguments, true); + } + function createKTypeParameter(name, upperBounds, variance) { + var tmp$; + switch (variance) { + case 'in': + tmp$ = KVariance$IN_getInstance(); + break; + case 'out': + tmp$ = KVariance$OUT_getInstance(); + break; + default:tmp$ = KVariance$INVARIANT_getInstance(); + break; } - return NothingKClassImpl_instance; + var kVariance = tmp$; + return new KTypeParameterImpl(name, asList(upperBounds), kVariance, false); + } + function getStarKTypeProjection() { + return KTypeProjection$Companion_getInstance().STAR; + } + function createCovariantKTypeProjection(type) { + return KTypeProjection$Companion_getInstance().covariant_saj79j$(type); + } + function createInvariantKTypeProjection(type) { + return KTypeProjection$Companion_getInstance().invariant_saj79j$(type); + } + function createContravariantKTypeProjection(type) { + return KTypeProjection$Companion_getInstance().contravariant_saj79j$(type); } + function KTypeImpl(classifier, arguments_0, isMarkedNullable) { + this.classifier_50lv52$_0 = classifier; + this.arguments_lev63t$_0 = arguments_0; + this.isMarkedNullable_748rxs$_0 = isMarkedNullable; + } + Object.defineProperty(KTypeImpl.prototype, 'classifier', {get: function () { + return this.classifier_50lv52$_0; + }}); + Object.defineProperty(KTypeImpl.prototype, 'arguments', {get: function () { + return this.arguments_lev63t$_0; + }}); + Object.defineProperty(KTypeImpl.prototype, 'isMarkedNullable', {get: function () { + return this.isMarkedNullable_748rxs$_0; + }}); + Object.defineProperty(KTypeImpl.prototype, 'annotations', {get: function () { + return emptyList(); + }}); + KTypeImpl.prototype.equals = function (other) { + return Kotlin.isType(other, KTypeImpl) && equals(this.classifier, other.classifier) && equals(this.arguments, other.arguments) && this.isMarkedNullable === other.isMarkedNullable; + }; + KTypeImpl.prototype.hashCode = function () { + return (((hashCode(this.classifier) * 31 | 0) + hashCode(this.arguments) | 0) * 31 | 0) + hashCode(this.isMarkedNullable) | 0; + }; + function KTypeImpl$toString$lambda(this$KTypeImpl) { + return function (it) { + return this$KTypeImpl.asString_0(it); + }; + } + KTypeImpl.prototype.toString = function () { + var tmp$, tmp$_0; + var kClass = Kotlin.isType(tmp$ = this.classifier, KClass) ? tmp$ : null; + if (kClass == null) + tmp$_0 = this.classifier.toString(); + else if (kClass.simpleName != null) + tmp$_0 = kClass.simpleName; + else + tmp$_0 = '(non-denotable type)'; + var classifierName = tmp$_0; + var args = this.arguments.isEmpty() ? '' : joinToString_8(this.arguments, ', ', '<', '>', void 0, void 0, KTypeImpl$toString$lambda(this)); + var nullable = this.isMarkedNullable ? '?' : ''; + return classifierName + args + nullable; + }; + KTypeImpl.prototype.asString_0 = function ($receiver) { + if ($receiver.variance == null) + return '*'; + return prefixString($receiver.variance) + toString($receiver.type); + }; + KTypeImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'KTypeImpl', interfaces: [KType]}; + function DynamicKType() { + DynamicKType_instance = this; + this.classifier_rcrrnf$_0 = null; + this.arguments_2d0wf2$_0 = emptyList(); + this.isMarkedNullable_vgyq3p$_0 = false; + this.annotations_1p17e4$_0 = emptyList(); + } + Object.defineProperty(DynamicKType.prototype, 'classifier', {get: function () { + return this.classifier_rcrrnf$_0; + }}); + Object.defineProperty(DynamicKType.prototype, 'arguments', {get: function () { + return this.arguments_2d0wf2$_0; + }}); + Object.defineProperty(DynamicKType.prototype, 'isMarkedNullable', {get: function () { + return this.isMarkedNullable_vgyq3p$_0; + }}); + Object.defineProperty(DynamicKType.prototype, 'annotations', {get: function () { + return this.annotations_1p17e4$_0; + }}); + DynamicKType.prototype.toString = function () { + return 'dynamic'; + }; + DynamicKType.$metadata$ = {kind: Kind_OBJECT, simpleName: 'DynamicKType', interfaces: [KType]}; + var DynamicKType_instance = null; + function DynamicKType_getInstance() { + if (DynamicKType_instance === null) { + new DynamicKType(); + }return DynamicKType_instance; + } + function prefixString($receiver) { + switch ($receiver.name) { + case 'INVARIANT': + return ''; + case 'IN': + return 'in '; + case 'OUT': + return 'out '; + default:return Kotlin.noWhenBranchMatched(); + } + } + function KTypeParameterImpl(name, upperBounds, variance, isReified) { + this.name_81dqmp$_0 = name; + this.upperBounds_nx4j3x$_0 = upperBounds; + this.variance_jsggjt$_0 = variance; + this.isReified_7azqms$_0 = isReified; + } + Object.defineProperty(KTypeParameterImpl.prototype, 'name', {get: function () { + return this.name_81dqmp$_0; + }}); + Object.defineProperty(KTypeParameterImpl.prototype, 'upperBounds', {get: function () { + return this.upperBounds_nx4j3x$_0; + }}); + Object.defineProperty(KTypeParameterImpl.prototype, 'variance', {get: function () { + return this.variance_jsggjt$_0; + }}); + Object.defineProperty(KTypeParameterImpl.prototype, 'isReified', {get: function () { + return this.isReified_7azqms$_0; + }}); + KTypeParameterImpl.prototype.toString = function () { + return this.name; + }; + KTypeParameterImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'KTypeParameterImpl', interfaces: [KTypeParameter]}; + KTypeParameterImpl.prototype.component1 = function () { + return this.name; + }; + KTypeParameterImpl.prototype.component2 = function () { + return this.upperBounds; + }; + KTypeParameterImpl.prototype.component3 = function () { + return this.variance; + }; + KTypeParameterImpl.prototype.component4 = function () { + return this.isReified; + }; + KTypeParameterImpl.prototype.copy_picmsx$ = function (name, upperBounds, variance, isReified) { + return new KTypeParameterImpl(name === void 0 ? this.name : name, upperBounds === void 0 ? this.upperBounds : upperBounds, variance === void 0 ? this.variance : variance, isReified === void 0 ? this.isReified : isReified); + }; + KTypeParameterImpl.prototype.hashCode = function () { + var result = 0; + result = result * 31 + Kotlin.hashCode(this.name) | 0; + result = result * 31 + Kotlin.hashCode(this.upperBounds) | 0; + result = result * 31 + Kotlin.hashCode(this.variance) | 0; + result = result * 31 + Kotlin.hashCode(this.isReified) | 0; + return result; + }; + KTypeParameterImpl.prototype.equals = function (other) { + return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.name, other.name) && Kotlin.equals(this.upperBounds, other.upperBounds) && Kotlin.equals(this.variance, other.variance) && Kotlin.equals(this.isReified, other.isReified))))); + }; function PrimitiveClasses() { PrimitiveClasses_instance = this; this.anyClass = new PrimitiveKClassImpl(Object, 'Any', PrimitiveClasses$anyClass$lambda); @@ -32282,8 +34101,7 @@ function PrimitiveClasses_getInstance() { if (PrimitiveClasses_instance === null) { new PrimitiveClasses(); - } - return PrimitiveClasses_instance; + }return PrimitiveClasses_instance; } var functionClasses; function getKClass(jClass) { @@ -32344,19 +34162,16 @@ var tmp$; if (jClass === String) { return PrimitiveClasses_getInstance().stringClass; - } - var metadata = jClass.$metadata$; + }var metadata = jClass.$metadata$; if (metadata != null) { if (metadata.$kClass$ == null) { var kClass = new SimpleKClassImpl(jClass); metadata.$kClass$ = kClass; tmp$ = kClass; - } - else { + } else { tmp$ = metadata.$kClass$; } - } - else { + } else { tmp$ = new SimpleKClassImpl(jClass); } return tmp$; @@ -32378,12 +34193,286 @@ tmp$ = this.sequenceRef_0; if (tmp$ == null) { throw IllegalStateException_init_0('This sequence can be consumed only once.'); - } - var sequence = tmp$; + }var sequence = tmp$; this.sequenceRef_0 = null; return sequence.iterator(); }; ConstrainedOnceSequence.$metadata$ = {kind: Kind_CLASS, simpleName: 'ConstrainedOnceSequence', interfaces: [Sequence]}; + function Appendable() { + } + Appendable.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Appendable', interfaces: []}; + function CharacterCodingException(message) { + Exception_init_0(message, this); + this.name = 'CharacterCodingException'; + } + CharacterCodingException.$metadata$ = {kind: Kind_CLASS, simpleName: 'CharacterCodingException', interfaces: [Exception]}; + function CharacterCodingException_init($this) { + $this = $this || Object.create(CharacterCodingException.prototype); + CharacterCodingException.call($this, null); + return $this; + } + function StringBuilder(content) { + this.string_0 = content !== undefined ? content : ''; + } + Object.defineProperty(StringBuilder.prototype, 'length', {get: function () { + return this.string_0.length; + }}); + StringBuilder.prototype.charCodeAt = function (index) { + var $receiver = this.string_0; + var tmp$; + if (index >= 0 && index <= get_lastIndex_13($receiver)) + tmp$ = $receiver.charCodeAt(index); + else { + throw new IndexOutOfBoundsException('index: ' + index + ', length: ' + this.length + '}'); + } + return tmp$; + }; + StringBuilder.prototype.subSequence_vux9f0$ = function (startIndex, endIndex) { + return this.string_0.substring(startIndex, endIndex); + }; + StringBuilder.prototype.append_s8itvh$ = function (value) { + this.string_0 += String.fromCharCode(value); + return this; + }; + StringBuilder.prototype.append_gw00v9$ = function (value) { + this.string_0 += toString(value); + return this; + }; + StringBuilder.prototype.append_ezbsdh$ = function (value, startIndex, endIndex) { + return this.appendRange_ezbsdh$(value, startIndex, endIndex); + }; + StringBuilder.prototype.reverse = function () { + var tmp$, tmp$_0; + var reversed = ''; + var index = this.string_0.length - 1 | 0; + while (index >= 0) { + var low = this.string_0.charCodeAt((tmp$ = index, index = tmp$ - 1 | 0, tmp$)); + if (isLowSurrogate(low) && index >= 0) { + var high = this.string_0.charCodeAt((tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0)); + if (isHighSurrogate(high)) { + reversed = reversed + String.fromCharCode(toBoxedChar(high)) + String.fromCharCode(toBoxedChar(low)); + } else { + reversed = reversed + String.fromCharCode(toBoxedChar(low)) + String.fromCharCode(toBoxedChar(high)); + } + } else { + reversed += String.fromCharCode(low); + } + } + this.string_0 = reversed; + return this; + }; + StringBuilder.prototype.append_s8jyv4$ = function (value) { + this.string_0 += toString(value); + return this; + }; + StringBuilder.prototype.append_6taknv$ = function (value) { + this.string_0 += value; + return this; + }; + StringBuilder.prototype.append_4hbowm$ = function (value) { + this.string_0 += concatToString(value); + return this; + }; + StringBuilder.prototype.append_61zpoe$ = function (value) { + this.string_0 = this.string_0 + value; + return this; + }; + StringBuilder.prototype.capacity = function () { + return this._capacity !== undefined ? Math_0.max(this._capacity, this.length) : this.length; + }; + StringBuilder.prototype.ensureCapacity_za3lpa$ = function (minimumCapacity) { + if (minimumCapacity > this.capacity()) { + this._capacity = minimumCapacity; + }}; + StringBuilder.prototype.indexOf_61zpoe$ = function (string) { + return this.string_0.indexOf(string); + }; + StringBuilder.prototype.indexOf_bm4lxs$ = function (string, startIndex) { + return this.string_0.indexOf(string, startIndex); + }; + StringBuilder.prototype.lastIndexOf_61zpoe$ = function (string) { + return this.string_0.lastIndexOf(string); + }; + StringBuilder.prototype.lastIndexOf_bm4lxs$ = function (string, startIndex) { + if (string.length === 0 && startIndex < 0) + return -1; + return this.string_0.lastIndexOf(string, startIndex); + }; + StringBuilder.prototype.insert_fzusl$ = function (index, value) { + AbstractList$Companion_getInstance().checkPositionIndex_6xvm5r$(index, this.length); + this.string_0 = this.string_0.substring(0, index) + toString(value) + this.string_0.substring(index); + return this; + }; + StringBuilder.prototype.insert_6t1mh3$ = function (index, value) { + AbstractList$Companion_getInstance().checkPositionIndex_6xvm5r$(index, this.length); + this.string_0 = this.string_0.substring(0, index) + String.fromCharCode(toBoxedChar(value)) + this.string_0.substring(index); + return this; + }; + StringBuilder.prototype.insert_7u455s$ = function (index, value) { + AbstractList$Companion_getInstance().checkPositionIndex_6xvm5r$(index, this.length); + this.string_0 = this.string_0.substring(0, index) + concatToString(value) + this.string_0.substring(index); + return this; + }; + StringBuilder.prototype.insert_1u9bqd$ = function (index, value) { + AbstractList$Companion_getInstance().checkPositionIndex_6xvm5r$(index, this.length); + this.string_0 = this.string_0.substring(0, index) + toString(value) + this.string_0.substring(index); + return this; + }; + StringBuilder.prototype.insert_6t2rgq$ = function (index, value) { + AbstractList$Companion_getInstance().checkPositionIndex_6xvm5r$(index, this.length); + this.string_0 = this.string_0.substring(0, index) + toString(value) + this.string_0.substring(index); + return this; + }; + StringBuilder.prototype.insert_19mbxw$ = function (index, value) { + AbstractList$Companion_getInstance().checkPositionIndex_6xvm5r$(index, this.length); + this.string_0 = this.string_0.substring(0, index) + value + this.string_0.substring(index); + return this; + }; + StringBuilder.prototype.setLength_za3lpa$ = function (newLength) { + if (newLength < 0) { + throw IllegalArgumentException_init_0('Negative new length: ' + newLength + '.'); + }if (newLength <= this.length) { + this.string_0 = this.string_0.substring(0, newLength); + } else { + for (var i = this.length; i < newLength; i++) { + this.string_0 += String.fromCharCode(0); + } + } + }; + StringBuilder.prototype.substring_za3lpa$ = function (startIndex) { + AbstractList$Companion_getInstance().checkPositionIndex_6xvm5r$(startIndex, this.length); + return this.string_0.substring(startIndex); + }; + StringBuilder.prototype.substring_vux9f0$ = function (startIndex, endIndex) { + AbstractList$Companion_getInstance().checkBoundsIndexes_cub51b$(startIndex, endIndex, this.length); + return this.string_0.substring(startIndex, endIndex); + }; + StringBuilder.prototype.trimToSize = function () { + if (this._capacity !== undefined) { + this._capacity = this.length; + }}; + StringBuilder.prototype.toString = function () { + return this.string_0; + }; + StringBuilder.prototype.clear = function () { + this.string_0 = ''; + return this; + }; + StringBuilder.prototype.set_6t1mh3$ = function (index, value) { + AbstractList$Companion_getInstance().checkElementIndex_6xvm5r$(index, this.length); + this.string_0 = this.string_0.substring(0, index) + String.fromCharCode(toBoxedChar(value)) + this.string_0.substring(index + 1 | 0); + }; + StringBuilder.prototype.setRange_98i29q$ = function (startIndex, endIndex, value) { + this.checkReplaceRange_0(startIndex, endIndex, this.length); + this.string_0 = this.string_0.substring(0, startIndex) + value + this.string_0.substring(endIndex); + return this; + }; + StringBuilder.prototype.checkReplaceRange_0 = function (startIndex, endIndex, length) { + if (startIndex < 0 || startIndex > length) { + throw new IndexOutOfBoundsException('startIndex: ' + startIndex + ', length: ' + length); + }if (startIndex > endIndex) { + throw IllegalArgumentException_init_0('startIndex(' + startIndex + ') > endIndex(' + endIndex + ')'); + }}; + StringBuilder.prototype.deleteAt_za3lpa$ = function (index) { + AbstractList$Companion_getInstance().checkElementIndex_6xvm5r$(index, this.length); + this.string_0 = this.string_0.substring(0, index) + this.string_0.substring(index + 1 | 0); + return this; + }; + StringBuilder.prototype.deleteRange_vux9f0$ = function (startIndex, endIndex) { + this.checkReplaceRange_0(startIndex, endIndex, this.length); + this.string_0 = this.string_0.substring(0, startIndex) + this.string_0.substring(endIndex); + return this; + }; + StringBuilder.prototype.toCharArray_pqkatk$ = function (destination, destinationOffset, startIndex, endIndex) { + if (destinationOffset === void 0) + destinationOffset = 0; + if (startIndex === void 0) + startIndex = 0; + if (endIndex === void 0) + endIndex = this.length; + var tmp$; + AbstractList$Companion_getInstance().checkBoundsIndexes_cub51b$(startIndex, endIndex, this.length); + AbstractList$Companion_getInstance().checkBoundsIndexes_cub51b$(destinationOffset, destinationOffset + endIndex - startIndex | 0, destination.length); + var dstIndex = destinationOffset; + for (var index = startIndex; index < endIndex; index++) { + destination[tmp$ = dstIndex, dstIndex = tmp$ + 1 | 0, tmp$] = this.string_0.charCodeAt(index); + } + }; + StringBuilder.prototype.appendRange_8chfmy$ = function (value, startIndex, endIndex) { + this.string_0 += concatToString_0(value, startIndex, endIndex); + return this; + }; + StringBuilder.prototype.appendRange_ezbsdh$ = function (value, startIndex, endIndex) { + var stringCsq = toString(value); + AbstractList$Companion_getInstance().checkBoundsIndexes_cub51b$(startIndex, endIndex, stringCsq.length); + this.string_0 += stringCsq.substring(startIndex, endIndex); + return this; + }; + StringBuilder.prototype.insertRange_ar8yzk$ = function (index, value, startIndex, endIndex) { + AbstractList$Companion_getInstance().checkPositionIndex_6xvm5r$(index, this.length); + this.string_0 = this.string_0.substring(0, index) + concatToString_0(value, startIndex, endIndex) + this.string_0.substring(index); + return this; + }; + StringBuilder.prototype.insertRange_4ge339$ = function (index, value, startIndex, endIndex) { + AbstractList$Companion_getInstance().checkPositionIndex_6xvm5r$(index, this.length); + var stringCsq = toString(value); + AbstractList$Companion_getInstance().checkBoundsIndexes_cub51b$(startIndex, endIndex, stringCsq.length); + this.string_0 = this.string_0.substring(0, index) + stringCsq.substring(startIndex, endIndex) + this.string_0.substring(index); + return this; + }; + StringBuilder.$metadata$ = {kind: Kind_CLASS, simpleName: 'StringBuilder', interfaces: [CharSequence, Appendable]}; + function StringBuilder_init(capacity, $this) { + $this = $this || Object.create(StringBuilder.prototype); + StringBuilder_init_1($this); + $this._capacity = capacity; + return $this; + } + function StringBuilder_init_0(content, $this) { + $this = $this || Object.create(StringBuilder.prototype); + StringBuilder.call($this, content.toString()); + return $this; + } + function StringBuilder_init_1($this) { + $this = $this || Object.create(StringBuilder.prototype); + StringBuilder.call($this, ''); + return $this; + } + var clear_0 = defineInlineFunction('kotlin.kotlin.text.clear_dn5lc7$', function ($receiver) { + return $receiver.clear(); + }); + var set_0 = defineInlineFunction('kotlin.kotlin.text.set_fgr66m$', function ($receiver, index, value) { + $receiver.set_6t1mh3$(index, value); + }); + var setRange = defineInlineFunction('kotlin.kotlin.text.setRange_o6zo9x$', function ($receiver, startIndex, endIndex, value) { + return $receiver.setRange_98i29q$(startIndex, endIndex, value); + }); + var deleteAt = defineInlineFunction('kotlin.kotlin.text.deleteAt_pgf5y3$', function ($receiver, index) { + return $receiver.deleteAt_za3lpa$(index); + }); + var deleteRange = defineInlineFunction('kotlin.kotlin.text.deleteRange_52xiy5$', function ($receiver, startIndex, endIndex) { + return $receiver.deleteRange_vux9f0$(startIndex, endIndex); + }); + var toCharArray_1 = defineInlineFunction('kotlin.kotlin.text.toCharArray_uxry3l$', function ($receiver, destination, destinationOffset, startIndex, endIndex) { + if (destinationOffset === void 0) + destinationOffset = 0; + if (startIndex === void 0) + startIndex = 0; + if (endIndex === void 0) + endIndex = $receiver.length; + $receiver.toCharArray_pqkatk$(destination, destinationOffset, startIndex, endIndex); + }); + var appendRange = defineInlineFunction('kotlin.kotlin.text.appendRange_tjrg5r$', function ($receiver, value, startIndex, endIndex) { + return $receiver.appendRange_8chfmy$(value, startIndex, endIndex); + }); + var appendRange_0 = defineInlineFunction('kotlin.kotlin.text.appendRange_3tn578$', function ($receiver, value, startIndex, endIndex) { + return $receiver.appendRange_ezbsdh$(value, startIndex, endIndex); + }); + var insertRange = defineInlineFunction('kotlin.kotlin.text.insertRange_5k1bpj$', function ($receiver, index, value, startIndex, endIndex) { + return $receiver.insertRange_ar8yzk$(index, value, startIndex, endIndex); + }); + var insertRange_0 = defineInlineFunction('kotlin.kotlin.text.insertRange_abo1kk$', function ($receiver, index, value, startIndex, endIndex) { + return $receiver.insertRange_4ge339$(index, value, startIndex, endIndex); + }); function isWhitespace($receiver) { return matches(String.fromCharCode($receiver), '[\\s\\xA0]'); } @@ -32462,21 +34551,18 @@ return toDoubleOrNull($receiver); }; })); - var toString_0 = defineInlineFunction('kotlin.kotlin.text.toString_798l30$', wrapFunction(function () { + var toString_1 = defineInlineFunction('kotlin.kotlin.text.toString_798l30$', wrapFunction(function () { var toString = _.kotlin.text.toString_dqglrj$; return function ($receiver, radix) { return toString($receiver, radix); }; })); - var toString_1 = defineInlineFunction('kotlin.kotlin.text.toString_di2vk2$', wrapFunction(function () { + var toString_2 = defineInlineFunction('kotlin.kotlin.text.toString_di2vk2$', wrapFunction(function () { var toString = _.kotlin.text.toString_dqglrj$; return function ($receiver, radix) { return toString($receiver, radix); }; })); - function toString_2($receiver, radix) { - return $receiver.toString(checkRadix(radix)); - } function toString_3($receiver, radix) { return $receiver.toString(checkRadix(radix)); } @@ -32492,8 +34578,7 @@ function checkRadix(radix) { if (!(2 <= radix && radix <= 36)) { throw IllegalArgumentException_init_0('radix ' + radix + ' was not in valid range 2..36'); - } - return radix; + }return radix; } function digitOf(char, radix) { var tmp$; @@ -32635,8 +34720,7 @@ while (lastStart < length && match != null); if (lastStart < length) { sb.append_ezbsdh$(input, lastStart, length); - } - return sb.toString(); + }return sb.toString(); }; })); Regex.prototype.replaceFirst_x2uqeu$ = function (input, replacement) { @@ -32658,8 +34742,7 @@ if (!(limit >= 0)) { var message = 'Limit must be non-negative, but was ' + limit; throw IllegalArgumentException_init_0(message.toString()); - } - var it = this.findAll_905azu$(input); + }var it = this.findAll_905azu$(input); var matches = limit === 0 ? it : take_9(it, limit - 1 | 0); var result = ArrayList_init(); var lastStart = 0; @@ -32694,8 +34777,7 @@ function Regex$Companion_getInstance() { if (Regex$Companion_instance === null) { new Regex$Companion(); - } - return Regex$Companion_instance; + }return Regex$Companion_instance; } Regex.$metadata$ = {kind: Kind_CLASS, simpleName: 'Regex', interfaces: []}; function Regex_init(pattern, option, $this) { @@ -32747,8 +34829,7 @@ Object.defineProperty(findNext$ObjectLiteral.prototype, 'groupValues', {get: function () { if (this.groupValues__0 == null) { this.groupValues__0 = new findNext$ObjectLiteral$get_findNext$ObjectLiteral$groupValues$ObjectLiteral(this.closure$match); - } - return ensureNotNull(this.groupValues__0); + }return ensureNotNull(this.groupValues__0); }}); findNext$ObjectLiteral.prototype.next = function () { return findNext(this.this$findNext, this.closure$input, this.closure$range.isEmpty() ? this.closure$range.start + 1 | 0 : this.closure$range.endInclusive + 1 | 0); @@ -32835,7 +34916,7 @@ return toBoxedChar(this$toCharArray.charCodeAt(it)); }; } - function toCharArray_1($receiver) { + function toCharArray_2($receiver) { return Kotlin.charArrayF($receiver.length, toCharArray$lambda_0($receiver)); } function toCharArray$lambda_1(closure$startIndex, this$toCharArray) { @@ -32843,7 +34924,7 @@ return toBoxedChar(this$toCharArray.charCodeAt(closure$startIndex + it | 0)); }; } - function toCharArray_2($receiver, startIndex, endIndex) { + function toCharArray_3($receiver, startIndex, endIndex) { if (startIndex === void 0) startIndex = 0; if (endIndex === void 0) @@ -32932,16 +35013,12 @@ s2 = s2.toLowerCase(); if (!equals(s1, s2)) { return Kotlin.compareTo(s1, s2); - } - } - } - if (end === min) + }}}if (end === min) break; start = end; } return n1 - n2 | 0; - } - else { + } else { return Kotlin.compareTo($receiver, other); } } @@ -32963,8 +35040,7 @@ ignoreCase = false; if (!ignoreCase) { return $receiver.startsWith(prefix, 0); - } - else + } else return regionMatches($receiver, 0, prefix, 0, prefix.length, ignoreCase); } function startsWith_0($receiver, prefix, startIndex, ignoreCase) { @@ -32972,8 +35048,7 @@ ignoreCase = false; if (!ignoreCase) { return $receiver.startsWith(prefix, startIndex); - } - else + } else return regionMatches($receiver, startIndex, prefix, 0, prefix.length, ignoreCase); } function endsWith($receiver, suffix, ignoreCase) { @@ -32981,8 +35056,7 @@ ignoreCase = false; if (!ignoreCase) { return $receiver.endsWith(suffix); - } - else + } else return regionMatches($receiver, $receiver.length - suffix.length | 0, suffix, 0, suffix.length, ignoreCase); } function matches($receiver, regex) { @@ -33006,8 +35080,7 @@ var tmp$_1 = other != null; if (tmp$_1) { tmp$_1 = equals($receiver.toLowerCase(), other.toLowerCase()); - } - tmp$_0 = tmp$_1; + }tmp$_0 = tmp$_1; } tmp$ = tmp$_0; } @@ -33029,8 +35102,7 @@ if (!(n >= 0)) { var message = "Count 'n' must be non-negative, but was " + n + '.'; throw IllegalArgumentException_init_0(message.toString()); - } - switch (n) { + }switch (n) { case 0: tmp$ = ''; break; @@ -33044,15 +35116,12 @@ while (true) { if ((count & 1) === 1) { result += s; - } - count = count >>> 1; + }count = count >>> 1; if (count === 0) { break; - } - s += s; + }s += s; } } - return result; } return tmp$; @@ -33077,86 +35146,6 @@ ignoreCase = false; return $receiver.replace(new RegExp(Regex$Companion_getInstance().escape_61zpoe$(String.fromCharCode(oldChar)), ignoreCase ? 'i' : ''), String.fromCharCode(newChar)); } - function Appendable() { - } - Appendable.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Appendable', interfaces: []}; - function StringBuilder(content) { - if (content === void 0) - content = ''; - this.string_0 = content; - } - Object.defineProperty(StringBuilder.prototype, 'length', {get: function () { - return this.string_0.length; - }}); - StringBuilder.prototype.charCodeAt = function (index) { - var $receiver = this.string_0; - var tmp$; - if (index >= 0 && index <= get_lastIndex_13($receiver)) - tmp$ = $receiver.charCodeAt(index); - else { - throw new IndexOutOfBoundsException('index: ' + index + ', length: ' + this.length + '}'); - } - return tmp$; - }; - StringBuilder.prototype.subSequence_vux9f0$ = function (startIndex, endIndex) { - return this.string_0.substring(startIndex, endIndex); - }; - StringBuilder.prototype.append_s8itvh$ = function (c) { - this.string_0 += String.fromCharCode(c); - return this; - }; - StringBuilder.prototype.append_gw00v9$ = function (csq) { - this.string_0 += toString(csq); - return this; - }; - StringBuilder.prototype.append_ezbsdh$ = function (csq, start, end) { - this.string_0 += toString(csq).substring(start, end); - return this; - }; - StringBuilder.prototype.append_s8jyv4$ = function (obj) { - this.string_0 += toString(obj); - return this; - }; - StringBuilder.prototype.reverse = function () { - this.string_0 = this.string_0.split('').reverse().join(''); - return this; - }; - StringBuilder.prototype.clear = function () { - this.string_0 = ''; - return this; - }; - StringBuilder.prototype.toString = function () { - return this.string_0; - }; - StringBuilder.$metadata$ = {kind: Kind_CLASS, simpleName: 'StringBuilder', interfaces: [CharSequence, Appendable]}; - function StringBuilder_init(capacity, $this) { - $this = $this || Object.create(StringBuilder.prototype); - StringBuilder_init_1($this); - return $this; - } - function StringBuilder_init_0(content, $this) { - $this = $this || Object.create(StringBuilder.prototype); - StringBuilder.call($this, content.toString()); - return $this; - } - function StringBuilder_init_1($this) { - $this = $this || Object.create(StringBuilder.prototype); - StringBuilder.call($this, ''); - return $this; - } - var clear_0 = defineInlineFunction('kotlin.kotlin.text.clear_dn5lc7$', function ($receiver) { - return $receiver.clear(); - }); - function CharacterCodingException(message) { - Exception_init_0(message, this); - this.name = 'CharacterCodingException'; - } - CharacterCodingException.$metadata$ = {kind: Kind_CLASS, simpleName: 'CharacterCodingException', interfaces: [Exception]}; - function CharacterCodingException_init($this) { - $this = $this || Object.create(CharacterCodingException.prototype); - CharacterCodingException.call($this, null); - return $this; - } function malformed(size, index, throwOnMalformed) { if (throwOnMalformed) throw new CharacterCodingException('Malformed sequence starting at ' + (index - 1 | 0)); @@ -33165,86 +35154,63 @@ function codePointFromSurrogate(string, high, index, endIndex, throwOnMalformed) { if (!(55296 <= high && high <= 56319) || index >= endIndex) { return malformed(0, index, throwOnMalformed); - } - var low = string.charCodeAt(index) | 0; + }var low = string.charCodeAt(index) | 0; if (!(56320 <= low && low <= 57343)) { return malformed(0, index, throwOnMalformed); - } - return 65536 + ((high & 1023) << 10) | low & 1023; + }return 65536 + ((high & 1023) << 10) | low & 1023; } function codePointFrom2(bytes, byte1, index, endIndex, throwOnMalformed) { if ((byte1 & 30) === 0 || index >= endIndex) { return malformed(0, index, throwOnMalformed); - } - var byte2 = bytes[index]; + }var byte2 = bytes[index]; if ((byte2 & 192) !== 128) { return malformed(0, index, throwOnMalformed); - } - return byte1 << 6 ^ byte2 ^ 3968; + }return byte1 << 6 ^ byte2 ^ 3968; } function codePointFrom3(bytes, byte1, index, endIndex, throwOnMalformed) { if (index >= endIndex) { return malformed(0, index, throwOnMalformed); - } - var byte2 = bytes[index]; + }var byte2 = bytes[index]; if ((byte1 & 15) === 0) { if ((byte2 & 224) !== 160) { return malformed(0, index, throwOnMalformed); - } - } - else if ((byte1 & 15) === 13) { + }} else if ((byte1 & 15) === 13) { if ((byte2 & 224) !== 128) { return malformed(0, index, throwOnMalformed); - } - } - else if ((byte2 & 192) !== 128) { + }} else if ((byte2 & 192) !== 128) { return malformed(0, index, throwOnMalformed); - } - if ((index + 1 | 0) === endIndex) { + }if ((index + 1 | 0) === endIndex) { return malformed(1, index, throwOnMalformed); - } - var byte3 = bytes[index + 1 | 0]; + }var byte3 = bytes[index + 1 | 0]; if ((byte3 & 192) !== 128) { return malformed(1, index, throwOnMalformed); - } - return byte1 << 12 ^ byte2 << 6 ^ byte3 ^ -123008; + }return byte1 << 12 ^ byte2 << 6 ^ byte3 ^ -123008; } function codePointFrom4(bytes, byte1, index, endIndex, throwOnMalformed) { if (index >= endIndex) { malformed(0, index, throwOnMalformed); - } - var byte2 = bytes[index]; + }var byte2 = bytes[index]; if ((byte1 & 15) === 0) { if ((byte2 & 240) <= 128) { return malformed(0, index, throwOnMalformed); - } - } - else if ((byte1 & 15) === 4) { + }} else if ((byte1 & 15) === 4) { if ((byte2 & 240) !== 128) { return malformed(0, index, throwOnMalformed); - } - } - else if ((byte1 & 15) > 4) { + }} else if ((byte1 & 15) > 4) { return malformed(0, index, throwOnMalformed); - } - else if ((byte2 & 192) !== 128) { + } else if ((byte2 & 192) !== 128) { return malformed(0, index, throwOnMalformed); - } - if ((index + 1 | 0) === endIndex) { + }if ((index + 1 | 0) === endIndex) { return malformed(1, index, throwOnMalformed); - } - var byte3 = bytes[index + 1 | 0]; + }var byte3 = bytes[index + 1 | 0]; if ((byte3 & 192) !== 128) { return malformed(1, index, throwOnMalformed); - } - if ((index + 2 | 0) === endIndex) { + }if ((index + 2 | 0) === endIndex) { return malformed(2, index, throwOnMalformed); - } - var byte4 = bytes[index + 2 | 0]; + }var byte4 = bytes[index + 2 | 0]; if ((byte4 & 192) !== 128) { return malformed(2, index, throwOnMalformed); - } - return byte1 << 18 ^ byte2 << 12 ^ byte3 << 6 ^ byte4 ^ 3678080; + }return byte1 << 18 ^ byte2 << 12 ^ byte3 << 6 ^ byte4 ^ 3678080; } var MAX_BYTES_PER_CHAR; var REPLACEMENT_BYTE_SEQUENCE; @@ -33253,32 +35219,27 @@ if (!(startIndex >= 0 && endIndex <= string.length && startIndex <= endIndex)) { var message = 'Failed requirement.'; throw IllegalArgumentException_init_0(message.toString()); - } - var bytes = new Int8Array((endIndex - startIndex | 0) * 3 | 0); + }var bytes = new Int8Array((endIndex - startIndex | 0) * 3 | 0); var byteIndex = 0; var charIndex = startIndex; while (charIndex < endIndex) { var code = string.charCodeAt((tmp$ = charIndex, charIndex = tmp$ + 1 | 0, tmp$)) | 0; if (code < 128) { bytes[tmp$_0 = byteIndex, byteIndex = tmp$_0 + 1 | 0, tmp$_0] = toByte(code); - } - else if (code < 2048) { + } else if (code < 2048) { bytes[tmp$_1 = byteIndex, byteIndex = tmp$_1 + 1 | 0, tmp$_1] = toByte(code >> 6 | 192); bytes[tmp$_2 = byteIndex, byteIndex = tmp$_2 + 1 | 0, tmp$_2] = toByte(code & 63 | 128); - } - else if (code < 55296 || code >= 57344) { + } else if (code < 55296 || code >= 57344) { bytes[tmp$_3 = byteIndex, byteIndex = tmp$_3 + 1 | 0, tmp$_3] = toByte(code >> 12 | 224); bytes[tmp$_4 = byteIndex, byteIndex = tmp$_4 + 1 | 0, tmp$_4] = toByte(code >> 6 & 63 | 128); bytes[tmp$_5 = byteIndex, byteIndex = tmp$_5 + 1 | 0, tmp$_5] = toByte(code & 63 | 128); - } - else { + } else { var codePoint = codePointFromSurrogate(string, code, charIndex, endIndex, throwOnMalformed); if (codePoint <= 0) { bytes[tmp$_6 = byteIndex, byteIndex = tmp$_6 + 1 | 0, tmp$_6] = REPLACEMENT_BYTE_SEQUENCE[0]; bytes[tmp$_7 = byteIndex, byteIndex = tmp$_7 + 1 | 0, tmp$_7] = REPLACEMENT_BYTE_SEQUENCE[1]; bytes[tmp$_8 = byteIndex, byteIndex = tmp$_8 + 1 | 0, tmp$_8] = REPLACEMENT_BYTE_SEQUENCE[2]; - } - else { + } else { bytes[tmp$_9 = byteIndex, byteIndex = tmp$_9 + 1 | 0, tmp$_9] = toByte(codePoint >> 18 | 240); bytes[tmp$_10 = byteIndex, byteIndex = tmp$_10 + 1 | 0, tmp$_10] = toByte(codePoint >> 12 & 63 | 128); bytes[tmp$_11 = byteIndex, byteIndex = tmp$_11 + 1 | 0, tmp$_11] = toByte(codePoint >> 6 & 63 | 128); @@ -33295,8 +35256,7 @@ if (!(startIndex >= 0 && endIndex <= bytes.length && startIndex <= endIndex)) { var message = 'Failed requirement.'; throw IllegalArgumentException_init_0(message.toString()); - } - var byteIndex = startIndex; + }var byteIndex = startIndex; var stringBuilder = StringBuilder_init_1(); while (byteIndex < endIndex) { var byte = bytes[tmp$ = byteIndex, byteIndex = tmp$ + 1 | 0, tmp$]; @@ -33307,44 +35267,221 @@ if (code <= 0) { stringBuilder.append_s8itvh$(REPLACEMENT_CHAR); byteIndex = byteIndex + (-code | 0) | 0; - } - else { + } else { stringBuilder.append_s8itvh$(toChar(code)); byteIndex = byteIndex + 1 | 0; } - } - else if (byte >> 4 === -2) { + } else if (byte >> 4 === -2) { var code_0 = codePointFrom3(bytes, byte, byteIndex, endIndex, throwOnMalformed); if (code_0 <= 0) { stringBuilder.append_s8itvh$(REPLACEMENT_CHAR); byteIndex = byteIndex + (-code_0 | 0) | 0; - } - else { + } else { stringBuilder.append_s8itvh$(toChar(code_0)); byteIndex = byteIndex + 2 | 0; } - } - else if (byte >> 3 === -2) { + } else if (byte >> 3 === -2) { var code_1 = codePointFrom4(bytes, byte, byteIndex, endIndex, throwOnMalformed); if (code_1 <= 0) { stringBuilder.append_s8itvh$(REPLACEMENT_CHAR); byteIndex = byteIndex + (-code_1 | 0) | 0; - } - else { + } else { var high = code_1 - 65536 >> 10 | 55296; var low = code_1 & 1023 | 56320; stringBuilder.append_s8itvh$(toChar(high)); stringBuilder.append_s8itvh$(toChar(low)); byteIndex = byteIndex + 3 | 0; } - } - else { + } else { malformed(0, byteIndex, throwOnMalformed); stringBuilder.append_s8itvh$(REPLACEMENT_CHAR); } } return stringBuilder.toString(); } + function DurationUnit(name, ordinal, scale) { + Enum.call(this); + this.scale_8be2vx$ = scale; + this.name$ = name; + this.ordinal$ = ordinal; + } + function DurationUnit_initFields() { + DurationUnit_initFields = function () { + }; + DurationUnit$NANOSECONDS_instance = new DurationUnit('NANOSECONDS', 0, 1.0); + DurationUnit$MICROSECONDS_instance = new DurationUnit('MICROSECONDS', 1, 1000.0); + DurationUnit$MILLISECONDS_instance = new DurationUnit('MILLISECONDS', 2, 1000000.0); + DurationUnit$SECONDS_instance = new DurationUnit('SECONDS', 3, 1.0E9); + DurationUnit$MINUTES_instance = new DurationUnit('MINUTES', 4, 6.0E10); + DurationUnit$HOURS_instance = new DurationUnit('HOURS', 5, 3.6E12); + DurationUnit$DAYS_instance = new DurationUnit('DAYS', 6, 8.64E13); + } + var DurationUnit$NANOSECONDS_instance; + function DurationUnit$NANOSECONDS_getInstance() { + DurationUnit_initFields(); + return DurationUnit$NANOSECONDS_instance; + } + var DurationUnit$MICROSECONDS_instance; + function DurationUnit$MICROSECONDS_getInstance() { + DurationUnit_initFields(); + return DurationUnit$MICROSECONDS_instance; + } + var DurationUnit$MILLISECONDS_instance; + function DurationUnit$MILLISECONDS_getInstance() { + DurationUnit_initFields(); + return DurationUnit$MILLISECONDS_instance; + } + var DurationUnit$SECONDS_instance; + function DurationUnit$SECONDS_getInstance() { + DurationUnit_initFields(); + return DurationUnit$SECONDS_instance; + } + var DurationUnit$MINUTES_instance; + function DurationUnit$MINUTES_getInstance() { + DurationUnit_initFields(); + return DurationUnit$MINUTES_instance; + } + var DurationUnit$HOURS_instance; + function DurationUnit$HOURS_getInstance() { + DurationUnit_initFields(); + return DurationUnit$HOURS_instance; + } + var DurationUnit$DAYS_instance; + function DurationUnit$DAYS_getInstance() { + DurationUnit_initFields(); + return DurationUnit$DAYS_instance; + } + DurationUnit.$metadata$ = {kind: Kind_CLASS, simpleName: 'DurationUnit', interfaces: [Enum]}; + function DurationUnit$values() { + return [DurationUnit$NANOSECONDS_getInstance(), DurationUnit$MICROSECONDS_getInstance(), DurationUnit$MILLISECONDS_getInstance(), DurationUnit$SECONDS_getInstance(), DurationUnit$MINUTES_getInstance(), DurationUnit$HOURS_getInstance(), DurationUnit$DAYS_getInstance()]; + } + DurationUnit.values = DurationUnit$values; + function DurationUnit$valueOf(name) { + switch (name) { + case 'NANOSECONDS': + return DurationUnit$NANOSECONDS_getInstance(); + case 'MICROSECONDS': + return DurationUnit$MICROSECONDS_getInstance(); + case 'MILLISECONDS': + return DurationUnit$MILLISECONDS_getInstance(); + case 'SECONDS': + return DurationUnit$SECONDS_getInstance(); + case 'MINUTES': + return DurationUnit$MINUTES_getInstance(); + case 'HOURS': + return DurationUnit$HOURS_getInstance(); + case 'DAYS': + return DurationUnit$DAYS_getInstance(); + default:throwISE('No enum constant kotlin.time.DurationUnit.' + name); + } + } + DurationUnit.valueOf_61zpoe$ = DurationUnit$valueOf; + function convertDurationUnit(value, sourceUnit, targetUnit) { + var tmp$; + var sourceCompareTarget = Kotlin.compareTo(sourceUnit.scale_8be2vx$, targetUnit.scale_8be2vx$); + if (sourceCompareTarget > 0) + tmp$ = value * (sourceUnit.scale_8be2vx$ / targetUnit.scale_8be2vx$); + else if (sourceCompareTarget < 0) + tmp$ = value / (targetUnit.scale_8be2vx$ / sourceUnit.scale_8be2vx$); + else + tmp$ = value; + return tmp$; + } + function MonotonicTimeSource() { + MonotonicTimeSource_instance = this; + var tmp$, tmp$_0, tmp$_1; + var isNode = typeof process !== 'undefined' && process.versions && !!process.versions.node; + this.actualSource_0 = isNode ? new HrTimeSource(process) : (tmp$_1 = (tmp$_0 = (tmp$ = self) != null ? tmp$.performance : null) != null ? new PerformanceTimeSource(tmp$_0) : null) != null ? tmp$_1 : DateNowTimeSource_getInstance(); + } + MonotonicTimeSource.prototype.markNow = function () { + return this.actualSource_0.markNow(); + }; + MonotonicTimeSource.$metadata$ = {kind: Kind_OBJECT, simpleName: 'MonotonicTimeSource', interfaces: [TimeSource]}; + var MonotonicTimeSource_instance = null; + function MonotonicTimeSource_getInstance() { + if (MonotonicTimeSource_instance === null) { + new MonotonicTimeSource(); + }return MonotonicTimeSource_instance; + } + function HrTimeSource(process) { + this.process = process; + } + function HrTimeSource$markNow$ObjectLiteral(this$HrTimeSource) { + this.this$HrTimeSource = this$HrTimeSource; + TimeMark.call(this); + this.startedAt = this$HrTimeSource.process.hrtime(); + } + HrTimeSource$markNow$ObjectLiteral.prototype.elapsedNow = function () { + var f = this.this$HrTimeSource.process.hrtime(this.startedAt); + var seconds = f[0]; + var nanos = f[1]; + return get_seconds_1(seconds).plus_cgako$(get_nanoseconds_1(nanos)); + }; + HrTimeSource$markNow$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [TimeMark]}; + HrTimeSource.prototype.markNow = function () { + return new HrTimeSource$markNow$ObjectLiteral(this); + }; + HrTimeSource.prototype.toString = function () { + return 'TimeSource(process.hrtime())'; + }; + HrTimeSource.$metadata$ = {kind: Kind_CLASS, simpleName: 'HrTimeSource', interfaces: [TimeSource]}; + function PerformanceTimeSource(performance) { + AbstractDoubleTimeSource.call(this, DurationUnit$MILLISECONDS_getInstance()); + this.performance = performance; + } + PerformanceTimeSource.prototype.read = function () { + return this.performance.now(); + }; + PerformanceTimeSource.prototype.toString = function () { + return 'TimeSource(self.performance.now())'; + }; + PerformanceTimeSource.$metadata$ = {kind: Kind_CLASS, simpleName: 'PerformanceTimeSource', interfaces: [AbstractDoubleTimeSource]}; + function DateNowTimeSource() { + DateNowTimeSource_instance = this; + AbstractDoubleTimeSource.call(this, DurationUnit$MILLISECONDS_getInstance()); + } + DateNowTimeSource.prototype.read = function () { + return Date.now(); + }; + DateNowTimeSource.prototype.toString = function () { + return 'TimeSource(Date.now())'; + }; + DateNowTimeSource.$metadata$ = {kind: Kind_OBJECT, simpleName: 'DateNowTimeSource', interfaces: [AbstractDoubleTimeSource]}; + var DateNowTimeSource_instance = null; + function DateNowTimeSource_getInstance() { + if (DateNowTimeSource_instance === null) { + new DateNowTimeSource(); + }return DateNowTimeSource_instance; + } + function formatToExactDecimals(value, decimals) { + var tmp$; + if (decimals === 0) { + tmp$ = value; + } else { + var pow = Math_0.pow(10.0, decimals); + tmp$ = Math.round(Math_0.abs(value) * pow) / pow * Math_0.sign(value); + } + var rounded = tmp$; + return rounded.toFixed(decimals); + } + function formatUpToDecimals(value, decimals) { + return value.toLocaleString('en-us', json([to('maximumFractionDigits', decimals)])); + } + function formatScientific(value) { + return value.toExponential(2); + } + function get_as_($receiver) { + return $receiver.as; + } + function set_as_($receiver, value) { + $receiver.as = value; + } + function get_is_($receiver) { + return $receiver.is; + } + function set_is_($receiver, value) { + $receiver.is = value; + } var WebGLContextAttributes = defineInlineFunction('kotlin.org.khronos.webgl.WebGLContextAttributes_2tn698$', function (alpha, depth, stencil, antialias, premultipliedAlpha, preserveDrawingBuffer, preferLowPowerToHighPerformance, failIfMajorPerformanceCaveat) { if (alpha === void 0) alpha = true; @@ -33392,55 +35529,55 @@ var get_1 = defineInlineFunction('kotlin.org.khronos.webgl.get_xri1zq$', function ($receiver, index) { return $receiver[index]; }); - var set_0 = defineInlineFunction('kotlin.org.khronos.webgl.set_wq71gh$', function ($receiver, index, value) { + var set_1 = defineInlineFunction('kotlin.org.khronos.webgl.set_wq71gh$', function ($receiver, index, value) { $receiver[index] = value; }); var get_2 = defineInlineFunction('kotlin.org.khronos.webgl.get_9zp3y9$', function ($receiver, index) { return $receiver[index]; }); - var set_1 = defineInlineFunction('kotlin.org.khronos.webgl.set_amemmi$', function ($receiver, index, value) { + var set_2 = defineInlineFunction('kotlin.org.khronos.webgl.set_amemmi$', function ($receiver, index, value) { $receiver[index] = value; }); var get_3 = defineInlineFunction('kotlin.org.khronos.webgl.get_2joiyx$', function ($receiver, index) { return $receiver[index]; }); - var set_2 = defineInlineFunction('kotlin.org.khronos.webgl.set_ttcilq$', function ($receiver, index, value) { + var set_3 = defineInlineFunction('kotlin.org.khronos.webgl.set_ttcilq$', function ($receiver, index, value) { $receiver[index] = value; }); var get_4 = defineInlineFunction('kotlin.org.khronos.webgl.get_cwlqq1$', function ($receiver, index) { return $receiver[index]; }); - var set_3 = defineInlineFunction('kotlin.org.khronos.webgl.set_3szanw$', function ($receiver, index, value) { + var set_4 = defineInlineFunction('kotlin.org.khronos.webgl.set_3szanw$', function ($receiver, index, value) { $receiver[index] = value; }); var get_5 = defineInlineFunction('kotlin.org.khronos.webgl.get_vhpjqk$', function ($receiver, index) { return $receiver[index]; }); - var set_4 = defineInlineFunction('kotlin.org.khronos.webgl.set_vhgf5b$', function ($receiver, index, value) { + var set_5 = defineInlineFunction('kotlin.org.khronos.webgl.set_vhgf5b$', function ($receiver, index, value) { $receiver[index] = value; }); var get_6 = defineInlineFunction('kotlin.org.khronos.webgl.get_6ngfjl$', function ($receiver, index) { return $receiver[index]; }); - var set_5 = defineInlineFunction('kotlin.org.khronos.webgl.set_yyuw59$', function ($receiver, index, value) { + var set_6 = defineInlineFunction('kotlin.org.khronos.webgl.set_yyuw59$', function ($receiver, index, value) { $receiver[index] = value; }); var get_7 = defineInlineFunction('kotlin.org.khronos.webgl.get_jzcbyy$', function ($receiver, index) { return $receiver[index]; }); - var set_6 = defineInlineFunction('kotlin.org.khronos.webgl.set_7aci94$', function ($receiver, index, value) { + var set_7 = defineInlineFunction('kotlin.org.khronos.webgl.set_7aci94$', function ($receiver, index, value) { $receiver[index] = value; }); var get_8 = defineInlineFunction('kotlin.org.khronos.webgl.get_vvlk2q$', function ($receiver, index) { return $receiver[index]; }); - var set_7 = defineInlineFunction('kotlin.org.khronos.webgl.set_rpd3xf$', function ($receiver, index, value) { + var set_8 = defineInlineFunction('kotlin.org.khronos.webgl.set_rpd3xf$', function ($receiver, index, value) { $receiver[index] = value; }); var get_9 = defineInlineFunction('kotlin.org.khronos.webgl.get_yg2kxp$', function ($receiver, index) { return $receiver[index]; }); - var set_8 = defineInlineFunction('kotlin.org.khronos.webgl.set_ogqgs1$', function ($receiver, index, value) { + var set_9 = defineInlineFunction('kotlin.org.khronos.webgl.set_ogqgs1$', function ($receiver, index, value) { $receiver[index] = value; }); var ClipboardEventInit = defineInlineFunction('kotlin.org.w3c.dom.clipboard.ClipboardEventInit_s22cuj$', function (clipboardData, bubbles, cancelable, composed) { @@ -33466,16 +35603,16 @@ o['allowWithoutGesture'] = allowWithoutGesture; return o; }); - var get_10 = defineInlineFunction('kotlin.org.w3c.dom.css.get_hzg8kz$', function ($receiver, index) { + var get_10 = defineInlineFunction('kotlin.org.w3c.dom.css.get_vcm0yf$', function ($receiver, index) { return $receiver[index]; }); - var get_11 = defineInlineFunction('kotlin.org.w3c.dom.css.get_vcm0yf$', function ($receiver, index) { + var get_11 = defineInlineFunction('kotlin.org.w3c.dom.css.get_yovegz$', function ($receiver, index) { return $receiver[index]; }); - var get_12 = defineInlineFunction('kotlin.org.w3c.dom.css.get_yovegz$', function ($receiver, index) { + var get_12 = defineInlineFunction('kotlin.org.w3c.dom.css.get_nb2c3o$', function ($receiver, index) { return $receiver[index]; }); - var get_13 = defineInlineFunction('kotlin.org.w3c.dom.css.get_nb2c3o$', function ($receiver, index) { + var get_13 = defineInlineFunction('kotlin.org.w3c.dom.css.get_hzg8kz$', function ($receiver, index) { return $receiver[index]; }); var UIEventInit = defineInlineFunction('kotlin.org.w3c.dom.events.UIEventInit_b3va2d$', function (view, detail, bubbles, cancelable, composed) { @@ -33519,7 +35656,7 @@ o['composed'] = composed; return o; }); - var MouseEventInit = defineInlineFunction('kotlin.org.w3c.dom.events.MouseEventInit_w16xh5$', function (screenX, screenY, clientX, clientY, button, buttons, relatedTarget, ctrlKey, shiftKey, altKey, metaKey, modifierAltGraph, modifierCapsLock, modifierFn, modifierFnLock, modifierHyper, modifierNumLock, modifierScrollLock, modifierSuper, modifierSymbol, modifierSymbolLock, view, detail, bubbles, cancelable, composed) { + var MouseEventInit = defineInlineFunction('kotlin.org.w3c.dom.events.MouseEventInit_9obtc4$', function (screenX, screenY, clientX, clientY, button, buttons, relatedTarget, region, ctrlKey, shiftKey, altKey, metaKey, modifierAltGraph, modifierCapsLock, modifierFn, modifierFnLock, modifierHyper, modifierNumLock, modifierScrollLock, modifierSuper, modifierSymbol, modifierSymbolLock, view, detail, bubbles, cancelable, composed) { if (screenX === void 0) screenX = 0; if (screenY === void 0) @@ -33534,6 +35671,8 @@ buttons = 0; if (relatedTarget === void 0) relatedTarget = null; + if (region === void 0) + region = null; if (ctrlKey === void 0) ctrlKey = false; if (shiftKey === void 0) @@ -33580,6 +35719,7 @@ o['button'] = button; o['buttons'] = buttons; o['relatedTarget'] = relatedTarget; + o['region'] = region; o['ctrlKey'] = ctrlKey; o['shiftKey'] = shiftKey; o['altKey'] = altKey; @@ -33662,7 +35802,7 @@ o['composed'] = composed; return o; }); - var WheelEventInit = defineInlineFunction('kotlin.org.w3c.dom.events.WheelEventInit_jungk3$', function (deltaX, deltaY, deltaZ, deltaMode, screenX, screenY, clientX, clientY, button, buttons, relatedTarget, ctrlKey, shiftKey, altKey, metaKey, modifierAltGraph, modifierCapsLock, modifierFn, modifierFnLock, modifierHyper, modifierNumLock, modifierScrollLock, modifierSuper, modifierSymbol, modifierSymbolLock, view, detail, bubbles, cancelable, composed) { + var WheelEventInit = defineInlineFunction('kotlin.org.w3c.dom.events.WheelEventInit_s3o9pa$', function (deltaX, deltaY, deltaZ, deltaMode, screenX, screenY, clientX, clientY, button, buttons, relatedTarget, region, ctrlKey, shiftKey, altKey, metaKey, modifierAltGraph, modifierCapsLock, modifierFn, modifierFnLock, modifierHyper, modifierNumLock, modifierScrollLock, modifierSuper, modifierSymbol, modifierSymbolLock, view, detail, bubbles, cancelable, composed) { if (deltaX === void 0) deltaX = 0.0; if (deltaY === void 0) @@ -33685,6 +35825,8 @@ buttons = 0; if (relatedTarget === void 0) relatedTarget = null; + if (region === void 0) + region = null; if (ctrlKey === void 0) ctrlKey = false; if (shiftKey === void 0) @@ -33735,6 +35877,7 @@ o['button'] = button; o['buttons'] = buttons; o['relatedTarget'] = relatedTarget; + o['region'] = region; o['ctrlKey'] = ctrlKey; o['shiftKey'] = shiftKey; o['altKey'] = altKey; @@ -33879,19 +36022,19 @@ o['composed'] = composed; return o; }); - var get_14 = defineInlineFunction('kotlin.org.w3c.dom.get_faw09z$', function ($receiver, name) { - return $receiver[name]; + var get_14 = defineInlineFunction('kotlin.org.w3c.dom.get_zbxcyi$', function ($receiver, index) { + return $receiver[index]; }); - var get_15 = defineInlineFunction('kotlin.org.w3c.dom.get_ewayf0$', function ($receiver, name) { + var get_15 = defineInlineFunction('kotlin.org.w3c.dom.get_ni19om$', function ($receiver, name) { return $receiver[name]; }); - var set_9 = defineInlineFunction('kotlin.org.w3c.dom.set_hw3ic1$', function ($receiver, index, option) { + var set_10 = defineInlineFunction('kotlin.org.w3c.dom.set_hw3ic1$', function ($receiver, index, option) { $receiver[index] = option; }); var get_16 = defineInlineFunction('kotlin.org.w3c.dom.get_82muyz$', function ($receiver, name) { return $receiver[name]; }); - var set_10 = defineInlineFunction('kotlin.org.w3c.dom.set_itmgw7$', function ($receiver, name, value) { + var set_11 = defineInlineFunction('kotlin.org.w3c.dom.set_itmgw7$', function ($receiver, name, value) { $receiver[name] = value; }); var get_17 = defineInlineFunction('kotlin.org.w3c.dom.get_x9t80x$', function ($receiver, index) { @@ -33931,7 +36074,7 @@ var get_23 = defineInlineFunction('kotlin.org.w3c.dom.get_kaa3nr$', function ($receiver, index) { return $receiver[index]; }); - var set_11 = defineInlineFunction('kotlin.org.w3c.dom.set_9jj6cz$', function ($receiver, index, option) { + var set_12 = defineInlineFunction('kotlin.org.w3c.dom.set_9jj6cz$', function ($receiver, index, option) { $receiver[index] = option; }); var RelatedEventInit = defineInlineFunction('kotlin.org.w3c.dom.RelatedEventInit_j4rtn8$', function (relatedTarget, bubbles, cancelable, composed) { @@ -33969,8 +36112,7 @@ path = null; if (fillRule === void 0) { fillRule = 'nonzero'; - } - if (id === void 0) + }if (id === void 0) id = ''; if (parentID === void 0) parentID = null; @@ -34010,7 +36152,7 @@ var get_24 = defineInlineFunction('kotlin.org.w3c.dom.get_c2gw6m$', function ($receiver, index) { return $receiver[index]; }); - var DragEventInit = defineInlineFunction('kotlin.org.w3c.dom.DragEventInit_rb6t3c$', function (dataTransfer, screenX, screenY, clientX, clientY, button, buttons, relatedTarget, ctrlKey, shiftKey, altKey, metaKey, modifierAltGraph, modifierCapsLock, modifierFn, modifierFnLock, modifierHyper, modifierNumLock, modifierScrollLock, modifierSuper, modifierSymbol, modifierSymbolLock, view, detail, bubbles, cancelable, composed) { + var DragEventInit = defineInlineFunction('kotlin.org.w3c.dom.DragEventInit_srvs6b$', function (dataTransfer, screenX, screenY, clientX, clientY, button, buttons, relatedTarget, region, ctrlKey, shiftKey, altKey, metaKey, modifierAltGraph, modifierCapsLock, modifierFn, modifierFnLock, modifierHyper, modifierNumLock, modifierScrollLock, modifierSuper, modifierSymbol, modifierSymbolLock, view, detail, bubbles, cancelable, composed) { if (dataTransfer === void 0) dataTransfer = null; if (screenX === void 0) @@ -34027,6 +36169,8 @@ buttons = 0; if (relatedTarget === void 0) relatedTarget = null; + if (region === void 0) + region = null; if (ctrlKey === void 0) ctrlKey = false; if (shiftKey === void 0) @@ -34074,6 +36218,7 @@ o['button'] = button; o['buttons'] = buttons; o['relatedTarget'] = relatedTarget; + o['region'] = region; o['ctrlKey'] = ctrlKey; o['shiftKey'] = shiftKey; o['altKey'] = altKey; @@ -34095,6 +36240,9 @@ o['composed'] = composed; return o; }); + var get_25 = defineInlineFunction('kotlin.org.w3c.dom.get_ewayf0$', function ($receiver, name) { + return $receiver[name]; + }); var PopStateEventInit = defineInlineFunction('kotlin.org.w3c.dom.PopStateEventInit_m0in9k$', function (state, bubbles, cancelable, composed) { if (state === void 0) state = null; @@ -34191,42 +36339,38 @@ o['composed'] = composed; return o; }); - var get_25 = defineInlineFunction('kotlin.org.w3c.dom.get_l671a0$', function ($receiver, index) { + var get_26 = defineInlineFunction('kotlin.org.w3c.dom.get_l671a0$', function ($receiver, index) { return $receiver[index]; }); - var get_26 = defineInlineFunction('kotlin.org.w3c.dom.get_ldwsk8$', function ($receiver, name) { + var get_27 = defineInlineFunction('kotlin.org.w3c.dom.get_ldwsk8$', function ($receiver, name) { return $receiver[name]; }); - var get_27 = defineInlineFunction('kotlin.org.w3c.dom.get_iatcyr$', function ($receiver, index) { + var get_28 = defineInlineFunction('kotlin.org.w3c.dom.get_iatcyr$', function ($receiver, index) { return $receiver[index]; }); - var get_28 = defineInlineFunction('kotlin.org.w3c.dom.get_usmy71$', function ($receiver, name) { + var get_29 = defineInlineFunction('kotlin.org.w3c.dom.get_usmy71$', function ($receiver, name) { return $receiver[name]; }); - var get_29 = defineInlineFunction('kotlin.org.w3c.dom.get_t3yadb$', function ($receiver, index) { + var get_30 = defineInlineFunction('kotlin.org.w3c.dom.get_t3yadb$', function ($receiver, index) { return $receiver[index]; }); - var get_30 = defineInlineFunction('kotlin.org.w3c.dom.get_bempxb$', function ($receiver, name) { + var get_31 = defineInlineFunction('kotlin.org.w3c.dom.get_bempxb$', function ($receiver, name) { return $receiver[name]; }); var ImageBitmapOptions = defineInlineFunction('kotlin.org.w3c.dom.ImageBitmapOptions_qp88pe$', function (imageOrientation, premultiplyAlpha, colorSpaceConversion, resizeWidth, resizeHeight, resizeQuality) { if (imageOrientation === void 0) { imageOrientation = 'none'; - } - if (premultiplyAlpha === void 0) { + }if (premultiplyAlpha === void 0) { premultiplyAlpha = 'default'; - } - if (colorSpaceConversion === void 0) { + }if (colorSpaceConversion === void 0) { colorSpaceConversion = 'default'; - } - if (resizeWidth === void 0) + }if (resizeWidth === void 0) resizeWidth = undefined; if (resizeHeight === void 0) resizeHeight = undefined; if (resizeQuality === void 0) { resizeQuality = 'low'; - } - var o = {}; + }var o = {}; o['imageOrientation'] = imageOrientation; o['premultiplyAlpha'] = premultiplyAlpha; o['colorSpaceConversion'] = colorSpaceConversion; @@ -34235,7 +36379,7 @@ o['resizeQuality'] = resizeQuality; return o; }); - var MessageEventInit = defineInlineFunction('kotlin.org.w3c.dom.MessageEventInit_146zbu$', function (data, origin, lastEventId, source, ports, bubbles, cancelable, composed) { + var MessageEventInit = defineInlineFunction('kotlin.org.w3c.dom.MessageEventInit_2mzoiy$', function (data, origin, lastEventId, source, ports, bubbles, cancelable, composed) { if (data === void 0) data = null; if (origin === void 0) @@ -34295,19 +36439,17 @@ var WorkerOptions = defineInlineFunction('kotlin.org.w3c.dom.WorkerOptions_sllxcl$', function (type, credentials) { if (type === void 0) { type = 'classic'; - } - if (credentials === void 0) { + }if (credentials === void 0) { credentials = 'omit'; - } - var o = {}; + }var o = {}; o['type'] = type; o['credentials'] = credentials; return o; }); - var get_31 = defineInlineFunction('kotlin.org.w3c.dom.get_bsm031$', function ($receiver, key) { + var get_32 = defineInlineFunction('kotlin.org.w3c.dom.get_bsm031$', function ($receiver, key) { return $receiver[key]; }); - var set_12 = defineInlineFunction('kotlin.org.w3c.dom.set_9wlwlb$', function ($receiver, key, value) { + var set_13 = defineInlineFunction('kotlin.org.w3c.dom.set_9wlwlb$', function ($receiver, key, value) { $receiver[key] = value; }); var StorageEventInit = defineInlineFunction('kotlin.org.w3c.dom.StorageEventInit_asvzxz$', function (key, oldValue, newValue, url, storageArea, bubbles, cancelable, composed) { @@ -34387,13 +36529,13 @@ o['capture'] = capture; return o; }); - var get_32 = defineInlineFunction('kotlin.org.w3c.dom.get_axj990$', function ($receiver, index) { + var get_33 = defineInlineFunction('kotlin.org.w3c.dom.get_axj990$', function ($receiver, index) { return $receiver[index]; }); - var get_33 = defineInlineFunction('kotlin.org.w3c.dom.get_l6emzv$', function ($receiver, index) { + var get_34 = defineInlineFunction('kotlin.org.w3c.dom.get_l6emzv$', function ($receiver, index) { return $receiver[index]; }); - var get_34 = defineInlineFunction('kotlin.org.w3c.dom.get_kzcjh1$', function ($receiver, name) { + var get_35 = defineInlineFunction('kotlin.org.w3c.dom.get_kzcjh1$', function ($receiver, name) { return $receiver[name]; }); var MutationObserverInit = defineInlineFunction('kotlin.org.w3c.dom.MutationObserverInit_c5um2n$', function (childList, attributes, characterData, subtree, attributeOldValue, characterDataOldValue, attributeFilter) { @@ -34428,11 +36570,14 @@ o['composed'] = composed; return o; }); - var ElementCreationOptions = defineInlineFunction('kotlin.org.w3c.dom.ElementCreationOptions_pdl1vj$', function (is_) { - if (is_ === void 0) - is_ = undefined; + var get_36 = defineInlineFunction('kotlin.org.w3c.dom.get_faw09z$', function ($receiver, name) { + return $receiver[name]; + }); + var ElementCreationOptions = defineInlineFunction('kotlin.org.w3c.dom.ElementCreationOptions_pdl1vj$', function (is) { + if (is === void 0) + is = undefined; var o = {}; - o['is'] = is_; + o['is'] = is; return o; }); var ShadowRootInit = defineInlineFunction('kotlin.org.w3c.dom.ShadowRootInit_16lofx$', function (mode) { @@ -34440,13 +36585,13 @@ o['mode'] = mode; return o; }); - var get_35 = defineInlineFunction('kotlin.org.w3c.dom.get_rjm7cj$', function ($receiver, index) { + var get_37 = defineInlineFunction('kotlin.org.w3c.dom.get_rjm7cj$', function ($receiver, index) { return $receiver[index]; }); - var get_36 = defineInlineFunction('kotlin.org.w3c.dom.get_oszak3$', function ($receiver, qualifiedName) { + var get_38 = defineInlineFunction('kotlin.org.w3c.dom.get_oszak3$', function ($receiver, qualifiedName) { return $receiver[qualifiedName]; }); - var get_37 = defineInlineFunction('kotlin.org.w3c.dom.get_o72cm9$', function ($receiver, index) { + var get_39 = defineInlineFunction('kotlin.org.w3c.dom.get_o72cm9$', function ($receiver, index) { return $receiver[index]; }); var DOMPointInit = defineInlineFunction('kotlin.org.w3c.dom.DOMPointInit_rd1tgs$', function (x, y, z, w) { @@ -34481,14 +36626,13 @@ o['height'] = height; return o; }); - var get_38 = defineInlineFunction('kotlin.org.w3c.dom.get_p225ue$', function ($receiver, index) { + var get_40 = defineInlineFunction('kotlin.org.w3c.dom.get_p225ue$', function ($receiver, index) { return $receiver[index]; }); var ScrollOptions = defineInlineFunction('kotlin.org.w3c.dom.ScrollOptions_pa3cpp$', function (behavior) { if (behavior === void 0) { behavior = 'auto'; - } - var o = {}; + }var o = {}; o['behavior'] = behavior; return o; }); @@ -34499,8 +36643,7 @@ top = undefined; if (behavior === void 0) { behavior = 'auto'; - } - var o = {}; + }var o = {}; o['left'] = left; o['top'] = top; o['behavior'] = behavior; @@ -34528,14 +36671,11 @@ var ScrollIntoViewOptions = defineInlineFunction('kotlin.org.w3c.dom.ScrollIntoViewOptions_2qltkz$', function (block, inline, behavior) { if (block === void 0) { block = 'center'; - } - if (inline === void 0) { + }if (inline === void 0) { inline = 'center'; - } - if (behavior === void 0) { + }if (behavior === void 0) { behavior = 'auto'; - } - var o = {}; + }var o = {}; o['block'] = block; o['inline'] = inline; o['behavior'] = behavior; @@ -34544,8 +36684,7 @@ var BoxQuadOptions = defineInlineFunction('kotlin.org.w3c.dom.BoxQuadOptions_tnnyad$', function (box, relativeTo) { if (box === void 0) { box = 'border'; - } - if (relativeTo === void 0) + }if (relativeTo === void 0) relativeTo = undefined; var o = {}; o['box'] = box; @@ -34555,15 +36694,16 @@ var ConvertCoordinateOptions = defineInlineFunction('kotlin.org.w3c.dom.ConvertCoordinateOptions_8oj3e4$', function (fromBox, toBox) { if (fromBox === void 0) { fromBox = 'border'; - } - if (toBox === void 0) { + }if (toBox === void 0) { toBox = 'border'; - } - var o = {}; + }var o = {}; o['fromBox'] = fromBox; o['toBox'] = toBox; return o; }); + var get_41 = defineInlineFunction('kotlin.org.w3c.dom.get_nc7obz$', function ($receiver, index) { + return $receiver[index]; + }); var get_LOADING = defineInlineFunction('kotlin.org.w3c.dom.get_LOADING_cuyr1n$', function ($receiver) { return 'loading'; }); @@ -35210,7 +37350,7 @@ var get_VIDEOINPUT = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.get_VIDEOINPUT_bcgeby$', function ($receiver) { return 'videoinput'; }); - var PointerEventInit = defineInlineFunction('kotlin.org.w3c.dom.pointerevents.PointerEventInit_1dxnaw$', function (pointerId, width, height, pressure, tangentialPressure, tiltX, tiltY, twist, pointerType, isPrimary, screenX, screenY, clientX, clientY, button, buttons, relatedTarget, ctrlKey, shiftKey, altKey, metaKey, modifierAltGraph, modifierCapsLock, modifierFn, modifierFnLock, modifierHyper, modifierNumLock, modifierScrollLock, modifierSuper, modifierSymbol, modifierSymbolLock, view, detail, bubbles, cancelable, composed) { + var PointerEventInit = defineInlineFunction('kotlin.org.w3c.dom.pointerevents.PointerEventInit_as1dp9$', function (pointerId, width, height, pressure, tangentialPressure, tiltX, tiltY, twist, pointerType, isPrimary, screenX, screenY, clientX, clientY, button, buttons, relatedTarget, region, ctrlKey, shiftKey, altKey, metaKey, modifierAltGraph, modifierCapsLock, modifierFn, modifierFnLock, modifierHyper, modifierNumLock, modifierScrollLock, modifierSuper, modifierSymbol, modifierSymbolLock, view, detail, bubbles, cancelable, composed) { if (pointerId === void 0) pointerId = 0; if (width === void 0) @@ -35245,6 +37385,8 @@ buttons = 0; if (relatedTarget === void 0) relatedTarget = null; + if (region === void 0) + region = null; if (ctrlKey === void 0) ctrlKey = false; if (shiftKey === void 0) @@ -35301,6 +37443,7 @@ o['button'] = button; o['buttons'] = buttons; o['relatedTarget'] = relatedTarget; + o['region'] = region; o['ctrlKey'] = ctrlKey; o['shiftKey'] = shiftKey; o['altKey'] = altKey; @@ -35338,40 +37481,40 @@ o['clipped'] = clipped; return o; }); - var get_39 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_2fgwj9$', function ($receiver, index) { + var get_42 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_2fgwj9$', function ($receiver, index) { return $receiver[index]; }); - var set_13 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_xg4o68$', function ($receiver, index, newItem) { + var set_14 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_xg4o68$', function ($receiver, index, newItem) { $receiver[index] = newItem; }); - var get_40 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_nujcb1$', function ($receiver, index) { + var get_43 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_nujcb1$', function ($receiver, index) { return $receiver[index]; }); - var set_14 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_vul1sp$', function ($receiver, index, newItem) { + var set_15 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_vul1sp$', function ($receiver, index, newItem) { $receiver[index] = newItem; }); - var get_41 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_ml6vgw$', function ($receiver, index) { + var get_44 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_ml6vgw$', function ($receiver, index) { return $receiver[index]; }); - var set_15 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_tsl60p$', function ($receiver, index, newItem) { + var set_16 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_tsl60p$', function ($receiver, index, newItem) { $receiver[index] = newItem; }); - var get_42 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_f2nmth$', function ($receiver, index) { + var get_45 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_f2nmth$', function ($receiver, index) { return $receiver[index]; }); - var set_16 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_nr97t$', function ($receiver, index, newItem) { + var set_17 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_nr97t$', function ($receiver, index, newItem) { $receiver[index] = newItem; }); - var get_43 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_xcci3g$', function ($receiver, index) { + var get_46 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_xcci3g$', function ($receiver, index) { return $receiver[index]; }); - var set_17 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_7s907r$', function ($receiver, index, newItem) { + var set_18 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_7s907r$', function ($receiver, index, newItem) { $receiver[index] = newItem; }); - var get_44 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_r7cbpc$', function ($receiver, index) { + var get_47 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_r7cbpc$', function ($receiver, index) { return $receiver[index]; }); - var set_18 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_8k1hvb$', function ($receiver, index, newItem) { + var set_19 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_8k1hvb$', function ($receiver, index, newItem) { $receiver[index] = newItem; }); var RequestInit = defineInlineFunction('kotlin.org.w3c.fetch.RequestInit_302zsh$', function (method, headers, body, referrer, referrerPolicy, mode, credentials, cache, redirect, integrity, keepalive, window_0) { @@ -35579,14 +37722,13 @@ o['type'] = type; return o; }); - var get_45 = defineInlineFunction('kotlin.org.w3c.files.get_frimup$', function ($receiver, index) { + var get_48 = defineInlineFunction('kotlin.org.w3c.files.get_frimup$', function ($receiver, index) { return $receiver[index]; }); var NotificationOptions = defineInlineFunction('kotlin.org.w3c.notifications.NotificationOptions_kxkl36$', function (dir, lang, body, tag, image, icon, badge, sound, vibrate, timestamp, renotify, silent, noscreen, requireInteraction, sticky, data, actions) { if (dir === void 0) { dir = 'auto'; - } - if (lang === void 0) + }if (lang === void 0) lang = ''; if (body === void 0) body = ''; @@ -35694,13 +37836,12 @@ scope = undefined; if (type === void 0) { type = 'classic'; - } - var o = {}; + }var o = {}; o['scope'] = scope; o['type'] = type; return o; }); - var ServiceWorkerMessageEventInit = defineInlineFunction('kotlin.org.w3c.workers.ServiceWorkerMessageEventInit_d2wyw1$', function (data, origin, lastEventId, source, ports, bubbles, cancelable, composed) { + var ServiceWorkerMessageEventInit = defineInlineFunction('kotlin.org.w3c.workers.ServiceWorkerMessageEventInit_m1i4wi$', function (data, origin, lastEventId, source, ports, bubbles, cancelable, composed) { if (data === void 0) data = undefined; if (origin === void 0) @@ -35733,8 +37874,7 @@ includeUncontrolled = false; if (type === void 0) { type = 'window'; - } - var o = {}; + }var o = {}; o['includeUncontrolled'] = includeUncontrolled; o['type'] = type; return o; @@ -35905,7 +38045,7 @@ var get_ALL = defineInlineFunction('kotlin.org.w3c.workers.get_ALL_jpgnoe$', function ($receiver) { return 'all'; }); - var ProgressEventInit = defineInlineFunction('kotlin.org.w3c.xhr.ProgressEventInit_swrtea$', function (lengthComputable, loaded, total, bubbles, cancelable, composed) { + var ProgressEventInit = defineInlineFunction('kotlin.org.w3c.xhr.ProgressEventInit_yosdck$', function (lengthComputable, loaded, total, bubbles, cancelable, composed) { if (lengthComputable === void 0) lengthComputable = false; if (loaded === void 0) @@ -36007,6 +38147,55 @@ function OptionalExpectation() { } OptionalExpectation.$metadata$ = {kind: Kind_CLASS, simpleName: 'OptionalExpectation', interfaces: [Annotation]}; + function RequiresOptIn(message, level) { + if (message === void 0) + message = ''; + if (level === void 0) + level = RequiresOptIn$Level$ERROR_getInstance(); + this.message = message; + this.level = level; + } + function RequiresOptIn$Level(name, ordinal) { + Enum.call(this); + this.name$ = name; + this.ordinal$ = ordinal; + } + function RequiresOptIn$Level_initFields() { + RequiresOptIn$Level_initFields = function () { + }; + RequiresOptIn$Level$WARNING_instance = new RequiresOptIn$Level('WARNING', 0); + RequiresOptIn$Level$ERROR_instance = new RequiresOptIn$Level('ERROR', 1); + } + var RequiresOptIn$Level$WARNING_instance; + function RequiresOptIn$Level$WARNING_getInstance() { + RequiresOptIn$Level_initFields(); + return RequiresOptIn$Level$WARNING_instance; + } + var RequiresOptIn$Level$ERROR_instance; + function RequiresOptIn$Level$ERROR_getInstance() { + RequiresOptIn$Level_initFields(); + return RequiresOptIn$Level$ERROR_instance; + } + RequiresOptIn$Level.$metadata$ = {kind: Kind_CLASS, simpleName: 'Level', interfaces: [Enum]}; + function RequiresOptIn$Level$values() { + return [RequiresOptIn$Level$WARNING_getInstance(), RequiresOptIn$Level$ERROR_getInstance()]; + } + RequiresOptIn$Level.values = RequiresOptIn$Level$values; + function RequiresOptIn$Level$valueOf(name) { + switch (name) { + case 'WARNING': + return RequiresOptIn$Level$WARNING_getInstance(); + case 'ERROR': + return RequiresOptIn$Level$ERROR_getInstance(); + default:throwISE('No enum constant kotlin.RequiresOptIn.Level.' + name); + } + } + RequiresOptIn$Level.valueOf_61zpoe$ = RequiresOptIn$Level$valueOf; + RequiresOptIn.$metadata$ = {kind: Kind_CLASS, simpleName: 'RequiresOptIn', interfaces: [Annotation]}; + function OptIn(markerClass) { + this.markerClass = markerClass; + } + OptIn.$metadata$ = {kind: Kind_CLASS, simpleName: 'OptIn', interfaces: [Annotation]}; function AbstractCollection() { } AbstractCollection.prototype.contains_11rb$ = function (element) { @@ -36016,15 +38205,13 @@ if (Kotlin.isType(this, Collection) && this.isEmpty()) { any$result = false; break any$break; - } - tmp$ = this.iterator(); + }tmp$ = this.iterator(); while (tmp$.hasNext()) { var element_0 = tmp$.next(); if (equals(element_0, element)) { any$result = true; break any$break; - } - } + }} any$result = false; } while (false); @@ -36037,15 +38224,13 @@ if (Kotlin.isType(elements, Collection) && elements.isEmpty()) { all$result = true; break all$break; - } - tmp$ = elements.iterator(); + }tmp$ = elements.iterator(); while (tmp$.hasNext()) { var element = tmp$.next(); if (!this.contains_11rb$(element)) { all$result = false; break all$break; - } - } + }} all$result = true; } while (false); @@ -36130,8 +38315,7 @@ if (!(this.state_smy23j$_0 !== State$Failed_getInstance())) { var message = 'Failed requirement.'; throw IllegalArgumentException_init_0(message.toString()); - } - switch (this.state_smy23j$_0.name) { + }switch (this.state_smy23j$_0.name) { case 'Done': tmp$ = false; break; @@ -36181,8 +38365,7 @@ if (equals(item, element)) { indexOfFirst$result = index; break indexOfFirst$break; - } - index = index + 1 | 0; + }index = index + 1 | 0; } indexOfFirst$result = -1; } @@ -36197,8 +38380,7 @@ if (equals(iterator.previous(), element)) { indexOfLast$result = iterator.nextIndex(); break indexOfLast$break; - } - } + }} indexOfLast$result = -1; } while (false); @@ -36281,29 +38463,23 @@ AbstractList$Companion.prototype.checkElementIndex_6xvm5r$ = function (index, size) { if (index < 0 || index >= size) { throw new IndexOutOfBoundsException('index: ' + index + ', size: ' + size); - } - }; + }}; AbstractList$Companion.prototype.checkPositionIndex_6xvm5r$ = function (index, size) { if (index < 0 || index > size) { throw new IndexOutOfBoundsException('index: ' + index + ', size: ' + size); - } - }; + }}; AbstractList$Companion.prototype.checkRangeIndexes_cub51b$ = function (fromIndex, toIndex, size) { if (fromIndex < 0 || toIndex > size) { throw new IndexOutOfBoundsException('fromIndex: ' + fromIndex + ', toIndex: ' + toIndex + ', size: ' + size); - } - if (fromIndex > toIndex) { + }if (fromIndex > toIndex) { throw IllegalArgumentException_init_0('fromIndex: ' + fromIndex + ' > toIndex: ' + toIndex); - } - }; + }}; AbstractList$Companion.prototype.checkBoundsIndexes_cub51b$ = function (startIndex, endIndex, size) { if (startIndex < 0 || endIndex > size) { throw new IndexOutOfBoundsException('startIndex: ' + startIndex + ', endIndex: ' + endIndex + ', size: ' + size); - } - if (startIndex > endIndex) { + }if (startIndex > endIndex) { throw IllegalArgumentException_init_0('startIndex: ' + startIndex + ' > endIndex: ' + endIndex); - } - }; + }}; AbstractList$Companion.prototype.orderedHashCode_nykoif$ = function (c) { var tmp$, tmp$_0; var hashCode_0 = 1; @@ -36325,8 +38501,7 @@ var elemOther = otherIterator.next(); if (!equals(elem, elemOther)) { return false; - } - } + }} return true; }; AbstractList$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; @@ -36334,8 +38509,7 @@ function AbstractList$Companion_getInstance() { if (AbstractList$Companion_instance === null) { new AbstractList$Companion(); - } - return AbstractList$Companion_instance; + }return AbstractList$Companion_instance; } AbstractList.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractList', interfaces: [List, AbstractCollection]}; function AbstractMap() { @@ -36354,15 +38528,13 @@ if (Kotlin.isType($receiver, Collection) && $receiver.isEmpty()) { any$result = false; break any$break; - } - tmp$ = $receiver.iterator(); + }tmp$ = $receiver.iterator(); while (tmp$.hasNext()) { var element = tmp$.next(); if (equals(element.value, value)) { any$result = true; break any$break; - } - } + }} any$result = false; } while (false); @@ -36377,16 +38549,13 @@ var ourValue = (Kotlin.isType(tmp$ = this, Map) ? tmp$ : throwCCE()).get_11rb$(key); if (!equals(value, ourValue)) { return false; - } - var tmp$_0 = ourValue == null; + }var tmp$_0 = ourValue == null; if (tmp$_0) { var tmp$_1; tmp$_0 = !(Kotlin.isType(tmp$_1 = this, Map) ? tmp$_1 : throwCCE()).containsKey_11rb$(key); - } - if (tmp$_0) { + }if (tmp$_0) { return false; - } - return true; + }return true; }; AbstractMap.prototype.equals = function (other) { if (other === this) @@ -36402,15 +38571,13 @@ if (Kotlin.isType($receiver, Collection) && $receiver.isEmpty()) { all$result = true; break all$break; - } - tmp$ = $receiver.iterator(); + }tmp$ = $receiver.iterator(); while (tmp$.hasNext()) { var element = tmp$.next(); if (!this.containsEntry_8hxqw4$(element)) { all$result = false; break all$break; - } - } + }} all$result = true; } while (false); @@ -36457,8 +38624,7 @@ Object.defineProperty(AbstractMap.prototype, 'keys', {get: function () { if (this._keys_up5z3z$_0 == null) { this._keys_up5z3z$_0 = new AbstractMap$get_AbstractMap$keys$ObjectLiteral(this); - } - return ensureNotNull(this._keys_up5z3z$_0); + }return ensureNotNull(this._keys_up5z3z$_0); }}); function AbstractMap$toString$lambda(this$AbstractMap) { return function (it) { @@ -36502,8 +38668,7 @@ Object.defineProperty(AbstractMap.prototype, 'values', {get: function () { if (this._values_6nw1f1$_0 == null) { this._values_6nw1f1$_0 = new AbstractMap$get_AbstractMap$values$ObjectLiteral(this); - } - return ensureNotNull(this._values_6nw1f1$_0); + }return ensureNotNull(this._values_6nw1f1$_0); }}); AbstractMap.prototype.implFindEntry_8k1i24$_0 = function (key) { var $receiver = this.entries; @@ -36516,8 +38681,7 @@ if (equals(element.key, key)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -36543,8 +38707,7 @@ function AbstractMap$Companion_getInstance() { if (AbstractMap$Companion_instance === null) { new AbstractMap$Companion(); - } - return AbstractMap$Companion_instance; + }return AbstractMap$Companion_instance; } AbstractMap.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractMap', interfaces: [Map]}; function AbstractSet() { @@ -36585,10 +38748,580 @@ function AbstractSet$Companion_getInstance() { if (AbstractSet$Companion_instance === null) { new AbstractSet$Companion(); - } - return AbstractSet$Companion_instance; + }return AbstractSet$Companion_instance; } AbstractSet.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractSet', interfaces: [Set, AbstractCollection]}; + var emptyElementData; + var maxArraySize; + var defaultMinCapacity; + function ArrayDeque() { + this.head_0 = 0; + this.elementData_0 = null; + this.size_vddieg$_0 = 0; + } + Object.defineProperty(ArrayDeque.prototype, 'size', {get: function () { + return this.size_vddieg$_0; + }, set: function (size) { + this.size_vddieg$_0 = size; + }}); + ArrayDeque.prototype.ensureCapacity_0 = function (minCapacity) { + if (minCapacity < 0) + throw IllegalStateException_init_0('Deque is too big.'); + if (minCapacity <= this.elementData_0.length) + return; + if (this.elementData_0 === emptyElementData) { + this.elementData_0 = Kotlin.newArray(coerceAtLeast_2(minCapacity, 10), null); + return; + }var newCapacity = this.newCapacity_6xvm5r$(this.elementData_0.length, minCapacity); + this.copyElements_0(newCapacity); + }; + ArrayDeque.prototype.newCapacity_6xvm5r$ = function (oldCapacity, minCapacity) { + var newCapacity = oldCapacity + (oldCapacity >> 1) | 0; + if ((newCapacity - minCapacity | 0) < 0) + newCapacity = minCapacity; + if ((newCapacity - 2147483639 | 0) > 0) + newCapacity = minCapacity > 2147483639 ? 2147483647 : 2147483639; + return newCapacity; + }; + ArrayDeque.prototype.copyElements_0 = function (newCapacity) { + var newElements = Kotlin.newArray(newCapacity, null); + arrayCopy(this.elementData_0, newElements, 0, this.head_0, this.elementData_0.length); + arrayCopy(this.elementData_0, newElements, this.elementData_0.length - this.head_0 | 0, 0, this.head_0); + this.head_0 = 0; + this.elementData_0 = newElements; + }; + ArrayDeque.prototype.internalGet_0 = function (internalIndex) { + var tmp$; + return (tmp$ = this.elementData_0[internalIndex]) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); + }; + ArrayDeque.prototype.positiveMod_0 = function (index) { + return index >= this.elementData_0.length ? index - this.elementData_0.length | 0 : index; + }; + ArrayDeque.prototype.negativeMod_0 = function (index) { + return index < 0 ? index + this.elementData_0.length | 0 : index; + }; + ArrayDeque.prototype.internalIndex_0 = function (index) { + return this.positiveMod_0(this.head_0 + index | 0); + }; + ArrayDeque.prototype.incremented_0 = function (index) { + return index === get_lastIndex(this.elementData_0) ? 0 : index + 1 | 0; + }; + ArrayDeque.prototype.decremented_0 = function (index) { + return index === 0 ? get_lastIndex(this.elementData_0) : index - 1 | 0; + }; + ArrayDeque.prototype.isEmpty = function () { + return this.size === 0; + }; + ArrayDeque.prototype.first = function () { + if (this.isEmpty()) + throw new NoSuchElementException('ArrayDeque is empty.'); + else { + var tmp$; + return (tmp$ = this.elementData_0[this.head_0]) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); + } + }; + ArrayDeque.prototype.firstOrNull = function () { + var tmp$; + if (this.isEmpty()) + tmp$ = null; + else { + var tmp$_0; + tmp$ = (tmp$_0 = this.elementData_0[this.head_0]) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE_0(); + } + return tmp$; + }; + ArrayDeque.prototype.last = function () { + if (this.isEmpty()) + throw new NoSuchElementException('ArrayDeque is empty.'); + else { + var tmp$; + return (tmp$ = this.elementData_0[this.positiveMod_0(this.head_0 + get_lastIndex_12(this) | 0)]) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); + } + }; + ArrayDeque.prototype.lastOrNull = function () { + var tmp$; + if (this.isEmpty()) + tmp$ = null; + else { + var tmp$_0; + tmp$ = (tmp$_0 = this.elementData_0[this.positiveMod_0(this.head_0 + get_lastIndex_12(this) | 0)]) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE_0(); + } + return tmp$; + }; + ArrayDeque.prototype.addFirst_11rb$ = function (element) { + this.ensureCapacity_0(this.size + 1 | 0); + this.head_0 = this.decremented_0(this.head_0); + this.elementData_0[this.head_0] = element; + this.size = this.size + 1 | 0; + }; + ArrayDeque.prototype.addLast_11rb$ = function (element) { + this.ensureCapacity_0(this.size + 1 | 0); + this.elementData_0[this.positiveMod_0(this.head_0 + this.size | 0)] = element; + this.size = this.size + 1 | 0; + }; + ArrayDeque.prototype.removeFirst = function () { + if (this.isEmpty()) + throw new NoSuchElementException('ArrayDeque is empty.'); + var tmp$; + var element = (tmp$ = this.elementData_0[this.head_0]) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); + this.elementData_0[this.head_0] = null; + this.head_0 = this.incremented_0(this.head_0); + this.size = this.size - 1 | 0; + return element; + }; + ArrayDeque.prototype.removeFirstOrNull = function () { + return this.isEmpty() ? null : this.removeFirst(); + }; + ArrayDeque.prototype.removeLast = function () { + if (this.isEmpty()) + throw new NoSuchElementException('ArrayDeque is empty.'); + var internalLastIndex = this.positiveMod_0(this.head_0 + get_lastIndex_12(this) | 0); + var tmp$; + var element = (tmp$ = this.elementData_0[internalLastIndex]) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); + this.elementData_0[internalLastIndex] = null; + this.size = this.size - 1 | 0; + return element; + }; + ArrayDeque.prototype.removeLastOrNull = function () { + return this.isEmpty() ? null : this.removeLast(); + }; + ArrayDeque.prototype.add_11rb$ = function (element) { + this.addLast_11rb$(element); + return true; + }; + ArrayDeque.prototype.add_wxm5ur$ = function (index, element) { + AbstractList$Companion_getInstance().checkPositionIndex_6xvm5r$(index, this.size); + if (index === this.size) { + this.addLast_11rb$(element); + return; + } else if (index === 0) { + this.addFirst_11rb$(element); + return; + }this.ensureCapacity_0(this.size + 1 | 0); + var internalIndex = this.positiveMod_0(this.head_0 + index | 0); + if (index < this.size + 1 >> 1) { + var decrementedInternalIndex = this.decremented_0(internalIndex); + var decrementedHead = this.decremented_0(this.head_0); + if (decrementedInternalIndex >= this.head_0) { + this.elementData_0[decrementedHead] = this.elementData_0[this.head_0]; + arrayCopy(this.elementData_0, this.elementData_0, this.head_0, this.head_0 + 1 | 0, decrementedInternalIndex + 1 | 0); + } else { + arrayCopy(this.elementData_0, this.elementData_0, this.head_0 - 1 | 0, this.head_0, this.elementData_0.length); + this.elementData_0[this.elementData_0.length - 1 | 0] = this.elementData_0[0]; + arrayCopy(this.elementData_0, this.elementData_0, 0, 1, decrementedInternalIndex + 1 | 0); + } + this.elementData_0[decrementedInternalIndex] = element; + this.head_0 = decrementedHead; + } else { + var tail = this.positiveMod_0(this.head_0 + this.size | 0); + if (internalIndex < tail) { + arrayCopy(this.elementData_0, this.elementData_0, internalIndex + 1 | 0, internalIndex, tail); + } else { + arrayCopy(this.elementData_0, this.elementData_0, 1, 0, tail); + this.elementData_0[0] = this.elementData_0[this.elementData_0.length - 1 | 0]; + arrayCopy(this.elementData_0, this.elementData_0, internalIndex + 1 | 0, internalIndex, this.elementData_0.length - 1 | 0); + } + this.elementData_0[internalIndex] = element; + } + this.size = this.size + 1 | 0; + }; + ArrayDeque.prototype.copyCollectionElements_0 = function (internalIndex, elements) { + var tmp$, tmp$_0; + var iterator = elements.iterator(); + tmp$ = this.elementData_0.length; + for (var index = internalIndex; index < tmp$; index++) { + if (!iterator.hasNext()) + break; + this.elementData_0[index] = iterator.next(); + } + tmp$_0 = this.head_0; + for (var index_0 = 0; index_0 < tmp$_0; index_0++) { + if (!iterator.hasNext()) + break; + this.elementData_0[index_0] = iterator.next(); + } + this.size = this.size + elements.size | 0; + }; + ArrayDeque.prototype.addAll_brywnq$ = function (elements) { + if (elements.isEmpty()) + return false; + this.ensureCapacity_0(this.size + elements.size | 0); + this.copyCollectionElements_0(this.positiveMod_0(this.head_0 + this.size | 0), elements); + return true; + }; + ArrayDeque.prototype.addAll_u57x28$ = function (index, elements) { + AbstractList$Companion_getInstance().checkPositionIndex_6xvm5r$(index, this.size); + if (elements.isEmpty()) { + return false; + } else if (index === this.size) { + return this.addAll_brywnq$(elements); + }this.ensureCapacity_0(this.size + elements.size | 0); + var tail = this.positiveMod_0(this.head_0 + this.size | 0); + var internalIndex = this.positiveMod_0(this.head_0 + index | 0); + var elementsSize = elements.size; + if (index < this.size + 1 >> 1) { + var shiftedHead = this.head_0 - elementsSize | 0; + if (internalIndex >= this.head_0) { + if (shiftedHead >= 0) { + arrayCopy(this.elementData_0, this.elementData_0, shiftedHead, this.head_0, internalIndex); + } else { + shiftedHead = shiftedHead + this.elementData_0.length | 0; + var elementsToShift = internalIndex - this.head_0 | 0; + var shiftToBack = this.elementData_0.length - shiftedHead | 0; + if (shiftToBack >= elementsToShift) { + arrayCopy(this.elementData_0, this.elementData_0, shiftedHead, this.head_0, internalIndex); + } else { + arrayCopy(this.elementData_0, this.elementData_0, shiftedHead, this.head_0, this.head_0 + shiftToBack | 0); + arrayCopy(this.elementData_0, this.elementData_0, 0, this.head_0 + shiftToBack | 0, internalIndex); + } + } + } else { + arrayCopy(this.elementData_0, this.elementData_0, shiftedHead, this.head_0, this.elementData_0.length); + if (elementsSize >= internalIndex) { + arrayCopy(this.elementData_0, this.elementData_0, this.elementData_0.length - elementsSize | 0, 0, internalIndex); + } else { + arrayCopy(this.elementData_0, this.elementData_0, this.elementData_0.length - elementsSize | 0, 0, elementsSize); + arrayCopy(this.elementData_0, this.elementData_0, 0, elementsSize, internalIndex); + } + } + this.head_0 = shiftedHead; + this.copyCollectionElements_0(this.negativeMod_0(internalIndex - elementsSize | 0), elements); + } else { + var shiftedInternalIndex = internalIndex + elementsSize | 0; + if (internalIndex < tail) { + if ((tail + elementsSize | 0) <= this.elementData_0.length) { + arrayCopy(this.elementData_0, this.elementData_0, shiftedInternalIndex, internalIndex, tail); + } else { + if (shiftedInternalIndex >= this.elementData_0.length) { + arrayCopy(this.elementData_0, this.elementData_0, shiftedInternalIndex - this.elementData_0.length | 0, internalIndex, tail); + } else { + var shiftToFront = tail + elementsSize - this.elementData_0.length | 0; + arrayCopy(this.elementData_0, this.elementData_0, 0, tail - shiftToFront | 0, tail); + arrayCopy(this.elementData_0, this.elementData_0, shiftedInternalIndex, internalIndex, tail - shiftToFront | 0); + } + } + } else { + arrayCopy(this.elementData_0, this.elementData_0, elementsSize, 0, tail); + if (shiftedInternalIndex >= this.elementData_0.length) { + arrayCopy(this.elementData_0, this.elementData_0, shiftedInternalIndex - this.elementData_0.length | 0, internalIndex, this.elementData_0.length); + } else { + arrayCopy(this.elementData_0, this.elementData_0, 0, this.elementData_0.length - elementsSize | 0, this.elementData_0.length); + arrayCopy(this.elementData_0, this.elementData_0, shiftedInternalIndex, internalIndex, this.elementData_0.length - elementsSize | 0); + } + } + this.copyCollectionElements_0(internalIndex, elements); + } + return true; + }; + ArrayDeque.prototype.get_za3lpa$ = function (index) { + AbstractList$Companion_getInstance().checkElementIndex_6xvm5r$(index, this.size); + var tmp$; + return (tmp$ = this.elementData_0[this.positiveMod_0(this.head_0 + index | 0)]) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); + }; + ArrayDeque.prototype.set_wxm5ur$ = function (index, element) { + AbstractList$Companion_getInstance().checkElementIndex_6xvm5r$(index, this.size); + var internalIndex = this.positiveMod_0(this.head_0 + index | 0); + var tmp$; + var oldElement = (tmp$ = this.elementData_0[internalIndex]) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); + this.elementData_0[internalIndex] = element; + return oldElement; + }; + ArrayDeque.prototype.contains_11rb$ = function (element) { + return this.indexOf_11rb$(element) !== -1; + }; + ArrayDeque.prototype.indexOf_11rb$ = function (element) { + var tmp$, tmp$_0; + var tail = this.positiveMod_0(this.head_0 + this.size | 0); + if (this.head_0 < tail) { + for (var index = this.head_0; index < tail; index++) { + if (equals(element, this.elementData_0[index])) + return index - this.head_0 | 0; + } + } else if (this.head_0 >= tail) { + tmp$ = this.head_0; + tmp$_0 = this.elementData_0.length; + for (var index_0 = tmp$; index_0 < tmp$_0; index_0++) { + if (equals(element, this.elementData_0[index_0])) + return index_0 - this.head_0 | 0; + } + for (var index_1 = 0; index_1 < tail; index_1++) { + if (equals(element, this.elementData_0[index_1])) + return index_1 + this.elementData_0.length - this.head_0 | 0; + } + }return -1; + }; + ArrayDeque.prototype.lastIndexOf_11rb$ = function (element) { + var tmp$, tmp$_0, tmp$_1; + var tail = this.positiveMod_0(this.head_0 + this.size | 0); + if (this.head_0 < tail) { + tmp$ = this.head_0; + for (var index = tail - 1 | 0; index >= tmp$; index--) { + if (equals(element, this.elementData_0[index])) + return index - this.head_0 | 0; + } + } else if (this.head_0 > tail) { + for (var index_0 = tail - 1 | 0; index_0 >= 0; index_0--) { + if (equals(element, this.elementData_0[index_0])) + return index_0 + this.elementData_0.length - this.head_0 | 0; + } + tmp$_0 = get_lastIndex(this.elementData_0); + tmp$_1 = this.head_0; + for (var index_1 = tmp$_0; index_1 >= tmp$_1; index_1--) { + if (equals(element, this.elementData_0[index_1])) + return index_1 - this.head_0 | 0; + } + }return -1; + }; + ArrayDeque.prototype.remove_11rb$ = function (element) { + var index = this.indexOf_11rb$(element); + if (index === -1) + return false; + this.removeAt_za3lpa$(index); + return true; + }; + ArrayDeque.prototype.removeAt_za3lpa$ = function (index) { + AbstractList$Companion_getInstance().checkElementIndex_6xvm5r$(index, this.size); + if (index === get_lastIndex_12(this)) { + return this.removeLast(); + } else if (index === 0) { + return this.removeFirst(); + }var internalIndex = this.positiveMod_0(this.head_0 + index | 0); + var tmp$; + var element = (tmp$ = this.elementData_0[internalIndex]) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); + if (index < this.size >> 1) { + if (internalIndex >= this.head_0) { + arrayCopy(this.elementData_0, this.elementData_0, this.head_0 + 1 | 0, this.head_0, internalIndex); + } else { + arrayCopy(this.elementData_0, this.elementData_0, 1, 0, internalIndex); + this.elementData_0[0] = this.elementData_0[this.elementData_0.length - 1 | 0]; + arrayCopy(this.elementData_0, this.elementData_0, this.head_0 + 1 | 0, this.head_0, this.elementData_0.length - 1 | 0); + } + this.elementData_0[this.head_0] = null; + this.head_0 = this.incremented_0(this.head_0); + } else { + var internalLastIndex = this.positiveMod_0(this.head_0 + get_lastIndex_12(this) | 0); + if (internalIndex <= internalLastIndex) { + arrayCopy(this.elementData_0, this.elementData_0, internalIndex, internalIndex + 1 | 0, internalLastIndex + 1 | 0); + } else { + arrayCopy(this.elementData_0, this.elementData_0, internalIndex, internalIndex + 1 | 0, this.elementData_0.length); + this.elementData_0[this.elementData_0.length - 1 | 0] = this.elementData_0[0]; + arrayCopy(this.elementData_0, this.elementData_0, 0, 1, internalLastIndex + 1 | 0); + } + this.elementData_0[internalLastIndex] = null; + } + this.size = this.size - 1 | 0; + return element; + }; + ArrayDeque.prototype.removeAll_brywnq$ = function (elements) { + var filterInPlace_0$result; + filterInPlace_0$break: do { + var tmp$, tmp$_0, tmp$_1, tmp$_2, tmp$_3, tmp$_4, tmp$_5; + var tmp$_6 = this.isEmpty(); + if (!tmp$_6) { + tmp$_6 = this.elementData_0.length === 0; + }if (tmp$_6) { + filterInPlace_0$result = false; + break filterInPlace_0$break; + }var tail = this.positiveMod_0(this.head_0 + this.size | 0); + var newTail = this.head_0; + var modified = false; + if (this.head_0 < tail) { + for (var index = this.head_0; index < tail; index++) { + var element = this.elementData_0[index]; + if (!elements.contains_11rb$((tmp$ = element) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0())) { + this.elementData_0[tmp$_0 = newTail, newTail = tmp$_0 + 1 | 0, tmp$_0] = element; + } else + modified = true; + } + fill_3(this.elementData_0, null, newTail, tail); + } else { + tmp$_1 = this.head_0; + tmp$_2 = this.elementData_0.length; + for (var index_0 = tmp$_1; index_0 < tmp$_2; index_0++) { + var element_0 = this.elementData_0[index_0]; + this.elementData_0[index_0] = null; + if (!elements.contains_11rb$((tmp$_3 = element_0) == null || Kotlin.isType(tmp$_3, Any) ? tmp$_3 : throwCCE_0())) { + this.elementData_0[tmp$_4 = newTail, newTail = tmp$_4 + 1 | 0, tmp$_4] = element_0; + } else + modified = true; + } + newTail = this.positiveMod_0(newTail); + for (var index_1 = 0; index_1 < tail; index_1++) { + var element_1 = this.elementData_0[index_1]; + this.elementData_0[index_1] = null; + if (!elements.contains_11rb$((tmp$_5 = element_1) == null || Kotlin.isType(tmp$_5, Any) ? tmp$_5 : throwCCE_0())) { + this.elementData_0[newTail] = element_1; + newTail = this.incremented_0(newTail); + } else { + modified = true; + } + } + } + if (modified) + this.size = this.negativeMod_0(newTail - this.head_0 | 0); + filterInPlace_0$result = modified; + } + while (false); + return filterInPlace_0$result; + }; + ArrayDeque.prototype.retainAll_brywnq$ = function (elements) { + var filterInPlace_0$result; + filterInPlace_0$break: do { + var tmp$, tmp$_0, tmp$_1, tmp$_2, tmp$_3, tmp$_4, tmp$_5; + var tmp$_6 = this.isEmpty(); + if (!tmp$_6) { + tmp$_6 = this.elementData_0.length === 0; + }if (tmp$_6) { + filterInPlace_0$result = false; + break filterInPlace_0$break; + }var tail = this.positiveMod_0(this.head_0 + this.size | 0); + var newTail = this.head_0; + var modified = false; + if (this.head_0 < tail) { + for (var index = this.head_0; index < tail; index++) { + var element = this.elementData_0[index]; + if (elements.contains_11rb$((tmp$ = element) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0())) { + this.elementData_0[tmp$_0 = newTail, newTail = tmp$_0 + 1 | 0, tmp$_0] = element; + } else + modified = true; + } + fill_3(this.elementData_0, null, newTail, tail); + } else { + tmp$_1 = this.head_0; + tmp$_2 = this.elementData_0.length; + for (var index_0 = tmp$_1; index_0 < tmp$_2; index_0++) { + var element_0 = this.elementData_0[index_0]; + this.elementData_0[index_0] = null; + if (elements.contains_11rb$((tmp$_3 = element_0) == null || Kotlin.isType(tmp$_3, Any) ? tmp$_3 : throwCCE_0())) { + this.elementData_0[tmp$_4 = newTail, newTail = tmp$_4 + 1 | 0, tmp$_4] = element_0; + } else + modified = true; + } + newTail = this.positiveMod_0(newTail); + for (var index_1 = 0; index_1 < tail; index_1++) { + var element_1 = this.elementData_0[index_1]; + this.elementData_0[index_1] = null; + if (elements.contains_11rb$((tmp$_5 = element_1) == null || Kotlin.isType(tmp$_5, Any) ? tmp$_5 : throwCCE_0())) { + this.elementData_0[newTail] = element_1; + newTail = this.incremented_0(newTail); + } else { + modified = true; + } + } + } + if (modified) + this.size = this.negativeMod_0(newTail - this.head_0 | 0); + filterInPlace_0$result = modified; + } + while (false); + return filterInPlace_0$result; + }; + ArrayDeque.prototype.filterInPlace_0 = function (predicate) { + var tmp$, tmp$_0, tmp$_1, tmp$_2, tmp$_3, tmp$_4, tmp$_5; + var tmp$_6 = this.isEmpty(); + if (!tmp$_6) { + tmp$_6 = this.elementData_0.length === 0; + }if (tmp$_6) + return false; + var tail = this.positiveMod_0(this.head_0 + this.size | 0); + var newTail = this.head_0; + var modified = false; + if (this.head_0 < tail) { + for (var index = this.head_0; index < tail; index++) { + var element = this.elementData_0[index]; + if (predicate((tmp$ = element) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0())) { + this.elementData_0[tmp$_0 = newTail, newTail = tmp$_0 + 1 | 0, tmp$_0] = element; + } else + modified = true; + } + fill_3(this.elementData_0, null, newTail, tail); + } else { + tmp$_1 = this.head_0; + tmp$_2 = this.elementData_0.length; + for (var index_0 = tmp$_1; index_0 < tmp$_2; index_0++) { + var element_0 = this.elementData_0[index_0]; + this.elementData_0[index_0] = null; + if (predicate((tmp$_3 = element_0) == null || Kotlin.isType(tmp$_3, Any) ? tmp$_3 : throwCCE_0())) { + this.elementData_0[tmp$_4 = newTail, newTail = tmp$_4 + 1 | 0, tmp$_4] = element_0; + } else + modified = true; + } + newTail = this.positiveMod_0(newTail); + for (var index_1 = 0; index_1 < tail; index_1++) { + var element_1 = this.elementData_0[index_1]; + this.elementData_0[index_1] = null; + if (predicate((tmp$_5 = element_1) == null || Kotlin.isType(tmp$_5, Any) ? tmp$_5 : throwCCE_0())) { + this.elementData_0[newTail] = element_1; + newTail = this.incremented_0(newTail); + } else { + modified = true; + } + } + } + if (modified) + this.size = this.negativeMod_0(newTail - this.head_0 | 0); + return modified; + }; + ArrayDeque.prototype.clear = function () { + var tail = this.positiveMod_0(this.head_0 + this.size | 0); + if (this.head_0 < tail) { + fill_3(this.elementData_0, null, this.head_0, tail); + } else { + if (!this.isEmpty()) { + fill_3(this.elementData_0, null, this.head_0, this.elementData_0.length); + fill_3(this.elementData_0, null, 0, tail); + }} + this.head_0 = 0; + this.size = 0; + }; + ArrayDeque.prototype.internalStructure_zgjqsc$ = function (structure) { + var tail = this.positiveMod_0(this.head_0 + this.size | 0); + if (this.isEmpty()) { + structure(this.head_0, []); + return; + }var elements = Kotlin.newArray(this.size, null); + if (this.head_0 < tail) { + arrayCopy(this.elementData_0, elements, 0, this.head_0, tail); + structure(this.head_0, elements); + } else { + var $receiver = this.elementData_0; + arrayCopy($receiver, elements, 0, this.head_0, $receiver.length); + arrayCopy(this.elementData_0, elements, this.elementData_0.length - this.head_0 | 0, 0, tail); + structure(this.head_0 - this.elementData_0.length | 0, elements); + } + }; + ArrayDeque.$metadata$ = {kind: Kind_CLASS, simpleName: 'ArrayDeque', interfaces: [AbstractMutableList]}; + function ArrayDeque_init(initialCapacity, $this) { + $this = $this || Object.create(ArrayDeque.prototype); + AbstractMutableList.call($this); + ArrayDeque.call($this); + var tmp$; + if (initialCapacity === 0) + tmp$ = emptyElementData; + else if (initialCapacity > 0) + tmp$ = Kotlin.newArray(initialCapacity, null); + else + throw IllegalArgumentException_init_0('Illegal Capacity: ' + initialCapacity); + $this.elementData_0 = tmp$; + return $this; + } + function ArrayDeque_init_0($this) { + $this = $this || Object.create(ArrayDeque.prototype); + AbstractMutableList.call($this); + ArrayDeque.call($this); + $this.elementData_0 = emptyElementData; + return $this; + } + function ArrayDeque_init_1(elements, $this) { + $this = $this || Object.create(ArrayDeque.prototype); + AbstractMutableList.call($this); + ArrayDeque.call($this); + $this.elementData_0 = copyToArray(elements); + $this.size = $this.elementData_0.length; + if ($this.elementData_0.length === 0) + $this.elementData_0 = emptyElementData; + return $this; + } function flatten($receiver) { var tmp$; var tmp$_0; @@ -36619,8 +39352,7 @@ var tmp$ = $receiver == null; if (!tmp$) { tmp$ = $receiver.length === 0; - } - return tmp$; + }return tmp$; }); var ifEmpty = defineInlineFunction('kotlin.kotlin.collections.ifEmpty_wfsi02$', function ($receiver, defaultValue) { return $receiver.length === 0 ? defaultValue() : $receiver; @@ -36635,63 +39367,48 @@ var v2 = other[i]; if (v1 === v2) { continue; - } - else if (v1 == null || v2 == null) { + } else if (v1 == null || v2 == null) { return false; - } - if (Kotlin.isArray(v1) && Kotlin.isArray(v2)) { + }if (Kotlin.isArray(v1) && Kotlin.isArray(v2)) { if (!contentDeepEquals(v1, v2)) return false; - } - else if (Kotlin.isByteArray(v1) && Kotlin.isByteArray(v2)) { + } else if (Kotlin.isByteArray(v1) && Kotlin.isByteArray(v2)) { if (!contentEquals(v1, v2)) return false; - } - else if (Kotlin.isShortArray(v1) && Kotlin.isShortArray(v2)) { + } else if (Kotlin.isShortArray(v1) && Kotlin.isShortArray(v2)) { if (!contentEquals(v1, v2)) return false; - } - else if (Kotlin.isIntArray(v1) && Kotlin.isIntArray(v2)) { + } else if (Kotlin.isIntArray(v1) && Kotlin.isIntArray(v2)) { if (!contentEquals(v1, v2)) return false; - } - else if (Kotlin.isLongArray(v1) && Kotlin.isLongArray(v2)) { + } else if (Kotlin.isLongArray(v1) && Kotlin.isLongArray(v2)) { if (!contentEquals(v1, v2)) return false; - } - else if (Kotlin.isFloatArray(v1) && Kotlin.isFloatArray(v2)) { + } else if (Kotlin.isFloatArray(v1) && Kotlin.isFloatArray(v2)) { if (!contentEquals(v1, v2)) return false; - } - else if (Kotlin.isDoubleArray(v1) && Kotlin.isDoubleArray(v2)) { + } else if (Kotlin.isDoubleArray(v1) && Kotlin.isDoubleArray(v2)) { if (!contentEquals(v1, v2)) return false; - } - else if (Kotlin.isCharArray(v1) && Kotlin.isCharArray(v2)) { + } else if (Kotlin.isCharArray(v1) && Kotlin.isCharArray(v2)) { if (!contentEquals(v1, v2)) return false; - } - else if (Kotlin.isBooleanArray(v1) && Kotlin.isBooleanArray(v2)) { + } else if (Kotlin.isBooleanArray(v1) && Kotlin.isBooleanArray(v2)) { if (!contentEquals(v1, v2)) return false; - } - else if (Kotlin.isType(v1, UByteArray) && Kotlin.isType(v2, UByteArray)) { + } else if (Kotlin.isType(v1, UByteArray) && Kotlin.isType(v2, UByteArray)) { if (!contentEquals_2(v1, v2)) return false; - } - else if (Kotlin.isType(v1, UShortArray) && Kotlin.isType(v2, UShortArray)) { + } else if (Kotlin.isType(v1, UShortArray) && Kotlin.isType(v2, UShortArray)) { if (!contentEquals_3(v1, v2)) return false; - } - else if (Kotlin.isType(v1, UIntArray) && Kotlin.isType(v2, UIntArray)) { + } else if (Kotlin.isType(v1, UIntArray) && Kotlin.isType(v2, UIntArray)) { if (!contentEquals_0(v1, v2)) return false; - } - else if (Kotlin.isType(v1, ULongArray) && Kotlin.isType(v2, ULongArray)) { + } else if (Kotlin.isType(v1, ULongArray) && Kotlin.isType(v2, ULongArray)) { if (!contentEquals_1(v1, v2)) return false; - } - else if (!equals(v1, v2)) + } else if (!equals(v1, v2)) return false; } return true; @@ -36704,46 +39421,44 @@ } function contentDeepToStringInternal($receiver, result, processed) { if (processed.contains_11rb$($receiver)) { - result.append_gw00v9$('[...]'); + result.append_61zpoe$('[...]'); return; - } - processed.add_11rb$($receiver); + }processed.add_11rb$($receiver); result.append_s8itvh$(91); for (var i = 0; i !== $receiver.length; ++i) { if (i !== 0) { - result.append_gw00v9$(', '); - } - var element = $receiver[i]; + result.append_61zpoe$(', '); + }var element = $receiver[i]; if (element == null) - result.append_gw00v9$('null'); + result.append_61zpoe$('null'); else if (Kotlin.isArray(element)) contentDeepToStringInternal(element, result, processed); else if (Kotlin.isByteArray(element)) - result.append_gw00v9$(arrayToString(element)); + result.append_61zpoe$(arrayToString(element)); else if (Kotlin.isShortArray(element)) - result.append_gw00v9$(arrayToString(element)); + result.append_61zpoe$(arrayToString(element)); else if (Kotlin.isIntArray(element)) - result.append_gw00v9$(arrayToString(element)); + result.append_61zpoe$(arrayToString(element)); else if (Kotlin.isLongArray(element)) - result.append_gw00v9$(arrayToString(element)); + result.append_61zpoe$(arrayToString(element)); else if (Kotlin.isFloatArray(element)) - result.append_gw00v9$(arrayToString(element)); + result.append_61zpoe$(arrayToString(element)); else if (Kotlin.isDoubleArray(element)) - result.append_gw00v9$(arrayToString(element)); + result.append_61zpoe$(arrayToString(element)); else if (Kotlin.isCharArray(element)) - result.append_gw00v9$(arrayToString(element)); + result.append_61zpoe$(arrayToString(element)); else if (Kotlin.isBooleanArray(element)) - result.append_gw00v9$(arrayToString(element)); + result.append_61zpoe$(arrayToString(element)); else if (Kotlin.isType(element, UByteArray)) - result.append_gw00v9$(contentToString_1(element)); + result.append_61zpoe$(contentToString_1(element)); else if (Kotlin.isType(element, UShortArray)) - result.append_gw00v9$(contentToString_2(element)); + result.append_61zpoe$(contentToString_2(element)); else if (Kotlin.isType(element, UIntArray)) - result.append_gw00v9$(contentToString(element)); + result.append_61zpoe$(contentToString(element)); else if (Kotlin.isType(element, ULongArray)) - result.append_gw00v9$(contentToString_0(element)); + result.append_61zpoe$(contentToString_0(element)); else - result.append_gw00v9$(element.toString()); + result.append_61zpoe$(element.toString()); } result.append_s8itvh$(93); processed.removeAt_za3lpa$(get_lastIndex_12(processed)); @@ -36774,8 +39489,7 @@ function EmptyIterator_getInstance() { if (EmptyIterator_instance === null) { new EmptyIterator(); - } - return EmptyIterator_instance; + }return EmptyIterator_instance; } function EmptyList() { EmptyList_instance = this; @@ -36835,8 +39549,7 @@ function EmptyList_getInstance() { if (EmptyList_instance === null) { new EmptyList(); - } - return EmptyList_instance; + }return EmptyList_instance; } function asCollection($receiver) { return new ArrayAsCollection($receiver, false); @@ -36861,15 +39574,13 @@ if (Kotlin.isType(elements, Collection) && elements.isEmpty()) { all$result = true; break all$break; - } - tmp$ = elements.iterator(); + }tmp$ = elements.iterator(); while (tmp$.hasNext()) { var element = tmp$.next(); if (!this.contains_11rb$(element)) { all$result = false; break all$break; - } - } + }} all$result = true; } while (false); @@ -36939,6 +39650,24 @@ return list; }; })); + var buildList = defineInlineFunction('kotlin.kotlin.collections.buildList_spr6vj$', wrapFunction(function () { + var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; + return function (builderAction) { + var $receiver = ArrayList_init(); + builderAction($receiver); + return $receiver; + }; + })); + var buildList_0 = defineInlineFunction('kotlin.kotlin.collections.buildList_go5l1$', wrapFunction(function () { + var checkBuilderCapacity = _.kotlin.collections.checkBuilderCapacity_za3lpa$; + var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; + return function (capacity, builderAction) { + checkBuilderCapacity(capacity); + var $receiver = ArrayList_init(capacity); + builderAction($receiver); + return $receiver; + }; + })); function get_indices_12($receiver) { return new IntRange(0, $receiver.size - 1 | 0); } @@ -37184,8 +39913,7 @@ var tmp$_0; if (accumulator == null && !destination.containsKey_11rb$(key)) { operation$result = e; - } - else { + } else { operation$result = operation(key, (tmp$_0 = accumulator) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(), e); } destination.put_xwzc9p$(key, operation$result); @@ -37207,8 +39935,7 @@ var tmp$_0; if (accumulator == null && !destination.containsKey_11rb$(key)) { operation$result = e; - } - else { + } else { operation$result = operation(key, (tmp$_0 = accumulator) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(), e); } destination.put_xwzc9p$(key, operation$result); @@ -37388,8 +40115,7 @@ var value = $receiver.get_11rb$(key); if (value == null && !$receiver.containsKey_11rb$(key)) { throw new NoSuchElementException('Key ' + key + ' is missing in the map.'); - } - else { + } else { getOrElseNullable$result = (tmp$ = value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); } return getOrElseNullable$result; @@ -37459,8 +40185,7 @@ var value = $receiver.get_11rb$(key); if (value == null && !$receiver.containsKey_11rb$(key)) { getOrElseNullable$result = this.default_0(key); - } - else { + } else { getOrElseNullable$result = (tmp$ = value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); } return getOrElseNullable$result; @@ -37525,8 +40250,7 @@ var value = $receiver.get_11rb$(key); if (value == null && !$receiver.containsKey_11rb$(key)) { getOrElseNullable$result = this.default_0(key); - } - else { + } else { getOrElseNullable$result = (tmp$ = value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); } return getOrElseNullable$result; @@ -37577,8 +40301,7 @@ function EmptyMap_getInstance() { if (EmptyMap_instance === null) { new EmptyMap(); - } - return EmptyMap_instance; + }return EmptyMap_instance; } function emptyMap() { var tmp$; @@ -37624,16 +40347,25 @@ function linkedMapOf_0(pairs) { return toMap_2(pairs, LinkedHashMap_init_2(mapCapacity(pairs.length))); } - function mapCapacity(expectedSize) { - if (expectedSize < 3) { - return expectedSize + 1 | 0; - } - if (expectedSize < 1073741824) { - return expectedSize + (expectedSize / 3 | 0) | 0; - } - return 2147483647; - } - var INT_MAX_POWER_OF_TWO; + var buildMap = defineInlineFunction('kotlin.kotlin.collections.buildMap_wi666j$', wrapFunction(function () { + var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; + return function (builderAction) { + var $receiver = LinkedHashMap_init(); + builderAction($receiver); + return $receiver; + }; + })); + var buildMap_0 = defineInlineFunction('kotlin.kotlin.collections.buildMap_19avp$', wrapFunction(function () { + var checkBuilderCapacity = _.kotlin.collections.checkBuilderCapacity_za3lpa$; + var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; + var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; + return function (capacity, builderAction) { + checkBuilderCapacity(capacity); + var $receiver = LinkedHashMap_init(mapCapacity(capacity)); + builderAction($receiver); + return $receiver; + }; + })); var isNotEmpty_9 = defineInlineFunction('kotlin.kotlin.collections.isNotEmpty_abgq59$', function ($receiver) { return !$receiver.isEmpty(); }); @@ -37657,7 +40389,7 @@ return (Kotlin.isType(tmp$ = $receiver, Map) ? tmp$ : throwCCE()).containsKey_11rb$(key); }; })); - var get_46 = defineInlineFunction('kotlin.kotlin.collections.get_4pa84t$', wrapFunction(function () { + var get_49 = defineInlineFunction('kotlin.kotlin.collections.get_4pa84t$', wrapFunction(function () { var Map = _.kotlin.collections.Map; var throwCCE = Kotlin.throwCCE; return function ($receiver, key) { @@ -37665,7 +40397,7 @@ return (Kotlin.isType(tmp$ = $receiver, Map) ? tmp$ : throwCCE()).get_11rb$(key); }; })); - var set_19 = defineInlineFunction('kotlin.kotlin.collections.set_6y9eq4$', function ($receiver, key, value) { + var set_20 = defineInlineFunction('kotlin.kotlin.collections.set_6y9eq4$', function ($receiver, key, value) { $receiver.put_xwzc9p$(key, value); }); var containsKey = defineInlineFunction('kotlin.kotlin.collections.containsKey_ysgkzk$', wrapFunction(function () { @@ -37711,8 +40443,7 @@ var value = $receiver.get_11rb$(key); if (value == null && !$receiver.containsKey_11rb$(key)) { return defaultValue(); - } - else { + } else { return (tmp$ = value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); } }; @@ -37727,8 +40458,7 @@ var answer = defaultValue(); $receiver.put_xwzc9p$(key, answer); tmp$ = answer; - } - else { + } else { tmp$ = value; } return tmp$; @@ -37821,8 +40551,7 @@ var entry = tmp$.next(); if (predicate(entry.key)) { result.put_xwzc9p$(entry.key, entry.value); - } - } + }} return result; }; })); @@ -37836,8 +40565,7 @@ var entry = tmp$.next(); if (predicate(entry.value)) { result.put_xwzc9p$(entry.key, entry.value); - } - } + }} return result; }; })); @@ -37848,8 +40576,7 @@ var element = tmp$.next(); if (predicate(element)) { destination.put_xwzc9p$(element.key, element.value); - } - } + }} return destination; }); var filter_16 = defineInlineFunction('kotlin.kotlin.collections.filter_9peqz9$', wrapFunction(function () { @@ -37862,8 +40589,7 @@ var element = tmp$.next(); if (predicate(element)) { destination.put_xwzc9p$(element.key, element.value); - } - } + }} return destination; }; })); @@ -37874,8 +40600,7 @@ var element = tmp$.next(); if (!predicate(element)) { destination.put_xwzc9p$(element.key, element.value); - } - } + }} return destination; }); var filterNot_16 = defineInlineFunction('kotlin.kotlin.collections.filterNot_9peqz9$', wrapFunction(function () { @@ -37888,8 +40613,7 @@ var element = tmp$.next(); if (!predicate(element)) { destination.put_xwzc9p$(element.key, element.value); - } - } + }} return destination; }; })); @@ -37907,8 +40631,7 @@ break; } return tmp$; - } - return optimizeReadOnlyMap(toMap_0($receiver, LinkedHashMap_init())); + }return optimizeReadOnlyMap(toMap_0($receiver, LinkedHashMap_init())); } function toMap_0($receiver, destination) { putAll_0(destination, $receiver); @@ -38024,17 +40747,17 @@ } function minus_12($receiver, keys) { var $receiver_0 = toMutableMap($receiver); - removeAll_2($receiver_0.keys, keys); + removeAll_0($receiver_0.keys, keys); return optimizeReadOnlyMap($receiver_0); } function minus_13($receiver, keys) { var $receiver_0 = toMutableMap($receiver); - removeAll_4($receiver_0.keys, keys); + removeAll_2($receiver_0.keys, keys); return optimizeReadOnlyMap($receiver_0); } function minus_14($receiver, keys) { var $receiver_0 = toMutableMap($receiver); - removeAll_3($receiver_0.keys, keys); + removeAll_1($receiver_0.keys, keys); return optimizeReadOnlyMap($receiver_0); } var minusAssign = defineInlineFunction('kotlin.kotlin.collections.minusAssign_5rmzjt$', function ($receiver, key) { @@ -38091,9 +40814,6 @@ return (Kotlin.isType(tmp$ = $receiver, MutableCollection) ? tmp$ : throwCCE()).retainAll_brywnq$(elements); }; })); - var remove_1 = defineInlineFunction('kotlin.kotlin.collections.remove_tkbrz9$', function ($receiver, index) { - return $receiver.removeAt_za3lpa$(index); - }); var plusAssign_4 = defineInlineFunction('kotlin.kotlin.collections.plusAssign_mohyd4$', function ($receiver, element) { $receiver.add_11rb$(element); }); @@ -38165,10 +40885,45 @@ function addAll_1($receiver, elements) { return $receiver.addAll_brywnq$(asList(elements)); } - function removeAll_0($receiver, predicate) { + function removeAll_0($receiver, elements) { + var elements_0 = convertToSetForSetOperationWith(elements, $receiver); + var tmp$; + return (Kotlin.isType(tmp$ = $receiver, MutableCollection) ? tmp$ : throwCCE()).removeAll_brywnq$(elements_0); + } + function removeAll_1($receiver, elements) { + var set = toHashSet_9(elements); + return !set.isEmpty() && $receiver.removeAll_brywnq$(set); + } + function removeAll_2($receiver, elements) { + return !(elements.length === 0) && $receiver.removeAll_brywnq$(toHashSet(elements)); + } + function retainAll_0($receiver, elements) { + var elements_0 = convertToSetForSetOperationWith(elements, $receiver); + var tmp$; + return (Kotlin.isType(tmp$ = $receiver, MutableCollection) ? tmp$ : throwCCE()).retainAll_brywnq$(elements_0); + } + function retainAll_1($receiver, elements) { + if (!(elements.length === 0)) + return $receiver.retainAll_brywnq$(toHashSet(elements)); + else + return retainNothing($receiver); + } + function retainAll_2($receiver, elements) { + var set = toHashSet_9(elements); + if (!set.isEmpty()) + return $receiver.retainAll_brywnq$(set); + else + return retainNothing($receiver); + } + function retainNothing($receiver) { + var result = !$receiver.isEmpty(); + $receiver.clear(); + return result; + } + function removeAll_3($receiver, predicate) { return filterInPlace($receiver, predicate, true); } - function retainAll_0($receiver, predicate) { + function retainAll_3($receiver, predicate) { return filterInPlace($receiver, predicate, false); } function filterInPlace($receiver, predicate, predicateResultToRemove) { @@ -38178,13 +40933,38 @@ if (predicate($receiver_0.next()) === predicateResultToRemove) { $receiver_0.remove(); result.v = true; - } - return result.v; + }return result.v; } - function removeAll_1($receiver, predicate) { + function shuffled_0($receiver, random) { + var $receiver_0 = toMutableList_8($receiver); + shuffle_0($receiver_0, random); + return $receiver_0; + } + var remove_1 = defineInlineFunction('kotlin.kotlin.collections.remove_tkbrz9$', function ($receiver, index) { + return $receiver.removeAt_za3lpa$(index); + }); + function removeFirst($receiver) { + if ($receiver.isEmpty()) + throw new NoSuchElementException('List is empty.'); + else + return $receiver.removeAt_za3lpa$(0); + } + function removeFirstOrNull($receiver) { + return $receiver.isEmpty() ? null : $receiver.removeAt_za3lpa$(0); + } + function removeLast($receiver) { + if ($receiver.isEmpty()) + throw new NoSuchElementException('List is empty.'); + else + return $receiver.removeAt_za3lpa$(get_lastIndex_12($receiver)); + } + function removeLastOrNull($receiver) { + return $receiver.isEmpty() ? null : $receiver.removeAt_za3lpa$(get_lastIndex_12($receiver)); + } + function removeAll_4($receiver, predicate) { return filterInPlace_0($receiver, predicate, true); } - function retainAll_1($receiver, predicate) { + function retainAll_4($receiver, predicate) { return filterInPlace_0($receiver, predicate, false); } function filterInPlace_0($receiver, predicate, predicateResultToRemove) { @@ -38207,46 +40987,10 @@ for (var removeIndex = tmp$_1; removeIndex >= tmp$_2; removeIndex--) $receiver.removeAt_za3lpa$(removeIndex); return true; - } - else { + } else { return false; } } - function removeAll_2($receiver, elements) { - var elements_0 = convertToSetForSetOperationWith(elements, $receiver); - var tmp$; - return (Kotlin.isType(tmp$ = $receiver, MutableCollection) ? tmp$ : throwCCE()).removeAll_brywnq$(elements_0); - } - function removeAll_3($receiver, elements) { - var set = toHashSet_9(elements); - return !set.isEmpty() && $receiver.removeAll_brywnq$(set); - } - function removeAll_4($receiver, elements) { - return !(elements.length === 0) && $receiver.removeAll_brywnq$(toHashSet(elements)); - } - function retainAll_2($receiver, elements) { - var elements_0 = convertToSetForSetOperationWith(elements, $receiver); - var tmp$; - return (Kotlin.isType(tmp$ = $receiver, MutableCollection) ? tmp$ : throwCCE()).retainAll_brywnq$(elements_0); - } - function retainAll_3($receiver, elements) { - if (!(elements.length === 0)) - return $receiver.retainAll_brywnq$(toHashSet(elements)); - else - return retainNothing($receiver); - } - function retainAll_4($receiver, elements) { - var set = toHashSet_9(elements); - if (!set.isEmpty()) - return $receiver.retainAll_brywnq$(set); - else - return retainNothing($receiver); - } - function retainNothing($receiver) { - var result = !$receiver.isEmpty(); - $receiver.clear(); - return result; - } function shuffle_0($receiver, random) { for (var i = get_lastIndex_12($receiver); i >= 1; i--) { var j = random.nextInt_za3lpa$(i + 1 | 0); @@ -38255,11 +40999,6 @@ $receiver.set_wxm5ur$(j, copy); } } - function shuffled_0($receiver, random) { - var $receiver_0 = toMutableList_8($receiver); - shuffle_0($receiver_0, random); - return $receiver_0; - } function ReversedListReadOnly(delegate) { AbstractList.call(this); this.delegate_0 = delegate; @@ -38398,8 +41137,7 @@ if (ensureNotNull(this.nextIterator_0).hasNext()) { this.state_0 = 2; return true; - } - else { + } else { this.nextIterator_0 = null; } @@ -38535,8 +41273,7 @@ function EmptySequence_getInstance() { if (EmptySequence_instance === null) { new EmptySequence(); - } - return EmptySequence_instance; + }return EmptySequence_instance; } var orEmpty_3 = defineInlineFunction('kotlin.kotlin.sequences.orEmpty_eamxo5$', wrapFunction(function () { var emptySequence = _.kotlin.sequences.emptySequence_287e2$; @@ -38567,8 +41304,7 @@ if (this.result_0 === get_COROUTINE_SUSPENDED()) return get_COROUTINE_SUSPENDED(); continue; - } - else { + } else { this.state_0 = 2; this.result_0 = this.local$$receiver.yieldAll_swo9gw$(this.local$closure$defaultValue(), this); if (this.result_0 === get_COROUTINE_SUSPENDED()) @@ -38587,13 +41323,11 @@ default:this.state_0 = 1; throw new Error('State Machine Unreachable execution'); } - } - catch (e) { + } catch (e) { if (this.state_0 === 1) { this.exceptionState_0 = this.state_0; throw e; - } - else { + } else { this.state_0 = this.exceptionState_0; this.exception_0 = e; } @@ -38631,8 +41365,7 @@ var tmp$; if (Kotlin.isType($receiver, TransformingSequence)) { return (Kotlin.isType(tmp$ = $receiver, TransformingSequence) ? tmp$ : throwCCE_0()).flatten_1tglza$(iterator); - } - return new FlatteningSequence($receiver, flatten$lambda_1, iterator); + }return new FlatteningSequence($receiver, flatten$lambda_1, iterator); } function unzip_1($receiver) { var tmp$; @@ -38666,8 +41399,7 @@ this.nextItem = item; this.nextState = 1; return; - } - } + }} this.nextState = 0; }; FilteringSequence$iterator$ObjectLiteral.prototype.next = function () { @@ -38799,15 +41531,13 @@ while (this.itemIterator == null) { if (!this.iterator.hasNext()) { return false; - } - else { + } else { var element = this.iterator.next(); var nextItemIterator = this.this$FlatteningSequence.iterator_0(this.this$FlatteningSequence.transformer_0(element)); if (nextItemIterator.hasNext()) { this.itemIterator = nextItemIterator; return true; - } - } + }} } return true; }; @@ -38826,16 +41556,13 @@ if (!(this.startIndex_0 >= 0)) { var message = 'startIndex should be non-negative, but is ' + this.startIndex_0; throw IllegalArgumentException_init_0(message.toString()); - } - if (!(this.endIndex_0 >= 0)) { + }if (!(this.endIndex_0 >= 0)) { var message_0 = 'endIndex should be non-negative, but is ' + this.endIndex_0; throw IllegalArgumentException_init_0(message_0.toString()); - } - if (!(this.endIndex_0 >= this.startIndex_0)) { + }if (!(this.endIndex_0 >= this.startIndex_0)) { var message_1 = 'endIndex should be not less than startIndex, but was ' + this.endIndex_0 + ' < ' + this.startIndex_0; throw IllegalArgumentException_init_0(message_1.toString()); - } - } + }} Object.defineProperty(SubSequence.prototype, 'count_0', {get: function () { return this.endIndex_0 - this.startIndex_0 | 0; }}); @@ -38878,8 +41605,7 @@ if (!(this.count_0 >= 0)) { var message = 'count must be non-negative, but was ' + this.count_0 + '.'; throw IllegalArgumentException_init_0(message.toString()); - } - } + }} TakeSequence.prototype.drop_za3lpa$ = function (n) { return n >= this.count_0 ? emptySequence() : new SubSequence(this.sequence_0, n, this.count_0); }; @@ -38921,9 +41647,7 @@ this.nextState = 1; this.nextItem = item; return; - } - } - this.nextState = 0; + }}this.nextState = 0; }; TakeWhileSequence$iterator$ObjectLiteral.prototype.next = function () { var tmp$; @@ -38952,8 +41676,7 @@ if (!(this.count_0 >= 0)) { var message = 'count must be non-negative, but was ' + this.count_0 + '.'; throw IllegalArgumentException_init_0(message.toString()); - } - } + }} DropSequence.prototype.drop_za3lpa$ = function (n) { var n1 = this.count_0 + n | 0; return n1 < 0 ? new DropSequence(this, n) : new DropSequence(this.sequence_0, n1); @@ -39002,8 +41725,7 @@ this.nextItem = item; this.dropState = 1; return; - } - } + }} this.dropState = 0; }; DropWhileSequence$iterator$ObjectLiteral.prototype.next = function () { @@ -39015,8 +41737,7 @@ this.nextItem = null; this.dropState = 0; return result; - } - return this.iterator.next(); + }return this.iterator.next(); }; DropWhileSequence$iterator$ObjectLiteral.prototype.hasNext = function () { if (this.dropState === -1) @@ -39049,8 +41770,7 @@ if (this.observed_0.add_11rb$(key)) { this.setNext_11rb$(next); return; - } - } + }} this.done(); }; DistinctIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'DistinctIterator', interfaces: [AbstractIterator]}; @@ -39145,8 +41865,7 @@ function EmptySet_getInstance() { if (EmptySet_instance === null) { new EmptySet(); - } - return EmptySet_instance; + }return EmptySet_instance; } function emptySet() { return EmptySet_getInstance(); @@ -39187,6 +41906,25 @@ function linkedSetOf_0(elements) { return toCollection(elements, LinkedHashSet_init_3(mapCapacity(elements.length))); } + var buildSet = defineInlineFunction('kotlin.kotlin.collections.buildSet_bu7k9x$', wrapFunction(function () { + var LinkedHashSet_init = _.kotlin.collections.LinkedHashSet_init_287e2$; + return function (builderAction) { + var $receiver = LinkedHashSet_init(); + builderAction($receiver); + return $receiver; + }; + })); + var buildSet_0 = defineInlineFunction('kotlin.kotlin.collections.buildSet_d7vze7$', wrapFunction(function () { + var checkBuilderCapacity = _.kotlin.collections.checkBuilderCapacity_za3lpa$; + var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; + var LinkedHashSet_init = _.kotlin.collections.LinkedHashSet_init_ww73n8$; + return function (capacity, builderAction) { + checkBuilderCapacity(capacity); + var $receiver = LinkedHashSet_init(mapCapacity(capacity)); + builderAction($receiver); + return $receiver; + }; + })); var orEmpty_4 = defineInlineFunction('kotlin.kotlin.collections.orEmpty_og2qkj$', wrapFunction(function () { var emptySet = _.kotlin.collections.emptySet_287e2$; return function ($receiver) { @@ -39213,8 +41951,7 @@ if (!(size > 0 && step > 0)) { var message = size !== step ? 'Both size ' + size + ' and step ' + step + ' must be greater than zero.' : 'size ' + size + ' must be greater than zero.'; throw IllegalArgumentException_init_0(message.toString()); - } - } + }} function windowedSequence$lambda_1(this$windowedSequence, closure$size, closure$step, closure$partialWindows, closure$reuseBuffer) { return function () { return windowedIterator(this$windowedSequence.iterator(), closure$size, closure$step, closure$partialWindows, closure$reuseBuffer); @@ -39224,12 +41961,12 @@ checkWindowSizeStep(size, step); return new Sequence$ObjectLiteral_4(windowedSequence$lambda_1($receiver, size, step, partialWindows, reuseBuffer)); } - function Coroutine$windowedIterator$lambda(closure$step_0, closure$size_0, closure$iterator_0, closure$reuseBuffer_0, closure$partialWindows_0, $receiver_0, controller, continuation_0) { + function Coroutine$windowedIterator$lambda(closure$size_0, closure$step_0, closure$iterator_0, closure$reuseBuffer_0, closure$partialWindows_0, $receiver_0, controller, continuation_0) { CoroutineImpl.call(this, continuation_0); this.$controller = controller; this.exceptionState_0 = 1; - this.local$closure$step = closure$step_0; this.local$closure$size = closure$size_0; + this.local$closure$step = closure$step_0; this.local$closure$iterator = closure$iterator_0; this.local$closure$reuseBuffer = closure$reuseBuffer_0; this.local$closure$partialWindows = closure$partialWindows_0; @@ -39250,16 +41987,16 @@ try { switch (this.state_0) { case 0: + var bufferInitialCapacity = coerceAtMost_2(this.local$closure$size, 1024); this.local$gap = this.local$closure$step - this.local$closure$size | 0; if (this.local$gap >= 0) { - this.local$buffer = ArrayList_init_0(this.local$closure$size); + this.local$buffer = ArrayList_init_0(bufferInitialCapacity); this.local$skip = 0; this.local$tmp$ = this.local$closure$iterator; - this.state_0 = 12; + this.state_0 = 13; continue; - } - else { - this.local$buffer_0 = new RingBuffer(this.local$closure$size); + } else { + this.local$buffer_0 = RingBuffer_init(bufferInitialCapacity); this.local$tmp$_0 = this.local$closure$iterator; this.state_0 = 2; continue; @@ -39269,167 +42006,164 @@ throw this.exception_0; case 2: if (!this.local$tmp$_0.hasNext()) { - this.state_0 = 5; + this.state_0 = 6; continue; } - var e_0 = this.local$tmp$_0.next(); this.local$buffer_0.add_11rb$(e_0); if (this.local$buffer_0.isFull()) { - this.state_0 = 3; - this.result_0 = this.local$$receiver.yield_11rb$(this.local$closure$reuseBuffer ? this.local$buffer_0 : ArrayList_init_1(this.local$buffer_0), this); - if (this.result_0 === get_COROUTINE_SUSPENDED()) - return get_COROUTINE_SUSPENDED(); - continue; - } - else { - this.state_0 = 4; + if (this.local$buffer_0.size < this.local$closure$size) { + this.local$buffer_0 = this.local$buffer_0.expanded_za3lpa$(this.local$closure$size); + this.state_0 = 2; + continue; + } else { + this.state_0 = 3; + continue; + } + } else { + this.state_0 = 5; continue; } case 3: - this.local$buffer_0.removeFirst_za3lpa$(this.local$closure$step); this.state_0 = 4; + this.result_0 = this.local$$receiver.yield_11rb$(this.local$closure$reuseBuffer ? this.local$buffer_0 : ArrayList_init_1(this.local$buffer_0), this); + if (this.result_0 === get_COROUTINE_SUSPENDED()) + return get_COROUTINE_SUSPENDED(); continue; case 4: - this.state_0 = 2; + this.local$buffer_0.removeFirst_za3lpa$(this.local$closure$step); + this.state_0 = 5; continue; case 5: + this.state_0 = 2; + continue; + case 6: if (this.local$closure$partialWindows) { - this.state_0 = 6; + this.state_0 = 7; continue; - } - else { - this.state_0 = 11; + } else { + this.state_0 = 12; continue; } - case 6: + case 7: if (this.local$buffer_0.size <= this.local$closure$step) { - this.state_0 = 8; + this.state_0 = 9; continue; } - - this.state_0 = 7; + this.state_0 = 8; this.result_0 = this.local$$receiver.yield_11rb$(this.local$closure$reuseBuffer ? this.local$buffer_0 : ArrayList_init_1(this.local$buffer_0), this); if (this.result_0 === get_COROUTINE_SUSPENDED()) return get_COROUTINE_SUSPENDED(); continue; - case 7: + case 8: this.local$buffer_0.removeFirst_za3lpa$(this.local$closure$step); - this.state_0 = 6; + this.state_0 = 7; continue; - case 8: + case 9: if (!this.local$buffer_0.isEmpty()) { - this.state_0 = 9; + this.state_0 = 10; this.result_0 = this.local$$receiver.yield_11rb$(this.local$buffer_0, this); if (this.result_0 === get_COROUTINE_SUSPENDED()) return get_COROUTINE_SUSPENDED(); continue; - } - else { - this.state_0 = 10; + } else { + this.state_0 = 11; continue; } - case 9: - return Unit; case 10: - this.state_0 = 11; - continue; + return Unit; case 11: - this.state_0 = 20; + this.state_0 = 12; continue; case 12: + this.state_0 = 21; + continue; + case 13: if (!this.local$tmp$.hasNext()) { - this.state_0 = 16; + this.state_0 = 17; continue; } - this.local$e = this.local$tmp$.next(); if (this.local$skip > 0) { this.local$skip = this.local$skip - 1 | 0; - this.state_0 = 12; - continue; - } - else { this.state_0 = 13; continue; + } else { + this.state_0 = 14; + continue; } - case 13: + case 14: this.local$buffer.add_11rb$(this.local$e); if (this.local$buffer.size === this.local$closure$size) { - this.state_0 = 14; + this.state_0 = 15; this.result_0 = this.local$$receiver.yield_11rb$(this.local$buffer, this); if (this.result_0 === get_COROUTINE_SUSPENDED()) return get_COROUTINE_SUSPENDED(); continue; - } - else { - this.state_0 = 15; + } else { + this.state_0 = 16; continue; } - case 14: + case 15: if (this.local$closure$reuseBuffer) this.local$buffer.clear(); else this.local$buffer = ArrayList_init_0(this.local$closure$size); this.local$skip = this.local$gap; - this.state_0 = 15; - continue; - case 15: - this.state_0 = 12; + this.state_0 = 16; continue; case 16: + this.state_0 = 13; + continue; + case 17: if (!this.local$buffer.isEmpty()) { if (this.local$closure$partialWindows || this.local$buffer.size === this.local$closure$size) { - this.state_0 = 17; + this.state_0 = 18; this.result_0 = this.local$$receiver.yield_11rb$(this.local$buffer, this); if (this.result_0 === get_COROUTINE_SUSPENDED()) return get_COROUTINE_SUSPENDED(); continue; - } - else { - this.state_0 = 18; + } else { + this.state_0 = 19; continue; } - } - else { - this.state_0 = 19; + } else { + this.state_0 = 20; continue; } - case 17: - return Unit; case 18: - this.state_0 = 19; - continue; + return Unit; case 19: this.state_0 = 20; continue; case 20: + this.state_0 = 21; + continue; + case 21: return Unit; default:this.state_0 = 1; throw new Error('State Machine Unreachable execution'); } - } - catch (e) { + } catch (e) { if (this.state_0 === 1) { this.exceptionState_0 = this.state_0; throw e; - } - else { + } else { this.state_0 = this.exceptionState_0; this.exception_0 = e; } } while (true); }; - function windowedIterator$lambda(closure$step_0, closure$size_0, closure$iterator_0, closure$reuseBuffer_0, closure$partialWindows_0) { + function windowedIterator$lambda(closure$size_0, closure$step_0, closure$iterator_0, closure$reuseBuffer_0, closure$partialWindows_0) { return function ($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$windowedIterator$lambda(closure$step_0, closure$size_0, closure$iterator_0, closure$reuseBuffer_0, closure$partialWindows_0, $receiver_0, this, continuation_0); + var instance = new Coroutine$windowedIterator$lambda(closure$size_0, closure$step_0, closure$iterator_0, closure$reuseBuffer_0, closure$partialWindows_0, $receiver_0, this, continuation_0); if (suspended) return instance; else @@ -39439,7 +42173,7 @@ function windowedIterator(iterator, size, step, partialWindows, reuseBuffer) { if (!iterator.hasNext()) return EmptyIterator_getInstance(); - return iterator_3(windowedIterator$lambda(step, size, iterator, reuseBuffer, partialWindows)); + return iterator_3(windowedIterator$lambda(size, step, iterator, reuseBuffer, partialWindows)); } function MovingSubList(list) { AbstractList.call(this); @@ -39460,16 +42194,18 @@ return this._size_0; }}); MovingSubList.$metadata$ = {kind: Kind_CLASS, simpleName: 'MovingSubList', interfaces: [RandomAccess, AbstractList]}; - function RingBuffer(capacity) { + function RingBuffer(buffer, filledSize) { AbstractList.call(this); - this.capacity = capacity; - if (!(this.capacity >= 0)) { - var message = 'ring buffer capacity should not be negative but it is ' + this.capacity; + this.buffer_0 = buffer; + if (!(filledSize >= 0)) { + var message = 'ring buffer filled size should not be negative but it is ' + filledSize; throw IllegalArgumentException_init_0(message.toString()); - } - this.buffer_0 = Kotlin.newArray(this.capacity, null); + }if (!(filledSize <= this.buffer_0.length)) { + var message_0 = 'ring buffer filled size: ' + filledSize + ' cannot be larger than the buffer size: ' + this.buffer_0.length; + throw IllegalArgumentException_init_0(message_0.toString()); + }this.capacity_0 = this.buffer_0.length; this.startIndex_0 = 0; - this.size_4goa01$_0 = 0; + this.size_4goa01$_0 = filledSize; } Object.defineProperty(RingBuffer.prototype, 'size', {get: function () { return this.size_4goa01$_0; @@ -39479,10 +42215,10 @@ RingBuffer.prototype.get_za3lpa$ = function (index) { var tmp$; AbstractList$Companion_getInstance().checkElementIndex_6xvm5r$(index, this.size); - return (tmp$ = this.buffer_0[(this.startIndex_0 + index | 0) % this.capacity]) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); + return (tmp$ = this.buffer_0[(this.startIndex_0 + index | 0) % this.capacity_0]) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); }; RingBuffer.prototype.isFull = function () { - return this.size === this.capacity; + return this.size === this.capacity_0; }; function RingBuffer$iterator$ObjectLiteral(this$RingBuffer) { this.this$RingBuffer = this$RingBuffer; @@ -39494,10 +42230,9 @@ var tmp$; if (this.count_0 === 0) { this.done(); - } - else { + } else { this.setNext_11rb$((tmp$ = this.this$RingBuffer.buffer_0[this.index_0]) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0()); - this.index_0 = (this.index_0 + 1 | 0) % this.this$RingBuffer.capacity; + this.index_0 = (this.index_0 + 1 | 0) % this.this$RingBuffer.capacity_0; this.count_0 = this.count_0 - 1 | 0; } }; @@ -39511,7 +42246,7 @@ var size = this.size; var widx = 0; var idx = this.startIndex_0; - while (widx < size && idx < this.capacity) { + while (widx < size && idx < this.capacity_0) { result[widx] = (tmp$_0 = this.buffer_0[idx]) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE_0(); widx = widx + 1 | 0; idx = idx + 1 | 0; @@ -39529,49 +42264,45 @@ RingBuffer.prototype.toArray = function () { return this.toArray_ro6dgy$(Kotlin.newArray(this.size, null)); }; + RingBuffer.prototype.expanded_za3lpa$ = function (maxCapacity) { + var newCapacity = coerceAtMost_2(this.capacity_0 + (this.capacity_0 >> 1) + 1 | 0, maxCapacity); + var newBuffer = this.startIndex_0 === 0 ? copyOf_24(this.buffer_0, newCapacity) : this.toArray_ro6dgy$(Kotlin.newArray(newCapacity, null)); + return new RingBuffer(newBuffer, this.size); + }; RingBuffer.prototype.add_11rb$ = function (element) { if (this.isFull()) { throw IllegalStateException_init_0('ring buffer is full'); - } - this.buffer_0[(this.startIndex_0 + this.size | 0) % this.capacity] = element; + }this.buffer_0[(this.startIndex_0 + this.size | 0) % this.capacity_0] = element; this.size = this.size + 1 | 0; }; RingBuffer.prototype.removeFirst_za3lpa$ = function (n) { if (!(n >= 0)) { var message = "n shouldn't be negative but it is " + n; throw IllegalArgumentException_init_0(message.toString()); - } - if (!(n <= this.size)) { + }if (!(n <= this.size)) { var message_0 = "n shouldn't be greater than the buffer size: n = " + n + ', size = ' + this.size; throw IllegalArgumentException_init_0(message_0.toString()); - } - if (n > 0) { + }if (n > 0) { var start = this.startIndex_0; - var end = (start + n | 0) % this.capacity; + var end = (start + n | 0) % this.capacity_0; if (start > end) { - this.fill_0(this.buffer_0, null, start, this.capacity); - this.fill_0(this.buffer_0, null, 0, end); - } - else { - this.fill_0(this.buffer_0, null, start, end); + fill_3(this.buffer_0, null, start, this.capacity_0); + fill_3(this.buffer_0, null, 0, end); + } else { + fill_3(this.buffer_0, null, start, end); } this.startIndex_0 = end; this.size = this.size - n | 0; - } - }; + }}; RingBuffer.prototype.forward_0 = function ($receiver, n) { - return ($receiver + n | 0) % this.capacity; - }; - RingBuffer.prototype.fill_0 = function ($receiver, element, fromIndex, toIndex) { - if (fromIndex === void 0) - fromIndex = 0; - if (toIndex === void 0) - toIndex = $receiver.length; - for (var idx = fromIndex; idx < toIndex; idx++) { - $receiver[idx] = element; - } + return ($receiver + n | 0) % this.capacity_0; }; RingBuffer.$metadata$ = {kind: Kind_CLASS, simpleName: 'RingBuffer', interfaces: [RandomAccess, AbstractList]}; + function RingBuffer_init(capacity, $this) { + $this = $this || Object.create(RingBuffer.prototype); + RingBuffer.call($this, Kotlin.newArray(capacity, null), 0); + return $this; + } function partition_12(array, left, right) { var i = left; var j = right; @@ -39589,8 +42320,7 @@ array.set_2c6cbe$(j, tmp); i = i + 1 | 0; j = j - 1 | 0; - } - } + }} return i; } function quickSort(array, left, right) { @@ -39617,8 +42347,7 @@ array.set_1pe3u2$(j, tmp); i = i + 1 | 0; j = j - 1 | 0; - } - } + }} return i; } function quickSort_0(array, left, right) { @@ -39645,8 +42374,7 @@ array.set_6sqrdv$(j, tmp); i = i + 1 | 0; j = j - 1 | 0; - } - } + }} return i; } function quickSort_1(array, left, right) { @@ -39673,8 +42401,7 @@ array.set_2ccimm$(j, tmp); i = i + 1 | 0; j = j - 1 | 0; - } - } + }} return i; } function quickSort_2(array, left, right) { @@ -39707,8 +42434,7 @@ if (!(selectors.length > 0)) { var message = 'Failed requirement.'; throw IllegalArgumentException_init_0(message.toString()); - } - return compareValuesByImpl(a, b, selectors); + }return compareValuesByImpl(a, b, selectors); } function compareValuesByImpl(a, b, selectors) { var tmp$; @@ -39750,8 +42476,7 @@ if (!(selectors.length > 0)) { var message = 'Failed requirement.'; throw IllegalArgumentException_init_0(message.toString()); - } - return new Comparator$ObjectLiteral_1(compareBy$lambda(selectors)); + }return new Comparator$ObjectLiteral_1(compareBy$lambda(selectors)); } var compareBy_0 = defineInlineFunction('kotlin.kotlin.comparisons.compareBy_34mekm$', wrapFunction(function () { var wrapFunction = Kotlin.wrapFunction; @@ -40086,8 +42811,7 @@ function NaturalOrderComparator_getInstance() { if (NaturalOrderComparator_instance === null) { new NaturalOrderComparator(); - } - return NaturalOrderComparator_instance; + }return NaturalOrderComparator_instance; } function ReverseOrderComparator() { ReverseOrderComparator_instance = this; @@ -40103,8 +42827,7 @@ function ReverseOrderComparator_getInstance() { if (ReverseOrderComparator_instance === null) { new ReverseOrderComparator(); - } - return ReverseOrderComparator_instance; + }return ReverseOrderComparator_instance; } function ExperimentalContracts() { } @@ -40280,17 +43003,20 @@ function ContinuationInterceptor$Key_getInstance() { if (ContinuationInterceptor$Key_instance === null) { new ContinuationInterceptor$Key(); - } - return ContinuationInterceptor$Key_instance; + }return ContinuationInterceptor$Key_instance; } ContinuationInterceptor.prototype.releaseInterceptedContinuation_k98bjh$ = function (continuation) { }; ContinuationInterceptor.prototype.get_j3r2sn$ = function (key) { - var tmp$; - return key === ContinuationInterceptor$Key_getInstance() ? Kotlin.isType(tmp$ = this, CoroutineContext$Element) ? tmp$ : throwCCE_0() : null; + var tmp$, tmp$_0; + if (Kotlin.isType(key, AbstractCoroutineContextKey)) { + return key.isSubKey_i2ksv9$(this.key) ? Kotlin.isType(tmp$ = key.tryCast_m1180o$(this), CoroutineContext$Element) ? tmp$ : null : null; + }return ContinuationInterceptor$Key_getInstance() === key ? Kotlin.isType(tmp$_0 = this, CoroutineContext$Element) ? tmp$_0 : throwCCE_0() : null; }; ContinuationInterceptor.prototype.minusKey_yeqjby$ = function (key) { - return key === ContinuationInterceptor$Key_getInstance() ? EmptyCoroutineContext_getInstance() : this; + if (Kotlin.isType(key, AbstractCoroutineContextKey)) { + return key.isSubKey_i2ksv9$(this.key) && key.tryCast_m1180o$(this) != null ? EmptyCoroutineContext_getInstance() : this; + }return ContinuationInterceptor$Key_getInstance() === key ? EmptyCoroutineContext_getInstance() : this; }; ContinuationInterceptor.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'ContinuationInterceptor', interfaces: [CoroutineContext$Element]}; function CoroutineContext() { @@ -40336,6 +43062,28 @@ return this.key_no4tas$_0; }}); AbstractCoroutineContextElement.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractCoroutineContextElement', interfaces: [CoroutineContext$Element]}; + function AbstractCoroutineContextKey(baseKey, safeCast) { + this.safeCast_9rw4bk$_0 = safeCast; + this.topmostKey_3x72pn$_0 = Kotlin.isType(baseKey, AbstractCoroutineContextKey) ? baseKey.topmostKey_3x72pn$_0 : baseKey; + } + AbstractCoroutineContextKey.prototype.tryCast_m1180o$ = function (element) { + return this.safeCast_9rw4bk$_0(element); + }; + AbstractCoroutineContextKey.prototype.isSubKey_i2ksv9$ = function (key) { + return key === this || this.topmostKey_3x72pn$_0 === key; + }; + AbstractCoroutineContextKey.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractCoroutineContextKey', interfaces: [CoroutineContext$Key]}; + function getPolymorphicElement($receiver, key) { + var tmp$, tmp$_0; + if (Kotlin.isType(key, AbstractCoroutineContextKey)) { + return key.isSubKey_i2ksv9$($receiver.key) ? Kotlin.isType(tmp$ = key.tryCast_m1180o$($receiver), CoroutineContext$Element) ? tmp$ : null : null; + }return $receiver.key === key ? Kotlin.isType(tmp$_0 = $receiver, CoroutineContext$Element) ? tmp$_0 : throwCCE_0() : null; + } + function minusPolymorphicKey($receiver, key) { + if (Kotlin.isType(key, AbstractCoroutineContextKey)) { + return key.isSubKey_i2ksv9$($receiver.key) && key.tryCast_m1180o$($receiver) != null ? EmptyCoroutineContext_getInstance() : $receiver; + }return $receiver.key === key ? EmptyCoroutineContext_getInstance() : $receiver; + } function EmptyCoroutineContext() { EmptyCoroutineContext_instance = this; this.serialVersionUID_0 = L0; @@ -40366,8 +43114,7 @@ function EmptyCoroutineContext_getInstance() { if (EmptyCoroutineContext_instance === null) { new EmptyCoroutineContext(); - } - return EmptyCoroutineContext_instance; + }return EmptyCoroutineContext_instance; } function CombinedContext(left, element) { this.left_0 = left; @@ -40379,12 +43126,10 @@ while (true) { if ((tmp$ = cur.element_0.get_j3r2sn$(key)) != null) { return tmp$; - } - var next = cur.left_0; + }var next = cur.left_0; if (Kotlin.isType(next, CombinedContext)) { cur = next; - } - else { + } else { return next.get_j3r2sn$(key); } } @@ -40396,8 +43141,7 @@ var tmp$; if (this.element_0.get_j3r2sn$(key) != null) { return this.left_0; - } - var newLeft = this.left_0.minusKey_yeqjby$(key); + }var newLeft = this.left_0.minusKey_yeqjby$(key); if (newLeft === this.left_0) tmp$ = this; else if (newLeft === EmptyCoroutineContext_getInstance()) @@ -40414,8 +43158,7 @@ tmp$_0 = Kotlin.isType(tmp$ = cur.left_0, CombinedContext) ? tmp$ : null; if (tmp$_0 == null) { return size; - } - cur = tmp$_0; + }cur = tmp$_0; size = size + 1 | 0; } }; @@ -40431,8 +43174,7 @@ var next = cur.left_0; if (Kotlin.isType(next, CombinedContext)) { cur = next; - } - else { + } else { return this.contains_0(Kotlin.isType(tmp$ = next, CoroutineContext$Element) ? tmp$ : throwCCE_0()); } } @@ -40465,8 +43207,7 @@ if (!(index.v === n)) { var message = 'Check failed.'; throw IllegalStateException_init_0(message.toString()); - } - return new CombinedContext$Serialized(Kotlin.isArray(tmp$ = elements) ? tmp$ : throwCCE_0()); + }return new CombinedContext$Serialized(Kotlin.isArray(tmp$ = elements) ? tmp$ : throwCCE_0()); }; function CombinedContext$Serialized(elements) { CombinedContext$Serialized$Companion_getInstance(); @@ -40481,8 +43222,7 @@ function CombinedContext$Serialized$Companion_getInstance() { if (CombinedContext$Serialized$Companion_instance === null) { new CombinedContext$Serialized$Companion(); - } - return CombinedContext$Serialized$Companion_instance; + }return CombinedContext$Serialized$Companion_instance; } CombinedContext$Serialized.prototype.readResolve_0 = function () { var $receiver = this.elements; @@ -40735,8 +43475,7 @@ function Delegates_getInstance() { if (Delegates_instance === null) { new Delegates(); - } - return Delegates_instance; + }return Delegates_instance; } function NotNullVar() { this.value_0 = null; @@ -40746,8 +43485,7 @@ tmp$ = this.value_0; if (tmp$ == null) { throw IllegalStateException_init_0('Property ' + property.callableName + ' should be initialized before get.'); - } - return tmp$; + }return tmp$; }; NotNullVar.prototype.setValue_9rddgb$ = function (thisRef, property, value) { this.value_0 = value; @@ -40774,8 +43512,7 @@ var oldValue = this.value_kuqkmn$_0; if (!this.beforeChange_jxtfl0$(property, oldValue, value)) { return; - } - this.value_kuqkmn$_0 = value; + }this.value_kuqkmn$_0 = value; this.afterChange_jxtfl0$(property, oldValue, value); }; ObservableProperty.$metadata$ = {kind: Kind_CLASS, simpleName: 'ObservableProperty', interfaces: [ReadWriteProperty]}; @@ -40796,8 +43533,7 @@ if ((n & (-n | 0)) === n) { var bitCount = fastLog2(n); tmp$ = this.nextBits_za3lpa$(bitCount); - } - else { + } else { var v; do { var bits = this.nextInt() >>> 1; @@ -40808,8 +43544,7 @@ } var rnd = tmp$; return from + rnd | 0; - } - else { + } else { while (true) { var rnd_0 = this.nextInt(); if (from <= rnd_0 && rnd_0 < until) @@ -40835,16 +43570,14 @@ if (nLow !== 0) { var bitCount = fastLog2(nLow); tmp$ = Kotlin.Long.fromInt(this.nextBits_za3lpa$(bitCount)).and(L4294967295); - } - else if (nHigh === 1) + } else if (nHigh === 1) tmp$ = Kotlin.Long.fromInt(this.nextInt()).and(L4294967295); else { var bitCount_0 = fastLog2(nHigh); tmp$ = Kotlin.Long.fromInt(this.nextBits_za3lpa$(bitCount_0)).shiftLeft(32).add(Kotlin.Long.fromInt(this.nextInt())); } rnd = tmp$; - } - else { + } else { var v; do { var bits = this.nextLong().shiftRightUnsigned(1); @@ -40854,8 +43587,7 @@ rnd = v; } return from.add(rnd); - } - else { + } else { while (true) { var rnd_0 = this.nextLong(); if (from.lessThanOrEqual(rnd_0) && rnd_0.lessThan(until)) @@ -40879,8 +43611,7 @@ if (isInfinite(size) && isFinite(from) && isFinite(until)) { var r1 = this.nextDouble() * (until / 2 - from / 2); tmp$ = from + r1 + r1; - } - else { + } else { tmp$ = from + this.nextDouble() * size; } var r = tmp$; @@ -40898,12 +43629,10 @@ if (!(0 <= fromIndex && fromIndex <= array.length ? 0 <= toIndex && toIndex <= array.length : false)) { var message = Random$nextBytes$lambda(fromIndex, toIndex, array)(); throw IllegalArgumentException_init_0(message.toString()); - } - if (!(fromIndex <= toIndex)) { + }if (!(fromIndex <= toIndex)) { var message_0 = 'fromIndex (' + fromIndex + ') must be not greater than toIndex (' + toIndex + ').'; throw IllegalArgumentException_init_0(message_0.toString()); - } - var steps = (toIndex - fromIndex | 0) / 4 | 0; + }var steps = (toIndex - fromIndex | 0) / 4 | 0; var position = {v: fromIndex}; for (var index = 0; index < steps; index++) { var v = this.nextInt(); @@ -40989,8 +43718,7 @@ function Random$Default_getInstance() { if (Random$Default_instance === null) { new Random$Default(); - } - return Random$Default_instance; + }return Random$Default_instance; } function Random$Companion() { Random$Companion_instance = this; @@ -41004,8 +43732,7 @@ function Random$Companion_getInstance() { if (Random$Companion_instance === null) { new Random$Companion(); - } - return Random$Companion_instance; + }return Random$Companion_instance; } Random.$metadata$ = {kind: Kind_CLASS, simpleName: 'Random', interfaces: []}; function Random_0(seed) { @@ -41028,12 +43755,15 @@ if (range.isEmpty()) throw IllegalArgumentException_init_0('Cannot get random in empty range: ' + range); else if (range.last.compareTo_11rb$(Long$Companion$MAX_VALUE) < 0) - return $receiver.nextLong_3pjtqy$(range.start, range.endInclusive.add(Kotlin.Long.fromInt(1))); - else if (range.start.compareTo_11rb$(Long$Companion$MIN_VALUE) > 0) - return $receiver.nextLong_3pjtqy$(range.start.subtract(Kotlin.Long.fromInt(1)), range.endInclusive).add(Kotlin.Long.fromInt(1)); + return $receiver.nextLong_3pjtqy$(range.first, range.last.add(Kotlin.Long.fromInt(1))); + else if (range.first.compareTo_11rb$(Long$Companion$MIN_VALUE) > 0) + return $receiver.nextLong_3pjtqy$(range.first.subtract(Kotlin.Long.fromInt(1)), range.last).add(Kotlin.Long.fromInt(1)); else return $receiver.nextLong(); } + function fastLog2(value) { + return 31 - Math_0.clz32(value) | 0; + } function takeUpperBits($receiver, bitCount) { return $receiver >>> 32 - bitCount & (-bitCount | 0) >> 31; } @@ -41041,20 +43771,17 @@ if (!(until > from)) { var message = boundsErrorMessage(from, until); throw IllegalArgumentException_init_0(message.toString()); - } - } + }} function checkRangeBounds_0(from, until) { if (!(until.compareTo_11rb$(from) > 0)) { var message = boundsErrorMessage(from, until); throw IllegalArgumentException_init_0(message.toString()); - } - } + }} function checkRangeBounds_1(from, until) { if (!(until > from)) { var message = boundsErrorMessage(from, until); throw IllegalArgumentException_init_0(message.toString()); - } - } + }} function boundsErrorMessage(from, until) { return 'Random range is empty: [' + from.toString() + ', ' + until.toString() + ').'; } @@ -41077,12 +43804,10 @@ else { if (uintCompare(range.last.data, UInt$Companion_getInstance().MAX_VALUE.data) < 0) { return nextUInt_1($receiver, range.first, new UInt(range.last.data + (new UInt(1)).data | 0)); - } - else { + } else { if (uintCompare(range.first.data, UInt$Companion_getInstance().MIN_VALUE.data) > 0) { return new UInt(nextUInt_1($receiver, new UInt(range.first.data - (new UInt(1)).data | 0), range.last).data + (new UInt(1)).data | 0); - } - else + } else return nextUInt($receiver); } } @@ -41106,12 +43831,10 @@ else { if (ulongCompare(range.last.data, ULong$Companion_getInstance().MAX_VALUE.data) < 0) { return nextULong_1($receiver, range.first, new ULong(range.last.data.add((new ULong(Kotlin.Long.fromInt((new UInt(1)).data).and(L4294967295))).data))); - } - else { + } else { if (ulongCompare(range.first.data, ULong$Companion_getInstance().MIN_VALUE.data) > 0) { return new ULong(nextULong_1($receiver, new ULong(range.first.data.subtract((new ULong(Kotlin.Long.fromInt((new UInt(1)).data).and(L4294967295))).data)), range.last).data.add((new ULong(Kotlin.Long.fromInt((new UInt(1)).data).and(L4294967295))).data)); - } - else + } else return nextULong($receiver); } } @@ -41135,14 +43858,12 @@ if (!(uintCompare(until.data, from.data) > 0)) { var message = boundsErrorMessage(from, until); throw IllegalArgumentException_init_0(message.toString()); - } - } + }} function checkULongRangeBounds(from, until) { if (!(ulongCompare(until.data, from.data) > 0)) { var message = boundsErrorMessage(from, until); throw IllegalArgumentException_init_0(message.toString()); - } - } + }} function XorWowRandom(x, y, z, w, v, addend) { Random.call(this); this.x_0 = x; @@ -41154,8 +43875,7 @@ if (!((this.x_0 | this.y_0 | this.z_0 | this.w_0 | this.v_0) !== 0)) { var message = 'Initial state must have at least one non-zero element.'; throw IllegalArgumentException_init_0(message.toString()); - } - for (var index = 0; index < 64; index++) { + }for (var index = 0; index < 64; index++) { this.nextInt(); } } @@ -41181,15 +43901,6 @@ XorWowRandom.call($this, seed1, seed2, 0, 0, ~seed1, seed1 << 10 ^ seed2 >>> 4); return $this; } - function ClosedFloatingPointRange() { - } - ClosedFloatingPointRange.prototype.contains_mef7kx$ = function (value) { - return this.lessThanOrEquals_n65qkk$(this.start, value) && this.lessThanOrEquals_n65qkk$(value, this.endInclusive); - }; - ClosedFloatingPointRange.prototype.isEmpty = function () { - return !this.lessThanOrEquals_n65qkk$(this.start, this.endInclusive); - }; - ClosedFloatingPointRange.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'ClosedFloatingPointRange', interfaces: [ClosedRange]}; function ComparableRange(start, endInclusive) { this.start_p1gsmm$_0 = start; this.endInclusive_jj4lf7$_0 = endInclusive; @@ -41210,6 +43921,18 @@ return this.start.toString() + '..' + this.endInclusive; }; ComparableRange.$metadata$ = {kind: Kind_CLASS, simpleName: 'ComparableRange', interfaces: [ClosedRange]}; + function rangeTo($receiver, that) { + return new ComparableRange($receiver, that); + } + function ClosedFloatingPointRange() { + } + ClosedFloatingPointRange.prototype.contains_mef7kx$ = function (value) { + return this.lessThanOrEquals_n65qkk$(this.start, value) && this.lessThanOrEquals_n65qkk$(value, this.endInclusive); + }; + ClosedFloatingPointRange.prototype.isEmpty = function () { + return !this.lessThanOrEquals_n65qkk$(this.start, this.endInclusive); + }; + ClosedFloatingPointRange.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'ClosedFloatingPointRange', interfaces: [ClosedRange]}; function ClosedDoubleRange(start, endInclusive) { this._start_0 = start; this._endInclusive_0 = endInclusive; @@ -41240,10 +43963,39 @@ }; ClosedDoubleRange.$metadata$ = {kind: Kind_CLASS, simpleName: 'ClosedDoubleRange', interfaces: [ClosedFloatingPointRange]}; function rangeTo_0($receiver, that) { - return new ComparableRange($receiver, that); + return new ClosedDoubleRange($receiver, that); + } + function ClosedFloatRange(start, endInclusive) { + this._start_0 = start; + this._endInclusive_0 = endInclusive; } + Object.defineProperty(ClosedFloatRange.prototype, 'start', {get: function () { + return this._start_0; + }}); + Object.defineProperty(ClosedFloatRange.prototype, 'endInclusive', {get: function () { + return this._endInclusive_0; + }}); + ClosedFloatRange.prototype.lessThanOrEquals_n65qkk$ = function (a, b) { + return a <= b; + }; + ClosedFloatRange.prototype.contains_mef7kx$ = function (value) { + return value >= this._start_0 && value <= this._endInclusive_0; + }; + ClosedFloatRange.prototype.isEmpty = function () { + return !(this._start_0 <= this._endInclusive_0); + }; + ClosedFloatRange.prototype.equals = function (other) { + return Kotlin.isType(other, ClosedFloatRange) && (this.isEmpty() && other.isEmpty() || (this._start_0 === other._start_0 && this._endInclusive_0 === other._endInclusive_0)); + }; + ClosedFloatRange.prototype.hashCode = function () { + return this.isEmpty() ? -1 : (31 * hashCode(this._start_0) | 0) + hashCode(this._endInclusive_0) | 0; + }; + ClosedFloatRange.prototype.toString = function () { + return this._start_0.toString() + '..' + this._endInclusive_0; + }; + ClosedFloatRange.$metadata$ = {kind: Kind_CLASS, simpleName: 'ClosedFloatRange', interfaces: [ClosedFloatingPointRange]}; function rangeTo_1($receiver, that) { - return new ClosedDoubleRange($receiver, that); + return new ClosedFloatRange($receiver, that); } var contains_52 = defineInlineFunction('kotlin.kotlin.ranges.contains_gpq3rh$', function ($receiver, element) { return element != null && $receiver.contains_mef7kx$(element); @@ -41252,12 +44004,44 @@ if (!isPositive) throw IllegalArgumentException_init_0('Step must be positive, was: ' + step.toString() + '.'); } + function cast($receiver, value) { + var tmp$; + if (!$receiver.isInstance_s8jyv4$(value)) + throw new ClassCastException('Value cannot be cast to ' + toString($receiver.qualifiedName)); + return Kotlin.isType(tmp$ = value, Any) ? tmp$ : throwCCE_0(); + } + function safeCast($receiver, value) { + var tmp$; + return $receiver.isInstance_s8jyv4$(value) ? Kotlin.isType(tmp$ = value, Any) ? tmp$ : throwCCE_0() : null; + } var typeOf = defineInlineFunction('kotlin.kotlin.reflect.typeOf_287e2$', wrapFunction(function () { var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; return function (T_0, isT) { throw UnsupportedOperationException_init('This function is implemented as an intrinsic on all supported platforms.'); }; })); + function appendRange_1($receiver, value, startIndex, endIndex) { + var tmp$; + return Kotlin.isType(tmp$ = $receiver.append_ezbsdh$(value, startIndex, endIndex), Appendable) ? tmp$ : throwCCE_0(); + } + function append($receiver, value) { + var tmp$; + for (tmp$ = 0; tmp$ !== value.length; ++tmp$) { + var item = value[tmp$]; + $receiver.append_gw00v9$(item); + } + return $receiver; + } + function appendElement_0($receiver, element, transform) { + if (transform != null) + $receiver.append_gw00v9$(transform(element)); + else if (element == null || Kotlin.isCharSequence(element)) + $receiver.append_gw00v9$(element); + else if (Kotlin.isChar(element)) + $receiver.append_s8itvh$(unboxChar(element)); + else + $receiver.append_gw00v9$(toString(element)); + } var plus_59 = defineInlineFunction('kotlin.kotlin.text.plus_elu61a$', function ($receiver, other) { return String.fromCharCode($receiver) + other; }); @@ -41290,8 +44074,7 @@ if (!!isBlank(marginPrefix)) { var message = 'marginPrefix must be non-blank string.'; throw IllegalArgumentException_init_0(message.toString()); - } - var lines_0 = lines($receiver); + }var lines_0 = lines($receiver); var resultSizeEstimate = $receiver.length + Kotlin.imul(newIndent.length, lines_0.size) | 0; var indentAddFunction = getIndentFunction(newIndent); var lastIndex = get_lastIndex_12(lines_0); @@ -41320,27 +44103,23 @@ if (!isWhitespace(unboxChar(toBoxedChar(item.charCodeAt(index_1))))) { indexOfFirst$result = index_1; break indexOfFirst$break; - } - } + }} indexOfFirst$result = -1; } while (false); var firstNonWhitespaceIndex = indexOfFirst$result; if (firstNonWhitespaceIndex === -1) { indentCutFunction$result = null; - } - else if (startsWith_0(item, marginPrefix, firstNonWhitespaceIndex)) { + } else if (startsWith_0(item, marginPrefix, firstNonWhitespaceIndex)) { indentCutFunction$result = item.substring(firstNonWhitespaceIndex + marginPrefix.length | 0); - } - else { + } else { indentCutFunction$result = null; } tmp$_4 = (tmp$_3 = (tmp$_2 = indentCutFunction$result) != null ? indentAddFunction(tmp$_2) : null) != null ? tmp$_3 : item; } if ((tmp$_1 = tmp$_4) != null) { destination.add_11rb$(tmp$_1); - } - } + }} return joinTo_8(destination, StringBuilder_init(resultSizeEstimate), '\n').toString(); } function trimIndent($receiver) { @@ -41382,8 +44161,7 @@ var tmp$_5, tmp$_6; if ((tmp$_4 = (index_0 === 0 || index_0 === lastIndex) && isBlank(item_0) ? null : (tmp$_6 = (tmp$_5 = drop_11(item_0, minCommonIndent)) != null ? indentAddFunction(tmp$_5) : null) != null ? tmp$_6 : item_0) != null) { destination_1.add_11rb$(tmp$_4); - } - } + }} return joinTo_8(destination_1, StringBuilder_init(resultSizeEstimate), '\n').toString(); } function prependIndent$lambda(closure$indent) { @@ -41414,8 +44192,7 @@ if (!isWhitespace(unboxChar(toBoxedChar($receiver.charCodeAt(index))))) { indexOfFirst$result = index; break indexOfFirst$break; - } - } + }} indexOfFirst$result = -1; } while (false); @@ -41452,11 +44229,13 @@ var tmp$_2, tmp$_3; if ((tmp$_1 = (index_0 === 0 || index_0 === lastIndex) && isBlank(item) ? null : (tmp$_3 = (tmp$_2 = indentCutFunction(item)) != null ? indentAddFunction(tmp$_2) : null) != null ? tmp$_3 : item) != null) { destination.add_11rb$(tmp$_1); - } - } + }} return joinTo_8(destination, StringBuilder_init(resultSizeEstimate), '\n').toString(); }; }); + var append_0 = defineInlineFunction('kotlin.kotlin.text.append_7soew7$', function ($receiver, obj) { + return $receiver.append_s8jyv4$(obj); + }); var buildString = defineInlineFunction('kotlin.kotlin.text.buildString_obkquz$', wrapFunction(function () { var StringBuilder_init = _.kotlin.text.StringBuilder_init; return function (builderAction) { @@ -41473,15 +44252,7 @@ return $receiver.toString(); }; })); - function append($receiver, value) { - var tmp$; - for (tmp$ = 0; tmp$ !== value.length; ++tmp$) { - var item = value[tmp$]; - $receiver.append_gw00v9$(item); - } - return $receiver; - } - function append_0($receiver, value) { + function append_1($receiver, value) { var tmp$; for (tmp$ = 0; tmp$ !== value.length; ++tmp$) { var item = value[tmp$]; @@ -41489,7 +44260,7 @@ } return $receiver; } - function append_1($receiver, value) { + function append_2($receiver, value) { var tmp$; for (tmp$ = 0; tmp$ !== value.length; ++tmp$) { var item = value[tmp$]; @@ -41497,16 +44268,6 @@ } return $receiver; } - function appendElement_0($receiver, element, transform) { - if (transform != null) - $receiver.append_gw00v9$(transform(element)); - else if (element == null || Kotlin.isCharSequence(element)) - $receiver.append_gw00v9$(element); - else if (Kotlin.isChar(element)) - $receiver.append_s8itvh$(unboxChar(element)); - else - $receiver.append_gw00v9$(toString(element)); - } function toByteOrNull($receiver) { return toByteOrNull_0($receiver, 10); } @@ -41515,8 +44276,7 @@ tmp$ = toIntOrNull_0($receiver, radix); if (tmp$ == null) { return null; - } - var int = tmp$; + }var int = tmp$; if (int < kotlin_js_internal_ByteCompanionObject.MIN_VALUE || int > kotlin_js_internal_ByteCompanionObject.MAX_VALUE) return null; return toByte(int); @@ -41529,8 +44289,7 @@ tmp$ = toIntOrNull_0($receiver, radix); if (tmp$ == null) { return null; - } - var int = tmp$; + }var int = tmp$; if (int < kotlin_js_internal_ShortCompanionObject.MIN_VALUE || int > kotlin_js_internal_ShortCompanionObject.MAX_VALUE) return null; return toShort(int); @@ -41539,7 +44298,6 @@ return toIntOrNull_0($receiver, 10); } function toIntOrNull_0($receiver, radix) { - var tmp$; checkRadix(radix); var length = $receiver.length; if (length === 0) @@ -41555,29 +44313,32 @@ if (firstChar === 45) { isNegative = true; limit = -2147483648; - } - else if (firstChar === 43) { + } else if (firstChar === 43) { isNegative = false; limit = -2147483647; - } - else + } else return null; - } - else { + } else { start = 0; isNegative = false; limit = -2147483647; } - var limitBeforeMul = limit / radix | 0; + var limitForMaxRadix = -59652323; + var limitBeforeMul = limitForMaxRadix; var result = 0; - tmp$ = length - 1 | 0; - for (var i = start; i <= tmp$; i++) { + for (var i = start; i < length; i++) { var digit = digitOf($receiver.charCodeAt(i), radix); if (digit < 0) return null; - if (result < limitBeforeMul) - return null; - result = Kotlin.imul(result, radix); + if (result < limitBeforeMul) { + if (limitBeforeMul === limitForMaxRadix) { + limitBeforeMul = limit / radix | 0; + if (result < limitBeforeMul) { + return null; + }} else { + return null; + } + }result = Kotlin.imul(result, radix); if (result < (limit + digit | 0)) return null; result = result - digit | 0; @@ -41588,7 +44349,6 @@ return toLongOrNull_0($receiver, 10); } function toLongOrNull_0($receiver, radix) { - var tmp$; checkRadix(radix); var length = $receiver.length; if (length === 0) @@ -41604,29 +44364,32 @@ if (firstChar === 45) { isNegative = true; limit = Long$Companion$MIN_VALUE; - } - else if (firstChar === 43) { + } else if (firstChar === 43) { isNegative = false; limit = L_9223372036854775807; - } - else + } else return null; - } - else { + } else { start = 0; isNegative = false; limit = L_9223372036854775807; } - var limitBeforeMul = limit.div(Kotlin.Long.fromInt(radix)); + var limitForMaxRadix = L_256204778801521550; + var limitBeforeMul = limitForMaxRadix; var result = L0; - tmp$ = length - 1 | 0; - for (var i = start; i <= tmp$; i++) { + for (var i = start; i < length; i++) { var digit = digitOf($receiver.charCodeAt(i), radix); if (digit < 0) return null; - if (result.compareTo_11rb$(limitBeforeMul) < 0) - return null; - result = result.multiply(Kotlin.Long.fromInt(radix)); + if (result.compareTo_11rb$(limitBeforeMul) < 0) { + if (equals(limitBeforeMul, limitForMaxRadix)) { + limitBeforeMul = limit.div(Kotlin.Long.fromInt(radix)); + if (result.compareTo_11rb$(limitBeforeMul) < 0) { + return null; + }} else { + return null; + } + }result = result.multiply(Kotlin.Long.fromInt(radix)); if (result.compareTo_11rb$(limit.add(Kotlin.Long.fromInt(digit))) < 0) return null; result = result.subtract(Kotlin.Long.fromInt(digit)); @@ -41650,8 +44413,7 @@ startFound = true; else startIndex = startIndex + 1 | 0; - } - else { + } else { if (!match) break; else @@ -41678,8 +44440,7 @@ startFound = true; else startIndex = startIndex + 1 | 0; - } - else { + } else { if (!match) break; else @@ -41722,8 +44483,7 @@ if (!predicate(toBoxedChar($receiver_0.charCodeAt(index)))) { trimStart$result = Kotlin.subSequence($receiver_0, index, $receiver_0.length); break trimStart$break; - } - trimStart$result = ''; + }trimStart$result = ''; } while (false); return trimStart$result.toString(); @@ -41761,8 +44521,7 @@ if (!predicate(toBoxedChar($receiver_0.charCodeAt(index)))) { trimEnd$result = Kotlin.subSequence($receiver_0, 0, index + 1 | 0); break trimEnd$break; - } - } + }} trimEnd$result = ''; } while (false); @@ -41781,8 +44540,7 @@ startFound = true; else startIndex = startIndex + 1 | 0; - } - else { + } else { if (!match) break; else @@ -41805,8 +44563,7 @@ startFound = true; else startIndex = startIndex + 1 | 0; - } - else { + } else { if (!match) break; else @@ -41827,8 +44584,7 @@ if (!contains_7(chars, unboxChar(toBoxedChar($receiver.charCodeAt(index))))) { trimStart$result = Kotlin.subSequence($receiver, index, $receiver.length); break trimStart$break; - } - } + }} trimStart$result = ''; } while (false); @@ -41848,8 +44604,7 @@ if (!contains_7(chars, unboxChar(toBoxedChar($receiver_0.charCodeAt(index))))) { trimStart$result = Kotlin.subSequence($receiver_0, index, $receiver_0.length); break trimStart$break; - } - } + }} trimStart$result = ''; } while (false); @@ -41865,8 +44620,7 @@ if (!contains_7(chars, unboxChar(toBoxedChar($receiver.charCodeAt(index))))) { trimEnd$result = Kotlin.subSequence($receiver, 0, index + 1 | 0); break trimEnd$break; - } - } + }} trimEnd$result = ''; } while (false); @@ -41884,8 +44638,7 @@ if (!contains_7(chars, unboxChar(toBoxedChar($receiver_0.charCodeAt(index))))) { trimEnd$result = Kotlin.subSequence($receiver_0, 0, index + 1 | 0); break trimEnd$break; - } - } + }} trimEnd$result = ''; } while (false); @@ -41903,8 +44656,7 @@ startFound = true; else startIndex = startIndex + 1 | 0; - } - else { + } else { if (!match) break; else @@ -41933,8 +44685,7 @@ if (!isWhitespace(unboxChar(toBoxedChar($receiver.charCodeAt(index))))) { trimStart$result = Kotlin.subSequence($receiver, index, $receiver.length); break trimStart$break; - } - } + }} trimStart$result = ''; } while (false); @@ -41958,8 +44709,7 @@ if (!isWhitespace(unboxChar(toBoxedChar($receiver.charCodeAt(index))))) { trimEnd$result = Kotlin.subSequence($receiver, 0, index + 1 | 0); break trimEnd$break; - } - } + }} trimEnd$result = ''; } while (false); @@ -42145,9 +44895,9 @@ if (endIndex < startIndex) throw new IndexOutOfBoundsException('End index (' + endIndex + ') is less than start index (' + startIndex + ').'); var sb = StringBuilder_init_1(); - sb.append_ezbsdh$($receiver, 0, startIndex); + sb.appendRange_ezbsdh$($receiver, 0, startIndex); sb.append_gw00v9$(replacement); - sb.append_ezbsdh$($receiver, endIndex, $receiver.length); + sb.appendRange_ezbsdh$($receiver, endIndex, $receiver.length); return sb; } var replaceRange_0 = defineInlineFunction('kotlin.kotlin.text.replaceRange_r96sod$', wrapFunction(function () { @@ -42175,8 +44925,8 @@ if (endIndex === startIndex) return Kotlin.subSequence($receiver, 0, $receiver.length); var sb = StringBuilder_init($receiver.length - (endIndex - startIndex) | 0); - sb.append_ezbsdh$($receiver, 0, startIndex); - sb.append_ezbsdh$($receiver, endIndex, $receiver.length); + sb.appendRange_ezbsdh$($receiver, 0, startIndex); + sb.appendRange_ezbsdh$($receiver, endIndex, $receiver.length); return sb; } var removeRange_0 = defineInlineFunction('kotlin.kotlin.text.removeRange_qgyqat$', wrapFunction(function () { @@ -42201,38 +44951,32 @@ function removePrefix($receiver, prefix) { if (startsWith_2($receiver, prefix)) { return Kotlin.subSequence($receiver, prefix.length, $receiver.length); - } - return Kotlin.subSequence($receiver, 0, $receiver.length); + }return Kotlin.subSequence($receiver, 0, $receiver.length); } function removePrefix_0($receiver, prefix) { if (startsWith_2($receiver, prefix)) { return $receiver.substring(prefix.length); - } - return $receiver; + }return $receiver; } function removeSuffix($receiver, suffix) { if (endsWith_1($receiver, suffix)) { return Kotlin.subSequence($receiver, 0, $receiver.length - suffix.length | 0); - } - return Kotlin.subSequence($receiver, 0, $receiver.length); + }return Kotlin.subSequence($receiver, 0, $receiver.length); } function removeSuffix_0($receiver, suffix) { if (endsWith_1($receiver, suffix)) { return $receiver.substring(0, $receiver.length - suffix.length | 0); - } - return $receiver; + }return $receiver; } function removeSurrounding($receiver, prefix, suffix) { if ($receiver.length >= (prefix.length + suffix.length | 0) && startsWith_2($receiver, prefix) && endsWith_1($receiver, suffix)) { return Kotlin.subSequence($receiver, prefix.length, $receiver.length - suffix.length | 0); - } - return Kotlin.subSequence($receiver, 0, $receiver.length); + }return Kotlin.subSequence($receiver, 0, $receiver.length); } function removeSurrounding_0($receiver, prefix, suffix) { if ($receiver.length >= (prefix.length + suffix.length | 0) && startsWith_2($receiver, prefix) && endsWith_1($receiver, suffix)) { return $receiver.substring(prefix.length, $receiver.length - suffix.length | 0); - } - return $receiver; + }return $receiver; } function removeSurrounding_1($receiver, delimiter) { return removeSurrounding($receiver, delimiter, delimiter); @@ -42365,8 +45109,7 @@ if (match == null) { replace_20wsma$result = $receiver.toString(); break replace_20wsma$break; - } - var lastStart = 0; + }var lastStart = 0; var length = $receiver.length; var sb = StringBuilder_init(length); do { @@ -42379,8 +45122,7 @@ while (lastStart < length && match != null); if (lastStart < length) { sb.append_ezbsdh$($receiver, lastStart, length); - } - replace_20wsma$result = sb.toString(); + }replace_20wsma$result = sb.toString(); } while (false); return replace_20wsma$result; @@ -42395,8 +45137,7 @@ function regionMatchesImpl($receiver, thisOffset, other, otherOffset, length, ignoreCase) { if (otherOffset < 0 || thisOffset < 0 || thisOffset > ($receiver.length - length | 0) || otherOffset > (other.length - length | 0)) { return false; - } - for (var index = 0; index < length; index++) { + }for (var index = 0; index < length; index++) { if (!equals_1($receiver.charCodeAt(thisOffset + index | 0), other.charCodeAt(otherOffset + index | 0), ignoreCase)) return false; } @@ -42446,8 +45187,7 @@ } if (hasSurrogatePairAt($receiver, i - 1 | 0) || hasSurrogatePairAt(other, i - 1 | 0)) { i = i - 1 | 0; - } - return Kotlin.subSequence($receiver, 0, i).toString(); + }return Kotlin.subSequence($receiver, 0, i).toString(); } function commonSuffixWith($receiver, other, ignoreCase) { if (ignoreCase === void 0) @@ -42461,8 +45201,7 @@ } if (hasSurrogatePairAt($receiver, thisLength - i - 1 | 0) || hasSurrogatePairAt(other, otherLength - i - 1 | 0)) { i = i - 1 | 0; - } - return Kotlin.subSequence($receiver, thisLength - i | 0, thisLength).toString(); + }return Kotlin.subSequence($receiver, thisLength - i | 0, thisLength).toString(); } function indexOfAny($receiver, chars, startIndex, ignoreCase) { if (startIndex === void 0) @@ -42473,8 +45212,7 @@ if (!ignoreCase && chars.length === 1 && typeof $receiver === 'string') { var char = single_7(chars); return $receiver.indexOf(String.fromCharCode(char), startIndex); - } - tmp$ = coerceAtLeast_2(startIndex, 0); + }tmp$ = coerceAtLeast_2(startIndex, 0); tmp$_0 = get_lastIndex_13($receiver); loop_label: for (var index = tmp$; index <= tmp$_0; index++) { var charAtIndex = $receiver.charCodeAt(index); @@ -42486,8 +45224,7 @@ if (equals_1(unboxChar(toBoxedChar(element)), charAtIndex, ignoreCase)) { any$result = true; break any$break; - } - } + }} any$result = false; } while (false); @@ -42504,8 +45241,7 @@ if (!ignoreCase && chars.length === 1 && typeof $receiver === 'string') { var char = single_7(chars); return $receiver.lastIndexOf(String.fromCharCode(char), startIndex); - } - loop_label: for (var index = coerceAtMost_2(startIndex, get_lastIndex_13($receiver)); index >= 0; index--) { + }loop_label: for (var index = coerceAtMost_2(startIndex, get_lastIndex_13($receiver)); index >= 0; index--) { var charAtIndex = $receiver.charCodeAt(index); var any$result; any$break: do { @@ -42515,8 +45251,7 @@ if (equals_1(unboxChar(toBoxedChar(element)), charAtIndex, ignoreCase)) { any$result = true; break any$break; - } - } + }} any$result = false; } while (false); @@ -42537,8 +45272,7 @@ if (regionMatches(other, 0, $receiver, index, other.length, ignoreCase)) return index; } - } - else { + } else { tmp$_0 = indices.iterator(); while (tmp$_0.hasNext()) { var index_0 = tmp$_0.next(); @@ -42554,8 +45288,7 @@ var string = single_17(strings); var index = !last ? indexOf_17($receiver, string, startIndex) : lastIndexOf_16($receiver, string, startIndex); return index < 0 ? null : to(index, string); - } - var indices = !last ? new IntRange(coerceAtLeast_2(startIndex, 0), $receiver.length) : downTo_4(coerceAtMost_2(startIndex, get_lastIndex_13($receiver)), 0); + }var indices = !last ? new IntRange(coerceAtLeast_2(startIndex, 0), $receiver.length) : downTo_4(coerceAtMost_2(startIndex, get_lastIndex_13($receiver)), 0); if (typeof $receiver === 'string') { tmp$ = indices.iterator(); loop_label: while (tmp$.hasNext()) { @@ -42569,8 +45302,7 @@ if (regionMatches(element, 0, $receiver, index_0, element.length, ignoreCase)) { firstOrNull$result = element; break firstOrNull$break; - } - } + }} firstOrNull$result = null; } while (false); @@ -42578,8 +45310,7 @@ if (matchingString != null) return to(index_0, matchingString); } - } - else { + } else { tmp$_0 = indices.iterator(); loop_label: while (tmp$_0.hasNext()) { var index_1 = tmp$_0.next(); @@ -42592,8 +45323,7 @@ if (regionMatchesImpl(element_0, 0, $receiver, index_1, element_0.length, ignoreCase)) { firstOrNull$result_0 = element_0; break firstOrNull$break; - } - } + }} firstOrNull$result_0 = null; } while (false); @@ -42693,19 +45423,16 @@ if (this.nextSearchIndex < 0) { this.nextState = 0; this.nextItem = null; - } - else { + } else { if (this.this$DelimitedRangesSequence.limit_0 > 0 && (this.counter = this.counter + 1 | 0, this.counter) >= this.this$DelimitedRangesSequence.limit_0 || this.nextSearchIndex > this.this$DelimitedRangesSequence.input_0.length) { this.nextItem = new IntRange(this.currentStartIndex, get_lastIndex_13(this.this$DelimitedRangesSequence.input_0)); this.nextSearchIndex = -1; - } - else { + } else { var match = this.this$DelimitedRangesSequence.getNextMatch_0(this.this$DelimitedRangesSequence.input_0, this.nextSearchIndex); if (match == null) { this.nextItem = new IntRange(this.currentStartIndex, get_lastIndex_13(this.this$DelimitedRangesSequence.input_0)); this.nextSearchIndex = -1; - } - else { + } else { var index = match.component1(), length = match.component2(); this.nextItem = until_4(this.currentStartIndex, index); this.currentStartIndex = index + length | 0; @@ -42752,8 +45479,7 @@ if (!(limit >= 0)) { var message = 'Limit must be non-negative, but was ' + limit + '.'; throw IllegalArgumentException_init_0(message.toString()); - } - return new DelimitedRangesSequence($receiver, startIndex, limit, rangesDelimitedBy$lambda(delimiters, ignoreCase)); + }return new DelimitedRangesSequence($receiver, startIndex, limit, rangesDelimitedBy$lambda(delimiters, ignoreCase)); } function rangesDelimitedBy$lambda_0(closure$delimitersList, closure$ignoreCase) { return function ($receiver, currentIndex) { @@ -42771,8 +45497,7 @@ if (!(limit >= 0)) { var message = 'Limit must be non-negative, but was ' + limit + '.'; throw IllegalArgumentException_init_0(message.toString()); - } - var delimitersList = asList(delimiters); + }var delimitersList = asList(delimiters); return new DelimitedRangesSequence($receiver, startIndex, limit, rangesDelimitedBy$lambda_0(delimitersList, ignoreCase)); } function splitToSequence$lambda(this$splitToSequence) { @@ -42796,9 +45521,7 @@ var delimiter = delimiters[0]; if (!(delimiter.length === 0)) { return split_1($receiver, delimiter, ignoreCase, limit); - } - } - var $receiver_0 = asIterable_10(rangesDelimitedBy_0($receiver, delimiters, void 0, ignoreCase, limit)); + }}var $receiver_0 = asIterable_10(rangesDelimitedBy_0($receiver, delimiters, void 0, ignoreCase, limit)); var destination = ArrayList_init_0(collectionSizeOrDefault($receiver_0, 10)); var tmp$; tmp$ = $receiver_0.iterator(); @@ -42827,8 +45550,7 @@ limit = 0; if (delimiters.length === 1) { return split_1($receiver, String.fromCharCode(delimiters[0]), ignoreCase, limit); - } - var $receiver_0 = asIterable_10(rangesDelimitedBy($receiver, delimiters, void 0, ignoreCase, limit)); + }var $receiver_0 = asIterable_10(rangesDelimitedBy($receiver, delimiters, void 0, ignoreCase, limit)); var destination = ArrayList_init_0(collectionSizeOrDefault($receiver_0, 10)); var tmp$; tmp$ = $receiver_0.iterator(); @@ -42842,13 +45564,11 @@ if (!(limit >= 0)) { var message = 'Limit must be non-negative, but was ' + limit + '.'; throw IllegalArgumentException_init_0(message.toString()); - } - var currentOffset = 0; + }var currentOffset = 0; var nextIndex = indexOf_17($receiver, delimiter, currentOffset, ignoreCase); if (nextIndex === -1 || limit === 1) { return listOf($receiver.toString()); - } - var isLimited = limit > 0; + }var isLimited = limit > 0; var result = ArrayList_init_0(isLimited ? coerceAtMost_2(limit, 10) : 10); do { result.add_11rb$(Kotlin.subSequence($receiver, currentOffset, nextIndex).toString()); @@ -42919,8 +45639,7 @@ function Typography_getInstance() { if (Typography_instance === null) { new Typography(); - } - return Typography_instance; + }return Typography_instance; } function MatchGroupCollection() { } @@ -42989,6 +45708,551 @@ return new Regex_init($receiver, options); }; })); + function get_storageUnit() { + return DurationUnit$NANOSECONDS_getInstance(); + } + function Duration(value) { + Duration$Companion_getInstance(); + this.value_8be2vx$ = value; + } + function Duration$Companion() { + Duration$Companion_instance = this; + this.ZERO = new Duration(0.0); + this.INFINITE = new Duration(kotlin_js_internal_DoubleCompanionObject.POSITIVE_INFINITY); + } + Duration$Companion.prototype.convert_d8pp1e$ = function (value, sourceUnit, targetUnit) { + return convertDurationUnit(value, sourceUnit, targetUnit); + }; + Duration$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; + var Duration$Companion_instance = null; + function Duration$Companion_getInstance() { + if (Duration$Companion_instance === null) { + new Duration$Companion(); + }return Duration$Companion_instance; + } + Duration.prototype.unaryMinus = function () { + return new Duration(-this.value_8be2vx$); + }; + Duration.prototype.plus_cgako$ = function (other) { + return new Duration(this.value_8be2vx$ + other.value_8be2vx$); + }; + Duration.prototype.minus_cgako$ = function (other) { + return new Duration(this.value_8be2vx$ - other.value_8be2vx$); + }; + Duration.prototype.times_za3lpa$ = function (scale) { + return new Duration(this.value_8be2vx$ * scale); + }; + Duration.prototype.times_14dthe$ = function (scale) { + return new Duration(this.value_8be2vx$ * scale); + }; + Duration.prototype.div_za3lpa$ = function (scale) { + return new Duration(this.value_8be2vx$ / scale); + }; + Duration.prototype.div_14dthe$ = function (scale) { + return new Duration(this.value_8be2vx$ / scale); + }; + Duration.prototype.div_cgako$ = function (other) { + return this.value_8be2vx$ / other.value_8be2vx$; + }; + Duration.prototype.isNegative = function () { + return this.value_8be2vx$ < 0; + }; + Duration.prototype.isPositive = function () { + return this.value_8be2vx$ > 0; + }; + Duration.prototype.isInfinite = function () { + return isInfinite(this.value_8be2vx$); + }; + Duration.prototype.isFinite = function () { + return isFinite(this.value_8be2vx$); + }; + Object.defineProperty(Duration.prototype, 'absoluteValue', {get: function () { + return this.isNegative() ? this.unaryMinus() : this; + }}); + Duration.prototype.compareTo_11rb$ = function (other) { + return Kotlin.compareTo(this.value_8be2vx$, other.value_8be2vx$); + }; + Duration.prototype.toComponents_fnu26o$ = defineInlineFunction('kotlin.kotlin.time.Duration.toComponents_fnu26o$', wrapFunction(function () { + var numberToInt = Kotlin.numberToInt; + return function (action) { + return action(numberToInt(this.inDays), this.hoursComponent, this.minutesComponent, this.secondsComponent, this.nanosecondsComponent); + }; + })); + Duration.prototype.toComponents_v6nad0$ = defineInlineFunction('kotlin.kotlin.time.Duration.toComponents_v6nad0$', wrapFunction(function () { + var numberToInt = Kotlin.numberToInt; + return function (action) { + return action(numberToInt(this.inHours), this.minutesComponent, this.secondsComponent, this.nanosecondsComponent); + }; + })); + Duration.prototype.toComponents_sg9n6w$ = defineInlineFunction('kotlin.kotlin.time.Duration.toComponents_sg9n6w$', wrapFunction(function () { + var numberToInt = Kotlin.numberToInt; + return function (action) { + return action(numberToInt(this.inMinutes), this.secondsComponent, this.nanosecondsComponent); + }; + })); + Duration.prototype.toComponents_obfv9r$ = defineInlineFunction('kotlin.kotlin.time.Duration.toComponents_obfv9r$', function (action) { + return action(Kotlin.Long.fromNumber(this.inSeconds), this.nanosecondsComponent); + }); + Object.defineProperty(Duration.prototype, 'hoursComponent', {get: function () { + return numberToInt(this.inHours % 24); + }}); + Object.defineProperty(Duration.prototype, 'minutesComponent', {get: function () { + return numberToInt(this.inMinutes % 60); + }}); + Object.defineProperty(Duration.prototype, 'secondsComponent', {get: function () { + return numberToInt(this.inSeconds % 60); + }}); + Object.defineProperty(Duration.prototype, 'nanosecondsComponent', {get: function () { + return numberToInt(this.inNanoseconds % 1.0E9); + }}); + Duration.prototype.toDouble_p6uejw$ = function (unit) { + return convertDurationUnit(this.value_8be2vx$, DurationUnit$NANOSECONDS_getInstance(), unit); + }; + Duration.prototype.toLong_p6uejw$ = function (unit) { + return Kotlin.Long.fromNumber(this.toDouble_p6uejw$(unit)); + }; + Duration.prototype.toInt_p6uejw$ = function (unit) { + return numberToInt(this.toDouble_p6uejw$(unit)); + }; + Object.defineProperty(Duration.prototype, 'inDays', {get: function () { + return this.toDouble_p6uejw$(DurationUnit$DAYS_getInstance()); + }}); + Object.defineProperty(Duration.prototype, 'inHours', {get: function () { + return this.toDouble_p6uejw$(DurationUnit$HOURS_getInstance()); + }}); + Object.defineProperty(Duration.prototype, 'inMinutes', {get: function () { + return this.toDouble_p6uejw$(DurationUnit$MINUTES_getInstance()); + }}); + Object.defineProperty(Duration.prototype, 'inSeconds', {get: function () { + return this.toDouble_p6uejw$(DurationUnit$SECONDS_getInstance()); + }}); + Object.defineProperty(Duration.prototype, 'inMilliseconds', {get: function () { + return this.toDouble_p6uejw$(DurationUnit$MILLISECONDS_getInstance()); + }}); + Object.defineProperty(Duration.prototype, 'inMicroseconds', {get: function () { + return this.toDouble_p6uejw$(DurationUnit$MICROSECONDS_getInstance()); + }}); + Object.defineProperty(Duration.prototype, 'inNanoseconds', {get: function () { + return this.toDouble_p6uejw$(DurationUnit$NANOSECONDS_getInstance()); + }}); + Duration.prototype.toLongNanoseconds = function () { + return this.toLong_p6uejw$(DurationUnit$NANOSECONDS_getInstance()); + }; + Duration.prototype.toLongMilliseconds = function () { + return this.toLong_p6uejw$(DurationUnit$MILLISECONDS_getInstance()); + }; + Duration.prototype.toString = function () { + var tmp$, tmp$_0; + if (this.isInfinite()) + return this.value_8be2vx$.toString(); + else if (this.value_8be2vx$ === 0.0) + return '0s'; + else { + var absNs = this.absoluteValue.inNanoseconds; + var scientific = {v: false}; + var maxDecimals = {v: 0}; + if (absNs < 1.0E-6) { + var $receiver = DurationUnit$SECONDS_getInstance(); + scientific.v = true; + tmp$ = $receiver; + } else if (absNs < 1) { + var $receiver_0 = DurationUnit$NANOSECONDS_getInstance(); + maxDecimals.v = 7; + tmp$ = $receiver_0; + } else if (absNs < 1000.0) + tmp$ = DurationUnit$NANOSECONDS_getInstance(); + else if (absNs < 1000000.0) + tmp$ = DurationUnit$MICROSECONDS_getInstance(); + else if (absNs < 1.0E9) + tmp$ = DurationUnit$MILLISECONDS_getInstance(); + else if (absNs < 1.0E12) + tmp$ = DurationUnit$SECONDS_getInstance(); + else if (absNs < 6.0E13) + tmp$ = DurationUnit$MINUTES_getInstance(); + else if (absNs < 3.6E15) + tmp$ = DurationUnit$HOURS_getInstance(); + else if (absNs < 8.64E13 * 1.0E7) + tmp$ = DurationUnit$DAYS_getInstance(); + else { + var $receiver_1 = DurationUnit$DAYS_getInstance(); + scientific.v = true; + tmp$ = $receiver_1; + } + var unit = tmp$; + var value = this.toDouble_p6uejw$(unit); + if (scientific.v) + tmp$_0 = formatScientific(value); + else if (maxDecimals.v > 0) + tmp$_0 = formatUpToDecimals(value, maxDecimals.v); + else { + tmp$_0 = formatToExactDecimals(value, this.precision_0(Math_0.abs(value))); + } + return tmp$_0 + shortName(unit); + } + }; + Duration.prototype.precision_0 = function (value) { + if (value < 1) + return 3; + else if (value < 10) + return 2; + else if (value < 100) + return 1; + else + return 0; + }; + Duration.prototype.toString_mha1pa$ = function (unit, decimals) { + if (decimals === void 0) + decimals = 0; + var tmp$; + if (!(decimals >= 0)) { + var message = 'decimals must be not negative, but was ' + decimals; + throw IllegalArgumentException_init_0(message.toString()); + }if (this.isInfinite()) + return this.value_8be2vx$.toString(); + var number = this.toDouble_p6uejw$(unit); + if (Math_0.abs(number) < 1.0E14) + tmp$ = formatToExactDecimals(number, coerceAtMost_2(decimals, 12)); + else + tmp$ = formatScientific(number); + return tmp$ + shortName(unit); + }; + Duration.prototype.toIsoString = function () { + var $receiver = StringBuilder_init_1(); + if (this.isNegative()) + $receiver.append_s8itvh$(45); + $receiver.append_61zpoe$('PT'); + var $this = this.absoluteValue; + var hours = numberToInt($this.inHours); + var minutes = $this.minutesComponent; + var seconds = $this.secondsComponent; + var nanoseconds = $this.nanosecondsComponent; + var hasHours = hours !== 0; + var hasSeconds = seconds !== 0 || nanoseconds !== 0; + var hasMinutes = minutes !== 0 || (hasSeconds && hasHours); + if (hasHours) { + $receiver.append_s8jyv4$(hours).append_s8itvh$(72); + }if (hasMinutes) { + $receiver.append_s8jyv4$(minutes).append_s8itvh$(77); + }if (hasSeconds || (!hasHours && !hasMinutes)) { + $receiver.append_s8jyv4$(seconds); + if (nanoseconds !== 0) { + $receiver.append_s8itvh$(46); + var nss = padStart_0(nanoseconds.toString(), 9, 48); + if (nanoseconds % 1000000 === 0) + $receiver.appendRange_ezbsdh$(nss, 0, 3); + else if (nanoseconds % 1000 === 0) + $receiver.appendRange_ezbsdh$(nss, 0, 6); + else + $receiver.append_61zpoe$(nss); + }$receiver.append_s8itvh$(83); + }return $receiver.toString(); + }; + Duration.$metadata$ = {kind: Kind_CLASS, simpleName: 'Duration', interfaces: [Comparable]}; + Duration.prototype.unbox = function () { + return this.value_8be2vx$; + }; + Duration.prototype.hashCode = function () { + var result = 0; + result = result * 31 + Kotlin.hashCode(this.value_8be2vx$) | 0; + return result; + }; + Duration.prototype.equals = function (other) { + return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && Kotlin.equals(this.value_8be2vx$, other.value_8be2vx$)))); + }; + function toDuration($receiver, unit) { + return toDuration_1($receiver, unit); + } + function toDuration_0($receiver, unit) { + return toDuration_1($receiver.toNumber(), unit); + } + function toDuration_1($receiver, unit) { + return new Duration(convertDurationUnit($receiver, unit, DurationUnit$NANOSECONDS_getInstance())); + } + function get_nanoseconds($receiver) { + return toDuration($receiver, DurationUnit$NANOSECONDS_getInstance()); + } + function get_nanoseconds_0($receiver) { + return toDuration_0($receiver, DurationUnit$NANOSECONDS_getInstance()); + } + function get_nanoseconds_1($receiver) { + return toDuration_1($receiver, DurationUnit$NANOSECONDS_getInstance()); + } + function get_microseconds($receiver) { + return toDuration($receiver, DurationUnit$MICROSECONDS_getInstance()); + } + function get_microseconds_0($receiver) { + return toDuration_0($receiver, DurationUnit$MICROSECONDS_getInstance()); + } + function get_microseconds_1($receiver) { + return toDuration_1($receiver, DurationUnit$MICROSECONDS_getInstance()); + } + function get_milliseconds($receiver) { + return toDuration($receiver, DurationUnit$MILLISECONDS_getInstance()); + } + function get_milliseconds_0($receiver) { + return toDuration_0($receiver, DurationUnit$MILLISECONDS_getInstance()); + } + function get_milliseconds_1($receiver) { + return toDuration_1($receiver, DurationUnit$MILLISECONDS_getInstance()); + } + function get_seconds($receiver) { + return toDuration($receiver, DurationUnit$SECONDS_getInstance()); + } + function get_seconds_0($receiver) { + return toDuration_0($receiver, DurationUnit$SECONDS_getInstance()); + } + function get_seconds_1($receiver) { + return toDuration_1($receiver, DurationUnit$SECONDS_getInstance()); + } + function get_minutes($receiver) { + return toDuration($receiver, DurationUnit$MINUTES_getInstance()); + } + function get_minutes_0($receiver) { + return toDuration_0($receiver, DurationUnit$MINUTES_getInstance()); + } + function get_minutes_1($receiver) { + return toDuration_1($receiver, DurationUnit$MINUTES_getInstance()); + } + function get_hours($receiver) { + return toDuration($receiver, DurationUnit$HOURS_getInstance()); + } + function get_hours_0($receiver) { + return toDuration_0($receiver, DurationUnit$HOURS_getInstance()); + } + function get_hours_1($receiver) { + return toDuration_1($receiver, DurationUnit$HOURS_getInstance()); + } + function get_days($receiver) { + return toDuration($receiver, DurationUnit$DAYS_getInstance()); + } + function get_days_0($receiver) { + return toDuration_0($receiver, DurationUnit$DAYS_getInstance()); + } + function get_days_1($receiver) { + return toDuration_1($receiver, DurationUnit$DAYS_getInstance()); + } + var times = defineInlineFunction('kotlin.kotlin.time.times_tk7led$', function ($receiver, duration) { + return duration.times_za3lpa$($receiver); + }); + var times_0 = defineInlineFunction('kotlin.kotlin.time.times_w68h3b$', function ($receiver, duration) { + return duration.times_14dthe$($receiver); + }); + function shortName($receiver) { + switch ($receiver.name) { + case 'NANOSECONDS': + return 'ns'; + case 'MICROSECONDS': + return 'us'; + case 'MILLISECONDS': + return 'ms'; + case 'SECONDS': + return 's'; + case 'MINUTES': + return 'm'; + case 'HOURS': + return 'h'; + case 'DAYS': + return 'd'; + default:return Kotlin.noWhenBranchMatched(); + } + } + function ExperimentalTime() { + } + ExperimentalTime.$metadata$ = {kind: Kind_CLASS, simpleName: 'ExperimentalTime', interfaces: [Annotation]}; + function TimeSource() { + TimeSource$Companion_getInstance(); + } + function TimeSource$Monotonic() { + TimeSource$Monotonic_instance = this; + this.$delegate_dulig8$_0 = MonotonicTimeSource_getInstance(); + } + TimeSource$Monotonic.prototype.toString = function () { + return MonotonicTimeSource_getInstance().toString(); + }; + TimeSource$Monotonic.prototype.markNow = function () { + return this.$delegate_dulig8$_0.markNow(); + }; + TimeSource$Monotonic.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Monotonic', interfaces: [TimeSource]}; + var TimeSource$Monotonic_instance = null; + function TimeSource$Monotonic_getInstance() { + if (TimeSource$Monotonic_instance === null) { + new TimeSource$Monotonic(); + }return TimeSource$Monotonic_instance; + } + function TimeSource$Companion() { + TimeSource$Companion_instance = this; + } + TimeSource$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; + var TimeSource$Companion_instance = null; + function TimeSource$Companion_getInstance() { + if (TimeSource$Companion_instance === null) { + new TimeSource$Companion(); + }return TimeSource$Companion_instance; + } + TimeSource.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'TimeSource', interfaces: []}; + function TimeMark() { + } + TimeMark.prototype.plus_cgako$ = function (duration) { + return new AdjustedTimeMark(this, duration); + }; + TimeMark.prototype.minus_cgako$ = function (duration) { + return this.plus_cgako$(duration.unaryMinus()); + }; + TimeMark.prototype.hasPassedNow = function () { + return !this.elapsedNow().isNegative(); + }; + TimeMark.prototype.hasNotPassedNow = function () { + return this.elapsedNow().isNegative(); + }; + TimeMark.$metadata$ = {kind: Kind_CLASS, simpleName: 'TimeMark', interfaces: []}; + var minus_15 = defineInlineFunction('kotlin.kotlin.time.minus_8lj69b$', wrapFunction(function () { + var Error_init = _.kotlin.Error_init_pdl1vj$; + return function ($receiver, other) { + throw Error_init('Operation is disallowed.'); + }; + })); + var compareTo_0 = defineInlineFunction('kotlin.kotlin.time.compareTo_8lj69b$', wrapFunction(function () { + var Error_init = _.kotlin.Error_init_pdl1vj$; + return function ($receiver, other) { + throw Error_init('Operation is disallowed.'); + }; + })); + function AdjustedTimeMark(mark, adjustment) { + TimeMark.call(this); + this.mark = mark; + this.adjustment = adjustment; + } + AdjustedTimeMark.prototype.elapsedNow = function () { + return this.mark.elapsedNow().minus_cgako$(this.adjustment); + }; + AdjustedTimeMark.prototype.plus_cgako$ = function (duration) { + return new AdjustedTimeMark(this.mark, this.adjustment.plus_cgako$(duration)); + }; + AdjustedTimeMark.$metadata$ = {kind: Kind_CLASS, simpleName: 'AdjustedTimeMark', interfaces: [TimeMark]}; + function AbstractLongTimeSource(unit) { + this.unit = unit; + } + function AbstractLongTimeSource$LongTimeMark(startedAt, timeSource, offset) { + TimeMark.call(this); + this.startedAt_0 = startedAt; + this.timeSource_0 = timeSource; + this.offset_0 = offset; + } + AbstractLongTimeSource$LongTimeMark.prototype.elapsedNow = function () { + return toDuration_0(this.timeSource_0.read().subtract(this.startedAt_0), this.timeSource_0.unit).minus_cgako$(this.offset_0); + }; + AbstractLongTimeSource$LongTimeMark.prototype.plus_cgako$ = function (duration) { + return new AbstractLongTimeSource$LongTimeMark(this.startedAt_0, this.timeSource_0, this.offset_0.plus_cgako$(duration)); + }; + AbstractLongTimeSource$LongTimeMark.$metadata$ = {kind: Kind_CLASS, simpleName: 'LongTimeMark', interfaces: [TimeMark]}; + AbstractLongTimeSource.prototype.markNow = function () { + return new AbstractLongTimeSource$LongTimeMark(this.read(), this, Duration$Companion_getInstance().ZERO); + }; + AbstractLongTimeSource.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractLongTimeSource', interfaces: [TimeSource]}; + function AbstractDoubleTimeSource(unit) { + this.unit = unit; + } + function AbstractDoubleTimeSource$DoubleTimeMark(startedAt, timeSource, offset) { + TimeMark.call(this); + this.startedAt_0 = startedAt; + this.timeSource_0 = timeSource; + this.offset_0 = offset; + } + AbstractDoubleTimeSource$DoubleTimeMark.prototype.elapsedNow = function () { + return toDuration_1(this.timeSource_0.read() - this.startedAt_0, this.timeSource_0.unit).minus_cgako$(this.offset_0); + }; + AbstractDoubleTimeSource$DoubleTimeMark.prototype.plus_cgako$ = function (duration) { + return new AbstractDoubleTimeSource$DoubleTimeMark(this.startedAt_0, this.timeSource_0, this.offset_0.plus_cgako$(duration)); + }; + AbstractDoubleTimeSource$DoubleTimeMark.$metadata$ = {kind: Kind_CLASS, simpleName: 'DoubleTimeMark', interfaces: [TimeMark]}; + AbstractDoubleTimeSource.prototype.markNow = function () { + return new AbstractDoubleTimeSource$DoubleTimeMark(this.read(), this, Duration$Companion_getInstance().ZERO); + }; + AbstractDoubleTimeSource.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractDoubleTimeSource', interfaces: [TimeSource]}; + function TestTimeSource() { + AbstractLongTimeSource.call(this, DurationUnit$NANOSECONDS_getInstance()); + this.reading_0 = L0; + } + TestTimeSource.prototype.read = function () { + return this.reading_0; + }; + TestTimeSource.prototype.plusAssign_cgako$ = function (duration) { + var tmp$; + var delta = duration.toDouble_p6uejw$(this.unit); + var longDelta = Kotlin.Long.fromNumber(delta); + if (!equals(longDelta, Long$Companion$MIN_VALUE) && !equals(longDelta, Long$Companion$MAX_VALUE)) { + var newReading = this.reading_0.add(longDelta); + if (this.reading_0.xor(longDelta).toNumber() >= 0 && this.reading_0.xor(newReading).toNumber() < 0) + this.overflow_0(duration); + tmp$ = newReading; + } else { + var newReading_0 = this.reading_0.toNumber() + delta; + if (newReading_0 > Long$Companion$MAX_VALUE.toNumber() || newReading_0 < Long$Companion$MIN_VALUE.toNumber()) + this.overflow_0(duration); + tmp$ = Kotlin.Long.fromNumber(newReading_0); + } + this.reading_0 = tmp$; + }; + TestTimeSource.prototype.overflow_0 = function (duration) { + throw IllegalStateException_init_0('TestTimeSource will overflow if its reading ' + this.reading_0.toString() + 'ns is advanced by ' + duration + '.'); + }; + TestTimeSource.$metadata$ = {kind: Kind_CLASS, simpleName: 'TestTimeSource', interfaces: [AbstractLongTimeSource]}; + var measureTime = defineInlineFunction('kotlin.kotlin.time.measureTime_o14v8n$', wrapFunction(function () { + var TimeSource = _.kotlin.time.TimeSource; + return function (block) { + var mark = TimeSource.Monotonic.markNow(); + block(); + return mark.elapsedNow(); + }; + })); + var measureTime_0 = defineInlineFunction('kotlin.kotlin.time.measureTime_8lzfs6$', function ($receiver, block) { + var mark = $receiver.markNow(); + block(); + return mark.elapsedNow(); + }); + function TimedValue(value, duration) { + this.value = value; + this.duration = duration; + } + TimedValue.$metadata$ = {kind: Kind_CLASS, simpleName: 'TimedValue', interfaces: []}; + TimedValue.prototype.component1 = function () { + return this.value; + }; + TimedValue.prototype.component2 = function () { + return this.duration; + }; + TimedValue.prototype.copy_v4727h$ = function (value, duration) { + return new TimedValue(value === void 0 ? this.value : value, duration === void 0 ? this.duration : duration); + }; + TimedValue.prototype.toString = function () { + return 'TimedValue(value=' + Kotlin.toString(this.value) + (', duration=' + Kotlin.toString(this.duration)) + ')'; + }; + TimedValue.prototype.hashCode = function () { + var result = 0; + result = result * 31 + Kotlin.hashCode(this.value) | 0; + result = result * 31 + Kotlin.hashCode(this.duration) | 0; + return result; + }; + TimedValue.prototype.equals = function (other) { + return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.value, other.value) && Kotlin.equals(this.duration, other.duration))))); + }; + var measureTimedValue = defineInlineFunction('kotlin.kotlin.time.measureTimedValue_klfg04$', wrapFunction(function () { + var TimeSource = _.kotlin.time.TimeSource; + var TimedValue_init = _.kotlin.time.TimedValue; + return function (block) { + var mark = TimeSource.Monotonic.markNow(); + var result = block(); + return new TimedValue_init(result, mark.elapsedNow()); + }; + })); + var measureTimedValue_0 = defineInlineFunction('kotlin.kotlin.time.measureTimedValue_tfb6s1$', wrapFunction(function () { + var TimedValue_init = _.kotlin.time.TimedValue; + return function ($receiver, block) { + var mark = $receiver.markNow(); + var result = block(); + return new TimedValue_init(result, mark.elapsedNow()); + }; + })); var hashCode_0 = defineInlineFunction('kotlin.kotlin.hashCode_mzud1t$', wrapFunction(function () { var hashCode = Kotlin.hashCode; return function ($receiver) { @@ -43007,8 +46271,7 @@ if (!(0 <= major && major <= 255 && (0 <= minor && minor <= 255) && (0 <= patch && patch <= 255))) { var message = 'Version components are out of range: ' + major + '.' + minor + '.' + patch; throw IllegalArgumentException_init_0(message.toString()); - } - return (major << 16) + (minor << 8) + patch | 0; + }return (major << 16) + (minor << 8) + patch | 0; }; KotlinVersion.prototype.toString = function () { return this.major.toString() + '.' + this.minor + '.' + this.patch; @@ -43020,8 +46283,7 @@ tmp$_0 = Kotlin.isType(tmp$ = other, KotlinVersion) ? tmp$ : null; if (tmp$_0 == null) { return false; - } - var otherVersion = tmp$_0; + }var otherVersion = tmp$_0; return this.version_0 === otherVersion.version_0; }; KotlinVersion.prototype.hashCode = function () { @@ -43039,15 +46301,14 @@ function KotlinVersion$Companion() { KotlinVersion$Companion_instance = this; this.MAX_COMPONENT_VALUE = 255; - this.CURRENT = new KotlinVersion(1, 3, 40); + this.CURRENT = new KotlinVersion(1, 3, 72); } KotlinVersion$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; var KotlinVersion$Companion_instance = null; function KotlinVersion$Companion_getInstance() { if (KotlinVersion$Companion_instance === null) { new KotlinVersion$Companion(); - } - return KotlinVersion$Companion_instance; + }return KotlinVersion$Companion_instance; } KotlinVersion.$metadata$ = {kind: Kind_CLASS, simpleName: 'KotlinVersion', interfaces: [Comparable]}; function KotlinVersion_init(major, minor, $this) { @@ -43122,8 +46383,7 @@ function UNINITIALIZED_VALUE_getInstance() { if (UNINITIALIZED_VALUE_instance === null) { new UNINITIALIZED_VALUE(); - } - return UNINITIALIZED_VALUE_instance; + }return UNINITIALIZED_VALUE_instance; } function UnsafeLazyImpl(initializer) { this.initializer_0 = initializer; @@ -43134,8 +46394,7 @@ if (this._value_0 === UNINITIALIZED_VALUE_getInstance()) { this._value_0 = ensureNotNull(this.initializer_0)(); this.initializer_0 = null; - } - return (tmp$ = this._value_0) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); + }return (tmp$ = this._value_0) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); }}); UnsafeLazyImpl.prototype.isInitialized = function () { return this._value_0 !== UNINITIALIZED_VALUE_getInstance(); @@ -43160,14 +46419,89 @@ return toString(this.value); }; InitializedLazyImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'InitializedLazyImpl', interfaces: [Serializable, Lazy]}; + var countOneBits_1 = defineInlineFunction('kotlin.kotlin.countOneBits_mz3mee$', wrapFunction(function () { + var countOneBits = _.kotlin.countOneBits_s8ev3n$; + return function ($receiver) { + return countOneBits($receiver & 255); + }; + })); + var countLeadingZeroBits_1 = defineInlineFunction('kotlin.kotlin.countLeadingZeroBits_mz3mee$', wrapFunction(function () { + var Math_0 = Math; + return function ($receiver) { + return Math_0.clz32($receiver & 255) - 24 | 0; + }; + })); + var countTrailingZeroBits_1 = defineInlineFunction('kotlin.kotlin.countTrailingZeroBits_mz3mee$', wrapFunction(function () { + var countTrailingZeroBits = _.kotlin.countTrailingZeroBits_s8ev3n$; + return function ($receiver) { + return countTrailingZeroBits($receiver | 256); + }; + })); + var takeHighestOneBit_1 = defineInlineFunction('kotlin.kotlin.takeHighestOneBit_mz3mee$', wrapFunction(function () { + var takeHighestOneBit = _.kotlin.takeHighestOneBit_s8ev3n$; + var toByte = Kotlin.toByte; + return function ($receiver) { + return toByte(takeHighestOneBit($receiver & 255)); + }; + })); + var takeLowestOneBit_1 = defineInlineFunction('kotlin.kotlin.takeLowestOneBit_mz3mee$', wrapFunction(function () { + var takeLowestOneBit = _.kotlin.takeLowestOneBit_s8ev3n$; + var toByte = Kotlin.toByte; + return function ($receiver) { + return toByte(takeLowestOneBit($receiver)); + }; + })); + function rotateLeft_1($receiver, bitCount) { + return toByte($receiver << (bitCount & 7) | ($receiver & 255) >>> 8 - (bitCount & 7)); + } + function rotateRight_1($receiver, bitCount) { + return toByte($receiver << 8 - (bitCount & 7) | ($receiver & 255) >>> (bitCount & 7)); + } + var countOneBits_2 = defineInlineFunction('kotlin.kotlin.countOneBits_5vcgdc$', wrapFunction(function () { + var countOneBits = _.kotlin.countOneBits_s8ev3n$; + return function ($receiver) { + return countOneBits($receiver & 65535); + }; + })); + var countLeadingZeroBits_2 = defineInlineFunction('kotlin.kotlin.countLeadingZeroBits_5vcgdc$', wrapFunction(function () { + var Math_0 = Math; + return function ($receiver) { + return Math_0.clz32($receiver & 65535) - 16 | 0; + }; + })); + var countTrailingZeroBits_2 = defineInlineFunction('kotlin.kotlin.countTrailingZeroBits_5vcgdc$', wrapFunction(function () { + var countTrailingZeroBits = _.kotlin.countTrailingZeroBits_s8ev3n$; + return function ($receiver) { + return countTrailingZeroBits($receiver | 65536); + }; + })); + var takeHighestOneBit_2 = defineInlineFunction('kotlin.kotlin.takeHighestOneBit_5vcgdc$', wrapFunction(function () { + var takeHighestOneBit = _.kotlin.takeHighestOneBit_s8ev3n$; + var toShort = Kotlin.toShort; + return function ($receiver) { + return toShort(takeHighestOneBit($receiver & 65535)); + }; + })); + var takeLowestOneBit_2 = defineInlineFunction('kotlin.kotlin.takeLowestOneBit_5vcgdc$', wrapFunction(function () { + var takeLowestOneBit = _.kotlin.takeLowestOneBit_s8ev3n$; + var toShort = Kotlin.toShort; + return function ($receiver) { + return toShort(takeLowestOneBit($receiver)); + }; + })); + function rotateLeft_2($receiver, bitCount) { + return toShort($receiver << (bitCount & 15) | ($receiver & 65535) >>> 16 - (bitCount & 15)); + } + function rotateRight_2($receiver, bitCount) { + return toShort($receiver << 16 - (bitCount & 15) | ($receiver & 65535) >>> (bitCount & 15)); + } var require_0 = defineInlineFunction('kotlin.kotlin.require_6taknv$', wrapFunction(function () { var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; return function (value) { if (!value) { var message = 'Failed requirement.'; throw IllegalArgumentException_init(message.toString()); - } - }; + }}; })); var require_1 = defineInlineFunction('kotlin.kotlin.require_4ina18$', wrapFunction(function () { var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; @@ -43175,8 +46509,7 @@ if (!value) { var message = lazyMessage(); throw IllegalArgumentException_init(message.toString()); - } - }; + }}; })); var requireNotNull = defineInlineFunction('kotlin.kotlin.requireNotNull_issdgt$', wrapFunction(function () { var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; @@ -43185,8 +46518,7 @@ if (value == null) { var message = 'Required value was null.'; throw IllegalArgumentException_init(message.toString()); - } - else { + } else { requireNotNull$result = value; } return requireNotNull$result; @@ -43198,8 +46530,7 @@ if (value == null) { var message = lazyMessage(); throw IllegalArgumentException_init(message.toString()); - } - else { + } else { return value; } }; @@ -43210,8 +46541,7 @@ if (!value) { var message = 'Check failed.'; throw IllegalStateException_init(message.toString()); - } - }; + }}; })); var check_0 = defineInlineFunction('kotlin.kotlin.check_4ina18$', wrapFunction(function () { var IllegalStateException_init = _.kotlin.IllegalStateException_init_pdl1vj$; @@ -43219,8 +46549,7 @@ if (!value) { var message = lazyMessage(); throw IllegalStateException_init(message.toString()); - } - }; + }}; })); var checkNotNull = defineInlineFunction('kotlin.kotlin.checkNotNull_issdgt$', wrapFunction(function () { var IllegalStateException_init = _.kotlin.IllegalStateException_init_pdl1vj$; @@ -43229,8 +46558,7 @@ if (value == null) { var message = 'Required value was null.'; throw IllegalStateException_init(message.toString()); - } - else { + } else { checkNotNull$result = value; } return checkNotNull$result; @@ -43242,8 +46570,7 @@ if (value == null) { var message = lazyMessage(); throw IllegalStateException_init(message.toString()); - } - else { + } else { return value; } }; @@ -43308,8 +46635,7 @@ function Result$Companion_getInstance() { if (Result$Companion_instance === null) { new Result$Companion(); - } - return Result$Companion_instance; + }return Result$Companion_instance; } function Result$Failure(exception) { this.exception = exception; @@ -43351,12 +46677,10 @@ var tmp$; try { tmp$ = new Result(block()); - } - catch (e) { + } catch (e) { if (Kotlin.isType(e, Throwable)) { tmp$ = new Result(createFailure(e)); - } - else + } else throw e; } return tmp$; @@ -43370,12 +46694,10 @@ var tmp$; try { tmp$ = new Result(block($receiver)); - } - catch (e) { + } catch (e) { if (Kotlin.isType(e, Throwable)) { tmp$ = new Result(createFailure(e)); - } - else + } else throw e; } return tmp$; @@ -43422,8 +46744,7 @@ var exception = $receiver.exceptionOrNull(); if (exception == null) { tmp$_0 = onSuccess((tmp$ = $receiver.value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE()); - } - else + } else tmp$_0 = onFailure(exception); return tmp$_0; }; @@ -43438,8 +46759,7 @@ if ($receiver.isSuccess) { Result.Companion; tmp$_0 = new Result(transform((tmp$ = $receiver.value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE())); - } - else + } else tmp$_0 = new Result($receiver.value); return tmp$_0; }; @@ -43457,17 +46777,14 @@ try { var tmp$_1; tmp$_0 = new Result_init(transform((tmp$_1 = $receiver.value) == null || Kotlin.isType(tmp$_1, Any) ? tmp$_1 : throwCCE())); - } - catch (e) { + } catch (e) { if (Kotlin.isType(e, Throwable)) { tmp$_0 = new Result_init(createFailure(e)); - } - else + } else throw e; } tmp$ = tmp$_0; - } - else + } else tmp$ = new Result_init($receiver.value); return tmp$; }; @@ -43499,12 +46816,10 @@ var tmp$_0; try { tmp$_0 = new Result(transform(exception)); - } - catch (e) { + } catch (e) { if (Kotlin.isType(e, Throwable)) { tmp$_0 = new Result(createFailure(e)); - } - else + } else throw e; } tmp$ = tmp$_0; @@ -43516,8 +46831,7 @@ var tmp$; if ((tmp$ = $receiver.exceptionOrNull()) != null) { action(tmp$); - } - return $receiver; + }return $receiver; }); var onSuccess = defineInlineFunction('kotlin.kotlin.onSuccess_3t3bof$', wrapFunction(function () { var Any = Object; @@ -43526,8 +46840,7 @@ var tmp$; if ($receiver.isSuccess) { action((tmp$ = $receiver.value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE()); - } - return $receiver; + }return $receiver; }; })); function NotImplementedError(message) { @@ -43665,8 +46978,7 @@ function UByte$Companion_getInstance() { if (UByte$Companion_instance === null) { new UByte$Companion(); - } - return UByte$Companion_instance; + }return UByte$Companion_instance; } UByte.prototype.compareTo_11rb$ = defineInlineFunction('kotlin.kotlin.UByte.compareTo_11rb$', function (other) { return Kotlin.primitiveCompareTo(this.data & 255, other.data & 255); @@ -43987,8 +47299,7 @@ var tmp$; if (this.index_0 < this.array_0.length) { return new UByte(this.array_0[tmp$ = this.index_0, this.index_0 = tmp$ + 1 | 0, tmp$]); - } - else + } else throw new NoSuchElementException(this.index_0.toString()); }; UByteArray$Iterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'Iterator', interfaces: [UByteIterator]}; @@ -44007,19 +47318,16 @@ if (Kotlin.isType($receiver, Collection) && $receiver.isEmpty()) { all$result = true; break all$break; - } - tmp$_0 = $receiver.iterator(); + }tmp$_0 = $receiver.iterator(); while (tmp$_0.hasNext()) { var element = tmp$_0.next(); var tmp$_1 = Kotlin.isType(element, UByte); if (tmp$_1) { tmp$_1 = contains_0(this.storage, element.data); - } - if (!tmp$_1) { + }if (!tmp$_1) { all$result = false; break all$break; - } - } + }} all$result = true; } while (false); @@ -44078,8 +47386,7 @@ function UInt$Companion_getInstance() { if (UInt$Companion_instance === null) { new UInt$Companion(); - } - return UInt$Companion_instance; + }return UInt$Companion_instance; } UInt.prototype.compareTo_mpmjao$ = defineInlineFunction('kotlin.kotlin.UInt.compareTo_mpmjao$', wrapFunction(function () { var UInt_init = _.kotlin.UInt; @@ -44429,8 +47736,7 @@ var tmp$; if (this.index_0 < this.array_0.length) { return new UInt(this.array_0[tmp$ = this.index_0, this.index_0 = tmp$ + 1 | 0, tmp$]); - } - else + } else throw new NoSuchElementException(this.index_0.toString()); }; UIntArray$Iterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'Iterator', interfaces: [UIntIterator]}; @@ -44449,19 +47755,16 @@ if (Kotlin.isType($receiver, Collection) && $receiver.isEmpty()) { all$result = true; break all$break; - } - tmp$_0 = $receiver.iterator(); + }tmp$_0 = $receiver.iterator(); while (tmp$_0.hasNext()) { var element = tmp$_0.next(); var tmp$_1 = Kotlin.isType(element, UInt); if (tmp$_1) { tmp$_1 = contains_2(this.storage, element.data); - } - if (!tmp$_1) { + }if (!tmp$_1) { all$result = false; break all$break; - } - } + }} all$result = true; } while (false); @@ -44518,8 +47821,7 @@ var tmp$ = uintCompare(this.first.data, value.data) <= 0; if (tmp$) { tmp$ = uintCompare(value.data, this.last.data) <= 0; - } - return tmp$; + }return tmp$; }; UIntRange.prototype.isEmpty = function () { return uintCompare(this.first.data, this.last.data) > 0; @@ -44543,8 +47845,7 @@ function UIntRange$Companion_getInstance() { if (UIntRange$Companion_instance === null) { new UIntRange$Companion(); - } - return UIntRange$Companion_instance; + }return UIntRange$Companion_instance; } UIntRange.$metadata$ = {kind: Kind_CLASS, simpleName: 'UIntRange', interfaces: [ClosedRange, UIntProgression]}; function UIntProgression(start, endInclusive, step) { @@ -44584,8 +47885,7 @@ function UIntProgression$Companion_getInstance() { if (UIntProgression$Companion_instance === null) { new UIntProgression$Companion(); - } - return UIntProgression$Companion_instance; + }return UIntProgression$Companion_instance; } UIntProgression.$metadata$ = {kind: Kind_CLASS, simpleName: 'UIntProgression', interfaces: [Iterable]}; function UIntProgressionIterator(first, last, step) { @@ -44604,8 +47904,7 @@ if (!this.hasNext_0) throw NoSuchElementException_init(); this.hasNext_0 = false; - } - else { + } else { this.next_0 = new UInt(this.next_0.data + this.step_0.data | 0); } return value; @@ -44651,8 +47950,7 @@ function ULong$Companion_getInstance() { if (ULong$Companion_instance === null) { new ULong$Companion(); - } - return ULong$Companion_instance; + }return ULong$Companion_instance; } ULong.prototype.compareTo_mpmjao$ = defineInlineFunction('kotlin.kotlin.ULong.compareTo_mpmjao$', wrapFunction(function () { var L255 = Kotlin.Long.fromInt(255); @@ -45010,8 +48308,7 @@ var tmp$; if (this.index_0 < this.array_0.length) { return new ULong(this.array_0[tmp$ = this.index_0, this.index_0 = tmp$ + 1 | 0, tmp$]); - } - else + } else throw new NoSuchElementException(this.index_0.toString()); }; ULongArray$Iterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'Iterator', interfaces: [ULongIterator]}; @@ -45030,19 +48327,16 @@ if (Kotlin.isType($receiver, Collection) && $receiver.isEmpty()) { all$result = true; break all$break; - } - tmp$_0 = $receiver.iterator(); + }tmp$_0 = $receiver.iterator(); while (tmp$_0.hasNext()) { var element = tmp$_0.next(); var tmp$_1 = Kotlin.isType(element, ULong); if (tmp$_1) { tmp$_1 = contains_3(this.storage, element.data); - } - if (!tmp$_1) { + }if (!tmp$_1) { all$result = false; break all$break; - } - } + }} all$result = true; } while (false); @@ -45099,8 +48393,7 @@ var tmp$ = ulongCompare(this.first.data, value.data) <= 0; if (tmp$) { tmp$ = ulongCompare(value.data, this.last.data) <= 0; - } - return tmp$; + }return tmp$; }; ULongRange_0.prototype.isEmpty = function () { return ulongCompare(this.first.data, this.last.data) > 0; @@ -45124,8 +48417,7 @@ function ULongRange$Companion_getInstance() { if (ULongRange$Companion_instance === null) { new ULongRange$Companion(); - } - return ULongRange$Companion_instance; + }return ULongRange$Companion_instance; } ULongRange_0.$metadata$ = {kind: Kind_CLASS, simpleName: 'ULongRange', interfaces: [ClosedRange, ULongProgression]}; function ULongProgression(start, endInclusive, step) { @@ -45165,8 +48457,7 @@ function ULongProgression$Companion_getInstance() { if (ULongProgression$Companion_instance === null) { new ULongProgression$Companion(); - } - return ULongProgression$Companion_instance; + }return ULongProgression$Companion_instance; } ULongProgression.$metadata$ = {kind: Kind_CLASS, simpleName: 'ULongProgression', interfaces: [Iterable]}; function ULongProgressionIterator(first, last, step) { @@ -45185,8 +48476,7 @@ if (!this.hasNext_0) throw NoSuchElementException_init(); this.hasNext_0 = false; - } - else { + } else { this.next_0 = new ULong(this.next_0.data.add(this.step_0.data)); } return value; @@ -45216,6 +48506,196 @@ return maxOf(a, b); }; })); + var countOneBits_3 = defineInlineFunction('kotlin.kotlin.countOneBits_mpial4$', wrapFunction(function () { + var countOneBits = _.kotlin.countOneBits_s8ev3n$; + return function ($receiver) { + return countOneBits($receiver.data); + }; + })); + var countLeadingZeroBits_3 = defineInlineFunction('kotlin.kotlin.countLeadingZeroBits_mpial4$', wrapFunction(function () { + var Math_0 = Math; + return function ($receiver) { + return Math_0.clz32($receiver.data); + }; + })); + var countTrailingZeroBits_3 = defineInlineFunction('kotlin.kotlin.countTrailingZeroBits_mpial4$', wrapFunction(function () { + var countTrailingZeroBits = _.kotlin.countTrailingZeroBits_s8ev3n$; + return function ($receiver) { + return countTrailingZeroBits($receiver.data); + }; + })); + var takeHighestOneBit_3 = defineInlineFunction('kotlin.kotlin.takeHighestOneBit_mpial4$', wrapFunction(function () { + var takeHighestOneBit = _.kotlin.takeHighestOneBit_s8ev3n$; + var UInt_init = _.kotlin.UInt; + return function ($receiver) { + return new UInt_init(takeHighestOneBit($receiver.data)); + }; + })); + var takeLowestOneBit_3 = defineInlineFunction('kotlin.kotlin.takeLowestOneBit_mpial4$', wrapFunction(function () { + var takeLowestOneBit = _.kotlin.takeLowestOneBit_s8ev3n$; + var UInt_init = _.kotlin.UInt; + return function ($receiver) { + return new UInt_init(takeLowestOneBit($receiver.data)); + }; + })); + var rotateLeft_3 = defineInlineFunction('kotlin.kotlin.rotateLeft_k13f4a$', wrapFunction(function () { + var rotateLeft = _.kotlin.rotateLeft_dqglrj$; + var UInt_init = _.kotlin.UInt; + return function ($receiver, bitCount) { + return new UInt_init(rotateLeft($receiver.data, bitCount)); + }; + })); + var rotateRight_3 = defineInlineFunction('kotlin.kotlin.rotateRight_k13f4a$', wrapFunction(function () { + var rotateRight = _.kotlin.rotateRight_dqglrj$; + var UInt_init = _.kotlin.UInt; + return function ($receiver, bitCount) { + return new UInt_init(rotateRight($receiver.data, bitCount)); + }; + })); + var countOneBits_4 = defineInlineFunction('kotlin.kotlin.countOneBits_6e1d9n$', wrapFunction(function () { + var countOneBits = _.kotlin.countOneBits_mts6qi$; + return function ($receiver) { + return countOneBits($receiver.data); + }; + })); + var countLeadingZeroBits_4 = defineInlineFunction('kotlin.kotlin.countLeadingZeroBits_6e1d9n$', wrapFunction(function () { + var countLeadingZeroBits = _.kotlin.countLeadingZeroBits_mts6qi$; + return function ($receiver) { + return countLeadingZeroBits($receiver.data); + }; + })); + var countTrailingZeroBits_4 = defineInlineFunction('kotlin.kotlin.countTrailingZeroBits_6e1d9n$', wrapFunction(function () { + var countTrailingZeroBits = _.kotlin.countTrailingZeroBits_mts6qi$; + return function ($receiver) { + return countTrailingZeroBits($receiver.data); + }; + })); + var takeHighestOneBit_4 = defineInlineFunction('kotlin.kotlin.takeHighestOneBit_6e1d9n$', wrapFunction(function () { + var takeHighestOneBit = _.kotlin.takeHighestOneBit_mts6qi$; + var ULong_init = _.kotlin.ULong; + return function ($receiver) { + return new ULong_init(takeHighestOneBit($receiver.data)); + }; + })); + var takeLowestOneBit_4 = defineInlineFunction('kotlin.kotlin.takeLowestOneBit_6e1d9n$', wrapFunction(function () { + var takeLowestOneBit = _.kotlin.takeLowestOneBit_mts6qi$; + var ULong_init = _.kotlin.ULong; + return function ($receiver) { + return new ULong_init(takeLowestOneBit($receiver.data)); + }; + })); + var rotateLeft_4 = defineInlineFunction('kotlin.kotlin.rotateLeft_hc3rh$', wrapFunction(function () { + var rotateLeft = _.kotlin.rotateLeft_if0zpk$; + var ULong_init = _.kotlin.ULong; + return function ($receiver, bitCount) { + return new ULong_init(rotateLeft($receiver.data, bitCount)); + }; + })); + var rotateRight_4 = defineInlineFunction('kotlin.kotlin.rotateRight_hc3rh$', wrapFunction(function () { + var rotateLeft = _.kotlin.rotateLeft_if0zpk$; + var ULong_init = _.kotlin.ULong; + return function ($receiver, bitCount) { + return new ULong_init(rotateLeft($receiver.data, -bitCount | 0)); + }; + })); + var countOneBits_5 = defineInlineFunction('kotlin.kotlin.countOneBits_68pxlr$', wrapFunction(function () { + var UInt_init = _.kotlin.UInt; + var countOneBits = _.kotlin.countOneBits_s8ev3n$; + return function ($receiver) { + return countOneBits((new UInt_init($receiver.data & 255)).data); + }; + })); + var countLeadingZeroBits_5 = defineInlineFunction('kotlin.kotlin.countLeadingZeroBits_68pxlr$', wrapFunction(function () { + var Math_0 = Math; + return function ($receiver) { + return Math_0.clz32($receiver.data & 255) - 24 | 0; + }; + })); + var countTrailingZeroBits_5 = defineInlineFunction('kotlin.kotlin.countTrailingZeroBits_68pxlr$', wrapFunction(function () { + var countTrailingZeroBits = _.kotlin.countTrailingZeroBits_s8ev3n$; + return function ($receiver) { + return countTrailingZeroBits($receiver.data | 256); + }; + })); + var takeHighestOneBit_5 = defineInlineFunction('kotlin.kotlin.takeHighestOneBit_68pxlr$', wrapFunction(function () { + var takeHighestOneBit = _.kotlin.takeHighestOneBit_s8ev3n$; + var toByte = Kotlin.toByte; + var UByte_init = _.kotlin.UByte; + return function ($receiver) { + return new UByte_init(toByte(takeHighestOneBit($receiver.data & 255))); + }; + })); + var takeLowestOneBit_5 = defineInlineFunction('kotlin.kotlin.takeLowestOneBit_68pxlr$', wrapFunction(function () { + var takeLowestOneBit = _.kotlin.takeLowestOneBit_s8ev3n$; + var toByte = Kotlin.toByte; + var UByte_init = _.kotlin.UByte; + return function ($receiver) { + return new UByte_init(toByte(takeLowestOneBit($receiver.data & 255))); + }; + })); + var rotateLeft_5 = defineInlineFunction('kotlin.kotlin.rotateLeft_aogav3$', wrapFunction(function () { + var rotateLeft = _.kotlin.rotateLeft_798l30$; + var UByte_init = _.kotlin.UByte; + return function ($receiver, bitCount) { + return new UByte_init(rotateLeft($receiver.data, bitCount)); + }; + })); + var rotateRight_5 = defineInlineFunction('kotlin.kotlin.rotateRight_aogav3$', wrapFunction(function () { + var rotateRight = _.kotlin.rotateRight_798l30$; + var UByte_init = _.kotlin.UByte; + return function ($receiver, bitCount) { + return new UByte_init(rotateRight($receiver.data, bitCount)); + }; + })); + var countOneBits_6 = defineInlineFunction('kotlin.kotlin.countOneBits_bso16t$', wrapFunction(function () { + var UInt_init = _.kotlin.UInt; + var countOneBits = _.kotlin.countOneBits_s8ev3n$; + return function ($receiver) { + return countOneBits((new UInt_init($receiver.data & 65535)).data); + }; + })); + var countLeadingZeroBits_6 = defineInlineFunction('kotlin.kotlin.countLeadingZeroBits_bso16t$', wrapFunction(function () { + var Math_0 = Math; + return function ($receiver) { + return Math_0.clz32($receiver.data & 65535) - 16 | 0; + }; + })); + var countTrailingZeroBits_6 = defineInlineFunction('kotlin.kotlin.countTrailingZeroBits_bso16t$', wrapFunction(function () { + var countTrailingZeroBits = _.kotlin.countTrailingZeroBits_s8ev3n$; + return function ($receiver) { + return countTrailingZeroBits($receiver.data | 65536); + }; + })); + var takeHighestOneBit_6 = defineInlineFunction('kotlin.kotlin.takeHighestOneBit_bso16t$', wrapFunction(function () { + var takeHighestOneBit = _.kotlin.takeHighestOneBit_s8ev3n$; + var toShort = Kotlin.toShort; + var UShort_init = _.kotlin.UShort; + return function ($receiver) { + return new UShort_init(toShort(takeHighestOneBit($receiver.data & 65535))); + }; + })); + var takeLowestOneBit_6 = defineInlineFunction('kotlin.kotlin.takeLowestOneBit_bso16t$', wrapFunction(function () { + var takeLowestOneBit = _.kotlin.takeLowestOneBit_s8ev3n$; + var toShort = Kotlin.toShort; + var UShort_init = _.kotlin.UShort; + return function ($receiver) { + return new UShort_init(toShort(takeLowestOneBit($receiver.data & 65535))); + }; + })); + var rotateLeft_6 = defineInlineFunction('kotlin.kotlin.rotateLeft_pqjt0d$', wrapFunction(function () { + var rotateLeft = _.kotlin.rotateLeft_di2vk2$; + var UShort_init = _.kotlin.UShort; + return function ($receiver, bitCount) { + return new UShort_init(rotateLeft($receiver.data, bitCount)); + }; + })); + var rotateRight_6 = defineInlineFunction('kotlin.kotlin.rotateRight_pqjt0d$', wrapFunction(function () { + var rotateRight = _.kotlin.rotateRight_di2vk2$; + var UShort_init = _.kotlin.UShort; + return function ($receiver, bitCount) { + return new UShort_init(rotateRight($receiver.data, bitCount)); + }; + })); function differenceModulo_1(a, b, c) { var ac = uintRemainder(a, c); var bc = uintRemainder(b, c); @@ -45229,21 +48709,17 @@ function getProgressionLastElement_1(start, end, step) { if (step > 0) { return uintCompare(start.data, end.data) >= 0 ? end : new UInt(end.data - differenceModulo_1(end, start, new UInt(step)).data | 0); - } - else if (step < 0) { + } else if (step < 0) { return uintCompare(start.data, end.data) <= 0 ? end : new UInt(end.data + differenceModulo_1(start, end, new UInt(-step | 0)).data | 0); - } - else + } else throw IllegalArgumentException_init_0('Step is zero.'); } function getProgressionLastElement_2(start, end, step) { if (step.toNumber() > 0) { return ulongCompare(start.data, end.data) >= 0 ? end : new ULong(end.data.subtract(differenceModulo_2(end, start, new ULong(step)).data)); - } - else if (step.toNumber() < 0) { + } else if (step.toNumber() < 0) { return ulongCompare(start.data, end.data) <= 0 ? end : new ULong(end.data.add(differenceModulo_2(start, end, new ULong(step.unaryMinus())).data)); - } - else + } else throw IllegalArgumentException_init_0('Step is zero.'); } function UShort(data) { @@ -45262,8 +48738,7 @@ function UShort$Companion_getInstance() { if (UShort$Companion_instance === null) { new UShort$Companion(); - } - return UShort$Companion_instance; + }return UShort$Companion_instance; } UShort.prototype.compareTo_mpmjao$ = defineInlineFunction('kotlin.kotlin.UShort.compareTo_mpmjao$', function (other) { return Kotlin.primitiveCompareTo(this.data & 65535, other.data & 255); @@ -45583,8 +49058,7 @@ var tmp$; if (this.index_0 < this.array_0.length) { return new UShort(this.array_0[tmp$ = this.index_0, this.index_0 = tmp$ + 1 | 0, tmp$]); - } - else + } else throw new NoSuchElementException(this.index_0.toString()); }; UShortArray$Iterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'Iterator', interfaces: [UShortIterator]}; @@ -45603,19 +49077,16 @@ if (Kotlin.isType($receiver, Collection) && $receiver.isEmpty()) { all$result = true; break all$break; - } - tmp$_0 = $receiver.iterator(); + }tmp$_0 = $receiver.iterator(); while (tmp$_0.hasNext()) { var element = tmp$_0.next(); var tmp$_1 = Kotlin.isType(element, UShort); if (tmp$_1) { tmp$_1 = contains_1(this.storage, element.data); - } - if (!tmp$_1) { + }if (!tmp$_1) { all$result = false; break all$break; - } - } + }} all$result = true; } while (false); @@ -45665,7 +49136,7 @@ return toString_3($receiver.data & 65535, radix); } function toString_6($receiver, radix) { - return toString_2(Kotlin.Long.fromInt($receiver.data).and(L4294967295), radix); + return toString_0(Kotlin.Long.fromInt($receiver.data).and(L4294967295), radix); } function toString_7($receiver, radix) { return ulongToString_0($receiver.data, checkRadix(radix)); @@ -45710,8 +49181,7 @@ tmp$ = toUIntOrNull_0($receiver, radix); if (tmp$ == null) { return null; - } - var int = tmp$; + }var int = tmp$; if (uintCompare(int.data, (new UInt(UByte$Companion_getInstance().MAX_VALUE.data & 255)).data) > 0) return null; return new UByte(toByte(int.data)); @@ -45724,8 +49194,7 @@ tmp$ = toUIntOrNull_0($receiver, radix); if (tmp$ == null) { return null; - } - var int = tmp$; + }var int = tmp$; if (uintCompare(int.data, (new UInt(UShort$Companion_getInstance().MAX_VALUE.data & 65535)).data) > 0) return null; return new UShort(toShort(int.data)); @@ -45745,20 +49214,26 @@ if (length === 1 || firstChar !== 43) return null; start = 1; - } - else { + } else { start = 0; } + var limitForMaxRadix = new UInt(119304647); + var limitBeforeMul = limitForMaxRadix; var uradix = new UInt(radix); - var limitBeforeMul = uintDivide(limit, uradix); var result = new UInt(0); for (var i = start; i < length; i++) { var digit = digitOf($receiver.charCodeAt(i), radix); if (digit < 0) return null; - if (uintCompare(result.data, limitBeforeMul.data) > 0) - return null; - result = new UInt(Kotlin.imul(result.data, uradix.data)); + if (uintCompare(result.data, limitBeforeMul.data) > 0) { + if (limitBeforeMul != null ? limitBeforeMul.equals(limitForMaxRadix) : null) { + limitBeforeMul = uintDivide(limit, uradix); + if (uintCompare(result.data, limitBeforeMul.data) > 0) { + return null; + }} else { + return null; + } + }result = new UInt(Kotlin.imul(result.data, uradix.data)); var beforeAdding = result; result = new UInt(result.data + (new UInt(digit)).data | 0); if (uintCompare(result.data, beforeAdding.data) < 0) @@ -45781,20 +49256,26 @@ if (length === 1 || firstChar !== 43) return null; start = 1; - } - else { + } else { start = 0; } - var uradix = new UInt(radix); - var limitBeforeMul = ulongDivide(limit, new ULong(Kotlin.Long.fromInt(uradix.data).and(L4294967295))); + var limitForMaxRadix = new ULong(new Kotlin.Long(477218588, 119304647)); + var limitBeforeMul = limitForMaxRadix; + var uradix = new ULong(Kotlin.Long.fromInt(radix)); var result = new ULong(Kotlin.Long.ZERO); for (var i = start; i < length; i++) { var digit = digitOf($receiver.charCodeAt(i), radix); if (digit < 0) return null; - if (ulongCompare(result.data, limitBeforeMul.data) > 0) - return null; - result = new ULong(result.data.multiply((new ULong(Kotlin.Long.fromInt(uradix.data).and(L4294967295))).data)); + if (ulongCompare(result.data, limitBeforeMul.data) > 0) { + if (limitBeforeMul != null ? limitBeforeMul.equals(limitForMaxRadix) : null) { + limitBeforeMul = ulongDivide(limit, uradix); + if (ulongCompare(result.data, limitBeforeMul.data) > 0) { + return null; + }} else { + return null; + } + }result = new ULong(result.data.multiply(uradix.data)); var beforeAdding = result; result = new ULong(result.data.add((new ULong(Kotlin.Long.fromInt((new UInt(digit)).data).and(L4294967295))).data)); if (ulongCompare(result.data, beforeAdding.data) < 0) @@ -45819,11 +49300,9 @@ var divisor = v2.data; if (divisor.toNumber() < 0) { return ulongCompare(v1.data, v2.data) < 0 ? new ULong(L0) : new ULong(L1); - } - if (dividend.toNumber() >= 0) { + }if (dividend.toNumber() >= 0) { return new ULong(dividend.div(divisor)); - } - var quotient = dividend.shiftRightUnsigned(1).div(divisor).shiftLeft(1); + }var quotient = dividend.shiftRightUnsigned(1).div(divisor).shiftLeft(1); var rem = dividend.subtract(quotient.multiply(divisor)); return new ULong(quotient.add(Kotlin.Long.fromInt(ulongCompare((new ULong(rem)).data, (new ULong(divisor)).data) >= 0 ? 1 : 0))); } @@ -45834,16 +49313,13 @@ if (divisor.toNumber() < 0) { if (ulongCompare(v1.data, v2.data) < 0) { tmp$ = v1; - } - else { + } else { tmp$ = new ULong(v1.data.subtract(v2.data)); } return tmp$; - } - if (dividend.toNumber() >= 0) { + }if (dividend.toNumber() >= 0) { return new ULong(dividend.modulo(divisor)); - } - var quotient = dividend.shiftRightUnsigned(1).div(divisor).shiftLeft(1); + }var quotient = dividend.shiftRightUnsigned(1).div(divisor).shiftLeft(1); var rem = dividend.subtract(quotient.multiply(divisor)); return new ULong(rem.subtract(ulongCompare((new ULong(rem)).data, (new ULong(divisor)).data) >= 0 ? divisor : L0)); } @@ -45858,8 +49334,7 @@ return UInt$Companion_getInstance().MAX_VALUE; else if (v <= 2147483647) { return new UInt(numberToInt(v)); - } - else { + } else { return new UInt((new UInt(numberToInt(v - 2147483647))).data + (new UInt(2147483647)).data | 0); } } @@ -45876,8 +49351,7 @@ return ULong$Companion_getInstance().MAX_VALUE; else if (v < Long$Companion$MAX_VALUE.toNumber()) { return new ULong(Kotlin.Long.fromNumber(v)); - } - else { + } else { return new ULong((new ULong(Kotlin.Long.fromNumber(v - 9.223372036854776E18))).data.add((new ULong(Kotlin.Long.MIN_VALUE)).data)); } } @@ -45894,14 +49368,13 @@ } function ulongToString_0(v, base) { if (v.toNumber() >= 0) - return toString_2(v, base); + return toString_0(v, base); var quotient = v.shiftRightUnsigned(1).div(Kotlin.Long.fromInt(base)).shiftLeft(1); var rem = v.subtract(quotient.multiply(Kotlin.Long.fromInt(base))); if (rem.toNumber() >= base) { rem = rem.subtract(Kotlin.Long.fromInt(base)); quotient = quotient.add(Kotlin.Long.fromInt(1)); - } - return toString_2(quotient, base) + toString_2(rem, base); + }return toString_0(quotient, base) + toString_0(rem, base); } function ExperimentalUnsignedTypes() { } @@ -46065,6 +49538,15 @@ package$collections.random_k31a39$ = random_14; package$collections.random_mwcbea$ = random_15; package$collections.random_8kgqmy$ = random_16; + package$collections.randomOrNull_lj338n$ = randomOrNull_8; + package$collections.randomOrNull_ciead0$ = randomOrNull_9; + package$collections.randomOrNull_wayomy$ = randomOrNull_10; + package$collections.randomOrNull_os0q87$ = randomOrNull_11; + package$collections.randomOrNull_2uk8lc$ = randomOrNull_12; + package$collections.randomOrNull_zcvl96$ = randomOrNull_13; + package$collections.randomOrNull_k31a39$ = randomOrNull_14; + package$collections.randomOrNull_mwcbea$ = randomOrNull_15; + package$collections.randomOrNull_8kgqmy$ = randomOrNull_16; package$collections.single_us0mfu$ = single; package$collections.single_964n91$ = single_0; package$collections.single_i2lc79$ = single_1; @@ -46823,6 +50305,15 @@ package$collections.reduceIndexed_i4uovg$ = reduceIndexed_5; package$collections.reduceIndexed_fqu0be$ = reduceIndexed_6; package$collections.reduceIndexed_n25zu4$ = reduceIndexed_7; + package$collections.reduceOrNull_5bz9yp$ = reduceOrNull; + package$collections.reduceOrNull_ua0gmo$ = reduceOrNull_0; + package$collections.reduceOrNull_5x6csy$ = reduceOrNull_1; + package$collections.reduceOrNull_vuuzha$ = reduceOrNull_2; + package$collections.reduceOrNull_8z4g8g$ = reduceOrNull_3; + package$collections.reduceOrNull_m57mj6$ = reduceOrNull_4; + package$collections.reduceOrNull_5rthjk$ = reduceOrNull_5; + package$collections.reduceOrNull_if3lfm$ = reduceOrNull_6; + package$collections.reduceOrNull_724a40$ = reduceOrNull_7; package$collections.reduceRight_m9c08d$ = reduceRight; package$collections.reduceRight_ua0gmo$ = reduceRight_0; package$collections.reduceRight_5x6csy$ = reduceRight_1; @@ -46841,6 +50332,20 @@ package$collections.reduceRightIndexed_i4uovg$ = reduceRightIndexed_5; package$collections.reduceRightIndexed_fqu0be$ = reduceRightIndexed_6; package$collections.reduceRightIndexed_n25zu4$ = reduceRightIndexed_7; + package$collections.reduceRightOrNull_m9c08d$ = reduceRightOrNull; + package$collections.reduceRightOrNull_ua0gmo$ = reduceRightOrNull_0; + package$collections.reduceRightOrNull_5x6csy$ = reduceRightOrNull_1; + package$collections.reduceRightOrNull_vuuzha$ = reduceRightOrNull_2; + package$collections.reduceRightOrNull_8z4g8g$ = reduceRightOrNull_3; + package$collections.reduceRightOrNull_m57mj6$ = reduceRightOrNull_4; + package$collections.reduceRightOrNull_5rthjk$ = reduceRightOrNull_5; + package$collections.reduceRightOrNull_if3lfm$ = reduceRightOrNull_6; + package$collections.reduceRightOrNull_724a40$ = reduceRightOrNull_7; + package$collections.listOf_mh5how$ = listOf; + package$collections.scan_agj4oo$ = scan; + package$collections.scanIndexed_oj0mn0$ = scanIndexed; + package$collections.scanReduce_5bz9yp$ = scanReduce; + package$collections.scanReduceIndexed_f61gul$ = scanReduceIndexed; package$collections.sumBy_9qh8u2$ = sumBy; package$collections.sumBy_s616nk$ = sumBy_0; package$collections.sumBy_sccsus$ = sumBy_1; @@ -47012,6 +50517,7 @@ package$collections.lastOrNull_7wnvza$ = lastOrNull_17; package$collections.lastOrNull_2p1efm$ = lastOrNull_18; package$collections.random_iscd7z$ = random_18; + package$collections.randomOrNull_iscd7z$ = randomOrNull_18; package$collections.single_7wnvza$ = single_17; package$collections.single_2p1efm$ = single_18; package$collections.single_6jwkkr$ = single_19; @@ -47118,8 +50624,14 @@ package$collections.onEach_w8vc4v$ = onEach; package$collections.reduce_lrrcxv$ = reduce_8; package$collections.reduceIndexed_8txfjb$ = reduceIndexed_8; + package$collections.reduceOrNull_lrrcxv$ = reduceOrNull_8; package$collections.reduceRight_y5l5zf$ = reduceRight_8; package$collections.reduceRightIndexed_1a67zb$ = reduceRightIndexed_8; + package$collections.reduceRightOrNull_y5l5zf$ = reduceRightOrNull_8; + package$collections.scan_l1hrho$ = scan_8; + package$collections.scanIndexed_a080b4$ = scanIndexed_8; + package$collections.scanReduce_lrrcxv$ = scanReduce_8; + package$collections.scanReduceIndexed_8txfjb$ = scanReduceIndexed_8; package$collections.sumBy_1nckxa$ = sumBy_8; package$collections.sumByDouble_k0tf9a$ = sumByDouble_8; package$collections.requireNoNulls_m3lr2h$ = requireNoNulls_0; @@ -47188,6 +50700,9 @@ package$ranges.random_xmiyix$ = random_22; package$ranges.random_6753zu$ = random_23; package$ranges.random_bx1m1g$ = random_24; + package$ranges.randomOrNull_xmiyix$ = randomOrNull_22; + package$ranges.randomOrNull_6753zu$ = randomOrNull_23; + package$ranges.randomOrNull_bx1m1g$ = randomOrNull_24; package$ranges.contains_8t4apg$ = contains_12; package$ranges.contains_ptt68h$ = contains_13; package$ranges.contains_a0sexr$ = contains_14; @@ -47391,6 +50906,11 @@ package$sequences.onEach_o41pun$ = onEach_1; package$sequences.reduce_linb1r$ = reduce_9; package$sequences.reduceIndexed_8denzp$ = reduceIndexed_9; + package$sequences.reduceOrNull_linb1r$ = reduceOrNull_9; + package$sequences.scan_azbry2$ = scan_9; + package$sequences.scanIndexed_wxmp26$ = scanIndexed_9; + package$sequences.scanReduce_linb1r$ = scanReduce_9; + package$sequences.scanReduceIndexed_8denzp$ = scanReduceIndexed_9; package$sequences.sumBy_gvemys$ = sumBy_9; package$sequences.sumByDouble_b4hqx8$ = sumByDouble_9; package$sequences.requireNoNulls_q2m9h7$ = requireNoNulls_2; @@ -47450,6 +50970,7 @@ package$text.last_2pivbd$ = last_24; package$text.lastOrNull_gw00vp$ = lastOrNull_23; package$text.random_kewcp8$ = random_26; + package$text.randomOrNull_kewcp8$ = randomOrNull_26; package$text.single_gw00vp$ = single_22; package$text.single_2pivbd$ = single_23; package$text.singleOrNull_gw00vp$ = singleOrNull_22; @@ -47534,8 +51055,14 @@ package$text.onEach_jdhw1f$ = onEach_2; package$text.reduce_bc19pa$ = reduce_10; package$text.reduceIndexed_8uyn22$ = reduceIndexed_10; + package$text.reduceOrNull_bc19pa$ = reduceOrNull_10; package$text.reduceRight_bc19pa$ = reduceRight_9; package$text.reduceRightIndexed_8uyn22$ = reduceRightIndexed_9; + package$text.reduceRightOrNull_bc19pa$ = reduceRightOrNull_9; + package$text.scan_riyz04$ = scan_10; + package$text.scanIndexed_l9i73k$ = scanIndexed_10; + package$text.scanReduce_bc19pa$ = scanReduce_10; + package$text.scanReduceIndexed_8uyn22$ = scanReduceIndexed_10; package$text.sumBy_kg4n8i$ = sumBy_10; package$text.sumByDouble_4bpanu$ = sumByDouble_10; package$text.chunked_94bcnn$ = chunked_3; @@ -47578,6 +51105,10 @@ package$collections.random_2qnwpx$ = random_32; package$collections.random_i3mfo9$ = random_33; package$collections.random_7icwln$ = random_34; + package$collections.randomOrNull_b7l3ya$ = randomOrNull_31; + package$collections.randomOrNull_2qnwpx$ = randomOrNull_32; + package$collections.randomOrNull_i3mfo9$ = randomOrNull_33; + package$collections.randomOrNull_7icwln$ = randomOrNull_34; package$kotlin.UInt = UInt; package$kotlin.ULong = ULong; package$kotlin.UByte = UByte; @@ -47666,6 +51197,10 @@ package$collections.copyOfRange_2n8m0j$ = copyOfRange_7; package$collections.copyOfRange_ietg8x$ = copyOfRange_4; package$collections.copyOfRange_qxueih$ = copyOfRange_5; + package$collections.fill_9p0cei$ = fill; + package$collections.fill_u0vwim$ = fill_0; + package$collections.fill_i88zna$ = fill_1; + package$collections.fill_ujo1re$ = fill_2; package$collections.plus_c03ot6$ = plus_30; package$collections.plus_uxdaoa$ = plus_31; package$collections.plus_jlnu8a$ = plus_28; @@ -47744,6 +51279,8 @@ package$comparisons.minOf_2ahd1g$ = minOf_4; package$ranges.random_7v08js$ = random_37; package$ranges.random_nk0vix$ = random_38; + package$ranges.randomOrNull_7v08js$ = randomOrNull_37; + package$ranges.randomOrNull_nk0vix$ = randomOrNull_38; package$ranges.contains_dwk81l$ = contains_45; package$ranges.contains_jxvyg8$ = contains_46; package$ranges.contains_at9xrl$ = contains_47; @@ -47929,6 +51466,8 @@ package$intrinsics.createCoroutineUnintercepted_x18nsh$ = createCoroutineUnintercepted; package$intrinsics.createCoroutineUnintercepted_3a617i$ = createCoroutineUnintercepted_0; package$intrinsics.intercepted_f9mg25$ = intercepted; + var package$js = package$kotlin.js || (package$kotlin.js = {}); + package$js.isArrayish_kcmwxo$ = isArrayish; package$kotlin.emptyArray_287e2$ = emptyArray; package$kotlin.lazy_klfg04$ = lazy; package$kotlin.lazy_kls4a0$ = lazy_0; @@ -47939,6 +51478,11 @@ package$kotlin.fillFromCollection_40q1uj$ = fillFromCollection; package$kotlin.copyArrayType_dgzutr$ = copyArrayType; package$kotlin.jsIsType_dgzutr$ = jsIsType; + package$math.withSign_38ydlf$ = withSign; + package$kotlin.Long_6xvm5r$ = Long; + package$kotlin.get_low_nzsbcz$ = get_low; + package$kotlin.get_high_nzsbcz$ = get_high; + package$text.toString_if0zpk$ = toString_0; package$collections.elementAt_8ujjk8$ = elementAt_2; package$collections.elementAt_mrm5p$ = elementAt_3; package$collections.elementAt_m2jy6x$ = elementAt_4; @@ -47966,6 +51510,15 @@ package$collections.copyOfRange_yfnal4$ = copyOfRange_9; package$collections.copyOfRange_ke2ov9$ = copyOfRange_10; package$collections.copyOfRange_wlitf7$ = copyOfRange_11; + package$collections.fill_jfbbbd$ = fill_3; + package$collections.fill_6mk3ue$ = fill_4; + package$collections.fill_htcctw$ = fill_5; + package$collections.fill_tpuxuu$ = fill_6; + package$collections.fill_wp4zxy$ = fill_7; + package$collections.fill_nwy378$ = fill_8; + package$collections.fill_x4f2cq$ = fill_9; + package$collections.fill_py0txo$ = fill_10; + package$collections.fill_t1iw8m$ = fill_11; package$collections.plus_mjy6jw$ = plus_27; package$collections.plus_tec1tx$ = plus_50; package$collections.plus_omthmc$ = plus_32; @@ -48027,7 +51580,6 @@ package$ui.selectable_vwohdt$ = selectable; package$kotlin.Comparator = Comparator; package$kotlin.Comparator_x4fedy$ = Comparator_0; - var package$js = package$kotlin.js || (package$kotlin.js = {}); package$js.native = native; package$js.nativeGetter = nativeGetter; package$js.nativeSetter = nativeSetter; @@ -48038,16 +51590,17 @@ package$js.JsModule = JsModule; package$js.JsNonModule = JsNonModule; package$js.JsQualifier = JsQualifier; + package$js.ExperimentalJsExport = ExperimentalJsExport; + package$js.JsExport = JsExport; var package$jvm = package$kotlin.jvm || (package$kotlin.jvm = {}); package$jvm.Volatile = Volatile; package$jvm.Synchronized = Synchronized; package$collections.copyToArray = copyToArray; package$collections.copyToArrayImpl = copyToArrayImpl; package$collections.copyToExistingArrayImpl = copyToArrayImpl_0; - package$collections.listOf_mh5how$ = listOf; package$collections.setOf_mh5how$ = setOf; package$collections.mapOf_x2b85n$ = mapOf; - package$collections.fill_dwdffb$ = fill; + package$collections.fill_dwdffb$ = fill_12; package$collections.shuffle_vvxzk3$ = shuffle; package$collections.shuffled_7wnvza$ = shuffled; package$collections.sort_4wi501$ = sort_14; @@ -48056,6 +51609,7 @@ package$collections.toMutableMap_abgq59$ = toMutableMap; package$collections.toSingletonMap_3imywq$ = toSingletonMap; package$collections.copyToArrayOfAny_e0iprw$ = copyToArrayOfAny; + package$collections.checkBuilderCapacity_za3lpa$ = checkBuilderCapacity; package$collections.AbstractMutableCollection = AbstractMutableCollection; package$collections.AbstractMutableList = AbstractMutableList; AbstractMutableMap.SimpleEntry_init_trwmqg$ = AbstractMutableMap$AbstractMutableMap$SimpleEntry_init; @@ -48202,7 +51756,6 @@ package$js.add_g26eq9$ = add; package$math.log_lu1900$ = log; package$math.round_14dthe$ = round; - package$math.withSign_38ydlf$ = withSign; package$math.get_ulp_yrwdxr$ = get_ulp; package$math.nextUp_yrwdxr$ = nextUp; package$math.nextDown_yrwdxr$ = nextDown; @@ -48221,12 +51774,22 @@ package$kotlin.isInfinite_81szk$ = isInfinite_0; package$kotlin.isFinite_yrwdxr$ = isFinite; package$kotlin.isFinite_81szk$ = isFinite_0; + package$kotlin.countOneBits_s8ev3n$ = countOneBits; + package$kotlin.countTrailingZeroBits_s8ev3n$ = countTrailingZeroBits; + package$kotlin.takeHighestOneBit_s8ev3n$ = takeHighestOneBit; + package$kotlin.takeLowestOneBit_s8ev3n$ = takeLowestOneBit; + package$kotlin.rotateLeft_dqglrj$ = rotateLeft; + package$kotlin.rotateRight_dqglrj$ = rotateRight; + package$kotlin.countOneBits_mts6qi$ = countOneBits_0; + package$kotlin.countLeadingZeroBits_mts6qi$ = countLeadingZeroBits_0; + package$kotlin.countTrailingZeroBits_mts6qi$ = countTrailingZeroBits_0; + package$kotlin.takeHighestOneBit_mts6qi$ = takeHighestOneBit_0; + package$kotlin.takeLowestOneBit_mts6qi$ = takeLowestOneBit_0; + package$kotlin.rotateLeft_if0zpk$ = rotateLeft_0; package$js.then_eyvp0y$ = then; package$js.then_a5sxob$ = then_0; package$random.defaultPlatformRandom_8be2vx$ = defaultPlatformRandom; - package$random.fastLog2_kcn2v3$ = fastLog2; package$random.doubleFromParts_6xvm5r$ = doubleFromParts; - package$ranges.rangeTo_38ydlf$ = rangeTo_1; package$js.get_jsClass_irb06o$ = get_jsClass; package$js.get_js_1yb8b7$ = get_js; package$js.get_kotlin_2sk2mx$ = get_kotlin; @@ -48236,6 +51799,18 @@ package$internal_1.SimpleKClassImpl = SimpleKClassImpl; package$internal_1.PrimitiveKClassImpl = PrimitiveKClassImpl; Object.defineProperty(package$internal_1, 'NothingKClassImpl', {get: NothingKClassImpl_getInstance}); + _.createKType = createKType; + _.createDynamicKType = createDynamicKType; + _.markKTypeNullable = markKTypeNullable; + _.createKTypeParameter = createKTypeParameter; + _.getStarKTypeProjection = getStarKTypeProjection; + _.createCovariantKTypeProjection = createCovariantKTypeProjection; + _.createInvariantKTypeProjection = createInvariantKTypeProjection; + _.createContravariantKTypeProjection = createContravariantKTypeProjection; + package$internal_1.KTypeImpl = KTypeImpl; + Object.defineProperty(package$internal_1, 'DynamicKType', {get: DynamicKType_getInstance}); + package$internal_1.prefixString_knho38$ = prefixString; + package$internal_1.KTypeParameterImpl = KTypeParameterImpl; Object.defineProperty(package$internal_1, 'PrimitiveClasses', {get: PrimitiveClasses_getInstance}); _.getKClass = getKClass; _.getKClassFromExpression = getKClassFromExpression; @@ -48243,6 +51818,22 @@ package$js.get_kmxd4d$ = get_0; package$js.asArray_tgewol$ = asArray; package$sequences.ConstrainedOnceSequence = ConstrainedOnceSequence; + package$text.Appendable = Appendable; + package$text.CharacterCodingException_init = CharacterCodingException_init; + package$text.CharacterCodingException = CharacterCodingException; + package$text.StringBuilder_init_za3lpa$ = StringBuilder_init; + package$text.StringBuilder_init_6bul2c$ = StringBuilder_init_0; + package$text.StringBuilder = StringBuilder; + package$text.clear_dn5lc7$ = clear_0; + package$text.set_fgr66m$ = set_0; + package$text.setRange_o6zo9x$ = setRange; + package$text.deleteAt_pgf5y3$ = deleteAt; + package$text.deleteRange_52xiy5$ = deleteRange; + package$text.toCharArray_uxry3l$ = toCharArray_1; + package$text.appendRange_tjrg5r$ = appendRange; + package$text.appendRange_3tn578$ = appendRange_0; + package$text.insertRange_5k1bpj$ = insertRange; + package$text.insertRange_abo1kk$ = insertRange_0; package$text.isWhitespace_myv2d0$ = isWhitespace; package$text.isHighSurrogate_myv2d0$ = isHighSurrogate; package$text.isLowSurrogate_myv2d0$ = isLowSurrogate; @@ -48258,14 +51849,12 @@ package$text.toDouble_pdl1vz$ = toDouble; package$text.toDoubleOrNull_pdl1vz$ = toDoubleOrNull; package$text.toString_dqglrj$ = toString_3; - package$text.toString_if0zpk$ = toString_2; package$text.checkRadix_za3lpa$ = checkRadix; package$text.digitOf_xvg9q0$ = digitOf; Object.defineProperty(RegexOption, 'IGNORE_CASE', {get: RegexOption$IGNORE_CASE_getInstance}); Object.defineProperty(RegexOption, 'MULTILINE', {get: RegexOption$MULTILINE_getInstance}); package$text.RegexOption = RegexOption; package$text.MatchGroup = MatchGroup; - package$text.StringBuilder_init_za3lpa$ = StringBuilder_init; Object.defineProperty(Regex, 'Companion', {get: Regex$Companion_getInstance}); package$text.Regex_init_sb3q2$ = Regex_init; package$text.Regex_init_61zpoe$ = Regex_init_0; @@ -48276,8 +51865,8 @@ package$text.String_8chfmy$ = String_2; package$text.concatToString_355ntz$ = concatToString; package$text.concatToString_wlitf7$ = concatToString_0; - package$text.toCharArray_pdl1vz$ = toCharArray_1; - package$text.toCharArray_qgyqat$ = toCharArray_2; + package$text.toCharArray_pdl1vz$ = toCharArray_2; + package$text.toCharArray_qgyqat$ = toCharArray_3; package$text.decodeToString_964n91$ = decodeToString; package$text.decodeToString_vahp5y$ = decodeToString_0; package$text.encodeToByteArray_pdl1vz$ = encodeToByteArray; @@ -48298,14 +51887,29 @@ package$text.replace_r2fvfm$ = replace_0; package$text.replaceFirst_680rmw$ = replaceFirst; package$text.replaceFirst_r2fvfm$ = replaceFirst_0; - package$text.Appendable = Appendable; - package$text.StringBuilder_init_6bul2c$ = StringBuilder_init_0; - package$text.StringBuilder = StringBuilder; - package$text.clear_dn5lc7$ = clear_0; - package$text.CharacterCodingException_init = CharacterCodingException_init; - package$text.CharacterCodingException = CharacterCodingException; package$text.encodeUtf8_eq9l2e$ = encodeUtf8; package$text.decodeUtf8_bndkiu$ = decodeUtf8; + Object.defineProperty(DurationUnit, 'NANOSECONDS', {get: DurationUnit$NANOSECONDS_getInstance}); + Object.defineProperty(DurationUnit, 'MICROSECONDS', {get: DurationUnit$MICROSECONDS_getInstance}); + Object.defineProperty(DurationUnit, 'MILLISECONDS', {get: DurationUnit$MILLISECONDS_getInstance}); + Object.defineProperty(DurationUnit, 'SECONDS', {get: DurationUnit$SECONDS_getInstance}); + Object.defineProperty(DurationUnit, 'MINUTES', {get: DurationUnit$MINUTES_getInstance}); + Object.defineProperty(DurationUnit, 'HOURS', {get: DurationUnit$HOURS_getInstance}); + Object.defineProperty(DurationUnit, 'DAYS', {get: DurationUnit$DAYS_getInstance}); + var package$time = package$kotlin.time || (package$kotlin.time = {}); + package$time.DurationUnit = DurationUnit; + package$time.convertDurationUnit_sgln0f$ = convertDurationUnit; + Object.defineProperty(package$time, 'MonotonicTimeSource', {get: MonotonicTimeSource_getInstance}); + package$time.HrTimeSource = HrTimeSource; + package$time.PerformanceTimeSource = PerformanceTimeSource; + Object.defineProperty(package$time, 'DateNowTimeSource', {get: DateNowTimeSource_getInstance}); + package$time.formatToExactDecimals_coldnx$ = formatToExactDecimals; + package$time.formatUpToDecimals_coldnx$ = formatUpToDecimals; + package$time.formatScientific_tq0o01$ = formatScientific; + package$dom_0.get_as__xbdrh1$ = get_as_; + package$dom_0.set_as__lprayv$ = set_as_; + package$dom_0.get_is__jkvip$ = get_is_; + package$dom_0.set_is__ri92sw$ = set_is_; package$dom_0.get_NONZERO_mhbikd$ = get_NONZERO; package$dom_0.get_NONE_xgljrz$ = get_NONE; package$dom_0.get_DEFAULT_b5608t$ = get_DEFAULT; @@ -48475,6 +52079,11 @@ package$kotlin.BuilderInference = BuilderInference; package$kotlin.ExperimentalMultiplatform = ExperimentalMultiplatform; package$kotlin.OptionalExpectation = OptionalExpectation; + Object.defineProperty(RequiresOptIn$Level, 'WARNING', {get: RequiresOptIn$Level$WARNING_getInstance}); + Object.defineProperty(RequiresOptIn$Level, 'ERROR', {get: RequiresOptIn$Level$ERROR_getInstance}); + RequiresOptIn.Level = RequiresOptIn$Level; + package$kotlin.RequiresOptIn = RequiresOptIn; + package$kotlin.OptIn = OptIn; package$collections.AbstractCollection = AbstractCollection; package$collections.AbstractIterator = AbstractIterator; Object.defineProperty(AbstractList, 'Companion', {get: AbstractList$Companion_getInstance}); @@ -48483,6 +52092,10 @@ package$collections.AbstractMap = AbstractMap; Object.defineProperty(AbstractSet, 'Companion', {get: AbstractSet$Companion_getInstance}); package$collections.AbstractSet = AbstractSet; + package$collections.ArrayDeque_init_ww73n8$ = ArrayDeque_init; + package$collections.ArrayDeque_init_287e2$ = ArrayDeque_init_0; + package$collections.ArrayDeque_init_mqih57$ = ArrayDeque_init_1; + package$collections.ArrayDeque = ArrayDeque; package$collections.flatten_yrqxlj$ = flatten; package$collections.unzip_v2dak7$ = unzip; package$collections.contentDeepEqualsImpl = contentDeepEqualsImpl; @@ -48563,20 +52176,24 @@ package$collections.minus_uk696c$ = minus_12; package$collections.minus_8blsds$ = minus_13; package$collections.minus_nyfmny$ = minus_14; - package$collections.removeAll_ipc267$ = removeAll_2; - package$collections.removeAll_ye1y7v$ = removeAll_4; - package$collections.removeAll_tj7pfx$ = removeAll_3; + package$collections.removeAll_ipc267$ = removeAll_0; + package$collections.removeAll_ye1y7v$ = removeAll_2; + package$collections.removeAll_tj7pfx$ = removeAll_1; package$collections.optimizeReadOnlyMap_1vp4qn$ = optimizeReadOnlyMap; package$collections.addAll_ye1y7v$ = addAll_1; - package$collections.removeAll_uhyeqt$ = removeAll_0; - package$collections.retainAll_uhyeqt$ = retainAll_0; - package$collections.removeAll_qafx1e$ = removeAll_1; - package$collections.retainAll_qafx1e$ = retainAll_1; - package$collections.retainAll_ipc267$ = retainAll_2; - package$collections.retainAll_ye1y7v$ = retainAll_3; - package$collections.retainAll_tj7pfx$ = retainAll_4; - package$collections.shuffle_9jeydg$ = shuffle_0; + package$collections.retainAll_ipc267$ = retainAll_0; + package$collections.retainAll_ye1y7v$ = retainAll_1; + package$collections.retainAll_tj7pfx$ = retainAll_2; + package$collections.removeAll_uhyeqt$ = removeAll_3; + package$collections.retainAll_uhyeqt$ = retainAll_3; package$collections.shuffled_4173s5$ = shuffled_0; + package$collections.removeFirst_vvxzk3$ = removeFirst; + package$collections.removeFirstOrNull_vvxzk3$ = removeFirstOrNull; + package$collections.removeLast_vvxzk3$ = removeLast; + package$collections.removeLastOrNull_vvxzk3$ = removeLastOrNull; + package$collections.removeAll_qafx1e$ = removeAll_4; + package$collections.retainAll_qafx1e$ = retainAll_4; + package$collections.shuffle_9jeydg$ = shuffle_0; package$collections.asReversed_2p1efm$ = asReversed; package$collections.asReversed_vvxzk3$ = asReversed_0; package$sequences.sequence_o0x0bg$ = sequence; @@ -48657,6 +52274,9 @@ CoroutineContext.Element = CoroutineContext$Element; package$coroutines.CoroutineContext = CoroutineContext; package$coroutines.AbstractCoroutineContextElement = AbstractCoroutineContextElement; + package$coroutines.AbstractCoroutineContextKey = AbstractCoroutineContextKey; + package$coroutines.getPolymorphicElement_ou7kgl$ = getPolymorphicElement; + package$coroutines.minusPolymorphicKey_pu2ztq$ = minusPolymorphicKey; Object.defineProperty(package$coroutines, 'EmptyCoroutineContext', {get: EmptyCoroutineContext_getInstance}); package$coroutines.CombinedContext = CombinedContext; Object.defineProperty(package$intrinsics, 'COROUTINE_SUSPENDED', {get: get_COROUTINE_SUSPENDED}); @@ -48691,6 +52311,7 @@ package$random.Random_s8cxhz$ = Random_1; package$random.nextInt_ixthlz$ = nextInt; package$random.nextLong_lq3jag$ = nextLong; + package$random.fastLog2_kcn2v3$ = fastLog2; package$random.takeUpperBits_b6l1hq$ = takeUpperBits; package$random.checkRangeBounds_6xvm5r$ = checkRangeBounds; package$random.checkRangeBounds_cfj5zr$ = checkRangeBounds_0; @@ -48711,9 +52332,16 @@ package$random.checkULongRangeBounds_jmpl8x$ = checkULongRangeBounds; package$random.XorWowRandom_init_6xvm5r$ = XorWowRandom_init; package$random.XorWowRandom = XorWowRandom; + package$ranges.rangeTo_8xshf9$ = rangeTo; package$ranges.ClosedFloatingPointRange = ClosedFloatingPointRange; - package$ranges.rangeTo_8xshf9$ = rangeTo_0; + package$ranges.rangeTo_38ydlf$ = rangeTo_0; + package$ranges.rangeTo_yni7l$ = rangeTo_1; package$ranges.checkStepIsPositive_44uddq$ = checkStepIsPositive; + package$reflect.cast_o6trj3$ = cast; + package$reflect.safeCast_o6trj3$ = safeCast; + package$text.appendRange_p5ndjo$ = appendRange_1; + package$text.append_1mr2mh$ = append; + package$text.appendElement_k2zgzt$ = appendElement_0; package$text.equals_4lte5s$ = equals_1; package$text.isSurrogate_myv2d0$ = isSurrogate; package$text.trimMargin_rjktp$ = trimMargin; @@ -48721,10 +52349,8 @@ package$text.trimIndent_pdl1vz$ = trimIndent; package$text.replaceIndent_rjktp$ = replaceIndent; package$text.prependIndent_rjktp$ = prependIndent; - package$text.append_1mr2mh$ = append; - package$text.append_4v9nlb$ = append_0; - package$text.append_s3yiwm$ = append_1; - package$text.appendElement_k2zgzt$ = appendElement_0; + package$text.append_4v9nlb$ = append_1; + package$text.append_s3yiwm$ = append_2; package$text.toByteOrNull_pdl1vz$ = toByteOrNull; package$text.toByteOrNull_6ic1pp$ = toByteOrNull_0; package$text.toShortOrNull_pdl1vz$ = toShortOrNull; @@ -48816,6 +52442,46 @@ package$text.MatchNamedGroupCollection = MatchNamedGroupCollection; MatchResult.Destructured = MatchResult$Destructured; package$text.MatchResult = MatchResult; + Object.defineProperty(Duration, 'Companion', {get: Duration$Companion_getInstance}); + package$time.Duration = Duration; + package$time.toDuration_14orw9$ = toDuration; + package$time.toDuration_rrkdm6$ = toDuration_0; + package$time.toDuration_n769wd$ = toDuration_1; + package$time.get_nanoseconds_s8ev3n$ = get_nanoseconds; + package$time.get_nanoseconds_mts6qi$ = get_nanoseconds_0; + package$time.get_nanoseconds_yrwdxr$ = get_nanoseconds_1; + package$time.get_microseconds_s8ev3n$ = get_microseconds; + package$time.get_microseconds_mts6qi$ = get_microseconds_0; + package$time.get_microseconds_yrwdxr$ = get_microseconds_1; + package$time.get_milliseconds_s8ev3n$ = get_milliseconds; + package$time.get_milliseconds_mts6qi$ = get_milliseconds_0; + package$time.get_milliseconds_yrwdxr$ = get_milliseconds_1; + package$time.get_seconds_s8ev3n$ = get_seconds; + package$time.get_seconds_mts6qi$ = get_seconds_0; + package$time.get_seconds_yrwdxr$ = get_seconds_1; + package$time.get_minutes_s8ev3n$ = get_minutes; + package$time.get_minutes_mts6qi$ = get_minutes_0; + package$time.get_minutes_yrwdxr$ = get_minutes_1; + package$time.get_hours_s8ev3n$ = get_hours; + package$time.get_hours_mts6qi$ = get_hours_0; + package$time.get_hours_yrwdxr$ = get_hours_1; + package$time.get_days_s8ev3n$ = get_days; + package$time.get_days_mts6qi$ = get_days_0; + package$time.get_days_yrwdxr$ = get_days_1; + package$time.shortName_d5gje$ = shortName; + package$time.ExperimentalTime = ExperimentalTime; + Object.defineProperty(TimeSource, 'Monotonic', {get: TimeSource$Monotonic_getInstance}); + Object.defineProperty(TimeSource, 'Companion', {get: TimeSource$Companion_getInstance}); + package$time.TimeSource = TimeSource; + package$time.TimeMark = TimeMark; + package$time.AbstractLongTimeSource = AbstractLongTimeSource; + package$time.AbstractDoubleTimeSource = AbstractDoubleTimeSource; + package$time.TestTimeSource = TestTimeSource; + package$time.measureTime_8lzfs6$ = measureTime_0; + package$time.measureTime_o14v8n$ = measureTime; + package$time.TimedValue = TimedValue; + package$time.measureTimedValue_tfb6s1$ = measureTimedValue_0; + package$time.measureTimedValue_klfg04$ = measureTimedValue; Object.defineProperty(KotlinVersion, 'Companion', {get: KotlinVersion$Companion_getInstance}); package$kotlin.KotlinVersion_init_vux9f0$ = KotlinVersion_init; package$kotlin.KotlinVersion = KotlinVersion; @@ -48828,6 +52494,10 @@ Object.defineProperty(package$kotlin, 'UNINITIALIZED_VALUE', {get: UNINITIALIZED_VALUE_getInstance}); package$kotlin.UnsafeLazyImpl = UnsafeLazyImpl; package$kotlin.InitializedLazyImpl = InitializedLazyImpl; + package$kotlin.rotateLeft_798l30$ = rotateLeft_1; + package$kotlin.rotateRight_798l30$ = rotateRight_1; + package$kotlin.rotateLeft_di2vk2$ = rotateLeft_2; + package$kotlin.rotateRight_di2vk2$ = rotateRight_2; package$kotlin.createFailure_tcv7n7$ = createFailure; Object.defineProperty(Result, 'Companion', {get: Result$Companion_getInstance}); Result.Failure = Result$Failure; @@ -48933,7 +52603,9 @@ MAX_BYTES_PER_CHAR = 3; REPLACEMENT_BYTE_SEQUENCE = new Int8Array([toByte(239), toByte(191), toByte(189)]); REPLACEMENT_CHAR = 65533; - INT_MAX_POWER_OF_TWO = 1073741824; + emptyElementData = []; + maxArraySize = 2147483639; + defaultMinCapacity = 10; State_NotReady = 0; State_ManyNotReady = 1; State_ManyReady = 2; @@ -48997,13 +52669,10 @@ var result = this.doResume(); if (result !== COROUTINE_SUSPENDED) { (Kotlin.isType(tmp$ = completion, Continuation) ? tmp$ : throwCCE()).resume_11rb$(result); - } - } - catch (t) { + }} catch (t) { if (Kotlin.isType(t, Throwable)) { completion.resumeWithException_tcv7n7$(t); - } - else + } else throw t; } }; @@ -49027,8 +52696,7 @@ else if (this.result_0 === COROUTINE_SUSPENDED) { this.result_0 = RESUMED; this.delegate_0.resume_11rb$(value); - } - else { + } else { throw IllegalStateException_init('Already resumed'); } }; @@ -49038,8 +52706,7 @@ else if (this.result_0 === COROUTINE_SUSPENDED) { this.result_0 = RESUMED; this.delegate_0.resumeWithException_tcv7n7$(exception); - } - else { + } else { throw IllegalStateException_init('Already resumed'); } }; @@ -49047,8 +52714,7 @@ var tmp$; if (this.result_0 === UNDECIDED) { this.result_0 = COROUTINE_SUSPENDED; - } - var result = this.result_0; + }var result = this.result_0; if (result === RESUMED) tmp$ = COROUTINE_SUSPENDED; else if (Kotlin.isType(result, Fail)) @@ -49085,8 +52751,7 @@ function CoroutineSuspendedMarker_getInstance() { if (CoroutineSuspendedMarker_instance === null) { new CoroutineSuspendedMarker(); - } - return CoroutineSuspendedMarker_instance; + }return CoroutineSuspendedMarker_instance; } function ContinuationInterceptor() { ContinuationInterceptor$Key_getInstance(); @@ -49099,8 +52764,7 @@ function ContinuationInterceptor$Key_getInstance() { if (ContinuationInterceptor$Key_instance === null) { new ContinuationInterceptor$Key(); - } - return ContinuationInterceptor$Key_instance; + }return ContinuationInterceptor$Key_instance; } ContinuationInterceptor.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'ContinuationInterceptor', interfaces: [CoroutineContext$Element]}; function CoroutineContext() { @@ -49172,8 +52836,7 @@ function EmptyCoroutineContext_getInstance() { if (EmptyCoroutineContext_instance === null) { new EmptyCoroutineContext(); - } - return EmptyCoroutineContext_instance; + }return EmptyCoroutineContext_instance; } function CombinedContext(left, element) { this.left = left; @@ -49185,12 +52848,10 @@ while (true) { if ((tmp$ = cur.element.get_8oh8b3$(key)) != null) { return tmp$; - } - var next = cur.left; + }var next = cur.left; if (Kotlin.isType(next, CombinedContext)) { cur = next; - } - else { + } else { return next.get_8oh8b3$(key); } } @@ -49202,8 +52863,7 @@ var tmp$; if (this.element.get_8oh8b3$(key) != null) { return this.left; - } - var newLeft = this.left.minusKey_ds72xk$(key); + }var newLeft = this.left.minusKey_ds72xk$(key); if (newLeft === this.left) tmp$ = this; else if (newLeft === EmptyCoroutineContext_getInstance()) @@ -49227,8 +52887,7 @@ var next = cur.left; if (Kotlin.isType(next, CombinedContext)) { cur = next; - } - else { + } else { return this.contains_0(Kotlin.isType(tmp$ = next, CoroutineContext$Element) ? tmp$ : throwCCE()); } } @@ -49315,13 +52974,10 @@ var result = block(); if (result !== COROUTINE_SUSPENDED) { (Kotlin.isType(tmp$ = completion, Continuation) ? tmp$ : throwCCE()).resume_11rb$(result); - } - } - catch (t) { + }} catch (t) { if (Kotlin.isType(t, Throwable)) { completion.resumeWithException_tcv7n7$(t); - } - else + } else throw t; } }; @@ -49384,8 +53040,7 @@ if (ensureNotNull(this.nextIterator_0).hasNext()) { this.state_0 = 2; return true; - } - else { + } else { this.nextIterator_0 = null; } @@ -49529,6 +53184,7 @@ package$experimental.startCoroutine_xtwlez$ = startCoroutine_0; package$experimental.createCoroutine_uao1qo$ = createCoroutine; package$experimental.createCoroutine_xtwlez$ = createCoroutine_0; + package$experimental.suspendCoroutine_z3e1t3$ = suspendCoroutine; Object.defineProperty(package$experimental, 'coroutineContext', {get: get_coroutineContext}); package$experimental.buildSequence_of7nec$ = buildSequence; package$experimental.buildIterator_of7nec$ = buildIterator; diff --git a/assets/v2/general/js/lib/kotlin.js.map b/assets/v2/general/js/lib/kotlin.js.map index 919b6fb..58e7583 100644 --- a/assets/v2/general/js/lib/kotlin.js.map +++ b/assets/v2/general/js/lib/kotlin.js.map @@ -1 +1 @@ -{"version":3,"file":"kotlin.js","sources":["wrapper.js","arrayUtils.js","callableReferenceUtils.js","conversions.js","core.js","long.js","markerFunctions.js","misc.js","polyfills.js","rtti.js","arrayUtils.kt","runtime/Enum.kt","primitiveCompanionObjects.kt","generated/_Arrays.kt","generated/_Ranges.kt","kotlin/UByte.kt","kotlin/UInt.kt","kotlin/UShort.kt","Ranges.kt","collections/Collections.kt","collections/Maps.kt","collections/Sets.kt","text/StringNumberConversions.kt","kotlin/UnsignedUtils.kt","collections/Iterables.kt","collections/Sequences.kt","util/Preconditions.kt","generated/_ArraysJs.kt","comparisons/Comparisons.kt","kotlin/Comparator.kt","util/Standard.kt","generated/_ComparisonsJs.kt","generated/_Collections.kt","kotlin/collections.kt","collections/Iterators.kt","generated/_Comparisons.kt","generated/_Maps.kt","kotlin/ranges.kt","generated/_Sequences.kt","dummy.kt","generated/_Sets.kt","generated/_Strings.kt","text/Strings.kt","kotlin/text/string.kt","kotlin/UByteArray.kt","kotlin/UIntArray.kt","kotlin/ULongArray.kt","kotlin/ULong.kt","kotlin/UShortArray.kt","generated/_UArrays.kt","generated/_UCollections.kt","generated/_UComparisons.kt","generated/_URanges.kt","generated/_USequences.kt","Collections.kt","Iterators.kt","ProgressionIterators.kt","Progressions.kt","Range.kt","Unit.kt","annotation/Annotations.kt","internal/InternalAnnotations.kt","internal/progressionUtil.kt","reflect/KParameter.kt","reflect/KType.kt","reflect/KVariance.kt","reflect/KVisibility.kt","kotlin/builtins.kt","kotlin/jsTypeOf.kt","kotlin/kotlin.kt","kotlin/coroutines/CoroutineImpl.kt","util/Result.kt","coroutines/Continuation.kt","kotlin/coroutines/intrinsics/IntrinsicsJs.kt","kotlin/jsOperators.kt","generated/_CollectionsJs.kt","generated/_StringsJs.kt","generated/_UArraysJs.kt","jquery/ui.kt","kotlin/annotations.kt","kotlin/annotationsJVM.kt","kotlin/collections/AbstractMutableCollection.kt","kotlin/collections/AbstractMutableList.kt","kotlin/collections/AbstractMutableMap.kt","kotlin/collections/AbstractMutableSet.kt","kotlin/collections/ArrayList.kt","kotlin/collections/ArraySorting.kt","kotlin/collections/ArraysJs.kt","kotlin/collections/EqualityComparator.kt","kotlin/collections/HashMap.kt","kotlin/collections/HashSet.kt","kotlin/collections/InternalHashCodeMap.kt","kotlin/collections/InternalMap.kt","kotlin/collections/InternalStringMap.kt","kotlin/collections/LinkedHashMap.kt","kotlin/collections/LinkedHashSet.kt","kotlin/concurrent.kt","kotlin/console.kt","kotlin/coroutines/SafeContinuationJs.kt","kotlin/coroutines/js/internal/EmptyContinuation.kt","kotlin/date.kt","kotlin/dom/Builders.kt","kotlin/dom/Classes.kt","text/regex/RegexExtensions.kt","text/StringBuilder.kt","kotlin/dom/Dom.kt","kotlin/dom/EventListener.kt","kotlin/dom/ItemArrayLike.kt","kotlin/dom/Mutations.kt","kotlin/dynamic.kt","kotlin/exceptionUtils.kt","kotlin/exceptions.kt","collections/Grouping.kt","kotlin/grouping.kt","kotlin/js.math.kt","kotlin/json.kt","kotlin/math.kt","kotlin/numbers.kt","kotlin/promise.kt","kotlin/random/PlatformRandom.kt","kotlin/reflect/JsClass.kt","kotlin/reflect/KClassImpl.kt","kotlin/reflect/primitives.kt","kotlin/reflect/reflection.kt","kotlin/regexp.kt","kotlin/sequence.kt","kotlin/text/char.kt","kotlin/text/numberConversions.kt","kotlin/text/regex.kt","kotlin/text/stringsCode.kt","kotlin/text/text.kt","kotlin/text/utf8Encoding.kt","org.w3c/org.khronos.webgl.kt","org.w3c/org.w3c.dom.clipboard.kt","org.w3c/org.w3c.dom.css.kt","org.w3c/org.w3c.dom.events.kt","org.w3c/org.w3c.dom.kt","org.w3c/org.w3c.fetch.kt","org.w3c/org.w3c.dom.mediacapture.kt","org.w3c/org.w3c.dom.pointerevents.kt","org.w3c/org.w3c.dom.svg.kt","org.w3c/org.w3c.files.kt","org.w3c/org.w3c.notifications.kt","org.w3c/org.w3c.workers.kt","org.w3c/org.w3c.xhr.kt","annotations/Experimental.kt","annotations/ExperimentalStdlibApi.kt","annotations/Inference.kt","annotations/Multiplatform.kt","collections/AbstractCollection.kt","collections/AbstractIterator.kt","collections/AbstractList.kt","collections/AbstractMap.kt","collections/AbstractSet.kt","collections/Arrays.kt","collections/IndexedValue.kt","collections/MapAccessors.kt","collections/MapWithDefault.kt","collections/MutableCollections.kt","collections/ReversedViews.kt","collections/SequenceBuilder.kt","collections/SlidingWindow.kt","collections/UArraySorting.kt","contracts/ContractBuilder.kt","coroutines/ContinuationInterceptor.kt","coroutines/CoroutineContext.kt","coroutines/CoroutineContextImpl.kt","coroutines/intrinsics/Intrinsics.kt","experimental/bitwiseOperations.kt","experimental/inferenceMarker.kt","internal/Annotations.kt","properties/Delegates.kt","properties/ObservableProperty.kt","random/Random.kt","random/URandom.kt","random/XorWowRandom.kt","ranges/Ranges.kt","reflect/typeOf.kt","text/Char.kt","text/Indent.kt","text/Typography.kt","text/regex/MatchResult.kt","util/HashCode.kt","util/KotlinVersion.kt","util/Lateinit.kt","util/Lazy.kt","util/Suspend.kt","util/Tuples.kt","kotlin/UIntRange.kt","kotlin/UIterators.kt","kotlin/ULongRange.kt","kotlin/UMath.kt","kotlin/UProgressionUtil.kt","kotlin/UStrings.kt","kotlin/annotations/Unsigned.kt","kotlin/MathH.kt","coroutines.kt","CoroutinesLibrary.kt","coroutinesIntrinsics.kt","ContinuationInterceptor.kt","CoroutineContext.kt","CoroutineContextImpl.kt","Coroutines.kt","Intrinsics.kt","SequenceBuilder.kt"],"sourcesContent":["(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define('kotlin', ['exports'], factory);\n }\n else if (typeof exports === 'object') {\n factory(module.exports);\n }\n else {\n root.kotlin = {};\n factory(root.kotlin);\n }\n}(this, function (Kotlin) {\n var _ = Kotlin;\n\n insertContent();\n}));\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\nKotlin.isBooleanArray = function (a) {\n return (Array.isArray(a) || a instanceof Int8Array) && a.$type$ === \"BooleanArray\"\n};\n\nKotlin.isByteArray = function (a) {\n return a instanceof Int8Array && a.$type$ !== \"BooleanArray\"\n};\n\nKotlin.isShortArray = function (a) {\n return a instanceof Int16Array\n};\n\nKotlin.isCharArray = function (a) {\n return a instanceof Uint16Array && a.$type$ === \"CharArray\"\n};\n\nKotlin.isIntArray = function (a) {\n return a instanceof Int32Array\n};\n\nKotlin.isFloatArray = function (a) {\n return a instanceof Float32Array\n};\n\nKotlin.isDoubleArray = function (a) {\n return a instanceof Float64Array\n};\n\nKotlin.isLongArray = function (a) {\n return Array.isArray(a) && a.$type$ === \"LongArray\"\n};\n\nKotlin.isArray = function (a) {\n return Array.isArray(a) && !a.$type$;\n};\n\nKotlin.isArrayish = function (a) {\n return Array.isArray(a) || ArrayBuffer.isView(a)\n};\n\nKotlin.arrayToString = function (a) {\n var toString = Kotlin.isCharArray(a) ? String.fromCharCode : Kotlin.toString;\n return \"[\" + Array.prototype.map.call(a, function(e) { return toString(e); }).join(\", \") + \"]\";\n};\n\nKotlin.arrayDeepToString = function (arr) {\n return Kotlin.kotlin.collections.contentDeepToStringImpl(arr);\n};\n\nKotlin.arrayEquals = function (a, b) {\n if (a === b) {\n return true;\n }\n if (!Kotlin.isArrayish(b) || a.length !== b.length) {\n return false;\n }\n\n for (var i = 0, n = a.length; i < n; i++) {\n if (!Kotlin.equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n};\n\nKotlin.arrayDeepEquals = function (a, b) {\n return Kotlin.kotlin.collections.contentDeepEqualsImpl(a, b);\n};\n\nKotlin.arrayHashCode = function (arr) {\n var result = 1;\n for (var i = 0, n = arr.length; i < n; i++) {\n result = ((31 * result | 0) + Kotlin.hashCode(arr[i])) | 0;\n }\n return result;\n};\n\nKotlin.arrayDeepHashCode = function (arr) {\n return Kotlin.kotlin.collections.contentDeepHashCodeImpl(arr);\n};\n\nKotlin.primitiveArraySort = function (array) {\n array.sort(Kotlin.doubleCompareTo)\n};\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\nKotlin.getCallableRef = function(name, f) {\n f.callableName = name;\n return f;\n};\n\nKotlin.getPropertyCallableRef = function(name, paramCount, getter, setter) {\n getter.get = getter;\n getter.set = setter;\n getter.callableName = name;\n return getPropertyRefClass(getter, setter, propertyRefClassMetadataCache[paramCount]);\n};\n\nfunction getPropertyRefClass(obj, setter, cache) {\n obj.$metadata$ = getPropertyRefMetadata(typeof setter === \"function\" ? cache.mutable : cache.immutable);\n obj.constructor = obj;\n return obj;\n}\n\nvar propertyRefClassMetadataCache = [\n {\n mutable: { value: null, implementedInterface: function () {\n return Kotlin.kotlin.reflect.KMutableProperty0 }\n },\n immutable: { value: null, implementedInterface: function () {\n return Kotlin.kotlin.reflect.KProperty0 }\n }\n },\n {\n mutable: { value: null, implementedInterface: function () {\n return Kotlin.kotlin.reflect.KMutableProperty1 }\n },\n immutable: { value: null, implementedInterface: function () {\n return Kotlin.kotlin.reflect.KProperty1 }\n }\n }\n];\n\nfunction getPropertyRefMetadata(cache) {\n if (cache.value === null) {\n cache.value = {\n interfaces: [cache.implementedInterface()],\n baseClass: null,\n functions: {},\n properties: {},\n types: {},\n staticMembers: {}\n };\n }\n return cache.value;\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\nKotlin.toShort = function (a) {\n return (a & 0xFFFF) << 16 >> 16;\n};\n\nKotlin.toByte = function (a) {\n return (a & 0xFF) << 24 >> 24;\n};\n\nKotlin.toChar = function (a) {\n return a & 0xFFFF;\n};\n\nKotlin.numberToLong = function (a) {\n return a instanceof Kotlin.Long ? a : Kotlin.Long.fromNumber(a);\n};\n\nKotlin.numberToInt = function (a) {\n return a instanceof Kotlin.Long ? a.toInt() : Kotlin.doubleToInt(a);\n};\n\nKotlin.numberToShort = function (a) {\n return Kotlin.toShort(Kotlin.numberToInt(a));\n};\n\nKotlin.numberToByte = function (a) {\n return Kotlin.toByte(Kotlin.numberToInt(a));\n};\n\nKotlin.numberToDouble = function (a) {\n return +a;\n};\n\nKotlin.numberToChar = function (a) {\n return Kotlin.toChar(Kotlin.numberToInt(a));\n};\n\nKotlin.doubleToInt = function(a) {\n if (a > 2147483647) return 2147483647;\n if (a < -2147483648) return -2147483648;\n return a | 0;\n};\n\nKotlin.toBoxedChar = function (a) {\n if (a == null) return a;\n if (a instanceof Kotlin.BoxedChar) return a;\n return new Kotlin.BoxedChar(a);\n};\n\nKotlin.unboxChar = function(a) {\n if (a == null) return a;\n return Kotlin.toChar(a);\n};\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\nKotlin.equals = function (obj1, obj2) {\n if (obj1 == null) {\n return obj2 == null;\n }\n\n if (obj2 == null) {\n return false;\n }\n\n if (obj1 !== obj1) {\n return obj2 !== obj2;\n }\n\n if (typeof obj1 === \"object\" && typeof obj1.equals === \"function\") {\n return obj1.equals(obj2);\n }\n\n if (typeof obj1 === \"number\" && typeof obj2 === \"number\") {\n return obj1 === obj2 && (obj1 !== 0 || 1 / obj1 === 1 / obj2)\n }\n\n return obj1 === obj2;\n};\n\nKotlin.hashCode = function (obj) {\n if (obj == null) {\n return 0;\n }\n var objType = typeof obj;\n if (\"object\" === objType) {\n return \"function\" === typeof obj.hashCode ? obj.hashCode() : getObjectHashCode(obj);\n }\n if (\"function\" === objType) {\n return getObjectHashCode(obj);\n }\n if (\"number\" === objType) {\n return Kotlin.numberHashCode(obj);\n }\n if (\"boolean\" === objType) {\n return Number(obj)\n }\n\n var str = String(obj);\n return getStringHashCode(str);\n};\n\n\nKotlin.toString = function (o) {\n if (o == null) {\n return \"null\";\n }\n else if (Kotlin.isArrayish(o)) {\n return \"[...]\";\n }\n else {\n return o.toString();\n }\n};\n\n/** @const */\nvar POW_2_32 = 4294967296;\n// TODO: consider switching to Symbol type once we are on ES6.\n/** @const */\nvar OBJECT_HASH_CODE_PROPERTY_NAME = \"kotlinHashCodeValue$\";\n\nfunction getObjectHashCode(obj) {\n if (!(OBJECT_HASH_CODE_PROPERTY_NAME in obj)) {\n var hash = (Math.random() * POW_2_32) | 0; // Make 32-bit singed integer.\n Object.defineProperty(obj, OBJECT_HASH_CODE_PROPERTY_NAME, { value: hash, enumerable: false });\n }\n return obj[OBJECT_HASH_CODE_PROPERTY_NAME];\n}\n\nfunction getStringHashCode(str) {\n var hash = 0;\n for (var i = 0; i < str.length; i++) {\n var code = str.charCodeAt(i);\n hash = (hash * 31 + code) | 0; // Keep it 32-bit.\n }\n return hash;\n}\n\nKotlin.identityHashCode = getObjectHashCode;\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Copyright 2009 The Closure Library Authors. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS-IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\n/**\n * Constructs a 64-bit two's-complement integer, given its low and high 32-bit\n * values as *signed* integers. See the from* functions below for more\n * convenient ways of constructing Longs.\n *\n * The internal representation of a long is the two given signed, 32-bit values.\n * We use 32-bit pieces because these are the size of integers on which\n * Javascript performs bit-operations. For operations like addition and\n * multiplication, we split each number into 16-bit pieces, which can easily be\n * multiplied within Javascript's floating-point representation without overflow\n * or change in sign.\n *\n * In the algorithms below, we frequently reduce the negative case to the\n * positive case by negating the input(s) and then post-processing the result.\n * Note that we must ALWAYS check specially whether those values are MIN_VALUE\n * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\n * a positive number, it overflows back into a negative). Not handling this\n * case would often result in infinite recursion.\n *\n * @param {number} low The low (signed) 32 bits of the long.\n * @param {number} high The high (signed) 32 bits of the long.\n * @constructor\n * @final\n */\nKotlin.Long = function(low, high) {\n /**\n * @type {number}\n * @private\n */\n this.low_ = low | 0; // force into 32 signed bits.\n\n /**\n * @type {number}\n * @private\n */\n this.high_ = high | 0; // force into 32 signed bits.\n};\n\nKotlin.Long.$metadata$ = {\n kind: \"class\",\n simpleName: \"Long\",\n interfaces:[]\n};\n\n\n// NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the\n// from* methods on which they depend.\n\n\n/**\n * A cache of the Long representations of small integer values.\n * @type {!Object}\n * @private\n */\nKotlin.Long.IntCache_ = {};\n\n\n/**\n * Returns a Long representing the given (32-bit) integer value.\n * @param {number} value The 32-bit integer in question.\n * @return {!Kotlin.Long} The corresponding Long value.\n */\nKotlin.Long.fromInt = function(value) {\n if (-128 <= value && value < 128) {\n var cachedObj = Kotlin.Long.IntCache_[value];\n if (cachedObj) {\n return cachedObj;\n }\n }\n\n var obj = new Kotlin.Long(value | 0, value < 0 ? -1 : 0);\n if (-128 <= value && value < 128) {\n Kotlin.Long.IntCache_[value] = obj;\n }\n return obj;\n};\n\n\n/**\n * Returns a Long representing the given value, provided that it is a finite\n * number. Otherwise, zero is returned.\n * @param {number} value The number in question.\n * @return {!Kotlin.Long} The corresponding Long value.\n */\nKotlin.Long.fromNumber = function(value) {\n if (isNaN(value) || !isFinite(value)) {\n return Kotlin.Long.ZERO;\n } else if (value <= -Kotlin.Long.TWO_PWR_63_DBL_) {\n return Kotlin.Long.MIN_VALUE;\n } else if (value + 1 >= Kotlin.Long.TWO_PWR_63_DBL_) {\n return Kotlin.Long.MAX_VALUE;\n } else if (value < 0) {\n return Kotlin.Long.fromNumber(-value).negate();\n } else {\n return new Kotlin.Long(\n (value % Kotlin.Long.TWO_PWR_32_DBL_) | 0,\n (value / Kotlin.Long.TWO_PWR_32_DBL_) | 0);\n }\n};\n\n\n/**\n * Returns a Long representing the 64-bit integer that comes by concatenating\n * the given high and low bits. Each is assumed to use 32 bits.\n * @param {number} lowBits The low 32-bits.\n * @param {number} highBits The high 32-bits.\n * @return {!Kotlin.Long} The corresponding Long value.\n */\nKotlin.Long.fromBits = function(lowBits, highBits) {\n return new Kotlin.Long(lowBits, highBits);\n};\n\n\n/**\n * Returns a Long representation of the given string, written using the given\n * radix.\n * @param {string} str The textual representation of the Long.\n * @param {number=} opt_radix The radix in which the text is written.\n * @return {!Kotlin.Long} The corresponding Long value.\n */\nKotlin.Long.fromString = function(str, opt_radix) {\n if (str.length == 0) {\n throw Error('number format error: empty string');\n }\n\n var radix = opt_radix || 10;\n if (radix < 2 || 36 < radix) {\n throw Error('radix out of range: ' + radix);\n }\n\n if (str.charAt(0) == '-') {\n return Kotlin.Long.fromString(str.substring(1), radix).negate();\n } else if (str.indexOf('-') >= 0) {\n throw Error('number format error: interior \"-\" character: ' + str);\n }\n\n // Do several (8) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = Kotlin.Long.fromNumber(Math.pow(radix, 8));\n\n var result = Kotlin.Long.ZERO;\n for (var i = 0; i < str.length; i += 8) {\n var size = Math.min(8, str.length - i);\n var value = parseInt(str.substring(i, i + size), radix);\n if (size < 8) {\n var power = Kotlin.Long.fromNumber(Math.pow(radix, size));\n result = result.multiply(power).add(Kotlin.Long.fromNumber(value));\n } else {\n result = result.multiply(radixToPower);\n result = result.add(Kotlin.Long.fromNumber(value));\n }\n }\n return result;\n};\n\n\n// NOTE: the compiler should inline these constant values below and then remove\n// these variables, so there should be no runtime penalty for these.\n\n\n/**\n * Number used repeated below in calculations. This must appear before the\n * first call to any from* function below.\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_16_DBL_ = 1 << 16;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_24_DBL_ = 1 << 24;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_32_DBL_ =\n Kotlin.Long.TWO_PWR_16_DBL_ * Kotlin.Long.TWO_PWR_16_DBL_;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_31_DBL_ =\n Kotlin.Long.TWO_PWR_32_DBL_ / 2;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_48_DBL_ =\n Kotlin.Long.TWO_PWR_32_DBL_ * Kotlin.Long.TWO_PWR_16_DBL_;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_64_DBL_ =\n Kotlin.Long.TWO_PWR_32_DBL_ * Kotlin.Long.TWO_PWR_32_DBL_;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_63_DBL_ =\n Kotlin.Long.TWO_PWR_64_DBL_ / 2;\n\n\n/** @type {!Kotlin.Long} */\nKotlin.Long.ZERO = Kotlin.Long.fromInt(0);\n\n\n/** @type {!Kotlin.Long} */\nKotlin.Long.ONE = Kotlin.Long.fromInt(1);\n\n\n/** @type {!Kotlin.Long} */\nKotlin.Long.NEG_ONE = Kotlin.Long.fromInt(-1);\n\n\n/** @type {!Kotlin.Long} */\nKotlin.Long.MAX_VALUE =\n Kotlin.Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0);\n\n\n/** @type {!Kotlin.Long} */\nKotlin.Long.MIN_VALUE = Kotlin.Long.fromBits(0, 0x80000000 | 0);\n\n\n/**\n * @type {!Kotlin.Long}\n * @private\n */\nKotlin.Long.TWO_PWR_24_ = Kotlin.Long.fromInt(1 << 24);\n\n\n/** @return {number} The value, assuming it is a 32-bit integer. */\nKotlin.Long.prototype.toInt = function() {\n return this.low_;\n};\n\n\n/** @return {number} The closest floating-point representation to this value. */\nKotlin.Long.prototype.toNumber = function() {\n return this.high_ * Kotlin.Long.TWO_PWR_32_DBL_ +\n this.getLowBitsUnsigned();\n};\n\n/** @return {number} The 32-bit hashCode of this value. */\nKotlin.Long.prototype.hashCode = function() {\n return this.high_ ^ this.low_;\n};\n\n/**\n * @param {number=} opt_radix The radix in which the text should be written.\n * @return {string} The textual representation of this value.\n * @override\n */\nKotlin.Long.prototype.toString = function(opt_radix) {\n var radix = opt_radix || 10;\n if (radix < 2 || 36 < radix) {\n throw Error('radix out of range: ' + radix);\n }\n\n if (this.isZero()) {\n return '0';\n }\n\n if (this.isNegative()) {\n if (this.equalsLong(Kotlin.Long.MIN_VALUE)) {\n // We need to change the Long value before it can be negated, so we remove\n // the bottom-most digit in this base and then recurse to do the rest.\n var radixLong = Kotlin.Long.fromNumber(radix);\n var div = this.div(radixLong);\n var rem = div.multiply(radixLong).subtract(this);\n return div.toString(radix) + rem.toInt().toString(radix);\n } else {\n return '-' + this.negate().toString(radix);\n }\n }\n\n // Do several (6) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = Kotlin.Long.fromNumber(Math.pow(radix, 6));\n\n var rem = this;\n var result = '';\n while (true) {\n var remDiv = rem.div(radixToPower);\n var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt();\n var digits = intval.toString(radix);\n\n rem = remDiv;\n if (rem.isZero()) {\n return digits + result;\n } else {\n while (digits.length < 6) {\n digits = '0' + digits;\n }\n result = '' + digits + result;\n }\n }\n};\n\n\n/** @return {number} The high 32-bits as a signed value. */\nKotlin.Long.prototype.getHighBits = function() {\n return this.high_;\n};\n\n\n/** @return {number} The low 32-bits as a signed value. */\nKotlin.Long.prototype.getLowBits = function() {\n return this.low_;\n};\n\n\n/** @return {number} The low 32-bits as an unsigned value. */\nKotlin.Long.prototype.getLowBitsUnsigned = function() {\n return (this.low_ >= 0) ?\n this.low_ : Kotlin.Long.TWO_PWR_32_DBL_ + this.low_;\n};\n\n\n/**\n * @return {number} Returns the number of bits needed to represent the absolute\n * value of this Long.\n */\nKotlin.Long.prototype.getNumBitsAbs = function() {\n if (this.isNegative()) {\n if (this.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return 64;\n } else {\n return this.negate().getNumBitsAbs();\n }\n } else {\n var val = this.high_ != 0 ? this.high_ : this.low_;\n for (var bit = 31; bit > 0; bit--) {\n if ((val & (1 << bit)) != 0) {\n break;\n }\n }\n return this.high_ != 0 ? bit + 33 : bit + 1;\n }\n};\n\n\n/** @return {boolean} Whether this value is zero. */\nKotlin.Long.prototype.isZero = function() {\n return this.high_ == 0 && this.low_ == 0;\n};\n\n\n/** @return {boolean} Whether this value is negative. */\nKotlin.Long.prototype.isNegative = function() {\n return this.high_ < 0;\n};\n\n\n/** @return {boolean} Whether this value is odd. */\nKotlin.Long.prototype.isOdd = function() {\n return (this.low_ & 1) == 1;\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long equals the other.\n */\nKotlin.Long.prototype.equalsLong = function(other) {\n return (this.high_ == other.high_) && (this.low_ == other.low_);\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long does not equal the other.\n */\nKotlin.Long.prototype.notEqualsLong = function(other) {\n return (this.high_ != other.high_) || (this.low_ != other.low_);\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long is less than the other.\n */\nKotlin.Long.prototype.lessThan = function(other) {\n return this.compare(other) < 0;\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long is less than or equal to the other.\n */\nKotlin.Long.prototype.lessThanOrEqual = function(other) {\n return this.compare(other) <= 0;\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long is greater than the other.\n */\nKotlin.Long.prototype.greaterThan = function(other) {\n return this.compare(other) > 0;\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long is greater than or equal to the other.\n */\nKotlin.Long.prototype.greaterThanOrEqual = function(other) {\n return this.compare(other) >= 0;\n};\n\n\n/**\n * Compares this Long with the given one.\n * @param {Kotlin.Long} other Long to compare against.\n * @return {number} 0 if they are the same, 1 if the this is greater, and -1\n * if the given one is greater.\n */\nKotlin.Long.prototype.compare = function(other) {\n if (this.equalsLong(other)) {\n return 0;\n }\n\n var thisNeg = this.isNegative();\n var otherNeg = other.isNegative();\n if (thisNeg && !otherNeg) {\n return -1;\n }\n if (!thisNeg && otherNeg) {\n return 1;\n }\n\n // at this point, the signs are the same, so subtraction will not overflow\n if (this.subtract(other).isNegative()) {\n return -1;\n } else {\n return 1;\n }\n};\n\n\n/** @return {!Kotlin.Long} The negation of this value. */\nKotlin.Long.prototype.negate = function() {\n if (this.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return Kotlin.Long.MIN_VALUE;\n } else {\n return this.not().add(Kotlin.Long.ONE);\n }\n};\n\n\n/**\n * Returns the sum of this and the given Long.\n * @param {Kotlin.Long} other Long to add to this one.\n * @return {!Kotlin.Long} The sum of this and the given Long.\n */\nKotlin.Long.prototype.add = function(other) {\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\n\n var a48 = this.high_ >>> 16;\n var a32 = this.high_ & 0xFFFF;\n var a16 = this.low_ >>> 16;\n var a00 = this.low_ & 0xFFFF;\n\n var b48 = other.high_ >>> 16;\n var b32 = other.high_ & 0xFFFF;\n var b16 = other.low_ >>> 16;\n var b00 = other.low_ & 0xFFFF;\n\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\n c00 += a00 + b00;\n c16 += c00 >>> 16;\n c00 &= 0xFFFF;\n c16 += a16 + b16;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c32 += a32 + b32;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c48 += a48 + b48;\n c48 &= 0xFFFF;\n return Kotlin.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32);\n};\n\n\n/**\n * Returns the difference of this and the given Long.\n * @param {Kotlin.Long} other Long to subtract from this.\n * @return {!Kotlin.Long} The difference of this and the given Long.\n */\nKotlin.Long.prototype.subtract = function(other) {\n return this.add(other.negate());\n};\n\n\n/**\n * Returns the product of this and the given long.\n * @param {Kotlin.Long} other Long to multiply with this.\n * @return {!Kotlin.Long} The product of this and the other.\n */\nKotlin.Long.prototype.multiply = function(other) {\n if (this.isZero()) {\n return Kotlin.Long.ZERO;\n } else if (other.isZero()) {\n return Kotlin.Long.ZERO;\n }\n\n if (this.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return other.isOdd() ? Kotlin.Long.MIN_VALUE : Kotlin.Long.ZERO;\n } else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return this.isOdd() ? Kotlin.Long.MIN_VALUE : Kotlin.Long.ZERO;\n }\n\n if (this.isNegative()) {\n if (other.isNegative()) {\n return this.negate().multiply(other.negate());\n } else {\n return this.negate().multiply(other).negate();\n }\n } else if (other.isNegative()) {\n return this.multiply(other.negate()).negate();\n }\n\n // If both longs are small, use float multiplication\n if (this.lessThan(Kotlin.Long.TWO_PWR_24_) &&\n other.lessThan(Kotlin.Long.TWO_PWR_24_)) {\n return Kotlin.Long.fromNumber(this.toNumber() * other.toNumber());\n }\n\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\n // We can skip products that would overflow.\n\n var a48 = this.high_ >>> 16;\n var a32 = this.high_ & 0xFFFF;\n var a16 = this.low_ >>> 16;\n var a00 = this.low_ & 0xFFFF;\n\n var b48 = other.high_ >>> 16;\n var b32 = other.high_ & 0xFFFF;\n var b16 = other.low_ >>> 16;\n var b00 = other.low_ & 0xFFFF;\n\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\n c00 += a00 * b00;\n c16 += c00 >>> 16;\n c00 &= 0xFFFF;\n c16 += a16 * b00;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c16 += a00 * b16;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c32 += a32 * b00;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c32 += a16 * b16;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c32 += a00 * b32;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\n c48 &= 0xFFFF;\n return Kotlin.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32);\n};\n\n\n/**\n * Returns this Long divided by the given one.\n * @param {Kotlin.Long} other Long by which to divide.\n * @return {!Kotlin.Long} This Long divided by the given one.\n */\nKotlin.Long.prototype.div = function(other) {\n if (other.isZero()) {\n throw Error('division by zero');\n } else if (this.isZero()) {\n return Kotlin.Long.ZERO;\n }\n\n if (this.equalsLong(Kotlin.Long.MIN_VALUE)) {\n if (other.equalsLong(Kotlin.Long.ONE) ||\n other.equalsLong(Kotlin.Long.NEG_ONE)) {\n return Kotlin.Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\n } else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return Kotlin.Long.ONE;\n } else {\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\n var halfThis = this.shiftRight(1);\n var approx = halfThis.div(other).shiftLeft(1);\n if (approx.equalsLong(Kotlin.Long.ZERO)) {\n return other.isNegative() ? Kotlin.Long.ONE : Kotlin.Long.NEG_ONE;\n } else {\n var rem = this.subtract(other.multiply(approx));\n var result = approx.add(rem.div(other));\n return result;\n }\n }\n } else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return Kotlin.Long.ZERO;\n }\n\n if (this.isNegative()) {\n if (other.isNegative()) {\n return this.negate().div(other.negate());\n } else {\n return this.negate().div(other).negate();\n }\n } else if (other.isNegative()) {\n return this.div(other.negate()).negate();\n }\n\n // Repeat the following until the remainder is less than other: find a\n // floating-point that approximates remainder / other *from below*, add this\n // into the result, and subtract it from the remainder. It is critical that\n // the approximate value is less than or equal to the real value so that the\n // remainder never becomes negative.\n var res = Kotlin.Long.ZERO;\n var rem = this;\n while (rem.greaterThanOrEqual(other)) {\n // Approximate the result of division. This may be a little greater or\n // smaller than the actual value.\n var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber()));\n\n // We will tweak the approximate result by changing it in the 48-th digit or\n // the smallest non-fractional digit, whichever is larger.\n var log2 = Math.ceil(Math.log(approx) / Math.LN2);\n var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48);\n\n // Decrease the approximation until it is smaller than the remainder. Note\n // that if it is too large, the product overflows and is negative.\n var approxRes = Kotlin.Long.fromNumber(approx);\n var approxRem = approxRes.multiply(other);\n while (approxRem.isNegative() || approxRem.greaterThan(rem)) {\n approx -= delta;\n approxRes = Kotlin.Long.fromNumber(approx);\n approxRem = approxRes.multiply(other);\n }\n\n // We know the answer can't be zero... and actually, zero would cause\n // infinite recursion since we would make no progress.\n if (approxRes.isZero()) {\n approxRes = Kotlin.Long.ONE;\n }\n\n res = res.add(approxRes);\n rem = rem.subtract(approxRem);\n }\n return res;\n};\n\n\n/**\n * Returns this Long modulo the given one.\n * @param {Kotlin.Long} other Long by which to mod.\n * @return {!Kotlin.Long} This Long modulo the given one.\n */\nKotlin.Long.prototype.modulo = function(other) {\n return this.subtract(this.div(other).multiply(other));\n};\n\n\n/** @return {!Kotlin.Long} The bitwise-NOT of this value. */\nKotlin.Long.prototype.not = function() {\n return Kotlin.Long.fromBits(~this.low_, ~this.high_);\n};\n\n\n/**\n * Returns the bitwise-AND of this Long and the given one.\n * @param {Kotlin.Long} other The Long with which to AND.\n * @return {!Kotlin.Long} The bitwise-AND of this and the other.\n */\nKotlin.Long.prototype.and = function(other) {\n return Kotlin.Long.fromBits(this.low_ & other.low_,\n this.high_ & other.high_);\n};\n\n\n/**\n * Returns the bitwise-OR of this Long and the given one.\n * @param {Kotlin.Long} other The Long with which to OR.\n * @return {!Kotlin.Long} The bitwise-OR of this and the other.\n */\nKotlin.Long.prototype.or = function(other) {\n return Kotlin.Long.fromBits(this.low_ | other.low_,\n this.high_ | other.high_);\n};\n\n\n/**\n * Returns the bitwise-XOR of this Long and the given one.\n * @param {Kotlin.Long} other The Long with which to XOR.\n * @return {!Kotlin.Long} The bitwise-XOR of this and the other.\n */\nKotlin.Long.prototype.xor = function(other) {\n return Kotlin.Long.fromBits(this.low_ ^ other.low_,\n this.high_ ^ other.high_);\n};\n\n\n/**\n * Returns this Long with bits shifted to the left by the given amount.\n * @param {number} numBits The number of bits by which to shift.\n * @return {!Kotlin.Long} This shifted to the left by the given amount.\n */\nKotlin.Long.prototype.shiftLeft = function(numBits) {\n numBits &= 63;\n if (numBits == 0) {\n return this;\n } else {\n var low = this.low_;\n if (numBits < 32) {\n var high = this.high_;\n return Kotlin.Long.fromBits(\n low << numBits,\n (high << numBits) | (low >>> (32 - numBits)));\n } else {\n return Kotlin.Long.fromBits(0, low << (numBits - 32));\n }\n }\n};\n\n\n/**\n * Returns this Long with bits shifted to the right by the given amount.\n * @param {number} numBits The number of bits by which to shift.\n * @return {!Kotlin.Long} This shifted to the right by the given amount.\n */\nKotlin.Long.prototype.shiftRight = function(numBits) {\n numBits &= 63;\n if (numBits == 0) {\n return this;\n } else {\n var high = this.high_;\n if (numBits < 32) {\n var low = this.low_;\n return Kotlin.Long.fromBits(\n (low >>> numBits) | (high << (32 - numBits)),\n high >> numBits);\n } else {\n return Kotlin.Long.fromBits(\n high >> (numBits - 32),\n high >= 0 ? 0 : -1);\n }\n }\n};\n\n\n/**\n * Returns this Long with bits shifted to the right by the given amount, with\n * zeros placed into the new leading bits.\n * @param {number} numBits The number of bits by which to shift.\n * @return {!Kotlin.Long} This shifted to the right by the given amount, with\n * zeros placed into the new leading bits.\n */\nKotlin.Long.prototype.shiftRightUnsigned = function(numBits) {\n numBits &= 63;\n if (numBits == 0) {\n return this;\n } else {\n var high = this.high_;\n if (numBits < 32) {\n var low = this.low_;\n return Kotlin.Long.fromBits(\n (low >>> numBits) | (high << (32 - numBits)),\n high >>> numBits);\n } else if (numBits == 32) {\n return Kotlin.Long.fromBits(high, 0);\n } else {\n return Kotlin.Long.fromBits(high >>> (numBits - 32), 0);\n }\n }\n};\n\n// Support for Kotlin\nKotlin.Long.prototype.equals = function (other) {\n return other instanceof Kotlin.Long && this.equalsLong(other);\n};\n\nKotlin.Long.prototype.compareTo_11rb$ = Kotlin.Long.prototype.compare;\n\nKotlin.Long.prototype.inc = function() {\n return this.add(Kotlin.Long.ONE);\n};\n\nKotlin.Long.prototype.dec = function() {\n return this.add(Kotlin.Long.NEG_ONE);\n};\n\nKotlin.Long.prototype.valueOf = function() {\n return this.toNumber();\n};\n\nKotlin.Long.prototype.unaryPlus = function() {\n return this;\n};\n\nKotlin.Long.prototype.unaryMinus = Kotlin.Long.prototype.negate;\nKotlin.Long.prototype.inv = Kotlin.Long.prototype.not;\n\nKotlin.Long.prototype.rangeTo = function (other) {\n return new Kotlin.kotlin.ranges.LongRange(this, other);\n};","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n/**\n * @param {string} id\n * @param {Object} declaration\n */\nKotlin.defineModule = function (id, declaration) {\n};\n\nKotlin.defineInlineFunction = function(tag, fun) {\n return fun;\n};\n\nKotlin.wrapFunction = function(fun) {\n var f = function() {\n f = fun();\n return f.apply(this, arguments);\n };\n return function() {\n return f.apply(this, arguments);\n };\n};\n\nKotlin.isTypeOf = function(type) {\n return function (object) {\n return typeof object === type;\n }\n};\n\nKotlin.isInstanceOf = function (klass) {\n return function (object) {\n return Kotlin.isType(object, klass);\n }\n};\n\nKotlin.orNull = function (fn) {\n return function (object) {\n return object == null || fn(object);\n }\n};\n\nKotlin.andPredicate = function (a, b) {\n return function (object) {\n return a(object) && b(object);\n }\n};\n\nKotlin.kotlinModuleMetadata = function (abiVersion, moduleName, data) {\n};\n\nKotlin.suspendCall = function(value) {\n return value;\n};\n\nKotlin.coroutineResult = function(qualifier) {\n throwMarkerError();\n};\n\nKotlin.coroutineController = function(qualifier) {\n throwMarkerError();\n};\n\nKotlin.coroutineReceiver = function(qualifier) {\n throwMarkerError();\n};\n\nKotlin.setCoroutineResult = function(value, qualifier) {\n throwMarkerError();\n};\n\nfunction throwMarkerError() {\n throw new Error(\n \"This marker function should never been called. \" +\n \"Looks like compiler did not eliminate it properly. \" +\n \"Please, report an issue if you caught this exception.\");\n}\n\nKotlin.getFunctionById = function(id, defaultValue) {\n return function() {\n return defaultValue;\n }\n};","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\nKotlin.compareTo = function (a, b) {\n var typeA = typeof a;\n if (typeA === \"number\") {\n if (typeof b === \"number\") {\n return Kotlin.doubleCompareTo(a, b);\n }\n return Kotlin.primitiveCompareTo(a, b);\n }\n if (typeA === \"string\" || typeA === \"boolean\") {\n return Kotlin.primitiveCompareTo(a, b);\n }\n return a.compareTo_11rb$(b);\n};\n\nKotlin.primitiveCompareTo = function (a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n};\n\nKotlin.doubleCompareTo = function (a, b) {\n if (a < b) return -1;\n if (a > b) return 1;\n\n if (a === b) {\n if (a !== 0) return 0;\n\n var ia = 1 / a;\n return ia === 1 / b ? 0 : (ia < 0 ? -1 : 1);\n }\n\n return a !== a ? (b !== b ? 0 : 1) : -1\n};\n\nKotlin.charInc = function (value) {\n return Kotlin.toChar(value+1);\n};\n\nKotlin.charDec = function (value) {\n return Kotlin.toChar(value-1);\n};\n\nKotlin.imul = Math.imul || imul;\n\nKotlin.imulEmulated = imul;\n\nfunction imul(a, b) {\n return ((a & 0xffff0000) * (b & 0xffff) + (a & 0xffff) * (b | 0)) | 0;\n}\n\n(function() {\n var buf = new ArrayBuffer(8);\n var bufFloat64 = new Float64Array(buf);\n var bufFloat32 = new Float32Array(buf);\n var bufInt32 = new Int32Array(buf);\n var lowIndex = 0;\n var highIndex = 1;\n\n bufFloat64[0] = -1; // bff00000_00000000\n if (bufInt32[lowIndex] !== 0) {\n lowIndex = 1;\n highIndex = 0;\n }\n\n Kotlin.doubleToBits = function(value) {\n return Kotlin.doubleToRawBits(isNaN(value) ? NaN : value);\n };\n\n Kotlin.doubleToRawBits = function(value) {\n bufFloat64[0] = value;\n return Kotlin.Long.fromBits(bufInt32[lowIndex], bufInt32[highIndex]);\n };\n\n Kotlin.doubleFromBits = function(value) {\n bufInt32[lowIndex] = value.low_;\n bufInt32[highIndex] = value.high_;\n return bufFloat64[0];\n };\n\n Kotlin.floatToBits = function(value) {\n return Kotlin.floatToRawBits(isNaN(value) ? NaN : value);\n };\n\n Kotlin.floatToRawBits = function(value) {\n bufFloat32[0] = value;\n return bufInt32[0];\n };\n\n Kotlin.floatFromBits = function(value) {\n bufInt32[0] = value;\n return bufFloat32[0];\n };\n\n // returns zero value for number with positive sign bit and non-zero value for number with negative sign bit.\n Kotlin.doubleSignBit = function(value) {\n bufFloat64[0] = value;\n return bufInt32[highIndex] & 0x80000000;\n };\n\n Kotlin.numberHashCode = function(obj) {\n if ((obj | 0) === obj) {\n return obj | 0;\n }\n else {\n bufFloat64[0] = obj;\n return (bufInt32[highIndex] * 31 | 0) + bufInt32[lowIndex] | 0;\n }\n }\n})();\n\nKotlin.ensureNotNull = function(x) {\n return x != null ? x : Kotlin.throwNPE();\n};\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\nif (typeof String.prototype.startsWith === \"undefined\") {\n String.prototype.startsWith = function(searchString, position) {\n position = position || 0;\n return this.lastIndexOf(searchString, position) === position;\n };\n}\nif (typeof String.prototype.endsWith === \"undefined\") {\n String.prototype.endsWith = function(searchString, position) {\n var subjectString = this.toString();\n if (position === undefined || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n}\n// ES6 Math polyfills\nif (typeof Math.sign === \"undefined\") {\n Math.sign = function(x) {\n x = +x; // convert to a number\n if (x === 0 || isNaN(x)) {\n return Number(x);\n }\n return x > 0 ? 1 : -1;\n };\n}\nif (typeof Math.trunc === \"undefined\") {\n Math.trunc = function(x) {\n if (isNaN(x)) {\n return NaN;\n }\n if (x > 0) {\n return Math.floor(x);\n }\n return Math.ceil(x);\n };\n}\n\n(function() {\n var epsilon = 2.220446049250313E-16;\n var taylor_2_bound = Math.sqrt(epsilon);\n var taylor_n_bound = Math.sqrt(taylor_2_bound);\n var upper_taylor_2_bound = 1/taylor_2_bound;\n var upper_taylor_n_bound = 1/taylor_n_bound;\n\n if (typeof Math.sinh === \"undefined\") {\n Math.sinh = function(x) {\n if (Math.abs(x) < taylor_n_bound) {\n var result = x;\n if (Math.abs(x) > taylor_2_bound) {\n result += (x * x * x) / 6;\n }\n return result;\n } else {\n var y = Math.exp(x);\n var y1 = 1 / y;\n if (!isFinite(y)) return Math.exp(x - Math.LN2);\n if (!isFinite(y1)) return -Math.exp(-x - Math.LN2);\n return (y - y1) / 2;\n }\n };\n }\n if (typeof Math.cosh === \"undefined\") {\n Math.cosh = function(x) {\n var y = Math.exp(x);\n var y1 = 1 / y;\n if (!isFinite(y) || !isFinite(y1)) return Math.exp(Math.abs(x) - Math.LN2);\n return (y + y1) / 2;\n };\n }\n\n if (typeof Math.tanh === \"undefined\") {\n Math.tanh = function(x){\n if (Math.abs(x) < taylor_n_bound) {\n var result = x;\n if (Math.abs(x) > taylor_2_bound) {\n result -= (x * x * x) / 3;\n }\n return result;\n }\n else {\n var a = Math.exp(+x), b = Math.exp(-x);\n return a === Infinity ? 1 : b === Infinity ? -1 : (a - b) / (a + b);\n }\n };\n }\n\n // Inverse hyperbolic function implementations derived from boost special math functions,\n // Copyright Eric Ford & Hubert Holin 2001.\n\n if (typeof Math.asinh === \"undefined\") {\n var asinh = function(x) {\n if (x >= +taylor_n_bound)\n {\n if (x > upper_taylor_n_bound)\n {\n if (x > upper_taylor_2_bound)\n {\n // approximation by laurent series in 1/x at 0+ order from -1 to 0\n return Math.log(x) + Math.LN2;\n }\n else\n {\n // approximation by laurent series in 1/x at 0+ order from -1 to 1\n return Math.log(x * 2 + (1 / (x * 2)));\n }\n }\n else\n {\n return Math.log(x + Math.sqrt(x * x + 1));\n }\n }\n else if (x <= -taylor_n_bound)\n {\n return -asinh(-x);\n }\n else\n {\n // approximation by taylor series in x at 0 up to order 2\n var result = x;\n if (Math.abs(x) >= taylor_2_bound)\n {\n var x3 = x * x * x;\n // approximation by taylor series in x at 0 up to order 4\n result -= x3 / 6;\n }\n return result;\n }\n };\n Math.asinh = asinh;\n }\n if (typeof Math.acosh === \"undefined\") {\n Math.acosh = function(x) {\n if (x < 1)\n {\n return NaN;\n }\n else if (x - 1 >= taylor_n_bound)\n {\n if (x > upper_taylor_2_bound)\n {\n // approximation by laurent series in 1/x at 0+ order from -1 to 0\n return Math.log(x) + Math.LN2;\n }\n else\n {\n return Math.log(x + Math.sqrt(x * x - 1));\n }\n }\n else\n {\n var y = Math.sqrt(x - 1);\n // approximation by taylor series in y at 0 up to order 2\n var result = y;\n if (y >= taylor_2_bound)\n {\n var y3 = y * y * y;\n // approximation by taylor series in y at 0 up to order 4\n result -= y3 / 12;\n }\n\n return Math.sqrt(2) * result;\n }\n };\n }\n if (typeof Math.atanh === \"undefined\") {\n Math.atanh = function(x) {\n if (Math.abs(x) < taylor_n_bound) {\n var result = x;\n if (Math.abs(x) > taylor_2_bound) {\n result += (x * x * x) / 3;\n }\n return result;\n }\n return Math.log((1 + x) / (1 - x)) / 2;\n };\n }\n if (typeof Math.log1p === \"undefined\") {\n Math.log1p = function(x) {\n if (Math.abs(x) < taylor_n_bound) {\n var x2 = x * x;\n var x3 = x2 * x;\n var x4 = x3 * x;\n // approximation by taylor series in x at 0 up to order 4\n return (-x4 / 4 + x3 / 3 - x2 / 2 + x);\n }\n return Math.log(x + 1);\n };\n }\n if (typeof Math.expm1 === \"undefined\") {\n Math.expm1 = function(x) {\n if (Math.abs(x) < taylor_n_bound) {\n var x2 = x * x;\n var x3 = x2 * x;\n var x4 = x3 * x;\n // approximation by taylor series in x at 0 up to order 4\n return (x4 / 24 + x3 / 6 + x2 / 2 + x);\n }\n return Math.exp(x) - 1;\n };\n }\n})();\nif (typeof Math.hypot === \"undefined\") {\n Math.hypot = function() {\n var y = 0;\n var length = arguments.length;\n\n for (var i = 0; i < length; i++) {\n if (arguments[i] === Infinity || arguments[i] === -Infinity) {\n return Infinity;\n }\n y += arguments[i] * arguments[i];\n }\n return Math.sqrt(y);\n };\n}\nif (typeof Math.log10 === \"undefined\") {\n Math.log10 = function(x) {\n return Math.log(x) * Math.LOG10E;\n };\n}\nif (typeof Math.log2 === \"undefined\") {\n Math.log2 = function(x) {\n return Math.log(x) * Math.LOG2E;\n };\n}\n\n// For HtmlUnit and PhantomJs\nif (typeof ArrayBuffer.isView === \"undefined\") {\n ArrayBuffer.isView = function(a) {\n return a != null && a.__proto__ != null && a.__proto__.__proto__ === Int8Array.prototype.__proto__;\n };\n}\n\n(function() {\n function normalizeOffset(offset, length) {\n if (offset < 0) return Math.max(0, offset + length);\n return Math.min(offset, length);\n }\n function typedArraySlice(begin, end) {\n if (typeof end === \"undefined\") {\n end = this.length;\n }\n begin = normalizeOffset(begin || 0, this.length);\n end = Math.max(begin, normalizeOffset(end, this.length));\n return new this.constructor(this.subarray(begin, end));\n }\n\n var arrays = [Int8Array, Int16Array, Uint16Array, Int32Array, Float32Array, Float64Array];\n for (var i = 0; i < arrays.length; ++i) {\n var TypedArray = arrays[i];\n if (typeof TypedArray.prototype.slice === \"undefined\") {\n Object.defineProperty(TypedArray.prototype, 'slice', {\n value: typedArraySlice\n });\n }\n }\n\n // Patch apply to work with TypedArrays if needed.\n try {\n (function() {}).apply(null, new Int32Array(0))\n } catch (e) {\n var apply = Function.prototype.apply;\n Object.defineProperty(Function.prototype, 'apply', {\n value: function(self, array) {\n return apply.call(this, self, [].slice.call(array));\n }\n });\n }\n\n\n // Patch map to work with TypedArrays if needed.\n for (var i = 0; i < arrays.length; ++i) {\n var TypedArray = arrays[i];\n if (typeof TypedArray.prototype.map === \"undefined\") {\n Object.defineProperty(TypedArray.prototype, 'map', {\n value: function(callback, self) {\n return [].slice.call(this).map(callback, self);\n }\n });\n }\n }\n\n // Patch sort to work with TypedArrays if needed.\n // TODO: consider to remove following function and replace it with `Kotlin.doubleCompareTo` (see misc.js)\n var totalOrderComparator = function (a, b) {\n if (a < b) return -1;\n if (a > b) return 1;\n\n if (a === b) {\n if (a !== 0) return 0;\n\n var ia = 1 / a;\n return ia === 1 / b ? 0 : (ia < 0 ? -1 : 1);\n }\n\n return a !== a ? (b !== b ? 0 : 1) : -1\n };\n\n for (var i = 0; i < arrays.length; ++i) {\n var TypedArray = arrays[i];\n if (typeof TypedArray.prototype.sort === \"undefined\") {\n Object.defineProperty(TypedArray.prototype, 'sort', {\n value: function(compareFunction) {\n return Array.prototype.sort.call(this, compareFunction || totalOrderComparator);\n }\n });\n }\n }\n})();\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\nKotlin.Kind = {\n CLASS: \"class\",\n INTERFACE: \"interface\",\n OBJECT: \"object\"\n};\n\nKotlin.callGetter = function (thisObject, klass, propertyName) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(klass, propertyName);\n if (propertyDescriptor != null && propertyDescriptor.get != null) {\n return propertyDescriptor.get.call(thisObject);\n }\n\n propertyDescriptor = Object.getOwnPropertyDescriptor(thisObject, propertyName);\n if (propertyDescriptor != null && \"value\" in propertyDescriptor) {\n return thisObject[propertyName];\n }\n\n return Kotlin.callGetter(thisObject, Object.getPrototypeOf(klass), propertyName);\n};\n\nKotlin.callSetter = function (thisObject, klass, propertyName, value) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(klass, propertyName);\n if (propertyDescriptor != null && propertyDescriptor.set != null) {\n propertyDescriptor.set.call(thisObject, value);\n return;\n }\n\n propertyDescriptor = Object.getOwnPropertyDescriptor(thisObject, propertyName);\n if (propertyDescriptor != null && \"value\" in propertyDescriptor) {\n thisObject[propertyName] = value;\n return\n }\n\n Kotlin.callSetter(thisObject, Object.getPrototypeOf(klass), propertyName, value);\n};\n\nfunction isInheritanceFromInterface(ctor, iface) {\n if (ctor === iface) return true;\n\n var metadata = ctor.$metadata$;\n if (metadata != null) {\n var interfaces = metadata.interfaces;\n for (var i = 0; i < interfaces.length; i++) {\n if (isInheritanceFromInterface(interfaces[i], iface)) {\n return true;\n }\n }\n }\n\n var superPrototype = ctor.prototype != null ? Object.getPrototypeOf(ctor.prototype) : null;\n var superConstructor = superPrototype != null ? superPrototype.constructor : null;\n return superConstructor != null && isInheritanceFromInterface(superConstructor, iface);\n}\n\n/**\n *\n * @param {*} object\n * @param {Function|Object} klass\n * @returns {Boolean}\n */\nKotlin.isType = function (object, klass) {\n if (klass === Object) {\n switch (typeof object) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n case \"function\":\n return true;\n default:\n return object instanceof Object;\n }\n }\n\n if (object == null || klass == null || (typeof object !== 'object' && typeof object !== 'function')) {\n return false;\n }\n\n if (typeof klass === \"function\" && object instanceof klass) {\n return true;\n }\n\n var proto = Object.getPrototypeOf(klass);\n var constructor = proto != null ? proto.constructor : null;\n if (constructor != null && \"$metadata$\" in constructor) {\n var metadata = constructor.$metadata$;\n if (metadata.kind === Kotlin.Kind.OBJECT) {\n return object === klass;\n }\n }\n\n var klassMetadata = klass.$metadata$;\n\n // In WebKit (JavaScriptCore) for some interfaces from DOM typeof returns \"object\", nevertheless they can be used in RHS of instanceof\n if (klassMetadata == null) {\n return object instanceof klass;\n }\n\n if (klassMetadata.kind === Kotlin.Kind.INTERFACE && object.constructor != null) {\n return isInheritanceFromInterface(object.constructor, klass);\n }\n\n return false;\n};\n\nKotlin.isNumber = function (a) {\n return typeof a == \"number\" || a instanceof Kotlin.Long;\n};\n\nKotlin.isChar = function (value) {\n return value instanceof Kotlin.BoxedChar\n};\n\nKotlin.isComparable = function (value) {\n var type = typeof value;\n\n return type === \"string\" ||\n type === \"boolean\" ||\n Kotlin.isNumber(value) ||\n Kotlin.isType(value, Kotlin.kotlin.Comparable);\n};\n\nKotlin.isCharSequence = function (value) {\n return typeof value === \"string\" || Kotlin.isType(value, Kotlin.kotlin.CharSequence);\n};",null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\npublic class Enum> : Comparable> {\n @JsName(\"name$\") private var _name: String = \"\"\n @JsName(\"ordinal$\") private var _ordinal: Int = 0\n\n val name: String\n get() = _name\n\n val ordinal: Int\n get() = _ordinal\n\n override fun compareTo(other: Enum) = ordinal.compareTo(other.ordinal)\n\n override fun equals(other: Any?) = this === other\n\n override fun hashCode(): Int = js(\"Kotlin.identityHashCode\")(this)\n\n override fun toString() = name\n\n companion object\n}",null,"/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"ArraysKt\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component1(): T {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component1(): Byte {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component1(): Short {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component1(): Int {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component1(): Long {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component1(): Float {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component1(): Double {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component1(): Boolean {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component1(): Char {\n return get(0)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component2(): T {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component2(): Byte {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component2(): Short {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component2(): Int {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component2(): Long {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component2(): Float {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component2(): Double {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component2(): Boolean {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component2(): Char {\n return get(1)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component3(): T {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component3(): Byte {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component3(): Short {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component3(): Int {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component3(): Long {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component3(): Float {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component3(): Double {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component3(): Boolean {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component3(): Char {\n return get(2)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component4(): T {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component4(): Byte {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component4(): Short {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component4(): Int {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component4(): Long {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component4(): Float {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component4(): Double {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component4(): Boolean {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component4(): Char {\n return get(3)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component5(): T {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component5(): Byte {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component5(): Short {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component5(): Int {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component5(): Long {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component5(): Float {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component5(): Double {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component5(): Boolean {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component5(): Char {\n return get(4)\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun <@kotlin.internal.OnlyInputTypes T> Array.contains(element: T): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun ByteArray.contains(element: Byte): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun ShortArray.contains(element: Short): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun IntArray.contains(element: Int): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun LongArray.contains(element: Long): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun FloatArray.contains(element: Float): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun DoubleArray.contains(element: Double): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun BooleanArray.contains(element: Boolean): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun CharArray.contains(element: Char): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun Array.elementAt(index: Int): T\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun ByteArray.elementAt(index: Int): Byte\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun ShortArray.elementAt(index: Int): Short\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun IntArray.elementAt(index: Int): Int\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun LongArray.elementAt(index: Int): Long\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun FloatArray.elementAt(index: Int): Float\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun DoubleArray.elementAt(index: Int): Double\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun BooleanArray.elementAt(index: Int): Boolean\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun CharArray.elementAt(index: Int): Char\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Byte): Byte {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Short): Short {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Int): Int {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Long): Long {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Float): Float {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Double): Double {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Boolean): Boolean {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Char): Char {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.elementAtOrNull(index: Int): T? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.elementAtOrNull(index: Int): Byte? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.elementAtOrNull(index: Int): Short? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.elementAtOrNull(index: Int): Int? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.elementAtOrNull(index: Int): Long? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.elementAtOrNull(index: Int): Float? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.elementAtOrNull(index: Int): Double? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.elementAtOrNull(index: Int): Boolean? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.elementAtOrNull(index: Int): Char? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.find(predicate: (T) -> Boolean): T? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.find(predicate: (Byte) -> Boolean): Byte? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.find(predicate: (Short) -> Boolean): Short? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.find(predicate: (Int) -> Boolean): Int? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.find(predicate: (Long) -> Boolean): Long? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.find(predicate: (Float) -> Boolean): Float? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.find(predicate: (Double) -> Boolean): Double? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.find(predicate: (Boolean) -> Boolean): Boolean? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.find(predicate: (Char) -> Boolean): Char? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.findLast(predicate: (Byte) -> Boolean): Byte? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.findLast(predicate: (Short) -> Boolean): Short? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.findLast(predicate: (Int) -> Boolean): Int? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.findLast(predicate: (Long) -> Boolean): Long? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.findLast(predicate: (Float) -> Boolean): Float? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.findLast(predicate: (Double) -> Boolean): Double? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.findLast(predicate: (Boolean) -> Boolean): Boolean? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.findLast(predicate: (Char) -> Boolean): Char? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun Array.first(): T {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ByteArray.first(): Byte {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ShortArray.first(): Short {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun IntArray.first(): Int {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun LongArray.first(): Long {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun FloatArray.first(): Float {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun DoubleArray.first(): Double {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun BooleanArray.first(): Boolean {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun CharArray.first(): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun Array.first(predicate: (T) -> Boolean): T {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ByteArray.first(predicate: (Byte) -> Boolean): Byte {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ShortArray.first(predicate: (Short) -> Boolean): Short {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun IntArray.first(predicate: (Int) -> Boolean): Int {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun LongArray.first(predicate: (Long) -> Boolean): Long {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun FloatArray.first(predicate: (Float) -> Boolean): Float {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun DoubleArray.first(predicate: (Double) -> Boolean): Double {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun BooleanArray.first(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun CharArray.first(predicate: (Char) -> Boolean): Char {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun Array.firstOrNull(): T? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun ByteArray.firstOrNull(): Byte? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun ShortArray.firstOrNull(): Short? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun IntArray.firstOrNull(): Int? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun LongArray.firstOrNull(): Long? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun FloatArray.firstOrNull(): Float? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun DoubleArray.firstOrNull(): Double? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun BooleanArray.firstOrNull(): Boolean? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun CharArray.firstOrNull(): Char? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun Array.firstOrNull(predicate: (T) -> Boolean): T? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun ByteArray.firstOrNull(predicate: (Byte) -> Boolean): Byte? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun ShortArray.firstOrNull(predicate: (Short) -> Boolean): Short? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun IntArray.firstOrNull(predicate: (Int) -> Boolean): Int? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun LongArray.firstOrNull(predicate: (Long) -> Boolean): Long? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun FloatArray.firstOrNull(predicate: (Float) -> Boolean): Float? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun DoubleArray.firstOrNull(predicate: (Double) -> Boolean): Double? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun BooleanArray.firstOrNull(predicate: (Boolean) -> Boolean): Boolean? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun CharArray.firstOrNull(predicate: (Char) -> Boolean): Char? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.getOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.getOrElse(index: Int, defaultValue: (Int) -> Byte): Byte {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.getOrElse(index: Int, defaultValue: (Int) -> Short): Short {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.getOrElse(index: Int, defaultValue: (Int) -> Int): Int {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.getOrElse(index: Int, defaultValue: (Int) -> Long): Long {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.getOrElse(index: Int, defaultValue: (Int) -> Float): Float {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.getOrElse(index: Int, defaultValue: (Int) -> Double): Double {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.getOrElse(index: Int, defaultValue: (Int) -> Boolean): Boolean {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.getOrElse(index: Int, defaultValue: (Int) -> Char): Char {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun Array.getOrNull(index: Int): T? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun ByteArray.getOrNull(index: Int): Byte? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun ShortArray.getOrNull(index: Int): Short? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun IntArray.getOrNull(index: Int): Int? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun LongArray.getOrNull(index: Int): Long? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun FloatArray.getOrNull(index: Int): Float? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun DoubleArray.getOrNull(index: Int): Double? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun BooleanArray.getOrNull(index: Int): Boolean? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun CharArray.getOrNull(index: Int): Char? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Array.indexOf(element: T): Int {\n if (element == null) {\n for (index in indices) {\n if (this[index] == null) {\n return index\n }\n }\n } else {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun ByteArray.indexOf(element: Byte): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun ShortArray.indexOf(element: Short): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun IntArray.indexOf(element: Int): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun LongArray.indexOf(element: Long): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun FloatArray.indexOf(element: Float): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun DoubleArray.indexOf(element: Double): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun BooleanArray.indexOf(element: Boolean): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun CharArray.indexOf(element: Char): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun Array.indexOfFirst(predicate: (T) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ByteArray.indexOfFirst(predicate: (Byte) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ShortArray.indexOfFirst(predicate: (Short) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun IntArray.indexOfFirst(predicate: (Int) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun LongArray.indexOfFirst(predicate: (Long) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun FloatArray.indexOfFirst(predicate: (Float) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun DoubleArray.indexOfFirst(predicate: (Double) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun BooleanArray.indexOfFirst(predicate: (Boolean) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun CharArray.indexOfFirst(predicate: (Char) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun Array.indexOfLast(predicate: (T) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ByteArray.indexOfLast(predicate: (Byte) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ShortArray.indexOfLast(predicate: (Short) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun IntArray.indexOfLast(predicate: (Int) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun LongArray.indexOfLast(predicate: (Long) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun FloatArray.indexOfLast(predicate: (Float) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun DoubleArray.indexOfLast(predicate: (Double) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun BooleanArray.indexOfLast(predicate: (Boolean) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun CharArray.indexOfLast(predicate: (Char) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun Array.last(): T {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ByteArray.last(): Byte {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ShortArray.last(): Short {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun IntArray.last(): Int {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun LongArray.last(): Long {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun FloatArray.last(): Float {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun DoubleArray.last(): Double {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun BooleanArray.last(): Boolean {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun CharArray.last(): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun Array.last(predicate: (T) -> Boolean): T {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ByteArray.last(predicate: (Byte) -> Boolean): Byte {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ShortArray.last(predicate: (Short) -> Boolean): Short {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun IntArray.last(predicate: (Int) -> Boolean): Int {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun LongArray.last(predicate: (Long) -> Boolean): Long {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun FloatArray.last(predicate: (Float) -> Boolean): Float {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun DoubleArray.last(predicate: (Double) -> Boolean): Double {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun BooleanArray.last(predicate: (Boolean) -> Boolean): Boolean {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun CharArray.last(predicate: (Char) -> Boolean): Char {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Array.lastIndexOf(element: T): Int {\n if (element == null) {\n for (index in indices.reversed()) {\n if (this[index] == null) {\n return index\n }\n }\n } else {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun ByteArray.lastIndexOf(element: Byte): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun ShortArray.lastIndexOf(element: Short): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun IntArray.lastIndexOf(element: Int): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun LongArray.lastIndexOf(element: Long): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun FloatArray.lastIndexOf(element: Float): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun DoubleArray.lastIndexOf(element: Double): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun BooleanArray.lastIndexOf(element: Boolean): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun CharArray.lastIndexOf(element: Char): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun Array.lastOrNull(): T? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun ByteArray.lastOrNull(): Byte? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun ShortArray.lastOrNull(): Short? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun IntArray.lastOrNull(): Int? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun LongArray.lastOrNull(): Long? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun FloatArray.lastOrNull(): Float? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun DoubleArray.lastOrNull(): Double? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun BooleanArray.lastOrNull(): Boolean? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun CharArray.lastOrNull(): Char? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun Array.lastOrNull(predicate: (T) -> Boolean): T? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun ByteArray.lastOrNull(predicate: (Byte) -> Boolean): Byte? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun ShortArray.lastOrNull(predicate: (Short) -> Boolean): Short? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun IntArray.lastOrNull(predicate: (Int) -> Boolean): Int? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun LongArray.lastOrNull(predicate: (Long) -> Boolean): Long? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun FloatArray.lastOrNull(predicate: (Float) -> Boolean): Float? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun DoubleArray.lastOrNull(predicate: (Double) -> Boolean): Double? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun BooleanArray.lastOrNull(predicate: (Boolean) -> Boolean): Boolean? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun CharArray.lastOrNull(predicate: (Char) -> Boolean): Char? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Array.random(): T {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.random(): Byte {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.random(): Short {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.random(): Int {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.random(): Long {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.random(): Float {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.random(): Double {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.random(): Boolean {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.random(): Char {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun Array.random(random: Random): T {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun ByteArray.random(random: Random): Byte {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun ShortArray.random(random: Random): Short {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun IntArray.random(random: Random): Int {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun LongArray.random(random: Random): Long {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun FloatArray.random(random: Random): Float {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun DoubleArray.random(random: Random): Double {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun BooleanArray.random(random: Random): Boolean {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun CharArray.random(random: Random): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun Array.single(): T {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun ByteArray.single(): Byte {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun ShortArray.single(): Short {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun IntArray.single(): Int {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun LongArray.single(): Long {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun FloatArray.single(): Float {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun DoubleArray.single(): Double {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun BooleanArray.single(): Boolean {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun CharArray.single(): Char {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun Array.single(predicate: (T) -> Boolean): T {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as T\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun ByteArray.single(predicate: (Byte) -> Boolean): Byte {\n var single: Byte? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Byte\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun ShortArray.single(predicate: (Short) -> Boolean): Short {\n var single: Short? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Short\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun IntArray.single(predicate: (Int) -> Boolean): Int {\n var single: Int? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Int\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun LongArray.single(predicate: (Long) -> Boolean): Long {\n var single: Long? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Long\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun FloatArray.single(predicate: (Float) -> Boolean): Float {\n var single: Float? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Float\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun DoubleArray.single(predicate: (Double) -> Boolean): Double {\n var single: Double? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Double\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun BooleanArray.single(predicate: (Boolean) -> Boolean): Boolean {\n var single: Boolean? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Boolean\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun CharArray.single(predicate: (Char) -> Boolean): Char {\n var single: Char? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Char\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun Array.singleOrNull(): T? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun ByteArray.singleOrNull(): Byte? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun ShortArray.singleOrNull(): Short? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun IntArray.singleOrNull(): Int? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun LongArray.singleOrNull(): Long? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun FloatArray.singleOrNull(): Float? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun DoubleArray.singleOrNull(): Double? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun BooleanArray.singleOrNull(): Boolean? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun CharArray.singleOrNull(): Char? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun Array.singleOrNull(predicate: (T) -> Boolean): T? {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun ByteArray.singleOrNull(predicate: (Byte) -> Boolean): Byte? {\n var single: Byte? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun ShortArray.singleOrNull(predicate: (Short) -> Boolean): Short? {\n var single: Short? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun IntArray.singleOrNull(predicate: (Int) -> Boolean): Int? {\n var single: Int? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun LongArray.singleOrNull(predicate: (Long) -> Boolean): Long? {\n var single: Long? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun FloatArray.singleOrNull(predicate: (Float) -> Boolean): Float? {\n var single: Float? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun DoubleArray.singleOrNull(predicate: (Double) -> Boolean): Double? {\n var single: Double? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun BooleanArray.singleOrNull(predicate: (Boolean) -> Boolean): Boolean? {\n var single: Boolean? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun CharArray.singleOrNull(predicate: (Char) -> Boolean): Char? {\n var single: Char? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun Array.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ByteArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ShortArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun IntArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun LongArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun FloatArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun DoubleArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun BooleanArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun CharArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun Array.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ByteArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ShortArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun IntArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun LongArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun FloatArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun DoubleArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun BooleanArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun CharArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun Array.dropLastWhile(predicate: (T) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ByteArray.dropLastWhile(predicate: (Byte) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ShortArray.dropLastWhile(predicate: (Short) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun IntArray.dropLastWhile(predicate: (Int) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun LongArray.dropLastWhile(predicate: (Long) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun FloatArray.dropLastWhile(predicate: (Float) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun DoubleArray.dropLastWhile(predicate: (Double) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun BooleanArray.dropLastWhile(predicate: (Boolean) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun CharArray.dropLastWhile(predicate: (Char) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun Array.dropWhile(predicate: (T) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ByteArray.dropWhile(predicate: (Byte) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ShortArray.dropWhile(predicate: (Short) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun IntArray.dropWhile(predicate: (Int) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun LongArray.dropWhile(predicate: (Long) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun FloatArray.dropWhile(predicate: (Float) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun DoubleArray.dropWhile(predicate: (Double) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun BooleanArray.dropWhile(predicate: (Boolean) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun CharArray.dropWhile(predicate: (Char) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun Array.filter(predicate: (T) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun ByteArray.filter(predicate: (Byte) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun ShortArray.filter(predicate: (Short) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun IntArray.filter(predicate: (Int) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun LongArray.filter(predicate: (Long) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun FloatArray.filter(predicate: (Float) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun DoubleArray.filter(predicate: (Double) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun BooleanArray.filter(predicate: (Boolean) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun CharArray.filter(predicate: (Char) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun Array.filterIndexed(predicate: (index: Int, T) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun ByteArray.filterIndexed(predicate: (index: Int, Byte) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun ShortArray.filterIndexed(predicate: (index: Int, Short) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun IntArray.filterIndexed(predicate: (index: Int, Int) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun LongArray.filterIndexed(predicate: (index: Int, Long) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun FloatArray.filterIndexed(predicate: (index: Int, Float) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun DoubleArray.filterIndexed(predicate: (index: Int, Double) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun BooleanArray.filterIndexed(predicate: (index: Int, Boolean) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun CharArray.filterIndexed(predicate: (index: Int, Char) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > Array.filterIndexedTo(destination: C, predicate: (index: Int, T) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > ByteArray.filterIndexedTo(destination: C, predicate: (index: Int, Byte) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > ShortArray.filterIndexedTo(destination: C, predicate: (index: Int, Short) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > IntArray.filterIndexedTo(destination: C, predicate: (index: Int, Int) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > LongArray.filterIndexedTo(destination: C, predicate: (index: Int, Long) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > FloatArray.filterIndexedTo(destination: C, predicate: (index: Int, Float) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > DoubleArray.filterIndexedTo(destination: C, predicate: (index: Int, Double) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > BooleanArray.filterIndexedTo(destination: C, predicate: (index: Int, Boolean) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > CharArray.filterIndexedTo(destination: C, predicate: (index: Int, Char) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Returns a list containing all elements that are instances of specified type parameter R.\n */\npublic inline fun Array<*>.filterIsInstance(): List<@kotlin.internal.NoInfer R> {\n return filterIsInstanceTo(ArrayList())\n}\n\n/**\n * Appends all elements that are instances of specified type parameter R to the given [destination].\n */\npublic inline fun > Array<*>.filterIsInstanceTo(destination: C): C {\n for (element in this) if (element is R) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun Array.filterNot(predicate: (T) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun ByteArray.filterNot(predicate: (Byte) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun ShortArray.filterNot(predicate: (Short) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun IntArray.filterNot(predicate: (Int) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun LongArray.filterNot(predicate: (Long) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun FloatArray.filterNot(predicate: (Float) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun DoubleArray.filterNot(predicate: (Double) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun BooleanArray.filterNot(predicate: (Boolean) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun CharArray.filterNot(predicate: (Char) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements that are not `null`.\n */\npublic fun Array.filterNotNull(): List {\n return filterNotNullTo(ArrayList())\n}\n\n/**\n * Appends all elements that are not `null` to the given [destination].\n */\npublic fun , T : Any> Array.filterNotNullTo(destination: C): C {\n for (element in this) if (element != null) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > Array.filterNotTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > ByteArray.filterNotTo(destination: C, predicate: (Byte) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > ShortArray.filterNotTo(destination: C, predicate: (Short) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > IntArray.filterNotTo(destination: C, predicate: (Int) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > LongArray.filterNotTo(destination: C, predicate: (Long) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > FloatArray.filterNotTo(destination: C, predicate: (Float) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > DoubleArray.filterNotTo(destination: C, predicate: (Double) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > BooleanArray.filterNotTo(destination: C, predicate: (Boolean) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > CharArray.filterNotTo(destination: C, predicate: (Char) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > Array.filterTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > ByteArray.filterTo(destination: C, predicate: (Byte) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > ShortArray.filterTo(destination: C, predicate: (Short) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > IntArray.filterTo(destination: C, predicate: (Int) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > LongArray.filterTo(destination: C, predicate: (Long) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > FloatArray.filterTo(destination: C, predicate: (Float) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > DoubleArray.filterTo(destination: C, predicate: (Double) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > BooleanArray.filterTo(destination: C, predicate: (Boolean) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > CharArray.filterTo(destination: C, predicate: (Char) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun Array.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun ByteArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun ShortArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun IntArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun LongArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun FloatArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun DoubleArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun BooleanArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun CharArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun Array.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun ByteArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun ShortArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun IntArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun LongArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun FloatArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun DoubleArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun BooleanArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun CharArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun Array.sliceArray(indices: Collection): Array {\n val result = arrayOfNulls(this, indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun ByteArray.sliceArray(indices: Collection): ByteArray {\n val result = ByteArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun ShortArray.sliceArray(indices: Collection): ShortArray {\n val result = ShortArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun IntArray.sliceArray(indices: Collection): IntArray {\n val result = IntArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun LongArray.sliceArray(indices: Collection): LongArray {\n val result = LongArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun FloatArray.sliceArray(indices: Collection): FloatArray {\n val result = FloatArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun DoubleArray.sliceArray(indices: Collection): DoubleArray {\n val result = DoubleArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun BooleanArray.sliceArray(indices: Collection): BooleanArray {\n val result = BooleanArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun CharArray.sliceArray(indices: Collection): CharArray {\n val result = CharArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun Array.sliceArray(indices: IntRange): Array {\n if (indices.isEmpty()) return copyOfRange(0, 0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun ByteArray.sliceArray(indices: IntRange): ByteArray {\n if (indices.isEmpty()) return ByteArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun ShortArray.sliceArray(indices: IntRange): ShortArray {\n if (indices.isEmpty()) return ShortArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun IntArray.sliceArray(indices: IntRange): IntArray {\n if (indices.isEmpty()) return IntArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun LongArray.sliceArray(indices: IntRange): LongArray {\n if (indices.isEmpty()) return LongArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun FloatArray.sliceArray(indices: IntRange): FloatArray {\n if (indices.isEmpty()) return FloatArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun DoubleArray.sliceArray(indices: IntRange): DoubleArray {\n if (indices.isEmpty()) return DoubleArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun BooleanArray.sliceArray(indices: IntRange): BooleanArray {\n if (indices.isEmpty()) return BooleanArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun CharArray.sliceArray(indices: IntRange): CharArray {\n if (indices.isEmpty()) return CharArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun Array.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ByteArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ShortArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun IntArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun LongArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun FloatArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun DoubleArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun BooleanArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun CharArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun Array.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ByteArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ShortArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun IntArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun LongArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun FloatArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun DoubleArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun BooleanArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun CharArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun Array.takeLastWhile(predicate: (T) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ByteArray.takeLastWhile(predicate: (Byte) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ShortArray.takeLastWhile(predicate: (Short) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun IntArray.takeLastWhile(predicate: (Int) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun LongArray.takeLastWhile(predicate: (Long) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun FloatArray.takeLastWhile(predicate: (Float) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun DoubleArray.takeLastWhile(predicate: (Double) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun BooleanArray.takeLastWhile(predicate: (Boolean) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun CharArray.takeLastWhile(predicate: (Char) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun Array.takeWhile(predicate: (T) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ByteArray.takeWhile(predicate: (Byte) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ShortArray.takeWhile(predicate: (Short) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun IntArray.takeWhile(predicate: (Int) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun LongArray.takeWhile(predicate: (Long) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun FloatArray.takeWhile(predicate: (Float) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun DoubleArray.takeWhile(predicate: (Double) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun BooleanArray.takeWhile(predicate: (Boolean) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun CharArray.takeWhile(predicate: (Char) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun Array.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun ByteArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun ShortArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun IntArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun LongArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun FloatArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun DoubleArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun BooleanArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun CharArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun Array.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun ByteArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun ShortArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun IntArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun LongArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun FloatArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun DoubleArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun BooleanArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun CharArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun Array.reversedArray(): Array {\n if (isEmpty()) return this\n val result = arrayOfNulls(this, size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun ByteArray.reversedArray(): ByteArray {\n if (isEmpty()) return this\n val result = ByteArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun ShortArray.reversedArray(): ShortArray {\n if (isEmpty()) return this\n val result = ShortArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun IntArray.reversedArray(): IntArray {\n if (isEmpty()) return this\n val result = IntArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun LongArray.reversedArray(): LongArray {\n if (isEmpty()) return this\n val result = LongArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun FloatArray.reversedArray(): FloatArray {\n if (isEmpty()) return this\n val result = FloatArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun DoubleArray.reversedArray(): DoubleArray {\n if (isEmpty()) return this\n val result = DoubleArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun BooleanArray.reversedArray(): BooleanArray {\n if (isEmpty()) return this\n val result = BooleanArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun CharArray.reversedArray(): CharArray {\n if (isEmpty()) return this\n val result = CharArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Sorts elements in the array in-place according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Array.sortBy(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareBy(selector))\n}\n\n/**\n * Sorts elements in the array in-place descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Array.sortByDescending(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareByDescending(selector))\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sortDescending(): Unit {\n sortWith(reverseOrder())\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun ByteArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun ShortArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun IntArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun LongArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun FloatArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun DoubleArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun CharArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sorted(): List {\n return sortedArray().asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun ByteArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun ShortArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun IntArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun LongArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun FloatArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun DoubleArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun CharArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sortedArray(): Array {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun ByteArray.sortedArray(): ByteArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun ShortArray.sortedArray(): ShortArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun IntArray.sortedArray(): IntArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun LongArray.sortedArray(): LongArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun FloatArray.sortedArray(): FloatArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun DoubleArray.sortedArray(): DoubleArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun CharArray.sortedArray(): CharArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sortedArrayDescending(): Array {\n if (isEmpty()) return this\n return this.copyOf().apply { sortWith(reverseOrder()) }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun ByteArray.sortedArrayDescending(): ByteArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun ShortArray.sortedArrayDescending(): ShortArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun IntArray.sortedArrayDescending(): IntArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun LongArray.sortedArrayDescending(): LongArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun FloatArray.sortedArrayDescending(): FloatArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun DoubleArray.sortedArrayDescending(): DoubleArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun CharArray.sortedArrayDescending(): CharArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun Array.sortedArrayWith(comparator: Comparator): Array {\n if (isEmpty()) return this\n return this.copyOf().apply { sortWith(comparator) }\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Array.sortedBy(crossinline selector: (T) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > ByteArray.sortedBy(crossinline selector: (Byte) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > ShortArray.sortedBy(crossinline selector: (Short) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > IntArray.sortedBy(crossinline selector: (Int) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > LongArray.sortedBy(crossinline selector: (Long) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > FloatArray.sortedBy(crossinline selector: (Float) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > DoubleArray.sortedBy(crossinline selector: (Double) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > BooleanArray.sortedBy(crossinline selector: (Boolean) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > CharArray.sortedBy(crossinline selector: (Char) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Array.sortedByDescending(crossinline selector: (T) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > ByteArray.sortedByDescending(crossinline selector: (Byte) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > ShortArray.sortedByDescending(crossinline selector: (Short) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > IntArray.sortedByDescending(crossinline selector: (Int) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > LongArray.sortedByDescending(crossinline selector: (Long) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > FloatArray.sortedByDescending(crossinline selector: (Float) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > DoubleArray.sortedByDescending(crossinline selector: (Double) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > BooleanArray.sortedByDescending(crossinline selector: (Boolean) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > CharArray.sortedByDescending(crossinline selector: (Char) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sortedDescending(): List {\n return sortedWith(reverseOrder())\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun ByteArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun ShortArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun IntArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun LongArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun FloatArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun DoubleArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun CharArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun Array.sortedWith(comparator: Comparator): List {\n return sortedArrayWith(comparator).asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun ByteArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun ShortArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun IntArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun LongArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun FloatArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun DoubleArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun BooleanArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun CharArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun Array.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun ByteArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun ShortArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun IntArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun LongArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun FloatArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun DoubleArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun BooleanArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun CharArray.asList(): List\n\n/**\n * Returns `true` if the two specified arrays are *deeply* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * If two corresponding elements are nested arrays, they are also compared deeply.\n * If any of arrays contains itself on any nesting level the behavior is undefined.\n * \n * The elements of other types are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun Array.contentDeepEquals(other: Array): Boolean\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level the behavior is undefined.\n */\n@SinceKotlin(\"1.1\")\npublic expect fun Array.contentDeepHashCode(): Int\n\n/**\n * Returns a string representation of the contents of this array as if it is a [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level that reference\n * is rendered as `\"[...]\"` to prevent recursion.\n * \n * @sample samples.collections.Arrays.ContentOperations.contentDeepToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun Array.contentDeepToString(): String\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun Array.contentEquals(other: Array): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun ByteArray.contentEquals(other: ByteArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun ShortArray.contentEquals(other: ShortArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun IntArray.contentEquals(other: IntArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun LongArray.contentEquals(other: LongArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun FloatArray.contentEquals(other: FloatArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun DoubleArray.contentEquals(other: DoubleArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun BooleanArray.contentEquals(other: BooleanArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun CharArray.contentEquals(other: CharArray): Boolean\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun Array.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun ByteArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun ShortArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun IntArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun LongArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun FloatArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun DoubleArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun BooleanArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun CharArray.contentHashCode(): Int\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun Array.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun ByteArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun ShortArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun IntArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun LongArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun FloatArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun DoubleArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun BooleanArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun CharArray.contentToString(): String\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun Array.copyInto(destination: Array, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): Array\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun ByteArray.copyInto(destination: ByteArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ByteArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun ShortArray.copyInto(destination: ShortArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ShortArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun IntArray.copyInto(destination: IntArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): IntArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun LongArray.copyInto(destination: LongArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): LongArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun FloatArray.copyInto(destination: FloatArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): FloatArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun DoubleArray.copyInto(destination: DoubleArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): DoubleArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun BooleanArray.copyInto(destination: BooleanArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): BooleanArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun CharArray.copyInto(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): CharArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun Array.copyOf(): Array\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun ByteArray.copyOf(): ByteArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun ShortArray.copyOf(): ShortArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun IntArray.copyOf(): IntArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun LongArray.copyOf(): LongArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun FloatArray.copyOf(): FloatArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun DoubleArray.copyOf(): DoubleArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun BooleanArray.copyOf(): BooleanArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun CharArray.copyOf(): CharArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun ByteArray.copyOf(newSize: Int): ByteArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun ShortArray.copyOf(newSize: Int): ShortArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun IntArray.copyOf(newSize: Int): IntArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun LongArray.copyOf(newSize: Int): LongArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun FloatArray.copyOf(newSize: Int): FloatArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun DoubleArray.copyOf(newSize: Int): DoubleArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with `false` values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `false` values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun BooleanArray.copyOf(newSize: Int): BooleanArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with null char (`\\u0000`) values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with null char (`\\u0000`) values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun CharArray.copyOf(newSize: Int): CharArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with `null` values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `null` values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizingCopyOf\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun Array.copyOf(newSize: Int): Array\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun Array.copyOfRange(fromIndex: Int, toIndex: Int): Array\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun ByteArray.copyOfRange(fromIndex: Int, toIndex: Int): ByteArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun ShortArray.copyOfRange(fromIndex: Int, toIndex: Int): ShortArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun IntArray.copyOfRange(fromIndex: Int, toIndex: Int): IntArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun LongArray.copyOfRange(fromIndex: Int, toIndex: Int): LongArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun FloatArray.copyOfRange(fromIndex: Int, toIndex: Int): FloatArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun DoubleArray.copyOfRange(fromIndex: Int, toIndex: Int): DoubleArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun BooleanArray.copyOfRange(fromIndex: Int, toIndex: Int): BooleanArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun CharArray.copyOfRange(fromIndex: Int, toIndex: Int): CharArray\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val Array.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val ByteArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val ShortArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val IntArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val LongArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val FloatArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val DoubleArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val BooleanArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val CharArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns the last valid index for the array.\n */\npublic val Array.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val ByteArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val ShortArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val IntArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val LongArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val FloatArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val DoubleArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val BooleanArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val CharArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect operator fun Array.plus(element: T): Array\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun ByteArray.plus(element: Byte): ByteArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun ShortArray.plus(element: Short): ShortArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun IntArray.plus(element: Int): IntArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun LongArray.plus(element: Long): LongArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun FloatArray.plus(element: Float): FloatArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun DoubleArray.plus(element: Double): DoubleArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun BooleanArray.plus(element: Boolean): BooleanArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun CharArray.plus(element: Char): CharArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect operator fun Array.plus(elements: Collection): Array\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun ByteArray.plus(elements: Collection): ByteArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun ShortArray.plus(elements: Collection): ShortArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun IntArray.plus(elements: Collection): IntArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun LongArray.plus(elements: Collection): LongArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun FloatArray.plus(elements: Collection): FloatArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun DoubleArray.plus(elements: Collection): DoubleArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun BooleanArray.plus(elements: Collection): BooleanArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun CharArray.plus(elements: Collection): CharArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect operator fun Array.plus(elements: Array): Array\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun ByteArray.plus(elements: ByteArray): ByteArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun ShortArray.plus(elements: ShortArray): ShortArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun IntArray.plus(elements: IntArray): IntArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun LongArray.plus(elements: LongArray): LongArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun FloatArray.plus(elements: FloatArray): FloatArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun DoubleArray.plus(elements: DoubleArray): DoubleArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun BooleanArray.plus(elements: BooleanArray): BooleanArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun CharArray.plus(elements: CharArray): CharArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun Array.plusElement(element: T): Array\n\n/**\n * Sorts the array in-place.\n */\npublic expect fun IntArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n */\npublic expect fun LongArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n */\npublic expect fun ByteArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n */\npublic expect fun ShortArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n */\npublic expect fun DoubleArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n */\npublic expect fun FloatArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n */\npublic expect fun CharArray.sort(): Unit\n\n/**\n * Sorts the array in-place according to the natural order of its elements.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic expect fun > Array.sort(): Unit\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic expect fun Array.sortWith(comparator: Comparator): Unit\n\n/**\n * Returns an array of Boolean containing all of the elements of this generic array.\n */\npublic fun Array.toBooleanArray(): BooleanArray {\n return BooleanArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Byte containing all of the elements of this generic array.\n */\npublic fun Array.toByteArray(): ByteArray {\n return ByteArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Char containing all of the elements of this generic array.\n */\npublic fun Array.toCharArray(): CharArray {\n return CharArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Double containing all of the elements of this generic array.\n */\npublic fun Array.toDoubleArray(): DoubleArray {\n return DoubleArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Float containing all of the elements of this generic array.\n */\npublic fun Array.toFloatArray(): FloatArray {\n return FloatArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Int containing all of the elements of this generic array.\n */\npublic fun Array.toIntArray(): IntArray {\n return IntArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Long containing all of the elements of this generic array.\n */\npublic fun Array.toLongArray(): LongArray {\n return LongArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Short containing all of the elements of this generic array.\n */\npublic fun Array.toShortArray(): ShortArray {\n return ShortArray(size) { index -> this[index] }\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun ByteArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun ShortArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun IntArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun LongArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun FloatArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun DoubleArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun BooleanArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun CharArray.toTypedArray(): Array\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun Array.associate(transform: (T) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun ByteArray.associate(transform: (Byte) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun ShortArray.associate(transform: (Short) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun IntArray.associate(transform: (Int) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun LongArray.associate(transform: (Long) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun FloatArray.associate(transform: (Float) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun DoubleArray.associate(transform: (Double) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun BooleanArray.associate(transform: (Boolean) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun CharArray.associate(transform: (Char) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun Array.associateBy(keySelector: (T) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun ByteArray.associateBy(keySelector: (Byte) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun ShortArray.associateBy(keySelector: (Short) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun IntArray.associateBy(keySelector: (Int) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun LongArray.associateBy(keySelector: (Long) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun FloatArray.associateBy(keySelector: (Float) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun DoubleArray.associateBy(keySelector: (Double) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun BooleanArray.associateBy(keySelector: (Boolean) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun CharArray.associateBy(keySelector: (Char) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun Array.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun ByteArray.associateBy(keySelector: (Byte) -> K, valueTransform: (Byte) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun ShortArray.associateBy(keySelector: (Short) -> K, valueTransform: (Short) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun IntArray.associateBy(keySelector: (Int) -> K, valueTransform: (Int) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun LongArray.associateBy(keySelector: (Long) -> K, valueTransform: (Long) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun FloatArray.associateBy(keySelector: (Float) -> K, valueTransform: (Float) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun DoubleArray.associateBy(keySelector: (Double) -> K, valueTransform: (Double) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun BooleanArray.associateBy(keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n */\npublic inline fun CharArray.associateBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > Array.associateByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > ByteArray.associateByTo(destination: M, keySelector: (Byte) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > ShortArray.associateByTo(destination: M, keySelector: (Short) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > IntArray.associateByTo(destination: M, keySelector: (Int) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > LongArray.associateByTo(destination: M, keySelector: (Long) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > FloatArray.associateByTo(destination: M, keySelector: (Float) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > DoubleArray.associateByTo(destination: M, keySelector: (Double) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > BooleanArray.associateByTo(destination: M, keySelector: (Boolean) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > CharArray.associateByTo(destination: M, keySelector: (Char) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > Array.associateByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > ByteArray.associateByTo(destination: M, keySelector: (Byte) -> K, valueTransform: (Byte) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > ShortArray.associateByTo(destination: M, keySelector: (Short) -> K, valueTransform: (Short) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > IntArray.associateByTo(destination: M, keySelector: (Int) -> K, valueTransform: (Int) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > LongArray.associateByTo(destination: M, keySelector: (Long) -> K, valueTransform: (Long) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > FloatArray.associateByTo(destination: M, keySelector: (Float) -> K, valueTransform: (Float) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > DoubleArray.associateByTo(destination: M, keySelector: (Double) -> K, valueTransform: (Double) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > BooleanArray.associateByTo(destination: M, keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > CharArray.associateByTo(destination: M, keySelector: (Char) -> K, valueTransform: (Char) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > Array.associateTo(destination: M, transform: (T) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > ByteArray.associateTo(destination: M, transform: (Byte) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > ShortArray.associateTo(destination: M, transform: (Short) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > IntArray.associateTo(destination: M, transform: (Int) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > LongArray.associateTo(destination: M, transform: (Long) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > FloatArray.associateTo(destination: M, transform: (Float) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > DoubleArray.associateTo(destination: M, transform: (Double) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > BooleanArray.associateTo(destination: M, transform: (Boolean) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > CharArray.associateTo(destination: M, transform: (Char) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > Array.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > ByteArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > ShortArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > IntArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > LongArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > FloatArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > DoubleArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > BooleanArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > CharArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun Array.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun ByteArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun ShortArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun IntArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun LongArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun FloatArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun DoubleArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun BooleanArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun CharArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun Array.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun ByteArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun ShortArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun IntArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun LongArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun FloatArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun DoubleArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun BooleanArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun CharArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun Array.toMutableList(): MutableList {\n return ArrayList(this.asCollection())\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun ByteArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun ShortArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun IntArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun LongArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun FloatArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun DoubleArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun BooleanArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun CharArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun Array.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ByteArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ShortArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun IntArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun LongArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun FloatArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun DoubleArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun BooleanArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun CharArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun Array.flatMap(transform: (T) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun ByteArray.flatMap(transform: (Byte) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun ShortArray.flatMap(transform: (Short) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun IntArray.flatMap(transform: (Int) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun LongArray.flatMap(transform: (Long) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun FloatArray.flatMap(transform: (Float) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun DoubleArray.flatMap(transform: (Double) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun BooleanArray.flatMap(transform: (Boolean) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\npublic inline fun CharArray.flatMap(transform: (Char) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > Array.flatMapTo(destination: C, transform: (T) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > ByteArray.flatMapTo(destination: C, transform: (Byte) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > ShortArray.flatMapTo(destination: C, transform: (Short) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > IntArray.flatMapTo(destination: C, transform: (Int) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > LongArray.flatMapTo(destination: C, transform: (Long) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > FloatArray.flatMapTo(destination: C, transform: (Float) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > DoubleArray.flatMapTo(destination: C, transform: (Double) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > BooleanArray.flatMapTo(destination: C, transform: (Boolean) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > CharArray.flatMapTo(destination: C, transform: (Char) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun Array.groupBy(keySelector: (T) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun ByteArray.groupBy(keySelector: (Byte) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun ShortArray.groupBy(keySelector: (Short) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun IntArray.groupBy(keySelector: (Int) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun LongArray.groupBy(keySelector: (Long) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun FloatArray.groupBy(keySelector: (Float) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun DoubleArray.groupBy(keySelector: (Double) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun BooleanArray.groupBy(keySelector: (Boolean) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun CharArray.groupBy(keySelector: (Char) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun Array.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun ByteArray.groupBy(keySelector: (Byte) -> K, valueTransform: (Byte) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun ShortArray.groupBy(keySelector: (Short) -> K, valueTransform: (Short) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun IntArray.groupBy(keySelector: (Int) -> K, valueTransform: (Int) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun LongArray.groupBy(keySelector: (Long) -> K, valueTransform: (Long) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun FloatArray.groupBy(keySelector: (Float) -> K, valueTransform: (Float) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun DoubleArray.groupBy(keySelector: (Double) -> K, valueTransform: (Double) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun BooleanArray.groupBy(keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun CharArray.groupBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> Array.groupByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> ByteArray.groupByTo(destination: M, keySelector: (Byte) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> ShortArray.groupByTo(destination: M, keySelector: (Short) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> IntArray.groupByTo(destination: M, keySelector: (Int) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> LongArray.groupByTo(destination: M, keySelector: (Long) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> FloatArray.groupByTo(destination: M, keySelector: (Float) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> DoubleArray.groupByTo(destination: M, keySelector: (Double) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> BooleanArray.groupByTo(destination: M, keySelector: (Boolean) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> CharArray.groupByTo(destination: M, keySelector: (Char) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> Array.groupByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> ByteArray.groupByTo(destination: M, keySelector: (Byte) -> K, valueTransform: (Byte) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> ShortArray.groupByTo(destination: M, keySelector: (Short) -> K, valueTransform: (Short) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> IntArray.groupByTo(destination: M, keySelector: (Int) -> K, valueTransform: (Int) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> LongArray.groupByTo(destination: M, keySelector: (Long) -> K, valueTransform: (Long) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> FloatArray.groupByTo(destination: M, keySelector: (Float) -> K, valueTransform: (Float) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> DoubleArray.groupByTo(destination: M, keySelector: (Double) -> K, valueTransform: (Double) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> BooleanArray.groupByTo(destination: M, keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> CharArray.groupByTo(destination: M, keySelector: (Char) -> K, valueTransform: (Char) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Creates a [Grouping] source from an array to be used later with one of group-and-fold operations\n * using the specified [keySelector] function to extract a key from each element.\n * \n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Array.groupingBy(crossinline keySelector: (T) -> K): Grouping {\n return object : Grouping {\n override fun sourceIterator(): Iterator = this@groupingBy.iterator()\n override fun keyOf(element: T): K = keySelector(element)\n }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun Array.map(transform: (T) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun ByteArray.map(transform: (Byte) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun ShortArray.map(transform: (Short) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun IntArray.map(transform: (Int) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun LongArray.map(transform: (Long) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun FloatArray.map(transform: (Float) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun DoubleArray.map(transform: (Double) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun BooleanArray.map(transform: (Boolean) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun CharArray.map(transform: (Char) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Array.mapIndexed(transform: (index: Int, T) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun ByteArray.mapIndexed(transform: (index: Int, Byte) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun ShortArray.mapIndexed(transform: (index: Int, Short) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun IntArray.mapIndexed(transform: (index: Int, Int) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun LongArray.mapIndexed(transform: (index: Int, Long) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun FloatArray.mapIndexed(transform: (index: Int, Float) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun DoubleArray.mapIndexed(transform: (index: Int, Double) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun BooleanArray.mapIndexed(transform: (index: Int, Boolean) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun CharArray.mapIndexed(transform: (index: Int, Char) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Array.mapIndexedNotNull(transform: (index: Int, T) -> R?): List {\n return mapIndexedNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends only the non-null results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Array.mapIndexedNotNullTo(destination: C, transform: (index: Int, T) -> R?): C {\n forEachIndexed { index, element -> transform(index, element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Array.mapIndexedTo(destination: C, transform: (index: Int, T) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > ByteArray.mapIndexedTo(destination: C, transform: (index: Int, Byte) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > ShortArray.mapIndexedTo(destination: C, transform: (index: Int, Short) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > IntArray.mapIndexedTo(destination: C, transform: (index: Int, Int) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > LongArray.mapIndexedTo(destination: C, transform: (index: Int, Long) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > FloatArray.mapIndexedTo(destination: C, transform: (index: Int, Float) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > DoubleArray.mapIndexedTo(destination: C, transform: (index: Int, Double) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > BooleanArray.mapIndexedTo(destination: C, transform: (index: Int, Boolean) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > CharArray.mapIndexedTo(destination: C, transform: (index: Int, Char) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element in the original array.\n */\npublic inline fun Array.mapNotNull(transform: (T) -> R?): List {\n return mapNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element in the original array\n * and appends only the non-null results to the given [destination].\n */\npublic inline fun > Array.mapNotNullTo(destination: C, transform: (T) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > Array.mapTo(destination: C, transform: (T) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > ByteArray.mapTo(destination: C, transform: (Byte) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > ShortArray.mapTo(destination: C, transform: (Short) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > IntArray.mapTo(destination: C, transform: (Int) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > LongArray.mapTo(destination: C, transform: (Long) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > FloatArray.mapTo(destination: C, transform: (Float) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > DoubleArray.mapTo(destination: C, transform: (Double) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > BooleanArray.mapTo(destination: C, transform: (Boolean) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > CharArray.mapTo(destination: C, transform: (Char) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun Array.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun ByteArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun ShortArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun IntArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun LongArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun FloatArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun DoubleArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun BooleanArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\npublic fun CharArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun Array.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun ByteArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun ShortArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun IntArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun LongArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun FloatArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun DoubleArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun BooleanArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic fun CharArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun Array.distinctBy(selector: (T) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun ByteArray.distinctBy(selector: (Byte) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun ShortArray.distinctBy(selector: (Short) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun IntArray.distinctBy(selector: (Int) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun LongArray.distinctBy(selector: (Long) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun FloatArray.distinctBy(selector: (Float) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun DoubleArray.distinctBy(selector: (Double) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun BooleanArray.distinctBy(selector: (Boolean) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n */\npublic inline fun CharArray.distinctBy(selector: (Char) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun Array.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun ByteArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun ShortArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun IntArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun LongArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun FloatArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun DoubleArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun BooleanArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun CharArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun Array.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun ByteArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun ShortArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun IntArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun LongArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun FloatArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun DoubleArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun BooleanArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun CharArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun Array.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ByteArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ShortArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun IntArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun LongArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun FloatArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun DoubleArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun BooleanArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun CharArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun Array.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun ByteArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun ShortArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun IntArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun LongArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun FloatArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun DoubleArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun BooleanArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun CharArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun Array.all(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun ByteArray.all(predicate: (Byte) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun ShortArray.all(predicate: (Short) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun IntArray.all(predicate: (Int) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun LongArray.all(predicate: (Long) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun FloatArray.all(predicate: (Float) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun DoubleArray.all(predicate: (Double) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun BooleanArray.all(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun CharArray.all(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun Array.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun ByteArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun ShortArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun IntArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun LongArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun FloatArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun DoubleArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun BooleanArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun CharArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun Array.any(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun ByteArray.any(predicate: (Byte) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun ShortArray.any(predicate: (Short) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun IntArray.any(predicate: (Int) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun LongArray.any(predicate: (Long) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun FloatArray.any(predicate: (Float) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun DoubleArray.any(predicate: (Double) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun BooleanArray.any(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun CharArray.any(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun Array.count(predicate: (T) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun ByteArray.count(predicate: (Byte) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun ShortArray.count(predicate: (Short) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun IntArray.count(predicate: (Int) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun LongArray.count(predicate: (Long) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun FloatArray.count(predicate: (Float) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun DoubleArray.count(predicate: (Double) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun BooleanArray.count(predicate: (Boolean) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun CharArray.count(predicate: (Char) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun Array.fold(initial: R, operation: (acc: R, T) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun ByteArray.fold(initial: R, operation: (acc: R, Byte) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun ShortArray.fold(initial: R, operation: (acc: R, Short) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun IntArray.fold(initial: R, operation: (acc: R, Int) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun LongArray.fold(initial: R, operation: (acc: R, Long) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun FloatArray.fold(initial: R, operation: (acc: R, Float) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun DoubleArray.fold(initial: R, operation: (acc: R, Double) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun BooleanArray.fold(initial: R, operation: (acc: R, Boolean) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun CharArray.fold(initial: R, operation: (acc: R, Char) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun Array.foldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun ByteArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Byte) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun ShortArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Short) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun IntArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Int) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun LongArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Long) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun FloatArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Float) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun DoubleArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Double) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun BooleanArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Boolean) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun CharArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun Array.foldRight(initial: R, operation: (T, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun ByteArray.foldRight(initial: R, operation: (Byte, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun ShortArray.foldRight(initial: R, operation: (Short, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun IntArray.foldRight(initial: R, operation: (Int, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun LongArray.foldRight(initial: R, operation: (Long, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun FloatArray.foldRight(initial: R, operation: (Float, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun DoubleArray.foldRight(initial: R, operation: (Double, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun BooleanArray.foldRight(initial: R, operation: (Boolean, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun CharArray.foldRight(initial: R, operation: (Char, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun Array.foldRightIndexed(initial: R, operation: (index: Int, T, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun ByteArray.foldRightIndexed(initial: R, operation: (index: Int, Byte, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun ShortArray.foldRightIndexed(initial: R, operation: (index: Int, Short, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun IntArray.foldRightIndexed(initial: R, operation: (index: Int, Int, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun LongArray.foldRightIndexed(initial: R, operation: (index: Int, Long, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun FloatArray.foldRightIndexed(initial: R, operation: (index: Int, Float, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun DoubleArray.foldRightIndexed(initial: R, operation: (index: Int, Double, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun BooleanArray.foldRightIndexed(initial: R, operation: (index: Int, Boolean, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun CharArray.foldRightIndexed(initial: R, operation: (index: Int, Char, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun Array.forEach(action: (T) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun ByteArray.forEach(action: (Byte) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun ShortArray.forEach(action: (Short) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun IntArray.forEach(action: (Int) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun LongArray.forEach(action: (Long) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun FloatArray.forEach(action: (Float) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun DoubleArray.forEach(action: (Double) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun BooleanArray.forEach(action: (Boolean) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun CharArray.forEach(action: (Char) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun Array.forEachIndexed(action: (index: Int, T) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun ByteArray.forEachIndexed(action: (index: Int, Byte) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun ShortArray.forEachIndexed(action: (index: Int, Short) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun IntArray.forEachIndexed(action: (index: Int, Int) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun LongArray.forEachIndexed(action: (index: Int, Long) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun FloatArray.forEachIndexed(action: (index: Int, Float) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun DoubleArray.forEachIndexed(action: (index: Int, Double) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun BooleanArray.forEachIndexed(action: (index: Int, Boolean) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun CharArray.forEachIndexed(action: (index: Int, Char) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Array.max(): Double? {\n if (isEmpty()) return null\n var max = this[0]\n if (max.isNaN()) return max\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Array.max(): Float? {\n if (isEmpty()) return null\n var max = this[0]\n if (max.isNaN()) return max\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun > Array.max(): T? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun ByteArray.max(): Byte? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun ShortArray.max(): Short? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun IntArray.max(): Int? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun LongArray.max(): Long? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\npublic fun FloatArray.max(): Float? {\n if (isEmpty()) return null\n var max = this[0]\n if (max.isNaN()) return max\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\npublic fun DoubleArray.max(): Double? {\n if (isEmpty()) return null\n var max = this[0]\n if (max.isNaN()) return max\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun CharArray.max(): Char? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > Array.maxBy(selector: (T) -> R): T? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > ByteArray.maxBy(selector: (Byte) -> R): Byte? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > ShortArray.maxBy(selector: (Short) -> R): Short? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > IntArray.maxBy(selector: (Int) -> R): Int? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > LongArray.maxBy(selector: (Long) -> R): Long? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > FloatArray.maxBy(selector: (Float) -> R): Float? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > DoubleArray.maxBy(selector: (Double) -> R): Double? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > BooleanArray.maxBy(selector: (Boolean) -> R): Boolean? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > CharArray.maxBy(selector: (Char) -> R): Char? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun Array.maxWith(comparator: Comparator): T? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun ByteArray.maxWith(comparator: Comparator): Byte? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun ShortArray.maxWith(comparator: Comparator): Short? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun IntArray.maxWith(comparator: Comparator): Int? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun LongArray.maxWith(comparator: Comparator): Long? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun FloatArray.maxWith(comparator: Comparator): Float? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun DoubleArray.maxWith(comparator: Comparator): Double? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun BooleanArray.maxWith(comparator: Comparator): Boolean? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun CharArray.maxWith(comparator: Comparator): Char? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Array.min(): Double? {\n if (isEmpty()) return null\n var min = this[0]\n if (min.isNaN()) return min\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Array.min(): Float? {\n if (isEmpty()) return null\n var min = this[0]\n if (min.isNaN()) return min\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun > Array.min(): T? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun ByteArray.min(): Byte? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun ShortArray.min(): Short? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun IntArray.min(): Int? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun LongArray.min(): Long? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\npublic fun FloatArray.min(): Float? {\n if (isEmpty()) return null\n var min = this[0]\n if (min.isNaN()) return min\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\npublic fun DoubleArray.min(): Double? {\n if (isEmpty()) return null\n var min = this[0]\n if (min.isNaN()) return min\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun CharArray.min(): Char? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > Array.minBy(selector: (T) -> R): T? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > ByteArray.minBy(selector: (Byte) -> R): Byte? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > ShortArray.minBy(selector: (Short) -> R): Short? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > IntArray.minBy(selector: (Int) -> R): Int? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > LongArray.minBy(selector: (Long) -> R): Long? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > FloatArray.minBy(selector: (Float) -> R): Float? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > DoubleArray.minBy(selector: (Double) -> R): Double? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > BooleanArray.minBy(selector: (Boolean) -> R): Boolean? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > CharArray.minBy(selector: (Char) -> R): Char? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun Array.minWith(comparator: Comparator): T? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun ByteArray.minWith(comparator: Comparator): Byte? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun ShortArray.minWith(comparator: Comparator): Short? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun IntArray.minWith(comparator: Comparator): Int? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun LongArray.minWith(comparator: Comparator): Long? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun FloatArray.minWith(comparator: Comparator): Float? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun DoubleArray.minWith(comparator: Comparator): Double? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun BooleanArray.minWith(comparator: Comparator): Boolean? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun CharArray.minWith(comparator: Comparator): Char? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun Array.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun ByteArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun ShortArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun IntArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun LongArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun FloatArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun DoubleArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun BooleanArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun CharArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun Array.none(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun ByteArray.none(predicate: (Byte) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun ShortArray.none(predicate: (Short) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun IntArray.none(predicate: (Int) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun LongArray.none(predicate: (Long) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun FloatArray.none(predicate: (Float) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun DoubleArray.none(predicate: (Double) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun BooleanArray.none(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun CharArray.none(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun Array.reduce(operation: (acc: S, T) -> S): S {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun ByteArray.reduce(operation: (acc: Byte, Byte) -> Byte): Byte {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun ShortArray.reduce(operation: (acc: Short, Short) -> Short): Short {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun IntArray.reduce(operation: (acc: Int, Int) -> Int): Int {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun LongArray.reduce(operation: (acc: Long, Long) -> Long): Long {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun FloatArray.reduce(operation: (acc: Float, Float) -> Float): Float {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun DoubleArray.reduce(operation: (acc: Double, Double) -> Double): Double {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun BooleanArray.reduce(operation: (acc: Boolean, Boolean) -> Boolean): Boolean {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun CharArray.reduce(operation: (acc: Char, Char) -> Char): Char {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun Array.reduceIndexed(operation: (index: Int, acc: S, T) -> S): S {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun ByteArray.reduceIndexed(operation: (index: Int, acc: Byte, Byte) -> Byte): Byte {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun ShortArray.reduceIndexed(operation: (index: Int, acc: Short, Short) -> Short): Short {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun IntArray.reduceIndexed(operation: (index: Int, acc: Int, Int) -> Int): Int {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun LongArray.reduceIndexed(operation: (index: Int, acc: Long, Long) -> Long): Long {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun FloatArray.reduceIndexed(operation: (index: Int, acc: Float, Float) -> Float): Float {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun DoubleArray.reduceIndexed(operation: (index: Int, acc: Double, Double) -> Double): Double {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun BooleanArray.reduceIndexed(operation: (index: Int, acc: Boolean, Boolean) -> Boolean): Boolean {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun CharArray.reduceIndexed(operation: (index: Int, acc: Char, Char) -> Char): Char {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun Array.reduceRight(operation: (T, acc: S) -> S): S {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun ByteArray.reduceRight(operation: (Byte, acc: Byte) -> Byte): Byte {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun ShortArray.reduceRight(operation: (Short, acc: Short) -> Short): Short {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun IntArray.reduceRight(operation: (Int, acc: Int) -> Int): Int {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun LongArray.reduceRight(operation: (Long, acc: Long) -> Long): Long {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun FloatArray.reduceRight(operation: (Float, acc: Float) -> Float): Float {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun DoubleArray.reduceRight(operation: (Double, acc: Double) -> Double): Double {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun BooleanArray.reduceRight(operation: (Boolean, acc: Boolean) -> Boolean): Boolean {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun CharArray.reduceRight(operation: (Char, acc: Char) -> Char): Char {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun Array.reduceRightIndexed(operation: (index: Int, T, acc: S) -> S): S {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun ByteArray.reduceRightIndexed(operation: (index: Int, Byte, acc: Byte) -> Byte): Byte {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun ShortArray.reduceRightIndexed(operation: (index: Int, Short, acc: Short) -> Short): Short {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun IntArray.reduceRightIndexed(operation: (index: Int, Int, acc: Int) -> Int): Int {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun LongArray.reduceRightIndexed(operation: (index: Int, Long, acc: Long) -> Long): Long {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun FloatArray.reduceRightIndexed(operation: (index: Int, Float, acc: Float) -> Float): Float {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun DoubleArray.reduceRightIndexed(operation: (index: Int, Double, acc: Double) -> Double): Double {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun BooleanArray.reduceRightIndexed(operation: (index: Int, Boolean, acc: Boolean) -> Boolean): Boolean {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun CharArray.reduceRightIndexed(operation: (index: Int, Char, acc: Char) -> Char): Char {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun Array.sumBy(selector: (T) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ByteArray.sumBy(selector: (Byte) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ShortArray.sumBy(selector: (Short) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun IntArray.sumBy(selector: (Int) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun LongArray.sumBy(selector: (Long) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun FloatArray.sumBy(selector: (Float) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun DoubleArray.sumBy(selector: (Double) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun BooleanArray.sumBy(selector: (Boolean) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun CharArray.sumBy(selector: (Char) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun Array.sumByDouble(selector: (T) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ByteArray.sumByDouble(selector: (Byte) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ShortArray.sumByDouble(selector: (Short) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun IntArray.sumByDouble(selector: (Int) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun LongArray.sumByDouble(selector: (Long) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun FloatArray.sumByDouble(selector: (Float) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun DoubleArray.sumByDouble(selector: (Double) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun BooleanArray.sumByDouble(selector: (Boolean) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun CharArray.sumByDouble(selector: (Char) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n */\npublic fun Array.requireNoNulls(): Array {\n for (element in this) {\n if (element == null) {\n throw IllegalArgumentException(\"null element found in $this.\")\n }\n }\n @Suppress(\"UNCHECKED_CAST\")\n return this as Array\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun Array.partition(predicate: (T) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun ByteArray.partition(predicate: (Byte) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun ShortArray.partition(predicate: (Short) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun IntArray.partition(predicate: (Int) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun LongArray.partition(predicate: (Long) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun FloatArray.partition(predicate: (Float) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun DoubleArray.partition(predicate: (Double) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun BooleanArray.partition(predicate: (Boolean) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun CharArray.partition(predicate: (Char) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Array.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ByteArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ShortArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun IntArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun LongArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun FloatArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun DoubleArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun BooleanArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun CharArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Array.zip(other: Array, transform: (a: T, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ByteArray.zip(other: Array, transform: (a: Byte, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ShortArray.zip(other: Array, transform: (a: Short, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun IntArray.zip(other: Array, transform: (a: Int, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun LongArray.zip(other: Array, transform: (a: Long, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun FloatArray.zip(other: Array, transform: (a: Float, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun DoubleArray.zip(other: Array, transform: (a: Double, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun BooleanArray.zip(other: Array, transform: (a: Boolean, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun CharArray.zip(other: Array, transform: (a: Char, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Array.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ByteArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ShortArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun IntArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun LongArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun FloatArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun DoubleArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun BooleanArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun CharArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Array.zip(other: Iterable, transform: (a: T, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ByteArray.zip(other: Iterable, transform: (a: Byte, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ShortArray.zip(other: Iterable, transform: (a: Short, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun IntArray.zip(other: Iterable, transform: (a: Int, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun LongArray.zip(other: Iterable, transform: (a: Long, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun FloatArray.zip(other: Iterable, transform: (a: Float, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun DoubleArray.zip(other: Iterable, transform: (a: Double, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun BooleanArray.zip(other: Iterable, transform: (a: Boolean, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun CharArray.zip(other: Iterable, transform: (a: Char, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ByteArray.zip(other: ByteArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ShortArray.zip(other: ShortArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun IntArray.zip(other: IntArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun LongArray.zip(other: LongArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun FloatArray.zip(other: FloatArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun DoubleArray.zip(other: DoubleArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun BooleanArray.zip(other: BooleanArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun CharArray.zip(other: CharArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ByteArray.zip(other: ByteArray, transform: (a: Byte, b: Byte) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ShortArray.zip(other: ShortArray, transform: (a: Short, b: Short) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun IntArray.zip(other: IntArray, transform: (a: Int, b: Int) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun LongArray.zip(other: LongArray, transform: (a: Long, b: Long) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun FloatArray.zip(other: FloatArray, transform: (a: Float, b: Float) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun DoubleArray.zip(other: DoubleArray, transform: (a: Double, b: Double) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun BooleanArray.zip(other: BooleanArray, transform: (a: Boolean, b: Boolean) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun CharArray.zip(other: CharArray, transform: (a: Char, b: Char) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun Array.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n buffer.appendElement(element, transform)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun ByteArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Byte) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun ShortArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Short) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun IntArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Int) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun LongArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Long) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun FloatArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Float) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun DoubleArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Double) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun BooleanArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Boolean) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun CharArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Char) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun Array.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun ByteArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Byte) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun ShortArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Short) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun IntArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Int) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun LongArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Long) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun FloatArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Float) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun DoubleArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Double) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun BooleanArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Boolean) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun CharArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Char) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun Array.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun ByteArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun ShortArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun IntArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun LongArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun FloatArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun DoubleArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun BooleanArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun CharArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun Array.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun ByteArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun ShortArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun IntArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun LongArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun FloatArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun DoubleArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun BooleanArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun CharArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfByte\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfShort\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfInt\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfLong\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfFloat\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfDouble\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun ByteArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun ShortArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun IntArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun LongArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun FloatArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun DoubleArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfByte\")\npublic fun Array.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfShort\")\npublic fun Array.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfInt\")\npublic fun Array.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfLong\")\npublic fun Array.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfFloat\")\npublic fun Array.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfDouble\")\npublic fun Array.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun ByteArray.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun ShortArray.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun IntArray.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun LongArray.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun FloatArray.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun DoubleArray.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"RangesKt\")\n\npackage kotlin.ranges\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\n\n/**\n * Returns a random element from this range.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun IntRange.random(): Int {\n return random(Random)\n}\n\n/**\n * Returns a random element from this range.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun LongRange.random(): Long {\n return random(Random)\n}\n\n/**\n * Returns a random element from this range.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun CharRange.random(): Char {\n return random(Random)\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun IntRange.random(random: Random): Int {\n try {\n return random.nextInt(this)\n } catch(e: IllegalArgumentException) {\n throw NoSuchElementException(e.message)\n }\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun LongRange.random(random: Random): Long {\n try {\n return random.nextLong(this)\n } catch(e: IllegalArgumentException) {\n throw NoSuchElementException(e.message)\n }\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun CharRange.random(random: Random): Char {\n try {\n return random.nextInt(first.toInt(), last.toInt() + 1).toChar()\n } catch(e: IllegalArgumentException) {\n throw NoSuchElementException(e.message)\n }\n}\n\n/**\n * Returns `true` if this range contains the specified [element].\n * \n * Always returns `false` if the [element] is `null`.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline operator fun IntRange.contains(element: Int?): Boolean {\n return element != null && contains(element)\n}\n\n/**\n * Returns `true` if this range contains the specified [element].\n * \n * Always returns `false` if the [element] is `null`.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline operator fun LongRange.contains(element: Long?): Boolean {\n return element != null && contains(element)\n}\n\n/**\n * Returns `true` if this range contains the specified [element].\n * \n * Always returns `false` if the [element] is `null`.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline operator fun CharRange.contains(element: Char?): Boolean {\n return element != null && contains(element)\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"intRangeContains\")\npublic operator fun ClosedRange.contains(value: Byte): Boolean {\n return contains(value.toInt())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"longRangeContains\")\npublic operator fun ClosedRange.contains(value: Byte): Boolean {\n return contains(value.toLong())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"shortRangeContains\")\npublic operator fun ClosedRange.contains(value: Byte): Boolean {\n return contains(value.toShort())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"doubleRangeContains\")\npublic operator fun ClosedRange.contains(value: Byte): Boolean {\n return contains(value.toDouble())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"floatRangeContains\")\npublic operator fun ClosedRange.contains(value: Byte): Boolean {\n return contains(value.toFloat())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"intRangeContains\")\npublic operator fun ClosedRange.contains(value: Double): Boolean {\n return value.toIntExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"longRangeContains\")\npublic operator fun ClosedRange.contains(value: Double): Boolean {\n return value.toLongExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"byteRangeContains\")\npublic operator fun ClosedRange.contains(value: Double): Boolean {\n return value.toByteExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"shortRangeContains\")\npublic operator fun ClosedRange.contains(value: Double): Boolean {\n return value.toShortExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"floatRangeContains\")\npublic operator fun ClosedRange.contains(value: Double): Boolean {\n return contains(value.toFloat())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"intRangeContains\")\npublic operator fun ClosedRange.contains(value: Float): Boolean {\n return value.toIntExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"longRangeContains\")\npublic operator fun ClosedRange.contains(value: Float): Boolean {\n return value.toLongExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"byteRangeContains\")\npublic operator fun ClosedRange.contains(value: Float): Boolean {\n return value.toByteExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"shortRangeContains\")\npublic operator fun ClosedRange.contains(value: Float): Boolean {\n return value.toShortExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"doubleRangeContains\")\npublic operator fun ClosedRange.contains(value: Float): Boolean {\n return contains(value.toDouble())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"longRangeContains\")\npublic operator fun ClosedRange.contains(value: Int): Boolean {\n return contains(value.toLong())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"byteRangeContains\")\npublic operator fun ClosedRange.contains(value: Int): Boolean {\n return value.toByteExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"shortRangeContains\")\npublic operator fun ClosedRange.contains(value: Int): Boolean {\n return value.toShortExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"doubleRangeContains\")\npublic operator fun ClosedRange.contains(value: Int): Boolean {\n return contains(value.toDouble())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"floatRangeContains\")\npublic operator fun ClosedRange.contains(value: Int): Boolean {\n return contains(value.toFloat())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"intRangeContains\")\npublic operator fun ClosedRange.contains(value: Long): Boolean {\n return value.toIntExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"byteRangeContains\")\npublic operator fun ClosedRange.contains(value: Long): Boolean {\n return value.toByteExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"shortRangeContains\")\npublic operator fun ClosedRange.contains(value: Long): Boolean {\n return value.toShortExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"doubleRangeContains\")\npublic operator fun ClosedRange.contains(value: Long): Boolean {\n return contains(value.toDouble())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"floatRangeContains\")\npublic operator fun ClosedRange.contains(value: Long): Boolean {\n return contains(value.toFloat())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"intRangeContains\")\npublic operator fun ClosedRange.contains(value: Short): Boolean {\n return contains(value.toInt())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"longRangeContains\")\npublic operator fun ClosedRange.contains(value: Short): Boolean {\n return contains(value.toLong())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"byteRangeContains\")\npublic operator fun ClosedRange.contains(value: Short): Boolean {\n return value.toByteExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"doubleRangeContains\")\npublic operator fun ClosedRange.contains(value: Short): Boolean {\n return contains(value.toDouble())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"floatRangeContains\")\npublic operator fun ClosedRange.contains(value: Short): Boolean {\n return contains(value.toFloat())\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Int.downTo(to: Byte): IntProgression {\n return IntProgression.fromClosedRange(this, to.toInt(), -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Long.downTo(to: Byte): LongProgression {\n return LongProgression.fromClosedRange(this, to.toLong(), -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Byte.downTo(to: Byte): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to.toInt(), -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Short.downTo(to: Byte): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to.toInt(), -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Char.downTo(to: Char): CharProgression {\n return CharProgression.fromClosedRange(this, to, -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Int.downTo(to: Int): IntProgression {\n return IntProgression.fromClosedRange(this, to, -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Long.downTo(to: Int): LongProgression {\n return LongProgression.fromClosedRange(this, to.toLong(), -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Byte.downTo(to: Int): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to, -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Short.downTo(to: Int): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to, -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Int.downTo(to: Long): LongProgression {\n return LongProgression.fromClosedRange(this.toLong(), to, -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Long.downTo(to: Long): LongProgression {\n return LongProgression.fromClosedRange(this, to, -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Byte.downTo(to: Long): LongProgression {\n return LongProgression.fromClosedRange(this.toLong(), to, -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Short.downTo(to: Long): LongProgression {\n return LongProgression.fromClosedRange(this.toLong(), to, -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Int.downTo(to: Short): IntProgression {\n return IntProgression.fromClosedRange(this, to.toInt(), -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Long.downTo(to: Short): LongProgression {\n return LongProgression.fromClosedRange(this, to.toLong(), -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Byte.downTo(to: Short): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to.toInt(), -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Short.downTo(to: Short): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to.toInt(), -1)\n}\n\n/**\n * Returns a progression that goes over the same range in the opposite direction with the same step.\n */\npublic fun IntProgression.reversed(): IntProgression {\n return IntProgression.fromClosedRange(last, first, -step)\n}\n\n/**\n * Returns a progression that goes over the same range in the opposite direction with the same step.\n */\npublic fun LongProgression.reversed(): LongProgression {\n return LongProgression.fromClosedRange(last, first, -step)\n}\n\n/**\n * Returns a progression that goes over the same range in the opposite direction with the same step.\n */\npublic fun CharProgression.reversed(): CharProgression {\n return CharProgression.fromClosedRange(last, first, -step)\n}\n\n/**\n * Returns a progression that goes over the same range with the given step.\n */\npublic infix fun IntProgression.step(step: Int): IntProgression {\n checkStepIsPositive(step > 0, step)\n return IntProgression.fromClosedRange(first, last, if (this.step > 0) step else -step)\n}\n\n/**\n * Returns a progression that goes over the same range with the given step.\n */\npublic infix fun LongProgression.step(step: Long): LongProgression {\n checkStepIsPositive(step > 0, step)\n return LongProgression.fromClosedRange(first, last, if (this.step > 0) step else -step)\n}\n\n/**\n * Returns a progression that goes over the same range with the given step.\n */\npublic infix fun CharProgression.step(step: Int): CharProgression {\n checkStepIsPositive(step > 0, step)\n return CharProgression.fromClosedRange(first, last, if (this.step > 0) step else -step)\n}\n\ninternal fun Int.toByteExactOrNull(): Byte? {\n return if (this in Byte.MIN_VALUE.toInt()..Byte.MAX_VALUE.toInt()) this.toByte() else null\n}\n\ninternal fun Long.toByteExactOrNull(): Byte? {\n return if (this in Byte.MIN_VALUE.toLong()..Byte.MAX_VALUE.toLong()) this.toByte() else null\n}\n\ninternal fun Short.toByteExactOrNull(): Byte? {\n return if (this in Byte.MIN_VALUE.toShort()..Byte.MAX_VALUE.toShort()) this.toByte() else null\n}\n\ninternal fun Double.toByteExactOrNull(): Byte? {\n return if (this in Byte.MIN_VALUE.toDouble()..Byte.MAX_VALUE.toDouble()) this.toByte() else null\n}\n\ninternal fun Float.toByteExactOrNull(): Byte? {\n return if (this in Byte.MIN_VALUE.toFloat()..Byte.MAX_VALUE.toFloat()) this.toByte() else null\n}\n\ninternal fun Long.toIntExactOrNull(): Int? {\n return if (this in Int.MIN_VALUE.toLong()..Int.MAX_VALUE.toLong()) this.toInt() else null\n}\n\ninternal fun Double.toIntExactOrNull(): Int? {\n return if (this in Int.MIN_VALUE.toDouble()..Int.MAX_VALUE.toDouble()) this.toInt() else null\n}\n\ninternal fun Float.toIntExactOrNull(): Int? {\n return if (this in Int.MIN_VALUE.toFloat()..Int.MAX_VALUE.toFloat()) this.toInt() else null\n}\n\ninternal fun Double.toLongExactOrNull(): Long? {\n return if (this in Long.MIN_VALUE.toDouble()..Long.MAX_VALUE.toDouble()) this.toLong() else null\n}\n\ninternal fun Float.toLongExactOrNull(): Long? {\n return if (this in Long.MIN_VALUE.toFloat()..Long.MAX_VALUE.toFloat()) this.toLong() else null\n}\n\ninternal fun Int.toShortExactOrNull(): Short? {\n return if (this in Short.MIN_VALUE.toInt()..Short.MAX_VALUE.toInt()) this.toShort() else null\n}\n\ninternal fun Long.toShortExactOrNull(): Short? {\n return if (this in Short.MIN_VALUE.toLong()..Short.MAX_VALUE.toLong()) this.toShort() else null\n}\n\ninternal fun Double.toShortExactOrNull(): Short? {\n return if (this in Short.MIN_VALUE.toDouble()..Short.MAX_VALUE.toDouble()) this.toShort() else null\n}\n\ninternal fun Float.toShortExactOrNull(): Short? {\n return if (this in Short.MIN_VALUE.toFloat()..Short.MAX_VALUE.toFloat()) this.toShort() else null\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Int.until(to: Byte): IntRange {\n return this .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Long.until(to: Byte): LongRange {\n return this .. (to.toLong() - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Byte.until(to: Byte): IntRange {\n return this.toInt() .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Short.until(to: Byte): IntRange {\n return this.toInt() .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Char.until(to: Char): CharRange {\n if (to <= '\\u0000') return CharRange.EMPTY\n return this .. (to - 1).toChar()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Int.until(to: Int): IntRange {\n if (to <= Int.MIN_VALUE) return IntRange.EMPTY\n return this .. (to - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Long.until(to: Int): LongRange {\n return this .. (to.toLong() - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Byte.until(to: Int): IntRange {\n if (to <= Int.MIN_VALUE) return IntRange.EMPTY\n return this.toInt() .. (to - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Short.until(to: Int): IntRange {\n if (to <= Int.MIN_VALUE) return IntRange.EMPTY\n return this.toInt() .. (to - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Int.until(to: Long): LongRange {\n if (to <= Long.MIN_VALUE) return LongRange.EMPTY\n return this.toLong() .. (to - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Long.until(to: Long): LongRange {\n if (to <= Long.MIN_VALUE) return LongRange.EMPTY\n return this .. (to - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Byte.until(to: Long): LongRange {\n if (to <= Long.MIN_VALUE) return LongRange.EMPTY\n return this.toLong() .. (to - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Short.until(to: Long): LongRange {\n if (to <= Long.MIN_VALUE) return LongRange.EMPTY\n return this.toLong() .. (to - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Int.until(to: Short): IntRange {\n return this .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Long.until(to: Short): LongRange {\n return this .. (to.toLong() - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Byte.until(to: Short): IntRange {\n return this.toInt() .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Short.until(to: Short): IntRange {\n return this.toInt() .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeastComparable\n */\npublic fun > T.coerceAtLeast(minimumValue: T): T {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Byte.coerceAtLeast(minimumValue: Byte): Byte {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Short.coerceAtLeast(minimumValue: Short): Short {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Int.coerceAtLeast(minimumValue: Int): Int {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Long.coerceAtLeast(minimumValue: Long): Long {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Float.coerceAtLeast(minimumValue: Float): Float {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Double.coerceAtLeast(minimumValue: Double): Double {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMostComparable\n */\npublic fun > T.coerceAtMost(maximumValue: T): T {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Byte.coerceAtMost(maximumValue: Byte): Byte {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Short.coerceAtMost(maximumValue: Short): Short {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Int.coerceAtMost(maximumValue: Int): Int {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Long.coerceAtMost(maximumValue: Long): Long {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Float.coerceAtMost(maximumValue: Float): Float {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Double.coerceAtMost(maximumValue: Double): Double {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceInComparable\n */\npublic fun > T.coerceIn(minimumValue: T?, maximumValue: T?): T {\n if (minimumValue !== null && maximumValue !== null) {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n }\n else {\n if (minimumValue !== null && this < minimumValue) return minimumValue\n if (maximumValue !== null && this > maximumValue) return maximumValue\n }\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Byte.coerceIn(minimumValue: Byte, maximumValue: Byte): Byte {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Short.coerceIn(minimumValue: Short, maximumValue: Short): Short {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Int.coerceIn(minimumValue: Int, maximumValue: Int): Int {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Long.coerceIn(minimumValue: Long, maximumValue: Long): Long {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Float.coerceIn(minimumValue: Float, maximumValue: Float): Float {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Double.coerceIn(minimumValue: Double, maximumValue: Double): Double {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified [range].\n * \n * @return this value if it's in the [range], or `range.start` if this value is less than `range.start`, or `range.endInclusive` if this value is greater than `range.endInclusive`.\n * \n * @sample samples.comparisons.ComparableOps.coerceInFloatingPointRange\n */\n@SinceKotlin(\"1.1\")\npublic fun > T.coerceIn(range: ClosedFloatingPointRange): T {\n if (range.isEmpty()) throw IllegalArgumentException(\"Cannot coerce value to an empty range: $range.\")\n return when {\n // this < start equiv to this <= start && !(this >= start)\n range.lessThanOrEquals(this, range.start) && !range.lessThanOrEquals(range.start, this) -> range.start\n // this > end equiv to this >= end && !(this <= end)\n range.lessThanOrEquals(range.endInclusive, this) && !range.lessThanOrEquals(this, range.endInclusive) -> range.endInclusive\n else -> this\n }\n}\n\n/**\n * Ensures that this value lies in the specified [range].\n * \n * @return this value if it's in the [range], or `range.start` if this value is less than `range.start`, or `range.endInclusive` if this value is greater than `range.endInclusive`.\n * \n * @sample samples.comparisons.ComparableOps.coerceInComparable\n */\npublic fun > T.coerceIn(range: ClosedRange): T {\n if (range is ClosedFloatingPointRange) {\n return this.coerceIn(range)\n }\n if (range.isEmpty()) throw IllegalArgumentException(\"Cannot coerce value to an empty range: $range.\")\n return when {\n this < range.start -> range.start\n this > range.endInclusive -> range.endInclusive\n else -> this\n }\n}\n\n/**\n * Ensures that this value lies in the specified [range].\n * \n * @return this value if it's in the [range], or `range.start` if this value is less than `range.start`, or `range.endInclusive` if this value is greater than `range.endInclusive`.\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Int.coerceIn(range: ClosedRange): Int {\n if (range is ClosedFloatingPointRange) {\n return this.coerceIn(range)\n }\n if (range.isEmpty()) throw IllegalArgumentException(\"Cannot coerce value to an empty range: $range.\")\n return when {\n this < range.start -> range.start\n this > range.endInclusive -> range.endInclusive\n else -> this\n }\n}\n\n/**\n * Ensures that this value lies in the specified [range].\n * \n * @return this value if it's in the [range], or `range.start` if this value is less than `range.start`, or `range.endInclusive` if this value is greater than `range.endInclusive`.\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Long.coerceIn(range: ClosedRange): Long {\n if (range is ClosedFloatingPointRange) {\n return this.coerceIn(range)\n }\n if (range.isEmpty()) throw IllegalArgumentException(\"Cannot coerce value to an empty range: $range.\")\n return when {\n this < range.start -> range.start\n this > range.endInclusive -> range.endInclusive\n else -> this\n }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\nimport kotlin.experimental.*\n\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class UByte @PublishedApi internal constructor(@PublishedApi internal val data: Byte) : Comparable {\n\n companion object {\n /**\n * A constant holding the minimum value an instance of UByte can have.\n */\n public const val MIN_VALUE: UByte = UByte(0)\n\n /**\n * A constant holding the maximum value an instance of UByte can have.\n */\n public const val MAX_VALUE: UByte = UByte(-1)\n\n /**\n * The number of bytes used to represent an instance of UByte in a binary form.\n */\n public const val SIZE_BYTES: Int = 1\n\n /**\n * The number of bits used to represent an instance of UByte in a binary form.\n */\n public const val SIZE_BITS: Int = 8\n }\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n @Suppress(\"OVERRIDE_BY_INLINE\")\n public override inline operator fun compareTo(other: UByte): Int = this.toInt().compareTo(other.toInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UShort): Int = this.toInt().compareTo(other.toInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UInt): Int = this.toUInt().compareTo(other)\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: ULong): Int = this.toULong().compareTo(other)\n\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UByte): UInt = this.toUInt().plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UShort): UInt = this.toUInt().plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UInt): UInt = this.toUInt().plus(other)\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: ULong): ULong = this.toULong().plus(other)\n\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UByte): UInt = this.toUInt().minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UShort): UInt = this.toUInt().minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UInt): UInt = this.toUInt().minus(other)\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: ULong): ULong = this.toULong().minus(other)\n\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UByte): UInt = this.toUInt().times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UShort): UInt = this.toUInt().times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UInt): UInt = this.toUInt().times(other)\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: ULong): ULong = this.toULong().times(other)\n\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UByte): UInt = this.toUInt().div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UShort): UInt = this.toUInt().div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UInt): UInt = this.toUInt().div(other)\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: ULong): ULong = this.toULong().div(other)\n\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UByte): UInt = this.toUInt().rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UShort): UInt = this.toUInt().rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UInt): UInt = this.toUInt().rem(other)\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: ULong): ULong = this.toULong().rem(other)\n\n /** Increments this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun inc(): UByte = UByte(data.inc())\n /** Decrements this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun dec(): UByte = UByte(data.dec())\n\n /** Creates a range from this value to the specified [other] value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rangeTo(other: UByte): UIntRange = UIntRange(this.toUInt(), other.toUInt())\n\n /** Performs a bitwise AND operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun and(other: UByte): UByte = UByte(this.data and other.data)\n /** Performs a bitwise OR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun or(other: UByte): UByte = UByte(this.data or other.data)\n /** Performs a bitwise XOR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun xor(other: UByte): UByte = UByte(this.data xor other.data)\n /** Inverts the bits in this value. */\n @kotlin.internal.InlineOnly\n public inline fun inv(): UByte = UByte(data.inv())\n\n /**\n * Converts this [UByte] value to [Byte].\n *\n * If this value is less than or equals to [Byte.MAX_VALUE], the resulting `Byte` value represents\n * the same numerical value as this `UByte`. Otherwise the result is negative.\n *\n * The resulting `Byte` value has the same binary representation as this `UByte` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toByte(): Byte = data\n /**\n * Converts this [UByte] value to [Short].\n *\n * The resulting `Short` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `Short` value are the same as the bits of this `UByte` value,\n * whereas the most significant 8 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toShort(): Short = data.toShort() and 0xFF\n /**\n * Converts this [UByte] value to [Int].\n *\n * The resulting `Int` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `Int` value are the same as the bits of this `UByte` value,\n * whereas the most significant 24 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toInt(): Int = data.toInt() and 0xFF\n /**\n * Converts this [UByte] value to [Long].\n *\n * The resulting `Long` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `Long` value are the same as the bits of this `UByte` value,\n * whereas the most significant 56 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toLong(): Long = data.toLong() and 0xFF\n\n /** Returns this value. */\n @kotlin.internal.InlineOnly\n public inline fun toUByte(): UByte = this\n /**\n * Converts this [UByte] value to [UShort].\n *\n * The resulting `UShort` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `UShort` value are the same as the bits of this `UByte` value,\n * whereas the most significant 8 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUShort(): UShort = UShort(data.toShort() and 0xFF)\n /**\n * Converts this [UByte] value to [UInt].\n *\n * The resulting `UInt` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `UInt` value are the same as the bits of this `UByte` value,\n * whereas the most significant 24 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUInt(): UInt = UInt(data.toInt() and 0xFF)\n /**\n * Converts this [UByte] value to [ULong].\n *\n * The resulting `ULong` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `ULong` value are the same as the bits of this `UByte` value,\n * whereas the most significant 56 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toULong(): ULong = ULong(data.toLong() and 0xFF)\n\n /**\n * Converts this [UByte] value to [Float].\n *\n * The resulting `Float` value represents the same numerical value as this `UByte`.\n */\n @kotlin.internal.InlineOnly\n public inline fun toFloat(): Float = this.toInt().toFloat()\n /**\n * Converts this [UByte] value to [Double].\n *\n * The resulting `Double` value represents the same numerical value as this `UByte`.\n */\n @kotlin.internal.InlineOnly\n public inline fun toDouble(): Double = this.toInt().toDouble()\n\n public override fun toString(): String = toInt().toString()\n\n}\n\n/**\n * Converts this [Byte] value to [UByte].\n *\n * If this value is positive, the resulting `UByte` value represents the same numerical value as this `Byte`.\n *\n * The resulting `UByte` value has the same binary representation as this `Byte` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Byte.toUByte(): UByte = UByte(this)\n/**\n * Converts this [Short] value to [UByte].\n *\n * If this value is positive and less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `Short`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `Short` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Short.toUByte(): UByte = UByte(this.toByte())\n/**\n * Converts this [Int] value to [UByte].\n *\n * If this value is positive and less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `Int`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `Int` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Int.toUByte(): UByte = UByte(this.toByte())\n/**\n * Converts this [Long] value to [UByte].\n *\n * If this value is positive and less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `Long`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `Long` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Long.toUByte(): UByte = UByte(this.toByte())\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\nimport kotlin.experimental.*\n\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class UInt @PublishedApi internal constructor(@PublishedApi internal val data: Int) : Comparable {\n\n companion object {\n /**\n * A constant holding the minimum value an instance of UInt can have.\n */\n public const val MIN_VALUE: UInt = UInt(0)\n\n /**\n * A constant holding the maximum value an instance of UInt can have.\n */\n public const val MAX_VALUE: UInt = UInt(-1)\n\n /**\n * The number of bytes used to represent an instance of UInt in a binary form.\n */\n public const val SIZE_BYTES: Int = 4\n\n /**\n * The number of bits used to represent an instance of UInt in a binary form.\n */\n public const val SIZE_BITS: Int = 32\n }\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UByte): Int = this.compareTo(other.toUInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UShort): Int = this.compareTo(other.toUInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n @Suppress(\"OVERRIDE_BY_INLINE\")\n public override inline operator fun compareTo(other: UInt): Int = uintCompare(this.data, other.data)\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: ULong): Int = this.toULong().compareTo(other)\n\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UByte): UInt = this.plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UShort): UInt = this.plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UInt): UInt = UInt(this.data.plus(other.data))\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: ULong): ULong = this.toULong().plus(other)\n\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UByte): UInt = this.minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UShort): UInt = this.minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UInt): UInt = UInt(this.data.minus(other.data))\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: ULong): ULong = this.toULong().minus(other)\n\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UByte): UInt = this.times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UShort): UInt = this.times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UInt): UInt = UInt(this.data.times(other.data))\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: ULong): ULong = this.toULong().times(other)\n\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UByte): UInt = this.div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UShort): UInt = this.div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UInt): UInt = uintDivide(this, other)\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: ULong): ULong = this.toULong().div(other)\n\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UByte): UInt = this.rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UShort): UInt = this.rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UInt): UInt = uintRemainder(this, other)\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: ULong): ULong = this.toULong().rem(other)\n\n /** Increments this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun inc(): UInt = UInt(data.inc())\n /** Decrements this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun dec(): UInt = UInt(data.dec())\n\n /** Creates a range from this value to the specified [other] value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rangeTo(other: UInt): UIntRange = UIntRange(this, other)\n\n /** Shifts this value left by the [bitCount] number of bits. */\n @kotlin.internal.InlineOnly\n public inline infix fun shl(bitCount: Int): UInt = UInt(data shl bitCount)\n /** Shifts this value right by the [bitCount] number of bits, filling the leftmost bits with zeros. */\n @kotlin.internal.InlineOnly\n public inline infix fun shr(bitCount: Int): UInt = UInt(data ushr bitCount)\n /** Performs a bitwise AND operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun and(other: UInt): UInt = UInt(this.data and other.data)\n /** Performs a bitwise OR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun or(other: UInt): UInt = UInt(this.data or other.data)\n /** Performs a bitwise XOR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun xor(other: UInt): UInt = UInt(this.data xor other.data)\n /** Inverts the bits in this value. */\n @kotlin.internal.InlineOnly\n public inline fun inv(): UInt = UInt(data.inv())\n\n /**\n * Converts this [UInt] value to [Byte].\n *\n * If this value is less than or equals to [Byte.MAX_VALUE], the resulting `Byte` value represents\n * the same numerical value as this `UInt`.\n *\n * The resulting `Byte` value is represented by the least significant 8 bits of this `UInt` value.\n * Note that the resulting `Byte` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toByte(): Byte = data.toByte()\n /**\n * Converts this [UInt] value to [Short].\n *\n * If this value is less than or equals to [Short.MAX_VALUE], the resulting `Short` value represents\n * the same numerical value as this `UInt`.\n *\n * The resulting `Short` value is represented by the least significant 16 bits of this `UInt` value.\n * Note that the resulting `Short` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toShort(): Short = data.toShort()\n /**\n * Converts this [UInt] value to [Int].\n *\n * If this value is less than or equals to [Int.MAX_VALUE], the resulting `Int` value represents\n * the same numerical value as this `UInt`. Otherwise the result is negative.\n *\n * The resulting `Int` value has the same binary representation as this `UInt` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toInt(): Int = data\n /**\n * Converts this [UInt] value to [Long].\n *\n * The resulting `Long` value represents the same numerical value as this `UInt`.\n *\n * The least significant 32 bits of the resulting `Long` value are the same as the bits of this `UInt` value,\n * whereas the most significant 32 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toLong(): Long = data.toLong() and 0xFFFF_FFFF\n\n /**\n * Converts this [UInt] value to [UByte].\n *\n * If this value is less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `UInt`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `UInt` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUByte(): UByte = data.toUByte()\n /**\n * Converts this [UInt] value to [UShort].\n *\n * If this value is less than or equals to [UShort.MAX_VALUE], the resulting `UShort` value represents\n * the same numerical value as this `UInt`.\n *\n * The resulting `UShort` value is represented by the least significant 16 bits of this `UInt` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUShort(): UShort = data.toUShort()\n /** Returns this value. */\n @kotlin.internal.InlineOnly\n public inline fun toUInt(): UInt = this\n /**\n * Converts this [UInt] value to [ULong].\n *\n * The resulting `ULong` value represents the same numerical value as this `UInt`.\n *\n * The least significant 32 bits of the resulting `ULong` value are the same as the bits of this `UInt` value,\n * whereas the most significant 32 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toULong(): ULong = ULong(data.toLong() and 0xFFFF_FFFF)\n\n /**\n * Converts this [UInt] value to [Float].\n *\n * The resulting value is the closest `Float` to this `UInt` value.\n * In case when this `UInt` value is exactly between two `Float`s,\n * the one with zero at least significant bit of mantissa is selected.\n */\n @kotlin.internal.InlineOnly\n public inline fun toFloat(): Float = this.toDouble().toFloat()\n /**\n * Converts this [UInt] value to [Double].\n *\n * The resulting `Double` value represents the same numerical value as this `UInt`.\n */\n @kotlin.internal.InlineOnly\n public inline fun toDouble(): Double = uintToDouble(data)\n\n public override fun toString(): String = toLong().toString()\n\n}\n\n/**\n * Converts this [Byte] value to [UInt].\n *\n * If this value is positive, the resulting `UInt` value represents the same numerical value as this `Byte`.\n *\n * The least significant 8 bits of the resulting `UInt` value are the same as the bits of this `Byte` value,\n * whereas the most significant 24 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Byte.toUInt(): UInt = UInt(this.toInt())\n/**\n * Converts this [Short] value to [UInt].\n *\n * If this value is positive, the resulting `UInt` value represents the same numerical value as this `Short`.\n *\n * The least significant 16 bits of the resulting `UInt` value are the same as the bits of this `Short` value,\n * whereas the most significant 16 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Short.toUInt(): UInt = UInt(this.toInt())\n/**\n * Converts this [Int] value to [UInt].\n *\n * If this value is positive, the resulting `UInt` value represents the same numerical value as this `Int`.\n *\n * The resulting `UInt` value has the same binary representation as this `Int` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Int.toUInt(): UInt = UInt(this)\n/**\n * Converts this [Long] value to [UInt].\n *\n * If this value is positive and less than or equals to [UInt.MAX_VALUE], the resulting `UInt` value represents\n * the same numerical value as this `Long`.\n *\n * The resulting `UInt` value is represented by the least significant 32 bits of this `Long` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Long.toUInt(): UInt = UInt(this.toInt())\n\n/**\n * Converts this [Float] value to [UInt].\n *\n * The fractional part, if any, is rounded down.\n * Returns zero if this `Float` value is negative or `NaN`, [UInt.MAX_VALUE] if it's bigger than `UInt.MAX_VALUE`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Float.toUInt(): UInt = doubleToUInt(this.toDouble())\n/**\n * Converts this [Double] value to [UInt].\n *\n * The fractional part, if any, is rounded down.\n * Returns zero if this `Double` value is negative or `NaN`, [UInt.MAX_VALUE] if it's bigger than `UInt.MAX_VALUE`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Double.toUInt(): UInt = doubleToUInt(this)\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\nimport kotlin.experimental.*\n\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class UShort @PublishedApi internal constructor(@PublishedApi internal val data: Short) : Comparable {\n\n companion object {\n /**\n * A constant holding the minimum value an instance of UShort can have.\n */\n public const val MIN_VALUE: UShort = UShort(0)\n\n /**\n * A constant holding the maximum value an instance of UShort can have.\n */\n public const val MAX_VALUE: UShort = UShort(-1)\n\n /**\n * The number of bytes used to represent an instance of UShort in a binary form.\n */\n public const val SIZE_BYTES: Int = 2\n\n /**\n * The number of bits used to represent an instance of UShort in a binary form.\n */\n public const val SIZE_BITS: Int = 16\n }\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UByte): Int = this.toInt().compareTo(other.toInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n @Suppress(\"OVERRIDE_BY_INLINE\")\n public override inline operator fun compareTo(other: UShort): Int = this.toInt().compareTo(other.toInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UInt): Int = this.toUInt().compareTo(other)\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: ULong): Int = this.toULong().compareTo(other)\n\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UByte): UInt = this.toUInt().plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UShort): UInt = this.toUInt().plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UInt): UInt = this.toUInt().plus(other)\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: ULong): ULong = this.toULong().plus(other)\n\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UByte): UInt = this.toUInt().minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UShort): UInt = this.toUInt().minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UInt): UInt = this.toUInt().minus(other)\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: ULong): ULong = this.toULong().minus(other)\n\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UByte): UInt = this.toUInt().times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UShort): UInt = this.toUInt().times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UInt): UInt = this.toUInt().times(other)\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: ULong): ULong = this.toULong().times(other)\n\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UByte): UInt = this.toUInt().div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UShort): UInt = this.toUInt().div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UInt): UInt = this.toUInt().div(other)\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: ULong): ULong = this.toULong().div(other)\n\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UByte): UInt = this.toUInt().rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UShort): UInt = this.toUInt().rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UInt): UInt = this.toUInt().rem(other)\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: ULong): ULong = this.toULong().rem(other)\n\n /** Increments this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun inc(): UShort = UShort(data.inc())\n /** Decrements this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun dec(): UShort = UShort(data.dec())\n\n /** Creates a range from this value to the specified [other] value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rangeTo(other: UShort): UIntRange = UIntRange(this.toUInt(), other.toUInt())\n\n /** Performs a bitwise AND operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun and(other: UShort): UShort = UShort(this.data and other.data)\n /** Performs a bitwise OR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun or(other: UShort): UShort = UShort(this.data or other.data)\n /** Performs a bitwise XOR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun xor(other: UShort): UShort = UShort(this.data xor other.data)\n /** Inverts the bits in this value. */\n @kotlin.internal.InlineOnly\n public inline fun inv(): UShort = UShort(data.inv())\n\n /**\n * Converts this [UShort] value to [Byte].\n *\n * If this value is less than or equals to [Byte.MAX_VALUE], the resulting `Byte` value represents\n * the same numerical value as this `UShort`.\n *\n * The resulting `Byte` value is represented by the least significant 8 bits of this `UShort` value.\n * Note that the resulting `Byte` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toByte(): Byte = data.toByte()\n /**\n * Converts this [UShort] value to [Short].\n *\n * If this value is less than or equals to [Short.MAX_VALUE], the resulting `Short` value represents\n * the same numerical value as this `UShort`. Otherwise the result is negative.\n *\n * The resulting `Short` value has the same binary representation as this `UShort` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toShort(): Short = data\n /**\n * Converts this [UShort] value to [Int].\n *\n * The resulting `Int` value represents the same numerical value as this `UShort`.\n *\n * The least significant 16 bits of the resulting `Int` value are the same as the bits of this `UShort` value,\n * whereas the most significant 16 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toInt(): Int = data.toInt() and 0xFFFF\n /**\n * Converts this [UShort] value to [Long].\n *\n * The resulting `Long` value represents the same numerical value as this `UShort`.\n *\n * The least significant 16 bits of the resulting `Long` value are the same as the bits of this `UShort` value,\n * whereas the most significant 48 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toLong(): Long = data.toLong() and 0xFFFF\n\n /**\n * Converts this [UShort] value to [UByte].\n *\n * If this value is less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `UShort`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `UShort` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUByte(): UByte = data.toUByte()\n /** Returns this value. */\n @kotlin.internal.InlineOnly\n public inline fun toUShort(): UShort = this\n /**\n * Converts this [UShort] value to [UInt].\n *\n * The resulting `UInt` value represents the same numerical value as this `UShort`.\n *\n * The least significant 16 bits of the resulting `UInt` value are the same as the bits of this `UShort` value,\n * whereas the most significant 16 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUInt(): UInt = UInt(data.toInt() and 0xFFFF)\n /**\n * Converts this [UShort] value to [ULong].\n *\n * The resulting `ULong` value represents the same numerical value as this `UShort`.\n *\n * The least significant 16 bits of the resulting `ULong` value are the same as the bits of this `UShort` value,\n * whereas the most significant 48 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toULong(): ULong = ULong(data.toLong() and 0xFFFF)\n\n /**\n * Converts this [UShort] value to [Float].\n *\n * The resulting `Float` value represents the same numerical value as this `UShort`.\n */\n @kotlin.internal.InlineOnly\n public inline fun toFloat(): Float = this.toInt().toFloat()\n /**\n * Converts this [UShort] value to [Double].\n *\n * The resulting `Double` value represents the same numerical value as this `UShort`.\n */\n @kotlin.internal.InlineOnly\n public inline fun toDouble(): Double = this.toInt().toDouble()\n\n public override fun toString(): String = toInt().toString()\n\n}\n\n/**\n * Converts this [Byte] value to [UShort].\n *\n * If this value is positive, the resulting `UShort` value represents the same numerical value as this `Byte`.\n *\n * The least significant 8 bits of the resulting `UShort` value are the same as the bits of this `Byte` value,\n * whereas the most significant 8 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Byte.toUShort(): UShort = UShort(this.toShort())\n/**\n * Converts this [Short] value to [UShort].\n *\n * If this value is positive, the resulting `UShort` value represents the same numerical value as this `Short`.\n *\n * The resulting `UShort` value has the same binary representation as this `Short` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Short.toUShort(): UShort = UShort(this)\n/**\n * Converts this [Int] value to [UShort].\n *\n * If this value is positive and less than or equals to [UShort.MAX_VALUE], the resulting `UShort` value represents\n * the same numerical value as this `Int`.\n *\n * The resulting `UShort` value is represented by the least significant 16 bits of this `Int` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Int.toUShort(): UShort = UShort(this.toShort())\n/**\n * Converts this [Long] value to [UShort].\n *\n * If this value is positive and less than or equals to [UShort.MAX_VALUE], the resulting `UShort` value represents\n * the same numerical value as this `Long`.\n *\n * The resulting `UShort` value is represented by the least significant 16 bits of this `Long` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Long.toUShort(): UShort = UShort(this.toShort())\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.ranges\n\n/**\n * A range of values of type `Char`.\n */\npublic class CharRange(start: Char, endInclusive: Char) : CharProgression(start, endInclusive, 1), ClosedRange {\n override val start: Char get() = first\n override val endInclusive: Char get() = last\n\n override fun contains(value: Char): Boolean = first <= value && value <= last\n\n override fun isEmpty(): Boolean = first > last\n\n override fun equals(other: Any?): Boolean =\n other is CharRange && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * first.toInt() + last.toInt())\n\n override fun toString(): String = \"$first..$last\"\n\n companion object {\n /** An empty range of values of type Char. */\n public val EMPTY: CharRange = CharRange(1.toChar(), 0.toChar())\n }\n}\n\n/**\n * A range of values of type `Int`.\n */\npublic class IntRange(start: Int, endInclusive: Int) : IntProgression(start, endInclusive, 1), ClosedRange {\n override val start: Int get() = first\n override val endInclusive: Int get() = last\n\n override fun contains(value: Int): Boolean = first <= value && value <= last\n\n override fun isEmpty(): Boolean = first > last\n\n override fun equals(other: Any?): Boolean =\n other is IntRange && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * first + last)\n\n override fun toString(): String = \"$first..$last\"\n\n companion object {\n /** An empty range of values of type Int. */\n public val EMPTY: IntRange = IntRange(1, 0)\n }\n}\n\n/**\n * A range of values of type `Long`.\n */\npublic class LongRange(start: Long, endInclusive: Long) : LongProgression(start, endInclusive, 1), ClosedRange {\n override val start: Long get() = first\n override val endInclusive: Long get() = last\n\n override fun contains(value: Long): Boolean = first <= value && value <= last\n\n override fun isEmpty(): Boolean = first > last\n\n override fun equals(other: Any?): Boolean =\n other is LongRange && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (first xor (first ushr 32)) + (last xor (last ushr 32))).toInt()\n\n override fun toString(): String = \"$first..$last\"\n\n companion object {\n /** An empty range of values of type Long. */\n public val EMPTY: LongRange = LongRange(1, 0)\n }\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\nimport kotlin.contracts.*\n\ninternal object EmptyIterator : ListIterator {\n override fun hasNext(): Boolean = false\n override fun hasPrevious(): Boolean = false\n override fun nextIndex(): Int = 0\n override fun previousIndex(): Int = -1\n override fun next(): Nothing = throw NoSuchElementException()\n override fun previous(): Nothing = throw NoSuchElementException()\n}\n\ninternal object EmptyList : List, Serializable, RandomAccess {\n private const val serialVersionUID: Long = -7390468764508069838L\n\n override fun equals(other: Any?): Boolean = other is List<*> && other.isEmpty()\n override fun hashCode(): Int = 1\n override fun toString(): String = \"[]\"\n\n override val size: Int get() = 0\n override fun isEmpty(): Boolean = true\n override fun contains(element: Nothing): Boolean = false\n override fun containsAll(elements: Collection): Boolean = elements.isEmpty()\n\n override fun get(index: Int): Nothing = throw IndexOutOfBoundsException(\"Empty list doesn't contain element at index $index.\")\n override fun indexOf(element: Nothing): Int = -1\n override fun lastIndexOf(element: Nothing): Int = -1\n\n override fun iterator(): Iterator = EmptyIterator\n override fun listIterator(): ListIterator = EmptyIterator\n override fun listIterator(index: Int): ListIterator {\n if (index != 0) throw IndexOutOfBoundsException(\"Index: $index\")\n return EmptyIterator\n }\n\n override fun subList(fromIndex: Int, toIndex: Int): List {\n if (fromIndex == 0 && toIndex == 0) return this\n throw IndexOutOfBoundsException(\"fromIndex: $fromIndex, toIndex: $toIndex\")\n }\n\n private fun readResolve(): Any = EmptyList\n}\n\ninternal fun Array.asCollection(): Collection = ArrayAsCollection(this, isVarargs = false)\n\nprivate class ArrayAsCollection(val values: Array, val isVarargs: Boolean) : Collection {\n override val size: Int get() = values.size\n override fun isEmpty(): Boolean = values.isEmpty()\n override fun contains(element: T): Boolean = values.contains(element)\n override fun containsAll(elements: Collection): Boolean = elements.all { contains(it) }\n override fun iterator(): Iterator = values.iterator()\n // override hidden toArray implementation to prevent copying of values array\n public fun toArray(): Array = values.copyToArrayOfAny(isVarargs)\n}\n\n/**\n * Returns an empty read-only list. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.emptyReadOnlyList\n */\npublic fun emptyList(): List = EmptyList\n\n/**\n * Returns a new read-only list of given elements. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.readOnlyList\n */\npublic fun listOf(vararg elements: T): List = if (elements.size > 0) elements.asList() else emptyList()\n\n/**\n * Returns an empty read-only list. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.emptyReadOnlyList\n */\n@kotlin.internal.InlineOnly\npublic inline fun listOf(): List = emptyList()\n\n/**\n * Returns an empty new [MutableList].\n * @sample samples.collections.Collections.Lists.emptyMutableList\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun mutableListOf(): MutableList = ArrayList()\n\n/**\n * Returns an empty new [ArrayList].\n * @sample samples.collections.Collections.Lists.emptyArrayList\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun arrayListOf(): ArrayList = ArrayList()\n\n/**\n * Returns a new [MutableList] with the given elements.\n * @sample samples.collections.Collections.Lists.mutableList\n */\npublic fun mutableListOf(vararg elements: T): MutableList =\n if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))\n\n/**\n * Returns a new [ArrayList] with the given elements.\n * @sample samples.collections.Collections.Lists.arrayList\n */\npublic fun arrayListOf(vararg elements: T): ArrayList =\n if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))\n\n/**\n * Returns a new read-only list either of single given element, if it is not null, or empty list if the element is null. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.listOfNotNull\n */\npublic fun listOfNotNull(element: T?): List = if (element != null) listOf(element) else emptyList()\n\n/**\n * Returns a new read-only list only of those given elements, that are not null. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.listOfNotNull\n */\npublic fun listOfNotNull(vararg elements: T?): List = elements.filterNotNull()\n\n/**\n * Creates a new read-only list with the specified [size], where each element is calculated by calling the specified\n * [init] function. The [init] function returns a list element given its index.\n * @sample samples.collections.Collections.Lists.readOnlyListFromInitializer\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun List(size: Int, init: (index: Int) -> T): List = MutableList(size, init)\n\n/**\n * Creates a new mutable list with the specified [size], where each element is calculated by calling the specified\n * [init] function. The [init] function returns a list element given its index.\n * @sample samples.collections.Collections.Lists.mutableListFromInitializer\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun MutableList(size: Int, init: (index: Int) -> T): MutableList {\n val list = ArrayList(size)\n repeat(size) { index -> list.add(init(index)) }\n return list\n}\n\n/**\n * Returns an [IntRange] of the valid indices for this collection.\n * @sample samples.collections.Collections.Collections.indicesOfCollection\n */\npublic val Collection<*>.indices: IntRange\n get() = 0..size - 1\n\n/**\n * Returns the index of the last item in the list or -1 if the list is empty.\n *\n * @sample samples.collections.Collections.Lists.lastIndexOfList\n */\npublic val List.lastIndex: Int\n get() = this.size - 1\n\n/**\n * Returns `true` if the collection is not empty.\n * @sample samples.collections.Collections.Collections.collectionIsNotEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection.isNotEmpty(): Boolean = !isEmpty()\n\n/**\n * Returns `true` if this nullable collection is either null or empty.\n * @sample samples.collections.Collections.Collections.collectionIsNullOrEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Collection?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || this.isEmpty()\n}\n\n/**\n * Returns this Collection if it's not `null` and the empty list otherwise.\n * @sample samples.collections.Collections.Collections.collectionOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection?.orEmpty(): Collection = this ?: emptyList()\n\n/**\n * Returns this List if it's not `null` and the empty list otherwise.\n * @sample samples.collections.Collections.Lists.listOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun List?.orEmpty(): List = this ?: emptyList()\n\n/**\n * Returns this collection if it's not empty\n * or the result of calling [defaultValue] function if the collection is empty.\n *\n * @sample samples.collections.Collections.Collections.collectionIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun C.ifEmpty(defaultValue: () -> R): R where C : Collection<*>, C : R =\n if (isEmpty()) defaultValue() else this\n\n\n/**\n * Checks if all elements in the specified collection are contained in this collection.\n *\n * Allows to overcome type-safety restriction of `containsAll` that requires to pass a collection of type `Collection`.\n * @sample samples.collections.Collections.Collections.collectionContainsAll\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> Collection.containsAll(elements: Collection): Boolean = this.containsAll(elements)\n\ninternal fun List.optimizeReadOnlyList() = when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this\n}\n\n/**\n * Searches this list or its range for the provided [element] using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the Comparable natural ordering of its elements,\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements equal to the specified [element], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchOnComparable\n * @sample samples.collections.Collections.Lists.binarySearchWithBoundaries\n */\npublic fun > List.binarySearch(element: T?, fromIndex: Int = 0, toIndex: Int = size): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = compareValues(midVal, element)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Searches this list or its range for the provided [element] using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the specified [comparator],\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements equal to the specified [element], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted according to the specified [comparator].\n * @sample samples.collections.Collections.Lists.binarySearchWithComparator\n */\npublic fun List.binarySearch(element: T, comparator: Comparator, fromIndex: Int = 0, toIndex: Int = size): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = comparator.compare(midVal, element)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Searches this list or its range for an element having the key returned by the specified [selector] function\n * equal to the provided [key] value using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the Comparable natural ordering of keys of its elements.\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements with the specified [key], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element with the specified [key], if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchByKey\n */\npublic inline fun > List.binarySearchBy(\n key: K?,\n fromIndex: Int = 0,\n toIndex: Int = size,\n crossinline selector: (T) -> K?\n): Int =\n binarySearch(fromIndex, toIndex) { compareValues(selector(it), key) }\n\n// do not introduce this overload --- too rare\n//public fun List.binarySearchBy(key: K, comparator: Comparator, fromIndex: Int = 0, toIndex: Int = size(), selector: (T) -> K): Int =\n// binarySearch(fromIndex, toIndex) { comparator.compare(selector(it), key) }\n\n\n/**\n * Searches this list or its range for an element for which [comparison] function returns zero using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the provided [comparison],\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements for which [comparison] returns zero, there is no guarantee which one will be found.\n *\n * @param comparison function that compares an element of the list with the element being searched.\n *\n * @return the index of the found element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchWithComparisonFunction\n */\npublic fun List.binarySearch(fromIndex: Int = 0, toIndex: Int = size, comparison: (T) -> Int): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = comparison(midVal)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Checks that `from` and `to` are in\n * the range of [0..size] and throws an appropriate exception, if they aren't.\n */\nprivate fun rangeCheck(size: Int, fromIndex: Int, toIndex: Int) {\n when {\n fromIndex > toIndex -> throw IllegalArgumentException(\"fromIndex ($fromIndex) is greater than toIndex ($toIndex).\")\n fromIndex < 0 -> throw IndexOutOfBoundsException(\"fromIndex ($fromIndex) is less than zero.\")\n toIndex > size -> throw IndexOutOfBoundsException(\"toIndex ($toIndex) is greater than size ($size).\")\n }\n}\n\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal expect fun checkIndexOverflow(index: Int): Int\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal expect fun checkCountOverflow(count: Int): Int\n\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun throwIndexOverflow() { throw ArithmeticException(\"Index overflow has happened.\") }\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun throwCountOverflow() { throw ArithmeticException(\"Count overflow has happened.\") }\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"MapsKt\")\n\npackage kotlin.collections\n\nimport kotlin.contracts.*\n\nprivate object EmptyMap : Map, Serializable {\n private const val serialVersionUID: Long = 8246714829545688274\n\n override fun equals(other: Any?): Boolean = other is Map<*, *> && other.isEmpty()\n override fun hashCode(): Int = 0\n override fun toString(): String = \"{}\"\n\n override val size: Int get() = 0\n override fun isEmpty(): Boolean = true\n\n override fun containsKey(key: Any?): Boolean = false\n override fun containsValue(value: Nothing): Boolean = false\n override fun get(key: Any?): Nothing? = null\n override val entries: Set> get() = EmptySet\n override val keys: Set get() = EmptySet\n override val values: Collection get() = EmptyList\n\n private fun readResolve(): Any = EmptyMap\n}\n\n/**\n * Returns an empty read-only map of specified type.\n *\n * The returned map is serializable (JVM).\n * @sample samples.collections.Maps.Instantiation.emptyReadOnlyMap\n */\npublic fun emptyMap(): Map = @Suppress(\"UNCHECKED_CAST\") (EmptyMap as Map)\n\n/**\n * Returns a new read-only map with the specified contents, given as a list of pairs\n * where the first value is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * The returned map is serializable (JVM).\n *\n * @sample samples.collections.Maps.Instantiation.mapFromPairs\n */\npublic fun mapOf(vararg pairs: Pair): Map =\n if (pairs.size > 0) pairs.toMap(LinkedHashMap(mapCapacity(pairs.size))) else emptyMap()\n\n/**\n * Returns an empty read-only map.\n *\n * The returned map is serializable (JVM).\n * @sample samples.collections.Maps.Instantiation.emptyReadOnlyMap\n */\n@kotlin.internal.InlineOnly\npublic inline fun mapOf(): Map = emptyMap()\n\n/**\n * Returns an empty new [MutableMap].\n *\n * The returned map preserves the entry iteration order.\n * @sample samples.collections.Maps.Instantiation.emptyMutableMap\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun mutableMapOf(): MutableMap = LinkedHashMap()\n\n/**\n * Returns a new [MutableMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * @sample samples.collections.Maps.Instantiation.mutableMapFromPairs\n * @sample samples.collections.Maps.Instantiation.emptyMutableMap\n */\npublic fun mutableMapOf(vararg pairs: Pair): MutableMap =\n LinkedHashMap(mapCapacity(pairs.size)).apply { putAll(pairs) }\n\n/**\n * Returns an empty new [HashMap].\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun hashMapOf(): HashMap = HashMap()\n\n/**\n * Returns a new [HashMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * @sample samples.collections.Maps.Instantiation.hashMapFromPairs\n */\npublic fun hashMapOf(vararg pairs: Pair): HashMap = HashMap(mapCapacity(pairs.size)).apply { putAll(pairs) }\n\n/**\n * Returns an empty new [LinkedHashMap].\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun linkedMapOf(): LinkedHashMap = LinkedHashMap()\n\n/**\n * Returns a new [LinkedHashMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * @sample samples.collections.Maps.Instantiation.linkedMapFromPairs\n */\npublic fun linkedMapOf(vararg pairs: Pair): LinkedHashMap = pairs.toMap(LinkedHashMap(mapCapacity(pairs.size)))\n\n/**\n * Calculate the initial capacity of a map, based on Guava's com.google.common.collect.Maps approach. This is equivalent\n * to the Collection constructor for HashSet, (c.size()/.75f) + 1, but provides further optimisations for very small or\n * very large sizes, allows support non-collection classes, and provides consistency for all map based class construction.\n */\n@PublishedApi\ninternal fun mapCapacity(expectedSize: Int): Int {\n if (expectedSize < 3) {\n return expectedSize + 1\n }\n if (expectedSize < INT_MAX_POWER_OF_TWO) {\n return expectedSize + expectedSize / 3\n }\n return Int.MAX_VALUE // any large value\n}\n\nprivate const val INT_MAX_POWER_OF_TWO: Int = Int.MAX_VALUE / 2 + 1\n\n/** Returns `true` if this map is not empty. */\n@kotlin.internal.InlineOnly\npublic inline fun Map.isNotEmpty(): Boolean = !isEmpty()\n\n/**\n * Returns `true` if this nullable map is either null or empty.\n * @sample samples.collections.Maps.Usage.mapIsNullOrEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Map?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || isEmpty()\n}\n\n/**\n * Returns the [Map] if its not `null`, or the empty [Map] otherwise.\n *\n * @sample samples.collections.Maps.Usage.mapOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map?.orEmpty(): Map = this ?: emptyMap()\n\n/**\n * Returns this map if it's not empty\n * or the result of calling [defaultValue] function if the map is empty.\n *\n * @sample samples.collections.Maps.Usage.mapIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun M.ifEmpty(defaultValue: () -> R): R where M : Map<*, *>, M : R =\n if (isEmpty()) defaultValue() else this\n\n/**\n * Checks if the map contains the given key.\n *\n * This method allows to use the `x in map` syntax for checking whether an object is contained in the map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <@kotlin.internal.OnlyInputTypes K, V> Map.contains(key: K): Boolean = containsKey(key)\n\n/**\n * Returns the value corresponding to the given [key], or `null` if such a key is not present in the map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <@kotlin.internal.OnlyInputTypes K, V> Map.get(key: K): V? =\n @Suppress(\"UNCHECKED_CAST\") (this as Map).get(key)\n\n/**\n * Allows to use the index operator for storing values in a mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.set(key: K, value: V): Unit {\n put(key, value)\n}\n\n/**\n * Returns `true` if the map contains the specified [key].\n *\n * Allows to overcome type-safety restriction of `containsKey` that requires to pass a key of type `K`.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes K> Map.containsKey(key: K): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as Map).containsKey(key)\n\n/**\n * Returns `true` if the map maps one or more keys to the specified [value].\n *\n * Allows to overcome type-safety restriction of `containsValue` that requires to pass a value of type `V`.\n *\n * @sample samples.collections.Maps.Usage.containsValue\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\n@kotlin.internal.InlineOnly\npublic inline fun Map.containsValue(value: V): Boolean = this.containsValue(value)\n\n\n/**\n * Removes the specified key and its corresponding value from this map.\n *\n * @return the previous value associated with the key, or `null` if the key was not present in the map.\n\n * Allows to overcome type-safety restriction of `remove` that requires to pass a key of type `K`.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes K, V> MutableMap.remove(key: K): V? =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableMap).remove(key)\n\n/**\n * Returns the key component of the map entry.\n *\n * This method allows to use destructuring declarations when working with maps, for example:\n * ```\n * for ((key, value) in map) {\n * // do something with the key and the value\n * }\n * ```\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Map.Entry.component1(): K = key\n\n/**\n * Returns the value component of the map entry.\n *\n * This method allows to use destructuring declarations when working with maps, for example:\n * ```\n * for ((key, value) in map) {\n * // do something with the key and the value\n * }\n * ```\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Map.Entry.component2(): V = value\n\n/**\n * Converts entry to [Pair] with key being first component and value being second.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.Entry.toPair(): Pair = Pair(key, value)\n\n/**\n * Returns the value for the given key, or the result of the [defaultValue] function if there was no entry for the given key.\n *\n * @sample samples.collections.Maps.Usage.getOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.getOrElse(key: K, defaultValue: () -> V): V = get(key) ?: defaultValue()\n\n\ninternal inline fun Map.getOrElseNullable(key: K, defaultValue: () -> V): V {\n val value = get(key)\n if (value == null && !containsKey(key)) {\n return defaultValue()\n } else {\n @Suppress(\"UNCHECKED_CAST\")\n return value as V\n }\n}\n\n/**\n * Returns the value for the given [key] or throws an exception if there is no such key in the map.\n *\n * If the map was created by [withDefault], resorts to its `defaultValue` provider function\n * instead of throwing an exception.\n *\n * @throws NoSuchElementException when the map doesn't contain a value for the specified key and\n * no implicit default value was provided for that map.\n */\n@SinceKotlin(\"1.1\")\npublic fun Map.getValue(key: K): V = getOrImplicitDefault(key)\n\n/**\n * Returns the value for the given key. If the key is not found in the map, calls the [defaultValue] function,\n * puts its result into the map under the given key and returns it.\n *\n * Note that the operation is not guaranteed to be atomic if the map is being modified concurrently.\n *\n * @sample samples.collections.Maps.Usage.getOrPut\n */\npublic inline fun MutableMap.getOrPut(key: K, defaultValue: () -> V): V {\n val value = get(key)\n return if (value == null) {\n val answer = defaultValue()\n put(key, answer)\n answer\n } else {\n value\n }\n}\n\n/**\n * Returns an [Iterator] over the entries in the [Map].\n *\n * @sample samples.collections.Maps.Usage.forOverEntries\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Map.iterator(): Iterator> = entries.iterator()\n\n/**\n * Returns a [MutableIterator] over the mutable entries in the [MutableMap].\n *\n */\n@kotlin.jvm.JvmName(\"mutableIterator\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.iterator(): MutableIterator> = entries.iterator()\n\n/**\n * Populates the given [destination] map with entries having the keys of this map and the values obtained\n * by applying the [transform] function to each entry in this [Map].\n */\npublic inline fun > Map.mapValuesTo(destination: M, transform: (Map.Entry) -> R): M {\n return entries.associateByTo(destination, { it.key }, transform)\n}\n\n/**\n * Populates the given [destination] map with entries having the keys obtained\n * by applying the [transform] function to each entry in this [Map] and the values of this map.\n *\n * In case if any two entries are mapped to the equal keys, the value of the latter one will overwrite\n * the value associated with the former one.\n */\npublic inline fun > Map.mapKeysTo(destination: M, transform: (Map.Entry) -> R): M {\n return entries.associateByTo(destination, transform, { it.value })\n}\n\n/**\n * Puts all the given [pairs] into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun MutableMap.putAll(pairs: Array>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Puts all the elements of the given collection into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun MutableMap.putAll(pairs: Iterable>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Puts all the elements of the given sequence into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun MutableMap.putAll(pairs: Sequence>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Returns a new map with entries having the keys of this map and the values obtained by applying the [transform]\n * function to each entry in this [Map].\n *\n * The returned map preserves the entry iteration order of the original map.\n *\n * @sample samples.collections.Maps.Transformations.mapValues\n */\npublic inline fun Map.mapValues(transform: (Map.Entry) -> R): Map {\n return mapValuesTo(LinkedHashMap(mapCapacity(size)), transform) // .optimizeReadOnlyMap()\n}\n\n/**\n * Returns a new Map with entries having the keys obtained by applying the [transform] function to each entry in this\n * [Map] and the values of this map.\n *\n * In case if any two entries are mapped to the equal keys, the value of the latter one will overwrite\n * the value associated with the former one.\n *\n * The returned map preserves the entry iteration order of the original map.\n *\n * @sample samples.collections.Maps.Transformations.mapKeys\n */\npublic inline fun Map.mapKeys(transform: (Map.Entry) -> R): Map {\n return mapKeysTo(LinkedHashMap(mapCapacity(size)), transform) // .optimizeReadOnlyMap()\n}\n\n/**\n * Returns a map containing all key-value pairs with keys matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterKeys\n */\npublic inline fun Map.filterKeys(predicate: (K) -> Boolean): Map {\n val result = LinkedHashMap()\n for (entry in this) {\n if (predicate(entry.key)) {\n result.put(entry.key, entry.value)\n }\n }\n return result\n}\n\n/**\n * Returns a map containing all key-value pairs with values matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterValues\n */\npublic inline fun Map.filterValues(predicate: (V) -> Boolean): Map {\n val result = LinkedHashMap()\n for (entry in this) {\n if (predicate(entry.value)) {\n result.put(entry.key, entry.value)\n }\n }\n return result\n}\n\n\n/**\n * Appends all entries matching the given [predicate] into the mutable map given as [destination] parameter.\n *\n * @return the destination map.\n * @sample samples.collections.Maps.Filtering.filterTo\n */\npublic inline fun > Map.filterTo(destination: M, predicate: (Map.Entry) -> Boolean): M {\n for (element in this) {\n if (predicate(element)) {\n destination.put(element.key, element.value)\n }\n }\n return destination\n}\n\n/**\n * Returns a new map containing all key-value pairs matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filter\n */\npublic inline fun Map.filter(predicate: (Map.Entry) -> Boolean): Map {\n return filterTo(LinkedHashMap(), predicate)\n}\n\n/**\n * Appends all entries not matching the given [predicate] into the given [destination].\n *\n * @return the destination map.\n * @sample samples.collections.Maps.Filtering.filterNotTo\n */\npublic inline fun > Map.filterNotTo(destination: M, predicate: (Map.Entry) -> Boolean): M {\n for (element in this) {\n if (!predicate(element)) {\n destination.put(element.key, element.value)\n }\n }\n return destination\n}\n\n/**\n * Returns a new map containing all key-value pairs not matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterNot\n */\npublic inline fun Map.filterNot(predicate: (Map.Entry) -> Boolean): Map {\n return filterNotTo(LinkedHashMap(), predicate)\n}\n\n/**\n * Returns a new map containing all key-value pairs from the given collection of pairs.\n *\n * The returned map preserves the entry iteration order of the original collection.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun Iterable>.toMap(): Map {\n if (this is Collection) {\n return when (size) {\n 0 -> emptyMap()\n 1 -> mapOf(if (this is List) this[0] else iterator().next())\n else -> toMap(LinkedHashMap(mapCapacity(size)))\n }\n }\n return toMap(LinkedHashMap()).optimizeReadOnlyMap()\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given collection of pairs.\n */\npublic fun > Iterable>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new map containing all key-value pairs from the given array of pairs.\n *\n * The returned map preserves the entry iteration order of the original array.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun Array>.toMap(): Map = when (size) {\n 0 -> emptyMap()\n 1 -> mapOf(this[0])\n else -> toMap(LinkedHashMap(mapCapacity(size)))\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given array of pairs.\n */\npublic fun > Array>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new map containing all key-value pairs from the given sequence of pairs.\n *\n * The returned map preserves the entry iteration order of the original sequence.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun Sequence>.toMap(): Map = toMap(LinkedHashMap()).optimizeReadOnlyMap()\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given sequence of pairs.\n */\npublic fun > Sequence>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new read-only map containing all key-value pairs from the original map.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic fun Map.toMap(): Map = when (size) {\n 0 -> emptyMap()\n 1 -> toSingletonMap()\n else -> toMutableMap()\n}\n\n/**\n * Returns a new mutable map containing all key-value pairs from the original map.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic fun Map.toMutableMap(): MutableMap = LinkedHashMap(this)\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given map.\n */\n@SinceKotlin(\"1.1\")\npublic fun > Map.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Creates a new read-only map by replacing or adding an entry to this map from a given key-value [pair].\n *\n * The returned map preserves the entry iteration order of the original map.\n * The [pair] is iterated in the end if it has a unique key.\n */\npublic operator fun Map.plus(pair: Pair): Map =\n if (this.isEmpty()) mapOf(pair) else LinkedHashMap(this).apply { put(pair.first, pair.second) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given collection of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] collection.\n */\npublic operator fun Map.plus(pairs: Iterable>): Map =\n if (this.isEmpty()) pairs.toMap() else LinkedHashMap(this).apply { putAll(pairs) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given array of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] array.\n */\npublic operator fun Map.plus(pairs: Array>): Map =\n if (this.isEmpty()) pairs.toMap() else LinkedHashMap(this).apply { putAll(pairs) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given sequence of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] sequence.\n */\npublic operator fun Map.plus(pairs: Sequence>): Map =\n LinkedHashMap(this).apply { putAll(pairs) }.optimizeReadOnlyMap()\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from another [map].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those entries of another [map] that are missing in this map are iterated in the end in the order of that [map].\n */\npublic operator fun Map.plus(map: Map): Map =\n LinkedHashMap(this).apply { putAll(map) }\n\n\n/**\n * Appends or replaces the given [pair] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pair: Pair) {\n put(pair.first, pair.second)\n}\n\n/**\n * Appends or replaces all pairs from the given collection of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pairs: Iterable>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all pairs from the given array of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pairs: Array>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all pairs from the given sequence of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pairs: Sequence>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all entries from the given [map] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(map: Map) {\n putAll(map)\n}\n\n/**\n * Returns a map containing all entries of the original map except the entry with the given [key].\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(key: K): Map =\n this.toMutableMap().apply { minusAssign(key) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] collection.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(keys: Iterable): Map =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] array.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(keys: Array): Map =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] sequence.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(keys: Sequence): Map =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Removes the entry with the given [key] from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(key: K) {\n remove(key)\n}\n\n/**\n * Removes all entries the keys of which are contained in the given [keys] collection from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(keys: Iterable) {\n this.keys.removeAll(keys)\n}\n\n/**\n * Removes all entries the keys of which are contained in the given [keys] array from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(keys: Array) {\n this.keys.removeAll(keys)\n}\n\n/**\n * Removes all entries from the keys of which are contained in the given [keys] sequence from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(keys: Sequence) {\n this.keys.removeAll(keys)\n}\n\n\n// do not expose for now @PublishedApi\ninternal fun Map.optimizeReadOnlyMap() = when (size) {\n 0 -> emptyMap()\n 1 -> toSingletonMapOrSelf()\n else -> this\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"SetsKt\")\n\npackage kotlin.collections\n\n\ninternal object EmptySet : Set, Serializable {\n private const val serialVersionUID: Long = 3406603774387020532\n\n override fun equals(other: Any?): Boolean = other is Set<*> && other.isEmpty()\n override fun hashCode(): Int = 0\n override fun toString(): String = \"[]\"\n\n override val size: Int get() = 0\n override fun isEmpty(): Boolean = true\n override fun contains(element: Nothing): Boolean = false\n override fun containsAll(elements: Collection): Boolean = elements.isEmpty()\n\n override fun iterator(): Iterator = EmptyIterator\n\n private fun readResolve(): Any = EmptySet\n}\n\n\n/**\n * Returns an empty read-only set. The returned set is serializable (JVM).\n * @sample samples.collections.Collections.Sets.emptyReadOnlySet\n */\npublic fun emptySet(): Set = EmptySet\n\n/**\n * Returns a new read-only set with the given elements.\n * Elements of the set are iterated in the order they were specified.\n * The returned set is serializable (JVM).\n * @sample samples.collections.Collections.Sets.readOnlySet\n */\npublic fun setOf(vararg elements: T): Set = if (elements.size > 0) elements.toSet() else emptySet()\n\n/**\n * Returns an empty read-only set. The returned set is serializable (JVM).\n * @sample samples.collections.Collections.Sets.emptyReadOnlySet\n */\n@kotlin.internal.InlineOnly\npublic inline fun setOf(): Set = emptySet()\n\n/**\n * Returns an empty new [MutableSet].\n *\n * The returned set preserves the element iteration order.\n * @sample samples.collections.Collections.Sets.emptyMutableSet\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun mutableSetOf(): MutableSet = LinkedHashSet()\n\n/**\n * Returns a new [MutableSet] with the given elements.\n * Elements of the set are iterated in the order they were specified.\n * @sample samples.collections.Collections.Sets.mutableSet\n */\npublic fun mutableSetOf(vararg elements: T): MutableSet = elements.toCollection(LinkedHashSet(mapCapacity(elements.size)))\n\n/** Returns an empty new [HashSet]. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun hashSetOf(): HashSet = HashSet()\n\n/** Returns a new [HashSet] with the given elements. */\npublic fun hashSetOf(vararg elements: T): HashSet = elements.toCollection(HashSet(mapCapacity(elements.size)))\n\n/** Returns an empty new [LinkedHashSet]. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun linkedSetOf(): LinkedHashSet = LinkedHashSet()\n\n/**\n * Returns a new [LinkedHashSet] with the given elements.\n * Elements of the set are iterated in the order they were specified.\n */\npublic fun linkedSetOf(vararg elements: T): LinkedHashSet = elements.toCollection(LinkedHashSet(mapCapacity(elements.size)))\n\n/** Returns this Set if it's not `null` and the empty set otherwise. */\n@kotlin.internal.InlineOnly\npublic inline fun Set?.orEmpty(): Set = this ?: emptySet()\n\ninternal fun Set.optimizeReadOnlySet() = when (size) {\n 0 -> emptySet()\n 1 -> setOf(iterator().next())\n else -> this\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n@file:Suppress(\"PLATFORM_CLASS_MAPPED_TO_KOTLIN\")\n\npackage kotlin.text\n\n/**\n * Parses the string as a signed [Byte] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toByteOrNull(): Byte? = toByteOrNull(radix = 10)\n\n/**\n * Parses the string as a signed [Byte] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toByteOrNull(radix: Int): Byte? {\n val int = this.toIntOrNull(radix) ?: return null\n if (int < Byte.MIN_VALUE || int > Byte.MAX_VALUE) return null\n return int.toByte()\n}\n\n/**\n * Parses the string as a [Short] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toShortOrNull(): Short? = toShortOrNull(radix = 10)\n\n/**\n * Parses the string as a [Short] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toShortOrNull(radix: Int): Short? {\n val int = this.toIntOrNull(radix) ?: return null\n if (int < Short.MIN_VALUE || int > Short.MAX_VALUE) return null\n return int.toShort()\n}\n\n/**\n * Parses the string as an [Int] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toIntOrNull(): Int? = toIntOrNull(radix = 10)\n\n/**\n * Parses the string as an [Int] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toIntOrNull(radix: Int): Int? {\n checkRadix(radix)\n\n val length = this.length\n if (length == 0) return null\n\n val start: Int\n val isNegative: Boolean\n val limit: Int\n\n val firstChar = this[0]\n if (firstChar < '0') { // Possible leading sign\n if (length == 1) return null // non-digit (possible sign) only, no digits after\n\n start = 1\n\n if (firstChar == '-') {\n isNegative = true\n limit = Int.MIN_VALUE\n } else if (firstChar == '+') {\n isNegative = false\n limit = -Int.MAX_VALUE\n } else\n return null\n } else {\n start = 0\n isNegative = false\n limit = -Int.MAX_VALUE\n }\n\n\n val limitBeforeMul = limit / radix\n var result = 0\n for (i in start..(length - 1)) {\n val digit = digitOf(this[i], radix)\n\n if (digit < 0) return null\n if (result < limitBeforeMul) return null\n\n result *= radix\n\n if (result < limit + digit) return null\n\n result -= digit\n }\n\n return if (isNegative) result else -result\n}\n\n/**\n * Parses the string as a [Long] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toLongOrNull(): Long? = toLongOrNull(radix = 10)\n\n/**\n * Parses the string as a [Long] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toLongOrNull(radix: Int): Long? {\n checkRadix(radix)\n\n val length = this.length\n if (length == 0) return null\n\n val start: Int\n val isNegative: Boolean\n val limit: Long\n\n val firstChar = this[0]\n if (firstChar < '0') { // Possible leading sign\n if (length == 1) return null // non-digit (possible sign) only, no digits after\n\n start = 1\n\n if (firstChar == '-') {\n isNegative = true\n limit = Long.MIN_VALUE\n } else if (firstChar == '+') {\n isNegative = false\n limit = -Long.MAX_VALUE\n } else\n return null\n } else {\n start = 0\n isNegative = false\n limit = -Long.MAX_VALUE\n }\n\n\n val limitBeforeMul = limit / radix\n var result = 0L\n for (i in start..(length - 1)) {\n val digit = digitOf(this[i], radix)\n\n if (digit < 0) return null\n if (result < limitBeforeMul) return null\n\n result *= radix\n\n if (result < limit + digit) return null\n\n result -= digit\n }\n\n return if (isNegative) result else -result\n}\n\n\ninternal fun numberFormatError(input: String): Nothing = throw NumberFormatException(\"Invalid number format: '$input'\")\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n@file:kotlin.jvm.JvmName(\"UnsignedKt\")\n@file:UseExperimental(ExperimentalUnsignedTypes::class)\npackage kotlin\n\n@PublishedApi\ninternal fun uintCompare(v1: Int, v2: Int): Int = (v1 xor Int.MIN_VALUE).compareTo(v2 xor Int.MIN_VALUE)\n@PublishedApi\ninternal fun ulongCompare(v1: Long, v2: Long): Int = (v1 xor Long.MIN_VALUE).compareTo(v2 xor Long.MIN_VALUE)\n\n@PublishedApi\ninternal fun uintDivide(v1: UInt, v2: UInt): UInt = (v1.toLong() / v2.toLong()).toUInt()\n@PublishedApi\ninternal fun uintRemainder(v1: UInt, v2: UInt): UInt = (v1.toLong() % v2.toLong()).toUInt()\n\n// Division and remainder are based on Guava's UnsignedLongs implementation\n// Copyright 2011 The Guava Authors\n\n@PublishedApi\ninternal fun ulongDivide(v1: ULong, v2: ULong): ULong {\n val dividend = v1.toLong()\n val divisor = v2.toLong()\n if (divisor < 0) { // i.e., divisor >= 2^63:\n return if (v1 < v2) ULong(0) else ULong(1)\n }\n\n // Optimization - use signed division if both dividend and divisor < 2^63\n if (dividend >= 0) {\n return ULong(dividend / divisor)\n }\n\n // Otherwise, approximate the quotient, check, and correct if necessary.\n val quotient = ((dividend ushr 1) / divisor) shl 1\n val rem = dividend - quotient * divisor\n return ULong(quotient + if (ULong(rem) >= ULong(divisor)) 1 else 0)\n\n}\n\n@PublishedApi\ninternal fun ulongRemainder(v1: ULong, v2: ULong): ULong {\n val dividend = v1.toLong()\n val divisor = v2.toLong()\n if (divisor < 0) { // i.e., divisor >= 2^63:\n return if (v1 < v2) {\n v1 // dividend < divisor\n } else {\n v1 - v2 // dividend >= divisor\n }\n }\n\n // Optimization - use signed modulus if both dividend and divisor < 2^63\n if (dividend >= 0) {\n return ULong(dividend % divisor)\n }\n\n // Otherwise, approximate the quotient, check, and correct if necessary.\n val quotient = ((dividend ushr 1) / divisor) shl 1\n val rem = dividend - quotient * divisor\n return ULong(rem - if (ULong(rem) >= ULong(divisor)) divisor else 0)\n}\n\n@PublishedApi\ninternal fun doubleToUInt(v: Double): UInt = when {\n v.isNaN() -> 0u\n v <= UInt.MIN_VALUE.toDouble() -> UInt.MIN_VALUE\n v >= UInt.MAX_VALUE.toDouble() -> UInt.MAX_VALUE\n v <= Int.MAX_VALUE -> v.toInt().toUInt()\n else -> (v - Int.MAX_VALUE).toInt().toUInt() + Int.MAX_VALUE.toUInt() // Int.MAX_VALUE < v < UInt.MAX_VALUE\n}\n\n@PublishedApi\ninternal fun doubleToULong(v: Double): ULong = when {\n v.isNaN() -> 0u\n v <= ULong.MIN_VALUE.toDouble() -> ULong.MIN_VALUE\n v >= ULong.MAX_VALUE.toDouble() -> ULong.MAX_VALUE\n v < Long.MAX_VALUE -> v.toLong().toULong()\n\n // Real values from Long.MAX_VALUE to (Long.MAX_VALUE + 1) are not representable in Double, so don't handle them.\n else -> (v - 9223372036854775808.0).toLong().toULong() + 9223372036854775808uL // Long.MAX_VALUE + 1 < v < ULong.MAX_VALUE\n}\n\n\n@PublishedApi\ninternal fun uintToDouble(v: Int): Double = (v and Int.MAX_VALUE).toDouble() + (v ushr 31 shl 30).toDouble() * 2\n\n@PublishedApi\ninternal fun ulongToDouble(v: Long): Double = (v ushr 11).toDouble() * 2048 + (v and 2047)\n\n\ninternal fun ulongToString(v: Long): String = ulongToString(v, 10)\n\ninternal fun ulongToString(v: Long, base: Int): String {\n if (v >= 0) return v.toString(base)\n\n var quotient = ((v ushr 1) / base) shl 1\n var rem = v - quotient * base\n if (rem >= base) {\n rem -= base\n quotient += 1\n }\n return quotient.toString(base) + rem.toString(base)\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\n/**\n * Given an [iterator] function constructs an [Iterable] instance that returns values through the [Iterator]\n * provided by that function.\n * @sample samples.collections.Iterables.Building.iterable\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable(crossinline iterator: () -> Iterator): Iterable = object : Iterable {\n override fun iterator(): Iterator = iterator()\n}\n\n/**\n * A wrapper over another [Iterable] (or any other object that can produce an [Iterator]) that returns\n * an indexing iterator.\n */\ninternal class IndexingIterable(private val iteratorFactory: () -> Iterator) : Iterable> {\n override fun iterator(): Iterator> = IndexingIterator(iteratorFactory())\n}\n\n\n/**\n * Returns the size of this iterable if it is known, or `null` otherwise.\n */\n@PublishedApi\ninternal fun Iterable.collectionSizeOrNull(): Int? = if (this is Collection<*>) this.size else null\n\n/**\n * Returns the size of this iterable if it is known, or the specified [default] value otherwise.\n */\n@PublishedApi\ninternal fun Iterable.collectionSizeOrDefault(default: Int): Int = if (this is Collection<*>) this.size else default\n\n/** Returns true when it's safe to convert this collection to a set without changing contains method behavior. */\nprivate fun Collection.safeToConvertToSet() = size > 2 && this is ArrayList\n\n/** Converts this collection to a set, when it's worth so and it doesn't change contains method behavior. */\ninternal fun Iterable.convertToSetForSetOperationWith(source: Iterable): Collection =\n when (this) {\n is Set -> this\n is Collection ->\n when {\n source is Collection && source.size < 2 -> this\n else -> if (this.safeToConvertToSet()) toHashSet() else this\n }\n else -> toHashSet()\n }\n\n/** Converts this collection to a set, when it's worth so and it doesn't change contains method behavior. */\ninternal fun Iterable.convertToSetForSetOperation(): Collection =\n when (this) {\n is Set -> this\n is Collection -> if (this.safeToConvertToSet()) toHashSet() else this\n else -> toHashSet()\n }\n\n\n/**\n * Returns a single list of all elements from all collections in the given collection.\n * @sample samples.collections.Iterables.Operations.flattenIterable\n */\npublic fun Iterable>.flatten(): List {\n val result = ArrayList()\n for (element in this) {\n result.addAll(element)\n }\n return result\n}\n\n/**\n * Returns a pair of lists, where\n * *first* list is built from the first values of each pair from this collection,\n * *second* list is built from the second values of each pair from this collection.\n * @sample samples.collections.Iterables.Operations.unzipIterable\n */\npublic fun Iterable>.unzip(): Pair, List> {\n val expectedSize = collectionSizeOrDefault(10)\n val listT = ArrayList(expectedSize)\n val listR = ArrayList(expectedSize)\n for (pair in this) {\n listT.add(pair.first)\n listR.add(pair.second)\n }\n return listT to listR\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"SequencesKt\")\n\npackage kotlin.sequences\n\n/**\n * Given an [iterator] function constructs a [Sequence] that returns values through the [Iterator]\n * provided by that function.\n * The values are evaluated lazily, and the sequence is potentially infinite.\n *\n * @sample samples.collections.Sequences.Building.sequenceFromIterator\n */\n@kotlin.internal.InlineOnly\npublic inline fun Sequence(crossinline iterator: () -> Iterator): Sequence = object : Sequence {\n override fun iterator(): Iterator = iterator()\n}\n\n/**\n * Creates a sequence that returns all elements from this iterator. The sequence is constrained to be iterated only once.\n *\n * @sample samples.collections.Sequences.Building.sequenceFromIterator\n */\npublic fun Iterator.asSequence(): Sequence = Sequence { this }.constrainOnce()\n\n/**\n * Creates a sequence that returns the specified values.\n *\n * @sample samples.collections.Sequences.Building.sequenceOfValues\n */\npublic fun sequenceOf(vararg elements: T): Sequence = if (elements.isEmpty()) emptySequence() else elements.asSequence()\n\n/**\n * Returns an empty sequence.\n */\npublic fun emptySequence(): Sequence = EmptySequence\n\nprivate object EmptySequence : Sequence, DropTakeSequence {\n override fun iterator(): Iterator = EmptyIterator\n override fun drop(n: Int) = EmptySequence\n override fun take(n: Int) = EmptySequence\n}\n\n/**\n * Returns this sequence if it's not `null` and the empty sequence otherwise.\n * @sample samples.collections.Sequences.Usage.sequenceOrEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Sequence?.orEmpty(): Sequence = this ?: emptySequence()\n\n\n/**\n * Returns a sequence that iterates through the elements either of this sequence\n * or, if this sequence turns out to be empty, of the sequence returned by [defaultValue] function.\n *\n * @sample samples.collections.Sequences.Usage.sequenceIfEmpty\n */\n@SinceKotlin(\"1.3\")\npublic fun Sequence.ifEmpty(defaultValue: () -> Sequence): Sequence = sequence {\n val iterator = this@ifEmpty.iterator()\n if (iterator.hasNext()) {\n yieldAll(iterator)\n } else {\n yieldAll(defaultValue())\n }\n}\n\n/**\n * Returns a sequence of all elements from all sequences in this sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence>.flatten(): Sequence = flatten { it.iterator() }\n\n/**\n * Returns a sequence of all elements from all iterables in this sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n */\n@kotlin.jvm.JvmName(\"flattenSequenceOfIterable\")\npublic fun Sequence>.flatten(): Sequence = flatten { it.iterator() }\n\nprivate fun Sequence.flatten(iterator: (T) -> Iterator): Sequence {\n if (this is TransformingSequence<*, *>) {\n return (this as TransformingSequence<*, T>).flatten(iterator)\n }\n return FlatteningSequence(this, { it }, iterator)\n}\n\n/**\n * Returns a pair of lists, where\n * *first* list is built from the first values of each pair from this sequence,\n * *second* list is built from the second values of each pair from this sequence.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence>.unzip(): Pair, List> {\n val listT = ArrayList()\n val listR = ArrayList()\n for (pair in this) {\n listT.add(pair.first)\n listR.add(pair.second)\n }\n return listT to listR\n}\n\n/**\n * A sequence that returns the values from the underlying [sequence] that either match or do not match\n * the specified [predicate].\n *\n * @param sendWhen If `true`, values for which the predicate returns `true` are returned. Otherwise,\n * values for which the predicate returns `false` are returned\n */\ninternal class FilteringSequence(\n private val sequence: Sequence,\n private val sendWhen: Boolean = true,\n private val predicate: (T) -> Boolean\n) : Sequence {\n\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var nextState: Int = -1 // -1 for unknown, 0 for done, 1 for continue\n var nextItem: T? = null\n\n private fun calcNext() {\n while (iterator.hasNext()) {\n val item = iterator.next()\n if (predicate(item) == sendWhen) {\n nextItem = item\n nextState = 1\n return\n }\n }\n nextState = 0\n }\n\n override fun next(): T {\n if (nextState == -1)\n calcNext()\n if (nextState == 0)\n throw NoSuchElementException()\n val result = nextItem\n nextItem = null\n nextState = -1\n @Suppress(\"UNCHECKED_CAST\")\n return result as T\n }\n\n override fun hasNext(): Boolean {\n if (nextState == -1)\n calcNext()\n return nextState == 1\n }\n }\n}\n\n/**\n * A sequence which returns the results of applying the given [transformer] function to the values\n * in the underlying [sequence].\n */\n\ninternal class TransformingSequence\nconstructor(private val sequence: Sequence, private val transformer: (T) -> R) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n override fun next(): R {\n return transformer(iterator.next())\n }\n\n override fun hasNext(): Boolean {\n return iterator.hasNext()\n }\n }\n\n internal fun flatten(iterator: (R) -> Iterator): Sequence {\n return FlatteningSequence(sequence, transformer, iterator)\n }\n}\n\n/**\n * A sequence which returns the results of applying the given [transformer] function to the values\n * in the underlying [sequence], where the transformer function takes the index of the value in the underlying\n * sequence along with the value itself.\n */\ninternal class TransformingIndexedSequence\nconstructor(private val sequence: Sequence, private val transformer: (Int, T) -> R) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var index = 0\n override fun next(): R {\n return transformer(checkIndexOverflow(index++), iterator.next())\n }\n\n override fun hasNext(): Boolean {\n return iterator.hasNext()\n }\n }\n}\n\n/**\n * A sequence which combines values from the underlying [sequence] with their indices and returns them as\n * [IndexedValue] objects.\n */\ninternal class IndexingSequence\nconstructor(private val sequence: Sequence) : Sequence> {\n override fun iterator(): Iterator> = object : Iterator> {\n val iterator = sequence.iterator()\n var index = 0\n override fun next(): IndexedValue {\n return IndexedValue(checkIndexOverflow(index++), iterator.next())\n }\n\n override fun hasNext(): Boolean {\n return iterator.hasNext()\n }\n }\n}\n\n/**\n * A sequence which takes the values from two parallel underlying sequences, passes them to the given\n * [transform] function and returns the values returned by that function. The sequence stops returning\n * values as soon as one of the underlying sequences stops returning values.\n */\ninternal class MergingSequence\nconstructor(\n private val sequence1: Sequence,\n private val sequence2: Sequence,\n private val transform: (T1, T2) -> V\n) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n val iterator1 = sequence1.iterator()\n val iterator2 = sequence2.iterator()\n override fun next(): V {\n return transform(iterator1.next(), iterator2.next())\n }\n\n override fun hasNext(): Boolean {\n return iterator1.hasNext() && iterator2.hasNext()\n }\n }\n}\n\ninternal class FlatteningSequence\nconstructor(\n private val sequence: Sequence,\n private val transformer: (T) -> R,\n private val iterator: (R) -> Iterator\n) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var itemIterator: Iterator? = null\n\n override fun next(): E {\n if (!ensureItemIterator())\n throw NoSuchElementException()\n return itemIterator!!.next()\n }\n\n override fun hasNext(): Boolean {\n return ensureItemIterator()\n }\n\n private fun ensureItemIterator(): Boolean {\n if (itemIterator?.hasNext() == false)\n itemIterator = null\n\n while (itemIterator == null) {\n if (!iterator.hasNext()) {\n return false\n } else {\n val element = iterator.next()\n val nextItemIterator = iterator(transformer(element))\n if (nextItemIterator.hasNext()) {\n itemIterator = nextItemIterator\n return true\n }\n }\n }\n return true\n }\n }\n}\n\n/**\n * A sequence that supports drop(n) and take(n) operations\n */\ninternal interface DropTakeSequence : Sequence {\n fun drop(n: Int): Sequence\n fun take(n: Int): Sequence\n}\n\n/**\n * A sequence that skips [startIndex] values from the underlying [sequence]\n * and stops returning values right before [endIndex], i.e. stops at `endIndex - 1`\n */\ninternal class SubSequence(\n private val sequence: Sequence,\n private val startIndex: Int,\n private val endIndex: Int\n) : Sequence, DropTakeSequence {\n\n init {\n require(startIndex >= 0) { \"startIndex should be non-negative, but is $startIndex\" }\n require(endIndex >= 0) { \"endIndex should be non-negative, but is $endIndex\" }\n require(endIndex >= startIndex) { \"endIndex should be not less than startIndex, but was $endIndex < $startIndex\" }\n }\n\n private val count: Int get() = endIndex - startIndex\n\n override fun drop(n: Int): Sequence = if (n >= count) emptySequence() else SubSequence(sequence, startIndex + n, endIndex)\n override fun take(n: Int): Sequence = if (n >= count) this else SubSequence(sequence, startIndex, startIndex + n)\n\n override fun iterator() = object : Iterator {\n\n val iterator = sequence.iterator()\n var position = 0\n\n // Shouldn't be called from constructor to avoid premature iteration\n private fun drop() {\n while (position < startIndex && iterator.hasNext()) {\n iterator.next()\n position++\n }\n }\n\n override fun hasNext(): Boolean {\n drop()\n return (position < endIndex) && iterator.hasNext()\n }\n\n override fun next(): T {\n drop()\n if (position >= endIndex)\n throw NoSuchElementException()\n position++\n return iterator.next()\n }\n }\n}\n\n/**\n * A sequence that returns at most [count] values from the underlying [sequence], and stops returning values\n * as soon as that count is reached.\n */\ninternal class TakeSequence(\n private val sequence: Sequence,\n private val count: Int\n) : Sequence, DropTakeSequence {\n\n init {\n require(count >= 0) { \"count must be non-negative, but was $count.\" }\n }\n\n override fun drop(n: Int): Sequence = if (n >= count) emptySequence() else SubSequence(sequence, n, count)\n override fun take(n: Int): Sequence = if (n >= count) this else TakeSequence(sequence, n)\n\n override fun iterator(): Iterator = object : Iterator {\n var left = count\n val iterator = sequence.iterator()\n\n override fun next(): T {\n if (left == 0)\n throw NoSuchElementException()\n left--\n return iterator.next()\n }\n\n override fun hasNext(): Boolean {\n return left > 0 && iterator.hasNext()\n }\n }\n}\n\n/**\n * A sequence that returns values from the underlying [sequence] while the [predicate] function returns\n * `true`, and stops returning values once the function returns `false` for the next element.\n */\ninternal class TakeWhileSequence\nconstructor(\n private val sequence: Sequence,\n private val predicate: (T) -> Boolean\n) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var nextState: Int = -1 // -1 for unknown, 0 for done, 1 for continue\n var nextItem: T? = null\n\n private fun calcNext() {\n if (iterator.hasNext()) {\n val item = iterator.next()\n if (predicate(item)) {\n nextState = 1\n nextItem = item\n return\n }\n }\n nextState = 0\n }\n\n override fun next(): T {\n if (nextState == -1)\n calcNext() // will change nextState\n if (nextState == 0)\n throw NoSuchElementException()\n @Suppress(\"UNCHECKED_CAST\")\n val result = nextItem as T\n\n // Clean next to avoid keeping reference on yielded instance\n nextItem = null\n nextState = -1\n return result\n }\n\n override fun hasNext(): Boolean {\n if (nextState == -1)\n calcNext() // will change nextState\n return nextState == 1\n }\n }\n}\n\n/**\n * A sequence that skips the specified number of values from the underlying [sequence] and returns\n * all values after that.\n */\ninternal class DropSequence(\n private val sequence: Sequence,\n private val count: Int\n) : Sequence, DropTakeSequence {\n init {\n require(count >= 0) { \"count must be non-negative, but was $count.\" }\n }\n\n override fun drop(n: Int): Sequence = (count + n).let { n1 -> if (n1 < 0) DropSequence(this, n) else DropSequence(sequence, n1) }\n override fun take(n: Int): Sequence = (count + n).let { n1 -> if (n1 < 0) TakeSequence(this, n) else SubSequence(sequence, count, n1) }\n\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var left = count\n\n // Shouldn't be called from constructor to avoid premature iteration\n private fun drop() {\n while (left > 0 && iterator.hasNext()) {\n iterator.next()\n left--\n }\n }\n\n override fun next(): T {\n drop()\n return iterator.next()\n }\n\n override fun hasNext(): Boolean {\n drop()\n return iterator.hasNext()\n }\n }\n}\n\n/**\n * A sequence that skips the values from the underlying [sequence] while the given [predicate] returns `true` and returns\n * all values after that.\n */\ninternal class DropWhileSequence\nconstructor(\n private val sequence: Sequence,\n private val predicate: (T) -> Boolean\n) : Sequence {\n\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var dropState: Int = -1 // -1 for not dropping, 1 for nextItem, 0 for normal iteration\n var nextItem: T? = null\n\n private fun drop() {\n while (iterator.hasNext()) {\n val item = iterator.next()\n if (!predicate(item)) {\n nextItem = item\n dropState = 1\n return\n }\n }\n dropState = 0\n }\n\n override fun next(): T {\n if (dropState == -1)\n drop()\n\n if (dropState == 1) {\n @Suppress(\"UNCHECKED_CAST\")\n val result = nextItem as T\n nextItem = null\n dropState = 0\n return result\n }\n return iterator.next()\n }\n\n override fun hasNext(): Boolean {\n if (dropState == -1)\n drop()\n return dropState == 1 || iterator.hasNext()\n }\n }\n}\n\ninternal class DistinctSequence(private val source: Sequence, private val keySelector: (T) -> K) : Sequence {\n override fun iterator(): Iterator = DistinctIterator(source.iterator(), keySelector)\n}\n\nprivate class DistinctIterator(private val source: Iterator, private val keySelector: (T) -> K) : AbstractIterator() {\n private val observed = HashSet()\n\n override fun computeNext() {\n while (source.hasNext()) {\n val next = source.next()\n val key = keySelector(next)\n\n if (observed.add(key)) {\n setNext(next)\n return\n }\n }\n\n done()\n }\n}\n\n\nprivate class GeneratorSequence(private val getInitialValue: () -> T?, private val getNextValue: (T) -> T?) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n var nextItem: T? = null\n var nextState: Int = -2 // -2 for initial unknown, -1 for next unknown, 0 for done, 1 for continue\n\n private fun calcNext() {\n nextItem = if (nextState == -2) getInitialValue() else getNextValue(nextItem!!)\n nextState = if (nextItem == null) 0 else 1\n }\n\n override fun next(): T {\n if (nextState < 0)\n calcNext()\n\n if (nextState == 0)\n throw NoSuchElementException()\n val result = nextItem as T\n // Do not clean nextItem (to avoid keeping reference on yielded instance) -- need to keep state for getNextValue\n nextState = -1\n return result\n }\n\n override fun hasNext(): Boolean {\n if (nextState < 0)\n calcNext()\n return nextState == 1\n }\n }\n}\n\n/**\n * Returns a wrapper sequence that provides values of this sequence, but ensures it can be iterated only one time.\n *\n * The operation is _intermediate_ and _stateless_.\n *\n * [IllegalStateException] is thrown on iterating the returned sequence from the second time.\n *\n */\npublic fun Sequence.constrainOnce(): Sequence {\n // as? does not work in js\n //return this as? ConstrainedOnceSequence ?: ConstrainedOnceSequence(this)\n return if (this is ConstrainedOnceSequence) this else ConstrainedOnceSequence(this)\n}\n\n\n/**\n * Returns a sequence which invokes the function to calculate the next value on each iteration until the function returns `null`.\n *\n * The returned sequence is constrained to be iterated only once.\n *\n * @see constrainOnce\n * @see kotlin.sequences.sequence\n *\n * @sample samples.collections.Sequences.Building.generateSequence\n */\npublic fun generateSequence(nextFunction: () -> T?): Sequence {\n return GeneratorSequence(nextFunction, { nextFunction() }).constrainOnce()\n}\n\n/**\n * Returns a sequence defined by the starting value [seed] and the function [nextFunction],\n * which is invoked to calculate the next value based on the previous one on each iteration.\n *\n * The sequence produces values until it encounters first `null` value.\n * If [seed] is `null`, an empty sequence is produced.\n *\n * The sequence can be iterated multiple times, each time starting with [seed].\n *\n * @see kotlin.sequences.sequence\n *\n * @sample samples.collections.Sequences.Building.generateSequenceWithSeed\n */\n@kotlin.internal.LowPriorityInOverloadResolution\npublic fun generateSequence(seed: T?, nextFunction: (T) -> T?): Sequence =\n if (seed == null)\n EmptySequence\n else\n GeneratorSequence({ seed }, nextFunction)\n\n/**\n * Returns a sequence defined by the function [seedFunction], which is invoked to produce the starting value,\n * and the [nextFunction], which is invoked to calculate the next value based on the previous one on each iteration.\n *\n * The sequence produces values until it encounters first `null` value.\n * If [seedFunction] returns `null`, an empty sequence is produced.\n *\n * The sequence can be iterated multiple times.\n *\n * @see kotlin.sequences.sequence\n *\n * @sample samples.collections.Sequences.Building.generateSequenceWithLazySeed\n */\npublic fun generateSequence(seedFunction: () -> T?, nextFunction: (T) -> T?): Sequence =\n GeneratorSequence(seedFunction, nextFunction)\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"PreconditionsKt\")\n\npackage kotlin\n\nimport kotlin.contracts.contract\n\n/**\n * Throws an [IllegalArgumentException] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failRequireWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun require(value: Boolean): Unit {\n contract {\n returns() implies value\n }\n require(value) { \"Failed requirement.\" }\n}\n\n/**\n * Throws an [IllegalArgumentException] with the result of calling [lazyMessage] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failRequireWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun require(value: Boolean, lazyMessage: () -> Any): Unit {\n contract {\n returns() implies value\n }\n if (!value) {\n val message = lazyMessage()\n throw IllegalArgumentException(message.toString())\n }\n}\n\n/**\n * Throws an [IllegalArgumentException] if the [value] is null. Otherwise returns the not null value.\n */\n@kotlin.internal.InlineOnly\npublic inline fun requireNotNull(value: T?): T {\n contract {\n returns() implies (value != null)\n }\n return requireNotNull(value) { \"Required value was null.\" }\n}\n\n/**\n * Throws an [IllegalArgumentException] with the result of calling [lazyMessage] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failRequireWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun requireNotNull(value: T?, lazyMessage: () -> Any): T {\n contract {\n returns() implies (value != null)\n }\n\n if (value == null) {\n val message = lazyMessage()\n throw IllegalArgumentException(message.toString())\n } else {\n return value\n }\n}\n\n/**\n * Throws an [IllegalStateException] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun check(value: Boolean): Unit {\n contract {\n returns() implies value\n }\n check(value) { \"Check failed.\" }\n}\n\n/**\n * Throws an [IllegalStateException] with the result of calling [lazyMessage] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun check(value: Boolean, lazyMessage: () -> Any): Unit {\n contract {\n returns() implies value\n }\n if (!value) {\n val message = lazyMessage()\n throw IllegalStateException(message.toString())\n }\n}\n\n/**\n * Throws an [IllegalStateException] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun checkNotNull(value: T?): T {\n contract {\n returns() implies (value != null)\n }\n return checkNotNull(value) { \"Required value was null.\" }\n}\n\n/**\n * Throws an [IllegalStateException] with the result of calling [lazyMessage] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun checkNotNull(value: T?, lazyMessage: () -> Any): T {\n contract {\n returns() implies (value != null)\n }\n\n if (value == null) {\n val message = lazyMessage()\n throw IllegalStateException(message.toString())\n } else {\n return value\n }\n}\n\n\n/**\n * Throws an [IllegalStateException] with the given [message].\n *\n * @sample samples.misc.Preconditions.failWithError\n */\n@kotlin.internal.InlineOnly\npublic inline fun error(message: Any): Nothing = throw IllegalStateException(message.toString())\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.js.*\nimport primitiveArrayConcat\nimport withType\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun Array.elementAt(index: Int): T {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun ByteArray.elementAt(index: Int): Byte {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun ShortArray.elementAt(index: Int): Short {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun IntArray.elementAt(index: Int): Int {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun LongArray.elementAt(index: Int): Long {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun FloatArray.elementAt(index: Int): Float {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun DoubleArray.elementAt(index: Int): Double {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun BooleanArray.elementAt(index: Int): Boolean {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun CharArray.elementAt(index: Int): Char {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic actual fun Array.asList(): List {\n return ArrayList(this.unsafeCast>())\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun ByteArray.asList(): List {\n return this.unsafeCast>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun ShortArray.asList(): List {\n return this.unsafeCast>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun IntArray.asList(): List {\n return this.unsafeCast>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun LongArray.asList(): List {\n return this.unsafeCast>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun FloatArray.asList(): List {\n return this.unsafeCast>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun DoubleArray.asList(): List {\n return this.unsafeCast>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun BooleanArray.asList(): List {\n return this.unsafeCast>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic actual fun CharArray.asList(): List {\n return object : AbstractList(), RandomAccess {\n override val size: Int get() = this@asList.size\n override fun isEmpty(): Boolean = this@asList.isEmpty()\n override fun contains(element: Char): Boolean = this@asList.contains(element)\n override fun get(index: Int): Char {\n AbstractList.checkElementIndex(index, size)\n return this@asList[index]\n }\n override fun indexOf(element: Char): Int {\n if ((element as Any?) !is Char) return -1\n return this@asList.indexOf(element)\n }\n override fun lastIndexOf(element: Char): Int {\n if ((element as Any?) !is Char) return -1\n return this@asList.lastIndexOf(element)\n }\n }\n}\n\n/**\n * Returns `true` if the two specified arrays are *deeply* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * If two corresponding elements are nested arrays, they are also compared deeply.\n * If any of arrays contains itself on any nesting level the behavior is undefined.\n * \n * The elements of other types are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayDeepEquals\")\npublic actual infix fun Array.contentDeepEquals(other: Array): Boolean {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level the behavior is undefined.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayDeepHashCode\")\npublic actual fun Array.contentDeepHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of this array as if it is a [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level that reference\n * is rendered as `\"[...]\"` to prevent recursion.\n * \n * @sample samples.collections.Arrays.ContentOperations.contentDeepToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayDeepToString\")\npublic actual fun Array.contentDeepToString(): String {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun Array.contentEquals(other: Array): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun ByteArray.contentEquals(other: ByteArray): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun ShortArray.contentEquals(other: ShortArray): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun IntArray.contentEquals(other: IntArray): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun LongArray.contentEquals(other: LongArray): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun FloatArray.contentEquals(other: FloatArray): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun DoubleArray.contentEquals(other: DoubleArray): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun BooleanArray.contentEquals(other: BooleanArray): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun CharArray.contentEquals(other: CharArray): Boolean {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun Array.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun ByteArray.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun ShortArray.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun IntArray.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun LongArray.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun FloatArray.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun DoubleArray.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun BooleanArray.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun CharArray.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun Array.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun ByteArray.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun ShortArray.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun IntArray.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun LongArray.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun FloatArray.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun DoubleArray.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun BooleanArray.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun CharArray.contentToString(): String {\n definedExternally\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun Array.copyInto(destination: Array, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): Array {\n arrayCopy(this, destination, destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun ByteArray.copyInto(destination: ByteArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ByteArray {\n arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun ShortArray.copyInto(destination: ShortArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ShortArray {\n arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun IntArray.copyInto(destination: IntArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): IntArray {\n arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun LongArray.copyInto(destination: LongArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): LongArray {\n arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun FloatArray.copyInto(destination: FloatArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): FloatArray {\n arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun DoubleArray.copyInto(destination: DoubleArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): DoubleArray {\n arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun BooleanArray.copyInto(destination: BooleanArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): BooleanArray {\n arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun CharArray.copyInto(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): CharArray {\n arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\", \"NOTHING_TO_INLINE\")\npublic actual inline fun Array.copyOf(): Array {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun ByteArray.copyOf(): ByteArray {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun ShortArray.copyOf(): ShortArray {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun IntArray.copyOf(): IntArray {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic actual fun LongArray.copyOf(): LongArray {\n return withType(\"LongArray\", this.asDynamic().slice())\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun FloatArray.copyOf(): FloatArray {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun DoubleArray.copyOf(): DoubleArray {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic actual fun BooleanArray.copyOf(): BooleanArray {\n return withType(\"BooleanArray\", this.asDynamic().slice())\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic actual fun CharArray.copyOf(): CharArray {\n return withType(\"CharArray\", this.asDynamic().slice())\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun ByteArray.copyOf(newSize: Int): ByteArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return fillFrom(this, ByteArray(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun ShortArray.copyOf(newSize: Int): ShortArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return fillFrom(this, ShortArray(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun IntArray.copyOf(newSize: Int): IntArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return fillFrom(this, IntArray(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun LongArray.copyOf(newSize: Int): LongArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return withType(\"LongArray\", arrayCopyResize(this, newSize, 0L))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun FloatArray.copyOf(newSize: Int): FloatArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return fillFrom(this, FloatArray(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun DoubleArray.copyOf(newSize: Int): DoubleArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return fillFrom(this, DoubleArray(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with `false` values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `false` values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun BooleanArray.copyOf(newSize: Int): BooleanArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return withType(\"BooleanArray\", arrayCopyResize(this, newSize, false))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with null char (`\\u0000`) values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with null char (`\\u0000`) values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun CharArray.copyOf(newSize: Int): CharArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return withType(\"CharArray\", fillFrom(this, CharArray(newSize)))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with `null` values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `null` values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizingCopyOf\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\")\npublic actual fun Array.copyOf(newSize: Int): Array {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return arrayCopyResize(this, newSize, null)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\")\npublic actual fun Array.copyOfRange(fromIndex: Int, toIndex: Int): Array {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic actual fun ByteArray.copyOfRange(fromIndex: Int, toIndex: Int): ByteArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic actual fun ShortArray.copyOfRange(fromIndex: Int, toIndex: Int): ShortArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic actual fun IntArray.copyOfRange(fromIndex: Int, toIndex: Int): IntArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic actual fun LongArray.copyOfRange(fromIndex: Int, toIndex: Int): LongArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return withType(\"LongArray\", this.asDynamic().slice(fromIndex, toIndex))\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic actual fun FloatArray.copyOfRange(fromIndex: Int, toIndex: Int): FloatArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic actual fun DoubleArray.copyOfRange(fromIndex: Int, toIndex: Int): DoubleArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic actual fun BooleanArray.copyOfRange(fromIndex: Int, toIndex: Int): BooleanArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return withType(\"BooleanArray\", this.asDynamic().slice(fromIndex, toIndex))\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic actual fun CharArray.copyOfRange(fromIndex: Int, toIndex: Int): CharArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return withType(\"CharArray\", this.asDynamic().slice(fromIndex, toIndex))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\", \"NOTHING_TO_INLINE\")\npublic actual inline operator fun Array.plus(element: T): Array {\n return this.asDynamic().concat(arrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun ByteArray.plus(element: Byte): ByteArray {\n return plus(byteArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun ShortArray.plus(element: Short): ShortArray {\n return plus(shortArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun IntArray.plus(element: Int): IntArray {\n return plus(intArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun LongArray.plus(element: Long): LongArray {\n return plus(longArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun FloatArray.plus(element: Float): FloatArray {\n return plus(floatArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun DoubleArray.plus(element: Double): DoubleArray {\n return plus(doubleArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun BooleanArray.plus(element: Boolean): BooleanArray {\n return plus(booleanArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun CharArray.plus(element: Char): CharArray {\n return plus(charArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\")\npublic actual operator fun Array.plus(elements: Collection): Array {\n return arrayPlusCollection(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun ByteArray.plus(elements: Collection): ByteArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun ShortArray.plus(elements: Collection): ShortArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun IntArray.plus(elements: Collection): IntArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun LongArray.plus(elements: Collection): LongArray {\n return arrayPlusCollection(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun FloatArray.plus(elements: Collection): FloatArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun DoubleArray.plus(elements: Collection): DoubleArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun BooleanArray.plus(elements: Collection): BooleanArray {\n return arrayPlusCollection(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun CharArray.plus(elements: Collection): CharArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\", \"NOTHING_TO_INLINE\")\npublic actual inline operator fun Array.plus(elements: Array): Array {\n return this.asDynamic().concat(elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun ByteArray.plus(elements: ByteArray): ByteArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun ShortArray.plus(elements: ShortArray): ShortArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun IntArray.plus(elements: IntArray): IntArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun LongArray.plus(elements: LongArray): LongArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun FloatArray.plus(elements: FloatArray): FloatArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun DoubleArray.plus(elements: DoubleArray): DoubleArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun BooleanArray.plus(elements: BooleanArray): BooleanArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun CharArray.plus(elements: CharArray): CharArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\", \"NOTHING_TO_INLINE\")\npublic actual inline fun Array.plusElement(element: T): Array {\n return this.asDynamic().concat(arrayOf(element))\n}\n\n/**\n * Sorts the array in-place.\n */\n@library(\"primitiveArraySort\")\npublic actual fun IntArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place.\n */\npublic actual fun LongArray.sort(): Unit {\n if (size > 1) sort { a: Long, b: Long -> a.compareTo(b) }\n}\n\n/**\n * Sorts the array in-place.\n */\n@library(\"primitiveArraySort\")\npublic actual fun ByteArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place.\n */\n@library(\"primitiveArraySort\")\npublic actual fun ShortArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place.\n */\n@library(\"primitiveArraySort\")\npublic actual fun DoubleArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place.\n */\n@library(\"primitiveArraySort\")\npublic actual fun FloatArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place.\n */\n@library(\"primitiveArraySort\")\npublic actual fun CharArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place according to the natural order of its elements.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic actual fun > Array.sort(): Unit {\n if (size > 1) sortArray(this)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun Array.sort(comparison: (a: T, b: T) -> Int): Unit {\n if (size > 1) sortArrayWith(this, comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.sort(noinline comparison: (a: Byte, b: Byte) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.sort(noinline comparison: (a: Short, b: Short) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.sort(noinline comparison: (a: Int, b: Int) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.sort(noinline comparison: (a: Long, b: Long) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.sort(noinline comparison: (a: Float, b: Float) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.sort(noinline comparison: (a: Double, b: Double) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.sort(noinline comparison: (a: Char, b: Char) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic actual fun Array.sortWith(comparator: Comparator): Unit {\n if (size > 1) sortArrayWith(this, comparator)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun ByteArray.toTypedArray(): Array {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun ShortArray.toTypedArray(): Array {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun IntArray.toTypedArray(): Array {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun LongArray.toTypedArray(): Array {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun FloatArray.toTypedArray(): Array {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun DoubleArray.toTypedArray(): Array {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun BooleanArray.toTypedArray(): Array {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun CharArray.toTypedArray(): Array {\n return Array(size) { index -> this[index] }\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n@file:kotlin.jvm.JvmName(\"ComparisonsKt\")\n@file:kotlin.jvm.JvmMultifileClass\n\npackage kotlin.comparisons\n\n/**\n * Compares two values using the specified functions [selectors] to calculate the result of the comparison.\n * The functions are called sequentially, receive the given values [a] and [b] and return [Comparable]\n * objects. As soon as the [Comparable] instances returned by a function for [a] and [b] values do not\n * compare as equal, the result of that comparison is returned.\n *\n * @sample samples.comparisons.Comparisons.compareValuesByWithSelectors\n */\npublic fun compareValuesBy(a: T, b: T, vararg selectors: (T) -> Comparable<*>?): Int {\n require(selectors.size > 0)\n return compareValuesByImpl(a, b, selectors)\n}\n\nprivate fun compareValuesByImpl(a: T, b: T, selectors: Array Comparable<*>?>): Int {\n for (fn in selectors) {\n val v1 = fn(a)\n val v2 = fn(b)\n val diff = compareValues(v1, v2)\n if (diff != 0) return diff\n }\n return 0\n}\n\n/**\n * Compares two values using the specified [selector] function to calculate the result of the comparison.\n * The function is applied to the given values [a] and [b] and return [Comparable] objects.\n * The result of comparison of these [Comparable] instances is returned.\n *\n * @sample samples.comparisons.Comparisons.compareValuesByWithSingleSelector\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareValuesBy(a: T, b: T, selector: (T) -> Comparable<*>?): Int {\n return compareValues(selector(a), selector(b))\n}\n\n/**\n * Compares two values using the specified [selector] function to calculate the result of the comparison.\n * The function is applied to the given values [a] and [b] and return objects of type K which are then being\n * compared with the given [comparator].\n *\n * @sample samples.comparisons.Comparisons.compareValuesByWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareValuesBy(a: T, b: T, comparator: Comparator, selector: (T) -> K): Int {\n return comparator.compare(selector(a), selector(b))\n}\n\n//// Not so useful without type inference for receiver of expression\n//// compareValuesWith(v1, v2, compareBy { it.prop1 } thenByDescending { it.prop2 })\n///**\n// * Compares two values using the specified [comparator].\n// */\n//@Suppress(\"NOTHING_TO_INLINE\")\n//public inline fun compareValuesWith(a: T, b: T, comparator: Comparator): Int = comparator.compare(a, b)\n//\n\n\n/**\n * Compares two nullable [Comparable] values. Null is considered less than any value.\n *\n * @sample samples.comparisons.Comparisons.compareValues\n */\npublic fun > compareValues(a: T?, b: T?): Int {\n if (a === b) return 0\n if (a == null) return -1\n if (b == null) return 1\n\n @Suppress(\"UNCHECKED_CAST\")\n return (a as Comparable).compareTo(b)\n}\n\n/**\n * Creates a comparator using the sequence of functions to calculate a result of comparison.\n * The functions are called sequentially, receive the given values `a` and `b` and return [Comparable]\n * objects. As soon as the [Comparable] instances returned by a function for `a` and `b` values do not\n * compare as equal, the result of that comparison is returned from the [Comparator].\n *\n * @sample samples.comparisons.Comparisons.compareByWithSelectors\n */\npublic fun compareBy(vararg selectors: (T) -> Comparable<*>?): Comparator {\n require(selectors.size > 0)\n return Comparator { a, b -> compareValuesByImpl(a, b, selectors) }\n}\n\n\n/**\n * Creates a comparator using the function to transform value to a [Comparable] instance for comparison.\n *\n * @sample samples.comparisons.Comparisons.compareByWithSingleSelector\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareBy(crossinline selector: (T) -> Comparable<*>?): Comparator =\n Comparator { a, b -> compareValuesBy(a, b, selector) }\n\n/**\n * Creates a comparator using the [selector] function to transform values being compared and then applying\n * the specified [comparator] to compare transformed values.\n *\n * @sample samples.comparisons.Comparisons.compareByWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareBy(comparator: Comparator, crossinline selector: (T) -> K): Comparator =\n Comparator { a, b -> compareValuesBy(a, b, comparator, selector) }\n\n/**\n * Creates a descending comparator using the function to transform value to a [Comparable] instance for comparison.\n *\n * @sample samples.comparisons.Comparisons.compareByDescendingWithSingleSelector\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareByDescending(crossinline selector: (T) -> Comparable<*>?): Comparator =\n Comparator { a, b -> compareValuesBy(b, a, selector) }\n\n/**\n * Creates a descending comparator using the [selector] function to transform values being compared and then applying\n * the specified [comparator] to compare transformed values.\n *\n * Note that an order of [comparator] is reversed by this wrapper.\n *\n * @sample samples.comparisons.Comparisons.compareByDescendingWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareByDescending(comparator: Comparator, crossinline selector: (T) -> K): Comparator =\n Comparator { a, b -> compareValuesBy(b, a, comparator, selector) }\n\n/**\n * Creates a comparator comparing values after the primary comparator defined them equal. It uses\n * the function to transform value to a [Comparable] instance for comparison.\n *\n * @sample samples.comparisons.Comparisons.thenBy\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenBy(crossinline selector: (T) -> Comparable<*>?): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenBy.compare(a, b)\n if (previousCompare != 0) previousCompare else compareValuesBy(a, b, selector)\n }\n\n/**\n * Creates a comparator comparing values after the primary comparator defined them equal. It uses\n * the [selector] function to transform values and then compares them with the given [comparator].\n *\n * @sample samples.comparisons.Comparisons.thenByWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenBy(comparator: Comparator, crossinline selector: (T) -> K): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenBy.compare(a, b)\n if (previousCompare != 0) previousCompare else compareValuesBy(a, b, comparator, selector)\n }\n\n/**\n * Creates a descending comparator using the primary comparator and\n * the function to transform value to a [Comparable] instance for comparison.\n *\n * @sample samples.comparisons.Comparisons.thenByDescending\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenByDescending(crossinline selector: (T) -> Comparable<*>?): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenByDescending.compare(a, b)\n if (previousCompare != 0) previousCompare else compareValuesBy(b, a, selector)\n }\n\n/**\n * Creates a descending comparator comparing values after the primary comparator defined them equal. It uses\n * the [selector] function to transform values and then compares them with the given [comparator].\n *\n * @sample samples.comparisons.Comparisons.thenByDescendingWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenByDescending(comparator: Comparator, crossinline selector: (T) -> K): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenByDescending.compare(a, b)\n if (previousCompare != 0) previousCompare else compareValuesBy(b, a, comparator, selector)\n }\n\n\n/**\n * Creates a comparator using the primary comparator and function to calculate a result of comparison.\n *\n * @sample samples.comparisons.Comparisons.thenComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenComparator(crossinline comparison: (a: T, b: T) -> Int): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenComparator.compare(a, b)\n if (previousCompare != 0) previousCompare else comparison(a, b)\n }\n\n/**\n * Combines this comparator and the given [comparator] such that the latter is applied only\n * when the former considered values equal.\n *\n * @sample samples.comparisons.Comparisons.then\n */\npublic infix fun Comparator.then(comparator: Comparator): Comparator =\n Comparator { a, b ->\n val previousCompare = this@then.compare(a, b)\n if (previousCompare != 0) previousCompare else comparator.compare(a, b)\n }\n\n/**\n * Combines this comparator and the given [comparator] such that the latter is applied only\n * when the former considered values equal.\n *\n * @sample samples.comparisons.Comparisons.thenDescending\n */\npublic infix fun Comparator.thenDescending(comparator: Comparator): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenDescending.compare(a, b)\n if (previousCompare != 0) previousCompare else comparator.compare(b, a)\n }\n\n// Not so useful without type inference for receiver of expression\n/**\n * Extends the given [comparator] of non-nullable values to a comparator of nullable values\n * considering `null` value less than any other value.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastWithComparator\n */\npublic fun nullsFirst(comparator: Comparator): Comparator =\n Comparator { a, b ->\n when {\n a === b -> 0\n a == null -> -1\n b == null -> 1\n else -> comparator.compare(a, b)\n }\n }\n\n/**\n * Provides a comparator of nullable [Comparable] values\n * considering `null` value less than any other value.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun > nullsFirst(): Comparator = nullsFirst(naturalOrder())\n\n/**\n * Extends the given [comparator] of non-nullable values to a comparator of nullable values\n * considering `null` value greater than any other value.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastWithComparator\n */\npublic fun nullsLast(comparator: Comparator): Comparator =\n Comparator { a, b ->\n when {\n a === b -> 0\n a == null -> 1\n b == null -> -1\n else -> comparator.compare(a, b)\n }\n }\n\n/**\n * Provides a comparator of nullable [Comparable] values\n * considering `null` value greater than any other value.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun > nullsLast(): Comparator = nullsLast(naturalOrder())\n\n/**\n * Returns a comparator that compares [Comparable] objects in natural order.\n *\n * @sample samples.comparisons.Comparisons.naturalOrderComparator\n */\npublic fun > naturalOrder(): Comparator = @Suppress(\"UNCHECKED_CAST\") (NaturalOrderComparator as Comparator)\n\n/**\n * Returns a comparator that compares [Comparable] objects in reversed natural order.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastWithComparator\n */\npublic fun > reverseOrder(): Comparator = @Suppress(\"UNCHECKED_CAST\") (ReverseOrderComparator as Comparator)\n\n/**\n * Returns a comparator that imposes the reverse ordering of this comparator.\n *\n * @sample samples.comparisons.Comparisons.reversed\n */\npublic fun Comparator.reversed(): Comparator = when (this) {\n is ReversedComparator -> this.comparator\n NaturalOrderComparator -> @Suppress(\"UNCHECKED_CAST\") (ReverseOrderComparator as Comparator)\n ReverseOrderComparator -> @Suppress(\"UNCHECKED_CAST\") (NaturalOrderComparator as Comparator)\n else -> ReversedComparator(this)\n}\n\n\nprivate class ReversedComparator(public val comparator: Comparator) : Comparator {\n override fun compare(a: T, b: T): Int = comparator.compare(b, a)\n @Suppress(\"VIRTUAL_MEMBER_HIDDEN\")\n fun reversed(): Comparator = comparator\n}\n\nprivate object NaturalOrderComparator : Comparator> {\n override fun compare(a: Comparable, b: Comparable): Int = a.compareTo(b)\n @Suppress(\"VIRTUAL_MEMBER_HIDDEN\")\n fun reversed(): Comparator> = ReverseOrderComparator\n}\n\nprivate object ReverseOrderComparator : Comparator> {\n override fun compare(a: Comparable, b: Comparable): Int = b.compareTo(a)\n @Suppress(\"VIRTUAL_MEMBER_HIDDEN\")\n fun reversed(): Comparator> = NaturalOrderComparator\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\n\npublic actual interface Comparator {\n @JsName(\"compare\")\n actual fun compare(a: T, b: T): Int\n}\n\npublic actual inline fun Comparator(crossinline comparison: (a: T, b: T) -> Int): Comparator = object : Comparator {\n override fun compare(a: T, b: T): Int = comparison(a, b)\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StandardKt\")\npackage kotlin\n\nimport kotlin.contracts.*\n\n/**\n * An exception is thrown to indicate that a method body remains to be implemented.\n */\npublic class NotImplementedError(message: String = \"An operation is not implemented.\") : Error(message)\n\n/**\n * Always throws [NotImplementedError] stating that operation is not implemented.\n */\n\n@kotlin.internal.InlineOnly\npublic inline fun TODO(): Nothing = throw NotImplementedError()\n\n/**\n * Always throws [NotImplementedError] stating that operation is not implemented.\n *\n * @param reason a string explaining why the implementation is missing.\n */\n@kotlin.internal.InlineOnly\npublic inline fun TODO(reason: String): Nothing = throw NotImplementedError(\"An operation is not implemented: $reason\")\n\n\n\n/**\n * Calls the specified function [block] and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#run).\n */\n@kotlin.internal.InlineOnly\npublic inline fun run(block: () -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block()\n}\n\n/**\n * Calls the specified function [block] with `this` value as its receiver and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#run).\n */\n@kotlin.internal.InlineOnly\npublic inline fun T.run(block: T.() -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block()\n}\n\n/**\n * Calls the specified function [block] with the given [receiver] as its receiver and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#with).\n */\n@kotlin.internal.InlineOnly\npublic inline fun with(receiver: T, block: T.() -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return receiver.block()\n}\n\n/**\n * Calls the specified function [block] with `this` value as its receiver and returns `this` value.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#apply).\n */\n@kotlin.internal.InlineOnly\npublic inline fun T.apply(block: T.() -> Unit): T {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n block()\n return this\n}\n\n/**\n * Calls the specified function [block] with `this` value as its argument and returns `this` value.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#also).\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun T.also(block: (T) -> Unit): T {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n block(this)\n return this\n}\n\n/**\n * Calls the specified function [block] with `this` value as its argument and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#let).\n */\n@kotlin.internal.InlineOnly\npublic inline fun T.let(block: (T) -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block(this)\n}\n\n/**\n * Returns `this` value if it satisfies the given [predicate] or `null`, if it doesn't.\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun T.takeIf(predicate: (T) -> Boolean): T? {\n contract {\n callsInPlace(predicate, InvocationKind.EXACTLY_ONCE)\n }\n return if (predicate(this)) this else null\n}\n\n/**\n * Returns `this` value if it _does not_ satisfy the given [predicate] or `null`, if it does.\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun T.takeUnless(predicate: (T) -> Boolean): T? {\n contract {\n callsInPlace(predicate, InvocationKind.EXACTLY_ONCE)\n }\n return if (!predicate(this)) this else null\n}\n\n/**\n * Executes the given function [action] specified number of [times].\n *\n * A zero-based index of current iteration is passed as a parameter to [action].\n *\n * @sample samples.misc.ControlFlow.repeat\n */\n@kotlin.internal.InlineOnly\npublic inline fun repeat(times: Int, action: (Int) -> Unit) {\n contract { callsInPlace(action) }\n\n for (index in 0 until times) {\n action(index)\n }\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.comparisons\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.js.*\n\n/**\n * Returns the greater of two values.\n * If values are equal, returns the first one.\n */\n@SinceKotlin(\"1.1\")\npublic actual fun > maxOf(a: T, b: T): T {\n return if (a >= b) a else b\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Byte, b: Byte): Byte {\n return Math.max(a.toInt(), b.toInt()).unsafeCast()\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Short, b: Short): Short {\n return Math.max(a.toInt(), b.toInt()).unsafeCast()\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Int, b: Int): Int {\n return Math.max(a, b)\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@Suppress(\"DEPRECATION_ERROR\", \"NOTHING_TO_INLINE\")\npublic actual inline fun maxOf(a: Long, b: Long): Long {\n return if (a >= b) a else b\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Float, b: Float): Float {\n return Math.max(a, b)\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Double, b: Double): Double {\n return Math.max(a, b)\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\npublic actual fun > maxOf(a: T, b: T, c: T): T {\n return maxOf(a, maxOf(b, c))\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Byte, b: Byte, c: Byte): Byte {\n return Math.max(a.toInt(), b.toInt(), c.toInt()).unsafeCast()\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Short, b: Short, c: Short): Short {\n return Math.max(a.toInt(), b.toInt(), c.toInt()).unsafeCast()\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Int, b: Int, c: Int): Int {\n return Math.max(a, b, c)\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic actual inline fun maxOf(a: Long, b: Long, c: Long): Long {\n return maxOf(a, maxOf(b, c))\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Float, b: Float, c: Float): Float {\n return Math.max(a, b, c)\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Double, b: Double, c: Double): Double {\n return Math.max(a, b, c)\n}\n\n/**\n * Returns the smaller of two values.\n * If values are equal, returns the first one.\n */\n@SinceKotlin(\"1.1\")\npublic actual fun > minOf(a: T, b: T): T {\n return if (a <= b) a else b\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Byte, b: Byte): Byte {\n return Math.min(a.toInt(), b.toInt()).unsafeCast()\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Short, b: Short): Short {\n return Math.min(a.toInt(), b.toInt()).unsafeCast()\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Int, b: Int): Int {\n return Math.min(a, b)\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@Suppress(\"DEPRECATION_ERROR\", \"NOTHING_TO_INLINE\")\npublic actual inline fun minOf(a: Long, b: Long): Long {\n return if (a <= b) a else b\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Float, b: Float): Float {\n return Math.min(a, b)\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Double, b: Double): Double {\n return Math.min(a, b)\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\npublic actual fun > minOf(a: T, b: T, c: T): T {\n return minOf(a, minOf(b, c))\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Byte, b: Byte, c: Byte): Byte {\n return Math.min(a.toInt(), b.toInt(), c.toInt()).unsafeCast()\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Short, b: Short, c: Short): Short {\n return Math.min(a.toInt(), b.toInt(), c.toInt()).unsafeCast()\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Int, b: Int, c: Int): Int {\n return Math.min(a, b, c)\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic actual inline fun minOf(a: Long, b: Long, c: Long): Long {\n return minOf(a, minOf(b, c))\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Float, b: Float, c: Float): Float {\n return Math.min(a, b, c)\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Double, b: Double, c: Double): Double {\n return Math.min(a, b, c)\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns 1st *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component1(): T {\n return get(0)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component2(): T {\n return get(1)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component3(): T {\n return get(2)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component4(): T {\n return get(3)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component5(): T {\n return get(4)\n}\n\n/**\n * Returns `true` if [element] is found in the collection.\n */\npublic operator fun <@kotlin.internal.OnlyInputTypes T> Iterable.contains(element: T): Boolean {\n if (this is Collection)\n return contains(element)\n return indexOf(element) >= 0\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic fun Iterable.elementAt(index: Int): T {\n if (this is List)\n return get(index)\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"Collection doesn't contain element at index $index.\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.elementAt(index: Int): T {\n return get(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\npublic fun Iterable.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n if (this is List)\n return this.getOrElse(index, defaultValue)\n if (index < 0)\n return defaultValue(index)\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\npublic fun Iterable.elementAtOrNull(index: Int): T? {\n if (this is List)\n return this.getOrNull(index)\n if (index < 0)\n return null\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.elementAtOrNull(index: Int): T? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.find(predicate: (T) -> Boolean): T? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the collection is empty.\n */\npublic fun Iterable.first(): T {\n when (this) {\n is List -> return this.first()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n return iterator.next()\n }\n }\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the list is empty.\n */\npublic fun List.first(): T {\n if (isEmpty())\n throw NoSuchElementException(\"List is empty.\")\n return this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun Iterable.first(predicate: (T) -> Boolean): T {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element, or `null` if the collection is empty.\n */\npublic fun Iterable.firstOrNull(): T? {\n when (this) {\n is List -> {\n if (isEmpty())\n return null\n else\n return this[0]\n }\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n return iterator.next()\n }\n }\n}\n\n/**\n * Returns the first element, or `null` if the list is empty.\n */\npublic fun List.firstOrNull(): T? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun Iterable.firstOrNull(predicate: (T) -> Boolean): T? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this list.\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.getOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this list.\n */\npublic fun List.getOrNull(index: Int): T? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns first index of [element], or -1 if the collection does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Iterable.indexOf(element: T): Int {\n if (this is List) return this.indexOf(element)\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the list does not contain element.\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\npublic fun <@kotlin.internal.OnlyInputTypes T> List.indexOf(element: T): Int {\n return indexOf(element)\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the collection does not contain such element.\n */\npublic inline fun Iterable.indexOfFirst(predicate: (T) -> Boolean): Int {\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the list does not contain such element.\n */\npublic inline fun List.indexOfFirst(predicate: (T) -> Boolean): Int {\n var index = 0\n for (item in this) {\n if (predicate(item))\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the collection does not contain such element.\n */\npublic inline fun Iterable.indexOfLast(predicate: (T) -> Boolean): Int {\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the list does not contain such element.\n */\npublic inline fun List.indexOfLast(predicate: (T) -> Boolean): Int {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n if (predicate(iterator.previous())) {\n return iterator.nextIndex()\n }\n }\n return -1\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the collection is empty.\n */\npublic fun Iterable.last(): T {\n when (this) {\n is List -> return this.last()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n }\n }\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the list is empty.\n */\npublic fun List.last(): T {\n if (isEmpty())\n throw NoSuchElementException(\"List is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun Iterable.last(predicate: (T) -> Boolean): T {\n var last: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n last = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return last as T\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun List.last(predicate: (T) -> Boolean): T {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n val element = iterator.previous()\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"List contains no element matching the predicate.\")\n}\n\n/**\n * Returns last index of [element], or -1 if the collection does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Iterable.lastIndexOf(element: T): Int {\n if (this is List) return this.lastIndexOf(element)\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns last index of [element], or -1 if the list does not contain element.\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\npublic fun <@kotlin.internal.OnlyInputTypes T> List.lastIndexOf(element: T): Int {\n return lastIndexOf(element)\n}\n\n/**\n * Returns the last element, or `null` if the collection is empty.\n */\npublic fun Iterable.lastOrNull(): T? {\n when (this) {\n is List -> return if (isEmpty()) null else this[size - 1]\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n }\n }\n}\n\n/**\n * Returns the last element, or `null` if the list is empty.\n */\npublic fun List.lastOrNull(): T? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun Iterable.lastOrNull(predicate: (T) -> Boolean): T? {\n var last: T? = null\n for (element in this) {\n if (predicate(element)) {\n last = element\n }\n }\n return last\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun List.lastOrNull(predicate: (T) -> Boolean): T? {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n val element = iterator.previous()\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns a random element from this collection.\n * \n * @throws NoSuchElementException if this collection is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Collection.random(): T {\n return random(Random)\n}\n\n/**\n * Returns a random element from this collection using the specified source of randomness.\n * \n * @throws NoSuchElementException if this collection is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun Collection.random(random: Random): T {\n if (isEmpty())\n throw NoSuchElementException(\"Collection is empty.\")\n return elementAt(random.nextInt(size))\n}\n\n/**\n * Returns the single element, or throws an exception if the collection is empty or has more than one element.\n */\npublic fun Iterable.single(): T {\n when (this) {\n is List -> return this.single()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n val single = iterator.next()\n if (iterator.hasNext())\n throw IllegalArgumentException(\"Collection has more than one element.\")\n return single\n }\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the list is empty or has more than one element.\n */\npublic fun List.single(): T {\n return when (size) {\n 0 -> throw NoSuchElementException(\"List is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"List has more than one element.\")\n }\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun Iterable.single(predicate: (T) -> Boolean): T {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Collection contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as T\n}\n\n/**\n * Returns single element, or `null` if the collection is empty or has more than one element.\n */\npublic fun Iterable.singleOrNull(): T? {\n when (this) {\n is List -> return if (size == 1) this[0] else null\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n val single = iterator.next()\n if (iterator.hasNext())\n return null\n return single\n }\n }\n}\n\n/**\n * Returns single element, or `null` if the list is empty or has more than one element.\n */\npublic fun List.singleOrNull(): T? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun Iterable.singleOrNull(predicate: (T) -> Boolean): T? {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun Iterable.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return toList()\n val list: ArrayList\n if (this is Collection<*>) {\n val resultSize = size - n\n if (resultSize <= 0)\n return emptyList()\n if (resultSize == 1)\n return listOf(last())\n list = ArrayList(resultSize)\n if (this is List) {\n if (this is RandomAccess) {\n for (index in n until size)\n list.add(this[index])\n } else {\n for (item in listIterator(n))\n list.add(item)\n }\n return list\n }\n }\n else {\n list = ArrayList()\n }\n var count = 0\n for (item in this) {\n if (count >= n) list.add(item) else ++count\n }\n return list.optimizeReadOnlyList()\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun List.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun List.dropLastWhile(predicate: (T) -> Boolean): List {\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n if (!predicate(iterator.previous())) {\n return take(iterator.nextIndex() + 1)\n }\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun Iterable.dropWhile(predicate: (T) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\npublic inline fun Iterable.filter(predicate: (T) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun Iterable.filterIndexed(predicate: (index: Int, T) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > Iterable.filterIndexedTo(destination: C, predicate: (index: Int, T) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Returns a list containing all elements that are instances of specified type parameter R.\n */\npublic inline fun Iterable<*>.filterIsInstance(): List<@kotlin.internal.NoInfer R> {\n return filterIsInstanceTo(ArrayList())\n}\n\n/**\n * Appends all elements that are instances of specified type parameter R to the given [destination].\n */\npublic inline fun > Iterable<*>.filterIsInstanceTo(destination: C): C {\n for (element in this) if (element is R) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\npublic inline fun Iterable.filterNot(predicate: (T) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements that are not `null`.\n */\npublic fun Iterable.filterNotNull(): List {\n return filterNotNullTo(ArrayList())\n}\n\n/**\n * Appends all elements that are not `null` to the given [destination].\n */\npublic fun , T : Any> Iterable.filterNotNullTo(destination: C): C {\n for (element in this) if (element != null) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > Iterable.filterNotTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > Iterable.filterTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun List.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return this.subList(indices.start, indices.endInclusive + 1).toList()\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun List.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun Iterable.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (this is Collection) {\n if (n >= size) return toList()\n if (n == 1) return listOf(first())\n }\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list.optimizeReadOnlyList()\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun List.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(last())\n val list = ArrayList(n)\n if (this is RandomAccess) {\n for (index in size - n until size)\n list.add(this[index])\n } else {\n for (item in listIterator(size - n))\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun List.takeLastWhile(predicate: (T) -> Boolean): List {\n if (isEmpty())\n return emptyList()\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n if (!predicate(iterator.previous())) {\n iterator.next()\n val expectedSize = size - iterator.nextIndex()\n if (expectedSize == 0) return emptyList()\n return ArrayList(expectedSize).apply {\n while (iterator.hasNext())\n add(iterator.next())\n }\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun Iterable.takeWhile(predicate: (T) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Reverses elements in the list in-place.\n */\npublic expect fun MutableList.reverse(): Unit\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun Iterable.reversed(): List {\n if (this is Collection && size <= 1) return toList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Sorts elements in the list in-place according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > MutableList.sortBy(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareBy(selector))\n}\n\n/**\n * Sorts elements in the list in-place descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > MutableList.sortByDescending(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareByDescending(selector))\n}\n\n/**\n * Sorts elements in the list in-place descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > MutableList.sortDescending(): Unit {\n sortWith(reverseOrder())\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Iterable.sorted(): List {\n if (this is Collection) {\n if (size <= 1) return this.toList()\n @Suppress(\"UNCHECKED_CAST\")\n return (toTypedArray>() as Array).apply { sort() }.asList()\n }\n return toMutableList().apply { sort() }\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Iterable.sortedBy(crossinline selector: (T) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Iterable.sortedByDescending(crossinline selector: (T) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Iterable.sortedDescending(): List {\n return sortedWith(reverseOrder())\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun Iterable.sortedWith(comparator: Comparator): List {\n if (this is Collection) {\n if (size <= 1) return this.toList()\n @Suppress(\"UNCHECKED_CAST\")\n return (toTypedArray() as Array).apply { sortWith(comparator) }.asList()\n }\n return toMutableList().apply { sortWith(comparator) }\n}\n\n/**\n * Returns an array of Boolean containing all of the elements of this collection.\n */\npublic fun Collection.toBooleanArray(): BooleanArray {\n val result = BooleanArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Byte containing all of the elements of this collection.\n */\npublic fun Collection.toByteArray(): ByteArray {\n val result = ByteArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Char containing all of the elements of this collection.\n */\npublic fun Collection.toCharArray(): CharArray {\n val result = CharArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Double containing all of the elements of this collection.\n */\npublic fun Collection.toDoubleArray(): DoubleArray {\n val result = DoubleArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Float containing all of the elements of this collection.\n */\npublic fun Collection.toFloatArray(): FloatArray {\n val result = FloatArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Int containing all of the elements of this collection.\n */\npublic fun Collection.toIntArray(): IntArray {\n val result = IntArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Long containing all of the elements of this collection.\n */\npublic fun Collection.toLongArray(): LongArray {\n val result = LongArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Short containing all of the elements of this collection.\n */\npublic fun Collection.toShortArray(): ShortArray {\n val result = ShortArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given collection.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n */\npublic inline fun Iterable.associate(transform: (T) -> Pair): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing the elements from the given collection indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n */\npublic inline fun Iterable.associateBy(keySelector: (T) -> K): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given collection.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n */\npublic inline fun Iterable.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given collection\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > Iterable.associateByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given collection.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > Iterable.associateByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given collection.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > Iterable.associateTo(destination: M, transform: (T) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Returns a [Map] where keys are elements from the given collection and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.3\")\npublic inline fun Iterable.associateWith(valueSelector: (K) -> V): Map {\n val result = LinkedHashMap(mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16))\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given collection,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n */\n@SinceKotlin(\"1.3\")\npublic inline fun > Iterable.associateWithTo(destination: M, valueSelector: (K) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > Iterable.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun Iterable.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(collectionSizeOrDefault(12))))\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun Iterable.toList(): List {\n if (this is Collection) {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(if (this is List) get(0) else iterator().next())\n else -> this.toMutableList()\n }\n }\n return this.toMutableList().optimizeReadOnlyList()\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this collection.\n */\npublic fun Iterable.toMutableList(): MutableList {\n if (this is Collection)\n return this.toMutableList()\n return toCollection(ArrayList())\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this collection.\n */\npublic fun Collection.toMutableList(): MutableList {\n return ArrayList(this)\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic fun Iterable.toSet(): Set {\n if (this is Collection) {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(if (this is List) this[0] else iterator().next())\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n }\n return toCollection(LinkedHashSet()).optimizeReadOnlySet()\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original collection.\n */\npublic inline fun Iterable.flatMap(transform: (T) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original collection, to the given [destination].\n */\npublic inline fun > Iterable.flatMapTo(destination: C, transform: (T) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups elements of the original collection by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original collection.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun Iterable.groupBy(keySelector: (T) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original collection\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original collection.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun Iterable.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups elements of the original collection by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> Iterable.groupByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original collection\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> Iterable.groupByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Creates a [Grouping] source from a collection to be used later with one of group-and-fold operations\n * using the specified [keySelector] function to extract a key from each element.\n * \n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Iterable.groupingBy(crossinline keySelector: (T) -> K): Grouping {\n return object : Grouping {\n override fun sourceIterator(): Iterator = this@groupingBy.iterator()\n override fun keyOf(element: T): K = keySelector(element)\n }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original collection.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun Iterable.map(transform: (T) -> R): List {\n return mapTo(ArrayList(collectionSizeOrDefault(10)), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original collection.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Iterable.mapIndexed(transform: (index: Int, T) -> R): List {\n return mapIndexedTo(ArrayList(collectionSizeOrDefault(10)), transform)\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element and its index in the original collection.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Iterable.mapIndexedNotNull(transform: (index: Int, T) -> R?): List {\n return mapIndexedNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original collection\n * and appends only the non-null results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Iterable.mapIndexedNotNullTo(destination: C, transform: (index: Int, T) -> R?): C {\n forEachIndexed { index, element -> transform(index, element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original collection\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Iterable.mapIndexedTo(destination: C, transform: (index: Int, T) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(checkIndexOverflow(index++), item))\n return destination\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element in the original collection.\n */\npublic inline fun Iterable.mapNotNull(transform: (T) -> R?): List {\n return mapNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element in the original collection\n * and appends only the non-null results to the given [destination].\n */\npublic inline fun > Iterable.mapNotNullTo(destination: C, transform: (T) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original collection\n * and appends the results to the given [destination].\n */\npublic inline fun > Iterable.mapTo(destination: C, transform: (T) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original collection.\n */\npublic fun Iterable.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a list containing only distinct elements from the given collection.\n * \n * The elements in the resulting list are in the same order as they were in the source collection.\n */\npublic fun Iterable.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only elements from the given collection\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source collection.\n */\npublic inline fun Iterable.distinctBy(selector: (T) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a set containing all elements that are contained by both this set and the specified collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic infix fun Iterable.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this collection and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic infix fun Iterable.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic fun Iterable.toMutableSet(): MutableSet {\n return when (this) {\n is Collection -> LinkedHashSet(this)\n else -> toCollection(LinkedHashSet())\n }\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original collection.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n */\npublic infix fun Iterable.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun Iterable.all(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return true\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if collection has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun Iterable.any(): Boolean {\n if (this is Collection) return !isEmpty()\n return iterator().hasNext()\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun Iterable.any(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return false\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of elements in this collection.\n */\npublic fun Iterable.count(): Int {\n if (this is Collection) return size\n var count = 0\n for (element in this) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Returns the number of elements in this collection.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun Iterable.count(predicate: (T) -> Boolean): Int {\n if (this is Collection && isEmpty()) return 0\n var count = 0\n for (element in this) if (predicate(element)) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun Iterable.fold(initial: R, operation: (acc: R, T) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original collection.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun Iterable.foldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(checkIndexOverflow(index++), accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun List.foldRight(initial: R, operation: (T, acc: R) -> R): R {\n var accumulator = initial\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n accumulator = operation(iterator.previous(), accumulator)\n }\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original list and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun List.foldRightIndexed(initial: R, operation: (index: Int, T, acc: R) -> R): R {\n var accumulator = initial\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n val index = iterator.previousIndex()\n accumulator = operation(index, iterator.previous(), accumulator)\n }\n }\n return accumulator\n}\n\n/**\n * Performs the given [action] on each element.\n */\n@kotlin.internal.HidesMembers\npublic inline fun Iterable.forEach(action: (T) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun Iterable.forEachIndexed(action: (index: Int, T) -> Unit): Unit {\n var index = 0\n for (item in this) action(checkIndexOverflow(index++), item)\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Iterable.max(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n if (max.isNaN()) return max\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Iterable.max(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n if (max.isNaN()) return max\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun > Iterable.max(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > Iterable.maxBy(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxElem = iterator.next()\n if (!iterator.hasNext()) return maxElem\n var maxValue = selector(maxElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n } while (iterator.hasNext())\n return maxElem\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun Iterable.maxWith(comparator: Comparator): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Iterable.min(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n if (min.isNaN()) return min\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Iterable.min(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n if (min.isNaN()) return min\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun > Iterable.min(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > Iterable.minBy(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minElem = iterator.next()\n if (!iterator.hasNext()) return minElem\n var minValue = selector(minElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n } while (iterator.hasNext())\n return minElem\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun Iterable.minWith(comparator: Comparator): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the collection has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun Iterable.none(): Boolean {\n if (this is Collection) return isEmpty()\n return !iterator().hasNext()\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun Iterable.none(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return true\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Performs the given [action] on each element and returns the collection itself afterwards.\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > C.onEach(action: (T) -> Unit): C {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun Iterable.reduce(operation: (acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty collection can't be reduced.\")\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original collection.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\npublic inline fun Iterable.reduceIndexed(operation: (index: Int, acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty collection can't be reduced.\")\n var index = 1\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(checkIndexOverflow(index++), accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun List.reduceRight(operation: (T, acc: S) -> S): S {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n throw UnsupportedOperationException(\"Empty list can't be reduced.\")\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n accumulator = operation(iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original list and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun List.reduceRightIndexed(operation: (index: Int, T, acc: S) -> S): S {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n throw UnsupportedOperationException(\"Empty list can't be reduced.\")\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n val index = iterator.previousIndex()\n accumulator = operation(index, iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\npublic inline fun Iterable.sumBy(selector: (T) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\npublic inline fun Iterable.sumByDouble(selector: (T) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n */\npublic fun Iterable.requireNoNulls(): Iterable {\n for (element in this) {\n if (element == null) {\n throw IllegalArgumentException(\"null element found in $this.\")\n }\n }\n @Suppress(\"UNCHECKED_CAST\")\n return this as Iterable\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n */\npublic fun List.requireNoNulls(): List {\n for (element in this) {\n if (element == null) {\n throw IllegalArgumentException(\"null element found in $this.\")\n }\n }\n @Suppress(\"UNCHECKED_CAST\")\n return this as List\n}\n\n/**\n * Splits this collection into a list of lists each not exceeding the given [size].\n * \n * The last list in the resulting list may have less elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this collection.\n * \n * @sample samples.collections.Collections.Transformations.chunked\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.chunked(size: Int): List> {\n return windowed(size, size, partialWindows = true)\n}\n\n/**\n * Splits this collection into several lists each not exceeding the given [size]\n * and applies the given [transform] function to an each.\n * \n * @return list of results of the [transform] applied to an each list.\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * The last list may have less elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this collection.\n * \n * @sample samples.text.Strings.chunkedTransform\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.chunked(size: Int, transform: (List) -> R): List {\n return windowed(size, size, partialWindows = true, transform = transform)\n}\n\n/**\n * Returns a list containing all elements of the original collection without the first occurrence of the given [element].\n */\npublic operator fun Iterable.minus(element: T): List {\n val result = ArrayList(collectionSizeOrDefault(10))\n var removed = false\n return this.filterTo(result) { if (!removed && it == element) { removed = true; false } else true }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] array.\n * \n * The [elements] array may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Iterable.minus(elements: Array): List {\n if (elements.isEmpty()) return this.toList()\n val other = elements.toHashSet()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] collection.\n * \n * The [elements] collection may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Iterable.minus(elements: Iterable): List {\n val other = elements.convertToSetForSetOperationWith(this)\n if (other.isEmpty())\n return this.toList()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] sequence.\n * \n * The [elements] sequence may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Iterable.minus(elements: Sequence): List {\n val other = elements.toHashSet()\n if (other.isEmpty())\n return this.toList()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection without the first occurrence of the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.minusElement(element: T): List {\n return minus(element)\n}\n\n/**\n * Splits the original collection into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n */\npublic inline fun Iterable.partition(predicate: (T) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\npublic operator fun Iterable.plus(element: T): List {\n if (this is Collection) return this.plus(element)\n val result = ArrayList()\n result.addAll(this)\n result.add(element)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\npublic operator fun Collection.plus(element: T): List {\n val result = ArrayList(size + 1)\n result.addAll(this)\n result.add(element)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] array.\n */\npublic operator fun Iterable.plus(elements: Array): List {\n if (this is Collection) return this.plus(elements)\n val result = ArrayList()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] array.\n */\npublic operator fun Collection.plus(elements: Array): List {\n val result = ArrayList(this.size + elements.size)\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] collection.\n */\npublic operator fun Iterable.plus(elements: Iterable): List {\n if (this is Collection) return this.plus(elements)\n val result = ArrayList()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] collection.\n */\npublic operator fun Collection.plus(elements: Iterable): List {\n if (elements is Collection) {\n val result = ArrayList(this.size + elements.size)\n result.addAll(this)\n result.addAll(elements)\n return result\n } else {\n val result = ArrayList(this)\n result.addAll(elements)\n return result\n }\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] sequence.\n */\npublic operator fun Iterable.plus(elements: Sequence): List {\n val result = ArrayList()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] sequence.\n */\npublic operator fun Collection.plus(elements: Sequence): List {\n val result = ArrayList(this.size + 10)\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.plusElement(element: T): List {\n return plus(element)\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection.plusElement(element: T): List {\n return plus(element)\n}\n\n/**\n * Returns a list of snapshots of the window of the given [size]\n * sliding along this collection with the given [step], where each\n * snapshot is a list.\n * \n * Several last lists may have less elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this collection.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.takeWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false): List> {\n checkWindowSizeStep(size, step)\n if (this is RandomAccess && this is List) {\n val thisSize = this.size\n val result = ArrayList>((thisSize + step - 1) / step)\n var index = 0\n while (index < thisSize) {\n val windowSize = size.coerceAtMost(thisSize - index)\n if (windowSize < size && !partialWindows) break\n result.add(List(windowSize) { this[it + index] })\n index += step\n }\n return result\n }\n val result = ArrayList>()\n windowedIterator(iterator(), size, step, partialWindows, reuseBuffer = false).forEach {\n result.add(it)\n }\n return result\n}\n\n/**\n * Returns a list of results of applying the given [transform] function to\n * an each list representing a view over the window of the given [size]\n * sliding along this collection with the given [step].\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * Several last lists may have less elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this collection.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.averageWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false, transform: (List) -> R): List {\n checkWindowSizeStep(size, step)\n if (this is RandomAccess && this is List) {\n val thisSize = this.size\n val result = ArrayList((thisSize + step - 1) / step)\n val window = MovingSubList(this)\n var index = 0\n while (index < thisSize) {\n window.move(index, (index + size).coerceAtMost(thisSize))\n if (!partialWindows && window.size < size) break\n result.add(transform(window))\n index += step\n }\n return result\n }\n val result = ArrayList()\n windowedIterator(iterator(), size, step, partialWindows, reuseBuffer = true).forEach {\n result.add(transform(it))\n }\n return result\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Iterable.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` collection and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Iterable.zip(other: Array, transform: (a: T, b: R) -> V): List {\n val arraySize = other.size\n val list = ArrayList(minOf(collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in this) {\n if (i >= arraySize) break\n list.add(transform(element, other[i++]))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] collection with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Iterable.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` collection and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Iterable.zip(other: Iterable, transform: (a: T, b: R) -> V): List {\n val first = iterator()\n val second = other.iterator()\n val list = ArrayList(minOf(collectionSizeOrDefault(10), other.collectionSizeOrDefault(10)))\n while (first.hasNext() && second.hasNext()) {\n list.add(transform(first.next(), second.next()))\n }\n return list\n}\n\n/**\n * Returns a list of pairs of each two adjacent elements in this collection.\n * \n * The returned list is empty if this collection contains less than two elements.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNext\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.zipWithNext(): List> {\n return zipWithNext { a, b -> a to b }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to an each pair of two adjacent elements in this collection.\n * \n * The returned list is empty if this collection contains less than two elements.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNextToFindDeltas\n */\n@SinceKotlin(\"1.2\")\npublic inline fun Iterable.zipWithNext(transform: (a: T, b: T) -> R): List {\n val iterator = iterator()\n if (!iterator.hasNext()) return emptyList()\n val result = mutableListOf()\n var current = iterator.next()\n while (iterator.hasNext()) {\n val next = iterator.next()\n result.add(transform(current, next))\n current = next\n }\n return result\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun Iterable.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n buffer.appendElement(element, transform)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun Iterable.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Returns this collection as an [Iterable].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.asIterable(): Iterable {\n return this\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original collection returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromCollection\n */\npublic fun Iterable.asSequence(): Sequence {\n return Sequence { this.iterator() }\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfByte\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfShort\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfInt\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfLong\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfFloat\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfDouble\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfByte\")\npublic fun Iterable.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfShort\")\npublic fun Iterable.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfInt\")\npublic fun Iterable.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfLong\")\npublic fun Iterable.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfFloat\")\npublic fun Iterable.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfDouble\")\npublic fun Iterable.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\nimport kotlin.comparisons.naturalOrder\nimport kotlin.random.Random\n\n/** Returns the array if it's not `null`, or an empty array otherwise. */\n@kotlin.internal.InlineOnly\npublic actual inline fun Array?.orEmpty(): Array = this ?: emptyArray()\n\n@kotlin.internal.InlineOnly\npublic actual inline fun Collection.toTypedArray(): Array = copyToArray(this)\n\n@JsName(\"copyToArray\")\n@PublishedApi\ninternal fun copyToArray(collection: Collection): Array {\n return if (collection.asDynamic().toArray !== undefined)\n collection.asDynamic().toArray().unsafeCast>()\n else\n copyToArrayImpl(collection).unsafeCast>()\n}\n\n@JsName(\"copyToArrayImpl\")\ninternal actual fun copyToArrayImpl(collection: Collection<*>): Array {\n val array = emptyArray()\n val iterator = collection.iterator()\n while (iterator.hasNext())\n array.asDynamic().push(iterator.next())\n return array\n}\n\n@JsName(\"copyToExistingArrayImpl\")\ninternal actual fun copyToArrayImpl(collection: Collection<*>, array: Array): Array {\n if (array.size < collection.size)\n return copyToArrayImpl(collection).unsafeCast>()\n\n val iterator = collection.iterator()\n var index = 0\n while (iterator.hasNext()) {\n array[index++] = iterator.next().unsafeCast()\n }\n if (index < array.size) {\n array[index] = null.unsafeCast()\n }\n return array\n}\n\n/**\n * Returns an immutable list containing only the specified object [element].\n */\npublic fun listOf(element: T): List = arrayListOf(element)\n\n/**\n * Returns an immutable set containing only the specified object [element].\n */\npublic fun setOf(element: T): Set = hashSetOf(element)\n\n/**\n * Returns an immutable map, mapping only the specified key to the\n * specified value.\n */\npublic fun mapOf(pair: Pair): Map = hashMapOf(pair)\n\n/**\n * Fills the list with the provided [value].\n *\n * Each element in the list gets replaced with the [value].\n */\n@SinceKotlin(\"1.2\")\npublic actual fun MutableList.fill(value: T): Unit {\n for (index in 0..lastIndex) {\n this[index] = value\n }\n}\n\n/**\n * Randomly shuffles elements in this list.\n *\n * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n */\n@SinceKotlin(\"1.2\")\npublic actual fun MutableList.shuffle(): Unit = shuffle(Random)\n\n/**\n * Returns a new list with the elements of this list randomly shuffled.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Iterable.shuffled(): List = toMutableList().apply { shuffle() }\n\n/**\n * Sorts elements in the list in-place according to their natural sort order.\n *\n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic actual fun > MutableList.sort(): Unit {\n collectionsSort(this, naturalOrder())\n}\n\n/**\n * Sorts elements in the list in-place according to the order specified with [comparator].\n *\n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic actual fun MutableList.sortWith(comparator: Comparator): Unit {\n collectionsSort(this, comparator)\n}\n\nprivate fun collectionsSort(list: MutableList, comparator: Comparator) {\n if (list.size <= 1) return\n\n val array = copyToArray(list)\n sortArrayWith(array, comparator)\n\n for (i in 0 until array.size) {\n list[i] = array[i]\n }\n}\n\ninternal actual fun arrayOfNulls(reference: Array, size: Int): Array {\n return arrayOfNulls(size).unsafeCast>()\n}\n\n@SinceKotlin(\"1.3\")\n@PublishedApi\n@JsName(\"arrayCopy\")\ninternal fun arrayCopy(source: Array, destination: Array, destinationOffset: Int, startIndex: Int, endIndex: Int) {\n AbstractList.checkRangeIndexes(startIndex, endIndex, source.size)\n val rangeSize = endIndex - startIndex\n AbstractList.checkRangeIndexes(destinationOffset, destinationOffset + rangeSize, destination.size)\n\n if (js(\"ArrayBuffer\").isView(destination) && js(\"ArrayBuffer\").isView(source)) {\n val subrange = source.asDynamic().subarray(startIndex, endIndex)\n destination.asDynamic().set(subrange, destinationOffset)\n } else {\n if (source !== destination || destinationOffset <= startIndex) {\n for (index in 0 until rangeSize) {\n destination[destinationOffset + index] = source[startIndex + index]\n }\n } else {\n for (index in rangeSize - 1 downTo 0) {\n destination[destinationOffset + index] = source[startIndex + index]\n }\n }\n }\n}\n\n// no singleton map implementation in js, return map as is\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal actual inline fun Map.toSingletonMapOrSelf(): Map = this\n\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal actual inline fun Map.toSingletonMap(): Map = this.toMutableMap()\n\n\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal actual inline fun Array.copyToArrayOfAny(isVarargs: Boolean): Array =\n if (isVarargs)\n // no need to copy vararg array in JS\n this\n else\n this.copyOf()\n\n\n\n@PublishedApi\ninternal actual fun checkIndexOverflow(index: Int): Int {\n if (index < 0) {\n throwIndexOverflow()\n }\n return index\n}\n\n@PublishedApi\ninternal actual fun checkCountOverflow(count: Int): Int {\n if (count < 0) {\n throwCountOverflow()\n }\n return count\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\n\n/**\n * Returns the given iterator itself. This allows to use an instance of iterator in a `for` loop.\n * @sample samples.collections.Iterators.iterator\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Iterator.iterator(): Iterator = this\n\n/**\n * Returns an [Iterator] wrapping each value produced by this [Iterator] with the [IndexedValue],\n * containing value and it's index.\n * @sample samples.collections.Iterators.withIndexIterator\n */\npublic fun Iterator.withIndex(): Iterator> = IndexingIterator(this)\n\n/**\n * Performs the given [operation] on each element of this [Iterator].\n * @sample samples.collections.Iterators.forEachIterator\n */\npublic inline fun Iterator.forEach(operation: (T) -> Unit): Unit {\n for (element in this) operation(element)\n}\n\n/**\n * Iterator transforming original `iterator` into iterator of [IndexedValue], counting index from zero.\n */\ninternal class IndexingIterator(private val iterator: Iterator) : Iterator> {\n private var index = 0\n final override fun hasNext(): Boolean = iterator.hasNext()\n final override fun next(): IndexedValue = IndexedValue(checkIndexOverflow(index++), iterator.next())\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"ComparisonsKt\")\n\npackage kotlin.comparisons\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\n\n/**\n * Returns the greater of two values.\n * If values are equal, returns the first one.\n */\n@SinceKotlin(\"1.1\")\npublic expect fun > maxOf(a: T, b: T): T\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Byte, b: Byte): Byte\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Short, b: Short): Short\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Int, b: Int): Int\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Long, b: Long): Long\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Float, b: Float): Float\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Double, b: Double): Double\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\npublic expect fun > maxOf(a: T, b: T, c: T): T\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Byte, b: Byte, c: Byte): Byte\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Short, b: Short, c: Short): Short\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Int, b: Int, c: Int): Int\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Long, b: Long, c: Long): Long\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Float, b: Float, c: Float): Float\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Double, b: Double, c: Double): Double\n\n/**\n * Returns the greater of three values according to the order specified by the given [comparator].\n */\n@SinceKotlin(\"1.1\")\npublic fun maxOf(a: T, b: T, c: T, comparator: Comparator): T {\n return maxOf(a, maxOf(b, c, comparator), comparator)\n}\n\n/**\n * Returns the greater of two values according to the order specified by the given [comparator].\n * If values are equal, returns the first one.\n */\n@SinceKotlin(\"1.1\")\npublic fun maxOf(a: T, b: T, comparator: Comparator): T {\n return if (comparator.compare(a, b) >= 0) a else b\n}\n\n/**\n * Returns the smaller of two values.\n * If values are equal, returns the first one.\n */\n@SinceKotlin(\"1.1\")\npublic expect fun > minOf(a: T, b: T): T\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Byte, b: Byte): Byte\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Short, b: Short): Short\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Int, b: Int): Int\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Long, b: Long): Long\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Float, b: Float): Float\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Double, b: Double): Double\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\npublic expect fun > minOf(a: T, b: T, c: T): T\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Byte, b: Byte, c: Byte): Byte\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Short, b: Short, c: Short): Short\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Int, b: Int, c: Int): Int\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Long, b: Long, c: Long): Long\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Float, b: Float, c: Float): Float\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Double, b: Double, c: Double): Double\n\n/**\n * Returns the smaller of three values according to the order specified by the given [comparator].\n */\n@SinceKotlin(\"1.1\")\npublic fun minOf(a: T, b: T, c: T, comparator: Comparator): T {\n return minOf(a, minOf(b, c, comparator), comparator)\n}\n\n/**\n * Returns the smaller of two values according to the order specified by the given [comparator].\n * If values are equal, returns the first one.\n */\n@SinceKotlin(\"1.1\")\npublic fun minOf(a: T, b: T, comparator: Comparator): T {\n return if (comparator.compare(a, b) <= 0) a else b\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"MapsKt\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns a [List] containing all key-value pairs.\n */\npublic fun Map.toList(): List> {\n if (size == 0)\n return emptyList()\n val iterator = entries.iterator()\n if (!iterator.hasNext())\n return emptyList()\n val first = iterator.next()\n if (!iterator.hasNext())\n return listOf(first.toPair())\n val result = ArrayList>(size)\n result.add(first.toPair())\n do {\n result.add(iterator.next().toPair())\n } while (iterator.hasNext())\n return result\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each entry of original map.\n */\npublic inline fun Map.flatMap(transform: (Map.Entry) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each entry of original map, to the given [destination].\n */\npublic inline fun > Map.flatMapTo(destination: C, transform: (Map.Entry) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each entry in the original map.\n * \n * @sample samples.collections.Maps.Transformations.mapToList\n */\npublic inline fun Map.map(transform: (Map.Entry) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each entry in the original map.\n */\npublic inline fun Map.mapNotNull(transform: (Map.Entry) -> R?): List {\n return mapNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each entry in the original map\n * and appends only the non-null results to the given [destination].\n */\npublic inline fun > Map.mapNotNullTo(destination: C, transform: (Map.Entry) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each entry of the original map\n * and appends the results to the given [destination].\n */\npublic inline fun > Map.mapTo(destination: C, transform: (Map.Entry) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns `true` if all entries match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun Map.all(predicate: (Map.Entry) -> Boolean): Boolean {\n if (isEmpty()) return true\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if map has at least one entry.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun Map.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if at least one entry matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun Map.any(predicate: (Map.Entry) -> Boolean): Boolean {\n if (isEmpty()) return false\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of entries in this map.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.count(): Int {\n return size\n}\n\n/**\n * Returns the number of entries matching the given [predicate].\n */\npublic inline fun Map.count(predicate: (Map.Entry) -> Boolean): Int {\n if (isEmpty()) return 0\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Performs the given [action] on each entry.\n */\n@kotlin.internal.HidesMembers\npublic inline fun Map.forEach(action: (Map.Entry) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Returns the first entry yielding the largest value of the given function or `null` if there are no entries.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\n@kotlin.internal.InlineOnly\npublic inline fun > Map.maxBy(selector: (Map.Entry) -> R): Map.Entry? {\n return entries.maxBy(selector)\n}\n\n/**\n * Returns the first entry having the largest value according to the provided [comparator] or `null` if there are no entries.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.maxWith(comparator: Comparator>): Map.Entry? {\n return entries.maxWith(comparator)\n}\n\n/**\n * Returns the first entry yielding the smallest value of the given function or `null` if there are no entries.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > Map.minBy(selector: (Map.Entry) -> R): Map.Entry? {\n return entries.minBy(selector)\n}\n\n/**\n * Returns the first entry having the smallest value according to the provided [comparator] or `null` if there are no entries.\n */\npublic fun Map.minWith(comparator: Comparator>): Map.Entry? {\n return entries.minWith(comparator)\n}\n\n/**\n * Returns `true` if the map has no entries.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun Map.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if no entries match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun Map.none(predicate: (Map.Entry) -> Boolean): Boolean {\n if (isEmpty()) return true\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Performs the given [action] on each entry and returns the map itself afterwards.\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > M.onEach(action: (Map.Entry) -> Unit): M {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original map returning its entries when being iterated.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.asIterable(): Iterable> {\n return entries\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original map returning its entries when being iterated.\n */\npublic fun Map.asSequence(): Sequence> {\n return entries.asSequence()\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.ranges\n\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun Float.rangeTo(that: Float): ClosedFloatingPointRange =\n this.toDouble().rangeTo(that.toDouble()).unsafeCast>()\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"SequencesKt\")\n\npackage kotlin.sequences\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\n\n/**\n * Returns `true` if [element] is found in the sequence.\n *\n * The operation is _terminal_.\n */\npublic operator fun <@kotlin.internal.OnlyInputTypes T> Sequence.contains(element: T): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic fun Sequence.elementAt(index: Int): T {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"Sequence doesn't contain element at index $index.\") }\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\npublic fun Sequence.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n if (index < 0)\n return defaultValue(index)\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\npublic fun Sequence.elementAtOrNull(index: Int): T? {\n if (index < 0)\n return null\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n *\n * The operation is _terminal_.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Sequence.find(predicate: (T) -> Boolean): T? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n *\n * The operation is _terminal_.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Sequence.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the sequence is empty.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.first(): T {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Sequence is empty.\")\n return iterator.next()\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.first(predicate: (T) -> Boolean): T {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Sequence contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element, or `null` if the sequence is empty.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.firstOrNull(): T? {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n return iterator.next()\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.firstOrNull(predicate: (T) -> Boolean): T? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns first index of [element], or -1 if the sequence does not contain element.\n *\n * The operation is _terminal_.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Sequence.indexOf(element: T): Int {\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the sequence does not contain such element.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.indexOfFirst(predicate: (T) -> Boolean): Int {\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the sequence does not contain such element.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.indexOfLast(predicate: (T) -> Boolean): Int {\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the sequence is empty.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.last(): T {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Sequence is empty.\")\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.last(predicate: (T) -> Boolean): T {\n var last: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n last = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Sequence contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return last as T\n}\n\n/**\n * Returns last index of [element], or -1 if the sequence does not contain element.\n *\n * The operation is _terminal_.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Sequence.lastIndexOf(element: T): Int {\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns the last element, or `null` if the sequence is empty.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.lastOrNull(): T? {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.lastOrNull(predicate: (T) -> Boolean): T? {\n var last: T? = null\n for (element in this) {\n if (predicate(element)) {\n last = element\n }\n }\n return last\n}\n\n/**\n * Returns the single element, or throws an exception if the sequence is empty or has more than one element.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.single(): T {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Sequence is empty.\")\n val single = iterator.next()\n if (iterator.hasNext())\n throw IllegalArgumentException(\"Sequence has more than one element.\")\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.single(predicate: (T) -> Boolean): T {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Sequence contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Sequence contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as T\n}\n\n/**\n * Returns single element, or `null` if the sequence is empty or has more than one element.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.singleOrNull(): T? {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n val single = iterator.next()\n if (iterator.hasNext())\n return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.singleOrNull(predicate: (T) -> Boolean): T? {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a sequence containing all elements except first [n] elements.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun Sequence.drop(n: Int): Sequence {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return when {\n n == 0 -> this\n this is DropTakeSequence -> this.drop(n)\n else -> DropSequence(this, n)\n }\n}\n\n/**\n * Returns a sequence containing all elements except first elements that satisfy the given [predicate].\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun Sequence.dropWhile(predicate: (T) -> Boolean): Sequence {\n return DropWhileSequence(this, predicate)\n}\n\n/**\n * Returns a sequence containing only elements matching the given [predicate].\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence.filter(predicate: (T) -> Boolean): Sequence {\n return FilteringSequence(this, true, predicate)\n}\n\n/**\n * Returns a sequence containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence.filterIndexed(predicate: (index: Int, T) -> Boolean): Sequence {\n // TODO: Rewrite with generalized MapFilterIndexingSequence\n return TransformingSequence(FilteringSequence(IndexingSequence(this), true, { predicate(it.index, it.value) }), { it.value })\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.filterIndexedTo(destination: C, predicate: (index: Int, T) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Returns a sequence containing all elements that are instances of specified type parameter R.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic inline fun Sequence<*>.filterIsInstance(): Sequence<@kotlin.internal.NoInfer R> {\n @Suppress(\"UNCHECKED_CAST\")\n return filter { it is R } as Sequence\n}\n\n/**\n * Appends all elements that are instances of specified type parameter R to the given [destination].\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence<*>.filterIsInstanceTo(destination: C): C {\n for (element in this) if (element is R) destination.add(element)\n return destination\n}\n\n/**\n * Returns a sequence containing all elements not matching the given [predicate].\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence.filterNot(predicate: (T) -> Boolean): Sequence {\n return FilteringSequence(this, false, predicate)\n}\n\n/**\n * Returns a sequence containing all elements that are not `null`.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence.filterNotNull(): Sequence {\n @Suppress(\"UNCHECKED_CAST\")\n return filterNot { it == null } as Sequence\n}\n\n/**\n * Appends all elements that are not `null` to the given [destination].\n *\n * The operation is _terminal_.\n */\npublic fun , T : Any> Sequence.filterNotNullTo(destination: C): C {\n for (element in this) if (element != null) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.filterNotTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.filterTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Returns a sequence containing first [n] elements.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun Sequence.take(n: Int): Sequence {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return when {\n n == 0 -> emptySequence()\n this is DropTakeSequence -> this.take(n)\n else -> TakeSequence(this, n)\n }\n}\n\n/**\n * Returns a sequence containing first elements satisfying the given [predicate].\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun Sequence.takeWhile(predicate: (T) -> Boolean): Sequence {\n return TakeWhileSequence(this, predicate)\n}\n\n/**\n * Returns a sequence that yields elements of this sequence sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic fun > Sequence.sorted(): Sequence {\n return object : Sequence {\n override fun iterator(): Iterator {\n val sortedList = this@sorted.toMutableList()\n sortedList.sort()\n return sortedList.iterator()\n }\n }\n}\n\n/**\n * Returns a sequence that yields elements of this sequence sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic inline fun > Sequence.sortedBy(crossinline selector: (T) -> R?): Sequence {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a sequence that yields elements of this sequence sorted descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic inline fun > Sequence.sortedByDescending(crossinline selector: (T) -> R?): Sequence {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a sequence that yields elements of this sequence sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic fun > Sequence.sortedDescending(): Sequence {\n return sortedWith(reverseOrder())\n}\n\n/**\n * Returns a sequence that yields elements of this sequence sorted according to the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic fun Sequence.sortedWith(comparator: Comparator): Sequence {\n return object : Sequence {\n override fun iterator(): Iterator {\n val sortedList = this@sortedWith.toMutableList()\n sortedList.sortWith(comparator)\n return sortedList.iterator()\n }\n }\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given sequence.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original sequence.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.associate(transform: (T) -> Pair): Map {\n return associateTo(LinkedHashMap(), transform)\n}\n\n/**\n * Returns a [Map] containing the elements from the given sequence indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original sequence.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.associateBy(keySelector: (T) -> K): Map {\n return associateByTo(LinkedHashMap(), keySelector)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given sequence.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original sequence.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map {\n return associateByTo(LinkedHashMap(), keySelector, valueTransform)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given sequence\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.associateByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given sequence.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.associateByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given sequence.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.associateTo(destination: M, transform: (T) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Returns a [Map] where keys are elements from the given sequence and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.3\")\npublic inline fun Sequence.associateWith(valueSelector: (K) -> V): Map {\n val result = LinkedHashMap()\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given sequence,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.3\")\npublic inline fun > Sequence.associateWithTo(destination: M, valueSelector: (K) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n *\n * The operation is _terminal_.\n */\npublic fun > Sequence.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Returns a [HashSet] of all elements.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.toHashSet(): HashSet {\n return toCollection(HashSet())\n}\n\n/**\n * Returns a [List] containing all elements.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.toList(): List {\n return this.toMutableList().optimizeReadOnlyList()\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this sequence.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.toMutableList(): MutableList {\n return toCollection(ArrayList())\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original sequence.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.toSet(): Set {\n return toCollection(LinkedHashSet()).optimizeReadOnlySet()\n}\n\n/**\n * Returns a single sequence of all elements from results of [transform] function being invoked on each element of original sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence.flatMap(transform: (T) -> Sequence): Sequence {\n return FlatteningSequence(this, transform, { it.iterator() })\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original sequence, to the given [destination].\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.flatMapTo(destination: C, transform: (T) -> Sequence): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups elements of the original sequence by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun Sequence.groupBy(keySelector: (T) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original sequence\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun Sequence.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups elements of the original sequence by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> Sequence.groupByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original sequence\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> Sequence.groupByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Creates a [Grouping] source from a sequence to be used later with one of group-and-fold operations\n * using the specified [keySelector] function to extract a key from each element.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Sequence.groupingBy(crossinline keySelector: (T) -> K): Grouping {\n return object : Grouping {\n override fun sourceIterator(): Iterator = this@groupingBy.iterator()\n override fun keyOf(element: T): K = keySelector(element)\n }\n}\n\n/**\n * Returns a sequence containing the results of applying the given [transform] function\n * to each element in the original sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic fun Sequence.map(transform: (T) -> R): Sequence {\n return TransformingSequence(this, transform)\n}\n\n/**\n * Returns a sequence containing the results of applying the given [transform] function\n * to each element and its index in the original sequence.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence.mapIndexed(transform: (index: Int, T) -> R): Sequence {\n return TransformingIndexedSequence(this, transform)\n}\n\n/**\n * Returns a sequence containing only the non-null results of applying the given [transform] function\n * to each element and its index in the original sequence.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence.mapIndexedNotNull(transform: (index: Int, T) -> R?): Sequence {\n return TransformingIndexedSequence(this, transform).filterNotNull()\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original sequence\n * and appends only the non-null results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.mapIndexedNotNullTo(destination: C, transform: (index: Int, T) -> R?): C {\n forEachIndexed { index, element -> transform(index, element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original sequence\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.mapIndexedTo(destination: C, transform: (index: Int, T) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(checkIndexOverflow(index++), item))\n return destination\n}\n\n/**\n * Returns a sequence containing only the non-null results of applying the given [transform] function\n * to each element in the original sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence.mapNotNull(transform: (T) -> R?): Sequence {\n return TransformingSequence(this, transform).filterNotNull()\n}\n\n/**\n * Applies the given [transform] function to each element in the original sequence\n * and appends only the non-null results to the given [destination].\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.mapNotNullTo(destination: C, transform: (T) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original sequence\n * and appends the results to the given [destination].\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.mapTo(destination: C, transform: (T) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a sequence of [IndexedValue] for each element of the original sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence.withIndex(): Sequence> {\n return IndexingSequence(this)\n}\n\n/**\n * Returns a sequence containing only distinct elements from the given sequence.\n * \n * The elements in the resulting sequence are in the same order as they were in the source sequence.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic fun Sequence.distinct(): Sequence {\n return this.distinctBy { it }\n}\n\n/**\n * Returns a sequence containing only elements from the given sequence\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting sequence are in the same order as they were in the source sequence.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic fun Sequence.distinctBy(selector: (T) -> K): Sequence {\n return DistinctSequence(this, selector)\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given sequence.\n * \n * The returned set preserves the element iteration order of the original sequence.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.toMutableSet(): MutableSet {\n val set = LinkedHashSet()\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun Sequence.all(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if sequence has at least one element.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun Sequence.any(): Boolean {\n return iterator().hasNext()\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun Sequence.any(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of elements in this sequence.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.count(): Int {\n var count = 0\n for (element in this) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.count(predicate: (T) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.fold(initial: R, operation: (acc: R, T) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original sequence.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.foldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(checkIndexOverflow(index++), accumulator, element)\n return accumulator\n}\n\n/**\n * Performs the given [action] on each element.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.forEach(action: (T) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.forEachIndexed(action: (index: Int, T) -> Unit): Unit {\n var index = 0\n for (item in this) action(checkIndexOverflow(index++), item)\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.1\")\npublic fun Sequence.max(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n if (max.isNaN()) return max\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.1\")\npublic fun Sequence.max(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n if (max.isNaN()) return max\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n *\n * The operation is _terminal_.\n */\npublic fun > Sequence.max(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > Sequence.maxBy(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxElem = iterator.next()\n if (!iterator.hasNext()) return maxElem\n var maxValue = selector(maxElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n } while (iterator.hasNext())\n return maxElem\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.maxWith(comparator: Comparator): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.1\")\npublic fun Sequence.min(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n if (min.isNaN()) return min\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.1\")\npublic fun Sequence.min(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n if (min.isNaN()) return min\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n *\n * The operation is _terminal_.\n */\npublic fun > Sequence.min(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > Sequence.minBy(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minElem = iterator.next()\n if (!iterator.hasNext()) return minElem\n var minValue = selector(minElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n } while (iterator.hasNext())\n return minElem\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.minWith(comparator: Comparator): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the sequence has no elements.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun Sequence.none(): Boolean {\n return !iterator().hasNext()\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun Sequence.none(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns a sequence which performs the given [action] on each element of the original sequence as they pass through it.\n *\n * The operation is _intermediate_ and _stateless_.\n */\n@SinceKotlin(\"1.1\")\npublic fun Sequence.onEach(action: (T) -> Unit): Sequence {\n return map {\n action(it)\n it\n }\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.reduce(operation: (acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty sequence can't be reduced.\")\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original sequence.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.reduceIndexed(operation: (index: Int, acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty sequence can't be reduced.\")\n var index = 1\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(checkIndexOverflow(index++), accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the sequence.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.sumBy(selector: (T) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the sequence.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.sumByDouble(selector: (T) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence.requireNoNulls(): Sequence {\n return map { it ?: throw IllegalArgumentException(\"null element found in $this.\") }\n}\n\n/**\n * Splits this sequence into a sequence of lists each not exceeding the given [size].\n * \n * The last list in the resulting sequence may have less elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this sequence.\n *\n * The operation is _intermediate_ and _stateful_.\n * \n * @sample samples.collections.Collections.Transformations.chunked\n */\n@SinceKotlin(\"1.2\")\npublic fun Sequence.chunked(size: Int): Sequence> {\n return windowed(size, size, partialWindows = true)\n}\n\n/**\n * Splits this sequence into several lists each not exceeding the given [size]\n * and applies the given [transform] function to an each.\n * \n * @return sequence of results of the [transform] applied to an each list.\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * The last list may have less elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this sequence.\n *\n * The operation is _intermediate_ and _stateful_.\n * \n * @sample samples.text.Strings.chunkedTransform\n */\n@SinceKotlin(\"1.2\")\npublic fun Sequence.chunked(size: Int, transform: (List) -> R): Sequence {\n return windowed(size, size, partialWindows = true, transform = transform)\n}\n\n/**\n * Returns a sequence containing all elements of the original sequence without the first occurrence of the given [element].\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic operator fun Sequence.minus(element: T): Sequence {\n return object: Sequence {\n override fun iterator(): Iterator {\n var removed = false\n return this@minus.filter { if (!removed && it == element) { removed = true; false } else true }.iterator()\n }\n }\n}\n\n/**\n * Returns a sequence containing all elements of original sequence except the elements contained in the given [elements] array.\n * \n * Note that the source sequence and the array being subtracted are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n * \n * The [elements] array may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic operator fun Sequence.minus(elements: Array): Sequence {\n if (elements.isEmpty()) return this\n return object: Sequence {\n override fun iterator(): Iterator {\n val other = elements.toHashSet()\n return this@minus.filterNot { it in other }.iterator()\n }\n }\n}\n\n/**\n * Returns a sequence containing all elements of original sequence except the elements contained in the given [elements] collection.\n * \n * Note that the source sequence and the collection being subtracted are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n * \n * The [elements] collection may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic operator fun Sequence.minus(elements: Iterable): Sequence {\n return object: Sequence {\n override fun iterator(): Iterator {\n val other = elements.convertToSetForSetOperation()\n if (other.isEmpty())\n return this@minus.iterator()\n else\n return this@minus.filterNot { it in other }.iterator()\n }\n }\n}\n\n/**\n * Returns a sequence containing all elements of original sequence except the elements contained in the given [elements] sequence.\n * \n * Note that the source sequence and the sequence being subtracted are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n * \n * The operation is _intermediate_ for this sequence and _terminal_ and _stateful_ for the [elements] sequence.\n * \n * The [elements] sequence may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Sequence.minus(elements: Sequence): Sequence {\n return object: Sequence {\n override fun iterator(): Iterator {\n val other = elements.toHashSet()\n if (other.isEmpty())\n return this@minus.iterator()\n else\n return this@minus.filterNot { it in other }.iterator()\n }\n }\n}\n\n/**\n * Returns a sequence containing all elements of the original sequence without the first occurrence of the given [element].\n *\n * The operation is _intermediate_ and _stateless_.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Sequence.minusElement(element: T): Sequence {\n return minus(element)\n}\n\n/**\n * Splits the original sequence into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.partition(predicate: (T) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Returns a sequence containing all elements of the original sequence and then the given [element].\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic operator fun Sequence.plus(element: T): Sequence {\n return sequenceOf(this, sequenceOf(element)).flatten()\n}\n\n/**\n * Returns a sequence containing all elements of original sequence and then all elements of the given [elements] array.\n * \n * Note that the source sequence and the array being added are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic operator fun Sequence.plus(elements: Array): Sequence {\n return this.plus(elements.asList())\n}\n\n/**\n * Returns a sequence containing all elements of original sequence and then all elements of the given [elements] collection.\n * \n * Note that the source sequence and the collection being added are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic operator fun Sequence.plus(elements: Iterable): Sequence {\n return sequenceOf(this, elements.asSequence()).flatten()\n}\n\n/**\n * Returns a sequence containing all elements of original sequence and then all elements of the given [elements] sequence.\n * \n * Note that the source sequence and the sequence being added are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic operator fun Sequence.plus(elements: Sequence): Sequence {\n return sequenceOf(this, elements).flatten()\n}\n\n/**\n * Returns a sequence containing all elements of the original sequence and then the given [element].\n *\n * The operation is _intermediate_ and _stateless_.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Sequence.plusElement(element: T): Sequence {\n return plus(element)\n}\n\n/**\n * Returns a sequence of snapshots of the window of the given [size]\n * sliding along this sequence with the given [step], where each\n * snapshot is a list.\n * \n * Several last lists may have less elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this sequence.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.takeWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun Sequence.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false): Sequence> {\n return windowedSequence(size, step, partialWindows, reuseBuffer = false)\n}\n\n/**\n * Returns a sequence of results of applying the given [transform] function to\n * an each list representing a view over the window of the given [size]\n * sliding along this sequence with the given [step].\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * Several last lists may have less elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this sequence.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.averageWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun Sequence.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false, transform: (List) -> R): Sequence {\n return windowedSequence(size, step, partialWindows, reuseBuffer = true).map(transform)\n}\n\n/**\n * Returns a sequence of values built from the elements of `this` sequence and the [other] sequence with the same index.\n * The resulting sequence ends as soon as the shortest input sequence ends.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Sequences.Transformations.zip\n */\npublic infix fun Sequence.zip(other: Sequence): Sequence> {\n return MergingSequence(this, other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a sequence of values built from the elements of `this` sequence and the [other] sequence with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The resulting sequence ends as soon as the shortest input sequence ends.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Sequences.Transformations.zipWithTransform\n */\npublic fun Sequence.zip(other: Sequence, transform: (a: T, b: R) -> V): Sequence {\n return MergingSequence(this, other, transform)\n}\n\n/**\n * Returns a sequence of pairs of each two adjacent elements in this sequence.\n * \n * The returned sequence is empty if this sequence contains less than two elements.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNext\n */\n@SinceKotlin(\"1.2\")\npublic fun Sequence.zipWithNext(): Sequence> {\n return zipWithNext { a, b -> a to b }\n}\n\n/**\n * Returns a sequence containing the results of applying the given [transform] function\n * to an each pair of two adjacent elements in this sequence.\n * \n * The returned sequence is empty if this sequence contains less than two elements.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNextToFindDeltas\n */\n@SinceKotlin(\"1.2\")\npublic fun Sequence.zipWithNext(transform: (a: T, b: T) -> R): Sequence {\n return sequence result@ {\n val iterator = iterator()\n if (!iterator.hasNext()) return@result\n var current = iterator.next()\n while (iterator.hasNext()) {\n val next = iterator.next()\n yield(transform(current, next))\n current = next\n }\n }\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun Sequence.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n buffer.appendElement(element, transform)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun Sequence.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original sequence returning its elements when being iterated.\n */\npublic fun Sequence.asIterable(): Iterable {\n return Iterable { this.iterator() }\n}\n\n/**\n * Returns this sequence as a [Sequence].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Sequence.asSequence(): Sequence {\n return this\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfByte\")\npublic fun Sequence.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfShort\")\npublic fun Sequence.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfInt\")\npublic fun Sequence.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfLong\")\npublic fun Sequence.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfFloat\")\npublic fun Sequence.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfDouble\")\npublic fun Sequence.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfByte\")\npublic fun Sequence.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfShort\")\npublic fun Sequence.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfInt\")\npublic fun Sequence.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfLong\")\npublic fun Sequence.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfFloat\")\npublic fun Sequence.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfDouble\")\npublic fun Sequence.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n",null,"/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"SetsKt\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns a set containing all elements of the original set except the given [element].\n * \n * The returned set preserves the element iteration order of the original set.\n */\npublic operator fun Set.minus(element: T): Set {\n val result = LinkedHashSet(mapCapacity(size))\n var removed = false\n return this.filterTo(result) { if (!removed && it == element) { removed = true; false } else true }\n}\n\n/**\n * Returns a set containing all elements of the original set except the elements contained in the given [elements] array.\n * \n * The returned set preserves the element iteration order of the original set.\n * \n * The [elements] array may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Set.minus(elements: Array): Set {\n val result = LinkedHashSet(this)\n result.removeAll(elements)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set except the elements contained in the given [elements] collection.\n * \n * The returned set preserves the element iteration order of the original set.\n * \n * The [elements] collection may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Set.minus(elements: Iterable): Set {\n val other = elements.convertToSetForSetOperationWith(this)\n if (other.isEmpty())\n return this.toSet()\n if (other is Set)\n return this.filterNotTo(LinkedHashSet()) { it in other }\n val result = LinkedHashSet(this)\n result.removeAll(other)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set except the elements contained in the given [elements] sequence.\n * \n * The returned set preserves the element iteration order of the original set.\n * \n * The [elements] sequence may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Set.minus(elements: Sequence): Set {\n val result = LinkedHashSet(this)\n result.removeAll(elements)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set except the given [element].\n * \n * The returned set preserves the element iteration order of the original set.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Set.minusElement(element: T): Set {\n return minus(element)\n}\n\n/**\n * Returns a set containing all elements of the original set and then the given [element] if it isn't already in this set.\n * \n * The returned set preserves the element iteration order of the original set.\n */\npublic operator fun Set.plus(element: T): Set {\n val result = LinkedHashSet(mapCapacity(size + 1))\n result.addAll(this)\n result.add(element)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set and the given [elements] array,\n * which aren't already in this set.\n * \n * The returned set preserves the element iteration order of the original set.\n */\npublic operator fun Set.plus(elements: Array): Set {\n val result = LinkedHashSet(mapCapacity(this.size + elements.size))\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set and the given [elements] collection,\n * which aren't already in this set.\n * The returned set preserves the element iteration order of the original set.\n */\npublic operator fun Set.plus(elements: Iterable): Set {\n val result = LinkedHashSet(mapCapacity(elements.collectionSizeOrNull()?.let { this.size + it } ?: this.size * 2))\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set and the given [elements] sequence,\n * which aren't already in this set.\n * \n * The returned set preserves the element iteration order of the original set.\n */\npublic operator fun Set.plus(elements: Sequence): Set {\n val result = LinkedHashSet(mapCapacity(this.size * 2))\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set and then the given [element] if it isn't already in this set.\n * \n * The returned set preserves the element iteration order of the original set.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Set.plusElement(element: T): Set {\n return plus(element)\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n\npackage kotlin.text\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\n\n/**\n * Returns a character at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this char sequence.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun CharSequence.elementAt(index: Int): Char\n\n/**\n * Returns a character at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this char sequence.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.elementAtOrElse(index: Int, defaultValue: (Int) -> Char): Char {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns a character at the given [index] or `null` if the [index] is out of bounds of this char sequence.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.elementAtOrNull(index: Int): Char? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns the first character matching the given [predicate], or `null` if no such character was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.find(predicate: (Char) -> Boolean): Char? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last character matching the given [predicate], or `null` if no such character was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.findLast(predicate: (Char) -> Boolean): Char? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first character.\n * @throws [NoSuchElementException] if the char sequence is empty.\n */\npublic fun CharSequence.first(): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Char sequence is empty.\")\n return this[0]\n}\n\n/**\n * Returns the first character matching the given [predicate].\n * @throws [NoSuchElementException] if no such character is found.\n */\npublic inline fun CharSequence.first(predicate: (Char) -> Boolean): Char {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Char sequence contains no character matching the predicate.\")\n}\n\n/**\n * Returns the first character, or `null` if the char sequence is empty.\n */\npublic fun CharSequence.firstOrNull(): Char? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first character matching the given [predicate], or `null` if character was not found.\n */\npublic inline fun CharSequence.firstOrNull(predicate: (Char) -> Boolean): Char? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns a character at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this char sequence.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.getOrElse(index: Int, defaultValue: (Int) -> Char): Char {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns a character at the given [index] or `null` if the [index] is out of bounds of this char sequence.\n */\npublic fun CharSequence.getOrNull(index: Int): Char? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns index of the first character matching the given [predicate], or -1 if the char sequence does not contain such character.\n */\npublic inline fun CharSequence.indexOfFirst(predicate: (Char) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last character matching the given [predicate], or -1 if the char sequence does not contain such character.\n */\npublic inline fun CharSequence.indexOfLast(predicate: (Char) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns the last character.\n * @throws [NoSuchElementException] if the char sequence is empty.\n */\npublic fun CharSequence.last(): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Char sequence is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last character matching the given [predicate].\n * @throws [NoSuchElementException] if no such character is found.\n */\npublic inline fun CharSequence.last(predicate: (Char) -> Boolean): Char {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Char sequence contains no character matching the predicate.\")\n}\n\n/**\n * Returns the last character, or `null` if the char sequence is empty.\n */\npublic fun CharSequence.lastOrNull(): Char? {\n return if (isEmpty()) null else this[length - 1]\n}\n\n/**\n * Returns the last character matching the given [predicate], or `null` if no such character was found.\n */\npublic inline fun CharSequence.lastOrNull(predicate: (Char) -> Boolean): Char? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns a random character from this char sequence.\n * \n * @throws NoSuchElementException if this char sequence is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.random(): Char {\n return random(Random)\n}\n\n/**\n * Returns a random character from this char sequence using the specified source of randomness.\n * \n * @throws NoSuchElementException if this char sequence is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun CharSequence.random(random: Random): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Char sequence is empty.\")\n return get(random.nextInt(length))\n}\n\n/**\n * Returns the single character, or throws an exception if the char sequence is empty or has more than one character.\n */\npublic fun CharSequence.single(): Char {\n return when (length) {\n 0 -> throw NoSuchElementException(\"Char sequence is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Char sequence has more than one element.\")\n }\n}\n\n/**\n * Returns the single character matching the given [predicate], or throws exception if there is no or more than one matching character.\n */\npublic inline fun CharSequence.single(predicate: (Char) -> Boolean): Char {\n var single: Char? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Char sequence contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Char sequence contains no character matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Char\n}\n\n/**\n * Returns single character, or `null` if the char sequence is empty or has more than one character.\n */\npublic fun CharSequence.singleOrNull(): Char? {\n return if (length == 1) this[0] else null\n}\n\n/**\n * Returns the single character matching the given [predicate], or `null` if character was not found or more than one character was found.\n */\npublic inline fun CharSequence.singleOrNull(predicate: (Char) -> Boolean): Char? {\n var single: Char? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a subsequence of this char sequence with the first [n] characters removed.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.drop\n */\npublic fun CharSequence.drop(n: Int): CharSequence {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return subSequence(n.coerceAtMost(length), length)\n}\n\n/**\n * Returns a string with the first [n] characters removed.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.drop\n */\npublic fun String.drop(n: Int): String {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return substring(n.coerceAtMost(length))\n}\n\n/**\n * Returns a subsequence of this char sequence with the last [n] characters removed.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.drop\n */\npublic fun CharSequence.dropLast(n: Int): CharSequence {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return take((length - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a string with the last [n] characters removed.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.drop\n */\npublic fun String.dropLast(n: Int): String {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return take((length - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a subsequence of this char sequence containing all characters except last characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.drop\n */\npublic inline fun CharSequence.dropLastWhile(predicate: (Char) -> Boolean): CharSequence {\n for (index in lastIndex downTo 0)\n if (!predicate(this[index]))\n return subSequence(0, index + 1)\n return \"\"\n}\n\n/**\n * Returns a string containing all characters except last characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.drop\n */\npublic inline fun String.dropLastWhile(predicate: (Char) -> Boolean): String {\n for (index in lastIndex downTo 0)\n if (!predicate(this[index]))\n return substring(0, index + 1)\n return \"\"\n}\n\n/**\n * Returns a subsequence of this char sequence containing all characters except first characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.drop\n */\npublic inline fun CharSequence.dropWhile(predicate: (Char) -> Boolean): CharSequence {\n for (index in this.indices)\n if (!predicate(this[index]))\n return subSequence(index, length)\n return \"\"\n}\n\n/**\n * Returns a string containing all characters except first characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.drop\n */\npublic inline fun String.dropWhile(predicate: (Char) -> Boolean): String {\n for (index in this.indices)\n if (!predicate(this[index]))\n return substring(index)\n return \"\"\n}\n\n/**\n * Returns a char sequence containing only those characters from the original char sequence that match the given [predicate].\n */\npublic inline fun CharSequence.filter(predicate: (Char) -> Boolean): CharSequence {\n return filterTo(StringBuilder(), predicate)\n}\n\n/**\n * Returns a string containing only those characters from the original string that match the given [predicate].\n */\npublic inline fun String.filter(predicate: (Char) -> Boolean): String {\n return filterTo(StringBuilder(), predicate).toString()\n}\n\n/**\n * Returns a char sequence containing only those characters from the original char sequence that match the given [predicate].\n * @param [predicate] function that takes the index of a character and the character itself\n * and returns the result of predicate evaluation on the character.\n */\npublic inline fun CharSequence.filterIndexed(predicate: (index: Int, Char) -> Boolean): CharSequence {\n return filterIndexedTo(StringBuilder(), predicate)\n}\n\n/**\n * Returns a string containing only those characters from the original string that match the given [predicate].\n * @param [predicate] function that takes the index of a character and the character itself\n * and returns the result of predicate evaluation on the character.\n */\npublic inline fun String.filterIndexed(predicate: (index: Int, Char) -> Boolean): String {\n return filterIndexedTo(StringBuilder(), predicate).toString()\n}\n\n/**\n * Appends all characters matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of a character and the character itself\n * and returns the result of predicate evaluation on the character.\n */\npublic inline fun CharSequence.filterIndexedTo(destination: C, predicate: (index: Int, Char) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.append(element)\n }\n return destination\n}\n\n/**\n * Returns a char sequence containing only those characters from the original char sequence that do not match the given [predicate].\n */\npublic inline fun CharSequence.filterNot(predicate: (Char) -> Boolean): CharSequence {\n return filterNotTo(StringBuilder(), predicate)\n}\n\n/**\n * Returns a string containing only those characters from the original string that do not match the given [predicate].\n */\npublic inline fun String.filterNot(predicate: (Char) -> Boolean): String {\n return filterNotTo(StringBuilder(), predicate).toString()\n}\n\n/**\n * Appends all characters not matching the given [predicate] to the given [destination].\n */\npublic inline fun CharSequence.filterNotTo(destination: C, predicate: (Char) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.append(element)\n return destination\n}\n\n/**\n * Appends all characters matching the given [predicate] to the given [destination].\n */\npublic inline fun CharSequence.filterTo(destination: C, predicate: (Char) -> Boolean): C {\n for (index in 0 until length) {\n val element = get(index)\n if (predicate(element)) destination.append(element)\n }\n return destination\n}\n\n/**\n * Returns a char sequence containing characters of the original char sequence at the specified range of [indices].\n */\npublic fun CharSequence.slice(indices: IntRange): CharSequence {\n if (indices.isEmpty()) return \"\"\n return subSequence(indices)\n}\n\n/**\n * Returns a string containing characters of the original string at the specified range of [indices].\n */\npublic fun String.slice(indices: IntRange): String {\n if (indices.isEmpty()) return \"\"\n return substring(indices)\n}\n\n/**\n * Returns a char sequence containing characters of the original char sequence at specified [indices].\n */\npublic fun CharSequence.slice(indices: Iterable): CharSequence {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return \"\"\n val result = StringBuilder(size)\n for (i in indices) {\n result.append(get(i))\n }\n return result\n}\n\n/**\n * Returns a string containing characters of the original string at specified [indices].\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.slice(indices: Iterable): String {\n return (this as CharSequence).slice(indices).toString()\n}\n\n/**\n * Returns a subsequence of this char sequence containing the first [n] characters from this char sequence, or the entire char sequence if this char sequence is shorter.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.take\n */\npublic fun CharSequence.take(n: Int): CharSequence {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return subSequence(0, n.coerceAtMost(length))\n}\n\n/**\n * Returns a string containing the first [n] characters from this string, or the entire string if this string is shorter.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.take\n */\npublic fun String.take(n: Int): String {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return substring(0, n.coerceAtMost(length))\n}\n\n/**\n * Returns a subsequence of this char sequence containing the last [n] characters from this char sequence, or the entire char sequence if this char sequence is shorter.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.take\n */\npublic fun CharSequence.takeLast(n: Int): CharSequence {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n val length = length\n return subSequence(length - n.coerceAtMost(length), length)\n}\n\n/**\n * Returns a string containing the last [n] characters from this string, or the entire string if this string is shorter.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.take\n */\npublic fun String.takeLast(n: Int): String {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n val length = length\n return substring(length - n.coerceAtMost(length))\n}\n\n/**\n * Returns a subsequence of this char sequence containing last characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.take\n */\npublic inline fun CharSequence.takeLastWhile(predicate: (Char) -> Boolean): CharSequence {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return subSequence(index + 1, length)\n }\n }\n return subSequence(0, length)\n}\n\n/**\n * Returns a string containing last characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.take\n */\npublic inline fun String.takeLastWhile(predicate: (Char) -> Boolean): String {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return substring(index + 1)\n }\n }\n return this\n}\n\n/**\n * Returns a subsequence of this char sequence containing the first characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.take\n */\npublic inline fun CharSequence.takeWhile(predicate: (Char) -> Boolean): CharSequence {\n for (index in 0 until length)\n if (!predicate(get(index))) {\n return subSequence(0, index)\n }\n return subSequence(0, length)\n}\n\n/**\n * Returns a string containing the first characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.take\n */\npublic inline fun String.takeWhile(predicate: (Char) -> Boolean): String {\n for (index in 0 until length)\n if (!predicate(get(index))) {\n return substring(0, index)\n }\n return this\n}\n\n/**\n * Returns a char sequence with characters in reversed order.\n */\npublic fun CharSequence.reversed(): CharSequence {\n return StringBuilder(this).reverse()\n}\n\n/**\n * Returns a string with characters in reversed order.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.reversed(): String {\n return (this as CharSequence).reversed().toString()\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to characters of the given char sequence.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original char sequence.\n */\npublic inline fun CharSequence.associate(transform: (Char) -> Pair): Map {\n val capacity = mapCapacity(length).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing the characters from the given char sequence indexed by the key\n * returned from [keySelector] function applied to each character.\n * \n * If any two characters would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original char sequence.\n */\npublic inline fun CharSequence.associateBy(keySelector: (Char) -> K): Map {\n val capacity = mapCapacity(length).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to characters of the given char sequence.\n * \n * If any two characters would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original char sequence.\n */\npublic inline fun CharSequence.associateBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map {\n val capacity = mapCapacity(length).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each character of the given char sequence\n * and value is the character itself.\n * \n * If any two characters would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > CharSequence.associateByTo(destination: M, keySelector: (Char) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to characters of the given char sequence.\n * \n * If any two characters would have the same key returned by [keySelector] the last one gets added to the map.\n */\npublic inline fun > CharSequence.associateByTo(destination: M, keySelector: (Char) -> K, valueTransform: (Char) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each character of the given char sequence.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic inline fun > CharSequence.associateTo(destination: M, transform: (Char) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Returns a [Map] where keys are characters from the given char sequence and values are\n * produced by the [valueSelector] function applied to each character.\n * \n * If any two characters are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original char sequence.\n * \n * @sample samples.text.Strings.associateWith\n */\n@SinceKotlin(\"1.3\")\npublic inline fun CharSequence.associateWith(valueSelector: (Char) -> V): Map {\n val result = LinkedHashMap(mapCapacity(length).coerceAtLeast(16))\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each character of the given char sequence,\n * where key is the character itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two characters are equal, the last one overwrites the former value in the map.\n */\n@SinceKotlin(\"1.3\")\npublic inline fun > CharSequence.associateWithTo(destination: M, valueSelector: (Char) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Appends all characters to the given [destination] collection.\n */\npublic fun > CharSequence.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Returns a [HashSet] of all characters.\n */\npublic fun CharSequence.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(length)))\n}\n\n/**\n * Returns a [List] containing all characters.\n */\npublic fun CharSequence.toList(): List {\n return when (length) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [MutableList] filled with all characters of this char sequence.\n */\npublic fun CharSequence.toMutableList(): MutableList {\n return toCollection(ArrayList(length))\n}\n\n/**\n * Returns a [Set] of all characters.\n * \n * The returned set preserves the element iteration order of the original char sequence.\n */\npublic fun CharSequence.toSet(): Set {\n return when (length) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(length)))\n }\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each character of original char sequence.\n */\npublic inline fun CharSequence.flatMap(transform: (Char) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each character of original char sequence, to the given [destination].\n */\npublic inline fun > CharSequence.flatMapTo(destination: C, transform: (Char) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups characters of the original char sequence by the key returned by the given [keySelector] function\n * applied to each character and returns a map where each group key is associated with a list of corresponding characters.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original char sequence.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun CharSequence.groupBy(keySelector: (Char) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each character of the original char sequence\n * by the key returned by the given [keySelector] function applied to the character\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original char sequence.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun CharSequence.groupBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups characters of the original char sequence by the key returned by the given [keySelector] function\n * applied to each character and puts to the [destination] map each group key associated with a list of corresponding characters.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> CharSequence.groupByTo(destination: M, keySelector: (Char) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each character of the original char sequence\n * by the key returned by the given [keySelector] function applied to the character\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> CharSequence.groupByTo(destination: M, keySelector: (Char) -> K, valueTransform: (Char) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Creates a [Grouping] source from a char sequence to be used later with one of group-and-fold operations\n * using the specified [keySelector] function to extract a key from each character.\n * \n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic inline fun CharSequence.groupingBy(crossinline keySelector: (Char) -> K): Grouping {\n return object : Grouping {\n override fun sourceIterator(): Iterator = this@groupingBy.iterator()\n override fun keyOf(element: Char): K = keySelector(element)\n }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each character in the original char sequence.\n * \n * @sample samples.text.Strings.map\n */\npublic inline fun CharSequence.map(transform: (Char) -> R): List {\n return mapTo(ArrayList(length), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each character and its index in the original char sequence.\n * @param [transform] function that takes the index of a character and the character itself\n * and returns the result of the transform applied to the character.\n */\npublic inline fun CharSequence.mapIndexed(transform: (index: Int, Char) -> R): List {\n return mapIndexedTo(ArrayList(length), transform)\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each character and its index in the original char sequence.\n * @param [transform] function that takes the index of a character and the character itself\n * and returns the result of the transform applied to the character.\n */\npublic inline fun CharSequence.mapIndexedNotNull(transform: (index: Int, Char) -> R?): List {\n return mapIndexedNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each character and its index in the original char sequence\n * and appends only the non-null results to the given [destination].\n * @param [transform] function that takes the index of a character and the character itself\n * and returns the result of the transform applied to the character.\n */\npublic inline fun > CharSequence.mapIndexedNotNullTo(destination: C, transform: (index: Int, Char) -> R?): C {\n forEachIndexed { index, element -> transform(index, element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each character and its index in the original char sequence\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of a character and the character itself\n * and returns the result of the transform applied to the character.\n */\npublic inline fun > CharSequence.mapIndexedTo(destination: C, transform: (index: Int, Char) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each character in the original char sequence.\n */\npublic inline fun CharSequence.mapNotNull(transform: (Char) -> R?): List {\n return mapNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each character in the original char sequence\n * and appends only the non-null results to the given [destination].\n */\npublic inline fun > CharSequence.mapNotNullTo(destination: C, transform: (Char) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each character of the original char sequence\n * and appends the results to the given [destination].\n */\npublic inline fun > CharSequence.mapTo(destination: C, transform: (Char) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each character of the original char sequence.\n */\npublic fun CharSequence.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns `true` if all characters match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun CharSequence.all(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if char sequence has at least one character.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun CharSequence.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if at least one character matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun CharSequence.any(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the length of this char sequence.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.count(): Int {\n return length\n}\n\n/**\n * Returns the number of characters matching the given [predicate].\n */\npublic inline fun CharSequence.count(predicate: (Char) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each character.\n */\npublic inline fun CharSequence.fold(initial: R, operation: (acc: R, Char) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each character with its index in the original char sequence.\n * @param [operation] function that takes the index of a character, current accumulator value\n * and the character itself, and calculates the next accumulator value.\n */\npublic inline fun CharSequence.foldIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each character and current accumulator value.\n */\npublic inline fun CharSequence.foldRight(initial: R, operation: (Char, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each character with its index in the original char sequence and current accumulator value.\n * @param [operation] function that takes the index of a character, the character itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun CharSequence.foldRightIndexed(initial: R, operation: (index: Int, Char, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Performs the given [action] on each character.\n */\npublic inline fun CharSequence.forEach(action: (Char) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each character, providing sequential index with the character.\n * @param [action] function that takes the index of a character and the character itself\n * and performs the desired action on the character.\n */\npublic inline fun CharSequence.forEachIndexed(action: (index: Int, Char) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Returns the largest character or `null` if there are no characters.\n */\npublic fun CharSequence.max(): Char? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the first character yielding the largest value of the given function or `null` if there are no characters.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > CharSequence.maxBy(selector: (Char) -> R): Char? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first character having the largest value according to the provided [comparator] or `null` if there are no characters.\n */\npublic fun CharSequence.maxWith(comparator: Comparator): Char? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the smallest character or `null` if there are no characters.\n */\npublic fun CharSequence.min(): Char? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the first character yielding the smallest value of the given function or `null` if there are no characters.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > CharSequence.minBy(selector: (Char) -> R): Char? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first character having the smallest value according to the provided [comparator] or `null` if there are no characters.\n */\npublic fun CharSequence.minWith(comparator: Comparator): Char? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the char sequence has no characters.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun CharSequence.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if no characters match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun CharSequence.none(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Performs the given [action] on each character and returns the char sequence itself afterwards.\n */\n@SinceKotlin(\"1.1\")\npublic inline fun S.onEach(action: (Char) -> Unit): S {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Accumulates value starting with the first character and applying [operation] from left to right to current accumulator value and each character.\n */\npublic inline fun CharSequence.reduce(operation: (acc: Char, Char) -> Char): Char {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty char sequence can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first character and applying [operation] from left to right\n * to current accumulator value and each character with its index in the original char sequence.\n * @param [operation] function that takes the index of a character, current accumulator value\n * and the character itself and calculates the next accumulator value.\n */\npublic inline fun CharSequence.reduceIndexed(operation: (index: Int, acc: Char, Char) -> Char): Char {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty char sequence can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last character and applying [operation] from right to left to each character and current accumulator value.\n */\npublic inline fun CharSequence.reduceRight(operation: (Char, acc: Char) -> Char): Char {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty char sequence can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last character and applying [operation] from right to left\n * to each character with its index in the original char sequence and current accumulator value.\n * @param [operation] function that takes the index of a character, the character itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun CharSequence.reduceRightIndexed(operation: (index: Int, Char, acc: Char) -> Char): Char {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty char sequence can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each character in the char sequence.\n */\npublic inline fun CharSequence.sumBy(selector: (Char) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each character in the char sequence.\n */\npublic inline fun CharSequence.sumByDouble(selector: (Char) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Splits this char sequence into a list of strings each not exceeding the given [size].\n * \n * The last string in the resulting list may have less characters than the given [size].\n * \n * @param size the number of elements to take in each string, must be positive and can be greater than the number of elements in this char sequence.\n * \n * @sample samples.collections.Collections.Transformations.chunked\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.chunked(size: Int): List {\n return windowed(size, size, partialWindows = true)\n}\n\n/**\n * Splits this char sequence into several char sequences each not exceeding the given [size]\n * and applies the given [transform] function to an each.\n * \n * @return list of results of the [transform] applied to an each char sequence.\n * \n * Note that the char sequence passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * The last char sequence may have less characters than the given [size].\n * \n * @param size the number of elements to take in each char sequence, must be positive and can be greater than the number of elements in this char sequence.\n * \n * @sample samples.text.Strings.chunkedTransform\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.chunked(size: Int, transform: (CharSequence) -> R): List {\n return windowed(size, size, partialWindows = true, transform = transform)\n}\n\n/**\n * Splits this char sequence into a sequence of strings each not exceeding the given [size].\n * \n * The last string in the resulting sequence may have less characters than the given [size].\n * \n * @param size the number of elements to take in each string, must be positive and can be greater than the number of elements in this char sequence.\n * \n * @sample samples.collections.Collections.Transformations.chunked\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.chunkedSequence(size: Int): Sequence {\n return chunkedSequence(size) { it.toString() }\n}\n\n/**\n * Splits this char sequence into several char sequences each not exceeding the given [size]\n * and applies the given [transform] function to an each.\n * \n * @return sequence of results of the [transform] applied to an each char sequence.\n * \n * Note that the char sequence passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * The last char sequence may have less characters than the given [size].\n * \n * @param size the number of elements to take in each char sequence, must be positive and can be greater than the number of elements in this char sequence.\n * \n * @sample samples.text.Strings.chunkedTransformToSequence\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.chunkedSequence(size: Int, transform: (CharSequence) -> R): Sequence {\n return windowedSequence(size, size, partialWindows = true, transform = transform)\n}\n\n/**\n * Splits the original char sequence into pair of char sequences,\n * where *first* char sequence contains characters for which [predicate] yielded `true`,\n * while *second* char sequence contains characters for which [predicate] yielded `false`.\n */\npublic inline fun CharSequence.partition(predicate: (Char) -> Boolean): Pair {\n val first = StringBuilder()\n val second = StringBuilder()\n for (element in this) {\n if (predicate(element)) {\n first.append(element)\n } else {\n second.append(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original string into pair of strings,\n * where *first* string contains characters for which [predicate] yielded `true`,\n * while *second* string contains characters for which [predicate] yielded `false`.\n */\npublic inline fun String.partition(predicate: (Char) -> Boolean): Pair {\n val first = StringBuilder()\n val second = StringBuilder()\n for (element in this) {\n if (predicate(element)) {\n first.append(element)\n } else {\n second.append(element)\n }\n }\n return Pair(first.toString(), second.toString())\n}\n\n/**\n * Returns a list of snapshots of the window of the given [size]\n * sliding along this char sequence with the given [step], where each\n * snapshot is a string.\n * \n * Several last strings may have less characters than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this char sequence.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.takeWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false): List {\n return windowed(size, step, partialWindows) { it.toString() }\n}\n\n/**\n * Returns a list of results of applying the given [transform] function to\n * an each char sequence representing a view over the window of the given [size]\n * sliding along this char sequence with the given [step].\n * \n * Note that the char sequence passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * Several last char sequences may have less characters than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this char sequence.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.averageWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false, transform: (CharSequence) -> R): List {\n checkWindowSizeStep(size, step)\n val thisSize = this.length\n val result = ArrayList((thisSize + step - 1) / step)\n var index = 0\n while (index < thisSize) {\n val end = index + size\n val coercedEnd = if (end > thisSize) { if (partialWindows) thisSize else break } else end\n result.add(transform(subSequence(index, coercedEnd)))\n index += step\n }\n return result\n}\n\n/**\n * Returns a sequence of snapshots of the window of the given [size]\n * sliding along this char sequence with the given [step], where each\n * snapshot is a string.\n * \n * Several last strings may have less characters than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this char sequence.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.takeWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.windowedSequence(size: Int, step: Int = 1, partialWindows: Boolean = false): Sequence {\n return windowedSequence(size, step, partialWindows) { it.toString() }\n}\n\n/**\n * Returns a sequence of results of applying the given [transform] function to\n * an each char sequence representing a view over the window of the given [size]\n * sliding along this char sequence with the given [step].\n * \n * Note that the char sequence passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * Several last char sequences may have less characters than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this char sequence.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.averageWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.windowedSequence(size: Int, step: Int = 1, partialWindows: Boolean = false, transform: (CharSequence) -> R): Sequence {\n checkWindowSizeStep(size, step)\n val windows = (if (partialWindows) indices else 0 until length - size + 1) step step\n return windows.asSequence().map { index -> transform(subSequence(index, (index + size).coerceAtMost(length))) }\n}\n\n/**\n * Returns a list of pairs built from the characters of `this` and the [other] char sequences with the same index\n * The returned list has length of the shortest char sequence.\n * \n * @sample samples.text.Strings.zip\n */\npublic infix fun CharSequence.zip(other: CharSequence): List> {\n return zip(other) { c1, c2 -> c1 to c2 }\n}\n\n/**\n * Returns a list of values built from the characters of `this` and the [other] char sequences with the same index\n * using the provided [transform] function applied to each pair of characters.\n * The returned list has length of the shortest char sequence.\n * \n * @sample samples.text.Strings.zipWithTransform\n */\npublic inline fun CharSequence.zip(other: CharSequence, transform: (a: Char, b: Char) -> V): List {\n val length = minOf(this.length, other.length)\n val list = ArrayList(length)\n for (i in 0 until length) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of pairs of each two adjacent characters in this char sequence.\n * \n * The returned list is empty if this char sequence contains less than two characters.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNext\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.zipWithNext(): List> {\n return zipWithNext { a, b -> a to b }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to an each pair of two adjacent characters in this char sequence.\n * \n * The returned list is empty if this char sequence contains less than two characters.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNextToFindDeltas\n */\n@SinceKotlin(\"1.2\")\npublic inline fun CharSequence.zipWithNext(transform: (a: Char, b: Char) -> R): List {\n val size = length - 1\n if (size < 1) return emptyList()\n val result = ArrayList(size)\n for (index in 0 until size) {\n result.add(transform(this[index], this[index + 1]))\n }\n return result\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original char sequence returning its characters when being iterated.\n */\npublic fun CharSequence.asIterable(): Iterable {\n if (this is String && isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original char sequence returning its characters when being iterated.\n */\npublic fun CharSequence.asSequence(): Sequence {\n if (this is String && isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n\npackage kotlin.text\n\nimport kotlin.contracts.contract\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trim(predicate: (Char) -> Boolean): CharSequence {\n var startIndex = 0\n var endIndex = length - 1\n var startFound = false\n\n while (startIndex <= endIndex) {\n val index = if (!startFound) startIndex else endIndex\n val match = predicate(this[index])\n\n if (!startFound) {\n if (!match)\n startFound = true\n else\n startIndex += 1\n } else {\n if (!match)\n break\n else\n endIndex -= 1\n }\n }\n\n return subSequence(startIndex, endIndex + 1)\n}\n\n/**\n * Returns a string having leading and trailing characters matching the [predicate] removed.\n */\npublic inline fun String.trim(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trim(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trimStart(predicate: (Char) -> Boolean): CharSequence {\n for (index in this.indices)\n if (!predicate(this[index]))\n return subSequence(index, length)\n\n return \"\"\n}\n\n/**\n * Returns a string having leading characters matching the [predicate] removed.\n */\npublic inline fun String.trimStart(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trimStart(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having trailing characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trimEnd(predicate: (Char) -> Boolean): CharSequence {\n for (index in this.indices.reversed())\n if (!predicate(this[index]))\n return subSequence(0, index + 1)\n\n return \"\"\n}\n\n/**\n * Returns a string having trailing characters matching the [predicate] removed.\n */\npublic inline fun String.trimEnd(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trimEnd(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing characters from the [chars] array removed.\n */\npublic fun CharSequence.trim(vararg chars: Char): CharSequence = trim { it in chars }\n\n/**\n * Returns a string having leading and trailing characters from the [chars] array removed.\n */\npublic fun String.trim(vararg chars: Char): String = trim { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having leading characters from the [chars] array removed.\n */\npublic fun CharSequence.trimStart(vararg chars: Char): CharSequence = trimStart { it in chars }\n\n/**\n * Returns a string having leading characters from the [chars] array removed.\n */\npublic fun String.trimStart(vararg chars: Char): String = trimStart { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having trailing characters from the [chars] array removed.\n */\npublic fun CharSequence.trimEnd(vararg chars: Char): CharSequence = trimEnd { it in chars }\n\n/**\n * Returns a string having trailing characters from the [chars] array removed.\n */\npublic fun String.trimEnd(vararg chars: Char): String = trimEnd { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing whitespace removed.\n */\npublic fun CharSequence.trim(): CharSequence = trim(Char::isWhitespace)\n\n/**\n * Returns a string having leading and trailing whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trim(): String = (this as CharSequence).trim().toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading whitespace removed.\n */\npublic fun CharSequence.trimStart(): CharSequence = trimStart(Char::isWhitespace)\n\n/**\n * Returns a string having leading whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trimStart(): String = (this as CharSequence).trimStart().toString()\n\n/**\n * Returns a sub sequence of this char sequence having trailing whitespace removed.\n */\npublic fun CharSequence.trimEnd(): CharSequence = trimEnd(Char::isWhitespace)\n\n/**\n * Returns a string having trailing whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trimEnd(): String = (this as CharSequence).trimEnd().toString()\n\n/**\n * Returns a char sequence with content of this char sequence padded at the beginning\n * to the specified [length] with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a char sequence of length at least [length] consisting of `this` char sequence prepended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padStart\n */\npublic fun CharSequence.padStart(length: Int, padChar: Char = ' '): CharSequence {\n if (length < 0)\n throw IllegalArgumentException(\"Desired length $length is less than zero.\")\n if (length <= this.length)\n return this.subSequence(0, this.length)\n\n val sb = StringBuilder(length)\n for (i in 1..(length - this.length))\n sb.append(padChar)\n sb.append(this)\n return sb\n}\n\n/**\n * Pads the string to the specified [length] at the beginning with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a string of length at least [length] consisting of `this` string prepended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padStart\n */\npublic fun String.padStart(length: Int, padChar: Char = ' '): String =\n (this as CharSequence).padStart(length, padChar).toString()\n\n/**\n * Returns a char sequence with content of this char sequence padded at the end\n * to the specified [length] with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a char sequence of length at least [length] consisting of `this` char sequence appended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padEnd\n */\npublic fun CharSequence.padEnd(length: Int, padChar: Char = ' '): CharSequence {\n if (length < 0)\n throw IllegalArgumentException(\"Desired length $length is less than zero.\")\n if (length <= this.length)\n return this.subSequence(0, this.length)\n\n val sb = StringBuilder(length)\n sb.append(this)\n for (i in 1..(length - this.length))\n sb.append(padChar)\n return sb\n}\n\n/**\n * Pads the string to the specified [length] at the end with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a string of length at least [length] consisting of `this` string appended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padEnd\n */\npublic fun String.padEnd(length: Int, padChar: Char = ' '): String =\n (this as CharSequence).padEnd(length, padChar).toString()\n\n/**\n * Returns `true` if this nullable char sequence is either `null` or empty.\n *\n * @sample samples.text.Strings.stringIsNullOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || this.length == 0\n}\n\n/**\n * Returns `true` if this char sequence is empty (contains no characters).\n *\n * @sample samples.text.Strings.stringIsEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isEmpty(): Boolean = length == 0\n\n/**\n * Returns `true` if this char sequence is not empty.\n *\n * @sample samples.text.Strings.stringIsNotEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isNotEmpty(): Boolean = length > 0\n\n// implemented differently in JVM and JS\n//public fun String.isBlank(): Boolean = length() == 0 || all { it.isWhitespace() }\n\n\n/**\n * Returns `true` if this char sequence is not empty and contains some characters except of whitespace characters.\n *\n * @sample samples.text.Strings.stringIsNotBlank\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isNotBlank(): Boolean = !isBlank()\n\n/**\n * Returns `true` if this nullable char sequence is either `null` or empty or consists solely of whitespace characters.\n *\n * @sample samples.text.Strings.stringIsNullOrBlank\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence?.isNullOrBlank(): Boolean {\n contract {\n returns(false) implies (this@isNullOrBlank != null)\n }\n\n return this == null || this.isBlank()\n}\n\n/**\n * Iterator for characters of the given char sequence.\n */\npublic operator fun CharSequence.iterator(): CharIterator = object : CharIterator() {\n private var index = 0\n\n public override fun nextChar(): Char = get(index++)\n\n public override fun hasNext(): Boolean = index < length\n}\n\n/** Returns the string if it is not `null`, or the empty string otherwise. */\n@kotlin.internal.InlineOnly\npublic inline fun String?.orEmpty(): String = this ?: \"\"\n\n/**\n * Returns this char sequence if it's not empty\n * or the result of calling [defaultValue] function if the char sequence is empty.\n *\n * @sample samples.text.Strings.stringIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun C.ifEmpty(defaultValue: () -> R): R where C : CharSequence, C : R =\n if (isEmpty()) defaultValue() else this\n\n/**\n * Returns this char sequence if it is not empty and doesn't consist solely of whitespace characters,\n * or the result of calling [defaultValue] function otherwise.\n *\n * @sample samples.text.Strings.stringIfBlank\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun C.ifBlank(defaultValue: () -> R): R where C : CharSequence, C : R =\n if (isBlank()) defaultValue() else this\n\n/**\n * Returns the range of valid character indices for this char sequence.\n */\npublic val CharSequence.indices: IntRange\n get() = 0..length - 1\n\n/**\n * Returns the index of the last character in the char sequence or -1 if it is empty.\n */\npublic val CharSequence.lastIndex: Int\n get() = this.length - 1\n\n/**\n * Returns `true` if this CharSequence has Unicode surrogate pair at the specified [index].\n */\npublic fun CharSequence.hasSurrogatePairAt(index: Int): Boolean {\n return index in 0..length - 2\n && this[index].isHighSurrogate()\n && this[index + 1].isLowSurrogate()\n}\n\n/**\n * Returns a substring specified by the given [range] of indices.\n */\npublic fun String.substring(range: IntRange): String = substring(range.start, range.endInclusive + 1)\n\n/**\n * Returns a subsequence of this char sequence specified by the given [range] of indices.\n */\npublic fun CharSequence.subSequence(range: IntRange): CharSequence = subSequence(range.start, range.endInclusive + 1)\n\n/**\n * Returns a subsequence of this char sequence.\n *\n * This extension is chosen only for invocation with old-named parameters.\n * Replace parameter names with the same as those of [CharSequence.subSequence].\n */\n@kotlin.internal.InlineOnly\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning\n@Deprecated(\"Use parameters named startIndex and endIndex.\", ReplaceWith(\"subSequence(startIndex = start, endIndex = end)\"))\npublic inline fun String.subSequence(start: Int, end: Int): CharSequence = subSequence(start, end)\n\n/**\n * Returns a substring of chars from a range of this char sequence starting at the [startIndex] and ending right before the [endIndex].\n *\n * @param startIndex the start index (inclusive).\n * @param endIndex the end index (exclusive). If not specified, the length of the char sequence is used.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.substring(startIndex: Int, endIndex: Int = length): String = subSequence(startIndex, endIndex).toString()\n\n/**\n * Returns a substring of chars at indices from the specified [range] of this char sequence.\n */\npublic fun CharSequence.substring(range: IntRange): String = subSequence(range.start, range.endInclusive + 1).toString()\n\n/**\n * Returns a substring before the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBefore(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring before the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBefore(delimiter: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring after the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfter(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + 1, length)\n}\n\n/**\n * Returns a substring after the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfter(delimiter: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + delimiter.length, length)\n}\n\n/**\n * Returns a substring before the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBeforeLast(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring before the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBeforeLast(delimiter: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring after the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfterLast(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + 1, length)\n}\n\n/**\n * Returns a substring after the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfterLast(delimiter: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + delimiter.length, length)\n}\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given range\n * is replaced with the [replacement] char sequence.\n * @param startIndex the index of the first character to be replaced.\n * @param endIndex the index of the first character after the replacement to keep in the string.\n */\npublic fun CharSequence.replaceRange(startIndex: Int, endIndex: Int, replacement: CharSequence): CharSequence {\n if (endIndex < startIndex)\n throw IndexOutOfBoundsException(\"End index ($endIndex) is less than start index ($startIndex).\")\n val sb = StringBuilder()\n sb.append(this, 0, startIndex)\n sb.append(replacement)\n sb.append(this, endIndex, length)\n return sb\n}\n\n/**\n * Replaces the part of the string at the given range with the [replacement] char sequence.\n * @param startIndex the index of the first character to be replaced.\n * @param endIndex the index of the first character after the replacement to keep in the string.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.replaceRange(startIndex: Int, endIndex: Int, replacement: CharSequence): String =\n (this as CharSequence).replaceRange(startIndex, endIndex, replacement).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given [range]\n * is replaced with the [replacement] char sequence.\n *\n * The end index of the [range] is included in the part to be replaced.\n */\npublic fun CharSequence.replaceRange(range: IntRange, replacement: CharSequence): CharSequence =\n replaceRange(range.start, range.endInclusive + 1, replacement)\n\n/**\n * Replace the part of string at the given [range] with the [replacement] string.\n *\n * The end index of the [range] is included in the part to be replaced.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.replaceRange(range: IntRange, replacement: CharSequence): String =\n (this as CharSequence).replaceRange(range, replacement).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given range is removed.\n *\n * @param startIndex the index of the first character to be removed.\n * @param endIndex the index of the first character after the removed part to keep in the string.\n *\n * [endIndex] is not included in the removed part.\n */\npublic fun CharSequence.removeRange(startIndex: Int, endIndex: Int): CharSequence {\n if (endIndex < startIndex)\n throw IndexOutOfBoundsException(\"End index ($endIndex) is less than start index ($startIndex).\")\n\n if (endIndex == startIndex)\n return this.subSequence(0, length)\n\n val sb = StringBuilder(length - (endIndex - startIndex))\n sb.append(this, 0, startIndex)\n sb.append(this, endIndex, length)\n return sb\n}\n\n/**\n * Removes the part of a string at a given range.\n * @param startIndex the index of the first character to be removed.\n * @param endIndex the index of the first character after the removed part to keep in the string.\n *\n * [endIndex] is not included in the removed part.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.removeRange(startIndex: Int, endIndex: Int): String =\n (this as CharSequence).removeRange(startIndex, endIndex).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given [range] is removed.\n *\n * The end index of the [range] is included in the removed part.\n */\npublic fun CharSequence.removeRange(range: IntRange): CharSequence = removeRange(range.start, range.endInclusive + 1)\n\n/**\n * Removes the part of a string at the given [range].\n *\n * The end index of the [range] is included in the removed part.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.removeRange(range: IntRange): String =\n (this as CharSequence).removeRange(range).toString()\n\n/**\n * If this char sequence starts with the given [prefix], returns a new char sequence\n * with the prefix removed. Otherwise, returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removePrefix(prefix: CharSequence): CharSequence {\n if (startsWith(prefix)) {\n return subSequence(prefix.length, length)\n }\n return subSequence(0, length)\n}\n\n/**\n * If this string starts with the given [prefix], returns a copy of this string\n * with the prefix removed. Otherwise, returns this string.\n */\npublic fun String.removePrefix(prefix: CharSequence): String {\n if (startsWith(prefix)) {\n return substring(prefix.length)\n }\n return this\n}\n\n/**\n * If this char sequence ends with the given [suffix], returns a new char sequence\n * with the suffix removed. Otherwise, returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSuffix(suffix: CharSequence): CharSequence {\n if (endsWith(suffix)) {\n return subSequence(0, length - suffix.length)\n }\n return subSequence(0, length)\n}\n\n/**\n * If this string ends with the given [suffix], returns a copy of this string\n * with the suffix removed. Otherwise, returns this string.\n */\npublic fun String.removeSuffix(suffix: CharSequence): String {\n if (endsWith(suffix)) {\n return substring(0, length - suffix.length)\n }\n return this\n}\n\n/**\n * When this char sequence starts with the given [prefix] and ends with the given [suffix],\n * returns a new char sequence having both the given [prefix] and [suffix] removed.\n * Otherwise returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSurrounding(prefix: CharSequence, suffix: CharSequence): CharSequence {\n if ((length >= prefix.length + suffix.length) && startsWith(prefix) && endsWith(suffix)) {\n return subSequence(prefix.length, length - suffix.length)\n }\n return subSequence(0, length)\n}\n\n/**\n * Removes from a string both the given [prefix] and [suffix] if and only if\n * it starts with the [prefix] and ends with the [suffix].\n * Otherwise returns this string unchanged.\n */\npublic fun String.removeSurrounding(prefix: CharSequence, suffix: CharSequence): String {\n if ((length >= prefix.length + suffix.length) && startsWith(prefix) && endsWith(suffix)) {\n return substring(prefix.length, length - suffix.length)\n }\n return this\n}\n\n/**\n * When this char sequence starts with and ends with the given [delimiter],\n * returns a new char sequence having this [delimiter] removed both from the start and end.\n * Otherwise returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSurrounding(delimiter: CharSequence): CharSequence = removeSurrounding(delimiter, delimiter)\n\n/**\n * Removes the given [delimiter] string from both the start and the end of this string\n * if and only if it starts with and ends with the [delimiter].\n * Otherwise returns this string unchanged.\n */\npublic fun String.removeSurrounding(delimiter: CharSequence): String = removeSurrounding(delimiter, delimiter)\n\n/**\n * Replace part of string before the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBefore(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string before the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBefore(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string after the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfter(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + 1, length, replacement)\n}\n\n/**\n * Replace part of string after the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfter(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + delimiter.length, length, replacement)\n}\n\n/**\n * Replace part of string after the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfterLast(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + delimiter.length, length, replacement)\n}\n\n/**\n * Replace part of string after the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfterLast(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + 1, length, replacement)\n}\n\n/**\n * Replace part of string before the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBeforeLast(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string before the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBeforeLast(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n\n// public fun String.replace(oldChar: Char, newChar: Char, ignoreCase: Boolean): String // JVM- and JS-specific\n// public fun String.replace(oldValue: String, newValue: String, ignoreCase: Boolean): String // JVM- and JS-specific\n\n/**\n * Returns a new string obtained by replacing each substring of this char sequence that matches the given regular expression\n * with the given [replacement].\n *\n * The [replacement] can consist of any combination of literal text and $-substitutions. To treat the replacement string\n * literally escape it with the [kotlin.text.Regex.Companion.escapeReplacement] method.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replace(regex: Regex, replacement: String): String = regex.replace(this, replacement)\n\n/**\n * Returns a new string obtained by replacing each substring of this char sequence that matches the given regular expression\n * with the result of the given function [transform] that takes [MatchResult] and returns a string to be used as a\n * replacement for that match.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replace(regex: Regex, noinline transform: (MatchResult) -> CharSequence): String =\n regex.replace(this, transform)\n\n/**\n * Replaces the first occurrence of the given regular expression [regex] in this char sequence with specified [replacement] expression.\n *\n * @param replacement A replacement expression that can include substitutions. See [Regex.replaceFirst] for details.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replaceFirst(regex: Regex, replacement: String): String = regex.replaceFirst(this, replacement)\n\n\n/**\n * Returns `true` if this char sequence matches the given regular expression.\n */\n@kotlin.internal.InlineOnly\npublic inline infix fun CharSequence.matches(regex: Regex): Boolean = regex.matches(this)\n\n/**\n * Implementation of [regionMatches] for CharSequences.\n * Invoked when it's already known that arguments are not Strings, so that no additional type checks are performed.\n */\ninternal fun CharSequence.regionMatchesImpl(thisOffset: Int, other: CharSequence, otherOffset: Int, length: Int, ignoreCase: Boolean): Boolean {\n if ((otherOffset < 0) || (thisOffset < 0) || (thisOffset > this.length - length) || (otherOffset > other.length - length)) {\n return false\n }\n\n for (index in 0 until length) {\n if (!this[thisOffset + index].equals(other[otherOffset + index], ignoreCase))\n return false\n }\n return true\n}\n\n/**\n * Returns `true` if this char sequence starts with the specified character.\n */\npublic fun CharSequence.startsWith(char: Char, ignoreCase: Boolean = false): Boolean =\n this.length > 0 && this[0].equals(char, ignoreCase)\n\n/**\n * Returns `true` if this char sequence ends with the specified character.\n */\npublic fun CharSequence.endsWith(char: Char, ignoreCase: Boolean = false): Boolean =\n this.length > 0 && this[lastIndex].equals(char, ignoreCase)\n\n/**\n * Returns `true` if this char sequence starts with the specified prefix.\n */\npublic fun CharSequence.startsWith(prefix: CharSequence, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && prefix is String)\n return this.startsWith(prefix)\n else\n return regionMatchesImpl(0, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if a substring of this char sequence starting at the specified offset [startIndex] starts with the specified prefix.\n */\npublic fun CharSequence.startsWith(prefix: CharSequence, startIndex: Int, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && prefix is String)\n return this.startsWith(prefix, startIndex)\n else\n return regionMatchesImpl(startIndex, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if this char sequence ends with the specified suffix.\n */\npublic fun CharSequence.endsWith(suffix: CharSequence, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && suffix is String)\n return this.endsWith(suffix)\n else\n return regionMatchesImpl(length - suffix.length, suffix, 0, suffix.length, ignoreCase)\n}\n\n\n// common prefix and suffix\n\n/**\n * Returns the longest string `prefix` such that this char sequence and [other] char sequence both start with this prefix,\n * taking care not to split surrogate pairs.\n * If this and [other] have no common prefix, returns the empty string.\n\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @sample samples.text.Strings.commonPrefixWith\n */\npublic fun CharSequence.commonPrefixWith(other: CharSequence, ignoreCase: Boolean = false): String {\n val shortestLength = minOf(this.length, other.length)\n\n var i = 0\n while (i < shortestLength && this[i].equals(other[i], ignoreCase = ignoreCase)) {\n i++\n }\n if (this.hasSurrogatePairAt(i - 1) || other.hasSurrogatePairAt(i - 1)) {\n i--\n }\n return subSequence(0, i).toString()\n}\n\n/**\n * Returns the longest string `suffix` such that this char sequence and [other] char sequence both end with this suffix,\n * taking care not to split surrogate pairs.\n * If this and [other] have no common suffix, returns the empty string.\n\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @sample samples.text.Strings.commonSuffixWith\n */\npublic fun CharSequence.commonSuffixWith(other: CharSequence, ignoreCase: Boolean = false): String {\n val thisLength = this.length\n val otherLength = other.length\n val shortestLength = minOf(thisLength, otherLength)\n\n var i = 0\n while (i < shortestLength && this[thisLength - i - 1].equals(other[otherLength - i - 1], ignoreCase = ignoreCase)) {\n i++\n }\n if (this.hasSurrogatePairAt(thisLength - i - 1) || other.hasSurrogatePairAt(otherLength - i - 1)) {\n i--\n }\n return subSequence(thisLength - i, thisLength).toString()\n}\n\n\n// indexOfAny()\n\n/**\n * Finds the index of the first occurrence of any of the specified [chars] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the first occurrence of matched character from [chars] or -1 if none of [chars] are found.\n *\n */\npublic fun CharSequence.indexOfAny(chars: CharArray, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n if (!ignoreCase && chars.size == 1 && this is String) {\n val char = chars.single()\n return nativeIndexOf(char, startIndex)\n }\n\n for (index in startIndex.coerceAtLeast(0)..lastIndex) {\n val charAtIndex = get(index)\n if (chars.any { it.equals(charAtIndex, ignoreCase) })\n return index\n }\n return -1\n}\n\n/**\n * Finds the index of the last occurrence of any of the specified [chars] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the last occurrence of matched character from [chars] or -1 if none of [chars] are found.\n *\n */\npublic fun CharSequence.lastIndexOfAny(chars: CharArray, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n if (!ignoreCase && chars.size == 1 && this is String) {\n val char = chars.single()\n return nativeLastIndexOf(char, startIndex)\n }\n\n\n for (index in startIndex.coerceAtMost(lastIndex) downTo 0) {\n val charAtIndex = get(index)\n if (chars.any { it.equals(charAtIndex, ignoreCase) })\n return index\n }\n\n return -1\n}\n\n\nprivate fun CharSequence.indexOf(other: CharSequence, startIndex: Int, endIndex: Int, ignoreCase: Boolean, last: Boolean = false): Int {\n val indices = if (!last)\n startIndex.coerceAtLeast(0)..endIndex.coerceAtMost(length)\n else\n startIndex.coerceAtMost(lastIndex) downTo endIndex.coerceAtLeast(0)\n\n if (this is String && other is String) { // smart cast\n for (index in indices) {\n if (other.regionMatches(0, this, index, other.length, ignoreCase))\n return index\n }\n } else {\n for (index in indices) {\n if (other.regionMatchesImpl(0, this, index, other.length, ignoreCase))\n return index\n }\n }\n return -1\n}\n\nprivate fun CharSequence.findAnyOf(strings: Collection, startIndex: Int, ignoreCase: Boolean, last: Boolean): Pair? {\n if (!ignoreCase && strings.size == 1) {\n val string = strings.single()\n val index = if (!last) indexOf(string, startIndex) else lastIndexOf(string, startIndex)\n return if (index < 0) null else index to string\n }\n\n val indices = if (!last) startIndex.coerceAtLeast(0)..length else startIndex.coerceAtMost(lastIndex) downTo 0\n\n if (this is String) {\n for (index in indices) {\n val matchingString = strings.firstOrNull { it.regionMatches(0, this, index, it.length, ignoreCase) }\n if (matchingString != null)\n return index to matchingString\n }\n } else {\n for (index in indices) {\n val matchingString = strings.firstOrNull { it.regionMatchesImpl(0, this, index, it.length, ignoreCase) }\n if (matchingString != null)\n return index to matchingString\n }\n }\n\n return null\n}\n\n/**\n * Finds the first occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return A pair of an index of the first occurrence of matched string from [strings] and the string matched\n * or `null` if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.findAnyOf(strings: Collection, startIndex: Int = 0, ignoreCase: Boolean = false): Pair? =\n findAnyOf(strings, startIndex, ignoreCase, last = false)\n\n/**\n * Finds the last occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return A pair of an index of the last occurrence of matched string from [strings] and the string matched or `null` if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the end toward the beginning of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.findLastAnyOf(strings: Collection, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Pair? =\n findAnyOf(strings, startIndex, ignoreCase, last = true)\n\n/**\n * Finds the index of the first occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the first occurrence of matched string from [strings] or -1 if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.indexOfAny(strings: Collection, startIndex: Int = 0, ignoreCase: Boolean = false): Int =\n findAnyOf(strings, startIndex, ignoreCase, last = false)?.first ?: -1\n\n/**\n * Finds the index of the last occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the last occurrence of matched string from [strings] or -1 if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the end toward the beginning of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.lastIndexOfAny(strings: Collection, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int =\n findAnyOf(strings, startIndex, ignoreCase, last = true)?.first ?: -1\n\n\n// indexOf\n\n/**\n * Returns the index within this string of the first occurrence of the specified character, starting from the specified [startIndex].\n *\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the first occurrence of [char] or -1 if none is found.\n */\npublic fun CharSequence.indexOf(char: Char, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOfAny(charArrayOf(char), startIndex, ignoreCase)\n else\n nativeIndexOf(char, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the first occurrence of the specified [string],\n * starting from the specified [startIndex].\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the first occurrence of [string] or `-1` if none is found.\n */\npublic fun CharSequence.indexOf(string: String, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOf(string, startIndex, length, ignoreCase)\n else\n nativeIndexOf(string, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the last occurrence of the specified character,\n * starting from the specified [startIndex].\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the first occurrence of [char] or -1 if none is found.\n */\npublic fun CharSequence.lastIndexOf(char: Char, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n lastIndexOfAny(charArrayOf(char), startIndex, ignoreCase)\n else\n nativeLastIndexOf(char, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the last occurrence of the specified [string],\n * starting from the specified [startIndex].\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the first occurrence of [string] or -1 if none is found.\n */\npublic fun CharSequence.lastIndexOf(string: String, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOf(string, startIndex, 0, ignoreCase, last = true)\n else\n nativeLastIndexOf(string, startIndex)\n}\n\n/**\n * Returns `true` if this char sequence contains the specified [other] sequence of characters as a substring.\n *\n * @param ignoreCase `true` to ignore character case when comparing strings. By default `false`.\n */\n@Suppress(\"INAPPLICABLE_OPERATOR_MODIFIER\")\npublic operator fun CharSequence.contains(other: CharSequence, ignoreCase: Boolean = false): Boolean =\n if (other is String)\n indexOf(other, ignoreCase = ignoreCase) >= 0\n else\n indexOf(other, 0, length, ignoreCase) >= 0\n\n\n\n/**\n * Returns `true` if this char sequence contains the specified character [char].\n *\n * @param ignoreCase `true` to ignore character case when comparing characters. By default `false`.\n */\n@Suppress(\"INAPPLICABLE_OPERATOR_MODIFIER\")\npublic operator fun CharSequence.contains(char: Char, ignoreCase: Boolean = false): Boolean =\n indexOf(char, ignoreCase = ignoreCase) >= 0\n\n/**\n * Returns `true` if this char sequence contains at least one match of the specified regular expression [regex].\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharSequence.contains(regex: Regex): Boolean = regex.containsMatchIn(this)\n\n\n// rangesDelimitedBy\n\n\nprivate class DelimitedRangesSequence(\n private val input: CharSequence,\n private val startIndex: Int,\n private val limit: Int,\n private val getNextMatch: CharSequence.(currentIndex: Int) -> Pair?\n) : Sequence {\n\n override fun iterator(): Iterator = object : Iterator {\n var nextState: Int = -1 // -1 for unknown, 0 for done, 1 for continue\n var currentStartIndex: Int = startIndex.coerceIn(0, input.length)\n var nextSearchIndex: Int = currentStartIndex\n var nextItem: IntRange? = null\n var counter: Int = 0\n\n private fun calcNext() {\n if (nextSearchIndex < 0) {\n nextState = 0\n nextItem = null\n } else {\n if (limit > 0 && ++counter >= limit || nextSearchIndex > input.length) {\n nextItem = currentStartIndex..input.lastIndex\n nextSearchIndex = -1\n } else {\n val match = input.getNextMatch(nextSearchIndex)\n if (match == null) {\n nextItem = currentStartIndex..input.lastIndex\n nextSearchIndex = -1\n } else {\n val (index, length) = match\n nextItem = currentStartIndex until index\n currentStartIndex = index + length\n nextSearchIndex = currentStartIndex + if (length == 0) 1 else 0\n }\n }\n nextState = 1\n }\n }\n\n override fun next(): IntRange {\n if (nextState == -1)\n calcNext()\n if (nextState == 0)\n throw NoSuchElementException()\n val result = nextItem as IntRange\n // Clean next to avoid keeping reference on yielded instance\n nextItem = null\n nextState = -1\n return result\n }\n\n override fun hasNext(): Boolean {\n if (nextState == -1)\n calcNext()\n return nextState == 1\n }\n }\n}\n\n/**\n * Returns a sequence of index ranges of substrings in this char sequence around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param startIndex The index to start searching delimiters from.\n * No range having its start value less than [startIndex] is returned.\n * [startIndex] is coerced to be non-negative and not greater than length of this string.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n */\nprivate fun CharSequence.rangesDelimitedBy(delimiters: CharArray, startIndex: Int = 0, ignoreCase: Boolean = false, limit: Int = 0): Sequence {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" })\n\n return DelimitedRangesSequence(this, startIndex, limit, { currentIndex ->\n indexOfAny(delimiters, currentIndex, ignoreCase = ignoreCase).let { if (it < 0) null else it to 1 }\n })\n}\n\n\n/**\n * Returns a sequence of index ranges of substrings in this char sequence around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param startIndex The index to start searching delimiters from.\n * No range having its start value less than [startIndex] is returned.\n * [startIndex] is coerced to be non-negative and not greater than length of this string.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [delimiters]\n * that matches this string at that position.\n */\nprivate fun CharSequence.rangesDelimitedBy(delimiters: Array, startIndex: Int = 0, ignoreCase: Boolean = false, limit: Int = 0): Sequence {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" } )\n val delimitersList = delimiters.asList()\n\n return DelimitedRangesSequence(this, startIndex, limit, { currentIndex -> findAnyOf(delimitersList, currentIndex, ignoreCase = ignoreCase, last = false)?.let { it.first to it.second.length } })\n\n}\n\n\n// split\n\n/**\n * Splits this char sequence to a sequence of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [delimiters]\n * that matches this string at that position.\n */\npublic fun CharSequence.splitToSequence(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): Sequence =\n rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).map { substring(it) }\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and matches at each position the first element in [delimiters]\n * that is equal to a delimiter in this instance at that position.\n */\npublic fun CharSequence.split(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): List {\n if (delimiters.size == 1) {\n val delimiter = delimiters[0]\n if (!delimiter.isEmpty()) {\n return split(delimiter, ignoreCase, limit)\n }\n }\n\n return rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).asIterable().map { substring(it) }\n}\n\n/**\n * Splits this char sequence to a sequence of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\npublic fun CharSequence.splitToSequence(vararg delimiters: Char, ignoreCase: Boolean = false, limit: Int = 0): Sequence =\n rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).map { substring(it) }\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\npublic fun CharSequence.split(vararg delimiters: Char, ignoreCase: Boolean = false, limit: Int = 0): List {\n if (delimiters.size == 1) {\n return split(delimiters[0].toString(), ignoreCase, limit)\n }\n\n return rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).asIterable().map { substring(it) }\n}\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiter].\n * This is specialized version of split which receives single non-empty delimiter and offers better performance\n *\n * @param delimiter String used as delimiter\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\nprivate fun CharSequence.split(delimiter: String, ignoreCase: Boolean, limit: Int): List {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" })\n\n var currentOffset = 0\n var nextIndex = indexOf(delimiter, currentOffset, ignoreCase)\n if (nextIndex == -1 || limit == 1) {\n return listOf(this.toString())\n }\n\n val isLimited = limit > 0\n val result = ArrayList(if (isLimited) limit.coerceAtMost(10) else 10)\n do {\n result.add(substring(currentOffset, nextIndex))\n currentOffset = nextIndex + delimiter.length\n // Do not search for next occurrence if we're reaching limit\n if (isLimited && result.size == limit - 1) break\n nextIndex = indexOf(delimiter, currentOffset, ignoreCase)\n } while (nextIndex != -1)\n\n result.add(substring(currentOffset, length))\n return result\n}\n\n/**\n * Splits this char sequence around matches of the given regular expression.\n *\n * @param limit Non-negative value specifying the maximum number of substrings to return.\n * Zero by default means no limit is set.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.split(regex: Regex, limit: Int = 0): List = regex.split(this, limit)\n\n/**\n * Splits this char sequence to a sequence of lines delimited by any of the following character sequences: CRLF, LF or CR.\n *\n * The lines returned do not include terminating line separators.\n */\npublic fun CharSequence.lineSequence(): Sequence = splitToSequence(\"\\r\\n\", \"\\n\", \"\\r\")\n\n/**\n * Splits this char sequence to a list of lines delimited by any of the following character sequences: CRLF, LF or CR.\n *\n * The lines returned do not include terminating line separators.\n */\npublic fun CharSequence.lines(): List = lineSequence().toList()\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\nimport kotlin.js.RegExp\n\n/**\n * Converts the characters in the specified array to a string.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun String(chars: CharArray): String {\n var result = \"\"\n for (char in chars) {\n result += char\n }\n return result\n}\n\n/**\n * Converts the characters from a portion of the specified array to a string.\n *\n * @throws IndexOutOfBoundsException if either [offset] or [length] are less than zero\n * or `offset + length` is out of [chars] array bounds.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun String(chars: CharArray, offset: Int, length: Int): String {\n if (offset < 0 || length < 0 || chars.size - offset < length)\n throw IndexOutOfBoundsException(\"size: ${chars.size}; offset: $offset; length: $length\")\n var result = \"\"\n for (index in offset until offset + length) {\n result += chars[index]\n }\n return result\n}\n\n/**\n * Concatenates characters in this [CharArray] into a String.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun CharArray.concatToString(): String {\n var result = \"\"\n for (char in this) {\n result += char\n }\n return result\n}\n\n/**\n * Concatenates characters in this [CharArray] or its subrange into a String.\n *\n * @param startIndex the beginning (inclusive) of the subrange of characters, 0 by default.\n * @param endIndex the end (exclusive) of the subrange of characters, size of this array by default.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n@ExperimentalStdlibApi\npublic actual fun CharArray.concatToString(startIndex: Int = 0, endIndex: Int = this.size): String {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, this.size)\n var result = \"\"\n for (index in startIndex until endIndex) {\n result += this[index]\n }\n return result\n}\n\n/**\n * Returns a [CharArray] containing characters of this string.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun String.toCharArray(): CharArray {\n return CharArray(length) { get(it) }\n}\n\n/**\n * Returns a [CharArray] containing characters of this string or its substring.\n *\n * @param startIndex the beginning (inclusive) of the substring, 0 by default.\n * @param endIndex the end (exclusive) of the substring, length of this string by default.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the length of this string.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n@ExperimentalStdlibApi\npublic actual fun String.toCharArray(startIndex: Int = 0, endIndex: Int = this.length): CharArray {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, length)\n return CharArray(endIndex - startIndex) { get(startIndex + it) }\n}\n\n/**\n * Decodes a string from the bytes in UTF-8 encoding in this array.\n *\n * Malformed byte sequences are replaced by the replacement char `\\uFFFD`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun ByteArray.decodeToString(): String {\n return decodeUtf8(this, 0, size, false)\n}\n\n/**\n * Decodes a string from the bytes in UTF-8 encoding in this array or its subrange.\n *\n * @param startIndex the beginning (inclusive) of the subrange to decode, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to decode, size of this array by default.\n * @param throwOnInvalidSequence specifies whether to throw an exception on malformed byte sequence or replace it by the replacement char `\\uFFFD`.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n * @throws CharacterCodingException if the byte array contains malformed UTF-8 byte sequence and [throwOnInvalidSequence] is true.\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n@ExperimentalStdlibApi\npublic actual fun ByteArray.decodeToString(\n startIndex: Int = 0,\n endIndex: Int = this.size,\n throwOnInvalidSequence: Boolean = false\n): String {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, this.size)\n return decodeUtf8(this, startIndex, endIndex, throwOnInvalidSequence)\n}\n\n/**\n * Encodes this string to an array of bytes in UTF-8 encoding.\n *\n * Any malformed char sequence is replaced by the replacement byte sequence.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun String.encodeToByteArray(): ByteArray {\n return encodeUtf8(this, 0, length, false)\n}\n\n/**\n * Encodes this string or its substring to an array of bytes in UTF-8 encoding.\n *\n * @param startIndex the beginning (inclusive) of the substring to encode, 0 by default.\n * @param endIndex the end (exclusive) of the substring to encode, length of this string by default.\n * @param throwOnInvalidSequence specifies whether to throw an exception on malformed char sequence or replace.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the length of this string.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n * @throws CharacterCodingException if this string contains malformed char sequence and [throwOnInvalidSequence] is true.\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n@ExperimentalStdlibApi\npublic actual fun String.encodeToByteArray(\n startIndex: Int = 0,\n endIndex: Int = this.length,\n throwOnInvalidSequence: Boolean = false\n): ByteArray {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, length)\n return encodeUtf8(this, startIndex, endIndex, throwOnInvalidSequence)\n}\n\n/**\n * Returns a copy of this string converted to upper case using the rules of the default locale.\n *\n * @sample samples.text.Strings.toUpperCase\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toUpperCase(): String = asDynamic().toUpperCase()\n\n/**\n * Returns a copy of this string converted to lower case using the rules of the default locale.\n *\n * @sample samples.text.Strings.toLowerCase\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toLowerCase(): String = asDynamic().toLowerCase()\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeIndexOf(str: String, fromIndex: Int): Int = asDynamic().indexOf(str, fromIndex)\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeLastIndexOf(str: String, fromIndex: Int): Int = asDynamic().lastIndexOf(str, fromIndex)\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeStartsWith(s: String, position: Int): Boolean = asDynamic().startsWith(s, position)\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeEndsWith(s: String): Boolean = asDynamic().endsWith(s)\n\n@kotlin.internal.InlineOnly\npublic actual inline fun String.substring(startIndex: Int): String = asDynamic().substring(startIndex)\n\n@kotlin.internal.InlineOnly\npublic actual inline fun String.substring(startIndex: Int, endIndex: Int): String = asDynamic().substring(startIndex, endIndex)\n\n@kotlin.internal.InlineOnly\npublic inline fun String.concat(str: String): String = asDynamic().concat(str)\n\n@kotlin.internal.InlineOnly\npublic inline fun String.match(regex: String): Array? = asDynamic().match(regex)\n\n//native public fun String.trim(): String\n//TODO: String.replace to implement effective trimLeading and trimTrailing\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeReplace(pattern: RegExp, replacement: String): String = asDynamic().replace(pattern, replacement)\n\n@SinceKotlin(\"1.2\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.compareTo(other: String, ignoreCase: Boolean = false): Int {\n if (ignoreCase) {\n val n1 = this.length\n val n2 = other.length\n val min = minOf(n1, n2)\n if (min == 0) return n1 - n2\n var start = 0\n while (true) {\n val end = minOf(start + 16, min)\n var s1 = this.substring(start, end)\n var s2 = other.substring(start, end)\n if (s1 != s2) {\n s1 = s1.toUpperCase()\n s2 = s2.toUpperCase()\n if (s1 != s2) {\n s1 = s1.toLowerCase()\n s2 = s2.toLowerCase()\n if (s1 != s2) {\n return s1.compareTo(s2)\n }\n }\n }\n if (end == min) break\n start = end\n }\n return n1 - n2\n } else {\n return compareTo(other)\n }\n}\n\n\nprivate val STRING_CASE_INSENSITIVE_ORDER = Comparator { a, b -> a.compareTo(b, ignoreCase = true) }\n\n@SinceKotlin(\"1.2\")\npublic actual val String.Companion.CASE_INSENSITIVE_ORDER: Comparator\n get() = STRING_CASE_INSENSITIVE_ORDER\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class UByteArray\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@PublishedApi\ninternal constructor(@PublishedApi internal val storage: ByteArray) : Collection {\n\n /** Creates a new array of the specified [size], with all elements initialized to zero. */\n public constructor(size: Int) : this(ByteArray(size))\n\n /**\n * Returns the array element at the given [index]. This method can be called using the index operator.\n *\n * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n public operator fun get(index: Int): UByte = storage[index].toUByte()\n\n /**\n * Sets the element at the given [index] to the given [value]. This method can be called using the index operator.\n *\n * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n public operator fun set(index: Int, value: UByte) {\n storage[index] = value.toByte()\n }\n\n /** Returns the number of elements in the array. */\n public override val size: Int get() = storage.size\n\n /** Creates an iterator over the elements of the array. */\n public override operator fun iterator(): UByteIterator = Iterator(storage)\n\n private class Iterator(private val array: ByteArray) : UByteIterator() {\n private var index = 0\n override fun hasNext() = index < array.size\n override fun nextUByte() = if (index < array.size) array[index++].toUByte() else throw NoSuchElementException(index.toString())\n }\n\n override fun contains(element: UByte): Boolean {\n // TODO: Eliminate this check after KT-30016 gets fixed.\n // Currently JS BE does not generate special bridge method for this method.\n if ((element as Any?) !is UByte) return false\n\n return storage.contains(element.toByte())\n }\n\n override fun containsAll(elements: Collection): Boolean {\n return (elements as Collection<*>).all { it is UByte && storage.contains(it.toByte()) }\n }\n\n override fun isEmpty(): Boolean = this.storage.size == 0\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray(size: Int, init: (Int) -> UByte): UByteArray {\n return UByteArray(ByteArray(size) { index -> init(index).toByte() })\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ubyteArrayOf(vararg elements: UByte): UByteArray = elements\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class UIntArray\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@PublishedApi\ninternal constructor(@PublishedApi internal val storage: IntArray) : Collection {\n\n /** Creates a new array of the specified [size], with all elements initialized to zero. */\n public constructor(size: Int) : this(IntArray(size))\n\n /**\n * Returns the array element at the given [index]. This method can be called using the index operator.\n *\n * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n public operator fun get(index: Int): UInt = storage[index].toUInt()\n\n /**\n * Sets the element at the given [index] to the given [value]. This method can be called using the index operator.\n *\n * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n public operator fun set(index: Int, value: UInt) {\n storage[index] = value.toInt()\n }\n\n /** Returns the number of elements in the array. */\n public override val size: Int get() = storage.size\n\n /** Creates an iterator over the elements of the array. */\n public override operator fun iterator(): UIntIterator = Iterator(storage)\n\n private class Iterator(private val array: IntArray) : UIntIterator() {\n private var index = 0\n override fun hasNext() = index < array.size\n override fun nextUInt() = if (index < array.size) array[index++].toUInt() else throw NoSuchElementException(index.toString())\n }\n\n override fun contains(element: UInt): Boolean {\n // TODO: Eliminate this check after KT-30016 gets fixed.\n // Currently JS BE does not generate special bridge method for this method.\n if ((element as Any?) !is UInt) return false\n\n return storage.contains(element.toInt())\n }\n\n override fun containsAll(elements: Collection): Boolean {\n return (elements as Collection<*>).all { it is UInt && storage.contains(it.toInt()) }\n }\n\n override fun isEmpty(): Boolean = this.storage.size == 0\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray(size: Int, init: (Int) -> UInt): UIntArray {\n return UIntArray(IntArray(size) { index -> init(index).toInt() })\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun uintArrayOf(vararg elements: UInt): UIntArray = elements\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class ULongArray\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@PublishedApi\ninternal constructor(@PublishedApi internal val storage: LongArray) : Collection {\n\n /** Creates a new array of the specified [size], with all elements initialized to zero. */\n public constructor(size: Int) : this(LongArray(size))\n\n /**\n * Returns the array element at the given [index]. This method can be called using the index operator.\n *\n * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n public operator fun get(index: Int): ULong = storage[index].toULong()\n\n /**\n * Sets the element at the given [index] to the given [value]. This method can be called using the index operator.\n *\n * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n public operator fun set(index: Int, value: ULong) {\n storage[index] = value.toLong()\n }\n\n /** Returns the number of elements in the array. */\n public override val size: Int get() = storage.size\n\n /** Creates an iterator over the elements of the array. */\n public override operator fun iterator(): ULongIterator = Iterator(storage)\n\n private class Iterator(private val array: LongArray) : ULongIterator() {\n private var index = 0\n override fun hasNext() = index < array.size\n override fun nextULong() = if (index < array.size) array[index++].toULong() else throw NoSuchElementException(index.toString())\n }\n\n override fun contains(element: ULong): Boolean {\n // TODO: Eliminate this check after KT-30016 gets fixed.\n // Currently JS BE does not generate special bridge method for this method.\n if ((element as Any?) !is ULong) return false\n\n return storage.contains(element.toLong())\n }\n\n override fun containsAll(elements: Collection): Boolean {\n return (elements as Collection<*>).all { it is ULong && storage.contains(it.toLong()) }\n }\n\n override fun isEmpty(): Boolean = this.storage.size == 0\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray(size: Int, init: (Int) -> ULong): ULongArray {\n return ULongArray(LongArray(size) { index -> init(index).toLong() })\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ulongArrayOf(vararg elements: ULong): ULongArray = elements\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\nimport kotlin.experimental.*\n\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class ULong @PublishedApi internal constructor(@PublishedApi internal val data: Long) : Comparable {\n\n companion object {\n /**\n * A constant holding the minimum value an instance of ULong can have.\n */\n public const val MIN_VALUE: ULong = ULong(0)\n\n /**\n * A constant holding the maximum value an instance of ULong can have.\n */\n public const val MAX_VALUE: ULong = ULong(-1)\n\n /**\n * The number of bytes used to represent an instance of ULong in a binary form.\n */\n public const val SIZE_BYTES: Int = 8\n\n /**\n * The number of bits used to represent an instance of ULong in a binary form.\n */\n public const val SIZE_BITS: Int = 64\n }\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UByte): Int = this.compareTo(other.toULong())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UShort): Int = this.compareTo(other.toULong())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UInt): Int = this.compareTo(other.toULong())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n @Suppress(\"OVERRIDE_BY_INLINE\")\n public override inline operator fun compareTo(other: ULong): Int = ulongCompare(this.data, other.data)\n\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UByte): ULong = this.plus(other.toULong())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UShort): ULong = this.plus(other.toULong())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UInt): ULong = this.plus(other.toULong())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: ULong): ULong = ULong(this.data.plus(other.data))\n\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UByte): ULong = this.minus(other.toULong())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UShort): ULong = this.minus(other.toULong())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UInt): ULong = this.minus(other.toULong())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: ULong): ULong = ULong(this.data.minus(other.data))\n\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UByte): ULong = this.times(other.toULong())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UShort): ULong = this.times(other.toULong())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UInt): ULong = this.times(other.toULong())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: ULong): ULong = ULong(this.data.times(other.data))\n\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UByte): ULong = this.div(other.toULong())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UShort): ULong = this.div(other.toULong())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UInt): ULong = this.div(other.toULong())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: ULong): ULong = ulongDivide(this, other)\n\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UByte): ULong = this.rem(other.toULong())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UShort): ULong = this.rem(other.toULong())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UInt): ULong = this.rem(other.toULong())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: ULong): ULong = ulongRemainder(this, other)\n\n /** Increments this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun inc(): ULong = ULong(data.inc())\n /** Decrements this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun dec(): ULong = ULong(data.dec())\n\n /** Creates a range from this value to the specified [other] value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rangeTo(other: ULong): ULongRange = ULongRange(this, other)\n\n /** Shifts this value left by the [bitCount] number of bits. */\n @kotlin.internal.InlineOnly\n public inline infix fun shl(bitCount: Int): ULong = ULong(data shl bitCount)\n /** Shifts this value right by the [bitCount] number of bits, filling the leftmost bits with zeros. */\n @kotlin.internal.InlineOnly\n public inline infix fun shr(bitCount: Int): ULong = ULong(data ushr bitCount)\n /** Performs a bitwise AND operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun and(other: ULong): ULong = ULong(this.data and other.data)\n /** Performs a bitwise OR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun or(other: ULong): ULong = ULong(this.data or other.data)\n /** Performs a bitwise XOR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun xor(other: ULong): ULong = ULong(this.data xor other.data)\n /** Inverts the bits in this value. */\n @kotlin.internal.InlineOnly\n public inline fun inv(): ULong = ULong(data.inv())\n\n /**\n * Converts this [ULong] value to [Byte].\n *\n * If this value is less than or equals to [Byte.MAX_VALUE], the resulting `Byte` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `Byte` value is represented by the least significant 8 bits of this `ULong` value.\n * Note that the resulting `Byte` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toByte(): Byte = data.toByte()\n /**\n * Converts this [ULong] value to [Short].\n *\n * If this value is less than or equals to [Short.MAX_VALUE], the resulting `Short` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `Short` value is represented by the least significant 16 bits of this `ULong` value.\n * Note that the resulting `Short` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toShort(): Short = data.toShort()\n /**\n * Converts this [ULong] value to [Int].\n *\n * If this value is less than or equals to [Int.MAX_VALUE], the resulting `Int` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `Int` value is represented by the least significant 32 bits of this `ULong` value.\n * Note that the resulting `Int` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toInt(): Int = data.toInt()\n /**\n * Converts this [ULong] value to [Long].\n *\n * If this value is less than or equals to [Long.MAX_VALUE], the resulting `Long` value represents\n * the same numerical value as this `ULong`. Otherwise the result is negative.\n *\n * The resulting `Long` value has the same binary representation as this `ULong` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toLong(): Long = data\n\n /**\n * Converts this [ULong] value to [UByte].\n *\n * If this value is less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `ULong` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUByte(): UByte = data.toUByte()\n /**\n * Converts this [ULong] value to [UShort].\n *\n * If this value is less than or equals to [UShort.MAX_VALUE], the resulting `UShort` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `UShort` value is represented by the least significant 16 bits of this `ULong` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUShort(): UShort = data.toUShort()\n /**\n * Converts this [ULong] value to [UInt].\n *\n * If this value is less than or equals to [UInt.MAX_VALUE], the resulting `UInt` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `UInt` value is represented by the least significant 32 bits of this `ULong` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUInt(): UInt = data.toUInt()\n /** Returns this value. */\n @kotlin.internal.InlineOnly\n public inline fun toULong(): ULong = this\n\n /**\n * Converts this [ULong] value to [Float].\n *\n * The resulting value is the closest `Float` to this `ULong` value.\n * In case when this `ULong` value is exactly between two `Float`s,\n * the one with zero at least significant bit of mantissa is selected.\n */\n @kotlin.internal.InlineOnly\n public inline fun toFloat(): Float = this.toDouble().toFloat()\n /**\n * Converts this [ULong] value to [Double].\n *\n * The resulting value is the closest `Double` to this `ULong` value.\n * In case when this `ULong` value is exactly between two `Double`s,\n * the one with zero at least significant bit of mantissa is selected.\n */\n @kotlin.internal.InlineOnly\n public inline fun toDouble(): Double = ulongToDouble(data)\n\n public override fun toString(): String = ulongToString(data)\n\n}\n\n/**\n * Converts this [Byte] value to [ULong].\n *\n * If this value is positive, the resulting `ULong` value represents the same numerical value as this `Byte`.\n *\n * The least significant 8 bits of the resulting `ULong` value are the same as the bits of this `Byte` value,\n * whereas the most significant 56 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Byte.toULong(): ULong = ULong(this.toLong())\n/**\n * Converts this [Short] value to [ULong].\n *\n * If this value is positive, the resulting `ULong` value represents the same numerical value as this `Short`.\n *\n * The least significant 16 bits of the resulting `ULong` value are the same as the bits of this `Short` value,\n * whereas the most significant 48 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Short.toULong(): ULong = ULong(this.toLong())\n/**\n * Converts this [Int] value to [ULong].\n *\n * If this value is positive, the resulting `ULong` value represents the same numerical value as this `Int`.\n *\n * The least significant 32 bits of the resulting `ULong` value are the same as the bits of this `Int` value,\n * whereas the most significant 32 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Int.toULong(): ULong = ULong(this.toLong())\n/**\n * Converts this [Long] value to [ULong].\n *\n * If this value is positive, the resulting `ULong` value represents the same numerical value as this `Long`.\n *\n * The resulting `ULong` value has the same binary representation as this `Long` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Long.toULong(): ULong = ULong(this)\n\n/**\n * Converts this [Float] value to [ULong].\n *\n * The fractional part, if any, is rounded down.\n * Returns zero if this `Float` value is negative or `NaN`, [ULong.MAX_VALUE] if it's bigger than `ULong.MAX_VALUE`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Float.toULong(): ULong = doubleToULong(this.toDouble())\n/**\n * Converts this [Double] value to [ULong].\n *\n * The fractional part, if any, is rounded down.\n * Returns zero if this `Double` value is negative or `NaN`, [ULong.MAX_VALUE] if it's bigger than `ULong.MAX_VALUE`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Double.toULong(): ULong = doubleToULong(this)\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class UShortArray\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@PublishedApi\ninternal constructor(@PublishedApi internal val storage: ShortArray) : Collection {\n\n /** Creates a new array of the specified [size], with all elements initialized to zero. */\n public constructor(size: Int) : this(ShortArray(size))\n\n /**\n * Returns the array element at the given [index]. This method can be called using the index operator.\n *\n * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n public operator fun get(index: Int): UShort = storage[index].toUShort()\n\n /**\n * Sets the element at the given [index] to the given [value]. This method can be called using the index operator.\n *\n * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n public operator fun set(index: Int, value: UShort) {\n storage[index] = value.toShort()\n }\n\n /** Returns the number of elements in the array. */\n public override val size: Int get() = storage.size\n\n /** Creates an iterator over the elements of the array. */\n public override operator fun iterator(): UShortIterator = Iterator(storage)\n\n private class Iterator(private val array: ShortArray) : UShortIterator() {\n private var index = 0\n override fun hasNext() = index < array.size\n override fun nextUShort() = if (index < array.size) array[index++].toUShort() else throw NoSuchElementException(index.toString())\n }\n\n override fun contains(element: UShort): Boolean {\n // TODO: Eliminate this check after KT-30016 gets fixed.\n // Currently JS BE does not generate special bridge method for this method.\n if ((element as Any?) !is UShort) return false\n\n return storage.contains(element.toShort())\n }\n\n override fun containsAll(elements: Collection): Boolean {\n return (elements as Collection<*>).all { it is UShort && storage.contains(it.toShort()) }\n }\n\n override fun isEmpty(): Boolean = this.storage.size == 0\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray(size: Int, init: (Int) -> UShort): UShortArray {\n return UShortArray(ShortArray(size) { index -> init(index).toShort() })\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ushortArrayOf(vararg elements: UShort): UShortArray = elements\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"UArraysKt\")\n@file:kotlin.jvm.JvmPackageName(\"kotlin.collections.unsigned\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns 1st *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.component1(): UInt {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.component1(): ULong {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.component1(): UByte {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.component1(): UShort {\n return get(0)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.component2(): UInt {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.component2(): ULong {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.component2(): UByte {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.component2(): UShort {\n return get(1)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.component3(): UInt {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.component3(): ULong {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.component3(): UByte {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.component3(): UShort {\n return get(2)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.component4(): UInt {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.component4(): ULong {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.component4(): UByte {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.component4(): UShort {\n return get(3)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.component5(): UInt {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.component5(): ULong {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.component5(): UByte {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.component5(): UShort {\n return get(4)\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UIntArray.elementAt(index: Int): UInt\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun ULongArray.elementAt(index: Int): ULong\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UByteArray.elementAt(index: Int): UByte\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UShortArray.elementAt(index: Int): UShort\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.elementAtOrElse(index: Int, defaultValue: (Int) -> UInt): UInt {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.elementAtOrElse(index: Int, defaultValue: (Int) -> ULong): ULong {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.elementAtOrElse(index: Int, defaultValue: (Int) -> UByte): UByte {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.elementAtOrElse(index: Int, defaultValue: (Int) -> UShort): UShort {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.elementAtOrNull(index: Int): UInt? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.elementAtOrNull(index: Int): ULong? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.elementAtOrNull(index: Int): UByte? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.elementAtOrNull(index: Int): UShort? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.find(predicate: (UInt) -> Boolean): UInt? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.find(predicate: (ULong) -> Boolean): ULong? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.find(predicate: (UByte) -> Boolean): UByte? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.find(predicate: (UShort) -> Boolean): UShort? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.findLast(predicate: (UInt) -> Boolean): UInt? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.findLast(predicate: (ULong) -> Boolean): ULong? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.findLast(predicate: (UByte) -> Boolean): UByte? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.findLast(predicate: (UShort) -> Boolean): UShort? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.first(): UInt {\n return storage.first().toUInt()\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.first(): ULong {\n return storage.first().toULong()\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.first(): UByte {\n return storage.first().toUByte()\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.first(): UShort {\n return storage.first().toUShort()\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.first(predicate: (UInt) -> Boolean): UInt {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.first(predicate: (ULong) -> Boolean): ULong {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.first(predicate: (UByte) -> Boolean): UByte {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.first(predicate: (UShort) -> Boolean): UShort {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.firstOrNull(): UInt? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.firstOrNull(): ULong? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.firstOrNull(): UByte? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.firstOrNull(): UShort? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.firstOrNull(predicate: (UInt) -> Boolean): UInt? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.firstOrNull(predicate: (ULong) -> Boolean): ULong? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.firstOrNull(predicate: (UByte) -> Boolean): UByte? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.firstOrNull(predicate: (UShort) -> Boolean): UShort? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.getOrElse(index: Int, defaultValue: (Int) -> UInt): UInt {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.getOrElse(index: Int, defaultValue: (Int) -> ULong): ULong {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.getOrElse(index: Int, defaultValue: (Int) -> UByte): UByte {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.getOrElse(index: Int, defaultValue: (Int) -> UShort): UShort {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.getOrNull(index: Int): UInt? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.getOrNull(index: Int): ULong? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.getOrNull(index: Int): UByte? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.getOrNull(index: Int): UShort? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.indexOf(element: UInt): Int {\n return storage.indexOf(element.toInt())\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.indexOf(element: ULong): Int {\n return storage.indexOf(element.toLong())\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.indexOf(element: UByte): Int {\n return storage.indexOf(element.toByte())\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.indexOf(element: UShort): Int {\n return storage.indexOf(element.toShort())\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.indexOfFirst(predicate: (UInt) -> Boolean): Int {\n return storage.indexOfFirst { predicate(it.toUInt()) }\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.indexOfFirst(predicate: (ULong) -> Boolean): Int {\n return storage.indexOfFirst { predicate(it.toULong()) }\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.indexOfFirst(predicate: (UByte) -> Boolean): Int {\n return storage.indexOfFirst { predicate(it.toUByte()) }\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.indexOfFirst(predicate: (UShort) -> Boolean): Int {\n return storage.indexOfFirst { predicate(it.toUShort()) }\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.indexOfLast(predicate: (UInt) -> Boolean): Int {\n return storage.indexOfLast { predicate(it.toUInt()) }\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.indexOfLast(predicate: (ULong) -> Boolean): Int {\n return storage.indexOfLast { predicate(it.toULong()) }\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.indexOfLast(predicate: (UByte) -> Boolean): Int {\n return storage.indexOfLast { predicate(it.toUByte()) }\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.indexOfLast(predicate: (UShort) -> Boolean): Int {\n return storage.indexOfLast { predicate(it.toUShort()) }\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.last(): UInt {\n return storage.last().toUInt()\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.last(): ULong {\n return storage.last().toULong()\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.last(): UByte {\n return storage.last().toUByte()\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.last(): UShort {\n return storage.last().toUShort()\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.last(predicate: (UInt) -> Boolean): UInt {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.last(predicate: (ULong) -> Boolean): ULong {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.last(predicate: (UByte) -> Boolean): UByte {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.last(predicate: (UShort) -> Boolean): UShort {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.lastIndexOf(element: UInt): Int {\n return storage.lastIndexOf(element.toInt())\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.lastIndexOf(element: ULong): Int {\n return storage.lastIndexOf(element.toLong())\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.lastIndexOf(element: UByte): Int {\n return storage.lastIndexOf(element.toByte())\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.lastIndexOf(element: UShort): Int {\n return storage.lastIndexOf(element.toShort())\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.lastOrNull(): UInt? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.lastOrNull(): ULong? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.lastOrNull(): UByte? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.lastOrNull(): UShort? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.lastOrNull(predicate: (UInt) -> Boolean): UInt? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.lastOrNull(predicate: (ULong) -> Boolean): ULong? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.lastOrNull(predicate: (UByte) -> Boolean): UByte? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.lastOrNull(predicate: (UShort) -> Boolean): UShort? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.random(): UInt {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.random(): ULong {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.random(): UByte {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.random(): UShort {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.random(random: Random): UInt {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.random(random: Random): ULong {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.random(random: Random): UByte {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.random(random: Random): UShort {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.single(): UInt {\n return storage.single().toUInt()\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.single(): ULong {\n return storage.single().toULong()\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.single(): UByte {\n return storage.single().toUByte()\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.single(): UShort {\n return storage.single().toUShort()\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.single(predicate: (UInt) -> Boolean): UInt {\n var single: UInt? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as UInt\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.single(predicate: (ULong) -> Boolean): ULong {\n var single: ULong? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as ULong\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.single(predicate: (UByte) -> Boolean): UByte {\n var single: UByte? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as UByte\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.single(predicate: (UShort) -> Boolean): UShort {\n var single: UShort? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as UShort\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.singleOrNull(): UInt? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.singleOrNull(): ULong? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.singleOrNull(): UByte? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.singleOrNull(): UShort? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.singleOrNull(predicate: (UInt) -> Boolean): UInt? {\n var single: UInt? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.singleOrNull(predicate: (ULong) -> Boolean): ULong? {\n var single: ULong? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.singleOrNull(predicate: (UByte) -> Boolean): UByte? {\n var single: UByte? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.singleOrNull(predicate: (UShort) -> Boolean): UShort? {\n var single: UShort? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.dropLastWhile(predicate: (UInt) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.dropLastWhile(predicate: (ULong) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.dropLastWhile(predicate: (UByte) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.dropLastWhile(predicate: (UShort) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.dropWhile(predicate: (UInt) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.dropWhile(predicate: (ULong) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.dropWhile(predicate: (UByte) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.dropWhile(predicate: (UShort) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.filter(predicate: (UInt) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.filter(predicate: (ULong) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.filter(predicate: (UByte) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.filter(predicate: (UShort) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.filterIndexed(predicate: (index: Int, UInt) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.filterIndexed(predicate: (index: Int, ULong) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.filterIndexed(predicate: (index: Int, UByte) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.filterIndexed(predicate: (index: Int, UShort) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.filterIndexedTo(destination: C, predicate: (index: Int, UInt) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.filterIndexedTo(destination: C, predicate: (index: Int, ULong) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.filterIndexedTo(destination: C, predicate: (index: Int, UByte) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.filterIndexedTo(destination: C, predicate: (index: Int, UShort) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.filterNot(predicate: (UInt) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.filterNot(predicate: (ULong) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.filterNot(predicate: (UByte) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.filterNot(predicate: (UShort) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.filterNotTo(destination: C, predicate: (UInt) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.filterNotTo(destination: C, predicate: (ULong) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.filterNotTo(destination: C, predicate: (UByte) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.filterNotTo(destination: C, predicate: (UShort) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.filterTo(destination: C, predicate: (UInt) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.filterTo(destination: C, predicate: (ULong) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.filterTo(destination: C, predicate: (UByte) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.filterTo(destination: C, predicate: (UShort) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sliceArray(indices: Collection): UIntArray {\n return UIntArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sliceArray(indices: Collection): ULongArray {\n return ULongArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sliceArray(indices: Collection): UByteArray {\n return UByteArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sliceArray(indices: Collection): UShortArray {\n return UShortArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sliceArray(indices: IntRange): UIntArray {\n return UIntArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sliceArray(indices: IntRange): ULongArray {\n return ULongArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sliceArray(indices: IntRange): UByteArray {\n return UByteArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sliceArray(indices: IntRange): UShortArray {\n return UShortArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n if (count++ == n)\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.takeLastWhile(predicate: (UInt) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.takeLastWhile(predicate: (ULong) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.takeLastWhile(predicate: (UByte) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.takeLastWhile(predicate: (UShort) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.takeWhile(predicate: (UInt) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.takeWhile(predicate: (ULong) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.takeWhile(predicate: (UByte) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.takeWhile(predicate: (UShort) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Reverses elements in the array in-place.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reverse(): Unit {\n storage.reverse()\n}\n\n/**\n * Reverses elements in the array in-place.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reverse(): Unit {\n storage.reverse()\n}\n\n/**\n * Reverses elements in the array in-place.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reverse(): Unit {\n storage.reverse()\n}\n\n/**\n * Reverses elements in the array in-place.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reverse(): Unit {\n storage.reverse()\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reversedArray(): UIntArray {\n return UIntArray(storage.reversedArray())\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reversedArray(): ULongArray {\n return ULongArray(storage.reversedArray())\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reversedArray(): UByteArray {\n return UByteArray(storage.reversedArray())\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reversedArray(): UShortArray {\n return UShortArray(storage.reversedArray())\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sorted(): List {\n return copyOf().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sorted(): List {\n return copyOf().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sorted(): List {\n return copyOf().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sorted(): List {\n return copyOf().apply { sort() }.asList()\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sortedArray(): UIntArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sortedArray(): ULongArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sortedArray(): UByteArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sortedArray(): UShortArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sortedArrayDescending(): UIntArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sortedArrayDescending(): ULongArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sortedArrayDescending(): UByteArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sortedArrayDescending(): UShortArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns an array of type [ByteArray], which is a view of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.asByteArray(): ByteArray {\n return storage\n}\n\n/**\n * Returns an array of type [IntArray], which is a view of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.asIntArray(): IntArray {\n return storage\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UIntArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun ULongArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UByteArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UShortArray.asList(): List\n\n/**\n * Returns an array of type [LongArray], which is a view of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.asLongArray(): LongArray {\n return storage\n}\n\n/**\n * Returns an array of type [ShortArray], which is a view of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.asShortArray(): ShortArray {\n return storage\n}\n\n/**\n * Returns an array of type [UByteArray], which is a view of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.asUByteArray(): UByteArray {\n return UByteArray(this)\n}\n\n/**\n * Returns an array of type [UIntArray], which is a view of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.asUIntArray(): UIntArray {\n return UIntArray(this)\n}\n\n/**\n * Returns an array of type [ULongArray], which is a view of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.asULongArray(): ULongArray {\n return ULongArray(this)\n}\n\n/**\n * Returns an array of type [UShortArray], which is a view of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.asUShortArray(): UShortArray {\n return UShortArray(this)\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UIntArray.contentEquals(other: UIntArray): Boolean {\n return storage.contentEquals(other.storage)\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun ULongArray.contentEquals(other: ULongArray): Boolean {\n return storage.contentEquals(other.storage)\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UByteArray.contentEquals(other: UByteArray): Boolean {\n return storage.contentEquals(other.storage)\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UShortArray.contentEquals(other: UShortArray): Boolean {\n return storage.contentEquals(other.storage)\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.contentHashCode(): Int {\n return storage.contentHashCode()\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.contentHashCode(): Int {\n return storage.contentHashCode()\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.contentHashCode(): Int {\n return storage.contentHashCode()\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.contentHashCode(): Int {\n return storage.contentHashCode()\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.contentToString(): String {\n return joinToString(\", \", \"[\", \"]\")\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.contentToString(): String {\n return joinToString(\", \", \"[\", \"]\")\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.contentToString(): String {\n return joinToString(\", \", \"[\", \"]\")\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.contentToString(): String {\n return joinToString(\", \", \"[\", \"]\")\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.copyInto(destination: UIntArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): UIntArray {\n storage.copyInto(destination.storage, destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.copyInto(destination: ULongArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ULongArray {\n storage.copyInto(destination.storage, destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.copyInto(destination: UByteArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): UByteArray {\n storage.copyInto(destination.storage, destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.copyInto(destination: UShortArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): UShortArray {\n storage.copyInto(destination.storage, destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.copyOf(): UIntArray {\n return UIntArray(storage.copyOf())\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.copyOf(): ULongArray {\n return ULongArray(storage.copyOf())\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.copyOf(): UByteArray {\n return UByteArray(storage.copyOf())\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.copyOf(): UShortArray {\n return UShortArray(storage.copyOf())\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.copyOf(newSize: Int): UIntArray {\n return UIntArray(storage.copyOf(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.copyOf(newSize: Int): ULongArray {\n return ULongArray(storage.copyOf(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.copyOf(newSize: Int): UByteArray {\n return UByteArray(storage.copyOf(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.copyOf(newSize: Int): UShortArray {\n return UShortArray(storage.copyOf(newSize))\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.copyOfRange(fromIndex: Int, toIndex: Int): UIntArray {\n return UIntArray(storage.copyOfRange(fromIndex, toIndex))\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.copyOfRange(fromIndex: Int, toIndex: Int): ULongArray {\n return ULongArray(storage.copyOfRange(fromIndex, toIndex))\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.copyOfRange(fromIndex: Int, toIndex: Int): UByteArray {\n return UByteArray(storage.copyOfRange(fromIndex, toIndex))\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.copyOfRange(fromIndex: Int, toIndex: Int): UShortArray {\n return UShortArray(storage.copyOfRange(fromIndex, toIndex))\n}\n\n/**\n * Returns the range of valid indices for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UIntArray.indices: IntRange\n get() = storage.indices\n\n/**\n * Returns the range of valid indices for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val ULongArray.indices: IntRange\n get() = storage.indices\n\n/**\n * Returns the range of valid indices for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UByteArray.indices: IntRange\n get() = storage.indices\n\n/**\n * Returns the range of valid indices for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UShortArray.indices: IntRange\n get() = storage.indices\n\n/**\n * Returns the last valid index for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UIntArray.lastIndex: Int\n get() = storage.lastIndex\n\n/**\n * Returns the last valid index for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val ULongArray.lastIndex: Int\n get() = storage.lastIndex\n\n/**\n * Returns the last valid index for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UByteArray.lastIndex: Int\n get() = storage.lastIndex\n\n/**\n * Returns the last valid index for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UShortArray.lastIndex: Int\n get() = storage.lastIndex\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.plus(element: UInt): UIntArray {\n return UIntArray(storage + element.toInt())\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.plus(element: ULong): ULongArray {\n return ULongArray(storage + element.toLong())\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.plus(element: UByte): UByteArray {\n return UByteArray(storage + element.toByte())\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.plus(element: UShort): UShortArray {\n return UShortArray(storage + element.toShort())\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun UIntArray.plus(elements: Collection): UIntArray {\n var index = size\n val result = storage.copyOf(size + elements.size)\n for (element in elements) result[index++] = element.toInt()\n return UIntArray(result)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun ULongArray.plus(elements: Collection): ULongArray {\n var index = size\n val result = storage.copyOf(size + elements.size)\n for (element in elements) result[index++] = element.toLong()\n return ULongArray(result)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun UByteArray.plus(elements: Collection): UByteArray {\n var index = size\n val result = storage.copyOf(size + elements.size)\n for (element in elements) result[index++] = element.toByte()\n return UByteArray(result)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun UShortArray.plus(elements: Collection): UShortArray {\n var index = size\n val result = storage.copyOf(size + elements.size)\n for (element in elements) result[index++] = element.toShort()\n return UShortArray(result)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.plus(elements: UIntArray): UIntArray {\n return UIntArray(storage + elements.storage)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.plus(elements: ULongArray): ULongArray {\n return ULongArray(storage + elements.storage)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.plus(elements: UByteArray): UByteArray {\n return UByteArray(storage + elements.storage)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.plus(elements: UShortArray): UShortArray {\n return UShortArray(storage + elements.storage)\n}\n\n/**\n * Sorts the array in-place.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sort(): Unit {\n if (size > 1) sortArray(this)\n}\n\n/**\n * Sorts the array in-place.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sort(): Unit {\n if (size > 1) sortArray(this)\n}\n\n/**\n * Sorts the array in-place.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sort(): Unit {\n if (size > 1) sortArray(this)\n}\n\n/**\n * Sorts the array in-place.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sort(): Unit {\n if (size > 1) sortArray(this)\n}\n\n/**\n * Returns an array of type [ByteArray], which is a copy of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.toByteArray(): ByteArray {\n return storage.copyOf()\n}\n\n/**\n * Returns an array of type [IntArray], which is a copy of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.toIntArray(): IntArray {\n return storage.copyOf()\n}\n\n/**\n * Returns an array of type [LongArray], which is a copy of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.toLongArray(): LongArray {\n return storage.copyOf()\n}\n\n/**\n * Returns an array of type [ShortArray], which is a copy of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.toShortArray(): ShortArray {\n return storage.copyOf()\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.toTypedArray(): Array {\n return Array(size) { index -> this[index] }\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.toTypedArray(): Array {\n return Array(size) { index -> this[index] }\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.toTypedArray(): Array {\n return Array(size) { index -> this[index] }\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.toTypedArray(): Array {\n return Array(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of UByte containing all of the elements of this generic array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.toUByteArray(): UByteArray {\n return UByteArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of type [UByteArray], which is a copy of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.toUByteArray(): UByteArray {\n return UByteArray(this.copyOf())\n}\n\n/**\n * Returns an array of UInt containing all of the elements of this generic array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.toUIntArray(): UIntArray {\n return UIntArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of type [UIntArray], which is a copy of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.toUIntArray(): UIntArray {\n return UIntArray(this.copyOf())\n}\n\n/**\n * Returns an array of ULong containing all of the elements of this generic array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.toULongArray(): ULongArray {\n return ULongArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of type [ULongArray], which is a copy of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.toULongArray(): ULongArray {\n return ULongArray(this.copyOf())\n}\n\n/**\n * Returns an array of UShort containing all of the elements of this generic array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.toUShortArray(): UShortArray {\n return UShortArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of type [UShortArray], which is a copy of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.toUShortArray(): UShortArray {\n return UShortArray(this.copyOf())\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.flatMap(transform: (UInt) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.flatMap(transform: (ULong) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.flatMap(transform: (UByte) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.flatMap(transform: (UShort) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.flatMapTo(destination: C, transform: (UInt) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.flatMapTo(destination: C, transform: (ULong) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.flatMapTo(destination: C, transform: (UByte) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.flatMapTo(destination: C, transform: (UShort) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.groupBy(keySelector: (UInt) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.groupBy(keySelector: (ULong) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.groupBy(keySelector: (UByte) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.groupBy(keySelector: (UShort) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.groupBy(keySelector: (UInt) -> K, valueTransform: (UInt) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.groupBy(keySelector: (ULong) -> K, valueTransform: (ULong) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.groupBy(keySelector: (UByte) -> K, valueTransform: (UByte) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.groupBy(keySelector: (UShort) -> K, valueTransform: (UShort) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UIntArray.groupByTo(destination: M, keySelector: (UInt) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> ULongArray.groupByTo(destination: M, keySelector: (ULong) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UByteArray.groupByTo(destination: M, keySelector: (UByte) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UShortArray.groupByTo(destination: M, keySelector: (UShort) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UIntArray.groupByTo(destination: M, keySelector: (UInt) -> K, valueTransform: (UInt) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> ULongArray.groupByTo(destination: M, keySelector: (ULong) -> K, valueTransform: (ULong) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UByteArray.groupByTo(destination: M, keySelector: (UByte) -> K, valueTransform: (UByte) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UShortArray.groupByTo(destination: M, keySelector: (UShort) -> K, valueTransform: (UShort) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.map(transform: (UInt) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.map(transform: (ULong) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.map(transform: (UByte) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.map(transform: (UShort) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.mapIndexed(transform: (index: Int, UInt) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.mapIndexed(transform: (index: Int, ULong) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.mapIndexed(transform: (index: Int, UByte) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.mapIndexed(transform: (index: Int, UShort) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.mapIndexedTo(destination: C, transform: (index: Int, UInt) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.mapIndexedTo(destination: C, transform: (index: Int, ULong) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.mapIndexedTo(destination: C, transform: (index: Int, UByte) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.mapIndexedTo(destination: C, transform: (index: Int, UShort) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.mapTo(destination: C, transform: (UInt) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.mapTo(destination: C, transform: (ULong) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.mapTo(destination: C, transform: (UByte) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.mapTo(destination: C, transform: (UShort) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.all(predicate: (UInt) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.all(predicate: (ULong) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.all(predicate: (UByte) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.all(predicate: (UShort) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.any(): Boolean {\n return storage.any()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.any(): Boolean {\n return storage.any()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.any(): Boolean {\n return storage.any()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.any(): Boolean {\n return storage.any()\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.any(predicate: (UInt) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.any(predicate: (ULong) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.any(predicate: (UByte) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.any(predicate: (UShort) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.count(predicate: (UInt) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.count(predicate: (ULong) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.count(predicate: (UByte) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.count(predicate: (UShort) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.fold(initial: R, operation: (acc: R, UInt) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.fold(initial: R, operation: (acc: R, ULong) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.fold(initial: R, operation: (acc: R, UByte) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.fold(initial: R, operation: (acc: R, UShort) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.foldIndexed(initial: R, operation: (index: Int, acc: R, UInt) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.foldIndexed(initial: R, operation: (index: Int, acc: R, ULong) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.foldIndexed(initial: R, operation: (index: Int, acc: R, UByte) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.foldIndexed(initial: R, operation: (index: Int, acc: R, UShort) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.foldRight(initial: R, operation: (UInt, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.foldRight(initial: R, operation: (ULong, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.foldRight(initial: R, operation: (UByte, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.foldRight(initial: R, operation: (UShort, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.foldRightIndexed(initial: R, operation: (index: Int, UInt, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.foldRightIndexed(initial: R, operation: (index: Int, ULong, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.foldRightIndexed(initial: R, operation: (index: Int, UByte, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.foldRightIndexed(initial: R, operation: (index: Int, UShort, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Performs the given [action] on each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.forEach(action: (UInt) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.forEach(action: (ULong) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.forEach(action: (UByte) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.forEach(action: (UShort) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.forEachIndexed(action: (index: Int, UInt) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.forEachIndexed(action: (index: Int, ULong) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.forEachIndexed(action: (index: Int, UByte) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.forEachIndexed(action: (index: Int, UShort) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.max(): UInt? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.max(): ULong? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.max(): UByte? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.max(): UShort? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.maxBy(selector: (UInt) -> R): UInt? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.maxBy(selector: (ULong) -> R): ULong? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.maxBy(selector: (UByte) -> R): UByte? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.maxBy(selector: (UShort) -> R): UShort? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.maxWith(comparator: Comparator): UInt? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.maxWith(comparator: Comparator): ULong? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.maxWith(comparator: Comparator): UByte? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.maxWith(comparator: Comparator): UShort? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.min(): UInt? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.min(): ULong? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.min(): UByte? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.min(): UShort? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.minBy(selector: (UInt) -> R): UInt? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.minBy(selector: (ULong) -> R): ULong? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.minBy(selector: (UByte) -> R): UByte? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.minBy(selector: (UShort) -> R): UShort? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.minWith(comparator: Comparator): UInt? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.minWith(comparator: Comparator): ULong? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.minWith(comparator: Comparator): UByte? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.minWith(comparator: Comparator): UShort? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.none(predicate: (UInt) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.none(predicate: (ULong) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.none(predicate: (UByte) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.none(predicate: (UShort) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduce(operation: (acc: UInt, UInt) -> UInt): UInt {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduce(operation: (acc: ULong, ULong) -> ULong): ULong {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduce(operation: (acc: UByte, UByte) -> UByte): UByte {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduce(operation: (acc: UShort, UShort) -> UShort): UShort {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduceIndexed(operation: (index: Int, acc: UInt, UInt) -> UInt): UInt {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduceIndexed(operation: (index: Int, acc: ULong, ULong) -> ULong): ULong {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduceIndexed(operation: (index: Int, acc: UByte, UByte) -> UByte): UByte {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduceIndexed(operation: (index: Int, acc: UShort, UShort) -> UShort): UShort {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduceRight(operation: (UInt, acc: UInt) -> UInt): UInt {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduceRight(operation: (ULong, acc: ULong) -> ULong): ULong {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduceRight(operation: (UByte, acc: UByte) -> UByte): UByte {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduceRight(operation: (UShort, acc: UShort) -> UShort): UShort {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduceRightIndexed(operation: (index: Int, UInt, acc: UInt) -> UInt): UInt {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduceRightIndexed(operation: (index: Int, ULong, acc: ULong) -> ULong): ULong {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduceRightIndexed(operation: (index: Int, UByte, acc: UByte) -> UByte): UByte {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduceRightIndexed(operation: (index: Int, UShort, acc: UShort) -> UShort): UShort {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.sumBy(selector: (UInt) -> UInt): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.sumBy(selector: (ULong) -> UInt): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.sumBy(selector: (UByte) -> UInt): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.sumBy(selector: (UShort) -> UInt): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.sumByDouble(selector: (UInt) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.sumByDouble(selector: (ULong) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.sumByDouble(selector: (UByte) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.sumByDouble(selector: (UShort) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UIntArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun ULongArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UByteArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UShortArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.zip(other: Array, transform: (a: UInt, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.zip(other: Array, transform: (a: ULong, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.zip(other: Array, transform: (a: UByte, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.zip(other: Array, transform: (a: UShort, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UIntArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun ULongArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UByteArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UShortArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.zip(other: Iterable, transform: (a: UInt, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.zip(other: Iterable, transform: (a: ULong, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.zip(other: Iterable, transform: (a: UByte, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.zip(other: Iterable, transform: (a: UShort, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UIntArray.zip(other: UIntArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun ULongArray.zip(other: ULongArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UByteArray.zip(other: UByteArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UShortArray.zip(other: UShortArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.zip(other: UIntArray, transform: (a: UInt, b: UInt) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.zip(other: ULongArray, transform: (a: ULong, b: ULong) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.zip(other: UByteArray, transform: (a: UByte, b: UByte) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.zip(other: UShortArray, transform: (a: UShort, b: UShort) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.sum(): ULong {\n var sum: ULong = 0uL\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfUByte\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfUShort\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.sum(): UInt {\n return storage.sum().toUInt()\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.sum(): ULong {\n return storage.sum().toULong()\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.sum(): UInt {\n return sumBy { it.toUInt() }\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.sum(): UInt {\n return sumBy { it.toUInt() }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"UCollectionsKt\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns an array of UByte containing all of the elements of this collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Collection.toUByteArray(): UByteArray {\n val result = UByteArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of UInt containing all of the elements of this collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Collection.toUIntArray(): UIntArray {\n val result = UIntArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of ULong containing all of the elements of this collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Collection.toULongArray(): ULongArray {\n val result = ULongArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of UShort containing all of the elements of this collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Collection.toUShortArray(): UShortArray {\n val result = UShortArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Iterable.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Iterable.sum(): ULong {\n var sum: ULong = 0uL\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfUByte\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Iterable.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfUShort\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Iterable.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"UComparisonsKt\")\n\npackage kotlin.comparisons\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun maxOf(a: UInt, b: UInt): UInt {\n return if (a >= b) a else b\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun maxOf(a: ULong, b: ULong): ULong {\n return if (a >= b) a else b\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun maxOf(a: UByte, b: UByte): UByte {\n return if (a >= b) a else b\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun maxOf(a: UShort, b: UShort): UShort {\n return if (a >= b) a else b\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun maxOf(a: UInt, b: UInt, c: UInt): UInt {\n return maxOf(a, maxOf(b, c))\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun maxOf(a: ULong, b: ULong, c: ULong): ULong {\n return maxOf(a, maxOf(b, c))\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun maxOf(a: UByte, b: UByte, c: UByte): UByte {\n return maxOf(a, maxOf(b, c))\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun maxOf(a: UShort, b: UShort, c: UShort): UShort {\n return maxOf(a, maxOf(b, c))\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun minOf(a: UInt, b: UInt): UInt {\n return if (a <= b) a else b\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun minOf(a: ULong, b: ULong): ULong {\n return if (a <= b) a else b\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun minOf(a: UByte, b: UByte): UByte {\n return if (a <= b) a else b\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun minOf(a: UShort, b: UShort): UShort {\n return if (a <= b) a else b\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun minOf(a: UInt, b: UInt, c: UInt): UInt {\n return minOf(a, minOf(b, c))\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun minOf(a: ULong, b: ULong, c: ULong): ULong {\n return minOf(a, minOf(b, c))\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun minOf(a: UByte, b: UByte, c: UByte): UByte {\n return minOf(a, minOf(b, c))\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun minOf(a: UShort, b: UShort, c: UShort): UShort {\n return minOf(a, minOf(b, c))\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"URangesKt\")\n\npackage kotlin.ranges\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\n\n/**\n * Returns a random element from this range.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntRange.random(): UInt {\n return random(Random)\n}\n\n/**\n * Returns a random element from this range.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongRange.random(): ULong {\n return random(Random)\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntRange.random(random: Random): UInt {\n try {\n return random.nextUInt(this)\n } catch(e: IllegalArgumentException) {\n throw NoSuchElementException(e.message)\n }\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongRange.random(random: Random): ULong {\n try {\n return random.nextULong(this)\n } catch(e: IllegalArgumentException) {\n throw NoSuchElementException(e.message)\n }\n}\n\n/**\n * Returns `true` if this range contains the specified [element].\n * \n * Always returns `false` if the [element] is `null`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntRange.contains(element: UInt?): Boolean {\n return element != null && contains(element)\n}\n\n/**\n * Returns `true` if this range contains the specified [element].\n * \n * Always returns `false` if the [element] is `null`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongRange.contains(element: ULong?): Boolean {\n return element != null && contains(element)\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun UIntRange.contains(value: UByte): Boolean {\n return contains(value.toUInt())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun ULongRange.contains(value: UByte): Boolean {\n return contains(value.toULong())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun ULongRange.contains(value: UInt): Boolean {\n return contains(value.toULong())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun UIntRange.contains(value: ULong): Boolean {\n return (value shr UInt.SIZE_BITS) == 0uL && contains(value.toUInt())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun UIntRange.contains(value: UShort): Boolean {\n return contains(value.toUInt())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun ULongRange.contains(value: UShort): Boolean {\n return contains(value.toULong())\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UByte.downTo(to: UByte): UIntProgression {\n return UIntProgression.fromClosedRange(this.toUInt(), to.toUInt(), -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UInt.downTo(to: UInt): UIntProgression {\n return UIntProgression.fromClosedRange(this, to, -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun ULong.downTo(to: ULong): ULongProgression {\n return ULongProgression.fromClosedRange(this, to, -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UShort.downTo(to: UShort): UIntProgression {\n return UIntProgression.fromClosedRange(this.toUInt(), to.toUInt(), -1)\n}\n\n/**\n * Returns a progression that goes over the same range in the opposite direction with the same step.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntProgression.reversed(): UIntProgression {\n return UIntProgression.fromClosedRange(last, first, -step)\n}\n\n/**\n * Returns a progression that goes over the same range in the opposite direction with the same step.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongProgression.reversed(): ULongProgression {\n return ULongProgression.fromClosedRange(last, first, -step)\n}\n\n/**\n * Returns a progression that goes over the same range with the given step.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UIntProgression.step(step: Int): UIntProgression {\n checkStepIsPositive(step > 0, step)\n return UIntProgression.fromClosedRange(first, last, if (this.step > 0) step else -step)\n}\n\n/**\n * Returns a progression that goes over the same range with the given step.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun ULongProgression.step(step: Long): ULongProgression {\n checkStepIsPositive(step > 0, step)\n return ULongProgression.fromClosedRange(first, last, if (this.step > 0) step else -step)\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UByte.until(to: UByte): UIntRange {\n if (to <= UByte.MIN_VALUE) return UIntRange.EMPTY\n return this.toUInt() .. (to - 1u).toUInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UInt.until(to: UInt): UIntRange {\n if (to <= UInt.MIN_VALUE) return UIntRange.EMPTY\n return this .. (to - 1u).toUInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun ULong.until(to: ULong): ULongRange {\n if (to <= ULong.MIN_VALUE) return ULongRange.EMPTY\n return this .. (to - 1u).toULong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UShort.until(to: UShort): UIntRange {\n if (to <= UShort.MIN_VALUE) return UIntRange.EMPTY\n return this.toUInt() .. (to - 1u).toUInt()\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeastUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UInt.coerceAtLeast(minimumValue: UInt): UInt {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeastUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULong.coerceAtLeast(minimumValue: ULong): ULong {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeastUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByte.coerceAtLeast(minimumValue: UByte): UByte {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeastUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShort.coerceAtLeast(minimumValue: UShort): UShort {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMostUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UInt.coerceAtMost(maximumValue: UInt): UInt {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMostUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULong.coerceAtMost(maximumValue: ULong): ULong {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMostUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByte.coerceAtMost(maximumValue: UByte): UByte {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMostUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShort.coerceAtMost(maximumValue: UShort): UShort {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceInUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UInt.coerceIn(minimumValue: UInt, maximumValue: UInt): UInt {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceInUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULong.coerceIn(minimumValue: ULong, maximumValue: ULong): ULong {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceInUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByte.coerceIn(minimumValue: UByte, maximumValue: UByte): UByte {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceInUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShort.coerceIn(minimumValue: UShort, maximumValue: UShort): UShort {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified [range].\n * \n * @return this value if it's in the [range], or `range.start` if this value is less than `range.start`, or `range.endInclusive` if this value is greater than `range.endInclusive`.\n * \n * @sample samples.comparisons.ComparableOps.coerceInUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UInt.coerceIn(range: ClosedRange): UInt {\n if (range is ClosedFloatingPointRange) {\n return this.coerceIn(range)\n }\n if (range.isEmpty()) throw IllegalArgumentException(\"Cannot coerce value to an empty range: $range.\")\n return when {\n this < range.start -> range.start\n this > range.endInclusive -> range.endInclusive\n else -> this\n }\n}\n\n/**\n * Ensures that this value lies in the specified [range].\n * \n * @return this value if it's in the [range], or `range.start` if this value is less than `range.start`, or `range.endInclusive` if this value is greater than `range.endInclusive`.\n * \n * @sample samples.comparisons.ComparableOps.coerceInUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULong.coerceIn(range: ClosedRange): ULong {\n if (range is ClosedFloatingPointRange) {\n return this.coerceIn(range)\n }\n if (range.isEmpty()) throw IllegalArgumentException(\"Cannot coerce value to an empty range: $range.\")\n return when {\n this < range.start -> range.start\n this > range.endInclusive -> range.endInclusive\n else -> this\n }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"USequencesKt\")\n\npackage kotlin.sequences\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Sequence.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Sequence.sum(): ULong {\n var sum: ULong = 0uL\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfUByte\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Sequence.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfUShort\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Sequence.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n","/*\n * Copyright 2010-2015 JetBrains s.r.o.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage kotlin.collections\n\nimport kotlin.internal.PlatformDependent\n\n/**\n * Classes that inherit from this interface can be represented as a sequence of elements that can\n * be iterated over.\n * @param T the type of element being iterated over. The iterator is covariant on its element type.\n */\npublic interface Iterable {\n /**\n * Returns an iterator over the elements of this object.\n */\n public operator fun iterator(): Iterator\n}\n\n/**\n * Classes that inherit from this interface can be represented as a sequence of elements that can\n * be iterated over and that supports removing elements during iteration.\n * @param T the type of element being iterated over. The mutable iterator is invariant on its element type.\n */\npublic interface MutableIterable : Iterable {\n /**\n * Returns an iterator over the elements of this sequence that supports removing elements during iteration.\n */\n override fun iterator(): MutableIterator\n}\n\n/**\n * A generic collection of elements. Methods in this interface support only read-only access to the collection;\n * read/write access is supported through the [MutableCollection] interface.\n * @param E the type of elements contained in the collection. The collection is covariant on its element type.\n */\npublic interface Collection : Iterable {\n // Query Operations\n /**\n * Returns the size of the collection.\n */\n public val size: Int\n\n /**\n * Returns `true` if the collection is empty (contains no elements), `false` otherwise.\n */\n public fun isEmpty(): Boolean\n\n /**\n * Checks if the specified element is contained in this collection.\n */\n public operator fun contains(element: @UnsafeVariance E): Boolean\n\n override fun iterator(): Iterator\n\n // Bulk Operations\n /**\n * Checks if all elements in the specified collection are contained in this collection.\n */\n public fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean\n}\n\n/**\n * A generic collection of elements that supports adding and removing elements.\n *\n * @param E the type of elements contained in the collection. The mutable collection is invariant on its element type.\n */\npublic interface MutableCollection : Collection, MutableIterable {\n // Query Operations\n override fun iterator(): MutableIterator\n\n // Modification Operations\n /**\n * Adds the specified element to the collection.\n *\n * @return `true` if the element has been added, `false` if the collection does not support duplicates\n * and the element is already contained in the collection.\n */\n public fun add(element: E): Boolean\n\n /**\n * Removes a single instance of the specified element from this\n * collection, if it is present.\n *\n * @return `true` if the element has been successfully removed; `false` if it was not present in the collection.\n */\n public fun remove(element: E): Boolean\n\n // Bulk Modification Operations\n /**\n * Adds all of the elements of the specified collection to this collection.\n *\n * @return `true` if any of the specified elements was added to the collection, `false` if the collection was not modified.\n */\n public fun addAll(elements: Collection): Boolean\n\n /**\n * Removes all of this collection's elements that are also contained in the specified collection.\n *\n * @return `true` if any of the specified elements was removed from the collection, `false` if the collection was not modified.\n */\n public fun removeAll(elements: Collection): Boolean\n\n /**\n * Retains only the elements in this collection that are contained in the specified collection.\n *\n * @return `true` if any element was removed from the collection, `false` if the collection was not modified.\n */\n public fun retainAll(elements: Collection): Boolean\n\n /**\n * Removes all elements from this collection.\n */\n public fun clear(): Unit\n}\n\n/**\n * A generic ordered collection of elements. Methods in this interface support only read-only access to the list;\n * read/write access is supported through the [MutableList] interface.\n * @param E the type of elements contained in the list. The list is covariant on its element type.\n */\npublic interface List : Collection {\n // Query Operations\n\n override val size: Int\n override fun isEmpty(): Boolean\n override fun contains(element: @UnsafeVariance E): Boolean\n override fun iterator(): Iterator\n\n // Bulk Operations\n override fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean\n\n // Positional Access Operations\n /**\n * Returns the element at the specified index in the list.\n */\n public operator fun get(index: Int): E\n\n // Search Operations\n /**\n * Returns the index of the first occurrence of the specified element in the list, or -1 if the specified\n * element is not contained in the list.\n */\n public fun indexOf(element: @UnsafeVariance E): Int\n\n /**\n * Returns the index of the last occurrence of the specified element in the list, or -1 if the specified\n * element is not contained in the list.\n */\n public fun lastIndexOf(element: @UnsafeVariance E): Int\n\n // List Iterators\n /**\n * Returns a list iterator over the elements in this list (in proper sequence).\n */\n public fun listIterator(): ListIterator\n\n /**\n * Returns a list iterator over the elements in this list (in proper sequence), starting at the specified [index].\n */\n public fun listIterator(index: Int): ListIterator\n\n // View\n /**\n * Returns a view of the portion of this list between the specified [fromIndex] (inclusive) and [toIndex] (exclusive).\n * The returned list is backed by this list, so non-structural changes in the returned list are reflected in this list, and vice-versa.\n *\n * Structural changes in the base list make the behavior of the view undefined.\n */\n public fun subList(fromIndex: Int, toIndex: Int): List\n}\n\n/**\n * A generic ordered collection of elements that supports adding and removing elements.\n * @param E the type of elements contained in the list. The mutable list is invariant on its element type.\n */\npublic interface MutableList : List, MutableCollection {\n // Modification Operations\n /**\n * Adds the specified element to the end of this list.\n *\n * @return `true` because the list is always modified as the result of this operation.\n */\n override fun add(element: E): Boolean\n\n override fun remove(element: E): Boolean\n\n // Bulk Modification Operations\n /**\n * Adds all of the elements of the specified collection to the end of this list.\n *\n * The elements are appended in the order they appear in the [elements] collection.\n *\n * @return `true` if the list was changed as the result of the operation.\n */\n override fun addAll(elements: Collection): Boolean\n\n /**\n * Inserts all of the elements of the specified collection [elements] into this list at the specified [index].\n *\n * @return `true` if the list was changed as the result of the operation.\n */\n public fun addAll(index: Int, elements: Collection): Boolean\n\n override fun removeAll(elements: Collection): Boolean\n override fun retainAll(elements: Collection): Boolean\n override fun clear(): Unit\n\n // Positional Access Operations\n /**\n * Replaces the element at the specified position in this list with the specified element.\n *\n * @return the element previously at the specified position.\n */\n public operator fun set(index: Int, element: E): E\n\n /**\n * Inserts an element into the list at the specified [index].\n */\n public fun add(index: Int, element: E): Unit\n\n /**\n * Removes an element at the specified [index] from the list.\n *\n * @return the element that has been removed.\n */\n public fun removeAt(index: Int): E\n\n // List Iterators\n override fun listIterator(): MutableListIterator\n\n override fun listIterator(index: Int): MutableListIterator\n\n // View\n override fun subList(fromIndex: Int, toIndex: Int): MutableList\n}\n\n/**\n * A generic unordered collection of elements that does not support duplicate elements.\n * Methods in this interface support only read-only access to the set;\n * read/write access is supported through the [MutableSet] interface.\n * @param E the type of elements contained in the set. The set is covariant on its element type.\n */\npublic interface Set : Collection {\n // Query Operations\n\n override val size: Int\n override fun isEmpty(): Boolean\n override fun contains(element: @UnsafeVariance E): Boolean\n override fun iterator(): Iterator\n\n // Bulk Operations\n override fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean\n}\n\n/**\n * A generic unordered collection of elements that does not support duplicate elements, and supports\n * adding and removing elements.\n * @param E the type of elements contained in the set. The mutable set is invariant on its element type.\n */\npublic interface MutableSet : Set, MutableCollection {\n // Query Operations\n override fun iterator(): MutableIterator\n\n // Modification Operations\n\n /**\n * Adds the specified element to the set.\n *\n * @return `true` if the element has been added, `false` if the element is already contained in the set.\n */\n override fun add(element: E): Boolean\n\n override fun remove(element: E): Boolean\n\n // Bulk Modification Operations\n\n override fun addAll(elements: Collection): Boolean\n override fun removeAll(elements: Collection): Boolean\n override fun retainAll(elements: Collection): Boolean\n override fun clear(): Unit\n}\n\n/**\n * A collection that holds pairs of objects (keys and values) and supports efficiently retrieving\n * the value corresponding to each key. Map keys are unique; the map holds only one value for each key.\n * Methods in this interface support only read-only access to the map; read-write access is supported through\n * the [MutableMap] interface.\n * @param K the type of map keys. The map is invariant on its key type, as it\n * can accept key as a parameter (of [containsKey] for example) and return it in [keys] set.\n * @param V the type of map values. The map is covariant on its value type.\n */\npublic interface Map {\n // Query Operations\n /**\n * Returns the number of key/value pairs in the map.\n */\n public val size: Int\n\n /**\n * Returns `true` if the map is empty (contains no elements), `false` otherwise.\n */\n public fun isEmpty(): Boolean\n\n /**\n * Returns `true` if the map contains the specified [key].\n */\n public fun containsKey(key: K): Boolean\n\n /**\n * Returns `true` if the map maps one or more keys to the specified [value].\n */\n public fun containsValue(value: @UnsafeVariance V): Boolean\n\n /**\n * Returns the value corresponding to the given [key], or `null` if such a key is not present in the map.\n */\n public operator fun get(key: K): V?\n\n /**\n * Returns the value corresponding to the given [key], or [defaultValue] if such a key is not present in the map.\n *\n * @since JDK 1.8\n */\n @SinceKotlin(\"1.1\")\n @PlatformDependent\n public fun getOrDefault(key: K, defaultValue: @UnsafeVariance V): V {\n // See default implementation in JDK sources\n return null as V\n }\n\n // Views\n /**\n * Returns a read-only [Set] of all keys in this map.\n */\n public val keys: Set\n\n /**\n * Returns a read-only [Collection] of all values in this map. Note that this collection may contain duplicate values.\n */\n public val values: Collection\n\n /**\n * Returns a read-only [Set] of all key/value pairs in this map.\n */\n public val entries: Set>\n\n /**\n * Represents a key/value pair held by a [Map].\n */\n public interface Entry {\n /**\n * Returns the key of this key/value pair.\n */\n public val key: K\n\n /**\n * Returns the value of this key/value pair.\n */\n public val value: V\n }\n}\n\n/**\n * A modifiable collection that holds pairs of objects (keys and values) and supports efficiently retrieving\n * the value corresponding to each key. Map keys are unique; the map holds only one value for each key.\n * @param K the type of map keys. The map is invariant on its key type.\n * @param V the type of map values. The mutable map is invariant on its value type.\n */\npublic interface MutableMap : Map {\n // Modification Operations\n /**\n * Associates the specified [value] with the specified [key] in the map.\n *\n * @return the previous value associated with the key, or `null` if the key was not present in the map.\n */\n public fun put(key: K, value: V): V?\n\n /**\n * Removes the specified key and its corresponding value from this map.\n *\n * @return the previous value associated with the key, or `null` if the key was not present in the map.\n */\n public fun remove(key: K): V?\n\n /**\n * Removes the entry for the specified key only if it is mapped to the specified value.\n *\n * @return true if entry was removed\n */\n @SinceKotlin(\"1.1\")\n @PlatformDependent\n public fun remove(key: K, value: V): Boolean {\n // See default implementation in JDK sources\n return true\n }\n\n // Bulk Modification Operations\n /**\n * Updates this map with key/value pairs from the specified map [from].\n */\n public fun putAll(from: Map): Unit\n\n /**\n * Removes all elements from this map.\n */\n public fun clear(): Unit\n\n // Views\n /**\n * Returns a [MutableSet] of all keys in this map.\n */\n override val keys: MutableSet\n\n /**\n * Returns a [MutableCollection] of all values in this map. Note that this collection may contain duplicate values.\n */\n override val values: MutableCollection\n\n /**\n * Returns a [MutableSet] of all key/value pairs in this map.\n */\n override val entries: MutableSet>\n\n /**\n * Represents a key/value pair held by a [MutableMap].\n */\n public interface MutableEntry : Map.Entry {\n /**\n * Changes the value associated with the key of this entry.\n *\n * @return the previous value corresponding to the key.\n */\n public fun setValue(newValue: V): V\n }\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.collections\n\n/** An iterator over a sequence of values of type `Byte`. */\npublic abstract class ByteIterator : Iterator {\n override final fun next() = nextByte()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextByte(): Byte\n}\n\n/** An iterator over a sequence of values of type `Char`. */\npublic abstract class CharIterator : Iterator {\n override final fun next() = nextChar()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextChar(): Char\n}\n\n/** An iterator over a sequence of values of type `Short`. */\npublic abstract class ShortIterator : Iterator {\n override final fun next() = nextShort()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextShort(): Short\n}\n\n/** An iterator over a sequence of values of type `Int`. */\npublic abstract class IntIterator : Iterator {\n override final fun next() = nextInt()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextInt(): Int\n}\n\n/** An iterator over a sequence of values of type `Long`. */\npublic abstract class LongIterator : Iterator {\n override final fun next() = nextLong()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextLong(): Long\n}\n\n/** An iterator over a sequence of values of type `Float`. */\npublic abstract class FloatIterator : Iterator {\n override final fun next() = nextFloat()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextFloat(): Float\n}\n\n/** An iterator over a sequence of values of type `Double`. */\npublic abstract class DoubleIterator : Iterator {\n override final fun next() = nextDouble()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextDouble(): Double\n}\n\n/** An iterator over a sequence of values of type `Boolean`. */\npublic abstract class BooleanIterator : Iterator {\n override final fun next() = nextBoolean()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextBoolean(): Boolean\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.ranges\n\n/**\n * An iterator over a progression of values of type `Char`.\n * @property step the number by which the value is incremented on each step.\n */\ninternal class CharProgressionIterator(first: Char, last: Char, val step: Int) : CharIterator() {\n private val finalElement = last.toInt()\n private var hasNext: Boolean = if (step > 0) first <= last else first >= last\n private var next = if (hasNext) first.toInt() else finalElement\n\n override fun hasNext(): Boolean = hasNext\n\n override fun nextChar(): Char {\n val value = next\n if (value == finalElement) {\n if (!hasNext) throw kotlin.NoSuchElementException()\n hasNext = false\n }\n else {\n next += step\n }\n return value.toChar()\n }\n}\n\n/**\n * An iterator over a progression of values of type `Int`.\n * @property step the number by which the value is incremented on each step.\n */\ninternal class IntProgressionIterator(first: Int, last: Int, val step: Int) : IntIterator() {\n private val finalElement = last\n private var hasNext: Boolean = if (step > 0) first <= last else first >= last\n private var next = if (hasNext) first else finalElement\n\n override fun hasNext(): Boolean = hasNext\n\n override fun nextInt(): Int {\n val value = next\n if (value == finalElement) {\n if (!hasNext) throw kotlin.NoSuchElementException()\n hasNext = false\n }\n else {\n next += step\n }\n return value\n }\n}\n\n/**\n * An iterator over a progression of values of type `Long`.\n * @property step the number by which the value is incremented on each step.\n */\ninternal class LongProgressionIterator(first: Long, last: Long, val step: Long) : LongIterator() {\n private val finalElement = last\n private var hasNext: Boolean = if (step > 0) first <= last else first >= last\n private var next = if (hasNext) first else finalElement\n\n override fun hasNext(): Boolean = hasNext\n\n override fun nextLong(): Long {\n val value = next\n if (value == finalElement) {\n if (!hasNext) throw kotlin.NoSuchElementException()\n hasNext = false\n }\n else {\n next += step\n }\n return value\n }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.ranges\n\nimport kotlin.internal.getProgressionLastElement\n\n/**\n * A progression of values of type `Char`.\n */\npublic open class CharProgression\n internal constructor\n (\n start: Char,\n endInclusive: Char,\n step: Int\n ) : Iterable {\n init {\n if (step == 0) throw kotlin.IllegalArgumentException(\"Step must be non-zero.\")\n if (step == Int.MIN_VALUE) throw kotlin.IllegalArgumentException(\"Step must be greater than Int.MIN_VALUE to avoid overflow on negation.\")\n }\n\n /**\n * The first element in the progression.\n */\n public val first: Char = start\n\n /**\n * The last element in the progression.\n */\n public val last: Char = getProgressionLastElement(start.toInt(), endInclusive.toInt(), step).toChar()\n\n /**\n * The step of the progression.\n */\n public val step: Int = step\n\n override fun iterator(): CharIterator = CharProgressionIterator(first, last, step)\n\n /** Checks if the progression is empty. */\n public open fun isEmpty(): Boolean = if (step > 0) first > last else first < last\n\n override fun equals(other: Any?): Boolean =\n other is CharProgression && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last && step == other.step)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (31 * first.toInt() + last.toInt()) + step)\n\n override fun toString(): String = if (step > 0) \"$first..$last step $step\" else \"$first downTo $last step ${-step}\"\n\n companion object {\n /**\n * Creates CharProgression within the specified bounds of a closed range.\n\n * The progression starts with the [rangeStart] value and goes toward the [rangeEnd] value not excluding it, with the specified [step].\n * In order to go backwards the [step] must be negative.\n *\n * [step] must be greater than `Int.MIN_VALUE` and not equal to zero.\n */\n public fun fromClosedRange(rangeStart: Char, rangeEnd: Char, step: Int): CharProgression = CharProgression(rangeStart, rangeEnd, step)\n }\n}\n\n/**\n * A progression of values of type `Int`.\n */\npublic open class IntProgression\n internal constructor\n (\n start: Int,\n endInclusive: Int,\n step: Int\n ) : Iterable {\n init {\n if (step == 0) throw kotlin.IllegalArgumentException(\"Step must be non-zero.\")\n if (step == Int.MIN_VALUE) throw kotlin.IllegalArgumentException(\"Step must be greater than Int.MIN_VALUE to avoid overflow on negation.\")\n }\n\n /**\n * The first element in the progression.\n */\n public val first: Int = start\n\n /**\n * The last element in the progression.\n */\n public val last: Int = getProgressionLastElement(start.toInt(), endInclusive.toInt(), step).toInt()\n\n /**\n * The step of the progression.\n */\n public val step: Int = step\n\n override fun iterator(): IntIterator = IntProgressionIterator(first, last, step)\n\n /** Checks if the progression is empty. */\n public open fun isEmpty(): Boolean = if (step > 0) first > last else first < last\n\n override fun equals(other: Any?): Boolean =\n other is IntProgression && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last && step == other.step)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (31 * first + last) + step)\n\n override fun toString(): String = if (step > 0) \"$first..$last step $step\" else \"$first downTo $last step ${-step}\"\n\n companion object {\n /**\n * Creates IntProgression within the specified bounds of a closed range.\n\n * The progression starts with the [rangeStart] value and goes toward the [rangeEnd] value not excluding it, with the specified [step].\n * In order to go backwards the [step] must be negative.\n *\n * [step] must be greater than `Int.MIN_VALUE` and not equal to zero.\n */\n public fun fromClosedRange(rangeStart: Int, rangeEnd: Int, step: Int): IntProgression = IntProgression(rangeStart, rangeEnd, step)\n }\n}\n\n/**\n * A progression of values of type `Long`.\n */\npublic open class LongProgression\n internal constructor\n (\n start: Long,\n endInclusive: Long,\n step: Long\n ) : Iterable {\n init {\n if (step == 0L) throw kotlin.IllegalArgumentException(\"Step must be non-zero.\")\n if (step == Long.MIN_VALUE) throw kotlin.IllegalArgumentException(\"Step must be greater than Long.MIN_VALUE to avoid overflow on negation.\")\n }\n\n /**\n * The first element in the progression.\n */\n public val first: Long = start\n\n /**\n * The last element in the progression.\n */\n public val last: Long = getProgressionLastElement(start.toLong(), endInclusive.toLong(), step).toLong()\n\n /**\n * The step of the progression.\n */\n public val step: Long = step\n\n override fun iterator(): LongIterator = LongProgressionIterator(first, last, step)\n\n /** Checks if the progression is empty. */\n public open fun isEmpty(): Boolean = if (step > 0) first > last else first < last\n\n override fun equals(other: Any?): Boolean =\n other is LongProgression && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last && step == other.step)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (31 * (first xor (first ushr 32)) + (last xor (last ushr 32))) + (step xor (step ushr 32))).toInt()\n\n override fun toString(): String = if (step > 0) \"$first..$last step $step\" else \"$first downTo $last step ${-step}\"\n\n companion object {\n /**\n * Creates LongProgression within the specified bounds of a closed range.\n\n * The progression starts with the [rangeStart] value and goes toward the [rangeEnd] value not excluding it, with the specified [step].\n * In order to go backwards the [step] must be negative.\n *\n * [step] must be greater than `Long.MIN_VALUE` and not equal to zero.\n */\n public fun fromClosedRange(rangeStart: Long, rangeEnd: Long, step: Long): LongProgression = LongProgression(rangeStart, rangeEnd, step)\n }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.ranges\n\n/**\n * Represents a range of values (for example, numbers or characters).\n * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/ranges.html) for more information.\n */\npublic interface ClosedRange> {\n /**\n * The minimum value in the range.\n */\n public val start: T\n\n /**\n * The maximum value in the range (inclusive).\n */\n public val endInclusive: T\n\n /**\n * Checks whether the specified [value] belongs to the range.\n */\n public operator fun contains(value: T): Boolean = value >= start && value <= endInclusive\n\n /**\n * Checks whether the range is empty.\n */\n public fun isEmpty(): Boolean = start > endInclusive\n}\n","/*\n * Copyright 2010-2015 JetBrains s.r.o.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage kotlin\n\n/**\n * The type with only one value: the `Unit` object. This type corresponds to the `void` type in Java.\n */\npublic object Unit {\n override fun toString() = \"kotlin.Unit\"\n}\n","/*\n * Copyright 2010-2015 JetBrains s.r.o.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage kotlin.annotation\n\nimport kotlin.annotation.AnnotationTarget.*\n\n/**\n * Contains the list of code elements which are the possible annotation targets\n */\npublic enum class AnnotationTarget {\n /** Class, interface or object, annotation class is also included */\n CLASS,\n /** Annotation class only */\n ANNOTATION_CLASS,\n /** Generic type parameter (unsupported yet) */\n TYPE_PARAMETER,\n /** Property */\n PROPERTY,\n /** Field, including property's backing field */\n FIELD,\n /** Local variable */\n LOCAL_VARIABLE,\n /** Value parameter of a function or a constructor */\n VALUE_PARAMETER,\n /** Constructor only (primary or secondary) */\n CONSTRUCTOR,\n /** Function (constructors are not included) */\n FUNCTION,\n /** Property getter only */\n PROPERTY_GETTER,\n /** Property setter only */\n PROPERTY_SETTER,\n /** Type usage */\n TYPE,\n /** Any expression */\n EXPRESSION,\n /** File */\n FILE,\n /** Type alias */\n @SinceKotlin(\"1.1\")\n TYPEALIAS\n}\n\n/**\n * Contains the list of possible annotation's retentions.\n *\n * Determines how an annotation is stored in binary output.\n */\npublic enum class AnnotationRetention {\n /** Annotation isn't stored in binary output */\n SOURCE,\n /** Annotation is stored in binary output, but invisible for reflection */\n BINARY,\n /** Annotation is stored in binary output and visible for reflection (default retention) */\n RUNTIME\n}\n\n/**\n * This meta-annotation indicates the kinds of code elements which are possible targets of an annotation.\n *\n * If the target meta-annotation is not present on an annotation declaration, the annotation is applicable to the following elements:\n * [CLASS], [PROPERTY], [FIELD], [LOCAL_VARIABLE], [VALUE_PARAMETER], [CONSTRUCTOR], [FUNCTION], [PROPERTY_GETTER], [PROPERTY_SETTER].\n *\n * @property allowedTargets list of allowed annotation targets\n */\n@Target(AnnotationTarget.ANNOTATION_CLASS)\n@MustBeDocumented\npublic annotation class Target(vararg val allowedTargets: AnnotationTarget)\n\n/**\n * This meta-annotation determines whether an annotation is stored in binary output and visible for reflection. By default, both are true.\n *\n * @property value necessary annotation retention (RUNTIME, BINARY or SOURCE)\n */\n@Target(AnnotationTarget.ANNOTATION_CLASS)\npublic annotation class Retention(val value: AnnotationRetention = AnnotationRetention.RUNTIME)\n\n/**\n * This meta-annotation determines that an annotation is applicable twice or more on a single code element\n */\n@Target(AnnotationTarget.ANNOTATION_CLASS)\npublic annotation class Repeatable\n\n/**\n * This meta-annotation determines that an annotation is a part of public API and therefore should be included in the generated\n * documentation for the element to which the annotation is applied.\n */\n@Target(AnnotationTarget.ANNOTATION_CLASS)\npublic annotation class MustBeDocumented\n","/*\n * Copyright 2010-2016 JetBrains s.r.o.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage kotlin.internal\n\n/**\n * Specifies that the corresponding type parameter is not used for unsafe operations such as casts or 'is' checks\n * That means it's completely safe to use generic types as argument for such parameter.\n */\n@Target(AnnotationTarget.TYPE_PARAMETER)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class PureReifiable\n\n/**\n * Specifies that the corresponding built-in method exists depending on platform.\n * Current implementation for JVM looks whether method with same JVM descriptor exists in the module JDK.\n * For example MutableMap.remove(K, V) available only if corresponding\n * method 'java/util/Map.remove(Ljava/lang/Object;Ljava/lang/Object;)Z' is defined in JDK (i.e. for major versions >= 8)\n */\n@Target(AnnotationTarget.FUNCTION)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class PlatformDependent\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.internal\n\n// a mod b (in arithmetical sense)\nprivate fun mod(a: Int, b: Int): Int {\n val mod = a % b\n return if (mod >= 0) mod else mod + b\n}\n\nprivate fun mod(a: Long, b: Long): Long {\n val mod = a % b\n return if (mod >= 0) mod else mod + b\n}\n\n// (a - b) mod c\nprivate fun differenceModulo(a: Int, b: Int, c: Int): Int {\n return mod(mod(a, c) - mod(b, c), c)\n}\n\nprivate fun differenceModulo(a: Long, b: Long, c: Long): Long {\n return mod(mod(a, c) - mod(b, c), c)\n}\n\n/**\n * Calculates the final element of a bounded arithmetic progression, i.e. the last element of the progression which is in the range\n * from [start] to [end] in case of a positive [step], or from [end] to [start] in case of a negative\n * [step].\n *\n * No validation on passed parameters is performed. The given parameters should satisfy the condition:\n *\n * - either `step > 0` and `start <= end`,\n * - or `step < 0` and `start >= end`.\n *\n * @param start first element of the progression\n * @param end ending bound for the progression\n * @param step increment, or difference of successive elements in the progression\n * @return the final element of the progression\n * @suppress\n */\n@PublishedApi\ninternal fun getProgressionLastElement(start: Int, end: Int, step: Int): Int = when {\n step > 0 -> if (start >= end) end else end - differenceModulo(end, start, step)\n step < 0 -> if (start <= end) end else end + differenceModulo(start, end, -step)\n else -> throw kotlin.IllegalArgumentException(\"Step is zero.\")\n}\n\n/**\n * Calculates the final element of a bounded arithmetic progression, i.e. the last element of the progression which is in the range\n * from [start] to [end] in case of a positive [step], or from [end] to [start] in case of a negative\n * [step].\n *\n * No validation on passed parameters is performed. The given parameters should satisfy the condition:\n *\n * - either `step > 0` and `start <= end`,\n * - or `step < 0` and `start >= end`.\n *\n * @param start first element of the progression\n * @param end ending bound for the progression\n * @param step increment, or difference of successive elements in the progression\n * @return the final element of the progression\n * @suppress\n */\n@PublishedApi\ninternal fun getProgressionLastElement(start: Long, end: Long, step: Long): Long = when {\n step > 0 -> if (start >= end) end else end - differenceModulo(end, start, step)\n step < 0 -> if (start <= end) end else end + differenceModulo(start, end, -step)\n else -> throw kotlin.IllegalArgumentException(\"Step is zero.\")\n}\n","/*\n * Copyright 2010-2015 JetBrains s.r.o.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage kotlin.reflect\n\n/**\n * Represents a parameter passed to a function or a property getter/setter,\n * including `this` and extension receiver parameters.\n */\npublic interface KParameter : KAnnotatedElement {\n /**\n * 0-based index of this parameter in the parameter list of its containing callable.\n */\n public val index: Int\n\n /**\n * Name of this parameter as it was declared in the source code,\n * or `null` if the parameter has no name or its name is not available at runtime.\n * Examples of nameless parameters include `this` instance for member functions,\n * extension receiver for extension functions or properties, parameters of Java methods\n * compiled without the debug information, and others.\n */\n public val name: String?\n\n /**\n * Type of this parameter. For a `vararg` parameter, this is the type of the corresponding array,\n * not the individual element.\n */\n public val type: KType\n\n /**\n * Kind of this parameter.\n */\n public val kind: Kind\n\n /**\n * Kind represents a particular position of the parameter declaration in the source code,\n * such as an instance, an extension receiver parameter or a value parameter.\n */\n public enum class Kind {\n /** Instance required to make a call to the member, or an outer class instance for an inner class constructor. */\n INSTANCE,\n\n /** Extension receiver of an extension function or property. */\n EXTENSION_RECEIVER,\n\n /** Ordinary named value parameter. */\n VALUE,\n }\n\n /**\n * `true` if this parameter is optional and can be omitted when making a call via [KCallable.callBy], or `false` otherwise.\n *\n * A parameter is optional in any of the two cases:\n * 1. The default value is provided at the declaration of this parameter.\n * 2. The parameter is declared in a member function and one of the corresponding parameters in the super functions is optional.\n */\n public val isOptional: Boolean\n\n /**\n * `true` if this parameter is `vararg`.\n * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/functions.html#variable-number-of-arguments-varargs)\n * for more information.\n */\n @SinceKotlin(\"1.1\")\n public val isVararg: Boolean\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.reflect\n\n/**\n * Represents a type. Type is usually either a class with optional type arguments,\n * or a type parameter of some declaration, plus nullability.\n */\npublic interface KType : KAnnotatedElement {\n /**\n * The declaration of the classifier used in this type.\n * For example, in the type `List` the classifier would be the [KClass] instance for [List].\n *\n * Returns `null` if this type is not denotable in Kotlin, for example if it is an intersection type.\n */\n @SinceKotlin(\"1.1\")\n public val classifier: KClassifier?\n\n /**\n * Type arguments passed for the parameters of the classifier in this type.\n * For example, in the type `Array` the only type argument is `out Number`.\n *\n * In case this type is based on an inner class, the returned list contains the type arguments provided for the innermost class first,\n * then its outer class, and so on.\n * For example, in the type `Outer.Inner` the returned list is `[C, D, A, B]`.\n */\n @SinceKotlin(\"1.1\")\n public val arguments: List\n\n /**\n * `true` if this type was marked nullable in the source code.\n *\n * For Kotlin types, it means that `null` value is allowed to be represented by this type.\n * In practice it means that the type was declared with a question mark at the end.\n * For non-Kotlin types, it means the type or the symbol which was declared with this type\n * is annotated with a runtime-retained nullability annotation such as [javax.annotation.Nullable].\n *\n * Note that even if [isMarkedNullable] is false, values of the type can still be `null`.\n * This may happen if it is a type of the type parameter with a nullable upper bound:\n *\n * ```\n * fun foo(t: T) {\n * // isMarkedNullable == false for t's type, but t can be null here when T = \"Any?\"\n * }\n * ```\n */\n public val isMarkedNullable: Boolean\n}\n\n/**\n * Represents a type projection. Type projection is usually the argument to another type in a type usage.\n * For example, in the type `Array`, `out Number` is the covariant projection of the type represented by the class `Number`.\n *\n * Type projection is either the star projection, or an entity consisting of a specific type plus optional variance.\n *\n * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/generics.html#type-projections)\n * for more information.\n */\n@SinceKotlin(\"1.1\")\npublic data class KTypeProjection constructor(\n /**\n * The use-site variance specified in the projection, or `null` if this is a star projection.\n */\n public val variance: KVariance?,\n /**\n * The type specified in the projection, or `null` if this is a star projection.\n */\n public val type: KType?\n) {\n public companion object {\n /**\n * Star projection, denoted by the `*` character.\n * For example, in the type `KClass<*>`, `*` is the star projection.\n * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/generics.html#star-projections)\n * for more information.\n */\n public val STAR: KTypeProjection = KTypeProjection(null, null)\n\n /**\n * Creates an invariant projection of a given type. Invariant projection is just the type itself,\n * without any use-site variance modifiers applied to it.\n * For example, in the type `Set`, `String` is an invariant projection of the type represented by the class `String`.\n */\n public fun invariant(type: KType): KTypeProjection =\n KTypeProjection(KVariance.INVARIANT, type)\n\n /**\n * Creates a contravariant projection of a given type, denoted by the `in` modifier applied to a type.\n * For example, in the type `MutableList`, `in Number` is a contravariant projection of the type of class `Number`.\n */\n public fun contravariant(type: KType): KTypeProjection =\n KTypeProjection(KVariance.IN, type)\n\n /**\n * Creates a covariant projection of a given type, denoted by the `out` modifier applied to a type.\n * For example, in the type `Array`, `out Number` is a covariant projection of the type of class `Number`.\n */\n public fun covariant(type: KType): KTypeProjection =\n KTypeProjection(KVariance.OUT, type)\n }\n}\n","/*\n * Copyright 2010-2016 JetBrains s.r.o.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage kotlin.reflect\n\n/**\n * Represents variance applied to a type parameter on the declaration site (*declaration-site variance*),\n * or to a type in a projection (*use-site variance*).\n *\n * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/generics.html#variance)\n * for more information.\n *\n * @see [KTypeParameter.variance]\n * @see [KTypeProjection]\n */\n@SinceKotlin(\"1.1\")\nenum class KVariance {\n /**\n * The affected type parameter or type is *invariant*, which means it has no variance applied to it.\n */\n INVARIANT,\n\n /**\n * The affected type parameter or type is *contravariant*. Denoted by the `in` modifier in the source code.\n */\n IN,\n\n /**\n * The affected type parameter or type is *covariant*. Denoted by the `out` modifier in the source code.\n */\n OUT,\n}\n","/*\n * Copyright 2010-2016 JetBrains s.r.o.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage kotlin.reflect\n\n/**\n * Visibility is an aspect of a Kotlin declaration regulating where that declaration is accessible in the source code.\n * Visibility can be changed with one of the following modifiers: `public`, `protected`, `internal`, `private`.\n *\n * Note that some Java visibilities such as package-private and protected (which also gives access to items from the same package)\n * cannot be represented in Kotlin, so there's no [KVisibility] value corresponding to them.\n *\n * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/visibility-modifiers.html)\n * for more information.\n */\n@SinceKotlin(\"1.1\")\nenum class KVisibility {\n /**\n * Visibility of declarations marked with the `public` modifier, or with no modifier at all.\n */\n PUBLIC,\n\n /**\n * Visibility of declarations marked with the `protected` modifier.\n */\n PROTECTED,\n\n /**\n * Visibility of declarations marked with the `internal` modifier.\n */\n INTERNAL,\n\n /**\n * Visibility of declarations marked with the `private` modifier.\n */\n PRIVATE,\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@JsName(\"arrayIterator\")\ninternal fun arrayIterator(array: dynamic, type: String?) = when (type) {\n null -> {\n val arr: Array = array\n object : Iterator {\n var index = 0\n override fun hasNext() = index < arr.size\n override fun next() = if (index < arr.size) arr[index++] else throw NoSuchElementException(\"$index\")\n }\n }\n \"BooleanArray\" -> booleanArrayIterator(array)\n \"ByteArray\" -> byteArrayIterator(array)\n \"ShortArray\" -> shortArrayIterator(array)\n \"CharArray\" -> charArrayIterator(array)\n \"IntArray\" -> intArrayIterator(array)\n \"LongArray\" -> longArrayIterator(array)\n \"FloatArray\" -> floatArrayIterator(array)\n \"DoubleArray\" -> doubleArrayIterator(array)\n else -> throw IllegalStateException(\"Unsupported type argument for arrayIterator: $type\")\n}\n\n@JsName(\"booleanArrayIterator\")\ninternal fun booleanArrayIterator(array: BooleanArray) = object : BooleanIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextBoolean() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"byteArrayIterator\")\ninternal fun byteArrayIterator(array: ByteArray) = object : ByteIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextByte() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"shortArrayIterator\")\ninternal fun shortArrayIterator(array: ShortArray) = object : ShortIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextShort() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"charArrayIterator\")\ninternal fun charArrayIterator(array: CharArray) = object : CharIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextChar() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"intArrayIterator\")\ninternal fun intArrayIterator(array: IntArray) = object : IntIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextInt() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"floatArrayIterator\")\ninternal fun floatArrayIterator(array: FloatArray) = object : FloatIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextFloat() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"doubleArrayIterator\")\ninternal fun doubleArrayIterator(array: DoubleArray) = object : DoubleIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextDouble() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"longArrayIterator\")\ninternal fun longArrayIterator(array: LongArray) = object : LongIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextLong() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"PropertyMetadata\")\ninternal class PropertyMetadata(@JsName(\"callableName\") val name: String)\n\n@JsName(\"noWhenBranchMatched\")\ninternal fun noWhenBranchMatched(): Nothing = throw NoWhenBranchMatchedException()\n\n@JsName(\"subSequence\")\ninternal fun subSequence(c: CharSequence, startIndex: Int, endIndex: Int): CharSequence {\n if (c is String) {\n return c.substring(startIndex, endIndex)\n } else {\n return c.asDynamic().`subSequence_vux9f0$`(startIndex, endIndex)\n }\n}\n\n@JsName(\"captureStack\")\ninternal fun captureStack(baseClass: JsClass, instance: Throwable) {\n if (js(\"Error\").captureStackTrace) {\n js(\"Error\").captureStackTrace(instance, instance::class.js);\n } else {\n instance.asDynamic().stack = js(\"new Error()\").stack;\n }\n}\n\n@JsName(\"newThrowable\")\ninternal fun newThrowable(message: String?, cause: Throwable?): Throwable {\n val throwable = js(\"new Error()\")\n throwable.message = if (jsTypeOf(message) == \"undefined\") {\n if (cause != null) cause.toString() else null\n } else {\n message\n }\n throwable.cause = cause\n throwable.name = \"Throwable\"\n return throwable\n}\n\n@JsName(\"BoxedChar\")\ninternal class BoxedChar(val c: Int) : Comparable {\n override fun equals(other: Any?): Boolean {\n return other is BoxedChar && c == other.c\n }\n\n override fun hashCode(): Int {\n return c\n }\n\n override fun toString(): String {\n return js(\"this.c\").unsafeCast().toString()\n }\n\n override fun compareTo(other: Int): Int {\n return js(\"this.c - other\").unsafeCast()\n }\n\n @JsName(\"valueOf\")\n public fun valueOf(): Int {\n return c\n }\n}\n\n@kotlin.internal.InlineOnly\ninternal inline fun concat(args: Array): T {\n val typed = js(\"Array\")(args.size)\n for (i in args.indices) {\n val arr = args[i]\n if (arr !is Array<*>) {\n typed[i] = js(\"[]\").slice.call(arr)\n } else {\n typed[i] = arr\n }\n }\n return js(\"[]\").concat.apply(js(\"[]\"), typed);\n}\n\n/** Concat regular Array's and TypedArray's into an Array.\n */\n@PublishedApi\n@JsName(\"arrayConcat\")\n@Suppress(\"UNUSED_PARAMETER\")\ninternal fun arrayConcat(a: T, b: T): T {\n return concat(js(\"arguments\"))\n}\n\n/** Concat primitive arrays. Main use: prepare vararg arguments.\n * For compatibility with 1.1.0 the arguments may be a mixture of Array's and TypedArray's.\n *\n * If the first argument is TypedArray (Byte-, Short-, Char-, Int-, Float-, and DoubleArray) returns a TypedArray, otherwise an Array.\n * If the first argument has the $type$ property (Boolean-, Char-, and LongArray) copy its value to result.$type$.\n * If the first argument is a regular Array without the $type$ property default to arrayConcat.\n */\n@PublishedApi\n@JsName(\"primitiveArrayConcat\")\n@Suppress(\"UNUSED_PARAMETER\")\ninternal fun primitiveArrayConcat(a: T, b: T): T {\n val args: Array = js(\"arguments\")\n if (a is Array<*> && a.asDynamic().`$type$` === undefined) {\n return concat(args)\n } else {\n var size = 0\n for (i in args.indices) {\n size += args[i].asDynamic().length as Int\n }\n val result = js(\"new a.constructor(size)\")\n kotlin.copyArrayType(a, result)\n size = 0\n for (i in args.indices) {\n val arr = args[i].asDynamic()\n for (j in 0 until arr.length) {\n result[size++] = arr[j]\n }\n }\n return result\n }\n}\n\n@JsName(\"booleanArrayOf\")\ninternal fun booleanArrayOf() = withType(\"BooleanArray\", js(\"[].slice.call(arguments)\"))\n\n@JsName(\"charArrayOf\") // The arguments have to be slice'd here because of Rhino (see KT-16974)\ninternal fun charArrayOf() = withType(\"CharArray\", js(\"new Uint16Array([].slice.call(arguments))\"))\n\n@JsName(\"longArrayOf\")\ninternal fun longArrayOf() = withType(\"LongArray\", js(\"[].slice.call(arguments)\"))\n\n@JsName(\"withType\")\n@kotlin.internal.InlineOnly\ninternal inline fun withType(type: String, array: dynamic): dynamic {\n array.`$type$` = type\n return array\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\n/**\n * Function corresponding to JavaScript's `typeof` operator\n */\n@kotlin.internal.InlineOnly\n@Suppress(\"UNUSED_PARAMETER\")\npublic inline fun jsTypeOf(a: Any?): String = js(\"typeof a\")\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:Suppress(\"UNUSED_PARAMETER\", \"NOTHING_TO_INLINE\")\n\npackage kotlin\n\n/**\n * Returns an empty array of the specified type [T].\n */\npublic inline fun emptyArray(): Array = js(\"[]\")\n\n@library\npublic fun arrayOf(vararg elements: T): Array = definedExternally\n\n@library\npublic fun doubleArrayOf(vararg elements: Double): DoubleArray = definedExternally\n\n@library\npublic fun floatArrayOf(vararg elements: Float): FloatArray = definedExternally\n\n@library\npublic fun longArrayOf(vararg elements: Long): LongArray = definedExternally\n\n@library\npublic fun intArrayOf(vararg elements: Int): IntArray = definedExternally\n\n@library\npublic fun charArrayOf(vararg elements: Char): CharArray = definedExternally\n\n@library\npublic fun shortArrayOf(vararg elements: Short): ShortArray = definedExternally\n\n@library\npublic fun byteArrayOf(vararg elements: Byte): ByteArray = definedExternally\n\n@library\npublic fun booleanArrayOf(vararg elements: Boolean): BooleanArray = definedExternally\n\n/**\n * Creates a new instance of the [Lazy] that uses the specified initialization function [initializer].\n */\npublic actual fun lazy(initializer: () -> T): Lazy = UnsafeLazyImpl(initializer)\n\n/**\n * Creates a new instance of the [Lazy] that uses the specified initialization function [initializer].\n *\n * The [mode] parameter is ignored. */\npublic actual fun lazy(mode: LazyThreadSafetyMode, initializer: () -> T): Lazy = UnsafeLazyImpl(initializer)\n\n/**\n * Creates a new instance of the [Lazy] that uses the specified initialization function [initializer].\n *\n * The [lock] parameter is ignored.\n */\npublic actual fun lazy(lock: Any?, initializer: () -> T): Lazy = UnsafeLazyImpl(initializer)\n\n\ninternal fun fillFrom(src: dynamic, dst: dynamic): dynamic {\n val srcLen: Int = src.length\n val dstLen: Int = dst.length\n var index: Int = 0\n while (index < srcLen && index < dstLen) dst[index] = src[index++]\n return dst\n}\n\n\ninternal fun arrayCopyResize(source: dynamic, newSize: Int, defaultValue: Any?): dynamic {\n val result = source.slice(0, newSize)\n copyArrayType(source, result)\n var index: Int = source.length\n if (newSize > index) {\n result.length = newSize\n while (index < newSize) result[index++] = defaultValue\n }\n return result\n}\n\ninternal fun arrayPlusCollection(array: dynamic, collection: Collection): dynamic {\n val result = array.slice()\n result.length += collection.size\n copyArrayType(array, result)\n var index: Int = array.length\n for (element in collection) result[index++] = element\n return result\n}\n\ninternal fun fillFromCollection(dst: dynamic, startIndex: Int, collection: Collection): dynamic {\n var index = startIndex\n for (element in collection) dst[index++] = element\n return dst\n}\n\ninternal inline fun copyArrayType(from: dynamic, to: dynamic) {\n if (from.`$type$` !== undefined) {\n to.`$type$` = from.`$type$`\n }\n}\n\ninternal inline fun jsIsType(obj: dynamic, jsClass: dynamic) = js(\"Kotlin\").isType(obj, jsClass)","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines\n\nimport kotlin.coroutines.intrinsics.COROUTINE_SUSPENDED\n\n@SinceKotlin(\"1.3\")\n@JsName(\"CoroutineImpl\")\ninternal abstract class CoroutineImpl(private val resultContinuation: Continuation) : Continuation {\n protected var state = 0\n protected var exceptionState = 0\n protected var result: Any? = null\n protected var exception: Throwable? = null\n protected var finallyPath: Array? = null\n\n public override val context: CoroutineContext = resultContinuation.context\n\n private var intercepted_: Continuation? = null\n\n public fun intercepted(): Continuation =\n intercepted_\n ?: (context[ContinuationInterceptor]?.interceptContinuation(this) ?: this)\n .also { intercepted_ = it }\n\n override fun resumeWith(result: Result) {\n var current = this\n var currentResult: Any? = result.getOrNull()\n var currentException: Throwable? = result.exceptionOrNull()\n\n // This loop unrolls recursion in current.resumeWith(param) to make saner and shorter stack traces on resume\n while (true) {\n with(current) {\n val completion = resultContinuation\n\n // Set result and exception fields in the current continuation\n if (currentException == null) {\n this.result = currentResult\n } else {\n state = exceptionState\n exception = currentException\n }\n\n try {\n val outcome = doResume()\n if (outcome === COROUTINE_SUSPENDED) return\n currentResult = outcome\n currentException = null\n } catch (exception: dynamic) { // Catch all exceptions\n currentResult = null\n currentException = exception.unsafeCast()\n }\n\n releaseIntercepted() // this state machine instance is terminating\n\n if (completion is CoroutineImpl) {\n // unrolling recursion via loop\n current = completion\n } else {\n // top-level completion reached -- invoke and return\n currentException?.let {\n completion.resumeWithException(it)\n } ?: completion.resume(currentResult)\n return\n }\n }\n }\n }\n\n private fun releaseIntercepted() {\n val intercepted = intercepted_\n if (intercepted != null && intercepted !== this) {\n context[ContinuationInterceptor]!!.releaseInterceptedContinuation(intercepted)\n }\n this.intercepted_ = CompletedContinuation // just in case\n }\n\n protected abstract fun doResume(): Any?\n}\n\ninternal object CompletedContinuation : Continuation {\n override val context: CoroutineContext\n get() = error(\"This continuation is already complete\")\n\n override fun resumeWith(result: Result) {\n error(\"This continuation is already complete\")\n }\n\n override fun toString(): String = \"This continuation is already complete\"\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:Suppress(\"UNCHECKED_CAST\", \"RedundantVisibilityModifier\")\n\npackage kotlin\n\nimport kotlin.contracts.*\nimport kotlin.internal.InlineOnly\nimport kotlin.jvm.JvmField\n\n/**\n * A discriminated union that encapsulates successful outcome with a value of type [T]\n * or a failure with an arbitrary [Throwable] exception.\n */\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@SinceKotlin(\"1.3\")\npublic inline class Result @PublishedApi internal constructor(\n @PublishedApi\n internal val value: Any?\n) : Serializable {\n // discovery\n\n /**\n * Returns `true` if this instance represents successful outcome.\n * In this case [isFailure] returns `false`.\n */\n public val isSuccess: Boolean get() = value !is Failure\n\n /**\n * Returns `true` if this instance represents failed outcome.\n * In this case [isSuccess] returns `false`.\n */\n public val isFailure: Boolean get() = value is Failure\n\n // value & exception retrieval\n\n /**\n * Returns the encapsulated value if this instance represents [success][Result.isSuccess] or `null`\n * if it is [failure][Result.isFailure].\n *\n * This function is shorthand for `getOrElse { null }` (see [getOrElse]) or\n * `fold(onSuccess = { it }, onFailure = { null })` (see [fold]).\n */\n @InlineOnly\n public inline fun getOrNull(): T? =\n when {\n isFailure -> null\n else -> value as T\n }\n\n /**\n * Returns the encapsulated exception if this instance represents [failure][isFailure] or `null`\n * if it is [success][isSuccess].\n *\n * This function is shorthand for `fold(onSuccess = { null }, onFailure = { it })` (see [fold]).\n */\n public fun exceptionOrNull(): Throwable? =\n when (value) {\n is Failure -> value.exception\n else -> null\n }\n\n /**\n * Returns a string `Success(v)` if this instance represents [success][Result.isSuccess]\n * where `v` is a string representation of the value or a string `Failure(x)` if\n * it is [failure][isFailure] where `x` is a string representation of the exception.\n */\n public override fun toString(): String =\n when (value) {\n is Failure -> value.toString() // \"Failure($exception)\"\n else -> \"Success($value)\"\n }\n\n // companion with constructors\n\n /**\n * Companion object for [Result] class that contains its constructor functions\n * [success] and [failure].\n */\n public companion object {\n /**\n * Returns an instance that encapsulates the given [value] as successful value.\n */\n @InlineOnly\n public inline fun success(value: T): Result =\n Result(value)\n\n /**\n * Returns an instance that encapsulates the given [exception] as failure.\n */\n @InlineOnly\n public inline fun failure(exception: Throwable): Result =\n Result(createFailure(exception))\n }\n\n internal class Failure(\n @JvmField\n val exception: Throwable\n ) : Serializable {\n override fun equals(other: Any?): Boolean = other is Failure && exception == other.exception\n override fun hashCode(): Int = exception.hashCode()\n override fun toString(): String = \"Failure($exception)\"\n }\n}\n\n/**\n * Creates an instance of internal marker [Result.Failure] class to\n * make sure that this class is not exposed in ABI.\n */\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun createFailure(exception: Throwable): Any =\n Result.Failure(exception)\n\n/**\n * Throws exception if the result is failure. This internal function minimizes\n * inlined bytecode for [getOrThrow] and makes sure that in the future we can\n * add some exception-augmenting logic here (if needed).\n */\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun Result<*>.throwOnFailure() {\n if (value is Result.Failure) throw value.exception\n}\n\n/**\n * Calls the specified function [block] and returns its encapsulated result if invocation was successful,\n * catching and encapsulating any thrown exception as a failure.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun runCatching(block: () -> R): Result {\n return try {\n Result.success(block())\n } catch (e: Throwable) {\n Result.failure(e)\n }\n}\n\n/**\n * Calls the specified function [block] with `this` value as its receiver and returns its encapsulated result\n * if invocation was successful, catching and encapsulating any thrown exception as a failure.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun T.runCatching(block: T.() -> R): Result {\n return try {\n Result.success(block())\n } catch (e: Throwable) {\n Result.failure(e)\n }\n}\n\n// -- extensions ---\n\n/**\n * Returns the encapsulated value if this instance represents [success][Result.isSuccess] or throws the encapsulated exception\n * if it is [failure][Result.isFailure].\n *\n * This function is shorthand for `getOrElse { throw it }` (see [getOrElse]).\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.getOrThrow(): T {\n throwOnFailure()\n return value as T\n}\n\n/**\n * Returns the encapsulated value if this instance represents [success][Result.isSuccess] or the\n * result of [onFailure] function for encapsulated exception if it is [failure][Result.isFailure].\n *\n * Note, that an exception thrown by [onFailure] function is rethrown by this function.\n *\n * This function is shorthand for `fold(onSuccess = { it }, onFailure = onFailure)` (see [fold]).\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.getOrElse(onFailure: (exception: Throwable) -> R): R {\n contract {\n callsInPlace(onFailure, InvocationKind.AT_MOST_ONCE)\n }\n return when (val exception = exceptionOrNull()) {\n null -> value as T\n else -> onFailure(exception)\n }\n}\n\n/**\n * Returns the encapsulated value if this instance represents [success][Result.isSuccess] or the\n * [defaultValue] if it is [failure][Result.isFailure].\n *\n * This function is shorthand for `getOrElse { defaultValue }` (see [getOrElse]).\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.getOrDefault(defaultValue: R): R {\n if (isFailure) return defaultValue\n return value as T\n}\n\n/**\n * Returns the the result of [onSuccess] for encapsulated value if this instance represents [success][Result.isSuccess]\n * or the result of [onFailure] function for encapsulated exception if it is [failure][Result.isFailure].\n *\n * Note, that an exception thrown by [onSuccess] or by [onFailure] function is rethrown by this function.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.fold(\n onSuccess: (value: T) -> R,\n onFailure: (exception: Throwable) -> R\n): R {\n contract {\n callsInPlace(onSuccess, InvocationKind.AT_MOST_ONCE)\n callsInPlace(onFailure, InvocationKind.AT_MOST_ONCE)\n }\n return when (val exception = exceptionOrNull()) {\n null -> onSuccess(value as T)\n else -> onFailure(exception)\n }\n}\n\n// transformation\n\n/**\n * Returns the encapsulated result of the given [transform] function applied to encapsulated value\n * if this instance represents [success][Result.isSuccess] or the\n * original encapsulated exception if it is [failure][Result.isFailure].\n *\n * Note, that an exception thrown by [transform] function is rethrown by this function.\n * See [mapCatching] for an alternative that encapsulates exceptions.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.map(transform: (value: T) -> R): Result {\n contract {\n callsInPlace(transform, InvocationKind.AT_MOST_ONCE)\n }\n return when {\n isSuccess -> Result.success(transform(value as T))\n else -> Result(value)\n }\n}\n\n/**\n * Returns the encapsulated result of the given [transform] function applied to encapsulated value\n * if this instance represents [success][Result.isSuccess] or the\n * original encapsulated exception if it is [failure][Result.isFailure].\n *\n * Any exception thrown by [transform] function is caught, encapsulated as a failure and returned by this function.\n * See [map] for an alternative that rethrows exceptions.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.mapCatching(transform: (value: T) -> R): Result {\n return when {\n isSuccess -> runCatching { transform(value as T) }\n else -> Result(value)\n }\n}\n\n/**\n * Returns the encapsulated result of the given [transform] function applied to encapsulated exception\n * if this instance represents [failure][Result.isFailure] or the\n * original encapsulated value if it is [success][Result.isSuccess].\n *\n * Note, that an exception thrown by [transform] function is rethrown by this function.\n * See [recoverCatching] for an alternative that encapsulates exceptions.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.recover(transform: (exception: Throwable) -> R): Result {\n contract {\n callsInPlace(transform, InvocationKind.AT_MOST_ONCE)\n }\n return when (val exception = exceptionOrNull()) {\n null -> this\n else -> Result.success(transform(exception))\n }\n}\n\n/**\n * Returns the encapsulated result of the given [transform] function applied to encapsulated exception\n * if this instance represents [failure][Result.isFailure] or the\n * original encapsulated value if it is [success][Result.isSuccess].\n *\n * Any exception thrown by [transform] function is caught, encapsulated as a failure and returned by this function.\n * See [recover] for an alternative that rethrows exceptions.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.recoverCatching(transform: (exception: Throwable) -> R): Result {\n val value = value // workaround for inline classes BE bug\n return when (val exception = exceptionOrNull()) {\n null -> this\n else -> runCatching { transform(exception) }\n }\n}\n\n// \"peek\" onto value/exception and pipe\n\n/**\n * Performs the given [action] on encapsulated exception if this instance represents [failure][Result.isFailure].\n * Returns the original `Result` unchanged.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.onFailure(action: (exception: Throwable) -> Unit): Result {\n contract {\n callsInPlace(action, InvocationKind.AT_MOST_ONCE)\n }\n exceptionOrNull()?.let { action(it) }\n return this\n}\n\n/**\n * Performs the given [action] on encapsulated value if this instance represents [success][Result.isSuccess].\n * Returns the original `Result` unchanged.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.onSuccess(action: (value: T) -> Unit): Result {\n contract {\n callsInPlace(action, InvocationKind.AT_MOST_ONCE)\n }\n if (isSuccess) action(value as T)\n return this\n}\n\n// -------------------\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines\n\nimport kotlin.coroutines.intrinsics.*\nimport kotlin.internal.InlineOnly\n\n/**\n * Interface representing a continuation after a suspension point that returns a value of type `T`.\n */\n@SinceKotlin(\"1.3\")\npublic interface Continuation {\n /**\n * The context of the coroutine that corresponds to this continuation.\n */\n public val context: CoroutineContext\n\n /**\n * Resumes the execution of the corresponding coroutine passing a successful or failed [result] as the\n * return value of the last suspension point.\n */\n public fun resumeWith(result: Result)\n}\n\n/**\n * Classes and interfaces marked with this annotation are restricted when used as receivers for extension\n * `suspend` functions. These `suspend` extensions can only invoke other member or extension `suspend` functions on this particular\n * receiver and are restricted from calling arbitrary suspension functions.\n */\n@SinceKotlin(\"1.3\")\n@Target(AnnotationTarget.CLASS)\n@Retention(AnnotationRetention.BINARY)\npublic annotation class RestrictsSuspension\n\n/**\n * Resumes the execution of the corresponding coroutine passing [value] as the return value of the last suspension point.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic inline fun Continuation.resume(value: T): Unit =\n resumeWith(Result.success(value))\n\n/**\n * Resumes the execution of the corresponding coroutine so that the [exception] is re-thrown right after the\n * last suspension point.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic inline fun Continuation.resumeWithException(exception: Throwable): Unit =\n resumeWith(Result.failure(exception))\n\n\n/**\n * Creates a [Continuation] instance with the given [context] and implementation of [resumeWith] method.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic inline fun Continuation(\n context: CoroutineContext,\n crossinline resumeWith: (Result) -> Unit\n): Continuation =\n object : Continuation {\n override val context: CoroutineContext\n get() = context\n\n override fun resumeWith(result: Result) =\n resumeWith(result)\n }\n\n/**\n * Creates a coroutine without a receiver and with result type [T].\n * This function creates a new, fresh instance of suspendable computation every time it is invoked.\n *\n * To start executing the created coroutine, invoke `resume(Unit)` on the returned [Continuation] instance.\n * The [completion] continuation is invoked when the coroutine completes with a result or an exception.\n * Subsequent invocation of any resume function on the resulting continuation will produce an [IllegalStateException].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"UNCHECKED_CAST\")\npublic fun (suspend () -> T).createCoroutine(\n completion: Continuation\n): Continuation =\n SafeContinuation(createCoroutineUnintercepted(completion).intercepted(), COROUTINE_SUSPENDED)\n\n/**\n * Creates a coroutine with receiver type [R] and result type [T].\n * This function creates a new, fresh instance of suspendable computation every time it is invoked.\n *\n * To start executing the created coroutine, invoke `resume(Unit)` on the returned [Continuation] instance.\n * The [completion] continuation is invoked when the coroutine completes with a result or an exception.\n * Subsequent invocation of any resume function on the resulting continuation will produce an [IllegalStateException].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"UNCHECKED_CAST\")\npublic fun (suspend R.() -> T).createCoroutine(\n receiver: R,\n completion: Continuation\n): Continuation =\n SafeContinuation(createCoroutineUnintercepted(receiver, completion).intercepted(), COROUTINE_SUSPENDED)\n\n/**\n * Starts a coroutine without a receiver and with result type [T].\n * This function creates and starts a new, fresh instance of suspendable computation every time it is invoked.\n * The [completion] continuation is invoked when the coroutine completes with a result or an exception.\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"UNCHECKED_CAST\")\npublic fun (suspend () -> T).startCoroutine(\n completion: Continuation\n) {\n createCoroutineUnintercepted(completion).intercepted().resume(Unit)\n}\n\n/**\n * Starts a coroutine with receiver type [R] and result type [T].\n * This function creates and starts a new, fresh instance of suspendable computation every time it is invoked.\n * The [completion] continuation is invoked when the coroutine completes with a result or an exception.\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"UNCHECKED_CAST\")\npublic fun (suspend R.() -> T).startCoroutine(\n receiver: R,\n completion: Continuation\n) {\n createCoroutineUnintercepted(receiver, completion).intercepted().resume(Unit)\n}\n\n/**\n * Obtains the current continuation instance inside suspend functions and suspends\n * the currently running coroutine.\n *\n * In this function both [Continuation.resume] and [Continuation.resumeWithException] can be used either synchronously in\n * the same stack-frame where the suspension function is run or asynchronously later in the same thread or\n * from a different thread of execution. Subsequent invocation of any resume function will produce an [IllegalStateException].\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic suspend inline fun suspendCoroutine(crossinline block: (Continuation) -> Unit): T =\n suspendCoroutineUninterceptedOrReturn { c: Continuation ->\n val safe = SafeContinuation(c.intercepted())\n block(safe)\n safe.getOrThrow()\n }\n\n/**\n * Returns the context of the current coroutine.\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"WRONG_MODIFIER_TARGET\")\n@InlineOnly\npublic suspend inline val coroutineContext: CoroutineContext\n get() {\n throw NotImplementedError(\"Implemented as intrinsic\")\n }\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines.intrinsics\n\nimport kotlin.coroutines.*\nimport kotlin.internal.InlineOnly\n\n/**\n * Starts an unintercepted coroutine without a receiver and with result type [T] and executes it until its first suspension.\n * Returns the result of the coroutine or throws its exception if it does not suspend or [COROUTINE_SUSPENDED] if it suspends.\n * In the latter case, the [completion] continuation is invoked when the coroutine completes with a result or an exception.\n *\n * The coroutine is started directly in the invoker's thread without going through the [ContinuationInterceptor] that might\n * be present in the completion's [CoroutineContext]. It is the invoker's responsibility to ensure that a proper invocation\n * context is established.\n *\n * This function is designed to be used from inside of [suspendCoroutineUninterceptedOrReturn] to resume the execution of the suspended\n * coroutine using a reference to the suspending function.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic actual inline fun (suspend () -> T).startCoroutineUninterceptedOrReturn(\n completion: Continuation\n): Any? = this.asDynamic()(completion, false)\n\n/**\n * Starts an unintercepted coroutine with receiver type [R] and result type [T] and executes it until its first suspension.\n * Returns the result of the coroutine or throws its exception if it does not suspend or [COROUTINE_SUSPENDED] if it suspends.\n * In the latter case, the [completion] continuation is invoked when the coroutine completes with a result or an exception.\n *\n * The coroutine is started directly in the invoker's thread without going through the [ContinuationInterceptor] that might\n * be present in the completion's [CoroutineContext]. It is the invoker's responsibility to ensure that a proper invocation\n * context is established.\n *\n * This function is designed to be used from inside of [suspendCoroutineUninterceptedOrReturn] to resume the execution of the suspended\n * coroutine using a reference to the suspending function.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic actual inline fun (suspend R.() -> T).startCoroutineUninterceptedOrReturn(\n receiver: R,\n completion: Continuation\n): Any? = this.asDynamic()(receiver, completion, false)\n\n\n/**\n * Creates unintercepted coroutine without receiver and with result type [T].\n * This function creates a new, fresh instance of suspendable computation every time it is invoked.\n *\n * To start executing the created coroutine, invoke `resume(Unit)` on the returned [Continuation] instance.\n * The [completion] continuation is invoked when coroutine completes with result or exception.\n *\n * This function returns unintercepted continuation.\n * Invocation of `resume(Unit)` starts coroutine immediately in the invoker's call stack without going through the\n * [ContinuationInterceptor] that might be present in the completion's [CoroutineContext].\n * It is the invoker's responsibility to ensure that a proper invocation context is established.\n * Note that [completion] of this function may get invoked in an arbitrary context.\n *\n * [Continuation.intercepted] can be used to acquire the intercepted continuation.\n * Invocation of `resume(Unit)` on intercepted continuation guarantees that execution of\n * both the coroutine and [completion] happens in the invocation context established by\n * [ContinuationInterceptor].\n *\n * Repeated invocation of any resume function on the resulting continuation corrupts the\n * state machine of the coroutine and may result in arbitrary behaviour or exception.\n */\n@SinceKotlin(\"1.3\")\npublic actual fun (suspend () -> T).createCoroutineUnintercepted(\n completion: Continuation\n): Continuation =\n // Kotlin/JS suspend lambdas have an extra parameter `suspended`\n if (this.asDynamic().length == 2) {\n // When `suspended` is true the continuation is created, but not executed\n this.asDynamic()(completion, true)\n } else {\n createCoroutineFromSuspendFunction(completion) {\n this.asDynamic()(completion)\n }\n }\n\n/**\n * Creates unintercepted coroutine with receiver type [R] and result type [T].\n * This function creates a new, fresh instance of suspendable computation every time it is invoked.\n *\n * To start executing the created coroutine, invoke `resume(Unit)` on the returned [Continuation] instance.\n * The [completion] continuation is invoked when coroutine completes with result or exception.\n *\n * This function returns unintercepted continuation.\n * Invocation of `resume(Unit)` starts coroutine immediately in the invoker's call stack without going through the\n * [ContinuationInterceptor] that might be present in the completion's [CoroutineContext].\n * It is the invoker's responsibility to ensure that a proper invocation context is established.\n * Note that [completion] of this function may get invoked in an arbitrary context.\n *\n * [Continuation.intercepted] can be used to acquire the intercepted continuation.\n * Invocation of `resume(Unit)` on intercepted continuation guarantees that execution of\n * both the coroutine and [completion] happens in the invocation context established by\n * [ContinuationInterceptor].\n *\n * Repeated invocation of any resume function on the resulting continuation corrupts the\n * state machine of the coroutine and may result in arbitrary behaviour or exception.\n */\n@SinceKotlin(\"1.3\")\npublic actual fun (suspend R.() -> T).createCoroutineUnintercepted(\n receiver: R,\n completion: Continuation\n): Continuation =\n // Kotlin/JS suspend lambdas have an extra parameter `suspended`\n if (this.asDynamic().length == 3) {\n // When `suspended` is true the continuation is created, but not executed\n this.asDynamic()(receiver, completion, true)\n } else {\n createCoroutineFromSuspendFunction(completion) {\n this.asDynamic()(receiver, completion)\n }\n }\n\n/**\n * Intercepts this continuation with [ContinuationInterceptor].\n *\n * This function shall be used on the immediate result of [createCoroutineUnintercepted] or [suspendCoroutineUninterceptedOrReturn],\n * in which case it checks for [ContinuationInterceptor] in the continuation's [context][Continuation.context],\n * invokes [ContinuationInterceptor.interceptContinuation], caches and returns the result.\n *\n * If this function is invoked on other [Continuation] instances it returns `this` continuation unchanged.\n */\n@SinceKotlin(\"1.3\")\npublic actual fun Continuation.intercepted(): Continuation =\n (this as? CoroutineImpl)?.intercepted() ?: this\n\n\nprivate inline fun createCoroutineFromSuspendFunction(\n completion: Continuation,\n crossinline block: () -> Any?\n): Continuation {\n @Suppress(\"UNCHECKED_CAST\")\n return object : CoroutineImpl(completion as Continuation) {\n override fun doResume(): Any? {\n exception?.let { throw it }\n return block()\n }\n }\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license\n * that can be found in the license/LICENSE.txt file.\n */\n\n\n@file:Suppress(\"UNUSED_PARAMETER\")\n\npackage kotlin.js\n\n@kotlin.internal.InlineOnly\ninternal inline fun jsDeleteProperty(obj: Any, property: Any) {\n js(\"delete obj[property]\")\n}\n\n@kotlin.internal.InlineOnly\ninternal inline fun jsBitwiseOr(lhs: Any?, rhs: Any?): Int =\n js(\"lhs | rhs\").unsafeCast()","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.js.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Reverses elements in the list in-place.\n */\npublic actual fun MutableList.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.js.*\n\n/**\n * Returns a character at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this char sequence.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun CharSequence.elementAt(index: Int): Char {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, length: $length}\") }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.js.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic actual fun UIntArray.elementAt(index: Int): UInt {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic actual fun ULongArray.elementAt(index: Int): ULong {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic actual fun UByteArray.elementAt(index: Int): UByte {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic actual fun UShortArray.elementAt(index: Int): UShort {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic actual fun UIntArray.asList(): List {\n return object : AbstractList(), RandomAccess {\n override val size: Int get() = this@asList.size\n override fun isEmpty(): Boolean = this@asList.isEmpty()\n override fun contains(element: UInt): Boolean = this@asList.contains(element)\n override fun get(index: Int): UInt {\n AbstractList.checkElementIndex(index, size)\n return this@asList[index]\n }\n override fun indexOf(element: UInt): Int {\n if ((element as Any?) !is UInt) return -1\n return this@asList.indexOf(element)\n }\n override fun lastIndexOf(element: UInt): Int {\n if ((element as Any?) !is UInt) return -1\n return this@asList.lastIndexOf(element)\n }\n }\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic actual fun ULongArray.asList(): List {\n return object : AbstractList(), RandomAccess {\n override val size: Int get() = this@asList.size\n override fun isEmpty(): Boolean = this@asList.isEmpty()\n override fun contains(element: ULong): Boolean = this@asList.contains(element)\n override fun get(index: Int): ULong {\n AbstractList.checkElementIndex(index, size)\n return this@asList[index]\n }\n override fun indexOf(element: ULong): Int {\n if ((element as Any?) !is ULong) return -1\n return this@asList.indexOf(element)\n }\n override fun lastIndexOf(element: ULong): Int {\n if ((element as Any?) !is ULong) return -1\n return this@asList.lastIndexOf(element)\n }\n }\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic actual fun UByteArray.asList(): List {\n return object : AbstractList(), RandomAccess {\n override val size: Int get() = this@asList.size\n override fun isEmpty(): Boolean = this@asList.isEmpty()\n override fun contains(element: UByte): Boolean = this@asList.contains(element)\n override fun get(index: Int): UByte {\n AbstractList.checkElementIndex(index, size)\n return this@asList[index]\n }\n override fun indexOf(element: UByte): Int {\n if ((element as Any?) !is UByte) return -1\n return this@asList.indexOf(element)\n }\n override fun lastIndexOf(element: UByte): Int {\n if ((element as Any?) !is UByte) return -1\n return this@asList.lastIndexOf(element)\n }\n }\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic actual fun UShortArray.asList(): List {\n return object : AbstractList(), RandomAccess {\n override val size: Int get() = this@asList.size\n override fun isEmpty(): Boolean = this@asList.isEmpty()\n override fun contains(element: UShort): Boolean = this@asList.contains(element)\n override fun get(index: Int): UShort {\n AbstractList.checkElementIndex(index, size)\n return this@asList[index]\n }\n override fun indexOf(element: UShort): Int {\n if ((element as Any?) !is UShort) return -1\n return this@asList.indexOf(element)\n }\n override fun lastIndexOf(element: UShort): Int {\n if ((element as Any?) !is UShort) return -1\n return this@asList.lastIndexOf(element)\n }\n }\n}\n\n","@file: Suppress(\"DEPRECATION\")\npackage jquery.ui\n\n\n//jquery UI\nimport jquery.JQuery\nimport kotlin.js.Json\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.buttonset(): JQuery = asDynamic().buttonset()\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.dialog(): JQuery = asDynamic().dialog()\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.dialog(params: Json): JQuery = asDynamic().dialog(params)\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.dialog(mode: String, param: String): Any? = asDynamic().dialog(mode, param)\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.dialog(mode: String): JQuery = asDynamic().dialog(mode)\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.dialog(mode: String, param: String, value: Any?): JQuery = asDynamic().dialog(mode, param, value)\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.button(): JQuery = asDynamic().button()\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.accordion(): JQuery = asDynamic().accordion()\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.draggable(params: Json): JQuery = asDynamic().draggable(params)\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.selectable(): JQuery = asDynamic().selectable()\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\nimport kotlin.annotation.AnnotationTarget.*\n\n@Target(CLASS, FUNCTION, PROPERTY, CONSTRUCTOR, VALUE_PARAMETER, PROPERTY_GETTER, PROPERTY_SETTER)\n@Deprecated(\"Use `external` modifier instead\", level = DeprecationLevel.ERROR)\npublic annotation class native(public val name: String = \"\")\n\n@Target(FUNCTION)\n@Deprecated(\"Use inline extension function with body using dynamic\")\npublic annotation class nativeGetter\n\n@Target(FUNCTION)\n@Deprecated(\"Use inline extension function with body using dynamic\")\npublic annotation class nativeSetter\n\n@Target(FUNCTION)\n@Deprecated(\"Use inline extension function with body using dynamic\")\npublic annotation class nativeInvoke\n\n@Target(CLASS, FUNCTION, PROPERTY)\ninternal annotation class library(public val name: String = \"\")\n\n@Target(CLASS)\ninternal annotation class marker\n\n/**\n * Gives a declaration (a function, a property or a class) specific name in JavaScript.\n *\n * This may be useful in the following cases:\n *\n * * There are two functions for which the compiler gives same name in JavaScript, you can\n * mark one with `@JsName(...)` to prevent the compiler from reporting error.\n * * You are writing a JavaScript library in Kotlin. The compiler produces mangled names\n * for functions with parameters, which is unnatural for usual JavaScript developer.\n * You can put `@JsName(...)` on functions you want to be available from JavaScript.\n * * For some reason you want to rename declaration, e.g. there's common term in JavaScript\n * for a concept provided by the declaration, which in uncommon in Kotlin.\n *\n * Example:\n *\n * ``` kotlin\n * class Person(val name: String) {\n * fun hello() {\n * println(\"Hello $name!\")\n * }\n *\n * @JsName(\"helloWithGreeting\")\n * fun hello(greeting: String) {\n * println(\"$greeting $name!\")\n * }\n * }\n * ```\n *\n * @property name the name which compiler uses both for declaration itself and for all references to the declaration.\n * It's required to denote a valid JavaScript identifier.\n *\n */\n@Retention(AnnotationRetention.BINARY)\n@Target(CLASS, FUNCTION, PROPERTY, CONSTRUCTOR, PROPERTY_GETTER, PROPERTY_SETTER)\npublic actual annotation class JsName(actual val name: String)\n\n/**\n * Denotes an `external` declaration that must be imported from native JavaScript library.\n *\n * The compiler produces the code relevant for the target module system, for example, in case of CommonJS,\n * it will import the declaration via the `require(...)` function.\n *\n * The annotation can be used on top-level external declarations (classes, properties, functions) and files.\n * In case of file (which can't be `external`) the following rule applies: all the declarations in\n * the file must be `external`. By applying `@JsModule(...)` on a file you tell the compiler to import a JavaScript object\n * that contain all the declarations from the file.\n *\n * Example:\n *\n * ``` kotlin\n * @JsModule(\"jquery\")\n * external abstract class JQuery() {\n * // some declarations here\n * }\n *\n * @JsModule(\"jquery\")\n * external fun JQuery(element: Element): JQuery\n * ```\n *\n * @property import name of a module to import declaration from.\n * It is not interpreted by the Kotlin compiler, it's passed as is directly to the target module system.\n *\n * @see JsNonModule\n */\n@Retention(AnnotationRetention.BINARY)\n@Target(CLASS, PROPERTY, FUNCTION, FILE)\npublic annotation class JsModule(val import: String)\n\n/**\n * Denotes an `external` declaration that can be used without module system.\n *\n * By default, an `external` declaration is available regardless your target module system.\n * However, by applying [JsModule] annotation you can make a declaration unavailable to *plain* module system.\n * Some JavaScript libraries are distributed both as a standalone downloadable piece of JavaScript and as a module available\n * as an npm package.\n * To tell the Kotlin compiler to accept both cases, you can augment [JsModule] with the `@JsNonModule` annotation.\n *\n * For example:\n *\n * ``` kotlin\n * @JsModule(\"jquery\")\n * @JsNonModule\n * @JsName(\"$\")\n * external abstract class JQuery() {\n * // some declarations here\n * }\n *\n * @JsModule(\"jquery\")\n * @JsNonModule\n * @JsName(\"$\")\n * external fun JQuery(element: Element): JQuery\n * ```\n *\n * @see JsModule\n */\n@Retention(AnnotationRetention.BINARY)\n@Target(CLASS, PROPERTY, FUNCTION, FILE)\npublic annotation class JsNonModule\n\n/**\n * Adds prefix to `external` declarations in a source file.\n *\n * JavaScript does not have concept of packages (namespaces). They are usually emulated by nested objects.\n * The compiler turns references to `external` declarations either to plain unprefixed names (in case of *plain* modules)\n * or to plain imports.\n * However, if a JavaScript library provides its declarations in packages, you won't be satisfied with this.\n * You can tell the compiler to generate additional prefix before references to `external` declarations using the `@JsQualifier(...)`\n * annotation.\n *\n * Note that a file marked with the `@JsQualifier(...)` annotation can't contain non-`external` declarations.\n *\n * Example:\n *\n * ```\n * @file:JsQualifier(\"my.jsPackageName\")\n * package some.kotlinPackage\n *\n * external fun foo(x: Int)\n *\n * external fun bar(): String\n * ```\n *\n * @property value the qualifier to add to the declarations in the generated code.\n * It must be a sequence of valid JavaScript identifiers separated by the `.` character.\n * Examples of valid qualifiers are: `foo`, `bar.Baz`, `_.$0.f`.\n *\n * @see JsModule\n */\n@Retention(AnnotationRetention.BINARY)\n@Target(AnnotationTarget.FILE)\npublic annotation class JsQualifier(val value: String)","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.jvm\n\n// these are used in common generated code in stdlib\n\n// TODO: find how to deprecate these ones\n\n@Target(AnnotationTarget.FIELD)\n@Retention(AnnotationRetention.SOURCE)\npublic actual annotation class Volatile\n\n@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)\n@Retention(AnnotationRetention.SOURCE)\npublic actual annotation class Synchronized\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the [MutableCollection] interface.\n *\n * @param E the type of elements contained in the collection. The collection is invariant on its element type.\n */\npublic actual abstract class AbstractMutableCollection protected actual constructor() : AbstractCollection(), MutableCollection {\n\n actual abstract override fun add(element: E): Boolean\n\n actual override fun remove(element: E): Boolean {\n val iterator = iterator()\n while (iterator.hasNext()) {\n if (iterator.next() == element) {\n iterator.remove()\n return true\n }\n }\n return false\n }\n\n actual override fun addAll(elements: Collection): Boolean {\n var modified = false\n for (element in elements) {\n if (add(element)) modified = true\n }\n return modified\n }\n\n actual override fun removeAll(elements: Collection): Boolean = (this as MutableIterable).removeAll { it in elements }\n actual override fun retainAll(elements: Collection): Boolean = (this as MutableIterable).removeAll { it !in elements }\n\n actual override fun clear(): Unit {\n val iterator = this.iterator()\n while (iterator.hasNext()) {\n iterator.next()\n iterator.remove()\n }\n }\n\n open fun toJSON(): Any = this.toArray()\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT AbstractList\n * Copyright 2007 Google Inc.\n*/\n\n\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the [MutableList] interface.\n *\n * @param E the type of elements contained in the list. The list is invariant on its element type.\n */\npublic actual abstract class AbstractMutableList protected actual constructor() : AbstractMutableCollection(), MutableList {\n protected var modCount: Int = 0\n\n abstract override fun add(index: Int, element: E): Unit\n abstract override fun removeAt(index: Int): E\n abstract override fun set(index: Int, element: E): E\n\n /**\n * Adds the specified element to the end of this list.\n *\n * @return `true` because the list is always modified as the result of this operation.\n */\n actual override fun add(element: E): Boolean {\n add(size, element)\n return true\n }\n\n actual override fun addAll(index: Int, elements: Collection): Boolean {\n var _index = index\n var changed = false\n for (e in elements) {\n add(_index++, e)\n changed = true\n }\n return changed\n }\n\n actual override fun clear() {\n removeRange(0, size)\n }\n\n actual override fun removeAll(elements: Collection): Boolean = removeAll { it in elements }\n actual override fun retainAll(elements: Collection): Boolean = removeAll { it !in elements }\n\n\n actual override fun iterator(): MutableIterator = IteratorImpl()\n\n actual override fun contains(element: E): Boolean = indexOf(element) >= 0\n\n actual override fun indexOf(element: E): Int {\n for (index in 0..lastIndex) {\n if (get(index) == element) {\n return index\n }\n }\n return -1\n }\n\n actual override fun lastIndexOf(element: E): Int {\n for (index in lastIndex downTo 0) {\n if (get(index) == element) {\n return index\n }\n }\n return -1\n }\n\n actual override fun listIterator(): MutableListIterator = listIterator(0)\n actual override fun listIterator(index: Int): MutableListIterator = ListIteratorImpl(index)\n\n\n actual override fun subList(fromIndex: Int, toIndex: Int): MutableList = SubList(this, fromIndex, toIndex)\n\n /**\n * Removes the range of elements from this list starting from [fromIndex] and ending with but not including [toIndex].\n */\n protected open fun removeRange(fromIndex: Int, toIndex: Int) {\n val iterator = listIterator(fromIndex)\n repeat(toIndex - fromIndex) {\n iterator.next()\n iterator.remove()\n }\n }\n\n /**\n * Compares this list with another list instance with the ordered structural equality.\n *\n * @return true, if [other] instance is a [List] of the same size, which contains the same elements in the same order.\n */\n override fun equals(other: Any?): Boolean {\n if (other === this) return true\n if (other !is List<*>) return false\n\n return AbstractList.orderedEquals(this, other)\n }\n\n /**\n * Returns the hash code value for this list.\n */\n override fun hashCode(): Int = AbstractList.orderedHashCode(this)\n\n\n private open inner class IteratorImpl : MutableIterator {\n /** the index of the item that will be returned on the next call to [next]`()` */\n protected var index = 0\n /** the index of the item that was returned on the previous call to [next]`()`\n * or [ListIterator.previous]`()` (for `ListIterator`),\n * -1 if no such item exists\n */\n protected var last = -1\n\n override fun hasNext(): Boolean = index < size\n\n override fun next(): E {\n if (!hasNext()) throw NoSuchElementException()\n last = index++\n return get(last)\n }\n\n override fun remove() {\n check(last != -1) { \"Call next() or previous() before removing element from the iterator.\" }\n\n removeAt(last)\n index = last\n last = -1\n }\n }\n\n /**\n * Implementation of `MutableListIterator` for abstract lists.\n */\n private inner class ListIteratorImpl(index: Int) : IteratorImpl(), MutableListIterator {\n\n init {\n AbstractList.checkPositionIndex(index, this@AbstractMutableList.size)\n this.index = index\n }\n\n override fun hasPrevious(): Boolean = index > 0\n\n override fun nextIndex(): Int = index\n\n override fun previous(): E {\n if (!hasPrevious()) throw NoSuchElementException()\n\n last = --index\n return get(last)\n }\n\n override fun previousIndex(): Int = index - 1\n\n override fun add(element: E) {\n add(index, element)\n index++\n last = -1\n }\n\n override fun set(element: E) {\n check(last != -1) { \"Call next() or previous() before updating element value with the iterator.\" }\n this@AbstractMutableList[last] = element\n }\n }\n\n private class SubList(private val list: AbstractMutableList, private val fromIndex: Int, toIndex: Int) : AbstractMutableList(), RandomAccess {\n private var _size: Int = 0\n\n init {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, list.size)\n this._size = toIndex - fromIndex\n }\n\n override fun add(index: Int, element: E) {\n AbstractList.checkPositionIndex(index, _size)\n\n list.add(fromIndex + index, element)\n _size++\n }\n\n override fun get(index: Int): E {\n AbstractList.checkElementIndex(index, _size)\n\n return list[fromIndex + index]\n }\n\n override fun removeAt(index: Int): E {\n AbstractList.checkElementIndex(index, _size)\n\n val result = list.removeAt(fromIndex + index)\n _size--\n return result\n }\n\n override fun set(index: Int, element: E): E {\n AbstractList.checkElementIndex(index, _size)\n\n return list.set(fromIndex + index, element)\n }\n\n override val size: Int get() = _size\n }\n\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT AbstractMap\n * Copyright 2007 Google Inc.\n */\n\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the [MutableMap] interface.\n *\n * The implementor is required to implement [entries] property, which should return mutable set of map entries, and [put] function.\n *\n * @param K the type of map keys. The map is invariant on its key type.\n * @param V the type of map values. The map is invariant on its value type.\n */\npublic actual abstract class AbstractMutableMap protected actual constructor() : AbstractMap(), MutableMap {\n\n /**\n * A mutable [Map.Entry] shared by several [Map] implementations.\n */\n internal open class SimpleEntry(override val key: K, value: V) : MutableMap.MutableEntry {\n constructor(entry: Map.Entry) : this(entry.key, entry.value)\n\n private var _value = value\n\n override val value: V get() = _value\n\n override fun setValue(newValue: V): V {\n val oldValue = this._value\n this._value = newValue\n return oldValue\n }\n\n override fun hashCode(): Int = entryHashCode(this)\n override fun toString(): String = entryToString(this)\n override fun equals(other: Any?): Boolean = entryEquals(this, other)\n\n }\n\n actual override fun clear() {\n entries.clear()\n }\n\n private var _keys: MutableSet? = null\n actual override val keys: MutableSet\n get() {\n if (_keys == null) {\n _keys = object : AbstractMutableSet() {\n override fun add(element: K): Boolean = throw UnsupportedOperationException(\"Add is not supported on keys\")\n override fun clear() {\n this@AbstractMutableMap.clear()\n }\n\n override operator fun contains(element: K): Boolean = containsKey(element)\n\n override operator fun iterator(): MutableIterator {\n val entryIterator = entries.iterator()\n return object : MutableIterator {\n override fun hasNext(): Boolean = entryIterator.hasNext()\n override fun next(): K = entryIterator.next().key\n override fun remove() = entryIterator.remove()\n }\n }\n\n override fun remove(element: K): Boolean {\n if (containsKey(element)) {\n this@AbstractMutableMap.remove(element)\n return true\n }\n return false\n }\n\n override val size: Int get() = this@AbstractMutableMap.size\n }\n }\n return _keys!!\n }\n\n actual abstract override fun put(key: K, value: V): V?\n\n actual override fun putAll(from: Map) {\n for ((key, value) in from) {\n put(key, value)\n }\n }\n\n private var _values: MutableCollection? = null\n actual override val values: MutableCollection\n get() {\n if (_values == null) {\n _values = object : AbstractMutableCollection() {\n override fun add(element: V): Boolean = throw UnsupportedOperationException(\"Add is not supported on values\")\n override fun clear() = this@AbstractMutableMap.clear()\n\n override operator fun contains(element: V): Boolean = containsValue(element)\n\n override operator fun iterator(): MutableIterator {\n val entryIterator = entries.iterator()\n return object : MutableIterator {\n override fun hasNext(): Boolean = entryIterator.hasNext()\n override fun next(): V = entryIterator.next().value\n override fun remove() = entryIterator.remove()\n }\n }\n\n override val size: Int get() = this@AbstractMutableMap.size\n\n // TODO: should we implement them this way? Currently it's unspecified in JVM\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Collection<*>) return false\n return AbstractList.orderedEquals(this, other)\n }\n\n override fun hashCode(): Int = AbstractList.orderedHashCode(this)\n }\n }\n return _values!!\n }\n\n actual override fun remove(key: K): V? {\n val iter = entries.iterator()\n while (iter.hasNext()) {\n val entry = iter.next()\n val k = entry.key\n if (key == k) {\n val value = entry.value\n iter.remove()\n return value\n }\n }\n return null\n }\n\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the [MutableSet] interface.\n *\n * @param E the type of elements contained in the set. The set is invariant on its element type.\n */\npublic actual abstract class AbstractMutableSet protected actual constructor() : AbstractMutableCollection(), MutableSet {\n\n /**\n * Compares this set with another set instance with the unordered structural equality.\n *\n * @return `true`, if [other] instance is a [Set] of the same size, all elements of which are contained in this set.\n */\n override fun equals(other: Any?): Boolean {\n if (other === this) return true\n if (other !is Set<*>) return false\n return AbstractSet.setEquals(this, other)\n }\n\n /**\n * Returns the hash code value for this set.\n */\n override fun hashCode(): Int = AbstractSet.unorderedHashCode(this)\n\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n/**\n * Provides a [MutableList] implementation, which uses a resizable array as its backing storage.\n *\n * This implementation doesn't provide a way to manage capacity, as backing JS array is resizeable itself.\n * There is no speed advantage to pre-allocating array sizes in JavaScript, so this implementation does not include any of the\n * capacity and \"growth increment\" concepts.\n */\npublic actual open class ArrayList internal constructor(private var array: Array) : AbstractMutableList(), MutableList, RandomAccess {\n\n /**\n * Creates an empty [ArrayList].\n */\n public actual constructor() : this(emptyArray()) {}\n\n /**\n * Creates an empty [ArrayList].\n * @param initialCapacity initial capacity (ignored)\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n public actual constructor(initialCapacity: Int = 0) : this(emptyArray()) {}\n\n /**\n * Creates an [ArrayList] filled from the [elements] collection.\n */\n public actual constructor(elements: Collection) : this(elements.toTypedArray()) {}\n\n /** Does nothing in this ArrayList implementation. */\n public actual fun trimToSize() {}\n\n /** Does nothing in this ArrayList implementation. */\n public actual fun ensureCapacity(minCapacity: Int) {}\n\n actual override val size: Int get() = array.size\n @Suppress(\"UNCHECKED_CAST\")\n actual override fun get(index: Int): E = array[rangeCheck(index)] as E\n actual override fun set(index: Int, element: E): E {\n rangeCheck(index)\n @Suppress(\"UNCHECKED_CAST\")\n return array[index].apply { array[index] = element } as E\n }\n\n actual override fun add(element: E): Boolean {\n array.asDynamic().push(element)\n modCount++\n return true\n }\n\n actual override fun add(index: Int, element: E): Unit {\n array.asDynamic().splice(insertionRangeCheck(index), 0, element)\n modCount++\n }\n\n actual override fun addAll(elements: Collection): Boolean {\n if (elements.isEmpty()) return false\n\n array += elements.toTypedArray()\n modCount++\n return true\n }\n\n actual override fun addAll(index: Int, elements: Collection): Boolean {\n insertionRangeCheck(index)\n\n if (index == size) return addAll(elements)\n if (elements.isEmpty()) return false\n when (index) {\n size -> return addAll(elements)\n 0 -> array = elements.toTypedArray() + array\n else -> array = array.copyOfRange(0, index).asDynamic().concat(elements.toTypedArray(), array.copyOfRange(index, size))\n }\n\n modCount++\n return true\n }\n\n actual override fun removeAt(index: Int): E {\n rangeCheck(index)\n modCount++\n return if (index == lastIndex)\n array.asDynamic().pop()\n else\n array.asDynamic().splice(index, 1)[0]\n }\n\n actual override fun remove(element: E): Boolean {\n for (index in array.indices) {\n if (array[index] == element) {\n array.asDynamic().splice(index, 1)\n modCount++\n return true\n }\n }\n return false\n }\n\n override fun removeRange(fromIndex: Int, toIndex: Int) {\n modCount++\n array.asDynamic().splice(fromIndex, toIndex - fromIndex)\n }\n\n actual override fun clear() {\n array = emptyArray()\n modCount++\n }\n\n\n actual override fun indexOf(element: E): Int = array.indexOf(element)\n\n actual override fun lastIndexOf(element: E): Int = array.lastIndexOf(element)\n\n override fun toString() = arrayToString(array)\n override fun toArray(): Array = js(\"[]\").slice.call(array)\n\n\n private fun rangeCheck(index: Int) = index.apply {\n AbstractList.checkElementIndex(index, size)\n }\n\n private fun insertionRangeCheck(index: Int) = index.apply {\n AbstractList.checkPositionIndex(index, size)\n }\n}","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\ninternal fun sortArrayWith(array: Array, comparison: (T, T) -> Int) {\n if (getStableSortingIsSupported()) {\n array.asDynamic().sort(comparison)\n } else {\n mergeSort(array.unsafeCast>(), 0, array.lastIndex, Comparator(comparison))\n }\n}\n\ninternal fun sortArrayWith(array: Array, comparator: Comparator) {\n if (getStableSortingIsSupported()) {\n val comparison = { a: T, b: T -> comparator.compare(a, b) }\n array.asDynamic().sort(comparison)\n } else {\n mergeSort(array.unsafeCast>(), 0, array.lastIndex, comparator)\n }\n}\n\ninternal fun > sortArray(array: Array) {\n if (getStableSortingIsSupported()) {\n val comparison = { a: T, b: T -> a.compareTo(b) }\n array.asDynamic().sort(comparison)\n } else {\n mergeSort(array.unsafeCast>(), 0, array.lastIndex, naturalOrder())\n }\n}\n\nprivate var _stableSortingIsSupported: Boolean? = null\nprivate fun getStableSortingIsSupported(): Boolean {\n _stableSortingIsSupported?.let { return it }\n _stableSortingIsSupported = false\n\n val array = js(\"[]\").unsafeCast>()\n // known implementations may use stable sort for arrays of up to 512 elements\n // so we create slightly more elements to test stability\n for (index in 0 until 600) array.asDynamic().push(index)\n val comparison = { a: Int, b: Int -> (a and 3) - (b and 3) }\n array.asDynamic().sort(comparison)\n for (index in 1 until array.size) {\n val a = array[index - 1]\n val b = array[index]\n if ((a and 3) == (b and 3) && a >= b) return false\n }\n _stableSortingIsSupported = true\n return true\n}\n\n\nprivate fun mergeSort(array: Array, start: Int, endInclusive: Int, comparator: Comparator) {\n val buffer = arrayOfNulls(array.size).unsafeCast>()\n val result = mergeSort(array, buffer, start, endInclusive, comparator)\n if (result !== array) {\n result.forEachIndexed { i, v -> array[i] = v }\n }\n}\n\n// Both start and end are inclusive indices.\nprivate fun mergeSort(array: Array, buffer: Array, start: Int, end: Int, comparator: Comparator): Array {\n if (start == end) {\n return array\n }\n\n val median = (start + end) / 2\n val left = mergeSort(array, buffer, start, median, comparator)\n val right = mergeSort(array, buffer, median + 1, end, comparator)\n\n val target = if (left === buffer) array else buffer\n\n // Merge.\n var leftIndex = start\n var rightIndex = median + 1\n for (i in start..end) {\n when {\n leftIndex <= median && rightIndex <= end -> {\n val leftValue = left[leftIndex]\n val rightValue = right[rightIndex]\n\n if (comparator.compare(leftValue, rightValue) <= 0) {\n target[i] = leftValue\n leftIndex++\n } else {\n target[i] = rightValue\n rightIndex++\n }\n }\n leftIndex <= median -> {\n target[i] = left[leftIndex]\n leftIndex++\n }\n else /* rightIndex <= end */ -> {\n target[i] = right[rightIndex]\n rightIndex++\n }\n }\n }\n\n return target\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n\n@UseExperimental(ExperimentalUnsignedTypes::class)\n@SinceKotlin(\"1.3\")\n@kotlin.js.JsName(\"contentDeepHashCodeImpl\")\ninternal fun Array.contentDeepHashCodeImpl(): Int {\n var result = 1\n for (element in this) {\n val elementHash = when {\n element == null -> 0\n js(\"Kotlin\").isArrayish(element) -> (element.unsafeCast>()).contentDeepHashCodeImpl()\n\n element is UByteArray -> element.contentHashCode()\n element is UShortArray -> element.contentHashCode()\n element is UIntArray -> element.contentHashCode()\n element is ULongArray -> element.contentHashCode()\n\n else -> element.hashCode()\n }\n\n result = 31 * result + elementHash\n }\n return result\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\ninternal interface EqualityComparator {\n /**\n * Subclasses must override to return a value indicating\n * whether or not two keys or values are equal.\n */\n abstract fun equals(value1: Any?, value2: Any?): Boolean\n\n /**\n * Subclasses must override to return the hash code of a given key.\n */\n abstract fun getHashCode(value: Any?): Int\n\n\n object HashCode : EqualityComparator {\n override fun equals(value1: Any?, value2: Any?): Boolean = value1 == value2\n\n override fun getHashCode(value: Any?): Int = value?.hashCode() ?: 0\n }\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT AbstractHashMap\n * Copyright 2008 Google Inc.\n */\n\npackage kotlin.collections\n\nimport kotlin.collections.MutableMap.MutableEntry\n\n/**\n * Hash table based implementation of the [MutableMap] interface.\n *\n * This implementation makes no guarantees regarding the order of enumeration of [keys], [values] and [entries] collections.\n */\npublic actual open class HashMap : AbstractMutableMap, MutableMap {\n\n private inner class EntrySet : AbstractMutableSet>() {\n\n override fun add(element: MutableEntry): Boolean = throw UnsupportedOperationException(\"Add is not supported on entries\")\n override fun clear() {\n this@HashMap.clear()\n }\n\n override operator fun contains(element: MutableEntry): Boolean = containsEntry(element)\n\n override operator fun iterator(): MutableIterator> = internalMap.iterator()\n\n override fun remove(element: MutableEntry): Boolean {\n if (contains(element)) {\n this@HashMap.remove(element.key)\n return true\n }\n return false\n }\n\n override val size: Int get() = this@HashMap.size\n }\n\n\n /**\n * Internal implementation of the map: either string-based or hashcode-based.\n */\n private val internalMap: InternalMap\n\n private val equality: EqualityComparator\n\n internal constructor(internalMap: InternalMap) : super() {\n this.internalMap = internalMap\n this.equality = internalMap.equality\n }\n\n /**\n * Constructs an empty [HashMap] instance.\n */\n actual constructor() : this(InternalHashCodeMap(EqualityComparator.HashCode))\n\n /**\n * Constructs an empty [HashMap] instance.\n *\n * @param initialCapacity the initial capacity (ignored)\n * @param loadFactor the load factor (ignored)\n *\n * @throws IllegalArgumentException if the initial capacity or load factor are negative\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n actual constructor(initialCapacity: Int, loadFactor: Float = 0.0f) : this() {\n // This implementation of HashMap has no need of load factors or capacities.\n require(initialCapacity >= 0) { \"Negative initial capacity: $initialCapacity\" }\n require(loadFactor >= 0) { \"Non-positive load factor: $loadFactor\" }\n }\n\n actual constructor(initialCapacity: Int) : this(initialCapacity, 0.0f)\n\n\n /**\n * Constructs an instance of [HashMap] filled with the contents of the specified [original] map.\n */\n actual constructor(original: Map) : this() {\n this.putAll(original)\n }\n\n actual override fun clear() {\n internalMap.clear()\n// structureChanged(this)\n }\n\n actual override fun containsKey(key: K): Boolean = internalMap.contains(key)\n\n actual override fun containsValue(value: V): Boolean = internalMap.any { equality.equals(it.value, value) }\n\n private var _entries: MutableSet>? = null\n actual override val entries: MutableSet>\n get() {\n if (_entries == null) {\n _entries = createEntrySet()\n }\n return _entries!!\n }\n\n protected open fun createEntrySet(): MutableSet> = EntrySet()\n\n actual override operator fun get(key: K): V? = internalMap.get(key)\n\n actual override fun put(key: K, value: V): V? = internalMap.put(key, value)\n\n actual override fun remove(key: K): V? = internalMap.remove(key)\n\n actual override val size: Int get() = internalMap.size\n\n}\n\n/**\n * Constructs the specialized implementation of [HashMap] with [String] keys, which stores the keys as properties of\n * JS object without hashing them.\n */\npublic fun stringMapOf(vararg pairs: Pair): HashMap {\n return HashMap(InternalStringMap(EqualityComparator.HashCode)).apply { putAll(pairs) }\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT HashSet\n * Copyright 2008 Google Inc.\n */\n\npackage kotlin.collections\n\n/**\n * The implementation of the [MutableSet] interface, backed by a [HashMap] instance.\n */\npublic actual open class HashSet : AbstractMutableSet, MutableSet {\n\n private val map: HashMap\n\n /**\n * Constructs a new empty [HashSet].\n */\n actual constructor() {\n map = HashMap()\n }\n\n /**\n * Constructs a new [HashSet] filled with the elements of the specified collection.\n */\n actual constructor(elements: Collection) {\n map = HashMap(elements.size)\n addAll(elements)\n }\n\n /**\n * Constructs a new empty [HashSet].\n *\n * @param initialCapacity the initial capacity (ignored)\n * @param loadFactor the load factor (ignored)\n *\n * @throws IllegalArgumentException if the initial capacity or load factor are negative\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n actual constructor(initialCapacity: Int, loadFactor: Float = 0.0f) {\n map = HashMap(initialCapacity, loadFactor)\n }\n\n actual constructor(initialCapacity: Int) : this(initialCapacity, 0.0f)\n\n /**\n * Protected constructor to specify the underlying map. This is used by\n * LinkedHashSet.\n\n * @param map underlying map to use.\n */\n internal constructor(map: HashMap) {\n this.map = map\n }\n\n actual override fun add(element: E): Boolean {\n val old = map.put(element, this)\n return old == null\n }\n\n actual override fun clear() {\n map.clear()\n }\n\n// public override fun clone(): Any {\n// return HashSet(this)\n// }\n\n actual override operator fun contains(element: E): Boolean = map.containsKey(element)\n\n actual override fun isEmpty(): Boolean = map.isEmpty()\n\n actual override fun iterator(): MutableIterator = map.keys.iterator()\n\n actual override fun remove(element: E): Boolean = map.remove(element) != null\n\n actual override val size: Int get() = map.size\n\n}\n\n/**\n * Creates a new instance of the specialized implementation of [HashSet] with the specified [String] elements,\n * which elements the keys as properties of JS object without hashing them.\n */\npublic fun stringSetOf(vararg elements: String): HashSet {\n return HashSet(stringMapOf()).apply { addAll(elements) }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT InternalHashCodeMap\n * Copyright 2008 Google Inc.\n */\n\npackage kotlin.collections\n\nimport kotlin.collections.MutableMap.MutableEntry\nimport kotlin.collections.AbstractMutableMap.SimpleEntry\n\n/**\n * A simple wrapper around JavaScriptObject to provide [java.util.Map]-like semantics for any\n * key type.\n *\n *\n * Implementation notes:\n *\n *\n * A key's hashCode is the index in backingMap which should contain that key. Since several keys may\n * have the same hash, each value in hashCodeMap is actually an array containing all entries whose\n * keys share the same hash.\n */\ninternal class InternalHashCodeMap(override val equality: EqualityComparator) : InternalMap {\n\n private var backingMap: dynamic = createJsMap()\n override var size: Int = 0\n private set\n\n override fun put(key: K, value: V): V? {\n val hashCode = equality.getHashCode(key)\n val chainOrEntry = getChainOrEntryOrNull(hashCode)\n if (chainOrEntry == null) {\n // This is a new chain, put it to the map.\n backingMap[hashCode] = SimpleEntry(key, value)\n } else {\n if (chainOrEntry !is Array<*>) {\n // It is an entry\n val entry: SimpleEntry = chainOrEntry\n if (equality.equals(entry.key, key)) {\n return entry.setValue(value)\n } else {\n backingMap[hashCode] = arrayOf(entry, SimpleEntry(key, value))\n size++\n return null\n }\n } else {\n // Chain already exists, perhaps key also exists.\n val chain: Array> = chainOrEntry\n val entry = chain.findEntryInChain(key)\n if (entry != null) {\n return entry.setValue(value)\n }\n chain.asDynamic().push(SimpleEntry(key, value))\n }\n }\n size++\n// structureChanged(host)\n return null\n }\n\n override fun remove(key: K): V? {\n val hashCode = equality.getHashCode(key)\n val chainOrEntry = getChainOrEntryOrNull(hashCode) ?: return null\n if (chainOrEntry !is Array<*>) {\n val entry: MutableEntry = chainOrEntry\n if (equality.equals(entry.key, key)) {\n jsDeleteProperty(backingMap, hashCode)\n size--\n return entry.value\n } else {\n return null\n }\n } else {\n val chain: Array> = chainOrEntry\n for (index in chain.indices) {\n val entry = chain[index]\n if (equality.equals(key, entry.key)) {\n if (chain.size == 1) {\n chain.asDynamic().length = 0\n // remove the whole array\n jsDeleteProperty(backingMap, hashCode)\n } else {\n // splice out the entry we're removing\n chain.asDynamic().splice(index, 1)\n }\n size--\n// structureChanged(host)\n return entry.value\n }\n }\n }\n return null\n }\n\n override fun clear() {\n backingMap = createJsMap()\n size = 0\n }\n\n override fun contains(key: K): Boolean = getEntry(key) != null\n\n override fun get(key: K): V? = getEntry(key)?.value\n\n private fun getEntry(key: K): MutableEntry? {\n val chainOrEntry = getChainOrEntryOrNull(equality.getHashCode(key)) ?: return null\n if (chainOrEntry !is Array<*>) {\n val entry: MutableEntry = chainOrEntry\n if (equality.equals(entry.key, key)) {\n return entry\n } else {\n return null\n }\n } else {\n val chain: Array> = chainOrEntry\n return chain.findEntryInChain(key)\n }\n }\n\n private fun Array>.findEntryInChain(key: K): MutableEntry? =\n firstOrNull { entry -> equality.equals(entry.key, key) }\n\n override fun iterator(): MutableIterator> {\n\n return object : MutableIterator> {\n var state = -1 // -1 not ready, 0 - ready, 1 - done\n\n val keys: Array = js(\"Object\").keys(backingMap)\n var keyIndex = -1\n\n var chainOrEntry: dynamic = null\n var isChain = false\n var itemIndex = -1\n var lastEntry: MutableEntry? = null\n\n private fun computeNext(): Int {\n if (chainOrEntry != null && isChain) {\n val chainSize: Int = chainOrEntry.unsafeCast>>().size\n if (++itemIndex < chainSize)\n return 0\n }\n\n if (++keyIndex < keys.size) {\n chainOrEntry = backingMap[keys[keyIndex]]\n isChain = chainOrEntry is Array<*>\n itemIndex = 0\n return 0\n } else {\n chainOrEntry = null\n return 1\n }\n }\n\n override fun hasNext(): Boolean {\n if (state == -1)\n state = computeNext()\n return state == 0\n }\n\n override fun next(): MutableEntry {\n if (!hasNext()) throw NoSuchElementException()\n val lastEntry = if (isChain) {\n chainOrEntry.unsafeCast>>()[itemIndex]\n } else {\n chainOrEntry.unsafeCast>()\n }\n this.lastEntry = lastEntry\n state = -1\n return lastEntry\n }\n\n override fun remove() {\n checkNotNull(lastEntry)\n this@InternalHashCodeMap.remove(lastEntry!!.key)\n lastEntry = null\n // the chain being iterated just got modified by InternalHashCodeMap.remove\n itemIndex--\n }\n }\n }\n\n private fun getChainOrEntryOrNull(hashCode: Int): dynamic {\n val chainOrEntry = backingMap[hashCode]\n return if (chainOrEntry === undefined) null else chainOrEntry\n }\n\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n/**\n * The common interface of [InternalStringMap] and [InternalHashCodeMap].\n */\ninternal interface InternalMap : MutableIterable> {\n val equality: EqualityComparator\n val size: Int\n operator fun contains(key: K): Boolean\n operator fun get(key: K): V?\n\n fun put(key: K, value: V): V?\n fun remove(key: K): V?\n fun clear(): Unit\n\n fun createJsMap(): dynamic {\n val result = js(\"Object.create(null)\")\n // force to switch object representation to dictionary mode\n result[\"foo\"] = 1\n jsDeleteProperty(result, \"foo\")\n return result\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT InternalStringMap\n * Copyright 2008 Google Inc.\n */\npackage kotlin.collections\n\nimport kotlin.collections.MutableMap.MutableEntry\n\n/**\n * A simple wrapper around JavaScript Map for key type is string.\n *\n * Though this map is instantiated only with K=String, the K type is not fixed to String statically,\n * because we want to have it erased to Any? in order not to generate type-safe override bridges for\n * [get], [contains], [remove] etc, if they ever are generated.\n */\ninternal class InternalStringMap(override val equality: EqualityComparator) : InternalMap {\n\n private var backingMap: dynamic = createJsMap()\n override var size: Int = 0\n private set\n\n// /**\n// * A mod count to track 'value' replacements in map to ensure that the 'value' that we have in the\n// * iterator entry is guaranteed to be still correct.\n// * This is to optimize for the common scenario where the values are not modified during\n// * iterations where the entries are never stale.\n// */\n// private var valueMod: Int = 0\n\n override operator fun contains(key: K): Boolean {\n if (key !is String) return false\n return backingMap[key] !== undefined\n }\n\n override operator fun get(key: K): V? {\n if (key !is String) return null\n val value = backingMap[key]\n return if (value !== undefined) value.unsafeCast() else null\n }\n\n\n override fun put(key: K, value: V): V? {\n require(key is String)\n val oldValue = backingMap[key]\n backingMap[key] = value\n\n if (oldValue === undefined) {\n size++\n// structureChanged(host)\n return null\n } else {\n// valueMod++\n return oldValue.unsafeCast()\n }\n }\n\n override fun remove(key: K): V? {\n if (key !is String) return null\n val value = backingMap[key]\n if (value !== undefined) {\n jsDeleteProperty(backingMap, key)\n size--\n// structureChanged(host)\n return value.unsafeCast()\n } else {\n// valueMod++\n return null\n }\n }\n\n\n override fun clear() {\n backingMap = createJsMap()\n size = 0\n }\n\n\n override fun iterator(): MutableIterator> {\n return object : MutableIterator> {\n private val keys: Array = js(\"Object\").keys(backingMap)\n private val iterator = keys.iterator()\n private var lastKey: String? = null\n\n override fun hasNext(): Boolean = iterator.hasNext()\n\n override fun next(): MutableEntry {\n val key = iterator.next()\n lastKey = key\n @Suppress(\"UNCHECKED_CAST\")\n return newMapEntry(key as K)\n }\n\n override fun remove() {\n @Suppress(\"UNCHECKED_CAST\")\n this@InternalStringMap.remove(checkNotNull(lastKey) as K)\n }\n }\n }\n\n private fun newMapEntry(key: K): MutableEntry = object : MutableEntry {\n override val key: K get() = key\n override val value: V get() = this@InternalStringMap[key].unsafeCast()\n\n override fun setValue(newValue: V): V = this@InternalStringMap.put(key, newValue).unsafeCast()\n\n override fun hashCode(): Int = AbstractMap.entryHashCode(this)\n override fun toString(): String = AbstractMap.entryToString(this)\n override fun equals(other: Any?): Boolean = AbstractMap.entryEquals(this, other)\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT LinkedHashMap\n * Copyright 2008 Google Inc.\n */\npackage kotlin.collections\n\nimport kotlin.collections.MutableMap.MutableEntry\n\n/**\n * Hash table based implementation of the [MutableMap] interface, which additionally preserves the insertion order\n * of entries during the iteration.\n *\n * The insertion order is preserved by maintaining a doubly-linked list of all of its entries.\n */\npublic actual open class LinkedHashMap : HashMap, MutableMap {\n\n /**\n * The entry we use includes next/prev pointers for a doubly-linked circular\n * list with a head node. This reduces the special cases we have to deal with\n * in the list operations.\n\n * Note that we duplicate the key from the underlying hash map so we can find\n * the eldest entry. The alternative would have been to modify HashMap so more\n * of the code was directly usable here, but this would have added some\n * overhead to HashMap, or to reimplement most of the HashMap code here with\n * small modifications. Paying a small storage cost only if you use\n * LinkedHashMap and minimizing code size seemed like a better tradeoff\n */\n private class ChainEntry(key: K, value: V) : AbstractMutableMap.SimpleEntry(key, value) {\n internal var next: ChainEntry? = null\n internal var prev: ChainEntry? = null\n }\n\n private inner class EntrySet : AbstractMutableSet>() {\n\n private inner class EntryIterator : MutableIterator> {\n // The last entry that was returned from this iterator.\n private var last: ChainEntry? = null\n\n // The next entry to return from this iterator.\n private var next: ChainEntry? = null\n\n init {\n next = head\n// recordLastKnownStructure(map, this)\n }\n\n override fun hasNext(): Boolean {\n return next !== null\n }\n\n override fun next(): MutableEntry {\n// checkStructuralChange(map, this)\n if (!hasNext()) throw NoSuchElementException()\n\n val current = next!!\n last = current\n next = current.next.takeIf { it !== head }\n return current\n }\n\n override fun remove() {\n check(last != null)\n// checkStructuralChange(map, this)\n\n last!!.remove()\n map.remove(last!!.key)\n// recordLastKnownStructure(map, this)\n last = null\n }\n }\n\n override fun add(element: MutableEntry): Boolean = throw UnsupportedOperationException(\"Add is not supported on entries\")\n override fun clear() {\n this@LinkedHashMap.clear()\n }\n\n override operator fun contains(element: MutableEntry): Boolean = containsEntry(element)\n\n override operator fun iterator(): MutableIterator> = EntryIterator()\n\n override fun remove(element: MutableEntry): Boolean {\n if (contains(element)) {\n this@LinkedHashMap.remove(element.key)\n return true\n }\n return false\n }\n\n override val size: Int get() = this@LinkedHashMap.size\n }\n\n\n /*\n * The head of the insert order chain, which is a doubly-linked circular\n * list.\n *\n * The most recently inserted node is at the end of the chain, ie.\n * chain.prev.\n */\n private var head: ChainEntry? = null\n\n /**\n * Add this node to the end of the chain.\n */\n private fun ChainEntry.addToEnd() {\n // This entry is not in the list.\n check(next == null && prev == null)\n\n val _head = head\n if (_head == null) {\n head = this\n next = this\n prev = this\n } else {\n // Chain is valid.\n val _tail = checkNotNull(_head.prev)\n // Update me.\n prev = _tail\n next = _head\n // Update my new siblings: current head and old tail\n _head.prev = this\n _tail.next = this\n }\n }\n\n /**\n * Remove this node from the chain it is a part of.\n */\n private fun ChainEntry.remove() {\n if (this.next === this) {\n // if this is single element, remove head\n head = null\n } else {\n if (head === this) {\n // if this is first element, move head to next\n head = next\n }\n next!!.prev = prev\n prev!!.next = next\n }\n next = null\n prev = null\n }\n\n /*\n * The hashmap that keeps track of our entries and the chain. Note that we\n * duplicate the key here to eliminate changes to HashMap and minimize the\n * code here, at the expense of additional space.\n */\n private val map: HashMap>\n\n /**\n * Constructs an empty [LinkedHashMap] instance.\n */\n actual constructor() : super() {\n map = HashMap>()\n }\n\n internal constructor(backingMap: HashMap) : super() {\n @Suppress(\"UNCHECKED_CAST\") // expected to work due to erasure\n map = backingMap as HashMap>\n }\n\n /**\n * Constructs an empty [LinkedHashMap] instance.\n *\n * @param initialCapacity the initial capacity (ignored)\n * @param loadFactor the load factor (ignored)\n *\n * @throws IllegalArgumentException if the initial capacity or load factor are negative\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n actual constructor(initialCapacity: Int, loadFactor: Float = 0.0f) : super(initialCapacity, loadFactor) {\n map = HashMap>()\n }\n\n actual constructor(initialCapacity: Int) : this(initialCapacity, 0.0f)\n\n /**\n * Constructs an instance of [LinkedHashMap] filled with the contents of the specified [original] map.\n */\n actual constructor(original: Map) {\n map = HashMap>()\n this.putAll(original)\n }\n\n actual override fun clear() {\n map.clear()\n head = null\n }\n\n\n// override fun clone(): Any {\n// return LinkedHashMap(this)\n// }\n\n\n actual override fun containsKey(key: K): Boolean = map.containsKey(key)\n\n actual override fun containsValue(value: V): Boolean {\n var node: ChainEntry = head ?: return false\n do {\n if (node.value == value) {\n return true\n }\n node = node.next!!\n } while (node !== head)\n return false\n }\n\n\n override fun createEntrySet(): MutableSet> = EntrySet()\n\n actual override operator fun get(key: K): V? = map.get(key)?.value\n\n actual override fun put(key: K, value: V): V? {\n val old = map.get(key)\n if (old == null) {\n val newEntry = ChainEntry(key, value)\n map.put(key, newEntry)\n newEntry.addToEnd()\n return null\n } else {\n return old.setValue(value)\n }\n }\n\n actual override fun remove(key: K): V? {\n val entry = map.remove(key)\n if (entry != null) {\n entry.remove()\n return entry.value\n }\n return null\n }\n\n actual override val size: Int get() = map.size\n\n}\n\n/**\n * Constructs the specialized implementation of [LinkedHashMap] with [String] keys, which stores the keys as properties of\n * JS object without hashing them.\n */\npublic fun linkedStringMapOf(vararg pairs: Pair): LinkedHashMap {\n return LinkedHashMap(stringMapOf()).apply { putAll(pairs) }\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT LinkedHashSet\n * Copyright 2008 Google Inc.\n */\n\npackage kotlin.collections\n\n/**\n * The implementation of the [MutableSet] interface, backed by a [LinkedHashMap] instance.\n *\n * This implementation preserves the insertion order of elements during the iteration.\n */\npublic actual open class LinkedHashSet : HashSet, MutableSet {\n\n internal constructor(map: LinkedHashMap) : super(map)\n\n /**\n * Constructs a new empty [LinkedHashSet].\n */\n actual constructor() : super(LinkedHashMap())\n\n /**\n * Constructs a new [LinkedHashSet] filled with the elements of the specified collection.\n */\n actual constructor(elements: Collection) : super(LinkedHashMap()) {\n addAll(elements)\n }\n\n /**\n * Constructs a new empty [LinkedHashSet].\n *\n * @param initialCapacity the initial capacity (ignored)\n * @param loadFactor the load factor (ignored)\n *\n * @throws IllegalArgumentException if the initial capacity or load factor are negative\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n actual constructor(initialCapacity: Int, loadFactor: Float = 0.0f) : super(LinkedHashMap(initialCapacity, loadFactor))\n\n actual constructor(initialCapacity: Int) : this(initialCapacity, 0.0f)\n\n// public override fun clone(): Any {\n// return LinkedHashSet(this)\n// }\n\n}\n\n/**\n * Creates a new instance of the specialized implementation of [LinkedHashSet] with the specified [String] elements,\n * which elements the keys as properties of JS object without hashing them.\n */\npublic fun linkedStringSetOf(vararg elements: String): LinkedHashSet {\n return LinkedHashSet(linkedStringMapOf()).apply { addAll(elements) }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\nimport kotlin.contracts.*\n\n\n@Deprecated(\"Do not use Synchronized annotation in pure Kotlin/JS code\", level = DeprecationLevel.ERROR)\npublic typealias Synchronized = kotlin.jvm.Synchronized\n\n@Deprecated(\"Do not use Volatile annotation in pure Kotlin/JS code\", level = DeprecationLevel.ERROR)\npublic typealias Volatile = kotlin.jvm.Volatile\n\n@kotlin.internal.InlineOnly\npublic actual inline fun synchronized(lock: Any, block: () -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block()\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.io\n\ninternal abstract class BaseOutput {\n open fun println() {\n print(\"\\n\")\n }\n\n open fun println(message: Any?) {\n print(message)\n println()\n }\n\n abstract fun print(message: Any?)\n\n open fun flush() {}\n}\n\n/** JsName used to make the declaration available outside of module to test it */\n@JsName(\"NodeJsOutput\")\ninternal class NodeJsOutput(val outputStream: dynamic) : BaseOutput() {\n override fun print(message: Any?) {\n // TODO: Using local variable because of bug in block decomposition lowering in IR backend\n val messageString = String(message)\n outputStream.write(messageString)\n }\n}\n\n/** JsName used to make the declaration available outside of module to test it */\n@JsName(\"OutputToConsoleLog\")\ninternal class OutputToConsoleLog : BaseOutput() {\n override fun print(message: Any?) {\n console.log(message)\n }\n\n override fun println(message: Any?) {\n console.log(message)\n }\n\n override fun println() {\n console.log(\"\")\n }\n}\n\n/** JsName used to make the declaration available outside of module to test it and use at try.kotl.in */\n@JsName(\"BufferedOutput\")\ninternal open class BufferedOutput : BaseOutput() {\n var buffer = \"\"\n\n override fun print(message: Any?) {\n buffer += String(message)\n }\n\n override fun flush() {\n buffer = \"\"\n }\n}\n\n/** JsName used to make the declaration available outside of module to test it */\n@JsName(\"BufferedOutputToConsoleLog\")\ninternal class BufferedOutputToConsoleLog : BufferedOutput() {\n override fun print(message: Any?) {\n var s = String(message)\n val i = s.lastIndexOf('\\n')\n if (i >= 0) {\n buffer += s.substring(0, i)\n flush()\n s = s.substring(i + 1)\n }\n buffer += s\n }\n\n override fun flush() {\n console.log(buffer)\n buffer = \"\"\n }\n}\n\n/** JsName used to make the declaration available outside of module to test it and use at try.kotl.in */\n@JsName(\"output\")\ninternal var output = run {\n val isNode: Boolean = js(\"typeof process !== 'undefined' && process.versions && !!process.versions.node\")\n if (isNode) NodeJsOutput(js(\"process.stdout\")) else BufferedOutputToConsoleLog()\n}\n\n@kotlin.internal.InlineOnly\nprivate inline fun String(value: Any?): String = js(\"String\")(value)\n\n/** Prints the line separator to the standard output stream. */\npublic actual fun println() {\n output.println()\n}\n\n/** Prints the given [message] and the line separator to the standard output stream. */\npublic actual fun println(message: Any?) {\n output.println(message)\n}\n\n/** Prints the given [message] to the standard output stream. */\npublic actual fun print(message: Any?) {\n output.print(message)\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines\n\nimport kotlin.coroutines.intrinsics.CoroutineSingletons.*\nimport kotlin.coroutines.intrinsics.COROUTINE_SUSPENDED\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal actual class SafeContinuation\ninternal actual constructor(\n private val delegate: Continuation,\n initialResult: Any?\n) : Continuation {\n @PublishedApi\n internal actual constructor(delegate: Continuation) : this(delegate, UNDECIDED)\n\n public actual override val context: CoroutineContext\n get() = delegate.context\n\n private var result: Any? = initialResult\n\n public actual override fun resumeWith(result: Result) {\n val cur = this.result\n when {\n cur === UNDECIDED -> {\n this.result = result.value\n }\n cur === COROUTINE_SUSPENDED -> {\n this.result = RESUMED\n delegate.resumeWith(result)\n }\n else -> throw IllegalStateException(\"Already resumed\")\n }\n }\n\n @PublishedApi\n internal actual fun getOrThrow(): Any? {\n if (result === UNDECIDED) {\n result = COROUTINE_SUSPENDED\n return COROUTINE_SUSPENDED\n }\n val result = this.result\n return when {\n result === RESUMED -> COROUTINE_SUSPENDED // already called continuation, indicate COROUTINE_SUSPENDED upstream\n result is Result.Failure -> throw result.exception\n else -> result // either COROUTINE_SUSPENDED or data\n }\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines.js.internal\n\nimport kotlin.coroutines.Continuation\nimport kotlin.coroutines.EmptyCoroutineContext\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal val EmptyContinuation = Continuation(EmptyCoroutineContext) { result ->\n result.getOrThrow()\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\n/**\n * Exposes the [Date API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) to Kotlin.\n */\n@Suppress(\"NOT_DOCUMENTED\")\npublic external class Date() {\n public constructor(milliseconds: Number)\n\n public constructor(dateString: String)\n\n public constructor(year: Int, month: Int)\n\n public constructor(year: Int, month: Int, day: Int)\n\n public constructor(year: Int, month: Int, day: Int, hour: Int)\n\n public constructor(year: Int, month: Int, day: Int, hour: Int, minute: Int)\n\n public constructor(year: Int, month: Int, day: Int, hour: Int, minute: Int, second: Int)\n\n public constructor(year: Int, month: Int, day: Int, hour: Int, minute: Int, second: Int, millisecond: Number)\n\n public fun getDate(): Int\n\n public fun getDay(): Int\n\n public fun getFullYear(): Int\n\n public fun getHours(): Int\n\n public fun getMilliseconds(): Int\n\n public fun getMinutes(): Int\n\n public fun getMonth(): Int\n\n public fun getSeconds(): Int\n\n public fun getTime(): Double\n\n public fun getTimezoneOffset(): Int\n\n public fun getUTCDate(): Int\n\n public fun getUTCDay(): Int\n\n public fun getUTCFullYear(): Int\n\n public fun getUTCHours(): Int\n\n public fun getUTCMilliseconds(): Int\n\n public fun getUTCMinutes(): Int\n\n public fun getUTCMonth(): Int\n\n public fun getUTCSeconds(): Int\n\n public fun toDateString(): String\n\n public fun toISOString(): String\n\n public fun toJSON(): Json\n\n public fun toLocaleDateString(locales: Array = definedExternally, options: LocaleOptions = definedExternally): String\n\n public fun toLocaleDateString(locales: String, options: LocaleOptions = definedExternally): String\n\n public fun toLocaleString(locales: Array = definedExternally, options: LocaleOptions = definedExternally): String\n\n public fun toLocaleString(locales: String, options: LocaleOptions = definedExternally): String\n\n public fun toLocaleTimeString(locales: Array = definedExternally, options: LocaleOptions = definedExternally): String\n\n public fun toLocaleTimeString(locales: String, options: LocaleOptions = definedExternally): String\n\n public fun toTimeString(): String\n\n public fun toUTCString(): String\n\n public companion object {\n public fun now(): Double\n\n public fun parse(dateString: String): Double\n\n public fun UTC(year: Int, month: Int): Double\n\n public fun UTC(year: Int, month: Int, day: Int): Double\n\n public fun UTC(year: Int, month: Int, day: Int, hour: Int): Double\n\n public fun UTC(year: Int, month: Int, day: Int, hour: Int, minute: Int): Double\n\n public fun UTC(year: Int, month: Int, day: Int, hour: Int, minute: Int, second: Int): Double\n\n public fun UTC(year: Int, month: Int, day: Int, hour: Int, minute: Int, second: Int, millisecond: Number): Double\n }\n\n public interface LocaleOptions {\n public var localeMatcher: String?\n\n public var timeZone: String?\n\n public var hour12: Boolean?\n\n public var formatMatcher: String?\n\n public var weekday: String?\n\n public var era: String?\n\n public var year: String?\n\n public var month: String?\n\n public var day: String?\n\n public var hour: String?\n\n public var minute: String?\n\n public var second: String?\n\n public var timeZoneName: String?\n }\n}\n\npublic inline fun dateLocaleOptions(init: Date.LocaleOptions.() -> Unit): Date.LocaleOptions {\n val result = js(\"new Object()\").unsafeCast()\n init(result)\n return result\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.dom\n\nimport org.w3c.dom.*\n\n/**\n * Creates a new element with the specified [name].\n *\n * The element is initialized with the speicifed [init] function.\n */\npublic fun Document.createElement(name: String, init: Element.() -> Unit): Element = createElement(name).apply(init)\n\n/**\n * Appends a newly created element with the specified [name] to this element.\n *\n * The element is initialized with the speicifed [init] function.\n */\npublic fun Element.appendElement(name: String, init: Element.() -> Unit): Element =\n ownerDocument!!.createElement(name, init).also { appendChild(it) }\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.dom\n\nimport org.w3c.dom.*\n\n/** Returns true if the element has the given CSS class style in its 'class' attribute */\nfun Element.hasClass(cssClass: String): Boolean = className.matches(\"\"\"(^|.*\\s+)$cssClass($|\\s+.*)\"\"\".toRegex())\n\n/**\n * Adds CSS class to element. Has no effect if all specified classes are already in class attribute of the element\n *\n * @return true if at least one class has been added\n */\nfun Element.addClass(vararg cssClasses: String): Boolean {\n val missingClasses = cssClasses.filterNot { hasClass(it) }\n if (missingClasses.isNotEmpty()) {\n val presentClasses = className.trim()\n className = buildString {\n append(presentClasses)\n if (!presentClasses.isEmpty()) {\n append(\" \")\n }\n missingClasses.joinTo(this, \" \")\n }\n return true\n }\n\n return false\n}\n\n/**\n * Removes all [cssClasses] from element. Has no effect if all specified classes are missing in class attribute of the element\n *\n * @return true if at least one class has been removed\n */\nfun Element.removeClass(vararg cssClasses: String): Boolean {\n if (cssClasses.any { hasClass(it) }) {\n val toBeRemoved = cssClasses.toSet()\n className = className.trim().split(\"\\\\s+\".toRegex()).filter { it !in toBeRemoved }.joinToString(\" \")\n return true\n }\n\n return false\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n\npackage kotlin.text\n\n/**\n * Converts the string into a regular expression [Regex] with the default options.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.toRegex(): Regex = Regex(this)\n\n/**\n * Converts the string into a regular expression [Regex] with the specified single [option].\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.toRegex(option: RegexOption): Regex = Regex(this, option)\n\n/**\n * Converts the string into a regular expression [Regex] with the specified set of [options].\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.toRegex(options: Set): Regex = Regex(this, options)\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n\npackage kotlin.text\n\n/**\n * Builds new string by populating newly created [StringBuilder] using provided [builderAction]\n * and then converting it to [String].\n */\n@kotlin.internal.InlineOnly\npublic inline fun buildString(builderAction: StringBuilder.() -> Unit): String =\n StringBuilder().apply(builderAction).toString()\n\n/**\n * Builds new string by populating newly created [StringBuilder] initialized with the given [capacity]\n * using provided [builderAction] and then converting it to [String].\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun buildString(capacity: Int, builderAction: StringBuilder.() -> Unit): String =\n StringBuilder(capacity).apply(builderAction).toString()\n\n/**\n * Appends all arguments to the given [Appendable].\n */\npublic fun T.append(vararg value: CharSequence?): T {\n for (item in value)\n append(item)\n return this\n}\n\n/**\n * Appends all arguments to the given StringBuilder.\n */\npublic fun StringBuilder.append(vararg value: String?): StringBuilder {\n for (item in value)\n append(item)\n return this\n}\n\n/**\n * Appends all arguments to the given StringBuilder.\n */\npublic fun StringBuilder.append(vararg value: Any?): StringBuilder {\n for (item in value)\n append(item)\n return this\n}\n\n\ninternal fun Appendable.appendElement(element: T, transform: ((T) -> CharSequence)?) {\n when {\n transform != null -> append(transform(element))\n element is CharSequence? -> append(element)\n element is Char -> append(element)\n else -> append(element.toString())\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.dom\n\nimport org.w3c.dom.*\n\n/**\n * Gets a value indicating whether this node is a TEXT_NODE or a CDATA_SECTION_NODE.\n */\npublic val Node.isText: Boolean\n get() = nodeType == Node.TEXT_NODE || nodeType == Node.CDATA_SECTION_NODE\n\n/**\n * Gets a value indicating whether this node is an [Element].\n */\npublic val Node.isElement: Boolean\n get() = nodeType == Node.ELEMENT_NODE\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage org.w3c.dom.events\n\npublic fun EventListener(handler: (Event) -> Unit): EventListener = EventListenerHandler(handler)\n\nprivate class EventListenerHandler(private val handler: (Event) -> Unit) : EventListener {\n public override fun handleEvent(event: Event) {\n handler(event)\n }\n\n public override fun toString(): String = \"EventListenerHandler($handler)\"\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage org.w3c.dom\n\npublic external interface ItemArrayLike {\n val length: Int\n fun item(index: Int): T?\n}\n\n/**\n * Returns the view of this `ItemArrayLike` collection as `List`\n */\npublic fun ItemArrayLike.asList(): List = object : AbstractList() {\n override val size: Int get() = this@asList.length\n\n override fun get(index: Int): T = when (index) {\n in 0..lastIndex -> this@asList.item(index).unsafeCast()\n else -> throw IndexOutOfBoundsException(\"index $index is not in range [0..$lastIndex]\")\n }\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.dom\n\nimport org.w3c.dom.*\n\n/** Removes all the children from this node. */\npublic fun Node.clear() {\n while (hasChildNodes()) {\n removeChild(firstChild!!)\n }\n}\n\n/**\n * Creates text node and append it to the element.\n *\n * @return this element\n */\nfun Element.appendText(text: String): Element {\n appendChild(ownerDocument!!.createTextNode(text))\n return this\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\n/**\n * Reinterprets this value as a value of the [dynamic type](/docs/reference/dynamic-type.html).\n */\n@kotlin.internal.InlineOnly\npublic inline fun Any?.asDynamic(): dynamic = this\n\n/**\n * Reinterprets this value as a value of the specified type [T] without any actual type checking.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Any?.unsafeCast(): @kotlin.internal.NoInfer T = this.asDynamic()\n\n/**\n * Reinterprets this `dynamic` value as a value of the specified type [T] without any actual type checking.\n */\n@kotlin.internal.DynamicExtension\n@JsName(\"unsafeCastDynamic\")\n@kotlin.internal.InlineOnly\npublic inline fun dynamic.unsafeCast(): @kotlin.internal.NoInfer T = this\n\n/**\n * Allows to iterate this `dynamic` object in the following cases:\n * - when it has an `iterator` function,\n * - when it is an array\n * - when it is an instance of [kotlin.collections.Iterable]\n */\n@kotlin.internal.DynamicExtension\npublic operator fun dynamic.iterator(): Iterator {\n val r: Any? = this\n\n return when {\n this[\"iterator\"] != null ->\n this[\"iterator\"]()\n js(\"Kotlin\").isArrayish(r) ->\n r.unsafeCast>().iterator()\n\n else ->\n (r as Iterable<*>).iterator()\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// a package is omitted to get declarations directly under the module\n\n@JsName(\"throwNPE\")\ninternal fun throwNPE(message: String) {\n throw NullPointerException(message)\n}\n\n@JsName(\"throwCCE\")\ninternal fun throwCCE() {\n throw ClassCastException(\"Illegal cast\")\n}\n\n@JsName(\"throwISE\")\ninternal fun throwISE(message: String) {\n throw IllegalStateException(message)\n}\n\n@JsName(\"throwUPAE\")\ninternal fun throwUPAE(propertyName: String) {\n throw UninitializedPropertyAccessException(\"lateinit property ${propertyName} has not been initialized\")\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\n// NOTE: Do not author your exceptions as they are written in this file, instead use this template:\n/*\npublic open class MyException : Exception {\n constructor() : super()\n constructor(message: String?) : super(message)\n constructor(message: String?, cause: Throwable?) : super(message, cause)\n constructor(cause: Throwable?) : super(cause)\n}\n*/\n\n\n// TODO: remove workarounds for KT-22053 from direct Throwable inheritors\n// TODO: remove primary constructors, make all secondary KT-22055\n\n@Suppress(\"USELESS_ELVIS_RIGHT_IS_NULL\")\npublic actual open class Error actual constructor(message: String?, cause: Throwable?) : Throwable(message, cause ?: null) {\n actual constructor() : this(null, null) {\n Error::class.js.asDynamic().call(this, null, null)\n }\n\n actual constructor(message: String?) : this(message, null) {\n Error::class.js.asDynamic().call(this, message, null)\n }\n\n actual constructor(cause: Throwable?) : this(undefined, cause) {\n Error::class.js.asDynamic().call(this, undefined, cause)\n }\n}\n\n@Suppress(\"USELESS_ELVIS_RIGHT_IS_NULL\")\npublic actual open class Exception actual constructor(message: String?, cause: Throwable?) : Throwable(message, cause ?: null) {\n actual constructor() : this(null, null) {\n Exception::class.js.asDynamic().call(this, null, null)\n }\n\n actual constructor(message: String?) : this(message, null) {\n Exception::class.js.asDynamic().call(this, message, null)\n }\n\n actual constructor(cause: Throwable?) : this(undefined, cause) {\n Exception::class.js.asDynamic().call(this, undefined, cause)\n }\n}\n\npublic actual open class RuntimeException actual constructor(message: String?, cause: Throwable?) : Exception(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\npublic actual open class IllegalArgumentException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\npublic actual open class IllegalStateException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\npublic actual open class IndexOutOfBoundsException actual constructor(message: String?) : RuntimeException(message) {\n actual constructor() : this(null)\n}\n\npublic actual open class ConcurrentModificationException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\npublic actual open class UnsupportedOperationException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\n\npublic actual open class NumberFormatException actual constructor(message: String?) : IllegalArgumentException(message) {\n actual constructor() : this(null)\n}\n\n\npublic actual open class NullPointerException actual constructor(message: String?) : RuntimeException(message) {\n actual constructor() : this(null)\n}\n\npublic actual open class ClassCastException actual constructor(message: String?) : RuntimeException(message) {\n actual constructor() : this(null)\n}\n\npublic actual open class AssertionError private constructor(message: String?, cause: Throwable?) : Error(message, cause) {\n actual constructor() : this(null)\n constructor(message: String?) : this(message, null)\n actual constructor(message: Any?) : this(message.toString(), message as? Throwable)\n}\n\npublic actual open class NoSuchElementException actual constructor(message: String?) : RuntimeException(message) {\n actual constructor() : this(null)\n}\n\n@SinceKotlin(\"1.3\")\npublic actual open class ArithmeticException actual constructor(message: String?) : RuntimeException(message) {\n actual constructor() : this(null)\n}\n\npublic actual open class NoWhenBranchMatchedException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\npublic actual open class UninitializedPropertyAccessException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"GroupingKt\")\n@file:kotlin.jvm.JvmMultifileClass\n\npackage kotlin.collections\n\n/**\n * Represents a source of elements with a [keyOf] function, which can be applied to each element to get its key.\n *\n * A [Grouping] structure serves as an intermediate step in group-and-fold operations:\n * they group elements by their keys and then fold each group with some aggregating operation.\n *\n * It is created by attaching `keySelector: (T) -> K` function to a source of elements.\n * To get an instance of [Grouping] use one of `groupingBy` extension functions:\n * - [Iterable.groupingBy]\n * - [Sequence.groupingBy]\n * - [Array.groupingBy]\n * - [CharSequence.groupingBy]\n *\n * For the list of group-and-fold operations available, see the [extension functions](#extension-functions) for `Grouping`.\n */\n@SinceKotlin(\"1.1\")\npublic interface Grouping {\n /** Returns an [Iterator] over the elements of the source of this grouping. */\n fun sourceIterator(): Iterator\n /** Extracts the key of an [element]. */\n fun keyOf(element: T): K\n}\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments, and stores the results in a new map.\n *\n * The key for each element is provided by the [Grouping.keyOf] function.\n *\n * @param operation function is invoked on each element with the following parameters:\n * - `key`: the key of the group this element belongs to;\n * - `accumulator`: the current value of the accumulator of the group, can be `null` if it's the first `element` encountered in the group;\n * - `element`: the element from the source being aggregated;\n * - `first`: indicates whether it's the first `element` encountered in the group.\n *\n * @return a [Map] associating the key of each group with the result of aggregation of the group elements.\n * @sample samples.collections.Grouping.aggregateByRadix\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Grouping.aggregate(\n operation: (key: K, accumulator: R?, element: T, first: Boolean) -> R\n): Map {\n return aggregateTo(mutableMapOf(), operation)\n}\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments,\n * and stores the results in the given [destination] map.\n *\n * The key for each element is provided by the [Grouping.keyOf] function.\n *\n * @param operation a function that is invoked on each element with the following parameters:\n * - `key`: the key of the group this element belongs to;\n * - `accumulator`: the current value of the accumulator of the group, can be `null` if it's the first `element` encountered in the group;\n * - `element`: the element from the source being aggregated;\n * - `first`: indicates whether it's the first `element` encountered in the group.\n *\n * If the [destination] map already has a value corresponding to some key,\n * then the elements being aggregated for that key are never considered as `first`.\n *\n * @return the [destination] map associating the key of each group with the result of aggregation of the group elements.\n * @sample samples.collections.Grouping.aggregateByRadixTo\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > Grouping.aggregateTo(\n destination: M,\n operation: (key: K, accumulator: R?, element: T, first: Boolean) -> R\n): M {\n for (e in this.sourceIterator()) {\n val key = keyOf(e)\n val accumulator = destination[key]\n destination[key] = operation(key, accumulator, e, accumulator == null && !destination.containsKey(key))\n }\n return destination\n}\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments, and stores the results in a new map.\n * An initial value of accumulator is provided by [initialValueSelector] function.\n *\n * @param initialValueSelector a function that provides an initial value of accumulator for each group.\n * It's invoked with parameters:\n * - `key`: the key of the group;\n * - `element`: the first element being encountered in that group.\n *\n * @param operation a function that is invoked on each element with the following parameters:\n * - `key`: the key of the group this element belongs to;\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being accumulated.\n *\n * @return a [Map] associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.foldByEvenLengthWithComputedInitialValue\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Grouping.fold(\n initialValueSelector: (key: K, element: T) -> R,\n operation: (key: K, accumulator: R, element: T) -> R\n): Map =\n @Suppress(\"UNCHECKED_CAST\")\n aggregate { key, acc, e, first -> operation(key, if (first) initialValueSelector(key, e) else acc as R, e) }\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments,\n * and stores the results in the given [destination] map.\n * An initial value of accumulator is provided by [initialValueSelector] function.\n *\n * @param initialValueSelector a function that provides an initial value of accumulator for each group.\n * It's invoked with parameters:\n * - `key`: the key of the group;\n * - `element`: the first element being encountered in that group.\n *\n * If the [destination] map already has a value corresponding to some key, that value is used as an initial value of\n * the accumulator for that group and the [initialValueSelector] function is not called for that group.\n *\n * @param operation a function that is invoked on each element with the following parameters:\n * - `key`: the key of the group this element belongs to;\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being accumulated.\n *\n * @return the [destination] map associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.foldByEvenLengthWithComputedInitialValueTo\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > Grouping.foldTo(\n destination: M,\n initialValueSelector: (key: K, element: T) -> R,\n operation: (key: K, accumulator: R, element: T) -> R\n): M =\n @Suppress(\"UNCHECKED_CAST\")\n aggregateTo(destination) { key, acc, e, first -> operation(key, if (first) initialValueSelector(key, e) else acc as R, e) }\n\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments, and stores the results in a new map.\n * An initial value of accumulator is the same [initialValue] for each group.\n *\n * @param operation a function that is invoked on each element with the following parameters:\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being accumulated.\n *\n * @return a [Map] associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.foldByEvenLengthWithConstantInitialValue\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Grouping.fold(\n initialValue: R,\n operation: (accumulator: R, element: T) -> R\n): Map =\n @Suppress(\"UNCHECKED_CAST\")\n aggregate { _, acc, e, first -> operation(if (first) initialValue else acc as R, e) }\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments,\n * and stores the results in the given [destination] map.\n * An initial value of accumulator is the same [initialValue] for each group.\n *\n * If the [destination] map already has a value corresponding to the key of some group,\n * that value is used as an initial value of the accumulator for that group.\n *\n * @param operation a function that is invoked on each element with the following parameters:\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being accumulated.\n *\n * @return the [destination] map associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.foldByEvenLengthWithConstantInitialValueTo\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > Grouping.foldTo(\n destination: M,\n initialValue: R,\n operation: (accumulator: R, element: T) -> R\n): M =\n @Suppress(\"UNCHECKED_CAST\")\n aggregateTo(destination) { _, acc, e, first -> operation(if (first) initialValue else acc as R, e) }\n\n\n/**\n * Groups elements from the [Grouping] source by key and applies the reducing [operation] to the elements of each group\n * sequentially starting from the second element of the group,\n * passing the previously accumulated value and the current element as arguments,\n * and stores the results in a new map.\n * An initial value of accumulator is the first element of the group.\n *\n * @param operation a function that is invoked on each subsequent element of the group with the following parameters:\n * - `key`: the key of the group this element belongs to;\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being accumulated.\n *\n * @return a [Map] associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.reduceByMaxVowels\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Grouping.reduce(\n operation: (key: K, accumulator: S, element: T) -> S\n): Map =\n aggregate { key, acc, e, first ->\n @Suppress(\"UNCHECKED_CAST\")\n if (first) e else operation(key, acc as S, e)\n }\n\n/**\n * Groups elements from the [Grouping] source by key and applies the reducing [operation] to the elements of each group\n * sequentially starting from the second element of the group,\n * passing the previously accumulated value and the current element as arguments,\n * and stores the results in the given [destination] map.\n * An initial value of accumulator is the first element of the group.\n *\n * If the [destination] map already has a value corresponding to the key of some group,\n * that value is used as an initial value of the accumulator for that group and the first element of that group is also\n * subjected to the [operation].\n\n * @param operation a function that is invoked on each subsequent element of the group with the following parameters:\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being folded;\n *\n * @return the [destination] map associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.reduceByMaxVowelsTo\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > Grouping.reduceTo(\n destination: M,\n operation: (key: K, accumulator: S, element: T) -> S\n): M =\n aggregateTo(destination) { key, acc, e, first ->\n @Suppress(\"UNCHECKED_CAST\")\n if (first) e else operation(key, acc as S, e)\n }\n\n\n/**\n * Groups elements from the [Grouping] source by key and counts elements in each group to the given [destination] map.\n *\n * If the [destination] map already has a value corresponding to the key of some group,\n * that value is used as an initial value of the counter for that group.\n *\n * @return the [destination] map associating the key of each group with the count of elements in the group.\n *\n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic fun > Grouping.eachCountTo(destination: M): M =\n foldTo(destination, 0) { acc, _ -> acc + 1 }\n\n/*\n/**\n * Groups elements from the [Grouping] source by key and sums values provided by the [valueSelector] function for elements in each group\n * to the given [destination] map.\n *\n *\n * If the [destination] map already has a value corresponding to the key of some group,\n * that value is used as an initial value of the sum for that group.\n *\n * @return the [destination] map associating the key of each group with the sum of elements in the group.\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > Grouping.eachSumOfTo(destination: M, valueSelector: (T) -> Int): M =\n foldTo(destination, 0) { acc, e -> acc + valueSelector(e)}\n*/\n\n\n/*\n// TODO: sum by long and by double overloads\n\npublic inline fun > Grouping.sumEachByLongTo(destination: M, valueSelector: (T) -> Long): M =\n foldTo(destination, 0L) { acc, e -> acc + valueSelector(e)}\n\npublic inline fun Grouping.sumEachByLong(valueSelector: (T) -> Long): Map =\n fold(0L) { acc, e -> acc + valueSelector(e)}\n\npublic inline fun > Grouping.sumEachByDoubleTo(destination: M, valueSelector: (T) -> Double): M =\n foldTo(destination, 0.0) { acc, e -> acc + valueSelector(e)}\n\npublic inline fun Grouping.sumEachByDouble(valueSelector: (T) -> Double): Map =\n fold(0.0) { acc, e -> acc + valueSelector(e)}\n*/\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\npackage kotlin.collections\n\n/**\n * Groups elements from the [Grouping] source by key and counts elements in each group.\n *\n * @return a [Map] associating the key of each group with the count of element in the group.\n */\n@SinceKotlin(\"1.1\")\npublic actual fun Grouping.eachCount(): Map =\n fold(0) { acc, _ -> acc + 1 }\n\n/*\n/**\n * Groups elements from the [Grouping] source by key and sums values provided by the [valueSelector] function for elements in each group.\n *\n * @return a [Map] associating the key of each group with the count of element in the group.\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Grouping.eachSumOf(valueSelector: (T) -> Int): Map =\n fold(0) { acc, e -> acc + valueSelector(e) }\n*/","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\n/**\n * Exposes the JavaScript [Math object](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Math) to Kotlin.\n */\n@Deprecated(\"Use top-level functions from kotlin.math package instead.\", level = DeprecationLevel.WARNING)\npublic external object Math {\n @Deprecated(\"Use kotlin.math.PI instead.\", ReplaceWith(\"PI\", \"kotlin.math.PI\"), level = DeprecationLevel.ERROR)\n public val PI: Double\n @Deprecated(\"Use Random.nextDouble instead\", ReplaceWith(\"kotlin.random.Random.nextDouble()\", \"kotlin.random.Random\"), level = DeprecationLevel.WARNING)\n public fun random(): Double\n @Deprecated(\"Use kotlin.math.abs instead.\", ReplaceWith(\"abs(value)\", \"kotlin.math.abs\"), level = DeprecationLevel.ERROR)\n public fun abs(value: Double): Double\n @Deprecated(\"Use kotlin.math.acos instead.\", ReplaceWith(\"acos(value)\", \"kotlin.math.acos\"), level = DeprecationLevel.ERROR)\n public fun acos(value: Double): Double\n @Deprecated(\"Use kotlin.math.asin instead.\", ReplaceWith(\"asin(value)\", \"kotlin.math.asin\"), level = DeprecationLevel.ERROR)\n public fun asin(value: Double): Double\n @Deprecated(\"Use kotlin.math.atan instead.\", ReplaceWith(\"atan(value)\", \"kotlin.math.atan\"), level = DeprecationLevel.ERROR)\n public fun atan(value: Double): Double\n @Deprecated(\"Use kotlin.math.atan2 instead.\", ReplaceWith(\"atan2(y, x)\", \"kotlin.math.atan2\"), level = DeprecationLevel.ERROR)\n public fun atan2(y: Double, x: Double): Double\n @Deprecated(\"Use kotlin.math.cos instead.\", ReplaceWith(\"cos(value)\", \"kotlin.math.cos\"), level = DeprecationLevel.ERROR)\n public fun cos(value: Double): Double\n @Deprecated(\"Use kotlin.math.sin instead.\", ReplaceWith(\"sin(value)\", \"kotlin.math.sin\"), level = DeprecationLevel.ERROR)\n public fun sin(value: Double): Double\n @Deprecated(\"Use kotlin.math.exp instead.\", ReplaceWith(\"exp(value)\", \"kotlin.math.exp\"), level = DeprecationLevel.ERROR)\n public fun exp(value: Double): Double\n @Deprecated(\"Use maxOf or kotlin.math.max instead\", level = DeprecationLevel.ERROR)\n public fun max(vararg values: Int): Int\n @Deprecated(\"Use maxOf or kotlin.math.max instead\", level = DeprecationLevel.ERROR)\n public fun max(vararg values: Float): Float\n @Deprecated(\"Use maxOf or kotlin.math.max instead\", level = DeprecationLevel.ERROR)\n public fun max(vararg values: Double): Double\n @Deprecated(\"Use minOf or kotlin.math.min instead\", level = DeprecationLevel.ERROR)\n public fun min(vararg values: Int): Int\n @Deprecated(\"Use minOf or kotlin.math.min instead\", level = DeprecationLevel.ERROR)\n public fun min(vararg values: Float): Float\n @Deprecated(\"Use minOf or kotlin.math.min instead\", level = DeprecationLevel.ERROR)\n public fun min(vararg values: Double): Double\n @Deprecated(\"Use kotlin.math.sqrt instead.\", ReplaceWith(\"sqrt(value)\", \"kotlin.math.sqrt\"), level = DeprecationLevel.ERROR)\n public fun sqrt(value: Double): Double\n @Deprecated(\"Use kotlin.math.tan instead.\", ReplaceWith(\"tan(value)\", \"kotlin.math.tan\"), level = DeprecationLevel.ERROR)\n public fun tan(value: Double): Double\n @Deprecated(\"Use kotlin.math.ln instead.\", ReplaceWith(\"ln(value)\", \"kotlin.math.ln\"), level = DeprecationLevel.ERROR)\n public fun log(value: Double): Double\n @Deprecated(\"Use kotlin.math.pow instead.\", ReplaceWith(\"pow(base, exp)\", \"kotlin.math.pow\"), level = DeprecationLevel.ERROR)\n public fun pow(base: Double, exp: Double): Double\n @Deprecated(\"Use kotlin.math.round instead.\", ReplaceWith(\"round(value)\", \"kotlin.math.round\"), level = DeprecationLevel.ERROR)\n public fun round(value: Number): Int\n @Deprecated(\"Use kotlin.math.floor instead.\", ReplaceWith(\"floor(value)\", \"kotlin.math.floor\"), level = DeprecationLevel.ERROR)\n public fun floor(value: Number): Int\n @Deprecated(\"Use kotlin.math.ceil instead.\", ReplaceWith(\"ceil(value)\", \"kotlin.math.ceil\"), level = DeprecationLevel.ERROR)\n public fun ceil(value: Number): Int\n\n @PublishedApi\n internal fun trunc(value: Number): Double\n @PublishedApi\n internal fun sign(value: Number): Double\n\n @PublishedApi\n internal fun sinh(value: Double): Double\n @PublishedApi\n internal fun cosh(value: Double): Double\n @PublishedApi\n internal fun tanh(value: Double): Double\n @PublishedApi\n internal fun asinh(value: Double): Double\n @PublishedApi\n internal fun acosh(value: Double): Double\n @PublishedApi\n internal fun atanh(value: Double): Double\n\n @PublishedApi\n internal fun hypot(x: Double, y: Double): Double\n\n @PublishedApi\n internal fun expm1(value: Double): Double\n\n @PublishedApi\n internal fun log10(value: Double): Double\n @PublishedApi\n internal fun log2(value: Double): Double\n @PublishedApi\n internal fun log1p(value: Double): Double\n}\n\n/**\n * Returns the smaller of two values.\n */\n@Suppress(\"DEPRECATION\")\n@Deprecated(\"Use minOf or kotlin.math.min instead\", ReplaceWith(\"minOf(a, b)\"), level = DeprecationLevel.ERROR)\npublic fun Math.min(a: Long, b: Long): Long = if (a <= b) a else b\n\n/**\n * Returns the greater of two values.\n */\n@Suppress(\"DEPRECATION\")\n@Deprecated(\"Use maxOf or kotlin.math.max instead\", ReplaceWith(\"maxOf(a, b)\"), level = DeprecationLevel.ERROR)\npublic fun Math.max(a: Long, b: Long): Long = if (a >= b) a else b\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\n/**\n * An interface for indexing access to a collection of key-value pairs, where type of key is [String] and type of value is [Any?][Any].\n */\npublic external interface Json {\n /**\n * Calls to the function will be translated to indexing operation (square brackets) on the receiver with [propertyName] as the argument.\n *\n * E.g. for next code:\n * ```kotlin\n * fun test(j: Json, p: String) = j[\"prop\"] + j.get(p)\n * ```\n *\n * will be generated:\n * ```js\n * function test(j, p) {\n * return j[\"prop\"] + j[p];\n * }\n * ```\n */\n operator fun get(propertyName: String): Any?\n\n /**\n * Calls of the function will be translated to an assignment of [value] to the receiver indexed (with square brackets/index operation) with [propertyName].\n *\n * E.g. for the following code:\n * ```kotlin\n * fun test(j: Json, p: String, newValue: Any) {\n * j[\"prop\"] = 1\n * j.set(p, newValue)\n * }\n * ```\n *\n * will be generated:\n * ```js\n * function test(j, p, newValue) {\n * j[\"prop\"] = 1;\n * j[p] = newValue;\n * }\n * }\n * ```\n */\n operator fun set(propertyName: String, value: Any?): Unit\n}\n\n/**\n * Returns a simple JavaScript object (as [Json]) using provided key-value pairs as names and values of its properties.\n */\npublic fun json(vararg pairs: Pair): Json {\n val res: dynamic = js(\"({})\")\n for ((name, value) in pairs) {\n res[name] = value\n }\n return res\n}\n\n/**\n * Adds key-value pairs from [other] to [this].\n * Returns the original receiver.\n */\npublic fun Json.add(other: Json): Json {\n val keys: Array = js(\"Object\").keys(other)\n for (key in keys) {\n if (other.asDynamic().hasOwnProperty(key)) {\n this[key] = other[key];\n }\n }\n return this\n}\n\n/**\n * Exposes the JavaScript [JSON object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON) to Kotlin.\n */\n@Suppress(\"NOT_DOCUMENTED\")\npublic external object JSON {\n public fun stringify(o: Any?): String\n public fun stringify(o: Any?, replacer: ((key: String, value: Any?) -> Any?)): String\n public fun stringify(o: Any?, replacer: ((key: String, value: Any?) -> Any?)? = definedExternally, space: Int): String\n public fun stringify(o: Any?, replacer: ((key: String, value: Any?) -> Any?)? = definedExternally, space: String): String\n public fun stringify(o: Any?, replacer: Array): String\n public fun stringify(o: Any?, replacer: Array, space: Int): String\n public fun stringify(o: Any?, replacer: Array, space: String): String\n\n public fun parse(text: String): T\n public fun parse(text: String, reviver: ((key: String, value: Any?) -> Any?)): T\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n@file:Suppress(\"DEPRECATION\", \"DEPRECATION_ERROR\")\npackage kotlin.math\n\n\nimport kotlin.internal.InlineOnly\nimport kotlin.js.Math as nativeMath\n\n\n// region ================ Double Math ========================================\n\n/** Computes the sine of the angle [x] given in radians.\n *\n * Special cases:\n * - `sin(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sin(x: Double): Double = nativeMath.sin(x)\n\n/** Computes the cosine of the angle [x] given in radians.\n *\n * Special cases:\n * - `cos(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun cos(x: Double): Double = nativeMath.cos(x)\n\n/** Computes the tangent of the angle [x] given in radians.\n *\n * Special cases:\n * - `tan(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun tan(x: Double): Double = nativeMath.tan(x)\n\n/**\n * Computes the arc sine of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `asin(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun asin(x: Double): Double = nativeMath.asin(x)\n\n/**\n * Computes the arc cosine of the value [x];\n * the returned value is an angle in the range from `0.0` to `PI` radians.\n *\n * Special cases:\n * - `acos(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun acos(x: Double): Double = nativeMath.acos(x)\n\n/**\n * Computes the arc tangent of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `atan(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atan(x: Double): Double = nativeMath.atan(x)\n\n/**\n * Returns the angle `theta` of the polar coordinates `(r, theta)` that correspond\n * to the rectangular coordinates `(x, y)` by computing the arc tangent of the value [y] / [x];\n * the returned value is an angle in the range from `-PI` to `PI` radians.\n *\n * Special cases:\n * - `atan2(0.0, 0.0)` is `0.0`\n * - `atan2(0.0, x)` is `0.0` for `x > 0` and `PI` for `x < 0`\n * - `atan2(-0.0, x)` is `-0.0` for 'x > 0` and `-PI` for `x < 0`\n * - `atan2(y, +Inf)` is `0.0` for `0 < y < +Inf` and `-0.0` for '-Inf < y < 0`\n * - `atan2(y, -Inf)` is `PI` for `0 < y < +Inf` and `-PI` for `-Inf < y < 0`\n * - `atan2(y, 0.0)` is `PI/2` for `y > 0` and `-PI/2` for `y < 0`\n * - `atan2(+Inf, x)` is `PI/2` for finite `x`y\n * - `atan2(-Inf, x)` is `-PI/2` for finite `x`\n * - `atan2(NaN, x)` and `atan2(y, NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atan2(y: Double, x: Double): Double = nativeMath.atan2(y, x)\n\n/**\n * Computes the hyperbolic sine of the value [x].\n *\n * Special cases:\n * - `sinh(NaN)` is `NaN`\n * - `sinh(+Inf)` is `+Inf`\n * - `sinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sinh(x: Double): Double = nativeMath.sinh(x)\n\n/**\n * Computes the hyperbolic cosine of the value [x].\n *\n * Special cases:\n * - `cosh(NaN)` is `NaN`\n * - `cosh(+Inf|-Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun cosh(x: Double): Double = nativeMath.cosh(x)\n\n/**\n * Computes the hyperbolic tangent of the value [x].\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(+Inf)` is `1.0`\n * - `tanh(-Inf)` is `-1.0`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun tanh(x: Double): Double = nativeMath.tanh(x)\n\n/**\n * Computes the inverse hyperbolic sine of the value [x].\n *\n * The returned value is `y` such that `sinh(y) == x`.\n *\n * Special cases:\n * - `asinh(NaN)` is `NaN`\n * - `asinh(+Inf)` is `+Inf`\n * - `asinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun asinh(x: Double): Double = nativeMath.asinh(x)\n\n/**\n * Computes the inverse hyperbolic cosine of the value [x].\n *\n * The returned value is positive `y` such that `cosh(y) == x`.\n *\n * Special cases:\n * - `acosh(NaN)` is `NaN`\n * - `acosh(x)` is `NaN` when `x < 1`\n * - `acosh(+Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun acosh(x: Double): Double = nativeMath.acosh(x)\n\n/**\n * Computes the inverse hyperbolic tangent of the value [x].\n *\n * The returned value is `y` such that `tanh(y) == x`.\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(x)` is `NaN` when `x > 1` or `x < -1`\n * - `tanh(1.0)` is `+Inf`\n * - `tanh(-1.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atanh(x: Double): Double = nativeMath.atanh(x)\n\n/**\n * Computes `sqrt(x^2 + y^2)` without intermediate overflow or underflow.\n *\n * Special cases:\n * - returns `+Inf` if any of arguments is infinite\n * - returns `NaN` if any of arguments is `NaN` and the other is not infinite\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun hypot(x: Double, y: Double): Double = nativeMath.hypot(x, y)\n\n/**\n * Computes the positive square root of the value [x].\n *\n * Special cases:\n * - `sqrt(x)` is `NaN` when `x < 0` or `x` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sqrt(x: Double): Double = nativeMath.sqrt(x)\n\n/**\n * Computes Euler's number `e` raised to the power of the value [x].\n *\n * Special cases:\n * - `exp(NaN)` is `NaN`\n * - `exp(+Inf)` is `+Inf`\n * - `exp(-Inf)` is `0.0`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun exp(x: Double): Double = nativeMath.exp(x)\n\n/**\n * Computes `exp(x) - 1`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `expm1(NaN)` is `NaN`\n * - `expm1(+Inf)` is `+Inf`\n * - `expm1(-Inf)` is `-1.0`\n *\n * @see [exp] function.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun expm1(x: Double): Double = nativeMath.expm1(x)\n\n/**\n * Computes the logarithm of the value [x] to the given [base].\n *\n * Special cases:\n * - `log(x, b)` is `NaN` if either `x` or `b` are `NaN`\n * - `log(x, b)` is `NaN` when `x < 0` or `b <= 0` or `b == 1.0`\n * - `log(+Inf, +Inf)` is `NaN`\n * - `log(+Inf, b)` is `+Inf` for `b > 1` and `-Inf` for `b < 1`\n * - `log(0.0, b)` is `-Inf` for `b > 1` and `+Inf` for `b > 1`\n *\n * See also logarithm functions for common fixed bases: [ln], [log10] and [log2].\n */\n@SinceKotlin(\"1.2\")\npublic actual fun log(x: Double, base: Double): Double {\n if (base <= 0.0 || base == 1.0) return Double.NaN\n return nativeMath.log(x) / nativeMath.log(base)\n}\n\n/**\n * Computes the natural logarithm (base `E`) of the value [x].\n *\n * Special cases:\n * - `ln(NaN)` is `NaN`\n * - `ln(x)` is `NaN` when `x < 0.0`\n * - `ln(+Inf)` is `+Inf`\n * - `ln(0.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ln(x: Double): Double = nativeMath.log(x)\n\n/**\n * Computes the common logarithm (base 10) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log10(x: Double): Double = nativeMath.log10(x)\n\n/**\n * Computes the binary logarithm (base 2) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log2(x: Double): Double = nativeMath.log2(x)\n\n/**\n * Computes `ln(x + 1)`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `ln1p(NaN)` is `NaN`\n * - `ln1p(x)` is `NaN` where `x < -1.0`\n * - `ln1p(-1.0)` is `-Inf`\n * - `ln1p(+Inf)` is `+Inf`\n *\n * @see [ln] function\n * @see [expm1] function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ln1p(x: Double): Double = nativeMath.log1p(x)\n\n/**\n * Rounds the given value [x] to an integer towards positive infinity.\n\n * @return the smallest double value that is greater than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `ceil(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ceil(x: Double): Double = nativeMath.ceil(x).unsafeCast() // TODO: Remove unsafe cast after removing public js.math\n\n/**\n * Rounds the given value [x] to an integer towards negative infinity.\n\n * @return the largest double value that is smaller than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `floor(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun floor(x: Double): Double = nativeMath.floor(x).unsafeCast()\n\n/**\n * Rounds the given value [x] to an integer towards zero.\n *\n * @return the value [x] having its fractional part truncated.\n *\n * Special cases:\n * - `truncate(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun truncate(x: Double): Double = nativeMath.trunc(x)\n\n/**\n * Rounds the given value [x] towards the closest integer with ties rounded towards even integer.\n *\n * Special cases:\n * - `round(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun round(x: Double): Double {\n if (x % 0.5 != 0.0) {\n return nativeMath.round(x).unsafeCast()\n }\n val floor = floor(x)\n return if (floor % 2 == 0.0) floor else ceil(x)\n}\n\n/**\n * Returns the absolute value of the given value [x].\n *\n * Special cases:\n * - `abs(NaN)` is `NaN`\n *\n * @see absoluteValue extension property for [Double]\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun abs(x: Double): Double = nativeMath.abs(x)\n\n/**\n * Returns the sign of the given value [x]:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `sign(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sign(x: Double): Double = nativeMath.sign(x)\n\n\n/**\n * Returns the smaller of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun min(a: Double, b: Double): Double = nativeMath.min(a, b)\n\n/**\n * Returns the greater of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun max(a: Double, b: Double): Double = nativeMath.max(a, b)\n\n// extensions\n\n/**\n * Raises this value to the power [x].\n *\n * Special cases:\n * - `b.pow(0.0)` is `1.0`\n * - `b.pow(1.0) == b`\n * - `b.pow(NaN)` is `NaN`\n * - `NaN.pow(x)` is `NaN` for `x != 0.0`\n * - `b.pow(Inf)` is `NaN` for `abs(b) == 1.0`\n * - `b.pow(x)` is `NaN` for `b < 0` and `x` is finite and not an integer\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Double.pow(x: Double): Double = nativeMath.pow(this, x)\n\n/**\n * Raises this value to the integer power [n].\n *\n * See the other overload of [pow] for details.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Double.pow(n: Int): Double = nativeMath.pow(this, n.toDouble())\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `NaN.absoluteValue` is `NaN`\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Double.absoluteValue: Double get() = nativeMath.abs(this)\n\n/**\n * Returns the sign of this value:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `NaN.sign` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Double.sign: Double get() = nativeMath.sign(this)\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n *\n * If [sign] is `NaN` the sign of the result is undefined.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.withSign(sign: Double): Double {\n val thisSignBit = js(\"Kotlin\").doubleSignBit(this).unsafeCast()\n val newSignBit = js(\"Kotlin\").doubleSignBit(sign).unsafeCast()\n return if (thisSignBit == newSignBit) this else -this\n}\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Double.withSign(sign: Int): Double = this.withSign(sign.toDouble())\n\n/**\n * Returns the ulp (unit in the last place) of this value.\n *\n * An ulp is a positive distance between this value and the next nearest [Double] value larger in magnitude.\n *\n * Special Cases:\n * - `NaN.ulp` is `NaN`\n * - `x.ulp` is `+Inf` when `x` is `+Inf` or `-Inf`\n * - `0.0.ulp` is `Double.MIN_VALUE`\n */\n@SinceKotlin(\"1.2\")\npublic actual val Double.ulp: Double get() = when {\n this < 0 -> (-this).ulp\n this.isNaN() || this == Double.POSITIVE_INFINITY -> this\n this == Double.MAX_VALUE -> this - this.nextDown()\n else -> this.nextUp() - this\n}\n\n/**\n * Returns the [Double] value nearest to this value in direction of positive infinity.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.nextUp(): Double = when {\n this.isNaN() || this == Double.POSITIVE_INFINITY -> this\n this == 0.0 -> Double.MIN_VALUE\n else -> Double.fromBits(this.toRawBits() + if (this > 0) 1 else -1)\n}\n\n/**\n * Returns the [Double] value nearest to this value in direction of negative infinity.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.nextDown(): Double = when {\n this.isNaN() || this == Double.NEGATIVE_INFINITY -> this\n this == 0.0 -> -Double.MIN_VALUE\n else -> Double.fromBits(this.toRawBits() + if (this > 0) -1 else 1)\n}\n\n\n/**\n * Returns the [Double] value nearest to this value in direction from this value towards the value [to].\n *\n * Special cases:\n * - `x.nextTowards(y)` is `NaN` if either `x` or `y` are `NaN`\n * - `x.nextTowards(x) == x`\n *\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.nextTowards(to: Double): Double = when {\n this.isNaN() || to.isNaN() -> Double.NaN\n to == this -> to\n to > this -> this.nextUp()\n else /* to < this */ -> this.nextDown()\n}\n\n\n/**\n * Rounds this [Double] value to the nearest integer and converts the result to [Int].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToInt() == Int.MAX_VALUE` when `x > Int.MAX_VALUE`\n * - `x.roundToInt() == Int.MIN_VALUE` when `x < Int.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.roundToInt(): Int = when {\n isNaN() -> throw IllegalArgumentException(\"Cannot round NaN value.\")\n this > Int.MAX_VALUE -> Int.MAX_VALUE\n this < Int.MIN_VALUE -> Int.MIN_VALUE\n else -> nativeMath.round(this).unsafeCast().toInt()\n}\n\n/**\n * Rounds this [Double] value to the nearest integer and converts the result to [Long].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToLong() == Long.MAX_VALUE` when `x > Long.MAX_VALUE`\n * - `x.roundToLong() == Long.MIN_VALUE` when `x < Long.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.roundToLong(): Long = when {\n isNaN() -> throw IllegalArgumentException(\"Cannot round NaN value.\")\n this > Long.MAX_VALUE -> Long.MAX_VALUE\n this < Long.MIN_VALUE -> Long.MIN_VALUE\n else -> nativeMath.round(this).unsafeCast().toLong()\n}\n\n// endregion\n\n\n\n// region ================ Float Math ========================================\n\n/** Computes the sine of the angle [x] given in radians.\n *\n * Special cases:\n * - `sin(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sin(x: Float): Float = nativeMath.sin(x.toDouble()).toFloat()\n\n/** Computes the cosine of the angle [x] given in radians.\n *\n * Special cases:\n * - `cos(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun cos(x: Float): Float = nativeMath.cos(x.toDouble()).toFloat()\n\n/** Computes the tangent of the angle [x] given in radians.\n *\n * Special cases:\n * - `tan(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun tan(x: Float): Float = nativeMath.tan(x.toDouble()).toFloat()\n\n/**\n * Computes the arc sine of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `asin(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun asin(x: Float): Float = nativeMath.asin(x.toDouble()).toFloat()\n\n/**\n * Computes the arc cosine of the value [x];\n * the returned value is an angle in the range from `0.0` to `PI` radians.\n *\n * Special cases:\n * - `acos(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun acos(x: Float): Float = nativeMath.acos(x.toDouble()).toFloat()\n\n/**\n * Computes the arc tangent of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `atan(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atan(x: Float): Float = nativeMath.atan(x.toDouble()).toFloat()\n\n/**\n * Returns the angle `theta` of the polar coordinates `(r, theta)` that correspond\n * to the rectangular coordinates `(x, y)` by computing the arc tangent of the value [y] / [x];\n * the returned value is an angle in the range from `-PI` to `PI` radians.\n *\n * Special cases:\n * - `atan2(0.0, 0.0)` is `0.0`\n * - `atan2(0.0, x)` is `0.0` for `x > 0` and `PI` for `x < 0`\n * - `atan2(-0.0, x)` is `-0.0` for 'x > 0` and `-PI` for `x < 0`\n * - `atan2(y, +Inf)` is `0.0` for `0 < y < +Inf` and `-0.0` for '-Inf < y < 0`\n * - `atan2(y, -Inf)` is `PI` for `0 < y < +Inf` and `-PI` for `-Inf < y < 0`\n * - `atan2(y, 0.0)` is `PI/2` for `y > 0` and `-PI/2` for `y < 0`\n * - `atan2(+Inf, x)` is `PI/2` for finite `x`y\n * - `atan2(-Inf, x)` is `-PI/2` for finite `x`\n * - `atan2(NaN, x)` and `atan2(y, NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atan2(y: Float, x: Float): Float = nativeMath.atan2(y.toDouble(), x.toDouble()).toFloat()\n\n/**\n * Computes the hyperbolic sine of the value [x].\n *\n * Special cases:\n * - `sinh(NaN)` is `NaN`\n * - `sinh(+Inf)` is `+Inf`\n * - `sinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sinh(x: Float): Float = nativeMath.sinh(x.toDouble()).toFloat()\n\n/**\n * Computes the hyperbolic cosine of the value [x].\n *\n * Special cases:\n * - `cosh(NaN)` is `NaN`\n * - `cosh(+Inf|-Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun cosh(x: Float): Float = nativeMath.cosh(x.toDouble()).toFloat()\n\n/**\n * Computes the hyperbolic tangent of the value [x].\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(+Inf)` is `1.0`\n * - `tanh(-Inf)` is `-1.0`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun tanh(x: Float): Float = nativeMath.tanh(x.toDouble()).toFloat()\n\n/**\n * Computes the inverse hyperbolic sine of the value [x].\n *\n * The returned value is `y` such that `sinh(y) == x`.\n *\n * Special cases:\n * - `asinh(NaN)` is `NaN`\n * - `asinh(+Inf)` is `+Inf`\n * - `asinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun asinh(x: Float): Float = nativeMath.asinh(x.toDouble()).toFloat()\n\n/**\n * Computes the inverse hyperbolic cosine of the value [x].\n *\n * The returned value is positive `y` such that `cosh(y) == x`.\n *\n * Special cases:\n * - `acosh(NaN)` is `NaN`\n * - `acosh(x)` is `NaN` when `x < 1`\n * - `acosh(+Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun acosh(x: Float): Float = nativeMath.acosh(x.toDouble()).toFloat()\n\n/**\n * Computes the inverse hyperbolic tangent of the value [x].\n *\n * The returned value is `y` such that `tanh(y) == x`.\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(x)` is `NaN` when `x > 1` or `x < -1`\n * - `tanh(1.0)` is `+Inf`\n * - `tanh(-1.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atanh(x: Float): Float = nativeMath.atanh(x.toDouble()).toFloat()\n\n/**\n * Computes `sqrt(x^2 + y^2)` without intermediate overflow or underflow.\n *\n * Special cases:\n * - returns `+Inf` if any of arguments is infinite\n * - returns `NaN` if any of arguments is `NaN` and the other is not infinite\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun hypot(x: Float, y: Float): Float = nativeMath.hypot(x.toDouble(), y.toDouble()).toFloat()\n\n/**\n * Computes the positive square root of the value [x].\n *\n * Special cases:\n * - `sqrt(x)` is `NaN` when `x < 0` or `x` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sqrt(x: Float): Float = nativeMath.sqrt(x.toDouble()).toFloat()\n\n/**\n * Computes Euler's number `e` raised to the power of the value [x].\n *\n * Special cases:\n * - `exp(NaN)` is `NaN`\n * - `exp(+Inf)` is `+Inf`\n * - `exp(-Inf)` is `0.0`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun exp(x: Float): Float = nativeMath.exp(x.toDouble()).toFloat()\n\n/**\n * Computes `exp(x) - 1`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `expm1(NaN)` is `NaN`\n * - `expm1(+Inf)` is `+Inf`\n * - `expm1(-Inf)` is `-1.0`\n *\n * @see [exp] function.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun expm1(x: Float): Float = nativeMath.expm1(x.toDouble()).toFloat()\n\n/**\n * Computes the logarithm of the value [x] to the given [base].\n *\n * Special cases:\n * - `log(x, b)` is `NaN` if either `x` or `b` are `NaN`\n * - `log(x, b)` is `NaN` when `x < 0` or `b <= 0` or `b == 1.0`\n * - `log(+Inf, +Inf)` is `NaN`\n * - `log(+Inf, b)` is `+Inf` for `b > 1` and `-Inf` for `b < 1`\n * - `log(0.0, b)` is `-Inf` for `b > 1` and `+Inf` for `b > 1`\n *\n * See also logarithm functions for common fixed bases: [ln], [log10] and [log2].\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log(x: Float, base: Float): Float = log(x.toDouble(), base.toDouble()).toFloat()\n\n/**\n * Computes the natural logarithm (base `E`) of the value [x].\n *\n * Special cases:\n * - `ln(NaN)` is `NaN`\n * - `ln(x)` is `NaN` when `x < 0.0`\n * - `ln(+Inf)` is `+Inf`\n * - `ln(0.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ln(x: Float): Float = nativeMath.log(x.toDouble()).toFloat()\n\n/**\n * Computes the common logarithm (base 10) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log10(x: Float): Float = nativeMath.log10(x.toDouble()).toFloat()\n\n/**\n * Computes the binary logarithm (base 2) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log2(x: Float): Float = nativeMath.log2(x.toDouble()).toFloat()\n\n/**\n * Computes `ln(a + 1)`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `ln1p(NaN)` is `NaN`\n * - `ln1p(x)` is `NaN` where `x < -1.0`\n * - `ln1p(-1.0)` is `-Inf`\n * - `ln1p(+Inf)` is `+Inf`\n *\n * @see [ln] function\n * @see [expm1] function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ln1p(x: Float): Float = nativeMath.log1p(x.toDouble()).toFloat()\n\n/**\n * Rounds the given value [x] to an integer towards positive infinity.\n\n * @return the smallest Float value that is greater than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `ceil(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ceil(x: Float): Float = nativeMath.ceil(x.toDouble()).toFloat()\n\n/**\n * Rounds the given value [x] to an integer towards negative infinity.\n\n * @return the largest Float value that is smaller than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `floor(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun floor(x: Float): Float = nativeMath.floor(x.toDouble()).toFloat()\n\n/**\n * Rounds the given value [x] to an integer towards zero.\n *\n * @return the value [x] having its fractional part truncated.\n *\n * Special cases:\n * - `truncate(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun truncate(x: Float): Float = truncate(x.toDouble()).toFloat()\n\n/**\n * Rounds the given value [x] towards the closest integer with ties rounded towards even integer.\n *\n * Special cases:\n * - `round(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun round(x: Float): Float = round(x.toDouble()).toFloat()\n\n\n/**\n * Returns the absolute value of the given value [x].\n *\n * Special cases:\n * - `abs(NaN)` is `NaN`\n *\n * @see absoluteValue extension property for [Float]\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun abs(x: Float): Float = nativeMath.abs(x.toDouble()).toFloat()\n\n/**\n * Returns the sign of the given value [x]:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `sign(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sign(x: Float): Float = nativeMath.sign(x.toDouble()).toFloat()\n\n\n\n/**\n * Returns the smaller of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun min(a: Float, b: Float): Float = nativeMath.min(a, b)\n\n/**\n * Returns the greater of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun max(a: Float, b: Float): Float = nativeMath.max(a, b)\n\n// extensions\n\n\n/**\n * Raises this value to the power [x].\n *\n * Special cases:\n * - `b.pow(0.0)` is `1.0`\n * - `b.pow(1.0) == b`\n * - `b.pow(NaN)` is `NaN`\n * - `NaN.pow(x)` is `NaN` for `x != 0.0`\n * - `b.pow(Inf)` is `NaN` for `abs(b) == 1.0`\n * - `b.pow(x)` is `NaN` for `b < 0` and `x` is finite and not an integer\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.pow(x: Float): Float = nativeMath.pow(this.toDouble(), x.toDouble()).toFloat()\n\n/**\n * Raises this value to the integer power [n].\n *\n * See the other overload of [pow] for details.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.pow(n: Int): Float = nativeMath.pow(this.toDouble(), n.toDouble()).toFloat()\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `NaN.absoluteValue` is `NaN`\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Float.absoluteValue: Float get() = nativeMath.abs(this.toDouble()).toFloat()\n\n/**\n * Returns the sign of this value:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `NaN.sign` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Float.sign: Float get() = nativeMath.sign(this.toDouble()).toFloat()\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n *\n * If [sign] is `NaN` the sign of the result is undefined.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.withSign(sign: Float): Float = this.toDouble().withSign(sign.toDouble()).toFloat()\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.withSign(sign: Int): Float = this.toDouble().withSign(sign.toDouble()).toFloat()\n\n\n/**\n * Rounds this [Float] value to the nearest integer and converts the result to [Int].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToInt() == Int.MAX_VALUE` when `x > Int.MAX_VALUE`\n * - `x.roundToInt() == Int.MIN_VALUE` when `x < Int.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.roundToInt(): Int = toDouble().roundToInt()\n\n/**\n * Rounds this [Float] value to the nearest integer and converts the result to [Long].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToLong() == Long.MAX_VALUE` when `x > Long.MAX_VALUE`\n * - `x.roundToLong() == Long.MIN_VALUE` when `x < Long.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.roundToLong(): Long = toDouble().roundToLong()\n\n\n// endregion\n\n// region ================ Integer Math ========================================\n\n\n/**\n * Returns the absolute value of the given value [n].\n *\n * Special cases:\n * - `abs(Int.MIN_VALUE)` is `Int.MIN_VALUE` due to an overflow\n *\n * @see absoluteValue extension property for [Int]\n */\n// TODO: remove manual 'or' when KT-19290 is fixed\n@SinceKotlin(\"1.2\")\npublic actual fun abs(n: Int): Int = if (n < 0) (-n or 0) else n\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun min(a: Int, b: Int): Int = nativeMath.min(a, b)\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun max(a: Int, b: Int): Int = nativeMath.max(a, b)\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `Int.MIN_VALUE.absoluteValue` is `Int.MIN_VALUE` due to an overflow\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Int.absoluteValue: Int get() = abs(this)\n\n/**\n * Returns the sign of this value:\n * - `-1` if the value is negative,\n * - `0` if the value is zero,\n * - `1` if the value is positive\n */\n@SinceKotlin(\"1.2\")\npublic actual val Int.sign: Int get() = when {\n this < 0 -> -1\n this > 0 -> 1\n else -> 0\n}\n\n\n\n/**\n * Returns the absolute value of the given value [n].\n *\n * Special cases:\n * - `abs(Long.MIN_VALUE)` is `Long.MIN_VALUE` due to an overflow\n *\n * @see absoluteValue extension property for [Long]\n */\n@SinceKotlin(\"1.2\")\npublic actual fun abs(n: Long): Long = if (n < 0) -n else n\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.2\")\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun min(a: Long, b: Long): Long = if (a <= b) a else b\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.2\")\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun max(a: Long, b: Long): Long = if (a >= b) a else b\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `Long.MIN_VALUE.absoluteValue` is `Long.MIN_VALUE` due to an overflow\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Long.absoluteValue: Long get() = abs(this)\n\n/**\n * Returns the sign of this value:\n * - `-1` if the value is negative,\n * - `0` if the value is zero,\n * - `1` if the value is positive\n */\n@SinceKotlin(\"1.2\")\npublic actual val Long.sign: Int get() = when {\n this < 0 -> -1\n this > 0 -> 1\n else -> 0\n}\n\n\n// endregion\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\n/**\n * Returns `true` if the specified number is a\n * Not-a-Number (NaN) value, `false` otherwise.\n */\npublic actual fun Double.isNaN(): Boolean = this != this\n\n/**\n * Returns `true` if the specified number is a\n * Not-a-Number (NaN) value, `false` otherwise.\n */\npublic actual fun Float.isNaN(): Boolean = this != this\n\n/**\n * Returns `true` if this value is infinitely large in magnitude.\n */\npublic actual fun Double.isInfinite(): Boolean = this == Double.POSITIVE_INFINITY || this == Double.NEGATIVE_INFINITY\n\n/**\n * Returns `true` if this value is infinitely large in magnitude.\n */\npublic actual fun Float.isInfinite(): Boolean = this == Float.POSITIVE_INFINITY || this == Float.NEGATIVE_INFINITY\n\n/**\n * Returns `true` if the argument is a finite floating-point value; returns `false` otherwise (for `NaN` and infinity arguments).\n */\npublic actual fun Double.isFinite(): Boolean = !isInfinite() && !isNaN()\n\n/**\n * Returns `true` if the argument is a finite floating-point value; returns `false` otherwise (for `NaN` and infinity arguments).\n */\npublic actual fun Float.isFinite(): Boolean = !isInfinite() && !isNaN()\n\n/**\n * Returns a bit representation of the specified floating-point value as [Long]\n * according to the IEEE 754 floating-point \"double format\" bit layout.\n */\n@SinceKotlin(\"1.2\")\n@library(\"doubleToBits\")\npublic actual fun Double.toBits(): Long = definedExternally\n\n/**\n * Returns a bit representation of the specified floating-point value as [Long]\n * according to the IEEE 754 floating-point \"double format\" bit layout,\n * preserving `NaN` values exact layout.\n */\n@SinceKotlin(\"1.2\")\n@library(\"doubleToRawBits\")\npublic actual fun Double.toRawBits(): Long = definedExternally\n\n/**\n * Returns the [Double] value corresponding to a given bit representation.\n */\n@SinceKotlin(\"1.2\")\n@kotlin.internal.InlineOnly\npublic actual inline fun Double.Companion.fromBits(bits: Long): Double = js(\"Kotlin\").doubleFromBits(bits).unsafeCast()\n\n/**\n * Returns a bit representation of the specified floating-point value as [Int]\n * according to the IEEE 754 floating-point \"single format\" bit layout.\n *\n * Note that in Kotlin/JS [Float] range is wider than \"single format\" bit layout can represent,\n * so some [Float] values may overflow, underflow or loose their accuracy after conversion to bits and back.\n */\n@SinceKotlin(\"1.2\")\n@library(\"floatToBits\")\npublic actual fun Float.toBits(): Int = definedExternally\n\n/**\n * Returns a bit representation of the specified floating-point value as [Int]\n * according to the IEEE 754 floating-point \"single format\" bit layout,\n * preserving `NaN` values exact layout.\n *\n * Note that in Kotlin/JS [Float] range is wider than \"single format\" bit layout can represent,\n * so some [Float] values may overflow, underflow or loose their accuracy after conversion to bits and back.\n */\n@SinceKotlin(\"1.2\")\n@library(\"floatToRawBits\")\npublic actual fun Float.toRawBits(): Int = definedExternally\n\n/**\n * Returns the [Float] value corresponding to a given bit representation.\n */\n@SinceKotlin(\"1.2\")\n@kotlin.internal.InlineOnly\npublic actual inline fun Float.Companion.fromBits(bits: Int): Float = js(\"Kotlin\").floatFromBits(bits).unsafeCast()","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\nimport kotlin.internal.LowPriorityInOverloadResolution\n\n/**\n * Exposes the JavaScript [Promise object](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise) to Kotlin.\n */\n@Suppress(\"NOT_DOCUMENTED\")\npublic open external class Promise(executor: (resolve: (T) -> Unit, reject: (Throwable) -> Unit) -> Unit) {\n @LowPriorityInOverloadResolution\n public open fun then(onFulfilled: ((T) -> S)?): Promise\n\n @LowPriorityInOverloadResolution\n public open fun then(onFulfilled: ((T) -> S)?, onRejected: ((Throwable) -> S)?): Promise\n\n public open fun catch(onRejected: (Throwable) -> S): Promise\n\n companion object {\n public fun all(promise: Array>): Promise>\n\n public fun race(promise: Array>): Promise\n\n public fun reject(e: Throwable): Promise\n\n public fun resolve(e: S): Promise\n public fun resolve(e: Promise): Promise\n }\n}\n\n// It's workaround for KT-19672 since we can fix it properly until KT-11265 isn't fixed.\ninline fun Promise>.then(\n noinline onFulfilled: ((T) -> S)?\n): Promise {\n return this.unsafeCast>().then(onFulfilled)\n}\n\ninline fun Promise>.then(\n noinline onFulfilled: ((T) -> S)?,\n noinline onRejected: ((Throwable) -> S)?\n): Promise {\n return this.unsafeCast>().then(onFulfilled, onRejected)\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.random\n\nimport kotlin.math.pow\n\ninternal actual fun defaultPlatformRandom(): Random =\n Random(js(\"(Math.random() * Math.pow(2, 32)) | 0\").unsafeCast())\n\n\ninternal actual fun fastLog2(value: Int): Int {\n // TODO: not so fast, make faster\n var v = value\n var log = -1\n while (v != 0) {\n v = v.ushr(1)\n log++\n }\n return log\n}\n\nprivate val INV_2_26: Double = 2.0.pow(-26)\nprivate val INV_2_53: Double = 2.0.pow(-53)\ninternal actual fun doubleFromParts(hi26: Int, low27: Int): Double =\n hi26 * INV_2_26 + low27 * INV_2_53","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\nimport getKClass\nimport kotlin.reflect.KClass\nimport kotlin.reflect.js.internal.KClassImpl\n\n/**\n * Represents the constructor of a class. Instances of `JsClass` can be passed to JavaScript APIs that expect a constructor reference.\n */\nexternal interface JsClass {\n /**\n * Returns the unqualified name of the class represented by this instance.\n */\n val name: String\n}\n\n@Deprecated(\"Use class literal and extension property `js` instead.\", replaceWith = ReplaceWith(\"T::class.js\"), level = DeprecationLevel.ERROR)\nexternal fun jsClass(): JsClass\n\n@Deprecated(\"Use class literal and extension property `js` instead.\", replaceWith = ReplaceWith(\"this::class.js\"), level = DeprecationLevel.ERROR)\nval T.jsClass: JsClass\n get() = when (jsTypeOf(this)) {\n \"string\" -> js(\"String\")\n \"number\" -> js(\"Number\")\n \"boolean\" -> js(\"Boolean\")\n else -> js(\"Object\").getPrototypeOf(this).constructor\n }\n\n/**\n * Obtains a constructor reference for the given `KClass`.\n */\nval KClass.js: JsClass\n get() = (this as KClassImpl).jClass\n\n/**\n * Obtains a `KClass` instance for the given constructor reference.\n */\nval JsClass.kotlin: KClass\n get() = getKClass(this)\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.reflect.js.internal\n\nimport kotlin.reflect.*\n\ninternal abstract class KClassImpl(\n internal open val jClass: JsClass\n) : KClass {\n override val annotations: List\n get() = TODO()\n override val constructors: Collection>\n get() = TODO()\n override val isAbstract: Boolean\n get() = TODO()\n override val isCompanion: Boolean\n get() = TODO()\n override val isData: Boolean\n get() = TODO()\n override val isFinal: Boolean\n get() = TODO()\n override val isInner: Boolean\n get() = TODO()\n override val isOpen: Boolean\n get() = TODO()\n override val isSealed: Boolean\n get() = TODO()\n override val members: Collection>\n get() = TODO()\n override val nestedClasses: Collection>\n get() = TODO()\n override val objectInstance: T?\n get() = TODO()\n override val qualifiedName: String?\n get() = TODO()\n override val supertypes: List\n get() = TODO()\n override val typeParameters: List\n get() = TODO()\n override val sealedSubclasses: List>\n get() = TODO()\n override val visibility: KVisibility?\n get() = TODO()\n\n override fun equals(other: Any?): Boolean {\n return other is KClassImpl<*> && jClass == other.jClass\n }\n\n // TODO: use FQN\n override fun hashCode(): Int = simpleName?.hashCode() ?: 0\n\n override fun toString(): String {\n // TODO: use FQN\n return \"class $simpleName\"\n }\n}\n\ninternal class SimpleKClassImpl(jClass: JsClass) : KClassImpl(jClass) {\n override val simpleName: String? = jClass.asDynamic().`$metadata$`?.simpleName.unsafeCast()\n\n override fun isInstance(value: Any?): Boolean {\n return jsIsType(value, jClass)\n }\n}\n\ninternal class PrimitiveKClassImpl(\n jClass: JsClass,\n private val givenSimpleName: String,\n private val isInstanceFunction: (Any?) -> Boolean\n) : KClassImpl(jClass) {\n override fun equals(other: Any?): Boolean {\n if (other !is PrimitiveKClassImpl<*>) return false\n return super.equals(other) && givenSimpleName == other.givenSimpleName\n }\n\n override val simpleName: String? get() = givenSimpleName\n\n override fun isInstance(value: Any?): Boolean {\n return isInstanceFunction(value)\n }\n}\n\ninternal object NothingKClassImpl : KClassImpl(js(\"Object\")) {\n override val simpleName: String = \"Nothing\"\n\n override fun isInstance(value: Any?): Boolean = false\n\n override val jClass: JsClass\n get() = throw UnsupportedOperationException(\"There's no native JS class for Nothing type\")\n\n override fun equals(other: Any?): Boolean = other === this\n\n override fun hashCode(): Int = 0\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.reflect.js.internal\n\nimport kotlin.js.JsClass\n\n@JsName(\"PrimitiveClasses\")\ninternal object PrimitiveClasses {\n @JsName(\"anyClass\")\n val anyClass = PrimitiveKClassImpl(js(\"Object\").unsafeCast>(), \"Any\", { it is Any })\n\n @JsName(\"numberClass\")\n val numberClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Number\", { it is Number })\n\n @JsName(\"nothingClass\")\n val nothingClass = NothingKClassImpl\n\n @JsName(\"booleanClass\")\n val booleanClass = PrimitiveKClassImpl(js(\"Boolean\").unsafeCast>(), \"Boolean\", { it is Boolean })\n\n @JsName(\"byteClass\")\n val byteClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Byte\", { it is Byte })\n\n @JsName(\"shortClass\")\n val shortClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Short\", { it is Short })\n\n @JsName(\"intClass\")\n val intClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Int\", { it is Int })\n\n @JsName(\"floatClass\")\n val floatClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Float\", { it is Float })\n\n @JsName(\"doubleClass\")\n val doubleClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Double\", { it is Double })\n\n @JsName(\"arrayClass\")\n val arrayClass = PrimitiveKClassImpl(js(\"Array\").unsafeCast>>(), \"Array\", { it is Array<*> })\n\n @JsName(\"stringClass\")\n val stringClass = PrimitiveKClassImpl(js(\"String\").unsafeCast>(), \"String\", { it is String })\n\n @JsName(\"throwableClass\")\n val throwableClass = PrimitiveKClassImpl(js(\"Error\").unsafeCast>(), \"Throwable\", { it is Throwable })\n\n @JsName(\"booleanArrayClass\")\n val booleanArrayClass = PrimitiveKClassImpl(js(\"Array\").unsafeCast>(), \"BooleanArray\", { it is BooleanArray })\n\n @JsName(\"charArrayClass\")\n val charArrayClass = PrimitiveKClassImpl(js(\"Uint16Array\").unsafeCast>(), \"CharArray\", { it is CharArray })\n\n @JsName(\"byteArrayClass\")\n val byteArrayClass = PrimitiveKClassImpl(js(\"Int8Array\").unsafeCast>(), \"ByteArray\", { it is ByteArray })\n\n @JsName(\"shortArrayClass\")\n val shortArrayClass = PrimitiveKClassImpl(js(\"Int16Array\").unsafeCast>(), \"ShortArray\", { it is ShortArray })\n\n @JsName(\"intArrayClass\")\n val intArrayClass = PrimitiveKClassImpl(js(\"Int32Array\").unsafeCast>(), \"IntArray\", { it is IntArray })\n\n @JsName(\"longArrayClass\")\n val longArrayClass = PrimitiveKClassImpl(js(\"Array\").unsafeCast>(), \"LongArray\", { it is LongArray })\n\n @JsName(\"floatArrayClass\")\n val floatArrayClass = PrimitiveKClassImpl(js(\"Float32Array\").unsafeCast>(), \"FloatArray\", { it is FloatArray })\n\n @JsName(\"doubleArrayClass\")\n val doubleArrayClass = PrimitiveKClassImpl(js(\"Float64Array\").unsafeCast>(), \"DoubleArray\", { it is DoubleArray })\n\n @JsName(\"functionClass\")\n fun functionClass(arity: Int): KClassImpl {\n return functionClasses.get(arity) ?: run {\n val result = PrimitiveKClassImpl(js(\"Function\").unsafeCast>(), \"Function$arity\",\n { jsTypeOf(it) === \"function\" && it.asDynamic().length === arity })\n functionClasses.asDynamic()[arity] = result\n result\n }\n }\n}\n\nprivate val functionClasses = arrayOfNulls>(0)","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// a package is omitted to get declarations directly under the module\n\nimport kotlin.reflect.KClass\nimport kotlin.reflect.js.internal.*\n\n@JsName(\"getKClass\")\ninternal fun getKClass(jClass: JsClass): KClass = getOrCreateKClass(jClass)\n\n@JsName(\"getKClassFromExpression\")\ninternal fun getKClassFromExpression(e: T): KClass =\n when (jsTypeOf(e)) {\n \"string\" -> PrimitiveClasses.stringClass\n \"number\" -> if (jsBitwiseOr(e, 0).asDynamic() === e) PrimitiveClasses.intClass else PrimitiveClasses.doubleClass\n \"boolean\" -> PrimitiveClasses.booleanClass\n \"function\" -> PrimitiveClasses.functionClass(e.asDynamic().length)\n else -> {\n when {\n e is BooleanArray -> PrimitiveClasses.booleanArrayClass\n e is CharArray -> PrimitiveClasses.charArrayClass\n e is ByteArray -> PrimitiveClasses.byteArrayClass\n e is ShortArray -> PrimitiveClasses.shortArrayClass\n e is IntArray -> PrimitiveClasses.intArrayClass\n e is LongArray -> PrimitiveClasses.longArrayClass\n e is FloatArray -> PrimitiveClasses.floatArrayClass\n e is DoubleArray -> PrimitiveClasses.doubleArrayClass\n e is KClass<*> -> KClass::class\n e is Array<*> -> PrimitiveClasses.arrayClass\n else -> {\n val constructor = js(\"Object\").getPrototypeOf(e).constructor\n when {\n constructor === js(\"Object\") -> PrimitiveClasses.anyClass\n constructor === js(\"Error\") -> PrimitiveClasses.throwableClass\n else -> {\n val jsClass: JsClass = constructor\n getOrCreateKClass(jsClass)\n }\n }\n }\n }\n }\n }.unsafeCast>()\n\nprivate fun getOrCreateKClass(jClass: JsClass): KClass {\n if (jClass === js(\"String\")) return PrimitiveClasses.stringClass.unsafeCast>()\n\n val metadata = jClass.asDynamic().`$metadata$`\n\n return if (metadata != null) {\n if (metadata.`$kClass$` == null) {\n val kClass = SimpleKClassImpl(jClass)\n metadata.`$kClass$` = kClass\n kClass\n } else {\n metadata.`$kClass$`\n }\n } else {\n SimpleKClassImpl(jClass)\n }\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\n/**\n * Exposes the JavaScript [RegExp object](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp) to Kotlin.\n */\n@Suppress(\"NOT_DOCUMENTED\")\npublic external class RegExp(pattern: String, flags: String? = definedExternally) {\n\n public fun test(str: String): Boolean\n\n public fun exec(str: String): RegExpMatch?\n\n public override fun toString(): String\n\n /**\n * The lastIndex is a read/write integer property of regular expressions that specifies the index at which to start the next match.\n */\n public var lastIndex: Int\n\n public val global: Boolean\n public val ignoreCase: Boolean\n public val multiline: Boolean\n}\n\n/**\n * Resets the regular expression so that subsequent [RegExp.test] and [RegExp.exec] calls will match starting with the beginning of the input string.\n */\npublic fun RegExp.reset() {\n lastIndex = 0\n}\n\n// TODO: Inherit from array or introduce asArray() extension\n/**\n * Represents the return value of [RegExp.exec].\n */\n@Suppress(\"NOT_DOCUMENTED\")\npublic external interface RegExpMatch {\n public val index: Int\n public val input: String\n public val length: Int\n}\n\n/**\n * Returns the entire text matched by [RegExp.exec] if the [index] parameter is 0, or the text matched by the capturing parenthesis\n * at the given index.\n */\npublic inline operator fun RegExpMatch.get(index: Int): String? = asDynamic()[index]\n\n/**\n * Converts the result of [RegExp.exec] to an array where the first element contains the entire matched text and each subsequent\n * element is the text matched by each capturing parenthesis.\n */\npublic inline fun RegExpMatch.asArray(): Array = unsafeCast>()\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.sequences\n\ninternal actual class ConstrainedOnceSequence actual constructor(sequence: Sequence) : Sequence {\n private var sequenceRef: Sequence? = sequence\n\n actual override fun iterator(): Iterator {\n val sequence = sequenceRef ?: throw IllegalStateException(\"This sequence can be consumed only once.\")\n sequenceRef = null\n return sequence.iterator()\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\n// actually \\s is enough to match all whitespace, but \\xA0 added because of different regexp behavior of Rhino used in Selenium tests\npublic actual fun Char.isWhitespace(): Boolean = toString().matches(\"[\\\\s\\\\xA0]\")\n\n@kotlin.internal.InlineOnly\npublic actual inline fun Char.toLowerCase(): Char = js(\"String.fromCharCode\")(toInt()).toLowerCase().charCodeAt(0).unsafeCast().toChar()\n\n@kotlin.internal.InlineOnly\npublic actual inline fun Char.toUpperCase(): Char = js(\"String.fromCharCode\")(toInt()).toUpperCase().charCodeAt(0).unsafeCast().toChar()\n\n/**\n * Returns `true` if this character is a Unicode high-surrogate code unit (also known as leading-surrogate code unit).\n */\npublic actual fun Char.isHighSurrogate(): Boolean = this in Char.MIN_HIGH_SURROGATE..Char.MAX_HIGH_SURROGATE\n\n/**\n * Returns `true` if this character is a Unicode low-surrogate code unit (also known as trailing-surrogate code unit).\n */\npublic actual fun Char.isLowSurrogate(): Boolean = this in Char.MIN_LOW_SURROGATE..Char.MAX_LOW_SURROGATE\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\n\n/**\n * Returns `true` if the contents of this string is equal to the word \"true\", ignoring case, and `false` otherwise.\n */\npublic actual fun String.toBoolean(): Boolean = toLowerCase() == \"true\"\n\n/**\n * Parses the string as a signed [Byte] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\npublic actual fun String.toByte(): Byte = toByteOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a signed [Byte] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\npublic actual fun String.toByte(radix: Int): Byte = toByteOrNull(radix) ?: numberFormatError(this)\n\n\n/**\n * Parses the string as a [Short] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\npublic actual fun String.toShort(): Short = toShortOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a [Short] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\npublic actual fun String.toShort(radix: Int): Short = toShortOrNull(radix) ?: numberFormatError(this)\n\n/**\n * Parses the string as an [Int] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\npublic actual fun String.toInt(): Int = toIntOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as an [Int] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\npublic actual fun String.toInt(radix: Int): Int = toIntOrNull(radix) ?: numberFormatError(this)\n\n/**\n * Parses the string as a [Long] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\npublic actual fun String.toLong(): Long = toLongOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a [Long] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\npublic actual fun String.toLong(radix: Int): Long = toLongOrNull(radix) ?: numberFormatError(this)\n\n/**\n * Parses the string as a [Double] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\npublic actual fun String.toDouble(): Double = (+(this.asDynamic())).unsafeCast().also {\n if (it.isNaN() && !this.isNaN() || it == 0.0 && this.isBlank())\n numberFormatError(this)\n}\n\n/**\n * Parses the string as a [Float] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toFloat(): Float = toDouble().unsafeCast()\n\n/**\n * Parses the string as a [Double] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\npublic actual fun String.toDoubleOrNull(): Double? = (+(this.asDynamic())).unsafeCast().takeIf {\n !(it.isNaN() && !this.isNaN() || it == 0.0 && this.isBlank())\n}\n\n/**\n * Parses the string as a [Float] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toFloatOrNull(): Float? = toDoubleOrNull().unsafeCast()\n\n/**\n * Returns a string representation of this [Byte] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.2\")\n@kotlin.internal.InlineOnly\npublic actual inline fun Byte.toString(radix: Int): String = this.toInt().toString(radix)\n\n/**\n * Returns a string representation of this [Short] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.2\")\n@kotlin.internal.InlineOnly\npublic actual inline fun Short.toString(radix: Int): String = this.toInt().toString(radix)\n\n/**\n * Returns a string representation of this [Long] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Long.toString(radix: Int): String = asDynamic().toString(checkRadix(radix))\n\n/**\n * Returns a string representation of this [Int] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Int.toString(radix: Int): String = asDynamic().toString(checkRadix(radix))\n\nprivate fun String.isNaN(): Boolean = when (this.toLowerCase()) {\n \"nan\", \"+nan\", \"-nan\" -> true\n else -> false\n}\n\n/**\n * Checks whether the given [radix] is valid radix for string to number and number to string conversion.\n */\n@PublishedApi\ninternal actual fun checkRadix(radix: Int): Int {\n if (radix !in 2..36) {\n throw IllegalArgumentException(\"radix $radix was not in valid range 2..36\")\n }\n return radix\n}\n\ninternal actual fun digitOf(char: Char, radix: Int): Int = when {\n char >= '0' && char <= '9' -> char - '0'\n char >= 'A' && char <= 'Z' -> char - 'A' + 10\n char >= 'a' && char <= 'z' -> char - 'a' + 10\n else -> -1\n}.let { if (it >= radix) -1 else it }\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\nimport kotlin.js.RegExp\n\n/**\n * Provides enumeration values to use to set regular expression options.\n */\npublic actual enum class RegexOption(val value: String) {\n /** Enables case-insensitive matching. */\n IGNORE_CASE(\"i\"),\n /** Enables multiline mode.\n *\n * In multiline mode the expressions `^` and `$` match just after or just before,\n * respectively, a line terminator or the end of the input sequence. */\n MULTILINE(\"m\")\n}\n\n\n/**\n * Represents the results from a single capturing group within a [MatchResult] of [Regex].\n *\n * @param value The value of captured group.\n */\npublic actual data class MatchGroup(actual val value: String)\n\n\n/**\n * Represents a compiled regular expression.\n * Provides functions to match strings in text with a pattern, replace the found occurrences and split text around matches.\n *\n * For pattern syntax reference see [MDN RegExp](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#Special_characters_meaning_in_regular_expressions)\n * and [http://www.w3schools.com/jsref/jsref_obj_regexp.asp](https://www.w3schools.com/jsref/jsref_obj_regexp.asp).\n *\n * @constructor Creates a regular expression from the specified [pattern] string and the specified set of [options].\n */\npublic actual class Regex actual constructor(pattern: String, options: Set) {\n\n /** Creates a regular expression from the specified [pattern] string and the specified single [option]. */\n public actual constructor(pattern: String, option: RegexOption) : this(pattern, setOf(option))\n\n /** Creates a regular expression from the specified [pattern] string and the default options. */\n public actual constructor(pattern: String) : this(pattern, emptySet())\n\n\n /** The pattern string of this regular expression. */\n public actual val pattern: String = pattern\n /** The set of options that were used to create this regular expression. */\n public actual val options: Set = options.toSet()\n private val nativePattern: RegExp = RegExp(pattern, options.map { it.value }.joinToString(separator = \"\") + \"g\")\n\n /** Indicates whether the regular expression matches the entire [input]. */\n public actual infix fun matches(input: CharSequence): Boolean {\n nativePattern.reset()\n val match = nativePattern.exec(input.toString())\n return match != null && match.index == 0 && nativePattern.lastIndex == input.length\n }\n\n /** Indicates whether the regular expression can find at least one match in the specified [input]. */\n public actual fun containsMatchIn(input: CharSequence): Boolean {\n nativePattern.reset()\n return nativePattern.test(input.toString())\n }\n\n /** Returns the first match of a regular expression in the [input], beginning at the specified [startIndex].\n *\n * @param startIndex An index to start search with, by default 0. Must be not less than zero and not greater than `input.length()`\n * @return An instance of [MatchResult] if match was found or `null` otherwise.\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n public actual fun find(input: CharSequence, startIndex: Int = 0): MatchResult? = nativePattern.findNext(input.toString(), startIndex)\n\n /**\n * Returns a sequence of all occurrences of a regular expression within the [input] string, beginning at the specified [startIndex].\n *\n * @sample samples.text.Regexps.findAll\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n public actual fun findAll(input: CharSequence, startIndex: Int = 0): Sequence =\n generateSequence({ find(input, startIndex) }, { match -> match.next() })\n\n /**\n * Attempts to match the entire [input] CharSequence against the pattern.\n *\n * @return An instance of [MatchResult] if the entire input matches or `null` otherwise.\n */\n public actual fun matchEntire(input: CharSequence): MatchResult? {\n if (pattern.startsWith('^') && pattern.endsWith('$'))\n return find(input)\n else\n return Regex(\"^${pattern.trimStart('^').trimEnd('$')}$\", options).find(input)\n }\n\n /**\n * Replaces all occurrences of this regular expression in the specified [input] string with specified [replacement] expression.\n *\n * @param replacement A replacement expression that can include substitutions. See [String.prototype.replace](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace) function docs for details.\n */\n public actual fun replace(input: CharSequence, replacement: String): String = input.toString().nativeReplace(nativePattern, replacement)\n\n /**\n * Replaces all occurrences of this regular expression in the specified [input] string with the result of\n * the given function [transform] that takes [MatchResult] and returns a string to be used as a\n * replacement for that match.\n */\n public actual inline fun replace(input: CharSequence, transform: (MatchResult) -> CharSequence): String {\n var match = find(input)\n if (match == null) return input.toString()\n\n var lastStart = 0\n val length = input.length\n val sb = StringBuilder(length)\n do {\n val foundMatch = match!!\n sb.append(input, lastStart, foundMatch.range.start)\n sb.append(transform(foundMatch))\n lastStart = foundMatch.range.endInclusive + 1\n match = foundMatch.next()\n } while (lastStart < length && match != null)\n\n if (lastStart < length) {\n sb.append(input, lastStart, length)\n }\n\n return sb.toString()\n }\n\n /**\n * Replaces the first occurrence of this regular expression in the specified [input] string with specified [replacement] expression.\n *\n * @param replacement A replacement expression that can include substitutions. See [String.prototype.replace](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace) function docs for details.\n */\n public actual fun replaceFirst(input: CharSequence, replacement: String): String {\n val nonGlobalOptions = options.map { it.value }.joinToString(separator = \"\")\n return input.toString().nativeReplace(RegExp(pattern, nonGlobalOptions), replacement)\n }\n\n /**\n * Splits the [input] CharSequence around matches of this regular expression.\n *\n * @param limit Non-negative value specifying the maximum number of substrings the string can be split to.\n * Zero by default means no limit is set.\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n public actual fun split(input: CharSequence, limit: Int = 0): List {\n require(limit >= 0) { \"Limit must be non-negative, but was $limit\" }\n val matches = findAll(input).let { if (limit == 0) it else it.take(limit - 1) }\n val result = mutableListOf()\n var lastStart = 0\n\n for (match in matches) {\n result.add(input.subSequence(lastStart, match.range.start).toString())\n lastStart = match.range.endInclusive + 1\n }\n result.add(input.subSequence(lastStart, input.length).toString())\n return result\n }\n\n\n /**\n * Returns the string representation of this regular expression, namely the [pattern] of this regular expression.\n *\n * Note that another regular expression constructed from the same pattern string may have different [options]\n * and may match strings differently.\n */\n public override fun toString(): String = nativePattern.toString()\n\n actual companion object {\n /**\n * Returns a regular expression that matches the specified [literal] string literally.\n * No characters of that string will have special meaning when searching for an occurrence of the regular expression.\n */\n public actual fun fromLiteral(literal: String): Regex = Regex(escape(literal))\n\n /**\n * Returns a regular expression pattern string that matches the specified [literal] string literally.\n * No characters of that string will have special meaning when searching for an occurrence of the regular expression.\n */\n public actual fun escape(literal: String): String = literal.nativeReplace(patternEscape, \"\\\\$&\")\n\n /**\n * Returns a literal replacement expression for the specified [literal] string.\n * No characters of that string will have special meaning when it is used as a replacement string in [Regex.replace] function.\n */\n public actual fun escapeReplacement(literal: String): String = literal.nativeReplace(replacementEscape, \"$$$$\")\n\n private val patternEscape = RegExp(\"\"\"[-\\\\^$*+?.()|[\\]{}]\"\"\", \"g\")\n private val replacementEscape = RegExp(\"\"\"\\$\"\"\", \"g\")\n }\n}\n\n/** Creates a regular expression from the specified [pattern] string and the specified single [option]. */\n@Deprecated(\"Provided for binary compatibility\", level = DeprecationLevel.HIDDEN)\n@JsName(\"Regex_sb3q2\\$\")\npublic fun Regex_0(pattern: String, option: RegexOption): Regex = Regex(pattern, setOf(option))\n\n/** Creates a regular expression from the specified [pattern] string and the default options. */\n@Deprecated(\"Provided for binary compatibility\", level = DeprecationLevel.HIDDEN)\n@JsName(\"Regex_61zpoe\\$\")\npublic fun Regex_1(pattern: String): Regex = Regex(pattern, emptySet())\n\n\n\n\nprivate fun RegExp.findNext(input: String, from: Int): MatchResult? {\n this.lastIndex = from\n val match = exec(input)\n if (match == null) return null\n val range = match.index..lastIndex - 1\n\n return object : MatchResult {\n override val range: IntRange = range\n override val value: String\n get() = match[0]!!\n\n override val groups: MatchGroupCollection = object : MatchGroupCollection, AbstractCollection() {\n override val size: Int get() = match.length\n override fun iterator(): Iterator = indices.asSequence().map { this[it] }.iterator()\n override fun get(index: Int): MatchGroup? = match[index]?.let { MatchGroup(it) }\n }\n\n\n private var groupValues_: List? = null\n\n override val groupValues: List\n get() {\n if (groupValues_ == null) {\n groupValues_ = object : AbstractList() {\n override val size: Int get() = match.length\n override fun get(index: Int): String = match[index] ?: \"\"\n }\n }\n return groupValues_!!\n }\n\n override fun next(): MatchResult? = this@findNext.findNext(input, if (range.isEmpty()) range.start + 1 else range.endInclusive + 1)\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\nimport kotlin.js.RegExp\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeIndexOf(ch: Char, fromIndex: Int): Int = nativeIndexOf(ch.toString(), fromIndex)\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeLastIndexOf(ch: Char, fromIndex: Int): Int = nativeLastIndexOf(ch.toString(), fromIndex)\n\n/**\n * Returns `true` if this string starts with the specified prefix.\n */\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.startsWith(prefix: String, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase)\n return nativeStartsWith(prefix, 0)\n else\n return regionMatches(0, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if a substring of this string starting at the specified offset [startIndex] starts with the specified prefix.\n */\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.startsWith(prefix: String, startIndex: Int, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase)\n return nativeStartsWith(prefix, startIndex)\n else\n return regionMatches(startIndex, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if this string ends with the specified suffix.\n */\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.endsWith(suffix: String, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase)\n return nativeEndsWith(suffix)\n else\n return regionMatches(length - suffix.length, suffix, 0, suffix.length, ignoreCase)\n}\n\n\npublic fun String.matches(regex: String): Boolean {\n val result = this.match(regex)\n return result != null && result.size != 0\n}\n\npublic actual fun CharSequence.isBlank(): Boolean = length == 0 || (if (this is String) this else this.toString()).matches(\"^[\\\\s\\\\xA0]+$\")\n\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String?.equals(other: String?, ignoreCase: Boolean = false): Boolean =\n if (this == null)\n other == null\n else if (!ignoreCase)\n this == other\n else\n other != null && this.toLowerCase() == other.toLowerCase()\n\n\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun CharSequence.regionMatches(thisOffset: Int, other: CharSequence, otherOffset: Int, length: Int, ignoreCase: Boolean = false): Boolean =\n regionMatchesImpl(thisOffset, other, otherOffset, length, ignoreCase)\n\n\n/**\n * Returns a copy of this string having its first letter uppercased, or the original string,\n * if it's empty or already starts with an upper case letter.\n *\n * @sample samples.text.Strings.capitalize\n */\npublic actual fun String.capitalize(): String {\n return if (isNotEmpty()) substring(0, 1).toUpperCase() + substring(1) else this\n}\n\n/**\n * Returns a copy of this string having its first letter lowercased, or the original string,\n * if it's empty or already starts with a lower case letter.\n *\n * @sample samples.text.Strings.decapitalize\n */\npublic actual fun String.decapitalize(): String {\n return if (isNotEmpty()) substring(0, 1).toLowerCase() + substring(1) else this\n}\n\n/**\n * Returns a string containing this char sequence repeated [n] times.\n * @throws [IllegalArgumentException] when n < 0.\n */\npublic actual fun CharSequence.repeat(n: Int): String {\n require(n >= 0) { \"Count 'n' must be non-negative, but was $n.\" }\n return when (n) {\n 0 -> \"\"\n 1 -> this.toString()\n else -> {\n var result = \"\"\n if (!isEmpty()) {\n var s = this.toString()\n var count = n\n while (true) {\n if ((count and 1) == 1) {\n result += s\n }\n count = count ushr 1\n if (count == 0) {\n break\n }\n s += s\n }\n }\n return result\n }\n }\n}\n\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.replace(oldValue: String, newValue: String, ignoreCase: Boolean = false): String =\n nativeReplace(RegExp(Regex.escape(oldValue), if (ignoreCase) \"gi\" else \"g\"), Regex.escapeReplacement(newValue))\n\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.replace(oldChar: Char, newChar: Char, ignoreCase: Boolean = false): String =\n nativeReplace(RegExp(Regex.escape(oldChar.toString()), if (ignoreCase) \"gi\" else \"g\"), newChar.toString())\n\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.replaceFirst(oldValue: String, newValue: String, ignoreCase: Boolean = false): String =\n nativeReplace(RegExp(Regex.escape(oldValue), if (ignoreCase) \"i\" else \"\"), Regex.escapeReplacement(newValue))\n\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.replaceFirst(oldChar: Char, newChar: Char, ignoreCase: Boolean = false): String =\n nativeReplace(RegExp(Regex.escape(oldChar.toString()), if (ignoreCase) \"i\" else \"\"), newChar.toString())\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\n\npublic actual interface Appendable {\n public actual fun append(csq: CharSequence?): Appendable\n public actual fun append(csq: CharSequence?, start: Int, end: Int): Appendable\n public actual fun append(c: Char): Appendable\n}\n\npublic actual class StringBuilder(content: String = \"\") : Appendable, CharSequence {\n actual constructor(capacity: Int) : this() {}\n\n actual constructor(content: CharSequence) : this(content.toString()) {}\n\n actual constructor() : this(\"\")\n\n private var string: String = content\n\n actual override val length: Int\n get() = string.asDynamic().length\n\n actual override fun get(index: Int): Char =\n string.getOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, length: $length}\") }\n\n actual override fun subSequence(startIndex: Int, endIndex: Int): CharSequence = string.substring(startIndex, endIndex)\n\n actual override fun append(c: Char): StringBuilder {\n string += c\n return this\n }\n\n actual override fun append(csq: CharSequence?): StringBuilder {\n string += csq.toString()\n return this\n }\n\n actual override fun append(csq: CharSequence?, start: Int, end: Int): StringBuilder {\n string += csq.toString().substring(start, end)\n return this\n }\n\n actual fun append(obj: Any?): StringBuilder {\n string += obj.toString()\n return this\n }\n\n actual fun reverse(): StringBuilder {\n string = string.asDynamic().split(\"\").reverse().join(\"\")\n return this\n }\n\n /**\n * Clears the content of this string builder making it empty.\n *\n * @sample samples.text.Strings.clearStringBuilder\n */\n @SinceKotlin(\"1.3\")\n public fun clear(): StringBuilder {\n string = \"\"\n return this\n }\n\n override fun toString(): String = string\n}\n\n\n\n/**\n * Clears the content of this string builder making it empty.\n *\n * @sample samples.text.Strings.clearStringBuilder\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline fun StringBuilder.clear(): StringBuilder = this.clear()\n\n\n/**\n * The exception thrown when a character encoding or decoding error occurs.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual open class CharacterCodingException(message: String?) : Exception(message) {\n actual constructor() : this(null)\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\n/** Returns the negative [size] if [throwOnMalformed] is false, throws [CharacterCodingException] otherwise. */\n@UseExperimental(ExperimentalStdlibApi::class)\nprivate fun malformed(size: Int, index: Int, throwOnMalformed: Boolean): Int {\n if (throwOnMalformed) throw CharacterCodingException(\"Malformed sequence starting at ${index - 1}\")\n return -size\n}\n\n/**\n * Returns code point corresponding to UTF-16 surrogate pair,\n * where the first of the pair is the [high] and the second is in the [string] at the [index].\n * Returns zero if the pair is malformed and [throwOnMalformed] is false.\n *\n * @throws CharacterCodingException if the pair is malformed and [throwOnMalformed] is true.\n */\nprivate fun codePointFromSurrogate(string: String, high: Int, index: Int, endIndex: Int, throwOnMalformed: Boolean): Int {\n if (high !in 0xD800..0xDBFF || index >= endIndex) {\n return malformed(0, index, throwOnMalformed)\n }\n val low = string[index].toInt()\n if (low !in 0xDC00..0xDFFF) {\n return malformed(0, index, throwOnMalformed)\n }\n return 0x10000 + ((high and 0x3FF) shl 10) or (low and 0x3FF)\n}\n\n/**\n * Returns code point corresponding to UTF-8 sequence of two bytes,\n * where the first byte of the sequence is the [byte1] and the second byte is in the [bytes] array at the [index].\n * Returns zero if the sequence is malformed and [throwOnMalformed] is false.\n *\n * @throws CharacterCodingException if the sequence of two bytes is malformed and [throwOnMalformed] is true.\n */\nprivate fun codePointFrom2(bytes: ByteArray, byte1: Int, index: Int, endIndex: Int, throwOnMalformed: Boolean): Int {\n if (byte1 and 0x1E == 0 || index >= endIndex) {\n return malformed(0, index, throwOnMalformed)\n }\n val byte2 = bytes[index].toInt()\n if (byte2 and 0xC0 != 0x80) {\n return malformed(0, index, throwOnMalformed)\n }\n return (byte1 shl 6) xor byte2 xor 0xF80\n}\n\n/**\n * Returns code point corresponding to UTF-8 sequence of three bytes,\n * where the first byte of the sequence is the [byte1] and the others are in the [bytes] array starting from the [index].\n * Returns a non-positive value indicating number of bytes from [bytes] included in malformed sequence\n * if the sequence is malformed and [throwOnMalformed] is false.\n *\n * @throws CharacterCodingException if the sequence of three bytes is malformed and [throwOnMalformed] is true.\n */\nprivate fun codePointFrom3(bytes: ByteArray, byte1: Int, index: Int, endIndex: Int, throwOnMalformed: Boolean): Int {\n if (index >= endIndex) {\n return malformed(0, index, throwOnMalformed)\n }\n\n val byte2 = bytes[index].toInt()\n if (byte1 and 0xF == 0) {\n if (byte2 and 0xE0 != 0xA0) {\n // Non-shortest form\n return malformed(0, index, throwOnMalformed)\n }\n } else if (byte1 and 0xF == 0xD) {\n if (byte2 and 0xE0 != 0x80) {\n // Surrogate code point\n return malformed(0, index, throwOnMalformed)\n }\n } else if (byte2 and 0xC0 != 0x80) {\n return malformed(0, index, throwOnMalformed)\n }\n\n if (index + 1 == endIndex) {\n return malformed(1, index, throwOnMalformed)\n }\n val byte3 = bytes[index + 1].toInt()\n if (byte3 and 0xC0 != 0x80) {\n return malformed(1, index, throwOnMalformed)\n }\n\n return (byte1 shl 12) xor (byte2 shl 6) xor byte3 xor -0x1E080\n}\n\n/**\n * Returns code point corresponding to UTF-8 sequence of four bytes,\n * where the first byte of the sequence is the [byte1] and the others are in the [bytes] array starting from the [index].\n * Returns a non-positive value indicating number of bytes from [bytes] included in malformed sequence\n * if the sequence is malformed and [throwOnMalformed] is false.\n *\n * @throws CharacterCodingException if the sequence of four bytes is malformed and [throwOnMalformed] is true.\n */\nprivate fun codePointFrom4(bytes: ByteArray, byte1: Int, index: Int, endIndex: Int, throwOnMalformed: Boolean): Int {\n if (index >= endIndex) {\n malformed(0, index, throwOnMalformed)\n }\n\n val byte2 = bytes[index].toInt()\n if (byte1 and 0xF == 0x0) {\n if (byte2 and 0xF0 <= 0x80) {\n // Non-shortest form\n return malformed(0, index, throwOnMalformed)\n }\n } else if (byte1 and 0xF == 0x4) {\n if (byte2 and 0xF0 != 0x80) {\n // Out of Unicode code points domain (larger than U+10FFFF)\n return malformed(0, index, throwOnMalformed)\n }\n } else if (byte1 and 0xF > 0x4) {\n return malformed(0, index, throwOnMalformed)\n } else if (byte2 and 0xC0 != 0x80) {\n return malformed(0, index, throwOnMalformed)\n }\n\n if (index + 1 == endIndex) {\n return malformed(1, index, throwOnMalformed)\n }\n val byte3 = bytes[index + 1].toInt()\n if (byte3 and 0xC0 != 0x80) {\n return malformed(1, index, throwOnMalformed)\n }\n\n if (index + 2 == endIndex) {\n return malformed(2, index, throwOnMalformed)\n }\n val byte4 = bytes[index + 2].toInt()\n if (byte4 and 0xC0 != 0x80) {\n return malformed(2, index, throwOnMalformed)\n }\n return (byte1 shl 18) xor (byte2 shl 12) xor (byte3 shl 6) xor byte4 xor 0x381F80\n}\n\n/**\n * Maximum number of bytes needed to encode a single char.\n *\n * Code points in `0..0x7F` are encoded in a single byte.\n * Code points in `0x80..0x7FF` are encoded in two bytes.\n * Code points in `0x800..0xD7FF` or in `0xE000..0xFFFF` are encoded in three bytes.\n * Surrogate code points in `0xD800..0xDFFF` are not Unicode scalar values, therefore aren't encoded.\n * Code points in `0x10000..0x10FFFF` are represented by a pair of surrogate `Char`s and are encoded in four bytes.\n */\nprivate const val MAX_BYTES_PER_CHAR = 3\n\n/**\n * The byte sequence a malformed UTF-16 char sequence is replaced by.\n */\nprivate val REPLACEMENT_BYTE_SEQUENCE: ByteArray = byteArrayOf(0xEF.toByte(), 0xBF.toByte(), 0xBD.toByte())\n\n/**\n * Encodes the [string] using UTF-8 and returns the resulting [ByteArray].\n *\n * @param string the string to encode.\n * @param startIndex the start offset (inclusive) of the substring to encode.\n * @param endIndex the end offset (exclusive) of the substring to encode.\n * @param throwOnMalformed whether to throw on malformed char sequence or replace by the [REPLACEMENT_BYTE_SEQUENCE].\n *\n * @throws CharacterCodingException if the char sequence is malformed and [throwOnMalformed] is true.\n */\ninternal fun encodeUtf8(string: String, startIndex: Int, endIndex: Int, throwOnMalformed: Boolean): ByteArray {\n require(startIndex >= 0 && endIndex <= string.length && startIndex <= endIndex)\n\n val bytes = ByteArray((endIndex - startIndex) * MAX_BYTES_PER_CHAR)\n var byteIndex = 0\n var charIndex = startIndex\n\n while (charIndex < endIndex) {\n val code = string[charIndex++].toInt()\n when {\n code < 0x80 ->\n bytes[byteIndex++] = code.toByte()\n code < 0x800 -> {\n bytes[byteIndex++] = ((code shr 6) or 0xC0).toByte()\n bytes[byteIndex++] = ((code and 0x3F) or 0x80).toByte()\n }\n code < 0xD800 || code >= 0xE000 -> {\n bytes[byteIndex++] = ((code shr 12) or 0xE0).toByte()\n bytes[byteIndex++] = (((code shr 6) and 0x3F) or 0x80).toByte()\n bytes[byteIndex++] = ((code and 0x3F) or 0x80).toByte()\n }\n else -> { // Surrogate char value\n val codePoint = codePointFromSurrogate(string, code, charIndex, endIndex, throwOnMalformed)\n if (codePoint <= 0) {\n bytes[byteIndex++] = REPLACEMENT_BYTE_SEQUENCE[0]\n bytes[byteIndex++] = REPLACEMENT_BYTE_SEQUENCE[1]\n bytes[byteIndex++] = REPLACEMENT_BYTE_SEQUENCE[2]\n } else {\n bytes[byteIndex++] = ((codePoint shr 18) or 0xF0).toByte()\n bytes[byteIndex++] = (((codePoint shr 12) and 0x3F) or 0x80).toByte()\n bytes[byteIndex++] = (((codePoint shr 6) and 0x3F) or 0x80).toByte()\n bytes[byteIndex++] = ((codePoint and 0x3F) or 0x80).toByte()\n charIndex++\n }\n }\n }\n }\n\n return if (bytes.size == byteIndex) bytes else bytes.copyOf(byteIndex)\n}\n\n/**\n * The character a malformed UTF-8 byte sequence is replaced by.\n */\nprivate const val REPLACEMENT_CHAR = '\\uFFFD'\n\n/**\n * Decodes the UTF-8 [bytes] array and returns the resulting [String].\n *\n * @param bytes the byte array to decode.\n * @param startIndex the start offset (inclusive) of the array to be decoded.\n * @param endIndex the end offset (exclusive) of the array to be encoded.\n * @param throwOnMalformed whether to throw on malformed byte sequence or replace by the [REPLACEMENT_CHAR].\n *\n * @throws CharacterCodingException if the array is malformed UTF-8 byte sequence and [throwOnMalformed] is true.\n */\ninternal fun decodeUtf8(bytes: ByteArray, startIndex: Int, endIndex: Int, throwOnMalformed: Boolean): String {\n require(startIndex >= 0 && endIndex <= bytes.size && startIndex <= endIndex)\n\n var byteIndex = startIndex\n val stringBuilder = StringBuilder()\n\n while (byteIndex < endIndex) {\n val byte = bytes[byteIndex++].toInt()\n when {\n byte >= 0 ->\n stringBuilder.append(byte.toChar())\n byte shr 5 == -2 -> {\n val code = codePointFrom2(bytes, byte, byteIndex, endIndex, throwOnMalformed)\n if (code <= 0) {\n stringBuilder.append(REPLACEMENT_CHAR)\n byteIndex += -code\n } else {\n stringBuilder.append(code.toChar())\n byteIndex += 1\n }\n }\n byte shr 4 == -2 -> {\n val code = codePointFrom3(bytes, byte, byteIndex, endIndex, throwOnMalformed)\n if (code <= 0) {\n stringBuilder.append(REPLACEMENT_CHAR)\n byteIndex += -code\n } else {\n stringBuilder.append(code.toChar())\n byteIndex += 2\n }\n }\n byte shr 3 == -2 -> {\n val code = codePointFrom4(bytes, byte, byteIndex, endIndex, throwOnMalformed)\n if (code <= 0) {\n stringBuilder.append(REPLACEMENT_CHAR)\n byteIndex += -code\n } else {\n val high = (code - 0x10000) shr 10 or 0xD800\n val low = (code and 0x3FF) or 0xDC00\n stringBuilder.append(high.toChar())\n stringBuilder.append(low.toChar())\n byteIndex += 3\n }\n }\n else -> {\n malformed(0, byteIndex, throwOnMalformed)\n stringBuilder.append(REPLACEMENT_CHAR)\n }\n }\n }\n\n return stringBuilder.toString()\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See libraries/tools/idl2k for details\n\n@file:Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npackage org.khronos.webgl\n\nimport kotlin.js.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\npublic external interface WebGLContextAttributes {\n var alpha: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var depth: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var stencil: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var antialias: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var premultipliedAlpha: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var preserveDrawingBuffer: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var preferLowPowerToHighPerformance: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var failIfMajorPerformanceCaveat: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun WebGLContextAttributes(alpha: Boolean? = true, depth: Boolean? = true, stencil: Boolean? = false, antialias: Boolean? = true, premultipliedAlpha: Boolean? = true, preserveDrawingBuffer: Boolean? = false, preferLowPowerToHighPerformance: Boolean? = false, failIfMajorPerformanceCaveat: Boolean? = false): WebGLContextAttributes {\n val o = js(\"({})\")\n\n o[\"alpha\"] = alpha\n o[\"depth\"] = depth\n o[\"stencil\"] = stencil\n o[\"antialias\"] = antialias\n o[\"premultipliedAlpha\"] = premultipliedAlpha\n o[\"preserveDrawingBuffer\"] = preserveDrawingBuffer\n o[\"preferLowPowerToHighPerformance\"] = preferLowPowerToHighPerformance\n o[\"failIfMajorPerformanceCaveat\"] = failIfMajorPerformanceCaveat\n\n return o\n}\n\npublic external abstract class WebGLObject {\n}\n\n/**\n * Exposes the JavaScript [WebGLBuffer](https://developer.mozilla.org/en/docs/Web/API/WebGLBuffer) to Kotlin\n */\npublic external abstract class WebGLBuffer : WebGLObject {\n}\n\n/**\n * Exposes the JavaScript [WebGLFramebuffer](https://developer.mozilla.org/en/docs/Web/API/WebGLFramebuffer) to Kotlin\n */\npublic external abstract class WebGLFramebuffer : WebGLObject {\n}\n\n/**\n * Exposes the JavaScript [WebGLProgram](https://developer.mozilla.org/en/docs/Web/API/WebGLProgram) to Kotlin\n */\npublic external abstract class WebGLProgram : WebGLObject {\n}\n\n/**\n * Exposes the JavaScript [WebGLRenderbuffer](https://developer.mozilla.org/en/docs/Web/API/WebGLRenderbuffer) to Kotlin\n */\npublic external abstract class WebGLRenderbuffer : WebGLObject {\n}\n\n/**\n * Exposes the JavaScript [WebGLShader](https://developer.mozilla.org/en/docs/Web/API/WebGLShader) to Kotlin\n */\npublic external abstract class WebGLShader : WebGLObject {\n}\n\n/**\n * Exposes the JavaScript [WebGLTexture](https://developer.mozilla.org/en/docs/Web/API/WebGLTexture) to Kotlin\n */\npublic external abstract class WebGLTexture : WebGLObject {\n}\n\n/**\n * Exposes the JavaScript [WebGLUniformLocation](https://developer.mozilla.org/en/docs/Web/API/WebGLUniformLocation) to Kotlin\n */\npublic external abstract class WebGLUniformLocation {\n}\n\n/**\n * Exposes the JavaScript [WebGLActiveInfo](https://developer.mozilla.org/en/docs/Web/API/WebGLActiveInfo) to Kotlin\n */\npublic external abstract class WebGLActiveInfo {\n open val size: Int\n open val type: Int\n open val name: String\n}\n\n/**\n * Exposes the JavaScript [WebGLShaderPrecisionFormat](https://developer.mozilla.org/en/docs/Web/API/WebGLShaderPrecisionFormat) to Kotlin\n */\npublic external abstract class WebGLShaderPrecisionFormat {\n open val rangeMin: Int\n open val rangeMax: Int\n open val precision: Int\n}\n\npublic external interface WebGLRenderingContextBase {\n val canvas: HTMLCanvasElement\n val drawingBufferWidth: Int\n val drawingBufferHeight: Int\n fun getContextAttributes(): WebGLContextAttributes?\n fun isContextLost(): Boolean\n fun getSupportedExtensions(): Array?\n fun getExtension(name: String): dynamic\n fun activeTexture(texture: Int): Unit\n fun attachShader(program: WebGLProgram?, shader: WebGLShader?): Unit\n fun bindAttribLocation(program: WebGLProgram?, index: Int, name: String): Unit\n fun bindBuffer(target: Int, buffer: WebGLBuffer?): Unit\n fun bindFramebuffer(target: Int, framebuffer: WebGLFramebuffer?): Unit\n fun bindRenderbuffer(target: Int, renderbuffer: WebGLRenderbuffer?): Unit\n fun bindTexture(target: Int, texture: WebGLTexture?): Unit\n fun blendColor(red: Float, green: Float, blue: Float, alpha: Float): Unit\n fun blendEquation(mode: Int): Unit\n fun blendEquationSeparate(modeRGB: Int, modeAlpha: Int): Unit\n fun blendFunc(sfactor: Int, dfactor: Int): Unit\n fun blendFuncSeparate(srcRGB: Int, dstRGB: Int, srcAlpha: Int, dstAlpha: Int): Unit\n fun bufferData(target: Int, size: Int, usage: Int): Unit\n fun bufferData(target: Int, data: BufferDataSource?, usage: Int): Unit\n fun bufferSubData(target: Int, offset: Int, data: BufferDataSource?): Unit\n fun checkFramebufferStatus(target: Int): Int\n fun clear(mask: Int): Unit\n fun clearColor(red: Float, green: Float, blue: Float, alpha: Float): Unit\n fun clearDepth(depth: Float): Unit\n fun clearStencil(s: Int): Unit\n fun colorMask(red: Boolean, green: Boolean, blue: Boolean, alpha: Boolean): Unit\n fun compileShader(shader: WebGLShader?): Unit\n fun compressedTexImage2D(target: Int, level: Int, internalformat: Int, width: Int, height: Int, border: Int, data: ArrayBufferView): Unit\n fun compressedTexSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, width: Int, height: Int, format: Int, data: ArrayBufferView): Unit\n fun copyTexImage2D(target: Int, level: Int, internalformat: Int, x: Int, y: Int, width: Int, height: Int, border: Int): Unit\n fun copyTexSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, x: Int, y: Int, width: Int, height: Int): Unit\n fun createBuffer(): WebGLBuffer?\n fun createFramebuffer(): WebGLFramebuffer?\n fun createProgram(): WebGLProgram?\n fun createRenderbuffer(): WebGLRenderbuffer?\n fun createShader(type: Int): WebGLShader?\n fun createTexture(): WebGLTexture?\n fun cullFace(mode: Int): Unit\n fun deleteBuffer(buffer: WebGLBuffer?): Unit\n fun deleteFramebuffer(framebuffer: WebGLFramebuffer?): Unit\n fun deleteProgram(program: WebGLProgram?): Unit\n fun deleteRenderbuffer(renderbuffer: WebGLRenderbuffer?): Unit\n fun deleteShader(shader: WebGLShader?): Unit\n fun deleteTexture(texture: WebGLTexture?): Unit\n fun depthFunc(func: Int): Unit\n fun depthMask(flag: Boolean): Unit\n fun depthRange(zNear: Float, zFar: Float): Unit\n fun detachShader(program: WebGLProgram?, shader: WebGLShader?): Unit\n fun disable(cap: Int): Unit\n fun disableVertexAttribArray(index: Int): Unit\n fun drawArrays(mode: Int, first: Int, count: Int): Unit\n fun drawElements(mode: Int, count: Int, type: Int, offset: Int): Unit\n fun enable(cap: Int): Unit\n fun enableVertexAttribArray(index: Int): Unit\n fun finish(): Unit\n fun flush(): Unit\n fun framebufferRenderbuffer(target: Int, attachment: Int, renderbuffertarget: Int, renderbuffer: WebGLRenderbuffer?): Unit\n fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: WebGLTexture?, level: Int): Unit\n fun frontFace(mode: Int): Unit\n fun generateMipmap(target: Int): Unit\n fun getActiveAttrib(program: WebGLProgram?, index: Int): WebGLActiveInfo?\n fun getActiveUniform(program: WebGLProgram?, index: Int): WebGLActiveInfo?\n fun getAttachedShaders(program: WebGLProgram?): Array?\n fun getAttribLocation(program: WebGLProgram?, name: String): Int\n fun getBufferParameter(target: Int, pname: Int): Any?\n fun getParameter(pname: Int): Any?\n fun getError(): Int\n fun getFramebufferAttachmentParameter(target: Int, attachment: Int, pname: Int): Any?\n fun getProgramParameter(program: WebGLProgram?, pname: Int): Any?\n fun getProgramInfoLog(program: WebGLProgram?): String?\n fun getRenderbufferParameter(target: Int, pname: Int): Any?\n fun getShaderParameter(shader: WebGLShader?, pname: Int): Any?\n fun getShaderPrecisionFormat(shadertype: Int, precisiontype: Int): WebGLShaderPrecisionFormat?\n fun getShaderInfoLog(shader: WebGLShader?): String?\n fun getShaderSource(shader: WebGLShader?): String?\n fun getTexParameter(target: Int, pname: Int): Any?\n fun getUniform(program: WebGLProgram?, location: WebGLUniformLocation?): Any?\n fun getUniformLocation(program: WebGLProgram?, name: String): WebGLUniformLocation?\n fun getVertexAttrib(index: Int, pname: Int): Any?\n fun getVertexAttribOffset(index: Int, pname: Int): Int\n fun hint(target: Int, mode: Int): Unit\n fun isBuffer(buffer: WebGLBuffer?): Boolean\n fun isEnabled(cap: Int): Boolean\n fun isFramebuffer(framebuffer: WebGLFramebuffer?): Boolean\n fun isProgram(program: WebGLProgram?): Boolean\n fun isRenderbuffer(renderbuffer: WebGLRenderbuffer?): Boolean\n fun isShader(shader: WebGLShader?): Boolean\n fun isTexture(texture: WebGLTexture?): Boolean\n fun lineWidth(width: Float): Unit\n fun linkProgram(program: WebGLProgram?): Unit\n fun pixelStorei(pname: Int, param: Int): Unit\n fun polygonOffset(factor: Float, units: Float): Unit\n fun readPixels(x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, pixels: ArrayBufferView?): Unit\n fun renderbufferStorage(target: Int, internalformat: Int, width: Int, height: Int): Unit\n fun sampleCoverage(value: Float, invert: Boolean): Unit\n fun scissor(x: Int, y: Int, width: Int, height: Int): Unit\n fun shaderSource(shader: WebGLShader?, source: String): Unit\n fun stencilFunc(func: Int, ref: Int, mask: Int): Unit\n fun stencilFuncSeparate(face: Int, func: Int, ref: Int, mask: Int): Unit\n fun stencilMask(mask: Int): Unit\n fun stencilMaskSeparate(face: Int, mask: Int): Unit\n fun stencilOp(fail: Int, zfail: Int, zpass: Int): Unit\n fun stencilOpSeparate(face: Int, fail: Int, zfail: Int, zpass: Int): Unit\n fun texImage2D(target: Int, level: Int, internalformat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, pixels: ArrayBufferView?): Unit\n fun texImage2D(target: Int, level: Int, internalformat: Int, format: Int, type: Int, source: TexImageSource?): Unit\n fun texParameterf(target: Int, pname: Int, param: Float): Unit\n fun texParameteri(target: Int, pname: Int, param: Int): Unit\n fun texSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, width: Int, height: Int, format: Int, type: Int, pixels: ArrayBufferView?): Unit\n fun texSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, format: Int, type: Int, source: TexImageSource?): Unit\n fun uniform1f(location: WebGLUniformLocation?, x: Float): Unit\n fun uniform1fv(location: WebGLUniformLocation?, v: Float32Array): Unit\n fun uniform1fv(location: WebGLUniformLocation?, v: Array): Unit\n fun uniform1i(location: WebGLUniformLocation?, x: Int): Unit\n fun uniform1iv(location: WebGLUniformLocation?, v: Int32Array): Unit\n fun uniform1iv(location: WebGLUniformLocation?, v: Array): Unit\n fun uniform2f(location: WebGLUniformLocation?, x: Float, y: Float): Unit\n fun uniform2fv(location: WebGLUniformLocation?, v: Float32Array): Unit\n fun uniform2fv(location: WebGLUniformLocation?, v: Array): Unit\n fun uniform2i(location: WebGLUniformLocation?, x: Int, y: Int): Unit\n fun uniform2iv(location: WebGLUniformLocation?, v: Int32Array): Unit\n fun uniform2iv(location: WebGLUniformLocation?, v: Array): Unit\n fun uniform3f(location: WebGLUniformLocation?, x: Float, y: Float, z: Float): Unit\n fun uniform3fv(location: WebGLUniformLocation?, v: Float32Array): Unit\n fun uniform3fv(location: WebGLUniformLocation?, v: Array): Unit\n fun uniform3i(location: WebGLUniformLocation?, x: Int, y: Int, z: Int): Unit\n fun uniform3iv(location: WebGLUniformLocation?, v: Int32Array): Unit\n fun uniform3iv(location: WebGLUniformLocation?, v: Array): Unit\n fun uniform4f(location: WebGLUniformLocation?, x: Float, y: Float, z: Float, w: Float): Unit\n fun uniform4fv(location: WebGLUniformLocation?, v: Float32Array): Unit\n fun uniform4fv(location: WebGLUniformLocation?, v: Array): Unit\n fun uniform4i(location: WebGLUniformLocation?, x: Int, y: Int, z: Int, w: Int): Unit\n fun uniform4iv(location: WebGLUniformLocation?, v: Int32Array): Unit\n fun uniform4iv(location: WebGLUniformLocation?, v: Array): Unit\n fun uniformMatrix2fv(location: WebGLUniformLocation?, transpose: Boolean, value: Float32Array): Unit\n fun uniformMatrix2fv(location: WebGLUniformLocation?, transpose: Boolean, value: Array): Unit\n fun uniformMatrix3fv(location: WebGLUniformLocation?, transpose: Boolean, value: Float32Array): Unit\n fun uniformMatrix3fv(location: WebGLUniformLocation?, transpose: Boolean, value: Array): Unit\n fun uniformMatrix4fv(location: WebGLUniformLocation?, transpose: Boolean, value: Float32Array): Unit\n fun uniformMatrix4fv(location: WebGLUniformLocation?, transpose: Boolean, value: Array): Unit\n fun useProgram(program: WebGLProgram?): Unit\n fun validateProgram(program: WebGLProgram?): Unit\n fun vertexAttrib1f(index: Int, x: Float): Unit\n fun vertexAttrib1fv(index: Int, values: dynamic): Unit\n fun vertexAttrib2f(index: Int, x: Float, y: Float): Unit\n fun vertexAttrib2fv(index: Int, values: dynamic): Unit\n fun vertexAttrib3f(index: Int, x: Float, y: Float, z: Float): Unit\n fun vertexAttrib3fv(index: Int, values: dynamic): Unit\n fun vertexAttrib4f(index: Int, x: Float, y: Float, z: Float, w: Float): Unit\n fun vertexAttrib4fv(index: Int, values: dynamic): Unit\n fun vertexAttribPointer(index: Int, size: Int, type: Int, normalized: Boolean, stride: Int, offset: Int): Unit\n fun viewport(x: Int, y: Int, width: Int, height: Int): Unit\n\n companion object {\n val DEPTH_BUFFER_BIT: Int\n val STENCIL_BUFFER_BIT: Int\n val COLOR_BUFFER_BIT: Int\n val POINTS: Int\n val LINES: Int\n val LINE_LOOP: Int\n val LINE_STRIP: Int\n val TRIANGLES: Int\n val TRIANGLE_STRIP: Int\n val TRIANGLE_FAN: Int\n val ZERO: Int\n val ONE: Int\n val SRC_COLOR: Int\n val ONE_MINUS_SRC_COLOR: Int\n val SRC_ALPHA: Int\n val ONE_MINUS_SRC_ALPHA: Int\n val DST_ALPHA: Int\n val ONE_MINUS_DST_ALPHA: Int\n val DST_COLOR: Int\n val ONE_MINUS_DST_COLOR: Int\n val SRC_ALPHA_SATURATE: Int\n val FUNC_ADD: Int\n val BLEND_EQUATION: Int\n val BLEND_EQUATION_RGB: Int\n val BLEND_EQUATION_ALPHA: Int\n val FUNC_SUBTRACT: Int\n val FUNC_REVERSE_SUBTRACT: Int\n val BLEND_DST_RGB: Int\n val BLEND_SRC_RGB: Int\n val BLEND_DST_ALPHA: Int\n val BLEND_SRC_ALPHA: Int\n val CONSTANT_COLOR: Int\n val ONE_MINUS_CONSTANT_COLOR: Int\n val CONSTANT_ALPHA: Int\n val ONE_MINUS_CONSTANT_ALPHA: Int\n val BLEND_COLOR: Int\n val ARRAY_BUFFER: Int\n val ELEMENT_ARRAY_BUFFER: Int\n val ARRAY_BUFFER_BINDING: Int\n val ELEMENT_ARRAY_BUFFER_BINDING: Int\n val STREAM_DRAW: Int\n val STATIC_DRAW: Int\n val DYNAMIC_DRAW: Int\n val BUFFER_SIZE: Int\n val BUFFER_USAGE: Int\n val CURRENT_VERTEX_ATTRIB: Int\n val FRONT: Int\n val BACK: Int\n val FRONT_AND_BACK: Int\n val CULL_FACE: Int\n val BLEND: Int\n val DITHER: Int\n val STENCIL_TEST: Int\n val DEPTH_TEST: Int\n val SCISSOR_TEST: Int\n val POLYGON_OFFSET_FILL: Int\n val SAMPLE_ALPHA_TO_COVERAGE: Int\n val SAMPLE_COVERAGE: Int\n val NO_ERROR: Int\n val INVALID_ENUM: Int\n val INVALID_VALUE: Int\n val INVALID_OPERATION: Int\n val OUT_OF_MEMORY: Int\n val CW: Int\n val CCW: Int\n val LINE_WIDTH: Int\n val ALIASED_POINT_SIZE_RANGE: Int\n val ALIASED_LINE_WIDTH_RANGE: Int\n val CULL_FACE_MODE: Int\n val FRONT_FACE: Int\n val DEPTH_RANGE: Int\n val DEPTH_WRITEMASK: Int\n val DEPTH_CLEAR_VALUE: Int\n val DEPTH_FUNC: Int\n val STENCIL_CLEAR_VALUE: Int\n val STENCIL_FUNC: Int\n val STENCIL_FAIL: Int\n val STENCIL_PASS_DEPTH_FAIL: Int\n val STENCIL_PASS_DEPTH_PASS: Int\n val STENCIL_REF: Int\n val STENCIL_VALUE_MASK: Int\n val STENCIL_WRITEMASK: Int\n val STENCIL_BACK_FUNC: Int\n val STENCIL_BACK_FAIL: Int\n val STENCIL_BACK_PASS_DEPTH_FAIL: Int\n val STENCIL_BACK_PASS_DEPTH_PASS: Int\n val STENCIL_BACK_REF: Int\n val STENCIL_BACK_VALUE_MASK: Int\n val STENCIL_BACK_WRITEMASK: Int\n val VIEWPORT: Int\n val SCISSOR_BOX: Int\n val COLOR_CLEAR_VALUE: Int\n val COLOR_WRITEMASK: Int\n val UNPACK_ALIGNMENT: Int\n val PACK_ALIGNMENT: Int\n val MAX_TEXTURE_SIZE: Int\n val MAX_VIEWPORT_DIMS: Int\n val SUBPIXEL_BITS: Int\n val RED_BITS: Int\n val GREEN_BITS: Int\n val BLUE_BITS: Int\n val ALPHA_BITS: Int\n val DEPTH_BITS: Int\n val STENCIL_BITS: Int\n val POLYGON_OFFSET_UNITS: Int\n val POLYGON_OFFSET_FACTOR: Int\n val TEXTURE_BINDING_2D: Int\n val SAMPLE_BUFFERS: Int\n val SAMPLES: Int\n val SAMPLE_COVERAGE_VALUE: Int\n val SAMPLE_COVERAGE_INVERT: Int\n val COMPRESSED_TEXTURE_FORMATS: Int\n val DONT_CARE: Int\n val FASTEST: Int\n val NICEST: Int\n val GENERATE_MIPMAP_HINT: Int\n val BYTE: Int\n val UNSIGNED_BYTE: Int\n val SHORT: Int\n val UNSIGNED_SHORT: Int\n val INT: Int\n val UNSIGNED_INT: Int\n val FLOAT: Int\n val DEPTH_COMPONENT: Int\n val ALPHA: Int\n val RGB: Int\n val RGBA: Int\n val LUMINANCE: Int\n val LUMINANCE_ALPHA: Int\n val UNSIGNED_SHORT_4_4_4_4: Int\n val UNSIGNED_SHORT_5_5_5_1: Int\n val UNSIGNED_SHORT_5_6_5: Int\n val FRAGMENT_SHADER: Int\n val VERTEX_SHADER: Int\n val MAX_VERTEX_ATTRIBS: Int\n val MAX_VERTEX_UNIFORM_VECTORS: Int\n val MAX_VARYING_VECTORS: Int\n val MAX_COMBINED_TEXTURE_IMAGE_UNITS: Int\n val MAX_VERTEX_TEXTURE_IMAGE_UNITS: Int\n val MAX_TEXTURE_IMAGE_UNITS: Int\n val MAX_FRAGMENT_UNIFORM_VECTORS: Int\n val SHADER_TYPE: Int\n val DELETE_STATUS: Int\n val LINK_STATUS: Int\n val VALIDATE_STATUS: Int\n val ATTACHED_SHADERS: Int\n val ACTIVE_UNIFORMS: Int\n val ACTIVE_ATTRIBUTES: Int\n val SHADING_LANGUAGE_VERSION: Int\n val CURRENT_PROGRAM: Int\n val NEVER: Int\n val LESS: Int\n val EQUAL: Int\n val LEQUAL: Int\n val GREATER: Int\n val NOTEQUAL: Int\n val GEQUAL: Int\n val ALWAYS: Int\n val KEEP: Int\n val REPLACE: Int\n val INCR: Int\n val DECR: Int\n val INVERT: Int\n val INCR_WRAP: Int\n val DECR_WRAP: Int\n val VENDOR: Int\n val RENDERER: Int\n val VERSION: Int\n val NEAREST: Int\n val LINEAR: Int\n val NEAREST_MIPMAP_NEAREST: Int\n val LINEAR_MIPMAP_NEAREST: Int\n val NEAREST_MIPMAP_LINEAR: Int\n val LINEAR_MIPMAP_LINEAR: Int\n val TEXTURE_MAG_FILTER: Int\n val TEXTURE_MIN_FILTER: Int\n val TEXTURE_WRAP_S: Int\n val TEXTURE_WRAP_T: Int\n val TEXTURE_2D: Int\n val TEXTURE: Int\n val TEXTURE_CUBE_MAP: Int\n val TEXTURE_BINDING_CUBE_MAP: Int\n val TEXTURE_CUBE_MAP_POSITIVE_X: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_X: Int\n val TEXTURE_CUBE_MAP_POSITIVE_Y: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_Y: Int\n val TEXTURE_CUBE_MAP_POSITIVE_Z: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_Z: Int\n val MAX_CUBE_MAP_TEXTURE_SIZE: Int\n val TEXTURE0: Int\n val TEXTURE1: Int\n val TEXTURE2: Int\n val TEXTURE3: Int\n val TEXTURE4: Int\n val TEXTURE5: Int\n val TEXTURE6: Int\n val TEXTURE7: Int\n val TEXTURE8: Int\n val TEXTURE9: Int\n val TEXTURE10: Int\n val TEXTURE11: Int\n val TEXTURE12: Int\n val TEXTURE13: Int\n val TEXTURE14: Int\n val TEXTURE15: Int\n val TEXTURE16: Int\n val TEXTURE17: Int\n val TEXTURE18: Int\n val TEXTURE19: Int\n val TEXTURE20: Int\n val TEXTURE21: Int\n val TEXTURE22: Int\n val TEXTURE23: Int\n val TEXTURE24: Int\n val TEXTURE25: Int\n val TEXTURE26: Int\n val TEXTURE27: Int\n val TEXTURE28: Int\n val TEXTURE29: Int\n val TEXTURE30: Int\n val TEXTURE31: Int\n val ACTIVE_TEXTURE: Int\n val REPEAT: Int\n val CLAMP_TO_EDGE: Int\n val MIRRORED_REPEAT: Int\n val FLOAT_VEC2: Int\n val FLOAT_VEC3: Int\n val FLOAT_VEC4: Int\n val INT_VEC2: Int\n val INT_VEC3: Int\n val INT_VEC4: Int\n val BOOL: Int\n val BOOL_VEC2: Int\n val BOOL_VEC3: Int\n val BOOL_VEC4: Int\n val FLOAT_MAT2: Int\n val FLOAT_MAT3: Int\n val FLOAT_MAT4: Int\n val SAMPLER_2D: Int\n val SAMPLER_CUBE: Int\n val VERTEX_ATTRIB_ARRAY_ENABLED: Int\n val VERTEX_ATTRIB_ARRAY_SIZE: Int\n val VERTEX_ATTRIB_ARRAY_STRIDE: Int\n val VERTEX_ATTRIB_ARRAY_TYPE: Int\n val VERTEX_ATTRIB_ARRAY_NORMALIZED: Int\n val VERTEX_ATTRIB_ARRAY_POINTER: Int\n val VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: Int\n val IMPLEMENTATION_COLOR_READ_TYPE: Int\n val IMPLEMENTATION_COLOR_READ_FORMAT: Int\n val COMPILE_STATUS: Int\n val LOW_FLOAT: Int\n val MEDIUM_FLOAT: Int\n val HIGH_FLOAT: Int\n val LOW_INT: Int\n val MEDIUM_INT: Int\n val HIGH_INT: Int\n val FRAMEBUFFER: Int\n val RENDERBUFFER: Int\n val RGBA4: Int\n val RGB5_A1: Int\n val RGB565: Int\n val DEPTH_COMPONENT16: Int\n val STENCIL_INDEX: Int\n val STENCIL_INDEX8: Int\n val DEPTH_STENCIL: Int\n val RENDERBUFFER_WIDTH: Int\n val RENDERBUFFER_HEIGHT: Int\n val RENDERBUFFER_INTERNAL_FORMAT: Int\n val RENDERBUFFER_RED_SIZE: Int\n val RENDERBUFFER_GREEN_SIZE: Int\n val RENDERBUFFER_BLUE_SIZE: Int\n val RENDERBUFFER_ALPHA_SIZE: Int\n val RENDERBUFFER_DEPTH_SIZE: Int\n val RENDERBUFFER_STENCIL_SIZE: Int\n val FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: Int\n val FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: Int\n val FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: Int\n val FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: Int\n val COLOR_ATTACHMENT0: Int\n val DEPTH_ATTACHMENT: Int\n val STENCIL_ATTACHMENT: Int\n val DEPTH_STENCIL_ATTACHMENT: Int\n val NONE: Int\n val FRAMEBUFFER_COMPLETE: Int\n val FRAMEBUFFER_INCOMPLETE_ATTACHMENT: Int\n val FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: Int\n val FRAMEBUFFER_INCOMPLETE_DIMENSIONS: Int\n val FRAMEBUFFER_UNSUPPORTED: Int\n val FRAMEBUFFER_BINDING: Int\n val RENDERBUFFER_BINDING: Int\n val MAX_RENDERBUFFER_SIZE: Int\n val INVALID_FRAMEBUFFER_OPERATION: Int\n val UNPACK_FLIP_Y_WEBGL: Int\n val UNPACK_PREMULTIPLY_ALPHA_WEBGL: Int\n val CONTEXT_LOST_WEBGL: Int\n val UNPACK_COLORSPACE_CONVERSION_WEBGL: Int\n val BROWSER_DEFAULT_WEBGL: Int\n }\n}\n\n/**\n * Exposes the JavaScript [WebGLRenderingContext](https://developer.mozilla.org/en/docs/Web/API/WebGLRenderingContext) to Kotlin\n */\npublic external abstract class WebGLRenderingContext : WebGLRenderingContextBase, RenderingContext {\n\n companion object {\n val DEPTH_BUFFER_BIT: Int\n val STENCIL_BUFFER_BIT: Int\n val COLOR_BUFFER_BIT: Int\n val POINTS: Int\n val LINES: Int\n val LINE_LOOP: Int\n val LINE_STRIP: Int\n val TRIANGLES: Int\n val TRIANGLE_STRIP: Int\n val TRIANGLE_FAN: Int\n val ZERO: Int\n val ONE: Int\n val SRC_COLOR: Int\n val ONE_MINUS_SRC_COLOR: Int\n val SRC_ALPHA: Int\n val ONE_MINUS_SRC_ALPHA: Int\n val DST_ALPHA: Int\n val ONE_MINUS_DST_ALPHA: Int\n val DST_COLOR: Int\n val ONE_MINUS_DST_COLOR: Int\n val SRC_ALPHA_SATURATE: Int\n val FUNC_ADD: Int\n val BLEND_EQUATION: Int\n val BLEND_EQUATION_RGB: Int\n val BLEND_EQUATION_ALPHA: Int\n val FUNC_SUBTRACT: Int\n val FUNC_REVERSE_SUBTRACT: Int\n val BLEND_DST_RGB: Int\n val BLEND_SRC_RGB: Int\n val BLEND_DST_ALPHA: Int\n val BLEND_SRC_ALPHA: Int\n val CONSTANT_COLOR: Int\n val ONE_MINUS_CONSTANT_COLOR: Int\n val CONSTANT_ALPHA: Int\n val ONE_MINUS_CONSTANT_ALPHA: Int\n val BLEND_COLOR: Int\n val ARRAY_BUFFER: Int\n val ELEMENT_ARRAY_BUFFER: Int\n val ARRAY_BUFFER_BINDING: Int\n val ELEMENT_ARRAY_BUFFER_BINDING: Int\n val STREAM_DRAW: Int\n val STATIC_DRAW: Int\n val DYNAMIC_DRAW: Int\n val BUFFER_SIZE: Int\n val BUFFER_USAGE: Int\n val CURRENT_VERTEX_ATTRIB: Int\n val FRONT: Int\n val BACK: Int\n val FRONT_AND_BACK: Int\n val CULL_FACE: Int\n val BLEND: Int\n val DITHER: Int\n val STENCIL_TEST: Int\n val DEPTH_TEST: Int\n val SCISSOR_TEST: Int\n val POLYGON_OFFSET_FILL: Int\n val SAMPLE_ALPHA_TO_COVERAGE: Int\n val SAMPLE_COVERAGE: Int\n val NO_ERROR: Int\n val INVALID_ENUM: Int\n val INVALID_VALUE: Int\n val INVALID_OPERATION: Int\n val OUT_OF_MEMORY: Int\n val CW: Int\n val CCW: Int\n val LINE_WIDTH: Int\n val ALIASED_POINT_SIZE_RANGE: Int\n val ALIASED_LINE_WIDTH_RANGE: Int\n val CULL_FACE_MODE: Int\n val FRONT_FACE: Int\n val DEPTH_RANGE: Int\n val DEPTH_WRITEMASK: Int\n val DEPTH_CLEAR_VALUE: Int\n val DEPTH_FUNC: Int\n val STENCIL_CLEAR_VALUE: Int\n val STENCIL_FUNC: Int\n val STENCIL_FAIL: Int\n val STENCIL_PASS_DEPTH_FAIL: Int\n val STENCIL_PASS_DEPTH_PASS: Int\n val STENCIL_REF: Int\n val STENCIL_VALUE_MASK: Int\n val STENCIL_WRITEMASK: Int\n val STENCIL_BACK_FUNC: Int\n val STENCIL_BACK_FAIL: Int\n val STENCIL_BACK_PASS_DEPTH_FAIL: Int\n val STENCIL_BACK_PASS_DEPTH_PASS: Int\n val STENCIL_BACK_REF: Int\n val STENCIL_BACK_VALUE_MASK: Int\n val STENCIL_BACK_WRITEMASK: Int\n val VIEWPORT: Int\n val SCISSOR_BOX: Int\n val COLOR_CLEAR_VALUE: Int\n val COLOR_WRITEMASK: Int\n val UNPACK_ALIGNMENT: Int\n val PACK_ALIGNMENT: Int\n val MAX_TEXTURE_SIZE: Int\n val MAX_VIEWPORT_DIMS: Int\n val SUBPIXEL_BITS: Int\n val RED_BITS: Int\n val GREEN_BITS: Int\n val BLUE_BITS: Int\n val ALPHA_BITS: Int\n val DEPTH_BITS: Int\n val STENCIL_BITS: Int\n val POLYGON_OFFSET_UNITS: Int\n val POLYGON_OFFSET_FACTOR: Int\n val TEXTURE_BINDING_2D: Int\n val SAMPLE_BUFFERS: Int\n val SAMPLES: Int\n val SAMPLE_COVERAGE_VALUE: Int\n val SAMPLE_COVERAGE_INVERT: Int\n val COMPRESSED_TEXTURE_FORMATS: Int\n val DONT_CARE: Int\n val FASTEST: Int\n val NICEST: Int\n val GENERATE_MIPMAP_HINT: Int\n val BYTE: Int\n val UNSIGNED_BYTE: Int\n val SHORT: Int\n val UNSIGNED_SHORT: Int\n val INT: Int\n val UNSIGNED_INT: Int\n val FLOAT: Int\n val DEPTH_COMPONENT: Int\n val ALPHA: Int\n val RGB: Int\n val RGBA: Int\n val LUMINANCE: Int\n val LUMINANCE_ALPHA: Int\n val UNSIGNED_SHORT_4_4_4_4: Int\n val UNSIGNED_SHORT_5_5_5_1: Int\n val UNSIGNED_SHORT_5_6_5: Int\n val FRAGMENT_SHADER: Int\n val VERTEX_SHADER: Int\n val MAX_VERTEX_ATTRIBS: Int\n val MAX_VERTEX_UNIFORM_VECTORS: Int\n val MAX_VARYING_VECTORS: Int\n val MAX_COMBINED_TEXTURE_IMAGE_UNITS: Int\n val MAX_VERTEX_TEXTURE_IMAGE_UNITS: Int\n val MAX_TEXTURE_IMAGE_UNITS: Int\n val MAX_FRAGMENT_UNIFORM_VECTORS: Int\n val SHADER_TYPE: Int\n val DELETE_STATUS: Int\n val LINK_STATUS: Int\n val VALIDATE_STATUS: Int\n val ATTACHED_SHADERS: Int\n val ACTIVE_UNIFORMS: Int\n val ACTIVE_ATTRIBUTES: Int\n val SHADING_LANGUAGE_VERSION: Int\n val CURRENT_PROGRAM: Int\n val NEVER: Int\n val LESS: Int\n val EQUAL: Int\n val LEQUAL: Int\n val GREATER: Int\n val NOTEQUAL: Int\n val GEQUAL: Int\n val ALWAYS: Int\n val KEEP: Int\n val REPLACE: Int\n val INCR: Int\n val DECR: Int\n val INVERT: Int\n val INCR_WRAP: Int\n val DECR_WRAP: Int\n val VENDOR: Int\n val RENDERER: Int\n val VERSION: Int\n val NEAREST: Int\n val LINEAR: Int\n val NEAREST_MIPMAP_NEAREST: Int\n val LINEAR_MIPMAP_NEAREST: Int\n val NEAREST_MIPMAP_LINEAR: Int\n val LINEAR_MIPMAP_LINEAR: Int\n val TEXTURE_MAG_FILTER: Int\n val TEXTURE_MIN_FILTER: Int\n val TEXTURE_WRAP_S: Int\n val TEXTURE_WRAP_T: Int\n val TEXTURE_2D: Int\n val TEXTURE: Int\n val TEXTURE_CUBE_MAP: Int\n val TEXTURE_BINDING_CUBE_MAP: Int\n val TEXTURE_CUBE_MAP_POSITIVE_X: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_X: Int\n val TEXTURE_CUBE_MAP_POSITIVE_Y: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_Y: Int\n val TEXTURE_CUBE_MAP_POSITIVE_Z: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_Z: Int\n val MAX_CUBE_MAP_TEXTURE_SIZE: Int\n val TEXTURE0: Int\n val TEXTURE1: Int\n val TEXTURE2: Int\n val TEXTURE3: Int\n val TEXTURE4: Int\n val TEXTURE5: Int\n val TEXTURE6: Int\n val TEXTURE7: Int\n val TEXTURE8: Int\n val TEXTURE9: Int\n val TEXTURE10: Int\n val TEXTURE11: Int\n val TEXTURE12: Int\n val TEXTURE13: Int\n val TEXTURE14: Int\n val TEXTURE15: Int\n val TEXTURE16: Int\n val TEXTURE17: Int\n val TEXTURE18: Int\n val TEXTURE19: Int\n val TEXTURE20: Int\n val TEXTURE21: Int\n val TEXTURE22: Int\n val TEXTURE23: Int\n val TEXTURE24: Int\n val TEXTURE25: Int\n val TEXTURE26: Int\n val TEXTURE27: Int\n val TEXTURE28: Int\n val TEXTURE29: Int\n val TEXTURE30: Int\n val TEXTURE31: Int\n val ACTIVE_TEXTURE: Int\n val REPEAT: Int\n val CLAMP_TO_EDGE: Int\n val MIRRORED_REPEAT: Int\n val FLOAT_VEC2: Int\n val FLOAT_VEC3: Int\n val FLOAT_VEC4: Int\n val INT_VEC2: Int\n val INT_VEC3: Int\n val INT_VEC4: Int\n val BOOL: Int\n val BOOL_VEC2: Int\n val BOOL_VEC3: Int\n val BOOL_VEC4: Int\n val FLOAT_MAT2: Int\n val FLOAT_MAT3: Int\n val FLOAT_MAT4: Int\n val SAMPLER_2D: Int\n val SAMPLER_CUBE: Int\n val VERTEX_ATTRIB_ARRAY_ENABLED: Int\n val VERTEX_ATTRIB_ARRAY_SIZE: Int\n val VERTEX_ATTRIB_ARRAY_STRIDE: Int\n val VERTEX_ATTRIB_ARRAY_TYPE: Int\n val VERTEX_ATTRIB_ARRAY_NORMALIZED: Int\n val VERTEX_ATTRIB_ARRAY_POINTER: Int\n val VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: Int\n val IMPLEMENTATION_COLOR_READ_TYPE: Int\n val IMPLEMENTATION_COLOR_READ_FORMAT: Int\n val COMPILE_STATUS: Int\n val LOW_FLOAT: Int\n val MEDIUM_FLOAT: Int\n val HIGH_FLOAT: Int\n val LOW_INT: Int\n val MEDIUM_INT: Int\n val HIGH_INT: Int\n val FRAMEBUFFER: Int\n val RENDERBUFFER: Int\n val RGBA4: Int\n val RGB5_A1: Int\n val RGB565: Int\n val DEPTH_COMPONENT16: Int\n val STENCIL_INDEX: Int\n val STENCIL_INDEX8: Int\n val DEPTH_STENCIL: Int\n val RENDERBUFFER_WIDTH: Int\n val RENDERBUFFER_HEIGHT: Int\n val RENDERBUFFER_INTERNAL_FORMAT: Int\n val RENDERBUFFER_RED_SIZE: Int\n val RENDERBUFFER_GREEN_SIZE: Int\n val RENDERBUFFER_BLUE_SIZE: Int\n val RENDERBUFFER_ALPHA_SIZE: Int\n val RENDERBUFFER_DEPTH_SIZE: Int\n val RENDERBUFFER_STENCIL_SIZE: Int\n val FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: Int\n val FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: Int\n val FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: Int\n val FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: Int\n val COLOR_ATTACHMENT0: Int\n val DEPTH_ATTACHMENT: Int\n val STENCIL_ATTACHMENT: Int\n val DEPTH_STENCIL_ATTACHMENT: Int\n val NONE: Int\n val FRAMEBUFFER_COMPLETE: Int\n val FRAMEBUFFER_INCOMPLETE_ATTACHMENT: Int\n val FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: Int\n val FRAMEBUFFER_INCOMPLETE_DIMENSIONS: Int\n val FRAMEBUFFER_UNSUPPORTED: Int\n val FRAMEBUFFER_BINDING: Int\n val RENDERBUFFER_BINDING: Int\n val MAX_RENDERBUFFER_SIZE: Int\n val INVALID_FRAMEBUFFER_OPERATION: Int\n val UNPACK_FLIP_Y_WEBGL: Int\n val UNPACK_PREMULTIPLY_ALPHA_WEBGL: Int\n val CONTEXT_LOST_WEBGL: Int\n val UNPACK_COLORSPACE_CONVERSION_WEBGL: Int\n val BROWSER_DEFAULT_WEBGL: Int\n }\n}\n\n/**\n * Exposes the JavaScript [WebGLContextEvent](https://developer.mozilla.org/en/docs/Web/API/WebGLContextEvent) to Kotlin\n */\npublic external open class WebGLContextEvent(type: String, eventInit: WebGLContextEventInit = definedExternally) : Event {\n open val statusMessage: String\n}\n\npublic external interface WebGLContextEventInit : EventInit {\n var statusMessage: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun WebGLContextEventInit(statusMessage: String? = \"\", bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): WebGLContextEventInit {\n val o = js(\"({})\")\n\n o[\"statusMessage\"] = statusMessage\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [ArrayBuffer](https://developer.mozilla.org/en/docs/Web/API/ArrayBuffer) to Kotlin\n */\npublic external open class ArrayBuffer(length: Int) : BufferDataSource {\n open val byteLength: Int\n fun slice(begin: Int, end: Int = definedExternally): ArrayBuffer\n\n companion object {\n fun isView(value: Any?): Boolean\n }\n}\n\n/**\n * Exposes the JavaScript [ArrayBufferView](https://developer.mozilla.org/en/docs/Web/API/ArrayBufferView) to Kotlin\n */\npublic external interface ArrayBufferView : BufferDataSource {\n val buffer: ArrayBuffer\n val byteOffset: Int\n val byteLength: Int\n}\n\n/**\n * Exposes the JavaScript [Int8Array](https://developer.mozilla.org/en/docs/Web/API/Int8Array) to Kotlin\n */\npublic external open class Int8Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Int8Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Int8Array, offset: Int = definedExternally): Unit\n fun set(array: Array, offset: Int = definedExternally): Unit\n fun subarray(start: Int, end: Int): Int8Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n@kotlin.internal.InlineOnly inline operator fun Int8Array.get(index: Int): Byte = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun Int8Array.set(index: Int, value: Byte): Unit { asDynamic()[index] = value; }\n\n/**\n * Exposes the JavaScript [Uint8Array](https://developer.mozilla.org/en/docs/Web/API/Uint8Array) to Kotlin\n */\npublic external open class Uint8Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Uint8Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Uint8Array, offset: Int = definedExternally): Unit\n fun set(array: Array, offset: Int = definedExternally): Unit\n fun subarray(start: Int, end: Int): Uint8Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n@kotlin.internal.InlineOnly inline operator fun Uint8Array.get(index: Int): Byte = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun Uint8Array.set(index: Int, value: Byte): Unit { asDynamic()[index] = value; }\n\n/**\n * Exposes the JavaScript [Uint8ClampedArray](https://developer.mozilla.org/en/docs/Web/API/Uint8ClampedArray) to Kotlin\n */\npublic external open class Uint8ClampedArray : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Uint8ClampedArray)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Uint8ClampedArray, offset: Int = definedExternally): Unit\n fun set(array: Array, offset: Int = definedExternally): Unit\n fun subarray(start: Int, end: Int): Uint8ClampedArray\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n@kotlin.internal.InlineOnly inline operator fun Uint8ClampedArray.get(index: Int): Byte = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun Uint8ClampedArray.set(index: Int, value: Byte): Unit { asDynamic()[index] = value; }\n\n/**\n * Exposes the JavaScript [Int16Array](https://developer.mozilla.org/en/docs/Web/API/Int16Array) to Kotlin\n */\npublic external open class Int16Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Int16Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Int16Array, offset: Int = definedExternally): Unit\n fun set(array: Array, offset: Int = definedExternally): Unit\n fun subarray(start: Int, end: Int): Int16Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n@kotlin.internal.InlineOnly inline operator fun Int16Array.get(index: Int): Short = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun Int16Array.set(index: Int, value: Short): Unit { asDynamic()[index] = value; }\n\n/**\n * Exposes the JavaScript [Uint16Array](https://developer.mozilla.org/en/docs/Web/API/Uint16Array) to Kotlin\n */\npublic external open class Uint16Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Uint16Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Uint16Array, offset: Int = definedExternally): Unit\n fun set(array: Array, offset: Int = definedExternally): Unit\n fun subarray(start: Int, end: Int): Uint16Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n@kotlin.internal.InlineOnly inline operator fun Uint16Array.get(index: Int): Short = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun Uint16Array.set(index: Int, value: Short): Unit { asDynamic()[index] = value; }\n\n/**\n * Exposes the JavaScript [Int32Array](https://developer.mozilla.org/en/docs/Web/API/Int32Array) to Kotlin\n */\npublic external open class Int32Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Int32Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Int32Array, offset: Int = definedExternally): Unit\n fun set(array: Array, offset: Int = definedExternally): Unit\n fun subarray(start: Int, end: Int): Int32Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n@kotlin.internal.InlineOnly inline operator fun Int32Array.get(index: Int): Int = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun Int32Array.set(index: Int, value: Int): Unit { asDynamic()[index] = value; }\n\n/**\n * Exposes the JavaScript [Uint32Array](https://developer.mozilla.org/en/docs/Web/API/Uint32Array) to Kotlin\n */\npublic external open class Uint32Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Uint32Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Uint32Array, offset: Int = definedExternally): Unit\n fun set(array: Array, offset: Int = definedExternally): Unit\n fun subarray(start: Int, end: Int): Uint32Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n@kotlin.internal.InlineOnly inline operator fun Uint32Array.get(index: Int): Int = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun Uint32Array.set(index: Int, value: Int): Unit { asDynamic()[index] = value; }\n\n/**\n * Exposes the JavaScript [Float32Array](https://developer.mozilla.org/en/docs/Web/API/Float32Array) to Kotlin\n */\npublic external open class Float32Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Float32Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Float32Array, offset: Int = definedExternally): Unit\n fun set(array: Array, offset: Int = definedExternally): Unit\n fun subarray(start: Int, end: Int): Float32Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n@kotlin.internal.InlineOnly inline operator fun Float32Array.get(index: Int): Float = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun Float32Array.set(index: Int, value: Float): Unit { asDynamic()[index] = value; }\n\n/**\n * Exposes the JavaScript [Float64Array](https://developer.mozilla.org/en/docs/Web/API/Float64Array) to Kotlin\n */\npublic external open class Float64Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Float64Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Float64Array, offset: Int = definedExternally): Unit\n fun set(array: Array, offset: Int = definedExternally): Unit\n fun subarray(start: Int, end: Int): Float64Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n@kotlin.internal.InlineOnly inline operator fun Float64Array.get(index: Int): Double = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun Float64Array.set(index: Int, value: Double): Unit { asDynamic()[index] = value; }\n\n/**\n * Exposes the JavaScript [DataView](https://developer.mozilla.org/en/docs/Web/API/DataView) to Kotlin\n */\npublic external open class DataView(buffer: ArrayBuffer, byteOffset: Int = definedExternally, byteLength: Int = definedExternally) : ArrayBufferView {\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun getInt8(byteOffset: Int): Byte\n fun getUint8(byteOffset: Int): Byte\n fun getInt16(byteOffset: Int, littleEndian: Boolean = definedExternally): Short\n fun getUint16(byteOffset: Int, littleEndian: Boolean = definedExternally): Short\n fun getInt32(byteOffset: Int, littleEndian: Boolean = definedExternally): Int\n fun getUint32(byteOffset: Int, littleEndian: Boolean = definedExternally): Int\n fun getFloat32(byteOffset: Int, littleEndian: Boolean = definedExternally): Float\n fun getFloat64(byteOffset: Int, littleEndian: Boolean = definedExternally): Double\n fun setInt8(byteOffset: Int, value: Byte): Unit\n fun setUint8(byteOffset: Int, value: Byte): Unit\n fun setInt16(byteOffset: Int, value: Short, littleEndian: Boolean = definedExternally): Unit\n fun setUint16(byteOffset: Int, value: Short, littleEndian: Boolean = definedExternally): Unit\n fun setInt32(byteOffset: Int, value: Int, littleEndian: Boolean = definedExternally): Unit\n fun setUint32(byteOffset: Int, value: Int, littleEndian: Boolean = definedExternally): Unit\n fun setFloat32(byteOffset: Int, value: Float, littleEndian: Boolean = definedExternally): Unit\n fun setFloat64(byteOffset: Int, value: Double, littleEndian: Boolean = definedExternally): Unit\n}\n\npublic external @marker interface BufferDataSource {\n}\n\npublic external @marker interface TexImageSource {\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See libraries/tools/idl2k for details\n\n@file:Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npackage org.w3c.dom.clipboard\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\npublic external interface ClipboardEventInit : EventInit {\n var clipboardData: DataTransfer? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ClipboardEventInit(clipboardData: DataTransfer? = null, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): ClipboardEventInit {\n val o = js(\"({})\")\n\n o[\"clipboardData\"] = clipboardData\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [ClipboardEvent](https://developer.mozilla.org/en/docs/Web/API/ClipboardEvent) to Kotlin\n */\npublic external open class ClipboardEvent(type: String, eventInitDict: ClipboardEventInit = definedExternally) : Event {\n open val clipboardData: DataTransfer?\n}\n\n/**\n * Exposes the JavaScript [Clipboard](https://developer.mozilla.org/en/docs/Web/API/Clipboard) to Kotlin\n */\npublic external abstract class Clipboard : EventTarget {\n fun read(): Promise\n fun readText(): Promise\n fun write(data: DataTransfer): Promise\n fun writeText(data: String): Promise\n}\n\npublic external interface ClipboardPermissionDescriptor {\n var allowWithoutGesture: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ClipboardPermissionDescriptor(allowWithoutGesture: Boolean? = false): ClipboardPermissionDescriptor {\n val o = js(\"({})\")\n\n o[\"allowWithoutGesture\"] = allowWithoutGesture\n\n return o\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See libraries/tools/idl2k for details\n\n@file:Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npackage org.w3c.dom.css\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\n/**\n * Exposes the JavaScript [CSSStyleDeclaration](https://developer.mozilla.org/en/docs/Web/API/CSSStyleDeclaration) to Kotlin\n */\npublic external abstract class CSSStyleDeclaration : ItemArrayLike {\n open var cssText: String\n override val length: Int\n open val parentRule: CSSRule?\n open var cssFloat: String\n open var _dashed_attribute: String\n open var _camel_cased_attribute: String\n open var _webkit_cased_attribute: String\n open var alignContent: String\n open var alignItems: String\n open var alignSelf: String\n open var animation: String\n open var animationDelay: String\n open var animationDirection: String\n open var animationDuration: String\n open var animationFillMode: String\n open var animationIterationCount: String\n open var animationName: String\n open var animationPlayState: String\n open var animationTimingFunction: String\n open var backfaceVisibility: String\n open var background: String\n open var backgroundAttachment: String\n open var backgroundClip: String\n open var backgroundColor: String\n open var backgroundImage: String\n open var backgroundOrigin: String\n open var backgroundPosition: String\n open var backgroundRepeat: String\n open var backgroundSize: String\n open var border: String\n open var borderBottom: String\n open var borderBottomColor: String\n open var borderBottomLeftRadius: String\n open var borderBottomRightRadius: String\n open var borderBottomStyle: String\n open var borderBottomWidth: String\n open var borderCollapse: String\n open var borderColor: String\n open var borderImage: String\n open var borderImageOutset: String\n open var borderImageRepeat: String\n open var borderImageSlice: String\n open var borderImageSource: String\n open var borderImageWidth: String\n open var borderLeft: String\n open var borderLeftColor: String\n open var borderLeftStyle: String\n open var borderLeftWidth: String\n open var borderRadius: String\n open var borderRight: String\n open var borderRightColor: String\n open var borderRightStyle: String\n open var borderRightWidth: String\n open var borderSpacing: String\n open var borderStyle: String\n open var borderTop: String\n open var borderTopColor: String\n open var borderTopLeftRadius: String\n open var borderTopRightRadius: String\n open var borderTopStyle: String\n open var borderTopWidth: String\n open var borderWidth: String\n open var bottom: String\n open var boxDecorationBreak: String\n open var boxShadow: String\n open var boxSizing: String\n open var breakAfter: String\n open var breakBefore: String\n open var breakInside: String\n open var captionSide: String\n open var clear: String\n open var clip: String\n open var color: String\n open var columnCount: String\n open var columnFill: String\n open var columnGap: String\n open var columnRule: String\n open var columnRuleColor: String\n open var columnRuleStyle: String\n open var columnRuleWidth: String\n open var columnSpan: String\n open var columnWidth: String\n open var columns: String\n open var content: String\n open var counterIncrement: String\n open var counterReset: String\n open var cursor: String\n open var direction: String\n open var display: String\n open var emptyCells: String\n open var filter: String\n open var flex: String\n open var flexBasis: String\n open var flexDirection: String\n open var flexFlow: String\n open var flexGrow: String\n open var flexShrink: String\n open var flexWrap: String\n open var font: String\n open var fontFamily: String\n open var fontFeatureSettings: String\n open var fontKerning: String\n open var fontLanguageOverride: String\n open var fontSize: String\n open var fontSizeAdjust: String\n open var fontStretch: String\n open var fontStyle: String\n open var fontSynthesis: String\n open var fontVariant: String\n open var fontVariantAlternates: String\n open var fontVariantCaps: String\n open var fontVariantEastAsian: String\n open var fontVariantLigatures: String\n open var fontVariantNumeric: String\n open var fontVariantPosition: String\n open var fontWeight: String\n open var hangingPunctuation: String\n open var height: String\n open var hyphens: String\n open var imageOrientation: String\n open var imageRendering: String\n open var imageResolution: String\n open var imeMode: String\n open var justifyContent: String\n open var left: String\n open var letterSpacing: String\n open var lineBreak: String\n open var lineHeight: String\n open var listStyle: String\n open var listStyleImage: String\n open var listStylePosition: String\n open var listStyleType: String\n open var margin: String\n open var marginBottom: String\n open var marginLeft: String\n open var marginRight: String\n open var marginTop: String\n open var mark: String\n open var markAfter: String\n open var markBefore: String\n open var marks: String\n open var marqueeDirection: String\n open var marqueePlayCount: String\n open var marqueeSpeed: String\n open var marqueeStyle: String\n open var mask: String\n open var maskType: String\n open var maxHeight: String\n open var maxWidth: String\n open var minHeight: String\n open var minWidth: String\n open var navDown: String\n open var navIndex: String\n open var navLeft: String\n open var navRight: String\n open var navUp: String\n open var objectFit: String\n open var objectPosition: String\n open var opacity: String\n open var order: String\n open var orphans: String\n open var outline: String\n open var outlineColor: String\n open var outlineOffset: String\n open var outlineStyle: String\n open var outlineWidth: String\n open var overflowWrap: String\n open var overflowX: String\n open var overflowY: String\n open var padding: String\n open var paddingBottom: String\n open var paddingLeft: String\n open var paddingRight: String\n open var paddingTop: String\n open var pageBreakAfter: String\n open var pageBreakBefore: String\n open var pageBreakInside: String\n open var perspective: String\n open var perspectiveOrigin: String\n open var phonemes: String\n open var position: String\n open var quotes: String\n open var resize: String\n open var rest: String\n open var restAfter: String\n open var restBefore: String\n open var right: String\n open var tabSize: String\n open var tableLayout: String\n open var textAlign: String\n open var textAlignLast: String\n open var textCombineUpright: String\n open var textDecoration: String\n open var textDecorationColor: String\n open var textDecorationLine: String\n open var textDecorationStyle: String\n open var textIndent: String\n open var textJustify: String\n open var textOrientation: String\n open var textOverflow: String\n open var textShadow: String\n open var textTransform: String\n open var textUnderlinePosition: String\n open var top: String\n open var transform: String\n open var transformOrigin: String\n open var transformStyle: String\n open var transition: String\n open var transitionDelay: String\n open var transitionDuration: String\n open var transitionProperty: String\n open var transitionTimingFunction: String\n open var unicodeBidi: String\n open var verticalAlign: String\n open var visibility: String\n open var voiceBalance: String\n open var voiceDuration: String\n open var voicePitch: String\n open var voicePitchRange: String\n open var voiceRate: String\n open var voiceStress: String\n open var voiceVolume: String\n open var whiteSpace: String\n open var widows: String\n open var width: String\n open var wordBreak: String\n open var wordSpacing: String\n open var wordWrap: String\n open var writingMode: String\n open var zIndex: String\n override fun item(index: Int): String\n fun getPropertyValue(property: String): String\n fun getPropertyPriority(property: String): String\n fun setProperty(property: String, value: String, priority: String = definedExternally): Unit\n fun setPropertyValue(property: String, value: String): Unit\n fun setPropertyPriority(property: String, priority: String): Unit\n fun removeProperty(property: String): String\n}\n@kotlin.internal.InlineOnly inline operator fun CSSStyleDeclaration.get(index: Int): String? = asDynamic()[index]\n\npublic external abstract class MediaList : ItemArrayLike {\n open var mediaText: String\n override val length: Int\n override fun item(index: Int): String?\n fun appendMedium(medium: String): Unit\n fun deleteMedium(medium: String): Unit\n}\n@kotlin.internal.InlineOnly inline operator fun MediaList.get(index: Int): String? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [StyleSheet](https://developer.mozilla.org/en/docs/Web/API/StyleSheet) to Kotlin\n */\npublic external abstract class StyleSheet {\n open val type: String\n open val href: String?\n open val ownerNode: UnionElementOrProcessingInstruction?\n open val parentStyleSheet: StyleSheet?\n open val title: String?\n open val media: MediaList\n open var disabled: Boolean\n}\n\n/**\n * Exposes the JavaScript [CSSStyleSheet](https://developer.mozilla.org/en/docs/Web/API/CSSStyleSheet) to Kotlin\n */\npublic external abstract class CSSStyleSheet : StyleSheet {\n open val ownerRule: CSSRule?\n open val cssRules: CSSRuleList\n fun insertRule(rule: String, index: Int): Int\n fun deleteRule(index: Int): Unit\n}\n\n/**\n * Exposes the JavaScript [StyleSheetList](https://developer.mozilla.org/en/docs/Web/API/StyleSheetList) to Kotlin\n */\npublic external abstract class StyleSheetList : ItemArrayLike {\n override val length: Int\n override fun item(index: Int): StyleSheet?\n}\n@kotlin.internal.InlineOnly inline operator fun StyleSheetList.get(index: Int): StyleSheet? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [LinkStyle](https://developer.mozilla.org/en/docs/Web/API/LinkStyle) to Kotlin\n */\npublic external interface LinkStyle {\n val sheet: StyleSheet?\n}\n\n/**\n * Exposes the JavaScript [CSSRuleList](https://developer.mozilla.org/en/docs/Web/API/CSSRuleList) to Kotlin\n */\npublic external abstract class CSSRuleList : ItemArrayLike {\n override val length: Int\n override fun item(index: Int): CSSRule?\n}\n@kotlin.internal.InlineOnly inline operator fun CSSRuleList.get(index: Int): CSSRule? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [CSSRule](https://developer.mozilla.org/en/docs/Web/API/CSSRule) to Kotlin\n */\npublic external abstract class CSSRule {\n open val type: Short\n open var cssText: String\n open val parentRule: CSSRule?\n open val parentStyleSheet: CSSStyleSheet?\n\n companion object {\n val STYLE_RULE: Short\n val CHARSET_RULE: Short\n val IMPORT_RULE: Short\n val MEDIA_RULE: Short\n val FONT_FACE_RULE: Short\n val PAGE_RULE: Short\n val MARGIN_RULE: Short\n val NAMESPACE_RULE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [CSSStyleRule](https://developer.mozilla.org/en/docs/Web/API/CSSStyleRule) to Kotlin\n */\npublic external abstract class CSSStyleRule : CSSRule {\n open var selectorText: String\n open val style: CSSStyleDeclaration\n}\n\npublic external abstract class CSSImportRule : CSSRule {\n open val href: String\n open val media: MediaList\n open val styleSheet: CSSStyleSheet\n}\n\n/**\n * Exposes the JavaScript [CSSGroupingRule](https://developer.mozilla.org/en/docs/Web/API/CSSGroupingRule) to Kotlin\n */\npublic external abstract class CSSGroupingRule : CSSRule {\n open val cssRules: CSSRuleList\n fun insertRule(rule: String, index: Int): Int\n fun deleteRule(index: Int): Unit\n}\n\n/**\n * Exposes the JavaScript [CSSMediaRule](https://developer.mozilla.org/en/docs/Web/API/CSSMediaRule) to Kotlin\n */\npublic external abstract class CSSMediaRule : CSSGroupingRule {\n open val media: MediaList\n}\n\n/**\n * Exposes the JavaScript [CSSPageRule](https://developer.mozilla.org/en/docs/Web/API/CSSPageRule) to Kotlin\n */\npublic external abstract class CSSPageRule : CSSGroupingRule {\n open var selectorText: String\n open val style: CSSStyleDeclaration\n}\n\npublic external abstract class CSSMarginRule : CSSRule {\n open val name: String\n open val style: CSSStyleDeclaration\n}\n\n/**\n * Exposes the JavaScript [CSSNamespaceRule](https://developer.mozilla.org/en/docs/Web/API/CSSNamespaceRule) to Kotlin\n */\npublic external abstract class CSSNamespaceRule : CSSRule {\n open val namespaceURI: String\n open val prefix: String\n}\n\npublic external interface ElementCSSInlineStyle {\n val style: CSSStyleDeclaration\n}\n\n/**\n * Exposes the JavaScript [CSS](https://developer.mozilla.org/en/docs/Web/API/CSS) to Kotlin\n */\npublic external abstract class CSS {\n\n companion object {\n fun escape(ident: String): String\n }\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See libraries/tools/idl2k for details\n\n@file:Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npackage org.w3c.dom.events\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\n/**\n * Exposes the JavaScript [UIEvent](https://developer.mozilla.org/en/docs/Web/API/UIEvent) to Kotlin\n */\npublic external open class UIEvent(type: String, eventInitDict: UIEventInit = definedExternally) : Event {\n open val view: Window?\n open val detail: Int\n}\n\npublic external interface UIEventInit : EventInit {\n var view: Window? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var detail: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun UIEventInit(view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): UIEventInit {\n val o = js(\"({})\")\n\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [FocusEvent](https://developer.mozilla.org/en/docs/Web/API/FocusEvent) to Kotlin\n */\npublic external open class FocusEvent(type: String, eventInitDict: FocusEventInit = definedExternally) : UIEvent {\n open val relatedTarget: EventTarget?\n}\n\npublic external interface FocusEventInit : UIEventInit {\n var relatedTarget: EventTarget? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun FocusEventInit(relatedTarget: EventTarget? = null, view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): FocusEventInit {\n val o = js(\"({})\")\n\n o[\"relatedTarget\"] = relatedTarget\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [MouseEvent](https://developer.mozilla.org/en/docs/Web/API/MouseEvent) to Kotlin\n */\npublic external open class MouseEvent(type: String, eventInitDict: MouseEventInit = definedExternally) : UIEvent, UnionElementOrMouseEvent {\n open val region: String?\n open val screenX: Int\n open val screenY: Int\n open val pageX: Double\n open val pageY: Double\n open val clientX: Int\n open val clientY: Int\n open val offsetX: Double\n open val offsetY: Double\n open val ctrlKey: Boolean\n open val shiftKey: Boolean\n open val altKey: Boolean\n open val metaKey: Boolean\n open val button: Short\n open val buttons: Short\n open val relatedTarget: EventTarget?\n fun getModifierState(keyArg: String): Boolean\n}\n\npublic external interface MouseEventInit : EventModifierInit {\n var screenX: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var screenY: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var clientX: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var clientY: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var button: Short? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var buttons: Short? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var relatedTarget: EventTarget? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MouseEventInit(screenX: Int? = 0, screenY: Int? = 0, clientX: Int? = 0, clientY: Int? = 0, button: Short? = 0, buttons: Short? = 0, relatedTarget: EventTarget? = null, ctrlKey: Boolean? = false, shiftKey: Boolean? = false, altKey: Boolean? = false, metaKey: Boolean? = false, modifierAltGraph: Boolean? = false, modifierCapsLock: Boolean? = false, modifierFn: Boolean? = false, modifierFnLock: Boolean? = false, modifierHyper: Boolean? = false, modifierNumLock: Boolean? = false, modifierScrollLock: Boolean? = false, modifierSuper: Boolean? = false, modifierSymbol: Boolean? = false, modifierSymbolLock: Boolean? = false, view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): MouseEventInit {\n val o = js(\"({})\")\n\n o[\"screenX\"] = screenX\n o[\"screenY\"] = screenY\n o[\"clientX\"] = clientX\n o[\"clientY\"] = clientY\n o[\"button\"] = button\n o[\"buttons\"] = buttons\n o[\"relatedTarget\"] = relatedTarget\n o[\"ctrlKey\"] = ctrlKey\n o[\"shiftKey\"] = shiftKey\n o[\"altKey\"] = altKey\n o[\"metaKey\"] = metaKey\n o[\"modifierAltGraph\"] = modifierAltGraph\n o[\"modifierCapsLock\"] = modifierCapsLock\n o[\"modifierFn\"] = modifierFn\n o[\"modifierFnLock\"] = modifierFnLock\n o[\"modifierHyper\"] = modifierHyper\n o[\"modifierNumLock\"] = modifierNumLock\n o[\"modifierScrollLock\"] = modifierScrollLock\n o[\"modifierSuper\"] = modifierSuper\n o[\"modifierSymbol\"] = modifierSymbol\n o[\"modifierSymbolLock\"] = modifierSymbolLock\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\npublic external interface EventModifierInit : UIEventInit {\n var ctrlKey: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var shiftKey: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var altKey: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var metaKey: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierAltGraph: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierCapsLock: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierFn: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierFnLock: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierHyper: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierNumLock: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierScrollLock: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierSuper: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierSymbol: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierSymbolLock: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun EventModifierInit(ctrlKey: Boolean? = false, shiftKey: Boolean? = false, altKey: Boolean? = false, metaKey: Boolean? = false, modifierAltGraph: Boolean? = false, modifierCapsLock: Boolean? = false, modifierFn: Boolean? = false, modifierFnLock: Boolean? = false, modifierHyper: Boolean? = false, modifierNumLock: Boolean? = false, modifierScrollLock: Boolean? = false, modifierSuper: Boolean? = false, modifierSymbol: Boolean? = false, modifierSymbolLock: Boolean? = false, view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): EventModifierInit {\n val o = js(\"({})\")\n\n o[\"ctrlKey\"] = ctrlKey\n o[\"shiftKey\"] = shiftKey\n o[\"altKey\"] = altKey\n o[\"metaKey\"] = metaKey\n o[\"modifierAltGraph\"] = modifierAltGraph\n o[\"modifierCapsLock\"] = modifierCapsLock\n o[\"modifierFn\"] = modifierFn\n o[\"modifierFnLock\"] = modifierFnLock\n o[\"modifierHyper\"] = modifierHyper\n o[\"modifierNumLock\"] = modifierNumLock\n o[\"modifierScrollLock\"] = modifierScrollLock\n o[\"modifierSuper\"] = modifierSuper\n o[\"modifierSymbol\"] = modifierSymbol\n o[\"modifierSymbolLock\"] = modifierSymbolLock\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [WheelEvent](https://developer.mozilla.org/en/docs/Web/API/WheelEvent) to Kotlin\n */\npublic external open class WheelEvent(type: String, eventInitDict: WheelEventInit = definedExternally) : MouseEvent {\n open val deltaX: Double\n open val deltaY: Double\n open val deltaZ: Double\n open val deltaMode: Int\n\n companion object {\n val DOM_DELTA_PIXEL: Int\n val DOM_DELTA_LINE: Int\n val DOM_DELTA_PAGE: Int\n }\n}\n\npublic external interface WheelEventInit : MouseEventInit {\n var deltaX: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var deltaY: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var deltaZ: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var deltaMode: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun WheelEventInit(deltaX: Double? = 0.0, deltaY: Double? = 0.0, deltaZ: Double? = 0.0, deltaMode: Int? = 0, screenX: Int? = 0, screenY: Int? = 0, clientX: Int? = 0, clientY: Int? = 0, button: Short? = 0, buttons: Short? = 0, relatedTarget: EventTarget? = null, ctrlKey: Boolean? = false, shiftKey: Boolean? = false, altKey: Boolean? = false, metaKey: Boolean? = false, modifierAltGraph: Boolean? = false, modifierCapsLock: Boolean? = false, modifierFn: Boolean? = false, modifierFnLock: Boolean? = false, modifierHyper: Boolean? = false, modifierNumLock: Boolean? = false, modifierScrollLock: Boolean? = false, modifierSuper: Boolean? = false, modifierSymbol: Boolean? = false, modifierSymbolLock: Boolean? = false, view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): WheelEventInit {\n val o = js(\"({})\")\n\n o[\"deltaX\"] = deltaX\n o[\"deltaY\"] = deltaY\n o[\"deltaZ\"] = deltaZ\n o[\"deltaMode\"] = deltaMode\n o[\"screenX\"] = screenX\n o[\"screenY\"] = screenY\n o[\"clientX\"] = clientX\n o[\"clientY\"] = clientY\n o[\"button\"] = button\n o[\"buttons\"] = buttons\n o[\"relatedTarget\"] = relatedTarget\n o[\"ctrlKey\"] = ctrlKey\n o[\"shiftKey\"] = shiftKey\n o[\"altKey\"] = altKey\n o[\"metaKey\"] = metaKey\n o[\"modifierAltGraph\"] = modifierAltGraph\n o[\"modifierCapsLock\"] = modifierCapsLock\n o[\"modifierFn\"] = modifierFn\n o[\"modifierFnLock\"] = modifierFnLock\n o[\"modifierHyper\"] = modifierHyper\n o[\"modifierNumLock\"] = modifierNumLock\n o[\"modifierScrollLock\"] = modifierScrollLock\n o[\"modifierSuper\"] = modifierSuper\n o[\"modifierSymbol\"] = modifierSymbol\n o[\"modifierSymbolLock\"] = modifierSymbolLock\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [InputEvent](https://developer.mozilla.org/en/docs/Web/API/InputEvent) to Kotlin\n */\npublic external open class InputEvent(type: String, eventInitDict: InputEventInit = definedExternally) : UIEvent {\n open val data: String\n open val isComposing: Boolean\n}\n\npublic external interface InputEventInit : UIEventInit {\n var data: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var isComposing: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun InputEventInit(data: String? = \"\", isComposing: Boolean? = false, view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): InputEventInit {\n val o = js(\"({})\")\n\n o[\"data\"] = data\n o[\"isComposing\"] = isComposing\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [KeyboardEvent](https://developer.mozilla.org/en/docs/Web/API/KeyboardEvent) to Kotlin\n */\npublic external open class KeyboardEvent(type: String, eventInitDict: KeyboardEventInit = definedExternally) : UIEvent {\n open val key: String\n open val code: String\n open val location: Int\n open val ctrlKey: Boolean\n open val shiftKey: Boolean\n open val altKey: Boolean\n open val metaKey: Boolean\n open val repeat: Boolean\n open val isComposing: Boolean\n open val charCode: Int\n open val keyCode: Int\n open val which: Int\n fun getModifierState(keyArg: String): Boolean\n\n companion object {\n val DOM_KEY_LOCATION_STANDARD: Int\n val DOM_KEY_LOCATION_LEFT: Int\n val DOM_KEY_LOCATION_RIGHT: Int\n val DOM_KEY_LOCATION_NUMPAD: Int\n }\n}\n\npublic external interface KeyboardEventInit : EventModifierInit {\n var key: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var code: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var location: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var repeat: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var isComposing: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun KeyboardEventInit(key: String? = \"\", code: String? = \"\", location: Int? = 0, repeat: Boolean? = false, isComposing: Boolean? = false, ctrlKey: Boolean? = false, shiftKey: Boolean? = false, altKey: Boolean? = false, metaKey: Boolean? = false, modifierAltGraph: Boolean? = false, modifierCapsLock: Boolean? = false, modifierFn: Boolean? = false, modifierFnLock: Boolean? = false, modifierHyper: Boolean? = false, modifierNumLock: Boolean? = false, modifierScrollLock: Boolean? = false, modifierSuper: Boolean? = false, modifierSymbol: Boolean? = false, modifierSymbolLock: Boolean? = false, view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): KeyboardEventInit {\n val o = js(\"({})\")\n\n o[\"key\"] = key\n o[\"code\"] = code\n o[\"location\"] = location\n o[\"repeat\"] = repeat\n o[\"isComposing\"] = isComposing\n o[\"ctrlKey\"] = ctrlKey\n o[\"shiftKey\"] = shiftKey\n o[\"altKey\"] = altKey\n o[\"metaKey\"] = metaKey\n o[\"modifierAltGraph\"] = modifierAltGraph\n o[\"modifierCapsLock\"] = modifierCapsLock\n o[\"modifierFn\"] = modifierFn\n o[\"modifierFnLock\"] = modifierFnLock\n o[\"modifierHyper\"] = modifierHyper\n o[\"modifierNumLock\"] = modifierNumLock\n o[\"modifierScrollLock\"] = modifierScrollLock\n o[\"modifierSuper\"] = modifierSuper\n o[\"modifierSymbol\"] = modifierSymbol\n o[\"modifierSymbolLock\"] = modifierSymbolLock\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [CompositionEvent](https://developer.mozilla.org/en/docs/Web/API/CompositionEvent) to Kotlin\n */\npublic external open class CompositionEvent(type: String, eventInitDict: CompositionEventInit = definedExternally) : UIEvent {\n open val data: String\n}\n\npublic external interface CompositionEventInit : UIEventInit {\n var data: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun CompositionEventInit(data: String? = \"\", view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): CompositionEventInit {\n val o = js(\"({})\")\n\n o[\"data\"] = data\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [Event](https://developer.mozilla.org/en/docs/Web/API/Event) to Kotlin\n */\npublic external open class Event(type: String, eventInitDict: EventInit = definedExternally) {\n open val type: String\n open val target: EventTarget?\n open val currentTarget: EventTarget?\n open val eventPhase: Short\n open val bubbles: Boolean\n open val cancelable: Boolean\n open val defaultPrevented: Boolean\n open val composed: Boolean\n open val isTrusted: Boolean\n open val timeStamp: Number\n fun composedPath(): Array\n fun stopPropagation(): Unit\n fun stopImmediatePropagation(): Unit\n fun preventDefault(): Unit\n fun initEvent(type: String, bubbles: Boolean, cancelable: Boolean): Unit\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [EventTarget](https://developer.mozilla.org/en/docs/Web/API/EventTarget) to Kotlin\n */\npublic external abstract class EventTarget {\n fun addEventListener(type: String, callback: EventListener?, options: dynamic = definedExternally): Unit\n fun addEventListener(type: String, callback: ((Event) -> Unit)?, options: dynamic = definedExternally): Unit\n fun removeEventListener(type: String, callback: EventListener?, options: dynamic = definedExternally): Unit\n fun removeEventListener(type: String, callback: ((Event) -> Unit)?, options: dynamic = definedExternally): Unit\n fun dispatchEvent(event: Event): Boolean\n}\n\n/**\n * Exposes the JavaScript [EventListener](https://developer.mozilla.org/en/docs/Web/API/EventListener) to Kotlin\n */\npublic external interface EventListener {\n fun handleEvent(event: Event): Unit\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See libraries/tools/idl2k for details\n\n@file:Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npackage org.w3c.dom\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\n/**\n * Exposes the JavaScript [Navigator](https://developer.mozilla.org/en/docs/Web/API/Navigator) to Kotlin\n */\npublic external abstract class Navigator : NavigatorID, NavigatorLanguage, NavigatorOnLine, NavigatorContentUtils, NavigatorCookies, NavigatorPlugins, NavigatorConcurrentHardware {\n open val serviceWorker: ServiceWorkerContainer\n open val maxTouchPoints: Int\n open val mediaDevices: MediaDevices\n open val clipboard: Clipboard\n fun vibrate(pattern: dynamic): Boolean\n fun getUserMedia(constraints: MediaStreamConstraints, successCallback: (MediaStream) -> Unit, errorCallback: (dynamic) -> Unit): Unit\n}\n\n/**\n * Exposes the JavaScript [Document](https://developer.mozilla.org/en/docs/Web/API/Document) to Kotlin\n */\npublic external open class Document : Node, GlobalEventHandlers, DocumentAndElementEventHandlers, NonElementParentNode, DocumentOrShadowRoot, ParentNode, GeometryUtils {\n open val fullscreenEnabled: Boolean\n open val fullscreen: Boolean\n var onfullscreenchange: ((Event) -> dynamic)?\n var onfullscreenerror: ((Event) -> dynamic)?\n open val rootElement: SVGSVGElement?\n var title: String\n open val referrer: String\n var domain: String\n open val activeElement: Element?\n open val location: Location?\n var cookie: String\n open val lastModified: String\n open val readyState: DocumentReadyState\n var dir: String\n var body: HTMLElement?\n open val head: HTMLHeadElement?\n open val images: HTMLCollection\n open val embeds: HTMLCollection\n open val plugins: HTMLCollection\n open val links: HTMLCollection\n open val forms: HTMLCollection\n open val scripts: HTMLCollection\n open val currentScript: HTMLOrSVGScriptElement?\n open val defaultView: Window?\n var designMode: String\n var onreadystatechange: ((Event) -> dynamic)?\n var fgColor: String\n var linkColor: String\n var vlinkColor: String\n var alinkColor: String\n var bgColor: String\n open val anchors: HTMLCollection\n open val applets: HTMLCollection\n open val all: HTMLAllCollection\n open val implementation: DOMImplementation\n open val URL: String\n open val documentURI: String\n open val origin: String\n open val compatMode: String\n open val characterSet: String\n open val charset: String\n open val inputEncoding: String\n open val contentType: String\n open val doctype: DocumentType?\n open val documentElement: Element?\n open val scrollingElement: Element?\n open val styleSheets: StyleSheetList\n override var ongotpointercapture: ((PointerEvent) -> dynamic)?\n override var onlostpointercapture: ((PointerEvent) -> dynamic)?\n override var onpointerdown: ((PointerEvent) -> dynamic)?\n override var onpointermove: ((PointerEvent) -> dynamic)?\n override var onpointerup: ((PointerEvent) -> dynamic)?\n override var onpointercancel: ((PointerEvent) -> dynamic)?\n override var onpointerover: ((PointerEvent) -> dynamic)?\n override var onpointerout: ((PointerEvent) -> dynamic)?\n override var onpointerenter: ((PointerEvent) -> dynamic)?\n override var onpointerleave: ((PointerEvent) -> dynamic)?\n override var onabort: ((Event) -> dynamic)?\n override var onblur: ((FocusEvent) -> dynamic)?\n override var oncancel: ((Event) -> dynamic)?\n override var oncanplay: ((Event) -> dynamic)?\n override var oncanplaythrough: ((Event) -> dynamic)?\n override var onchange: ((Event) -> dynamic)?\n override var onclick: ((MouseEvent) -> dynamic)?\n override var onclose: ((Event) -> dynamic)?\n override var oncontextmenu: ((MouseEvent) -> dynamic)?\n override var oncuechange: ((Event) -> dynamic)?\n override var ondblclick: ((MouseEvent) -> dynamic)?\n override var ondrag: ((DragEvent) -> dynamic)?\n override var ondragend: ((DragEvent) -> dynamic)?\n override var ondragenter: ((DragEvent) -> dynamic)?\n override var ondragexit: ((DragEvent) -> dynamic)?\n override var ondragleave: ((DragEvent) -> dynamic)?\n override var ondragover: ((DragEvent) -> dynamic)?\n override var ondragstart: ((DragEvent) -> dynamic)?\n override var ondrop: ((DragEvent) -> dynamic)?\n override var ondurationchange: ((Event) -> dynamic)?\n override var onemptied: ((Event) -> dynamic)?\n override var onended: ((Event) -> dynamic)?\n override var onerror: ((dynamic, String, Int, Int, Any?) -> dynamic)?\n override var onfocus: ((FocusEvent) -> dynamic)?\n override var oninput: ((InputEvent) -> dynamic)?\n override var oninvalid: ((Event) -> dynamic)?\n override var onkeydown: ((KeyboardEvent) -> dynamic)?\n override var onkeypress: ((KeyboardEvent) -> dynamic)?\n override var onkeyup: ((KeyboardEvent) -> dynamic)?\n override var onload: ((Event) -> dynamic)?\n override var onloadeddata: ((Event) -> dynamic)?\n override var onloadedmetadata: ((Event) -> dynamic)?\n override var onloadend: ((Event) -> dynamic)?\n override var onloadstart: ((ProgressEvent) -> dynamic)?\n override var onmousedown: ((MouseEvent) -> dynamic)?\n override var onmouseenter: ((MouseEvent) -> dynamic)?\n override var onmouseleave: ((MouseEvent) -> dynamic)?\n override var onmousemove: ((MouseEvent) -> dynamic)?\n override var onmouseout: ((MouseEvent) -> dynamic)?\n override var onmouseover: ((MouseEvent) -> dynamic)?\n override var onmouseup: ((MouseEvent) -> dynamic)?\n override var onwheel: ((WheelEvent) -> dynamic)?\n override var onpause: ((Event) -> dynamic)?\n override var onplay: ((Event) -> dynamic)?\n override var onplaying: ((Event) -> dynamic)?\n override var onprogress: ((ProgressEvent) -> dynamic)?\n override var onratechange: ((Event) -> dynamic)?\n override var onreset: ((Event) -> dynamic)?\n override var onresize: ((Event) -> dynamic)?\n override var onscroll: ((Event) -> dynamic)?\n override var onseeked: ((Event) -> dynamic)?\n override var onseeking: ((Event) -> dynamic)?\n override var onselect: ((Event) -> dynamic)?\n override var onshow: ((Event) -> dynamic)?\n override var onstalled: ((Event) -> dynamic)?\n override var onsubmit: ((Event) -> dynamic)?\n override var onsuspend: ((Event) -> dynamic)?\n override var ontimeupdate: ((Event) -> dynamic)?\n override var ontoggle: ((Event) -> dynamic)?\n override var onvolumechange: ((Event) -> dynamic)?\n override var onwaiting: ((Event) -> dynamic)?\n override var oncopy: ((ClipboardEvent) -> dynamic)?\n override var oncut: ((ClipboardEvent) -> dynamic)?\n override var onpaste: ((ClipboardEvent) -> dynamic)?\n override val fullscreenElement: Element?\n override val children: HTMLCollection\n override val firstElementChild: Element?\n override val lastElementChild: Element?\n override val childElementCount: Int\n fun exitFullscreen(): Promise\n fun getElementsByName(elementName: String): NodeList\n fun open(type: String = definedExternally, replace: String = definedExternally): Document\n fun open(url: String, name: String, features: String): Window\n fun close(): Unit\n fun write(vararg text: String): Unit\n fun writeln(vararg text: String): Unit\n fun hasFocus(): Boolean\n fun execCommand(commandId: String, showUI: Boolean = definedExternally, value: String = definedExternally): Boolean\n fun queryCommandEnabled(commandId: String): Boolean\n fun queryCommandIndeterm(commandId: String): Boolean\n fun queryCommandState(commandId: String): Boolean\n fun queryCommandSupported(commandId: String): Boolean\n fun queryCommandValue(commandId: String): String\n fun clear(): Unit\n fun captureEvents(): Unit\n fun releaseEvents(): Unit\n fun getElementsByTagName(qualifiedName: String): HTMLCollection\n fun getElementsByTagNameNS(namespace: String?, localName: String): HTMLCollection\n fun getElementsByClassName(classNames: String): HTMLCollection\n fun createElement(localName: String, options: ElementCreationOptions = definedExternally): Element\n fun createElementNS(namespace: String?, qualifiedName: String, options: ElementCreationOptions = definedExternally): Element\n fun createDocumentFragment(): DocumentFragment\n fun createTextNode(data: String): Text\n fun createCDATASection(data: String): CDATASection\n fun createComment(data: String): Comment\n fun createProcessingInstruction(target: String, data: String): ProcessingInstruction\n fun importNode(node: Node, deep: Boolean = definedExternally): Node\n fun adoptNode(node: Node): Node\n fun createAttribute(localName: String): Attr\n fun createAttributeNS(namespace: String?, qualifiedName: String): Attr\n fun createEvent(interface_: String): Event\n fun createRange(): Range\n fun createNodeIterator(root: Node, whatToShow: Int = definedExternally, filter: NodeFilter? = definedExternally): NodeIterator\n fun createNodeIterator(root: Node, whatToShow: Int = definedExternally, filter: ((Node) -> Short)? = definedExternally): NodeIterator\n fun createTreeWalker(root: Node, whatToShow: Int = definedExternally, filter: NodeFilter? = definedExternally): TreeWalker\n fun createTreeWalker(root: Node, whatToShow: Int = definedExternally, filter: ((Node) -> Short)? = definedExternally): TreeWalker\n fun elementFromPoint(x: Double, y: Double): Element?\n fun elementsFromPoint(x: Double, y: Double): Array\n fun caretPositionFromPoint(x: Double, y: Double): CaretPosition?\n override fun getElementById(elementId: String): Element?\n override fun prepend(vararg nodes: dynamic): Unit\n override fun append(vararg nodes: dynamic): Unit\n override fun querySelector(selectors: String): Element?\n override fun querySelectorAll(selectors: String): NodeList\n override fun getBoxQuads(options: BoxQuadOptions /* = definedExternally */): Array\n override fun convertQuadFromNode(quad: dynamic, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertRectFromNode(rect: DOMRectReadOnly, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertPointFromNode(point: DOMPointInit, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint\n}\n@kotlin.internal.InlineOnly inline operator fun Document.get(name: String): dynamic = asDynamic()[name]\n\n/**\n * Exposes the JavaScript [Window](https://developer.mozilla.org/en/docs/Web/API/Window) to Kotlin\n */\npublic external abstract class Window : EventTarget, GlobalEventHandlers, WindowEventHandlers, WindowOrWorkerGlobalScope, WindowSessionStorage, WindowLocalStorage, GlobalPerformance, UnionMessagePortOrWindow {\n override val performance: Performance\n open val window: Window\n open val self: Window\n open val document: Document\n open var name: String\n open val location: Location\n open val history: History\n open val customElements: CustomElementRegistry\n open val locationbar: BarProp\n open val menubar: BarProp\n open val personalbar: BarProp\n open val scrollbars: BarProp\n open val statusbar: BarProp\n open val toolbar: BarProp\n open var status: String\n open val closed: Boolean\n open val frames: Window\n open val length: Int\n open val top: Window\n open var opener: Any?\n open val parent: Window\n open val frameElement: Element?\n open val navigator: Navigator\n open val applicationCache: ApplicationCache\n open val external: External\n open val screen: Screen\n open val innerWidth: Int\n open val innerHeight: Int\n open val scrollX: Double\n open val pageXOffset: Double\n open val scrollY: Double\n open val pageYOffset: Double\n open val screenX: Int\n open val screenY: Int\n open val outerWidth: Int\n open val outerHeight: Int\n open val devicePixelRatio: Double\n fun close(): Unit\n fun stop(): Unit\n fun focus(): Unit\n fun blur(): Unit\n fun open(url: String = definedExternally, target: String = definedExternally, features: String = definedExternally): Window?\n fun alert(): Unit\n fun alert(message: String): Unit\n fun confirm(message: String = definedExternally): Boolean\n fun prompt(message: String = definedExternally, default: String = definedExternally): String?\n fun print(): Unit\n fun requestAnimationFrame(callback: (Double) -> Unit): Int\n fun cancelAnimationFrame(handle: Int): Unit\n fun postMessage(message: Any?, targetOrigin: String, transfer: Array = definedExternally): Unit\n fun captureEvents(): Unit\n fun releaseEvents(): Unit\n fun matchMedia(query: String): MediaQueryList\n fun moveTo(x: Int, y: Int): Unit\n fun moveBy(x: Int, y: Int): Unit\n fun resizeTo(x: Int, y: Int): Unit\n fun resizeBy(x: Int, y: Int): Unit\n fun scroll(options: ScrollToOptions = definedExternally): Unit\n fun scroll(x: Double, y: Double): Unit\n fun scrollTo(options: ScrollToOptions = definedExternally): Unit\n fun scrollTo(x: Double, y: Double): Unit\n fun scrollBy(options: ScrollToOptions = definedExternally): Unit\n fun scrollBy(x: Double, y: Double): Unit\n fun getComputedStyle(elt: Element, pseudoElt: String? = definedExternally): CSSStyleDeclaration\n}\n@kotlin.internal.InlineOnly inline operator fun Window.get(name: String): dynamic = asDynamic()[name]\n\npublic external abstract class HTMLAllCollection {\n open val length: Int\n// fun namedItem(name: String): UnionElementOrHTMLCollection?\n fun item(nameOrIndex: String = definedExternally): UnionElementOrHTMLCollection?\n}\n//@kotlin.internal.InlineOnly inline operator fun HTMLAllCollection.get(index: Int): Element? = asDynamic()[index]\n//@kotlin.internal.InlineOnly inline operator fun HTMLAllCollection.get(name: String): UnionElementOrHTMLCollection? = asDynamic()[name]\n\n/**\n * Exposes the JavaScript [HTMLFormControlsCollection](https://developer.mozilla.org/en/docs/Web/API/HTMLFormControlsCollection) to Kotlin\n */\npublic external abstract class HTMLFormControlsCollection : HTMLCollection {\n// override fun namedItem(name: String): UnionElementOrRadioNodeList?\n}\n//@kotlin.internal.InlineOnly override inline operator fun HTMLFormControlsCollection.get(name: String): UnionElementOrRadioNodeList? = asDynamic()[name]\n\n/**\n * Exposes the JavaScript [RadioNodeList](https://developer.mozilla.org/en/docs/Web/API/RadioNodeList) to Kotlin\n */\npublic external abstract class RadioNodeList : NodeList, UnionElementOrRadioNodeList {\n open var value: String\n}\n\n/**\n * Exposes the JavaScript [HTMLOptionsCollection](https://developer.mozilla.org/en/docs/Web/API/HTMLOptionsCollection) to Kotlin\n */\npublic external abstract class HTMLOptionsCollection : HTMLCollection {\n override var length: Int\n open var selectedIndex: Int\n fun add(element: UnionHTMLOptGroupElementOrHTMLOptionElement, before: dynamic = definedExternally): Unit\n fun remove(index: Int): Unit\n}\n@kotlin.internal.InlineOnly inline operator fun HTMLOptionsCollection.set(index: Int, option: HTMLOptionElement?): Unit { asDynamic()[index] = option; }\n\n/**\n * Exposes the JavaScript [HTMLElement](https://developer.mozilla.org/en/docs/Web/API/HTMLElement) to Kotlin\n */\npublic external abstract class HTMLElement : Element, ElementCSSInlineStyle, GlobalEventHandlers, DocumentAndElementEventHandlers, ElementContentEditable {\n open var title: String\n open var lang: String\n open var translate: Boolean\n open var dir: String\n open val dataset: DOMStringMap\n open var hidden: Boolean\n open var tabIndex: Int\n open var accessKey: String\n open val accessKeyLabel: String\n open var draggable: Boolean\n open val dropzone: DOMTokenList\n open var contextMenu: HTMLMenuElement?\n open var spellcheck: Boolean\n open var innerText: String\n open val offsetParent: Element?\n open val offsetTop: Int\n open val offsetLeft: Int\n open val offsetWidth: Int\n open val offsetHeight: Int\n fun click(): Unit\n fun focus(): Unit\n fun blur(): Unit\n fun forceSpellCheck(): Unit\n}\n\n/**\n * Exposes the JavaScript [HTMLUnknownElement](https://developer.mozilla.org/en/docs/Web/API/HTMLUnknownElement) to Kotlin\n */\npublic external abstract class HTMLUnknownElement : HTMLElement {\n}\n\n/**\n * Exposes the JavaScript [DOMStringMap](https://developer.mozilla.org/en/docs/Web/API/DOMStringMap) to Kotlin\n */\npublic external abstract class DOMStringMap {\n}\n@kotlin.internal.InlineOnly inline operator fun DOMStringMap.get(name: String): String? = asDynamic()[name]\n@kotlin.internal.InlineOnly inline operator fun DOMStringMap.set(name: String, value: String): Unit { asDynamic()[name] = value; }\n\n/**\n * Exposes the JavaScript [HTMLHtmlElement](https://developer.mozilla.org/en/docs/Web/API/HTMLHtmlElement) to Kotlin\n */\npublic external abstract class HTMLHtmlElement : HTMLElement {\n open var version: String\n}\n\n/**\n * Exposes the JavaScript [HTMLHeadElement](https://developer.mozilla.org/en/docs/Web/API/HTMLHeadElement) to Kotlin\n */\npublic external abstract class HTMLHeadElement : HTMLElement {\n}\n\n/**\n * Exposes the JavaScript [HTMLTitleElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTitleElement) to Kotlin\n */\npublic external abstract class HTMLTitleElement : HTMLElement {\n open var text: String\n}\n\n/**\n * Exposes the JavaScript [HTMLBaseElement](https://developer.mozilla.org/en/docs/Web/API/HTMLBaseElement) to Kotlin\n */\npublic external abstract class HTMLBaseElement : HTMLElement {\n open var href: String\n open var target: String\n}\n\n/**\n * Exposes the JavaScript [HTMLLinkElement](https://developer.mozilla.org/en/docs/Web/API/HTMLLinkElement) to Kotlin\n */\npublic external abstract class HTMLLinkElement : HTMLElement, LinkStyle {\n open var scope: String\n open var workerType: WorkerType\n open var href: String\n open var crossOrigin: String?\n open var rel: String\n @JsName(\"as\") open var as_: RequestDestination\n open val relList: DOMTokenList\n open var media: String\n open var nonce: String\n open var hreflang: String\n open var type: String\n open val sizes: DOMTokenList\n open var referrerPolicy: String\n open var charset: String\n open var rev: String\n open var target: String\n}\n\n/**\n * Exposes the JavaScript [HTMLMetaElement](https://developer.mozilla.org/en/docs/Web/API/HTMLMetaElement) to Kotlin\n */\npublic external abstract class HTMLMetaElement : HTMLElement {\n open var name: String\n open var httpEquiv: String\n open var content: String\n open var scheme: String\n}\n\n/**\n * Exposes the JavaScript [HTMLStyleElement](https://developer.mozilla.org/en/docs/Web/API/HTMLStyleElement) to Kotlin\n */\npublic external abstract class HTMLStyleElement : HTMLElement, LinkStyle {\n open var media: String\n open var nonce: String\n open var type: String\n}\n\n/**\n * Exposes the JavaScript [HTMLBodyElement](https://developer.mozilla.org/en/docs/Web/API/HTMLBodyElement) to Kotlin\n */\npublic external abstract class HTMLBodyElement : HTMLElement, WindowEventHandlers {\n open var text: String\n open var link: String\n open var vLink: String\n open var aLink: String\n open var bgColor: String\n open var background: String\n}\n\n/**\n * Exposes the JavaScript [HTMLHeadingElement](https://developer.mozilla.org/en/docs/Web/API/HTMLHeadingElement) to Kotlin\n */\npublic external abstract class HTMLHeadingElement : HTMLElement {\n open var align: String\n}\n\n/**\n * Exposes the JavaScript [HTMLParagraphElement](https://developer.mozilla.org/en/docs/Web/API/HTMLParagraphElement) to Kotlin\n */\npublic external abstract class HTMLParagraphElement : HTMLElement {\n open var align: String\n}\n\n/**\n * Exposes the JavaScript [HTMLHRElement](https://developer.mozilla.org/en/docs/Web/API/HTMLHRElement) to Kotlin\n */\npublic external abstract class HTMLHRElement : HTMLElement {\n open var align: String\n open var color: String\n open var noShade: Boolean\n open var size: String\n open var width: String\n}\n\n/**\n * Exposes the JavaScript [HTMLPreElement](https://developer.mozilla.org/en/docs/Web/API/HTMLPreElement) to Kotlin\n */\npublic external abstract class HTMLPreElement : HTMLElement {\n open var width: Int\n}\n\n/**\n * Exposes the JavaScript [HTMLQuoteElement](https://developer.mozilla.org/en/docs/Web/API/HTMLQuoteElement) to Kotlin\n */\npublic external abstract class HTMLQuoteElement : HTMLElement {\n open var cite: String\n}\n\n/**\n * Exposes the JavaScript [HTMLOListElement](https://developer.mozilla.org/en/docs/Web/API/HTMLOListElement) to Kotlin\n */\npublic external abstract class HTMLOListElement : HTMLElement {\n open var reversed: Boolean\n open var start: Int\n open var type: String\n open var compact: Boolean\n}\n\n/**\n * Exposes the JavaScript [HTMLUListElement](https://developer.mozilla.org/en/docs/Web/API/HTMLUListElement) to Kotlin\n */\npublic external abstract class HTMLUListElement : HTMLElement {\n open var compact: Boolean\n open var type: String\n}\n\n/**\n * Exposes the JavaScript [HTMLLIElement](https://developer.mozilla.org/en/docs/Web/API/HTMLLIElement) to Kotlin\n */\npublic external abstract class HTMLLIElement : HTMLElement {\n open var value: Int\n open var type: String\n}\n\n/**\n * Exposes the JavaScript [HTMLDListElement](https://developer.mozilla.org/en/docs/Web/API/HTMLDListElement) to Kotlin\n */\npublic external abstract class HTMLDListElement : HTMLElement {\n open var compact: Boolean\n}\n\n/**\n * Exposes the JavaScript [HTMLDivElement](https://developer.mozilla.org/en/docs/Web/API/HTMLDivElement) to Kotlin\n */\npublic external abstract class HTMLDivElement : HTMLElement {\n open var align: String\n}\n\n/**\n * Exposes the JavaScript [HTMLAnchorElement](https://developer.mozilla.org/en/docs/Web/API/HTMLAnchorElement) to Kotlin\n */\npublic external abstract class HTMLAnchorElement : HTMLElement, HTMLHyperlinkElementUtils {\n open var target: String\n open var download: String\n open var ping: String\n open var rel: String\n open val relList: DOMTokenList\n open var hreflang: String\n open var type: String\n open var text: String\n open var referrerPolicy: String\n open var coords: String\n open var charset: String\n open var name: String\n open var rev: String\n open var shape: String\n}\n\n/**\n * Exposes the JavaScript [HTMLDataElement](https://developer.mozilla.org/en/docs/Web/API/HTMLDataElement) to Kotlin\n */\npublic external abstract class HTMLDataElement : HTMLElement {\n open var value: String\n}\n\n/**\n * Exposes the JavaScript [HTMLTimeElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTimeElement) to Kotlin\n */\npublic external abstract class HTMLTimeElement : HTMLElement {\n open var dateTime: String\n}\n\n/**\n * Exposes the JavaScript [HTMLSpanElement](https://developer.mozilla.org/en/docs/Web/API/HTMLSpanElement) to Kotlin\n */\npublic external abstract class HTMLSpanElement : HTMLElement {\n}\n\n/**\n * Exposes the JavaScript [HTMLBRElement](https://developer.mozilla.org/en/docs/Web/API/HTMLBRElement) to Kotlin\n */\npublic external abstract class HTMLBRElement : HTMLElement {\n open var clear: String\n}\n\n/**\n * Exposes the JavaScript [HTMLHyperlinkElementUtils](https://developer.mozilla.org/en/docs/Web/API/HTMLHyperlinkElementUtils) to Kotlin\n */\npublic external interface HTMLHyperlinkElementUtils {\n var href: String\n val origin: String\n var protocol: String\n var username: String\n var password: String\n var host: String\n var hostname: String\n var port: String\n var pathname: String\n var search: String\n var hash: String\n}\n\n/**\n * Exposes the JavaScript [HTMLModElement](https://developer.mozilla.org/en/docs/Web/API/HTMLModElement) to Kotlin\n */\npublic external abstract class HTMLModElement : HTMLElement {\n open var cite: String\n open var dateTime: String\n}\n\n/**\n * Exposes the JavaScript [HTMLPictureElement](https://developer.mozilla.org/en/docs/Web/API/HTMLPictureElement) to Kotlin\n */\npublic external abstract class HTMLPictureElement : HTMLElement {\n}\n\n/**\n * Exposes the JavaScript [HTMLSourceElement](https://developer.mozilla.org/en/docs/Web/API/HTMLSourceElement) to Kotlin\n */\npublic external abstract class HTMLSourceElement : HTMLElement {\n open var src: String\n open var type: String\n open var srcset: String\n open var sizes: String\n open var media: String\n}\n\n/**\n * Exposes the JavaScript [HTMLImageElement](https://developer.mozilla.org/en/docs/Web/API/HTMLImageElement) to Kotlin\n */\npublic external abstract class HTMLImageElement : HTMLElement, TexImageSource, HTMLOrSVGImageElement {\n open var alt: String\n open var src: String\n open var srcset: String\n open var sizes: String\n open var crossOrigin: String?\n open var useMap: String\n open var isMap: Boolean\n open var width: Int\n open var height: Int\n open val naturalWidth: Int\n open val naturalHeight: Int\n open val complete: Boolean\n open val currentSrc: String\n open var referrerPolicy: String\n open var name: String\n open var lowsrc: String\n open var align: String\n open var hspace: Int\n open var vspace: Int\n open var longDesc: String\n open var border: String\n open val x: Int\n open val y: Int\n}\n\n/**\n * Exposes the JavaScript [Image](https://developer.mozilla.org/en/docs/Web/API/Image) to Kotlin\n */\npublic external open class Image(width: Int = definedExternally, height: Int = definedExternally) : HTMLImageElement {\n override val children: HTMLCollection\n override val firstElementChild: Element?\n override val lastElementChild: Element?\n override val childElementCount: Int\n override val previousElementSibling: Element?\n override val nextElementSibling: Element?\n override val assignedSlot: HTMLSlotElement?\n override val style: CSSStyleDeclaration\n override var ongotpointercapture: ((PointerEvent) -> dynamic)?\n override var onlostpointercapture: ((PointerEvent) -> dynamic)?\n override var onpointerdown: ((PointerEvent) -> dynamic)?\n override var onpointermove: ((PointerEvent) -> dynamic)?\n override var onpointerup: ((PointerEvent) -> dynamic)?\n override var onpointercancel: ((PointerEvent) -> dynamic)?\n override var onpointerover: ((PointerEvent) -> dynamic)?\n override var onpointerout: ((PointerEvent) -> dynamic)?\n override var onpointerenter: ((PointerEvent) -> dynamic)?\n override var onpointerleave: ((PointerEvent) -> dynamic)?\n override var onabort: ((Event) -> dynamic)?\n override var onblur: ((FocusEvent) -> dynamic)?\n override var oncancel: ((Event) -> dynamic)?\n override var oncanplay: ((Event) -> dynamic)?\n override var oncanplaythrough: ((Event) -> dynamic)?\n override var onchange: ((Event) -> dynamic)?\n override var onclick: ((MouseEvent) -> dynamic)?\n override var onclose: ((Event) -> dynamic)?\n override var oncontextmenu: ((MouseEvent) -> dynamic)?\n override var oncuechange: ((Event) -> dynamic)?\n override var ondblclick: ((MouseEvent) -> dynamic)?\n override var ondrag: ((DragEvent) -> dynamic)?\n override var ondragend: ((DragEvent) -> dynamic)?\n override var ondragenter: ((DragEvent) -> dynamic)?\n override var ondragexit: ((DragEvent) -> dynamic)?\n override var ondragleave: ((DragEvent) -> dynamic)?\n override var ondragover: ((DragEvent) -> dynamic)?\n override var ondragstart: ((DragEvent) -> dynamic)?\n override var ondrop: ((DragEvent) -> dynamic)?\n override var ondurationchange: ((Event) -> dynamic)?\n override var onemptied: ((Event) -> dynamic)?\n override var onended: ((Event) -> dynamic)?\n override var onerror: ((dynamic, String, Int, Int, Any?) -> dynamic)?\n override var onfocus: ((FocusEvent) -> dynamic)?\n override var oninput: ((InputEvent) -> dynamic)?\n override var oninvalid: ((Event) -> dynamic)?\n override var onkeydown: ((KeyboardEvent) -> dynamic)?\n override var onkeypress: ((KeyboardEvent) -> dynamic)?\n override var onkeyup: ((KeyboardEvent) -> dynamic)?\n override var onload: ((Event) -> dynamic)?\n override var onloadeddata: ((Event) -> dynamic)?\n override var onloadedmetadata: ((Event) -> dynamic)?\n override var onloadend: ((Event) -> dynamic)?\n override var onloadstart: ((ProgressEvent) -> dynamic)?\n override var onmousedown: ((MouseEvent) -> dynamic)?\n override var onmouseenter: ((MouseEvent) -> dynamic)?\n override var onmouseleave: ((MouseEvent) -> dynamic)?\n override var onmousemove: ((MouseEvent) -> dynamic)?\n override var onmouseout: ((MouseEvent) -> dynamic)?\n override var onmouseover: ((MouseEvent) -> dynamic)?\n override var onmouseup: ((MouseEvent) -> dynamic)?\n override var onwheel: ((WheelEvent) -> dynamic)?\n override var onpause: ((Event) -> dynamic)?\n override var onplay: ((Event) -> dynamic)?\n override var onplaying: ((Event) -> dynamic)?\n override var onprogress: ((ProgressEvent) -> dynamic)?\n override var onratechange: ((Event) -> dynamic)?\n override var onreset: ((Event) -> dynamic)?\n override var onresize: ((Event) -> dynamic)?\n override var onscroll: ((Event) -> dynamic)?\n override var onseeked: ((Event) -> dynamic)?\n override var onseeking: ((Event) -> dynamic)?\n override var onselect: ((Event) -> dynamic)?\n override var onshow: ((Event) -> dynamic)?\n override var onstalled: ((Event) -> dynamic)?\n override var onsubmit: ((Event) -> dynamic)?\n override var onsuspend: ((Event) -> dynamic)?\n override var ontimeupdate: ((Event) -> dynamic)?\n override var ontoggle: ((Event) -> dynamic)?\n override var onvolumechange: ((Event) -> dynamic)?\n override var onwaiting: ((Event) -> dynamic)?\n override var oncopy: ((ClipboardEvent) -> dynamic)?\n override var oncut: ((ClipboardEvent) -> dynamic)?\n override var onpaste: ((ClipboardEvent) -> dynamic)?\n override var contentEditable: String\n override val isContentEditable: Boolean\n override fun prepend(vararg nodes: dynamic): Unit\n override fun append(vararg nodes: dynamic): Unit\n override fun querySelector(selectors: String): Element?\n override fun querySelectorAll(selectors: String): NodeList\n override fun before(vararg nodes: dynamic): Unit\n override fun after(vararg nodes: dynamic): Unit\n override fun replaceWith(vararg nodes: dynamic): Unit\n override fun remove(): Unit\n override fun getBoxQuads(options: BoxQuadOptions /* = definedExternally */): Array\n override fun convertQuadFromNode(quad: dynamic, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertRectFromNode(rect: DOMRectReadOnly, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertPointFromNode(point: DOMPointInit, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint\n}\n\n/**\n * Exposes the JavaScript [HTMLIFrameElement](https://developer.mozilla.org/en/docs/Web/API/HTMLIFrameElement) to Kotlin\n */\npublic external abstract class HTMLIFrameElement : HTMLElement {\n open var src: String\n open var srcdoc: String\n open var name: String\n open val sandbox: DOMTokenList\n open var allowFullscreen: Boolean\n open var allowUserMedia: Boolean\n open var width: String\n open var height: String\n open var referrerPolicy: String\n open val contentDocument: Document?\n open val contentWindow: Window?\n open var align: String\n open var scrolling: String\n open var frameBorder: String\n open var longDesc: String\n open var marginHeight: String\n open var marginWidth: String\n fun getSVGDocument(): Document?\n}\n\n/**\n * Exposes the JavaScript [HTMLEmbedElement](https://developer.mozilla.org/en/docs/Web/API/HTMLEmbedElement) to Kotlin\n */\npublic external abstract class HTMLEmbedElement : HTMLElement {\n open var src: String\n open var type: String\n open var width: String\n open var height: String\n open var align: String\n open var name: String\n fun getSVGDocument(): Document?\n}\n\n/**\n * Exposes the JavaScript [HTMLObjectElement](https://developer.mozilla.org/en/docs/Web/API/HTMLObjectElement) to Kotlin\n */\npublic external abstract class HTMLObjectElement : HTMLElement {\n open var data: String\n open var type: String\n open var typeMustMatch: Boolean\n open var name: String\n open var useMap: String\n open val form: HTMLFormElement?\n open var width: String\n open var height: String\n open val contentDocument: Document?\n open val contentWindow: Window?\n open val willValidate: Boolean\n open val validity: ValidityState\n open val validationMessage: String\n open var align: String\n open var archive: String\n open var code: String\n open var declare: Boolean\n open var hspace: Int\n open var standby: String\n open var vspace: Int\n open var codeBase: String\n open var codeType: String\n open var border: String\n fun getSVGDocument(): Document?\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n fun setCustomValidity(error: String): Unit\n}\n\n/**\n * Exposes the JavaScript [HTMLParamElement](https://developer.mozilla.org/en/docs/Web/API/HTMLParamElement) to Kotlin\n */\npublic external abstract class HTMLParamElement : HTMLElement {\n open var name: String\n open var value: String\n open var type: String\n open var valueType: String\n}\n\n/**\n * Exposes the JavaScript [HTMLVideoElement](https://developer.mozilla.org/en/docs/Web/API/HTMLVideoElement) to Kotlin\n */\npublic external abstract class HTMLVideoElement : HTMLMediaElement, TexImageSource {\n open var width: Int\n open var height: Int\n open val videoWidth: Int\n open val videoHeight: Int\n open var poster: String\n open var playsInline: Boolean\n}\n\n/**\n * Exposes the JavaScript [HTMLAudioElement](https://developer.mozilla.org/en/docs/Web/API/HTMLAudioElement) to Kotlin\n */\npublic external abstract class HTMLAudioElement : HTMLMediaElement {\n}\n\npublic external open class Audio(src: String = definedExternally) : HTMLAudioElement {\n override val children: HTMLCollection\n override val firstElementChild: Element?\n override val lastElementChild: Element?\n override val childElementCount: Int\n override val previousElementSibling: Element?\n override val nextElementSibling: Element?\n override val assignedSlot: HTMLSlotElement?\n override val style: CSSStyleDeclaration\n override var ongotpointercapture: ((PointerEvent) -> dynamic)?\n override var onlostpointercapture: ((PointerEvent) -> dynamic)?\n override var onpointerdown: ((PointerEvent) -> dynamic)?\n override var onpointermove: ((PointerEvent) -> dynamic)?\n override var onpointerup: ((PointerEvent) -> dynamic)?\n override var onpointercancel: ((PointerEvent) -> dynamic)?\n override var onpointerover: ((PointerEvent) -> dynamic)?\n override var onpointerout: ((PointerEvent) -> dynamic)?\n override var onpointerenter: ((PointerEvent) -> dynamic)?\n override var onpointerleave: ((PointerEvent) -> dynamic)?\n override var onabort: ((Event) -> dynamic)?\n override var onblur: ((FocusEvent) -> dynamic)?\n override var oncancel: ((Event) -> dynamic)?\n override var oncanplay: ((Event) -> dynamic)?\n override var oncanplaythrough: ((Event) -> dynamic)?\n override var onchange: ((Event) -> dynamic)?\n override var onclick: ((MouseEvent) -> dynamic)?\n override var onclose: ((Event) -> dynamic)?\n override var oncontextmenu: ((MouseEvent) -> dynamic)?\n override var oncuechange: ((Event) -> dynamic)?\n override var ondblclick: ((MouseEvent) -> dynamic)?\n override var ondrag: ((DragEvent) -> dynamic)?\n override var ondragend: ((DragEvent) -> dynamic)?\n override var ondragenter: ((DragEvent) -> dynamic)?\n override var ondragexit: ((DragEvent) -> dynamic)?\n override var ondragleave: ((DragEvent) -> dynamic)?\n override var ondragover: ((DragEvent) -> dynamic)?\n override var ondragstart: ((DragEvent) -> dynamic)?\n override var ondrop: ((DragEvent) -> dynamic)?\n override var ondurationchange: ((Event) -> dynamic)?\n override var onemptied: ((Event) -> dynamic)?\n override var onended: ((Event) -> dynamic)?\n override var onerror: ((dynamic, String, Int, Int, Any?) -> dynamic)?\n override var onfocus: ((FocusEvent) -> dynamic)?\n override var oninput: ((InputEvent) -> dynamic)?\n override var oninvalid: ((Event) -> dynamic)?\n override var onkeydown: ((KeyboardEvent) -> dynamic)?\n override var onkeypress: ((KeyboardEvent) -> dynamic)?\n override var onkeyup: ((KeyboardEvent) -> dynamic)?\n override var onload: ((Event) -> dynamic)?\n override var onloadeddata: ((Event) -> dynamic)?\n override var onloadedmetadata: ((Event) -> dynamic)?\n override var onloadend: ((Event) -> dynamic)?\n override var onloadstart: ((ProgressEvent) -> dynamic)?\n override var onmousedown: ((MouseEvent) -> dynamic)?\n override var onmouseenter: ((MouseEvent) -> dynamic)?\n override var onmouseleave: ((MouseEvent) -> dynamic)?\n override var onmousemove: ((MouseEvent) -> dynamic)?\n override var onmouseout: ((MouseEvent) -> dynamic)?\n override var onmouseover: ((MouseEvent) -> dynamic)?\n override var onmouseup: ((MouseEvent) -> dynamic)?\n override var onwheel: ((WheelEvent) -> dynamic)?\n override var onpause: ((Event) -> dynamic)?\n override var onplay: ((Event) -> dynamic)?\n override var onplaying: ((Event) -> dynamic)?\n override var onprogress: ((ProgressEvent) -> dynamic)?\n override var onratechange: ((Event) -> dynamic)?\n override var onreset: ((Event) -> dynamic)?\n override var onresize: ((Event) -> dynamic)?\n override var onscroll: ((Event) -> dynamic)?\n override var onseeked: ((Event) -> dynamic)?\n override var onseeking: ((Event) -> dynamic)?\n override var onselect: ((Event) -> dynamic)?\n override var onshow: ((Event) -> dynamic)?\n override var onstalled: ((Event) -> dynamic)?\n override var onsubmit: ((Event) -> dynamic)?\n override var onsuspend: ((Event) -> dynamic)?\n override var ontimeupdate: ((Event) -> dynamic)?\n override var ontoggle: ((Event) -> dynamic)?\n override var onvolumechange: ((Event) -> dynamic)?\n override var onwaiting: ((Event) -> dynamic)?\n override var oncopy: ((ClipboardEvent) -> dynamic)?\n override var oncut: ((ClipboardEvent) -> dynamic)?\n override var onpaste: ((ClipboardEvent) -> dynamic)?\n override var contentEditable: String\n override val isContentEditable: Boolean\n override fun prepend(vararg nodes: dynamic): Unit\n override fun append(vararg nodes: dynamic): Unit\n override fun querySelector(selectors: String): Element?\n override fun querySelectorAll(selectors: String): NodeList\n override fun before(vararg nodes: dynamic): Unit\n override fun after(vararg nodes: dynamic): Unit\n override fun replaceWith(vararg nodes: dynamic): Unit\n override fun remove(): Unit\n override fun getBoxQuads(options: BoxQuadOptions /* = definedExternally */): Array\n override fun convertQuadFromNode(quad: dynamic, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertRectFromNode(rect: DOMRectReadOnly, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertPointFromNode(point: DOMPointInit, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint\n}\n\n/**\n * Exposes the JavaScript [HTMLTrackElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTrackElement) to Kotlin\n */\npublic external abstract class HTMLTrackElement : HTMLElement {\n open var kind: String\n open var src: String\n open var srclang: String\n open var label: String\n open var default: Boolean\n open val readyState: Short\n open val track: TextTrack\n\n companion object {\n val NONE: Short\n val LOADING: Short\n val LOADED: Short\n val ERROR: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLMediaElement](https://developer.mozilla.org/en/docs/Web/API/HTMLMediaElement) to Kotlin\n */\npublic external abstract class HTMLMediaElement : HTMLElement {\n open val error: MediaError?\n open var src: String\n open var srcObject: dynamic\n open val currentSrc: String\n open var crossOrigin: String?\n open val networkState: Short\n open var preload: String\n open val buffered: TimeRanges\n open val readyState: Short\n open val seeking: Boolean\n open var currentTime: Double\n open val duration: Double\n open val paused: Boolean\n open var defaultPlaybackRate: Double\n open var playbackRate: Double\n open val played: TimeRanges\n open val seekable: TimeRanges\n open val ended: Boolean\n open var autoplay: Boolean\n open var loop: Boolean\n open var controls: Boolean\n open var volume: Double\n open var muted: Boolean\n open var defaultMuted: Boolean\n open val audioTracks: AudioTrackList\n open val videoTracks: VideoTrackList\n open val textTracks: TextTrackList\n fun load(): Unit\n fun canPlayType(type: String): CanPlayTypeResult\n fun fastSeek(time: Double): Unit\n fun getStartDate(): dynamic\n fun play(): Promise\n fun pause(): Unit\n fun addTextTrack(kind: TextTrackKind, label: String = definedExternally, language: String = definedExternally): TextTrack\n\n companion object {\n val NETWORK_EMPTY: Short\n val NETWORK_IDLE: Short\n val NETWORK_LOADING: Short\n val NETWORK_NO_SOURCE: Short\n val HAVE_NOTHING: Short\n val HAVE_METADATA: Short\n val HAVE_CURRENT_DATA: Short\n val HAVE_FUTURE_DATA: Short\n val HAVE_ENOUGH_DATA: Short\n }\n}\n\n/**\n * Exposes the JavaScript [MediaError](https://developer.mozilla.org/en/docs/Web/API/MediaError) to Kotlin\n */\npublic external abstract class MediaError {\n open val code: Short\n\n companion object {\n val MEDIA_ERR_ABORTED: Short\n val MEDIA_ERR_NETWORK: Short\n val MEDIA_ERR_DECODE: Short\n val MEDIA_ERR_SRC_NOT_SUPPORTED: Short\n }\n}\n\n/**\n * Exposes the JavaScript [AudioTrackList](https://developer.mozilla.org/en/docs/Web/API/AudioTrackList) to Kotlin\n */\npublic external abstract class AudioTrackList : EventTarget {\n open val length: Int\n open var onchange: ((Event) -> dynamic)?\n open var onaddtrack: ((TrackEvent) -> dynamic)?\n open var onremovetrack: ((TrackEvent) -> dynamic)?\n fun getTrackById(id: String): AudioTrack?\n}\n@kotlin.internal.InlineOnly inline operator fun AudioTrackList.get(index: Int): AudioTrack? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [AudioTrack](https://developer.mozilla.org/en/docs/Web/API/AudioTrack) to Kotlin\n */\npublic external abstract class AudioTrack : UnionAudioTrackOrTextTrackOrVideoTrack {\n open val id: String\n open val kind: String\n open val label: String\n open val language: String\n open var enabled: Boolean\n}\n\n/**\n * Exposes the JavaScript [VideoTrackList](https://developer.mozilla.org/en/docs/Web/API/VideoTrackList) to Kotlin\n */\npublic external abstract class VideoTrackList : EventTarget {\n open val length: Int\n open val selectedIndex: Int\n open var onchange: ((Event) -> dynamic)?\n open var onaddtrack: ((TrackEvent) -> dynamic)?\n open var onremovetrack: ((TrackEvent) -> dynamic)?\n fun getTrackById(id: String): VideoTrack?\n}\n@kotlin.internal.InlineOnly inline operator fun VideoTrackList.get(index: Int): VideoTrack? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [VideoTrack](https://developer.mozilla.org/en/docs/Web/API/VideoTrack) to Kotlin\n */\npublic external abstract class VideoTrack : UnionAudioTrackOrTextTrackOrVideoTrack {\n open val id: String\n open val kind: String\n open val label: String\n open val language: String\n open var selected: Boolean\n}\n\npublic external abstract class TextTrackList : EventTarget {\n open val length: Int\n open var onchange: ((Event) -> dynamic)?\n open var onaddtrack: ((TrackEvent) -> dynamic)?\n open var onremovetrack: ((TrackEvent) -> dynamic)?\n fun getTrackById(id: String): TextTrack?\n}\n@kotlin.internal.InlineOnly inline operator fun TextTrackList.get(index: Int): TextTrack? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [TextTrack](https://developer.mozilla.org/en/docs/Web/API/TextTrack) to Kotlin\n */\npublic external abstract class TextTrack : EventTarget, UnionAudioTrackOrTextTrackOrVideoTrack {\n open val kind: TextTrackKind\n open val label: String\n open val language: String\n open val id: String\n open val inBandMetadataTrackDispatchType: String\n open var mode: TextTrackMode\n open val cues: TextTrackCueList?\n open val activeCues: TextTrackCueList?\n open var oncuechange: ((Event) -> dynamic)?\n fun addCue(cue: TextTrackCue): Unit\n fun removeCue(cue: TextTrackCue): Unit\n}\n\npublic external abstract class TextTrackCueList {\n open val length: Int\n fun getCueById(id: String): TextTrackCue?\n}\n@kotlin.internal.InlineOnly inline operator fun TextTrackCueList.get(index: Int): TextTrackCue? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [TextTrackCue](https://developer.mozilla.org/en/docs/Web/API/TextTrackCue) to Kotlin\n */\npublic external abstract class TextTrackCue : EventTarget {\n open val track: TextTrack?\n open var id: String\n open var startTime: Double\n open var endTime: Double\n open var pauseOnExit: Boolean\n open var onenter: ((Event) -> dynamic)?\n open var onexit: ((Event) -> dynamic)?\n}\n\n/**\n * Exposes the JavaScript [TimeRanges](https://developer.mozilla.org/en/docs/Web/API/TimeRanges) to Kotlin\n */\npublic external abstract class TimeRanges {\n open val length: Int\n fun start(index: Int): Double\n fun end(index: Int): Double\n}\n\n/**\n * Exposes the JavaScript [TrackEvent](https://developer.mozilla.org/en/docs/Web/API/TrackEvent) to Kotlin\n */\npublic external open class TrackEvent(type: String, eventInitDict: TrackEventInit = definedExternally) : Event {\n open val track: UnionAudioTrackOrTextTrackOrVideoTrack?\n}\n\npublic external interface TrackEventInit : EventInit {\n var track: UnionAudioTrackOrTextTrackOrVideoTrack? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun TrackEventInit(track: UnionAudioTrackOrTextTrackOrVideoTrack? = null, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): TrackEventInit {\n val o = js(\"({})\")\n\n o[\"track\"] = track\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [HTMLMapElement](https://developer.mozilla.org/en/docs/Web/API/HTMLMapElement) to Kotlin\n */\npublic external abstract class HTMLMapElement : HTMLElement {\n open var name: String\n open val areas: HTMLCollection\n}\n\n/**\n * Exposes the JavaScript [HTMLAreaElement](https://developer.mozilla.org/en/docs/Web/API/HTMLAreaElement) to Kotlin\n */\npublic external abstract class HTMLAreaElement : HTMLElement, HTMLHyperlinkElementUtils {\n open var alt: String\n open var coords: String\n open var shape: String\n open var target: String\n open var download: String\n open var ping: String\n open var rel: String\n open val relList: DOMTokenList\n open var referrerPolicy: String\n open var noHref: Boolean\n}\n\n/**\n * Exposes the JavaScript [HTMLTableElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTableElement) to Kotlin\n */\npublic external abstract class HTMLTableElement : HTMLElement {\n open var caption: HTMLTableCaptionElement?\n open var tHead: HTMLTableSectionElement?\n open var tFoot: HTMLTableSectionElement?\n open val tBodies: HTMLCollection\n open val rows: HTMLCollection\n open var align: String\n open var border: String\n open var frame: String\n open var rules: String\n open var summary: String\n open var width: String\n open var bgColor: String\n open var cellPadding: String\n open var cellSpacing: String\n fun createCaption(): HTMLTableCaptionElement\n fun deleteCaption(): Unit\n fun createTHead(): HTMLTableSectionElement\n fun deleteTHead(): Unit\n fun createTFoot(): HTMLTableSectionElement\n fun deleteTFoot(): Unit\n fun createTBody(): HTMLTableSectionElement\n fun insertRow(index: Int = definedExternally): HTMLTableRowElement\n fun deleteRow(index: Int): Unit\n}\n\n/**\n * Exposes the JavaScript [HTMLTableCaptionElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTableCaptionElement) to Kotlin\n */\npublic external abstract class HTMLTableCaptionElement : HTMLElement {\n open var align: String\n}\n\n/**\n * Exposes the JavaScript [HTMLTableColElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTableColElement) to Kotlin\n */\npublic external abstract class HTMLTableColElement : HTMLElement {\n open var span: Int\n open var align: String\n open var ch: String\n open var chOff: String\n open var vAlign: String\n open var width: String\n}\n\n/**\n * Exposes the JavaScript [HTMLTableSectionElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTableSectionElement) to Kotlin\n */\npublic external abstract class HTMLTableSectionElement : HTMLElement {\n open val rows: HTMLCollection\n open var align: String\n open var ch: String\n open var chOff: String\n open var vAlign: String\n fun insertRow(index: Int = definedExternally): HTMLElement\n fun deleteRow(index: Int): Unit\n}\n\n/**\n * Exposes the JavaScript [HTMLTableRowElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTableRowElement) to Kotlin\n */\npublic external abstract class HTMLTableRowElement : HTMLElement {\n open val rowIndex: Int\n open val sectionRowIndex: Int\n open val cells: HTMLCollection\n open var align: String\n open var ch: String\n open var chOff: String\n open var vAlign: String\n open var bgColor: String\n fun insertCell(index: Int = definedExternally): HTMLElement\n fun deleteCell(index: Int): Unit\n}\n\n/**\n * Exposes the JavaScript [HTMLTableCellElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTableCellElement) to Kotlin\n */\npublic external abstract class HTMLTableCellElement : HTMLElement {\n open var colSpan: Int\n open var rowSpan: Int\n open var headers: String\n open val cellIndex: Int\n open var scope: String\n open var abbr: String\n open var align: String\n open var axis: String\n open var height: String\n open var width: String\n open var ch: String\n open var chOff: String\n open var noWrap: Boolean\n open var vAlign: String\n open var bgColor: String\n}\n\n/**\n * Exposes the JavaScript [HTMLFormElement](https://developer.mozilla.org/en/docs/Web/API/HTMLFormElement) to Kotlin\n */\npublic external abstract class HTMLFormElement : HTMLElement {\n open var acceptCharset: String\n open var action: String\n open var autocomplete: String\n open var enctype: String\n open var encoding: String\n open var method: String\n open var name: String\n open var noValidate: Boolean\n open var target: String\n open val elements: HTMLFormControlsCollection\n open val length: Int\n fun submit(): Unit\n fun reset(): Unit\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n}\n@kotlin.internal.InlineOnly inline operator fun HTMLFormElement.get(index: Int): Element? = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun HTMLFormElement.get(name: String): UnionElementOrRadioNodeList? = asDynamic()[name]\n\n/**\n * Exposes the JavaScript [HTMLLabelElement](https://developer.mozilla.org/en/docs/Web/API/HTMLLabelElement) to Kotlin\n */\npublic external abstract class HTMLLabelElement : HTMLElement {\n open val form: HTMLFormElement?\n open var htmlFor: String\n open val control: HTMLElement?\n}\n\n/**\n * Exposes the JavaScript [HTMLInputElement](https://developer.mozilla.org/en/docs/Web/API/HTMLInputElement) to Kotlin\n */\npublic external abstract class HTMLInputElement : HTMLElement {\n open var accept: String\n open var alt: String\n open var autocomplete: String\n open var autofocus: Boolean\n open var defaultChecked: Boolean\n open var checked: Boolean\n open var dirName: String\n open var disabled: Boolean\n open val form: HTMLFormElement?\n open val files: FileList?\n open var formAction: String\n open var formEnctype: String\n open var formMethod: String\n open var formNoValidate: Boolean\n open var formTarget: String\n open var height: Int\n open var indeterminate: Boolean\n open var inputMode: String\n open val list: HTMLElement?\n open var max: String\n open var maxLength: Int\n open var min: String\n open var minLength: Int\n open var multiple: Boolean\n open var name: String\n open var pattern: String\n open var placeholder: String\n open var readOnly: Boolean\n open var required: Boolean\n open var size: Int\n open var src: String\n open var step: String\n open var type: String\n open var defaultValue: String\n open var value: String\n open var valueAsDate: dynamic\n open var valueAsNumber: Double\n open var width: Int\n open val willValidate: Boolean\n open val validity: ValidityState\n open val validationMessage: String\n open val labels: NodeList\n open var selectionStart: Int?\n open var selectionEnd: Int?\n open var selectionDirection: String?\n open var align: String\n open var useMap: String\n fun stepUp(n: Int = definedExternally): Unit\n fun stepDown(n: Int = definedExternally): Unit\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n fun setCustomValidity(error: String): Unit\n fun select(): Unit\n fun setRangeText(replacement: String): Unit\n fun setRangeText(replacement: String, start: Int, end: Int, selectionMode: SelectionMode = definedExternally): Unit\n fun setSelectionRange(start: Int, end: Int, direction: String = definedExternally): Unit\n}\n\n/**\n * Exposes the JavaScript [HTMLButtonElement](https://developer.mozilla.org/en/docs/Web/API/HTMLButtonElement) to Kotlin\n */\npublic external abstract class HTMLButtonElement : HTMLElement {\n open var autofocus: Boolean\n open var disabled: Boolean\n open val form: HTMLFormElement?\n open var formAction: String\n open var formEnctype: String\n open var formMethod: String\n open var formNoValidate: Boolean\n open var formTarget: String\n open var name: String\n open var type: String\n open var value: String\n open var menu: HTMLMenuElement?\n open val willValidate: Boolean\n open val validity: ValidityState\n open val validationMessage: String\n open val labels: NodeList\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n fun setCustomValidity(error: String): Unit\n}\n\n/**\n * Exposes the JavaScript [HTMLSelectElement](https://developer.mozilla.org/en/docs/Web/API/HTMLSelectElement) to Kotlin\n */\npublic external abstract class HTMLSelectElement : HTMLElement, ItemArrayLike {\n open var autocomplete: String\n open var autofocus: Boolean\n open var disabled: Boolean\n open val form: HTMLFormElement?\n open var multiple: Boolean\n open var name: String\n open var required: Boolean\n open var size: Int\n open val type: String\n open val options: HTMLOptionsCollection\n override var length: Int\n open val selectedOptions: HTMLCollection\n open var selectedIndex: Int\n open var value: String\n open val willValidate: Boolean\n open val validity: ValidityState\n open val validationMessage: String\n open val labels: NodeList\n override fun item(index: Int): Element?\n fun namedItem(name: String): HTMLOptionElement?\n fun add(element: UnionHTMLOptGroupElementOrHTMLOptionElement, before: dynamic = definedExternally): Unit\n fun remove(index: Int): Unit\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n fun setCustomValidity(error: String): Unit\n}\n@kotlin.internal.InlineOnly inline operator fun HTMLSelectElement.get(index: Int): Element? = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun HTMLSelectElement.set(index: Int, option: HTMLOptionElement?): Unit { asDynamic()[index] = option; }\n\n/**\n * Exposes the JavaScript [HTMLDataListElement](https://developer.mozilla.org/en/docs/Web/API/HTMLDataListElement) to Kotlin\n */\npublic external abstract class HTMLDataListElement : HTMLElement {\n open val options: HTMLCollection\n}\n\n/**\n * Exposes the JavaScript [HTMLOptGroupElement](https://developer.mozilla.org/en/docs/Web/API/HTMLOptGroupElement) to Kotlin\n */\npublic external abstract class HTMLOptGroupElement : HTMLElement, UnionHTMLOptGroupElementOrHTMLOptionElement {\n open var disabled: Boolean\n open var label: String\n}\n\n/**\n * Exposes the JavaScript [HTMLOptionElement](https://developer.mozilla.org/en/docs/Web/API/HTMLOptionElement) to Kotlin\n */\npublic external abstract class HTMLOptionElement : HTMLElement, UnionHTMLOptGroupElementOrHTMLOptionElement {\n open var disabled: Boolean\n open val form: HTMLFormElement?\n open var label: String\n open var defaultSelected: Boolean\n open var selected: Boolean\n open var value: String\n open var text: String\n open val index: Int\n}\n\n/**\n * Exposes the JavaScript [Option](https://developer.mozilla.org/en/docs/Web/API/Option) to Kotlin\n */\npublic external open class Option(text: String = definedExternally, value: String = definedExternally, defaultSelected: Boolean = definedExternally, selected: Boolean = definedExternally) : HTMLOptionElement {\n override val children: HTMLCollection\n override val firstElementChild: Element?\n override val lastElementChild: Element?\n override val childElementCount: Int\n override val previousElementSibling: Element?\n override val nextElementSibling: Element?\n override val assignedSlot: HTMLSlotElement?\n override val style: CSSStyleDeclaration\n override var ongotpointercapture: ((PointerEvent) -> dynamic)?\n override var onlostpointercapture: ((PointerEvent) -> dynamic)?\n override var onpointerdown: ((PointerEvent) -> dynamic)?\n override var onpointermove: ((PointerEvent) -> dynamic)?\n override var onpointerup: ((PointerEvent) -> dynamic)?\n override var onpointercancel: ((PointerEvent) -> dynamic)?\n override var onpointerover: ((PointerEvent) -> dynamic)?\n override var onpointerout: ((PointerEvent) -> dynamic)?\n override var onpointerenter: ((PointerEvent) -> dynamic)?\n override var onpointerleave: ((PointerEvent) -> dynamic)?\n override var onabort: ((Event) -> dynamic)?\n override var onblur: ((FocusEvent) -> dynamic)?\n override var oncancel: ((Event) -> dynamic)?\n override var oncanplay: ((Event) -> dynamic)?\n override var oncanplaythrough: ((Event) -> dynamic)?\n override var onchange: ((Event) -> dynamic)?\n override var onclick: ((MouseEvent) -> dynamic)?\n override var onclose: ((Event) -> dynamic)?\n override var oncontextmenu: ((MouseEvent) -> dynamic)?\n override var oncuechange: ((Event) -> dynamic)?\n override var ondblclick: ((MouseEvent) -> dynamic)?\n override var ondrag: ((DragEvent) -> dynamic)?\n override var ondragend: ((DragEvent) -> dynamic)?\n override var ondragenter: ((DragEvent) -> dynamic)?\n override var ondragexit: ((DragEvent) -> dynamic)?\n override var ondragleave: ((DragEvent) -> dynamic)?\n override var ondragover: ((DragEvent) -> dynamic)?\n override var ondragstart: ((DragEvent) -> dynamic)?\n override var ondrop: ((DragEvent) -> dynamic)?\n override var ondurationchange: ((Event) -> dynamic)?\n override var onemptied: ((Event) -> dynamic)?\n override var onended: ((Event) -> dynamic)?\n override var onerror: ((dynamic, String, Int, Int, Any?) -> dynamic)?\n override var onfocus: ((FocusEvent) -> dynamic)?\n override var oninput: ((InputEvent) -> dynamic)?\n override var oninvalid: ((Event) -> dynamic)?\n override var onkeydown: ((KeyboardEvent) -> dynamic)?\n override var onkeypress: ((KeyboardEvent) -> dynamic)?\n override var onkeyup: ((KeyboardEvent) -> dynamic)?\n override var onload: ((Event) -> dynamic)?\n override var onloadeddata: ((Event) -> dynamic)?\n override var onloadedmetadata: ((Event) -> dynamic)?\n override var onloadend: ((Event) -> dynamic)?\n override var onloadstart: ((ProgressEvent) -> dynamic)?\n override var onmousedown: ((MouseEvent) -> dynamic)?\n override var onmouseenter: ((MouseEvent) -> dynamic)?\n override var onmouseleave: ((MouseEvent) -> dynamic)?\n override var onmousemove: ((MouseEvent) -> dynamic)?\n override var onmouseout: ((MouseEvent) -> dynamic)?\n override var onmouseover: ((MouseEvent) -> dynamic)?\n override var onmouseup: ((MouseEvent) -> dynamic)?\n override var onwheel: ((WheelEvent) -> dynamic)?\n override var onpause: ((Event) -> dynamic)?\n override var onplay: ((Event) -> dynamic)?\n override var onplaying: ((Event) -> dynamic)?\n override var onprogress: ((ProgressEvent) -> dynamic)?\n override var onratechange: ((Event) -> dynamic)?\n override var onreset: ((Event) -> dynamic)?\n override var onresize: ((Event) -> dynamic)?\n override var onscroll: ((Event) -> dynamic)?\n override var onseeked: ((Event) -> dynamic)?\n override var onseeking: ((Event) -> dynamic)?\n override var onselect: ((Event) -> dynamic)?\n override var onshow: ((Event) -> dynamic)?\n override var onstalled: ((Event) -> dynamic)?\n override var onsubmit: ((Event) -> dynamic)?\n override var onsuspend: ((Event) -> dynamic)?\n override var ontimeupdate: ((Event) -> dynamic)?\n override var ontoggle: ((Event) -> dynamic)?\n override var onvolumechange: ((Event) -> dynamic)?\n override var onwaiting: ((Event) -> dynamic)?\n override var oncopy: ((ClipboardEvent) -> dynamic)?\n override var oncut: ((ClipboardEvent) -> dynamic)?\n override var onpaste: ((ClipboardEvent) -> dynamic)?\n override var contentEditable: String\n override val isContentEditable: Boolean\n override fun prepend(vararg nodes: dynamic): Unit\n override fun append(vararg nodes: dynamic): Unit\n override fun querySelector(selectors: String): Element?\n override fun querySelectorAll(selectors: String): NodeList\n override fun before(vararg nodes: dynamic): Unit\n override fun after(vararg nodes: dynamic): Unit\n override fun replaceWith(vararg nodes: dynamic): Unit\n override fun remove(): Unit\n override fun getBoxQuads(options: BoxQuadOptions /* = definedExternally */): Array\n override fun convertQuadFromNode(quad: dynamic, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertRectFromNode(rect: DOMRectReadOnly, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertPointFromNode(point: DOMPointInit, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint\n}\n\n/**\n * Exposes the JavaScript [HTMLTextAreaElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTextAreaElement) to Kotlin\n */\npublic external abstract class HTMLTextAreaElement : HTMLElement {\n open var autocomplete: String\n open var autofocus: Boolean\n open var cols: Int\n open var dirName: String\n open var disabled: Boolean\n open val form: HTMLFormElement?\n open var inputMode: String\n open var maxLength: Int\n open var minLength: Int\n open var name: String\n open var placeholder: String\n open var readOnly: Boolean\n open var required: Boolean\n open var rows: Int\n open var wrap: String\n open val type: String\n open var defaultValue: String\n open var value: String\n open val textLength: Int\n open val willValidate: Boolean\n open val validity: ValidityState\n open val validationMessage: String\n open val labels: NodeList\n open var selectionStart: Int?\n open var selectionEnd: Int?\n open var selectionDirection: String?\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n fun setCustomValidity(error: String): Unit\n fun select(): Unit\n fun setRangeText(replacement: String): Unit\n fun setRangeText(replacement: String, start: Int, end: Int, selectionMode: SelectionMode = definedExternally): Unit\n fun setSelectionRange(start: Int, end: Int, direction: String = definedExternally): Unit\n}\n\n/**\n * Exposes the JavaScript [HTMLKeygenElement](https://developer.mozilla.org/en/docs/Web/API/HTMLKeygenElement) to Kotlin\n */\npublic external abstract class HTMLKeygenElement : HTMLElement {\n open var autofocus: Boolean\n open var challenge: String\n open var disabled: Boolean\n open val form: HTMLFormElement?\n open var keytype: String\n open var name: String\n open val type: String\n open val willValidate: Boolean\n open val validity: ValidityState\n open val validationMessage: String\n open val labels: NodeList\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n fun setCustomValidity(error: String): Unit\n}\n\n/**\n * Exposes the JavaScript [HTMLOutputElement](https://developer.mozilla.org/en/docs/Web/API/HTMLOutputElement) to Kotlin\n */\npublic external abstract class HTMLOutputElement : HTMLElement {\n open val htmlFor: DOMTokenList\n open val form: HTMLFormElement?\n open var name: String\n open val type: String\n open var defaultValue: String\n open var value: String\n open val willValidate: Boolean\n open val validity: ValidityState\n open val validationMessage: String\n open val labels: NodeList\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n fun setCustomValidity(error: String): Unit\n}\n\n/**\n * Exposes the JavaScript [HTMLProgressElement](https://developer.mozilla.org/en/docs/Web/API/HTMLProgressElement) to Kotlin\n */\npublic external abstract class HTMLProgressElement : HTMLElement {\n open var value: Double\n open var max: Double\n open val position: Double\n open val labels: NodeList\n}\n\n/**\n * Exposes the JavaScript [HTMLMeterElement](https://developer.mozilla.org/en/docs/Web/API/HTMLMeterElement) to Kotlin\n */\npublic external abstract class HTMLMeterElement : HTMLElement {\n open var value: Double\n open var min: Double\n open var max: Double\n open var low: Double\n open var high: Double\n open var optimum: Double\n open val labels: NodeList\n}\n\n/**\n * Exposes the JavaScript [HTMLFieldSetElement](https://developer.mozilla.org/en/docs/Web/API/HTMLFieldSetElement) to Kotlin\n */\npublic external abstract class HTMLFieldSetElement : HTMLElement {\n open var disabled: Boolean\n open val form: HTMLFormElement?\n open var name: String\n open val type: String\n open val elements: HTMLCollection\n open val willValidate: Boolean\n open val validity: ValidityState\n open val validationMessage: String\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n fun setCustomValidity(error: String): Unit\n}\n\n/**\n * Exposes the JavaScript [HTMLLegendElement](https://developer.mozilla.org/en/docs/Web/API/HTMLLegendElement) to Kotlin\n */\npublic external abstract class HTMLLegendElement : HTMLElement {\n open val form: HTMLFormElement?\n open var align: String\n}\n\n/**\n * Exposes the JavaScript [ValidityState](https://developer.mozilla.org/en/docs/Web/API/ValidityState) to Kotlin\n */\npublic external abstract class ValidityState {\n open val valueMissing: Boolean\n open val typeMismatch: Boolean\n open val patternMismatch: Boolean\n open val tooLong: Boolean\n open val tooShort: Boolean\n open val rangeUnderflow: Boolean\n open val rangeOverflow: Boolean\n open val stepMismatch: Boolean\n open val badInput: Boolean\n open val customError: Boolean\n open val valid: Boolean\n}\n\n/**\n * Exposes the JavaScript [HTMLDetailsElement](https://developer.mozilla.org/en/docs/Web/API/HTMLDetailsElement) to Kotlin\n */\npublic external abstract class HTMLDetailsElement : HTMLElement {\n open var open: Boolean\n}\n\npublic external abstract class HTMLMenuElement : HTMLElement {\n open var type: String\n open var label: String\n open var compact: Boolean\n}\n\npublic external abstract class HTMLMenuItemElement : HTMLElement {\n open var type: String\n open var label: String\n open var icon: String\n open var disabled: Boolean\n open var checked: Boolean\n open var radiogroup: String\n open var default: Boolean\n}\n\npublic external open class RelatedEvent(type: String, eventInitDict: RelatedEventInit = definedExternally) : Event {\n open val relatedTarget: EventTarget?\n}\n\npublic external interface RelatedEventInit : EventInit {\n var relatedTarget: EventTarget? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun RelatedEventInit(relatedTarget: EventTarget? = null, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): RelatedEventInit {\n val o = js(\"({})\")\n\n o[\"relatedTarget\"] = relatedTarget\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [HTMLDialogElement](https://developer.mozilla.org/en/docs/Web/API/HTMLDialogElement) to Kotlin\n */\npublic external abstract class HTMLDialogElement : HTMLElement {\n open var open: Boolean\n open var returnValue: String\n fun show(anchor: UnionElementOrMouseEvent = definedExternally): Unit\n fun showModal(anchor: UnionElementOrMouseEvent = definedExternally): Unit\n fun close(returnValue: String = definedExternally): Unit\n}\n\n/**\n * Exposes the JavaScript [HTMLScriptElement](https://developer.mozilla.org/en/docs/Web/API/HTMLScriptElement) to Kotlin\n */\npublic external abstract class HTMLScriptElement : HTMLElement, HTMLOrSVGScriptElement {\n open var src: String\n open var type: String\n open var charset: String\n open var async: Boolean\n open var defer: Boolean\n open var crossOrigin: String?\n open var text: String\n open var nonce: String\n open var event: String\n open var htmlFor: String\n}\n\n/**\n * Exposes the JavaScript [HTMLTemplateElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTemplateElement) to Kotlin\n */\npublic external abstract class HTMLTemplateElement : HTMLElement {\n open val content: DocumentFragment\n}\n\n/**\n * Exposes the JavaScript [HTMLSlotElement](https://developer.mozilla.org/en/docs/Web/API/HTMLSlotElement) to Kotlin\n */\npublic external abstract class HTMLSlotElement : HTMLElement {\n open var name: String\n fun assignedNodes(options: AssignedNodesOptions = definedExternally): Array\n}\n\npublic external interface AssignedNodesOptions {\n var flatten: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun AssignedNodesOptions(flatten: Boolean? = false): AssignedNodesOptions {\n val o = js(\"({})\")\n\n o[\"flatten\"] = flatten\n\n return o\n}\n\n/**\n * Exposes the JavaScript [HTMLCanvasElement](https://developer.mozilla.org/en/docs/Web/API/HTMLCanvasElement) to Kotlin\n */\npublic external abstract class HTMLCanvasElement : HTMLElement, TexImageSource {\n open var width: Int\n open var height: Int\n fun getContext(contextId: String, vararg arguments: Any?): RenderingContext?\n fun toDataURL(type: String = definedExternally, quality: Any? = definedExternally): String\n fun toBlob(_callback: (Blob?) -> Unit, type: String = definedExternally, quality: Any? = definedExternally): Unit\n}\n\npublic external interface CanvasRenderingContext2DSettings {\n var alpha: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun CanvasRenderingContext2DSettings(alpha: Boolean? = true): CanvasRenderingContext2DSettings {\n val o = js(\"({})\")\n\n o[\"alpha\"] = alpha\n\n return o\n}\n\n/**\n * Exposes the JavaScript [CanvasRenderingContext2D](https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D) to Kotlin\n */\npublic external abstract class CanvasRenderingContext2D : CanvasState, CanvasTransform, CanvasCompositing, CanvasImageSmoothing, CanvasFillStrokeStyles, CanvasShadowStyles, CanvasFilters, CanvasRect, CanvasDrawPath, CanvasUserInterface, CanvasText, CanvasDrawImage, CanvasHitRegion, CanvasImageData, CanvasPathDrawingStyles, CanvasTextDrawingStyles, CanvasPath, RenderingContext {\n open val canvas: HTMLCanvasElement\n}\n\npublic external interface CanvasState {\n fun save(): Unit\n fun restore(): Unit\n}\n\npublic external interface CanvasTransform {\n fun scale(x: Double, y: Double): Unit\n fun rotate(angle: Double): Unit\n fun translate(x: Double, y: Double): Unit\n fun transform(a: Double, b: Double, c: Double, d: Double, e: Double, f: Double): Unit\n fun getTransform(): DOMMatrix\n fun setTransform(a: Double, b: Double, c: Double, d: Double, e: Double, f: Double): Unit\n fun setTransform(transform: dynamic = definedExternally): Unit\n fun resetTransform(): Unit\n}\n\npublic external interface CanvasCompositing {\n var globalAlpha: Double\n var globalCompositeOperation: String\n}\n\npublic external interface CanvasImageSmoothing {\n var imageSmoothingEnabled: Boolean\n var imageSmoothingQuality: ImageSmoothingQuality\n}\n\npublic external interface CanvasFillStrokeStyles {\n var strokeStyle: dynamic\n var fillStyle: dynamic\n fun createLinearGradient(x0: Double, y0: Double, x1: Double, y1: Double): CanvasGradient\n fun createRadialGradient(x0: Double, y0: Double, r0: Double, x1: Double, y1: Double, r1: Double): CanvasGradient\n fun createPattern(image: dynamic, repetition: String): CanvasPattern?\n}\n\npublic external interface CanvasShadowStyles {\n var shadowOffsetX: Double\n var shadowOffsetY: Double\n var shadowBlur: Double\n var shadowColor: String\n}\n\npublic external interface CanvasFilters {\n var filter: String\n}\n\npublic external interface CanvasRect {\n fun clearRect(x: Double, y: Double, w: Double, h: Double): Unit\n fun fillRect(x: Double, y: Double, w: Double, h: Double): Unit\n fun strokeRect(x: Double, y: Double, w: Double, h: Double): Unit\n}\n\npublic external interface CanvasDrawPath {\n fun beginPath(): Unit\n fun fill(fillRule: CanvasFillRule = definedExternally): Unit\n fun fill(path: Path2D, fillRule: CanvasFillRule = definedExternally): Unit\n fun stroke(): Unit\n fun stroke(path: Path2D): Unit\n fun clip(fillRule: CanvasFillRule = definedExternally): Unit\n fun clip(path: Path2D, fillRule: CanvasFillRule = definedExternally): Unit\n fun resetClip(): Unit\n fun isPointInPath(x: Double, y: Double, fillRule: CanvasFillRule = definedExternally): Boolean\n fun isPointInPath(path: Path2D, x: Double, y: Double, fillRule: CanvasFillRule = definedExternally): Boolean\n fun isPointInStroke(x: Double, y: Double): Boolean\n fun isPointInStroke(path: Path2D, x: Double, y: Double): Boolean\n}\n\npublic external interface CanvasUserInterface {\n fun drawFocusIfNeeded(element: Element): Unit\n fun drawFocusIfNeeded(path: Path2D, element: Element): Unit\n fun scrollPathIntoView(): Unit\n fun scrollPathIntoView(path: Path2D): Unit\n}\n\npublic external interface CanvasText {\n fun fillText(text: String, x: Double, y: Double, maxWidth: Double = definedExternally): Unit\n fun strokeText(text: String, x: Double, y: Double, maxWidth: Double = definedExternally): Unit\n fun measureText(text: String): TextMetrics\n}\n\npublic external interface CanvasDrawImage {\n fun drawImage(image: dynamic, dx: Double, dy: Double): Unit\n fun drawImage(image: dynamic, dx: Double, dy: Double, dw: Double, dh: Double): Unit\n fun drawImage(image: dynamic, sx: Double, sy: Double, sw: Double, sh: Double, dx: Double, dy: Double, dw: Double, dh: Double): Unit\n}\n\npublic external interface CanvasHitRegion {\n fun addHitRegion(options: HitRegionOptions = definedExternally): Unit\n fun removeHitRegion(id: String): Unit\n fun clearHitRegions(): Unit\n}\n\npublic external interface CanvasImageData {\n fun createImageData(sw: Double, sh: Double): ImageData\n fun createImageData(imagedata: ImageData): ImageData\n fun getImageData(sx: Double, sy: Double, sw: Double, sh: Double): ImageData\n fun putImageData(imagedata: ImageData, dx: Double, dy: Double): Unit\n fun putImageData(imagedata: ImageData, dx: Double, dy: Double, dirtyX: Double, dirtyY: Double, dirtyWidth: Double, dirtyHeight: Double): Unit\n}\n\npublic external interface CanvasPathDrawingStyles {\n var lineWidth: Double\n var lineCap: CanvasLineCap\n var lineJoin: CanvasLineJoin\n var miterLimit: Double\n var lineDashOffset: Double\n fun setLineDash(segments: Array): Unit\n fun getLineDash(): Array\n}\n\npublic external interface CanvasTextDrawingStyles {\n var font: String\n var textAlign: CanvasTextAlign\n var textBaseline: CanvasTextBaseline\n var direction: CanvasDirection\n}\n\npublic external interface CanvasPath {\n fun closePath(): Unit\n fun moveTo(x: Double, y: Double): Unit\n fun lineTo(x: Double, y: Double): Unit\n fun quadraticCurveTo(cpx: Double, cpy: Double, x: Double, y: Double): Unit\n fun bezierCurveTo(cp1x: Double, cp1y: Double, cp2x: Double, cp2y: Double, x: Double, y: Double): Unit\n fun arcTo(x1: Double, y1: Double, x2: Double, y2: Double, radius: Double): Unit\n fun arcTo(x1: Double, y1: Double, x2: Double, y2: Double, radiusX: Double, radiusY: Double, rotation: Double): Unit\n fun rect(x: Double, y: Double, w: Double, h: Double): Unit\n fun arc(x: Double, y: Double, radius: Double, startAngle: Double, endAngle: Double, anticlockwise: Boolean = definedExternally): Unit\n fun ellipse(x: Double, y: Double, radiusX: Double, radiusY: Double, rotation: Double, startAngle: Double, endAngle: Double, anticlockwise: Boolean = definedExternally): Unit\n}\n\n/**\n * Exposes the JavaScript [CanvasGradient](https://developer.mozilla.org/en/docs/Web/API/CanvasGradient) to Kotlin\n */\npublic external abstract class CanvasGradient {\n fun addColorStop(offset: Double, color: String): Unit\n}\n\n/**\n * Exposes the JavaScript [CanvasPattern](https://developer.mozilla.org/en/docs/Web/API/CanvasPattern) to Kotlin\n */\npublic external abstract class CanvasPattern {\n fun setTransform(transform: dynamic = definedExternally): Unit\n}\n\n/**\n * Exposes the JavaScript [TextMetrics](https://developer.mozilla.org/en/docs/Web/API/TextMetrics) to Kotlin\n */\npublic external abstract class TextMetrics {\n open val width: Double\n open val actualBoundingBoxLeft: Double\n open val actualBoundingBoxRight: Double\n open val fontBoundingBoxAscent: Double\n open val fontBoundingBoxDescent: Double\n open val actualBoundingBoxAscent: Double\n open val actualBoundingBoxDescent: Double\n open val emHeightAscent: Double\n open val emHeightDescent: Double\n open val hangingBaseline: Double\n open val alphabeticBaseline: Double\n open val ideographicBaseline: Double\n}\n\npublic external interface HitRegionOptions {\n var path: Path2D? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var fillRule: CanvasFillRule? /* = CanvasFillRule.NONZERO */\n get() = definedExternally\n set(value) = definedExternally\n var id: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var parentID: String? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var cursor: String? /* = \"inherit\" */\n get() = definedExternally\n set(value) = definedExternally\n var control: Element? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var label: String? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var role: String? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun HitRegionOptions(path: Path2D? = null, fillRule: CanvasFillRule? = CanvasFillRule.NONZERO, id: String? = \"\", parentID: String? = null, cursor: String? = \"inherit\", control: Element? = null, label: String? = null, role: String? = null): HitRegionOptions {\n val o = js(\"({})\")\n\n o[\"path\"] = path\n o[\"fillRule\"] = fillRule\n o[\"id\"] = id\n o[\"parentID\"] = parentID\n o[\"cursor\"] = cursor\n o[\"control\"] = control\n o[\"label\"] = label\n o[\"role\"] = role\n\n return o\n}\n\n/**\n * Exposes the JavaScript [ImageData](https://developer.mozilla.org/en/docs/Web/API/ImageData) to Kotlin\n */\npublic external open class ImageData : TexImageSource {\n constructor(sw: Int, sh: Int)\n constructor(data: Uint8ClampedArray, sw: Int, sh: Int = definedExternally)\n open val width: Int\n open val height: Int\n open val data: Uint8ClampedArray\n}\n\n/**\n * Exposes the JavaScript [Path2D](https://developer.mozilla.org/en/docs/Web/API/Path2D) to Kotlin\n */\npublic external open class Path2D() : CanvasPath {\n constructor(path: Path2D)\n constructor(paths: Array, fillRule: CanvasFillRule = definedExternally)\n constructor(d: String)\n fun addPath(path: Path2D, transform: dynamic = definedExternally): Unit\n override fun closePath(): Unit\n override fun moveTo(x: Double, y: Double): Unit\n override fun lineTo(x: Double, y: Double): Unit\n override fun quadraticCurveTo(cpx: Double, cpy: Double, x: Double, y: Double): Unit\n override fun bezierCurveTo(cp1x: Double, cp1y: Double, cp2x: Double, cp2y: Double, x: Double, y: Double): Unit\n override fun arcTo(x1: Double, y1: Double, x2: Double, y2: Double, radius: Double): Unit\n override fun arcTo(x1: Double, y1: Double, x2: Double, y2: Double, radiusX: Double, radiusY: Double, rotation: Double): Unit\n override fun rect(x: Double, y: Double, w: Double, h: Double): Unit\n override fun arc(x: Double, y: Double, radius: Double, startAngle: Double, endAngle: Double, anticlockwise: Boolean /* = definedExternally */): Unit\n override fun ellipse(x: Double, y: Double, radiusX: Double, radiusY: Double, rotation: Double, startAngle: Double, endAngle: Double, anticlockwise: Boolean /* = definedExternally */): Unit\n}\n\n/**\n * Exposes the JavaScript [Touch](https://developer.mozilla.org/en/docs/Web/API/Touch) to Kotlin\n */\npublic external abstract class Touch {\n open val region: String?\n}\n\n/**\n * Exposes the JavaScript [ImageBitmapRenderingContext](https://developer.mozilla.org/en/docs/Web/API/ImageBitmapRenderingContext) to Kotlin\n */\npublic external abstract class ImageBitmapRenderingContext {\n open val canvas: HTMLCanvasElement\n fun transferFromImageBitmap(bitmap: ImageBitmap?): Unit\n}\n\npublic external interface ImageBitmapRenderingContextSettings {\n var alpha: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ImageBitmapRenderingContextSettings(alpha: Boolean? = true): ImageBitmapRenderingContextSettings {\n val o = js(\"({})\")\n\n o[\"alpha\"] = alpha\n\n return o\n}\n\n/**\n * Exposes the JavaScript [CustomElementRegistry](https://developer.mozilla.org/en/docs/Web/API/CustomElementRegistry) to Kotlin\n */\npublic external abstract class CustomElementRegistry {\n fun define(name: String, constructor: () -> dynamic, options: ElementDefinitionOptions = definedExternally): Unit\n fun get(name: String): Any?\n fun whenDefined(name: String): Promise\n}\n\npublic external interface ElementDefinitionOptions {\n var extends: String?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ElementDefinitionOptions(extends: String? = undefined): ElementDefinitionOptions {\n val o = js(\"({})\")\n\n o[\"extends\"] = extends\n\n return o\n}\n\npublic external interface ElementContentEditable {\n var contentEditable: String\n val isContentEditable: Boolean\n}\n\n/**\n * Exposes the JavaScript [DataTransfer](https://developer.mozilla.org/en/docs/Web/API/DataTransfer) to Kotlin\n */\npublic external abstract class DataTransfer {\n open var dropEffect: String\n open var effectAllowed: String\n open val items: DataTransferItemList\n open val types: Array\n open val files: FileList\n fun setDragImage(image: Element, x: Int, y: Int): Unit\n fun getData(format: String): String\n fun setData(format: String, data: String): Unit\n fun clearData(format: String = definedExternally): Unit\n}\n\n/**\n * Exposes the JavaScript [DataTransferItemList](https://developer.mozilla.org/en/docs/Web/API/DataTransferItemList) to Kotlin\n */\npublic external abstract class DataTransferItemList {\n open val length: Int\n fun add(data: String, type: String): DataTransferItem?\n fun add(data: File): DataTransferItem?\n fun remove(index: Int): Unit\n fun clear(): Unit\n}\n@kotlin.internal.InlineOnly inline operator fun DataTransferItemList.get(index: Int): DataTransferItem? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [DataTransferItem](https://developer.mozilla.org/en/docs/Web/API/DataTransferItem) to Kotlin\n */\npublic external abstract class DataTransferItem {\n open val kind: String\n open val type: String\n fun getAsString(_callback: ((String) -> Unit)?): Unit\n fun getAsFile(): File?\n}\n\n/**\n * Exposes the JavaScript [DragEvent](https://developer.mozilla.org/en/docs/Web/API/DragEvent) to Kotlin\n */\npublic external open class DragEvent(type: String, eventInitDict: DragEventInit = definedExternally) : MouseEvent {\n open val dataTransfer: DataTransfer?\n}\n\npublic external interface DragEventInit : MouseEventInit {\n var dataTransfer: DataTransfer? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun DragEventInit(dataTransfer: DataTransfer? = null, screenX: Int? = 0, screenY: Int? = 0, clientX: Int? = 0, clientY: Int? = 0, button: Short? = 0, buttons: Short? = 0, relatedTarget: EventTarget? = null, ctrlKey: Boolean? = false, shiftKey: Boolean? = false, altKey: Boolean? = false, metaKey: Boolean? = false, modifierAltGraph: Boolean? = false, modifierCapsLock: Boolean? = false, modifierFn: Boolean? = false, modifierFnLock: Boolean? = false, modifierHyper: Boolean? = false, modifierNumLock: Boolean? = false, modifierScrollLock: Boolean? = false, modifierSuper: Boolean? = false, modifierSymbol: Boolean? = false, modifierSymbolLock: Boolean? = false, view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): DragEventInit {\n val o = js(\"({})\")\n\n o[\"dataTransfer\"] = dataTransfer\n o[\"screenX\"] = screenX\n o[\"screenY\"] = screenY\n o[\"clientX\"] = clientX\n o[\"clientY\"] = clientY\n o[\"button\"] = button\n o[\"buttons\"] = buttons\n o[\"relatedTarget\"] = relatedTarget\n o[\"ctrlKey\"] = ctrlKey\n o[\"shiftKey\"] = shiftKey\n o[\"altKey\"] = altKey\n o[\"metaKey\"] = metaKey\n o[\"modifierAltGraph\"] = modifierAltGraph\n o[\"modifierCapsLock\"] = modifierCapsLock\n o[\"modifierFn\"] = modifierFn\n o[\"modifierFnLock\"] = modifierFnLock\n o[\"modifierHyper\"] = modifierHyper\n o[\"modifierNumLock\"] = modifierNumLock\n o[\"modifierScrollLock\"] = modifierScrollLock\n o[\"modifierSuper\"] = modifierSuper\n o[\"modifierSymbol\"] = modifierSymbol\n o[\"modifierSymbolLock\"] = modifierSymbolLock\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\npublic external abstract class BarProp {\n open val visible: Boolean\n}\n\n/**\n * Exposes the JavaScript [History](https://developer.mozilla.org/en/docs/Web/API/History) to Kotlin\n */\npublic external abstract class History {\n open val length: Int\n open var scrollRestoration: ScrollRestoration\n open val state: Any?\n fun go(delta: Int = definedExternally): Unit\n fun back(): Unit\n fun forward(): Unit\n fun pushState(data: Any?, title: String, url: String? = definedExternally): Unit\n fun replaceState(data: Any?, title: String, url: String? = definedExternally): Unit\n}\n\n/**\n * Exposes the JavaScript [Location](https://developer.mozilla.org/en/docs/Web/API/Location) to Kotlin\n */\npublic external abstract class Location {\n open var href: String\n open val origin: String\n open var protocol: String\n open var host: String\n open var hostname: String\n open var port: String\n open var pathname: String\n open var search: String\n open var hash: String\n open val ancestorOrigins: Array\n fun assign(url: String): Unit\n fun replace(url: String): Unit\n fun reload(): Unit\n}\n\n/**\n * Exposes the JavaScript [PopStateEvent](https://developer.mozilla.org/en/docs/Web/API/PopStateEvent) to Kotlin\n */\npublic external open class PopStateEvent(type: String, eventInitDict: PopStateEventInit = definedExternally) : Event {\n open val state: Any?\n}\n\npublic external interface PopStateEventInit : EventInit {\n var state: Any? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun PopStateEventInit(state: Any? = null, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): PopStateEventInit {\n val o = js(\"({})\")\n\n o[\"state\"] = state\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [HashChangeEvent](https://developer.mozilla.org/en/docs/Web/API/HashChangeEvent) to Kotlin\n */\npublic external open class HashChangeEvent(type: String, eventInitDict: HashChangeEventInit = definedExternally) : Event {\n open val oldURL: String\n open val newURL: String\n}\n\npublic external interface HashChangeEventInit : EventInit {\n var oldURL: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var newURL: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun HashChangeEventInit(oldURL: String? = \"\", newURL: String? = \"\", bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): HashChangeEventInit {\n val o = js(\"({})\")\n\n o[\"oldURL\"] = oldURL\n o[\"newURL\"] = newURL\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [PageTransitionEvent](https://developer.mozilla.org/en/docs/Web/API/PageTransitionEvent) to Kotlin\n */\npublic external open class PageTransitionEvent(type: String, eventInitDict: PageTransitionEventInit = definedExternally) : Event {\n open val persisted: Boolean\n}\n\npublic external interface PageTransitionEventInit : EventInit {\n var persisted: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun PageTransitionEventInit(persisted: Boolean? = false, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): PageTransitionEventInit {\n val o = js(\"({})\")\n\n o[\"persisted\"] = persisted\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [BeforeUnloadEvent](https://developer.mozilla.org/en/docs/Web/API/BeforeUnloadEvent) to Kotlin\n */\npublic external open class BeforeUnloadEvent : Event {\n var returnValue: String\n}\n\npublic external abstract class ApplicationCache : EventTarget {\n open val status: Short\n open var onchecking: ((Event) -> dynamic)?\n open var onerror: ((Event) -> dynamic)?\n open var onnoupdate: ((Event) -> dynamic)?\n open var ondownloading: ((Event) -> dynamic)?\n open var onprogress: ((ProgressEvent) -> dynamic)?\n open var onupdateready: ((Event) -> dynamic)?\n open var oncached: ((Event) -> dynamic)?\n open var onobsolete: ((Event) -> dynamic)?\n fun update(): Unit\n fun abort(): Unit\n fun swapCache(): Unit\n\n companion object {\n val UNCACHED: Short\n val IDLE: Short\n val CHECKING: Short\n val DOWNLOADING: Short\n val UPDATEREADY: Short\n val OBSOLETE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [NavigatorOnLine](https://developer.mozilla.org/en/docs/Web/API/NavigatorOnLine) to Kotlin\n */\npublic external interface NavigatorOnLine {\n val onLine: Boolean\n}\n\n/**\n * Exposes the JavaScript [ErrorEvent](https://developer.mozilla.org/en/docs/Web/API/ErrorEvent) to Kotlin\n */\npublic external open class ErrorEvent(type: String, eventInitDict: ErrorEventInit = definedExternally) : Event {\n open val message: String\n open val filename: String\n open val lineno: Int\n open val colno: Int\n open val error: Any?\n}\n\npublic external interface ErrorEventInit : EventInit {\n var message: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var filename: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var lineno: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var colno: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var error: Any? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ErrorEventInit(message: String? = \"\", filename: String? = \"\", lineno: Int? = 0, colno: Int? = 0, error: Any? = null, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): ErrorEventInit {\n val o = js(\"({})\")\n\n o[\"message\"] = message\n o[\"filename\"] = filename\n o[\"lineno\"] = lineno\n o[\"colno\"] = colno\n o[\"error\"] = error\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [PromiseRejectionEvent](https://developer.mozilla.org/en/docs/Web/API/PromiseRejectionEvent) to Kotlin\n */\npublic external open class PromiseRejectionEvent(type: String, eventInitDict: PromiseRejectionEventInit) : Event {\n open val promise: Promise\n open val reason: Any?\n}\n\npublic external interface PromiseRejectionEventInit : EventInit {\n var promise: Promise?\n get() = definedExternally\n set(value) = definedExternally\n var reason: Any?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun PromiseRejectionEventInit(promise: Promise?, reason: Any? = undefined, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): PromiseRejectionEventInit {\n val o = js(\"({})\")\n\n o[\"promise\"] = promise\n o[\"reason\"] = reason\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [GlobalEventHandlers](https://developer.mozilla.org/en/docs/Web/API/GlobalEventHandlers) to Kotlin\n */\npublic external interface GlobalEventHandlers {\n var ongotpointercapture: ((PointerEvent) -> dynamic)?\n var onlostpointercapture: ((PointerEvent) -> dynamic)?\n var onpointerdown: ((PointerEvent) -> dynamic)?\n var onpointermove: ((PointerEvent) -> dynamic)?\n var onpointerup: ((PointerEvent) -> dynamic)?\n var onpointercancel: ((PointerEvent) -> dynamic)?\n var onpointerover: ((PointerEvent) -> dynamic)?\n var onpointerout: ((PointerEvent) -> dynamic)?\n var onpointerenter: ((PointerEvent) -> dynamic)?\n var onpointerleave: ((PointerEvent) -> dynamic)?\n var onabort: ((Event) -> dynamic)?\n var onblur: ((FocusEvent) -> dynamic)?\n var oncancel: ((Event) -> dynamic)?\n var oncanplay: ((Event) -> dynamic)?\n var oncanplaythrough: ((Event) -> dynamic)?\n var onchange: ((Event) -> dynamic)?\n var onclick: ((MouseEvent) -> dynamic)?\n var onclose: ((Event) -> dynamic)?\n var oncontextmenu: ((MouseEvent) -> dynamic)?\n var oncuechange: ((Event) -> dynamic)?\n var ondblclick: ((MouseEvent) -> dynamic)?\n var ondrag: ((DragEvent) -> dynamic)?\n var ondragend: ((DragEvent) -> dynamic)?\n var ondragenter: ((DragEvent) -> dynamic)?\n var ondragexit: ((DragEvent) -> dynamic)?\n var ondragleave: ((DragEvent) -> dynamic)?\n var ondragover: ((DragEvent) -> dynamic)?\n var ondragstart: ((DragEvent) -> dynamic)?\n var ondrop: ((DragEvent) -> dynamic)?\n var ondurationchange: ((Event) -> dynamic)?\n var onemptied: ((Event) -> dynamic)?\n var onended: ((Event) -> dynamic)?\n var onerror: ((dynamic, String, Int, Int, Any?) -> dynamic)?\n var onfocus: ((FocusEvent) -> dynamic)?\n var oninput: ((InputEvent) -> dynamic)?\n var oninvalid: ((Event) -> dynamic)?\n var onkeydown: ((KeyboardEvent) -> dynamic)?\n var onkeypress: ((KeyboardEvent) -> dynamic)?\n var onkeyup: ((KeyboardEvent) -> dynamic)?\n var onload: ((Event) -> dynamic)?\n var onloadeddata: ((Event) -> dynamic)?\n var onloadedmetadata: ((Event) -> dynamic)?\n var onloadend: ((Event) -> dynamic)?\n var onloadstart: ((ProgressEvent) -> dynamic)?\n var onmousedown: ((MouseEvent) -> dynamic)?\n var onmouseenter: ((MouseEvent) -> dynamic)?\n var onmouseleave: ((MouseEvent) -> dynamic)?\n var onmousemove: ((MouseEvent) -> dynamic)?\n var onmouseout: ((MouseEvent) -> dynamic)?\n var onmouseover: ((MouseEvent) -> dynamic)?\n var onmouseup: ((MouseEvent) -> dynamic)?\n var onwheel: ((WheelEvent) -> dynamic)?\n var onpause: ((Event) -> dynamic)?\n var onplay: ((Event) -> dynamic)?\n var onplaying: ((Event) -> dynamic)?\n var onprogress: ((ProgressEvent) -> dynamic)?\n var onratechange: ((Event) -> dynamic)?\n var onreset: ((Event) -> dynamic)?\n var onresize: ((Event) -> dynamic)?\n var onscroll: ((Event) -> dynamic)?\n var onseeked: ((Event) -> dynamic)?\n var onseeking: ((Event) -> dynamic)?\n var onselect: ((Event) -> dynamic)?\n var onshow: ((Event) -> dynamic)?\n var onstalled: ((Event) -> dynamic)?\n var onsubmit: ((Event) -> dynamic)?\n var onsuspend: ((Event) -> dynamic)?\n var ontimeupdate: ((Event) -> dynamic)?\n var ontoggle: ((Event) -> dynamic)?\n var onvolumechange: ((Event) -> dynamic)?\n var onwaiting: ((Event) -> dynamic)?\n}\n\n/**\n * Exposes the JavaScript [WindowEventHandlers](https://developer.mozilla.org/en/docs/Web/API/WindowEventHandlers) to Kotlin\n */\npublic external interface WindowEventHandlers {\n var onafterprint: ((Event) -> dynamic)?\n var onbeforeprint: ((Event) -> dynamic)?\n var onbeforeunload: ((BeforeUnloadEvent) -> String?)?\n var onhashchange: ((HashChangeEvent) -> dynamic)?\n var onlanguagechange: ((Event) -> dynamic)?\n var onmessage: ((MessageEvent) -> dynamic)?\n var onoffline: ((Event) -> dynamic)?\n var ononline: ((Event) -> dynamic)?\n var onpagehide: ((PageTransitionEvent) -> dynamic)?\n var onpageshow: ((PageTransitionEvent) -> dynamic)?\n var onpopstate: ((PopStateEvent) -> dynamic)?\n var onrejectionhandled: ((Event) -> dynamic)?\n var onstorage: ((StorageEvent) -> dynamic)?\n var onunhandledrejection: ((PromiseRejectionEvent) -> dynamic)?\n var onunload: ((Event) -> dynamic)?\n}\n\npublic external interface DocumentAndElementEventHandlers {\n var oncopy: ((ClipboardEvent) -> dynamic)?\n var oncut: ((ClipboardEvent) -> dynamic)?\n var onpaste: ((ClipboardEvent) -> dynamic)?\n}\n\n/**\n * Exposes the JavaScript [WindowOrWorkerGlobalScope](https://developer.mozilla.org/en/docs/Web/API/WindowOrWorkerGlobalScope) to Kotlin\n */\npublic external interface WindowOrWorkerGlobalScope {\n val caches: CacheStorage\n val origin: String\n fun fetch(input: dynamic, init: RequestInit = definedExternally): Promise\n fun btoa(data: String): String\n fun atob(data: String): String\n fun setTimeout(handler: dynamic, timeout: Int = definedExternally, vararg arguments: Any?): Int\n fun clearTimeout(handle: Int = definedExternally): Unit\n fun setInterval(handler: dynamic, timeout: Int = definedExternally, vararg arguments: Any?): Int\n fun clearInterval(handle: Int = definedExternally): Unit\n fun createImageBitmap(image: dynamic, options: ImageBitmapOptions = definedExternally): Promise\n fun createImageBitmap(image: dynamic, sx: Int, sy: Int, sw: Int, sh: Int, options: ImageBitmapOptions = definedExternally): Promise\n}\n\n/**\n * Exposes the JavaScript [NavigatorID](https://developer.mozilla.org/en/docs/Web/API/NavigatorID) to Kotlin\n */\npublic external interface NavigatorID {\n val appCodeName: String\n val appName: String\n val appVersion: String\n val platform: String\n val product: String\n val productSub: String\n val userAgent: String\n val vendor: String\n val vendorSub: String\n val oscpu: String\n fun taintEnabled(): Boolean\n}\n\n/**\n * Exposes the JavaScript [NavigatorLanguage](https://developer.mozilla.org/en/docs/Web/API/NavigatorLanguage) to Kotlin\n */\npublic external interface NavigatorLanguage {\n val language: String\n val languages: Array\n}\n\npublic external interface NavigatorContentUtils {\n fun registerProtocolHandler(scheme: String, url: String, title: String): Unit\n fun registerContentHandler(mimeType: String, url: String, title: String): Unit\n fun isProtocolHandlerRegistered(scheme: String, url: String): String\n fun isContentHandlerRegistered(mimeType: String, url: String): String\n fun unregisterProtocolHandler(scheme: String, url: String): Unit\n fun unregisterContentHandler(mimeType: String, url: String): Unit\n}\n\npublic external interface NavigatorCookies {\n val cookieEnabled: Boolean\n}\n\n/**\n * Exposes the JavaScript [NavigatorPlugins](https://developer.mozilla.org/en/docs/Web/API/NavigatorPlugins) to Kotlin\n */\npublic external interface NavigatorPlugins {\n val plugins: PluginArray\n val mimeTypes: MimeTypeArray\n fun javaEnabled(): Boolean\n}\n\n/**\n * Exposes the JavaScript [PluginArray](https://developer.mozilla.org/en/docs/Web/API/PluginArray) to Kotlin\n */\npublic external abstract class PluginArray : ItemArrayLike {\n override val length: Int\n fun refresh(reload: Boolean = definedExternally): Unit\n override fun item(index: Int): Plugin?\n fun namedItem(name: String): Plugin?\n}\n@kotlin.internal.InlineOnly inline operator fun PluginArray.get(index: Int): Plugin? = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun PluginArray.get(name: String): Plugin? = asDynamic()[name]\n\n/**\n * Exposes the JavaScript [MimeTypeArray](https://developer.mozilla.org/en/docs/Web/API/MimeTypeArray) to Kotlin\n */\npublic external abstract class MimeTypeArray : ItemArrayLike {\n override val length: Int\n override fun item(index: Int): MimeType?\n fun namedItem(name: String): MimeType?\n}\n@kotlin.internal.InlineOnly inline operator fun MimeTypeArray.get(index: Int): MimeType? = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun MimeTypeArray.get(name: String): MimeType? = asDynamic()[name]\n\n/**\n * Exposes the JavaScript [Plugin](https://developer.mozilla.org/en/docs/Web/API/Plugin) to Kotlin\n */\npublic external abstract class Plugin : ItemArrayLike {\n open val name: String\n open val description: String\n open val filename: String\n override val length: Int\n override fun item(index: Int): MimeType?\n fun namedItem(name: String): MimeType?\n}\n@kotlin.internal.InlineOnly inline operator fun Plugin.get(index: Int): MimeType? = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun Plugin.get(name: String): MimeType? = asDynamic()[name]\n\n/**\n * Exposes the JavaScript [MimeType](https://developer.mozilla.org/en/docs/Web/API/MimeType) to Kotlin\n */\npublic external abstract class MimeType {\n open val type: String\n open val description: String\n open val suffixes: String\n open val enabledPlugin: Plugin\n}\n\n/**\n * Exposes the JavaScript [ImageBitmap](https://developer.mozilla.org/en/docs/Web/API/ImageBitmap) to Kotlin\n */\npublic external abstract class ImageBitmap : TexImageSource {\n open val width: Int\n open val height: Int\n fun close(): Unit\n}\n\npublic external interface ImageBitmapOptions {\n var imageOrientation: ImageOrientation? /* = ImageOrientation.NONE */\n get() = definedExternally\n set(value) = definedExternally\n var premultiplyAlpha: PremultiplyAlpha? /* = PremultiplyAlpha.DEFAULT */\n get() = definedExternally\n set(value) = definedExternally\n var colorSpaceConversion: ColorSpaceConversion? /* = ColorSpaceConversion.DEFAULT */\n get() = definedExternally\n set(value) = definedExternally\n var resizeWidth: Int?\n get() = definedExternally\n set(value) = definedExternally\n var resizeHeight: Int?\n get() = definedExternally\n set(value) = definedExternally\n var resizeQuality: ResizeQuality? /* = ResizeQuality.LOW */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ImageBitmapOptions(imageOrientation: ImageOrientation? = ImageOrientation.NONE, premultiplyAlpha: PremultiplyAlpha? = PremultiplyAlpha.DEFAULT, colorSpaceConversion: ColorSpaceConversion? = ColorSpaceConversion.DEFAULT, resizeWidth: Int? = undefined, resizeHeight: Int? = undefined, resizeQuality: ResizeQuality? = ResizeQuality.LOW): ImageBitmapOptions {\n val o = js(\"({})\")\n\n o[\"imageOrientation\"] = imageOrientation\n o[\"premultiplyAlpha\"] = premultiplyAlpha\n o[\"colorSpaceConversion\"] = colorSpaceConversion\n o[\"resizeWidth\"] = resizeWidth\n o[\"resizeHeight\"] = resizeHeight\n o[\"resizeQuality\"] = resizeQuality\n\n return o\n}\n\n/**\n * Exposes the JavaScript [MessageEvent](https://developer.mozilla.org/en/docs/Web/API/MessageEvent) to Kotlin\n */\npublic external open class MessageEvent(type: String, eventInitDict: MessageEventInit = definedExternally) : Event {\n open val data: Any?\n open val origin: String\n open val lastEventId: String\n open val source: UnionMessagePortOrWindow?\n open val ports: Array\n fun initMessageEvent(type: String, bubbles: Boolean, cancelable: Boolean, data: Any?, origin: String, lastEventId: String, source: UnionMessagePortOrWindow?, ports: Array): Unit\n}\n\npublic external interface MessageEventInit : EventInit {\n var data: Any? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var origin: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var lastEventId: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var source: UnionMessagePortOrWindow? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var ports: Array? /* = arrayOf() */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MessageEventInit(data: Any? = null, origin: String? = \"\", lastEventId: String? = \"\", source: UnionMessagePortOrWindow? = null, ports: Array? = arrayOf(), bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): MessageEventInit {\n val o = js(\"({})\")\n\n o[\"data\"] = data\n o[\"origin\"] = origin\n o[\"lastEventId\"] = lastEventId\n o[\"source\"] = source\n o[\"ports\"] = ports\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [EventSource](https://developer.mozilla.org/en/docs/Web/API/EventSource) to Kotlin\n */\npublic external open class EventSource(url: String, eventSourceInitDict: EventSourceInit = definedExternally) : EventTarget {\n open val url: String\n open val withCredentials: Boolean\n open val readyState: Short\n var onopen: ((Event) -> dynamic)?\n var onmessage: ((MessageEvent) -> dynamic)?\n var onerror: ((Event) -> dynamic)?\n fun close(): Unit\n\n companion object {\n val CONNECTING: Short\n val OPEN: Short\n val CLOSED: Short\n }\n}\n\npublic external interface EventSourceInit {\n var withCredentials: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun EventSourceInit(withCredentials: Boolean? = false): EventSourceInit {\n val o = js(\"({})\")\n\n o[\"withCredentials\"] = withCredentials\n\n return o\n}\n\n/**\n * Exposes the JavaScript [WebSocket](https://developer.mozilla.org/en/docs/Web/API/WebSocket) to Kotlin\n */\npublic external open class WebSocket(url: String, protocols: dynamic = definedExternally) : EventTarget {\n open val url: String\n open val readyState: Short\n open val bufferedAmount: Int\n var onopen: ((Event) -> dynamic)?\n var onerror: ((Event) -> dynamic)?\n var onclose: ((Event) -> dynamic)?\n open val extensions: String\n open val protocol: String\n var onmessage: ((MessageEvent) -> dynamic)?\n var binaryType: BinaryType\n fun close(code: Short = definedExternally, reason: String = definedExternally): Unit\n fun send(data: String): Unit\n fun send(data: Blob): Unit\n fun send(data: ArrayBuffer): Unit\n fun send(data: ArrayBufferView): Unit\n\n companion object {\n val CONNECTING: Short\n val OPEN: Short\n val CLOSING: Short\n val CLOSED: Short\n }\n}\n\n/**\n * Exposes the JavaScript [CloseEvent](https://developer.mozilla.org/en/docs/Web/API/CloseEvent) to Kotlin\n */\npublic external open class CloseEvent(type: String, eventInitDict: CloseEventInit = definedExternally) : Event {\n open val wasClean: Boolean\n open val code: Short\n open val reason: String\n}\n\npublic external interface CloseEventInit : EventInit {\n var wasClean: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var code: Short? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var reason: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun CloseEventInit(wasClean: Boolean? = false, code: Short? = 0, reason: String? = \"\", bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): CloseEventInit {\n val o = js(\"({})\")\n\n o[\"wasClean\"] = wasClean\n o[\"code\"] = code\n o[\"reason\"] = reason\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [MessageChannel](https://developer.mozilla.org/en/docs/Web/API/MessageChannel) to Kotlin\n */\npublic external open class MessageChannel {\n open val port1: MessagePort\n open val port2: MessagePort\n}\n\n/**\n * Exposes the JavaScript [MessagePort](https://developer.mozilla.org/en/docs/Web/API/MessagePort) to Kotlin\n */\npublic external abstract class MessagePort : EventTarget, UnionMessagePortOrWindow, UnionMessagePortOrServiceWorker, UnionClientOrMessagePortOrServiceWorker {\n open var onmessage: ((MessageEvent) -> dynamic)?\n fun postMessage(message: Any?, transfer: Array = definedExternally): Unit\n fun start(): Unit\n fun close(): Unit\n}\n\n/**\n * Exposes the JavaScript [BroadcastChannel](https://developer.mozilla.org/en/docs/Web/API/BroadcastChannel) to Kotlin\n */\npublic external open class BroadcastChannel(name: String) : EventTarget {\n open val name: String\n var onmessage: ((MessageEvent) -> dynamic)?\n fun postMessage(message: Any?): Unit\n fun close(): Unit\n}\n\n/**\n * Exposes the JavaScript [WorkerGlobalScope](https://developer.mozilla.org/en/docs/Web/API/WorkerGlobalScope) to Kotlin\n */\npublic external abstract class WorkerGlobalScope : EventTarget, WindowOrWorkerGlobalScope, GlobalPerformance {\n open val self: WorkerGlobalScope\n open val location: WorkerLocation\n open val navigator: WorkerNavigator\n open var onerror: ((dynamic, String, Int, Int, Any?) -> dynamic)?\n open var onlanguagechange: ((Event) -> dynamic)?\n open var onoffline: ((Event) -> dynamic)?\n open var ononline: ((Event) -> dynamic)?\n open var onrejectionhandled: ((Event) -> dynamic)?\n open var onunhandledrejection: ((PromiseRejectionEvent) -> dynamic)?\n fun importScripts(vararg urls: String): Unit\n}\n\n/**\n * Exposes the JavaScript [DedicatedWorkerGlobalScope](https://developer.mozilla.org/en/docs/Web/API/DedicatedWorkerGlobalScope) to Kotlin\n */\npublic external abstract class DedicatedWorkerGlobalScope : WorkerGlobalScope {\n open var onmessage: ((MessageEvent) -> dynamic)?\n fun postMessage(message: Any?, transfer: Array = definedExternally): Unit\n fun close(): Unit\n}\n\n/**\n * Exposes the JavaScript [SharedWorkerGlobalScope](https://developer.mozilla.org/en/docs/Web/API/SharedWorkerGlobalScope) to Kotlin\n */\npublic external abstract class SharedWorkerGlobalScope : WorkerGlobalScope {\n open val name: String\n open val applicationCache: ApplicationCache\n open var onconnect: ((Event) -> dynamic)?\n fun close(): Unit\n}\n\n/**\n * Exposes the JavaScript [AbstractWorker](https://developer.mozilla.org/en/docs/Web/API/AbstractWorker) to Kotlin\n */\npublic external interface AbstractWorker {\n var onerror: ((Event) -> dynamic)?\n}\n\n/**\n * Exposes the JavaScript [Worker](https://developer.mozilla.org/en/docs/Web/API/Worker) to Kotlin\n */\npublic external open class Worker(scriptURL: String, options: WorkerOptions = definedExternally) : EventTarget, AbstractWorker {\n var onmessage: ((MessageEvent) -> dynamic)?\n override var onerror: ((Event) -> dynamic)?\n fun terminate(): Unit\n fun postMessage(message: Any?, transfer: Array = definedExternally): Unit\n}\n\npublic external interface WorkerOptions {\n var type: WorkerType? /* = WorkerType.CLASSIC */\n get() = definedExternally\n set(value) = definedExternally\n var credentials: RequestCredentials? /* = RequestCredentials.OMIT */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun WorkerOptions(type: WorkerType? = WorkerType.CLASSIC, credentials: RequestCredentials? = RequestCredentials.OMIT): WorkerOptions {\n val o = js(\"({})\")\n\n o[\"type\"] = type\n o[\"credentials\"] = credentials\n\n return o\n}\n\n/**\n * Exposes the JavaScript [SharedWorker](https://developer.mozilla.org/en/docs/Web/API/SharedWorker) to Kotlin\n */\npublic external open class SharedWorker(scriptURL: String, name: String = definedExternally, options: WorkerOptions = definedExternally) : EventTarget, AbstractWorker {\n open val port: MessagePort\n override var onerror: ((Event) -> dynamic)?\n}\n\n/**\n * Exposes the JavaScript [NavigatorConcurrentHardware](https://developer.mozilla.org/en/docs/Web/API/NavigatorConcurrentHardware) to Kotlin\n */\npublic external interface NavigatorConcurrentHardware {\n val hardwareConcurrency: Int\n}\n\n/**\n * Exposes the JavaScript [WorkerNavigator](https://developer.mozilla.org/en/docs/Web/API/WorkerNavigator) to Kotlin\n */\npublic external abstract class WorkerNavigator : NavigatorID, NavigatorLanguage, NavigatorOnLine, NavigatorConcurrentHardware {\n open val serviceWorker: ServiceWorkerContainer\n}\n\n/**\n * Exposes the JavaScript [WorkerLocation](https://developer.mozilla.org/en/docs/Web/API/WorkerLocation) to Kotlin\n */\npublic external abstract class WorkerLocation {\n open var href: String\n open val origin: String\n open val protocol: String\n open val host: String\n open val hostname: String\n open val port: String\n open val pathname: String\n open val search: String\n open val hash: String\n}\n\n/**\n * Exposes the JavaScript [Storage](https://developer.mozilla.org/en/docs/Web/API/Storage) to Kotlin\n */\npublic external abstract class Storage {\n open val length: Int\n fun key(index: Int): String?\n fun getItem(key: String): String?\n fun setItem(key: String, value: String): Unit\n fun removeItem(key: String): Unit\n fun clear(): Unit\n}\n@kotlin.internal.InlineOnly inline operator fun Storage.get(key: String): String? = asDynamic()[key]\n@kotlin.internal.InlineOnly inline operator fun Storage.set(key: String, value: String): Unit { asDynamic()[key] = value; }\n\n/**\n * Exposes the JavaScript [WindowSessionStorage](https://developer.mozilla.org/en/docs/Web/API/WindowSessionStorage) to Kotlin\n */\npublic external interface WindowSessionStorage {\n val sessionStorage: Storage\n}\n\n/**\n * Exposes the JavaScript [WindowLocalStorage](https://developer.mozilla.org/en/docs/Web/API/WindowLocalStorage) to Kotlin\n */\npublic external interface WindowLocalStorage {\n val localStorage: Storage\n}\n\n/**\n * Exposes the JavaScript [StorageEvent](https://developer.mozilla.org/en/docs/Web/API/StorageEvent) to Kotlin\n */\npublic external open class StorageEvent(type: String, eventInitDict: StorageEventInit = definedExternally) : Event {\n open val key: String?\n open val oldValue: String?\n open val newValue: String?\n open val url: String\n open val storageArea: Storage?\n}\n\npublic external interface StorageEventInit : EventInit {\n var key: String? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var oldValue: String? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var newValue: String? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var url: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var storageArea: Storage? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun StorageEventInit(key: String? = null, oldValue: String? = null, newValue: String? = null, url: String? = \"\", storageArea: Storage? = null, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): StorageEventInit {\n val o = js(\"({})\")\n\n o[\"key\"] = key\n o[\"oldValue\"] = oldValue\n o[\"newValue\"] = newValue\n o[\"url\"] = url\n o[\"storageArea\"] = storageArea\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\npublic external abstract class HTMLAppletElement : HTMLElement {\n open var align: String\n open var alt: String\n open var archive: String\n open var code: String\n open var codeBase: String\n open var height: String\n open var hspace: Int\n open var name: String\n open var _object: String\n open var vspace: Int\n open var width: String\n}\n\n/**\n * Exposes the JavaScript [HTMLMarqueeElement](https://developer.mozilla.org/en/docs/Web/API/HTMLMarqueeElement) to Kotlin\n */\npublic external abstract class HTMLMarqueeElement : HTMLElement {\n open var behavior: String\n open var bgColor: String\n open var direction: String\n open var height: String\n open var hspace: Int\n open var loop: Int\n open var scrollAmount: Int\n open var scrollDelay: Int\n open var trueSpeed: Boolean\n open var vspace: Int\n open var width: String\n open var onbounce: ((Event) -> dynamic)?\n open var onfinish: ((Event) -> dynamic)?\n open var onstart: ((Event) -> dynamic)?\n fun start(): Unit\n fun stop(): Unit\n}\n\n/**\n * Exposes the JavaScript [HTMLFrameSetElement](https://developer.mozilla.org/en/docs/Web/API/HTMLFrameSetElement) to Kotlin\n */\npublic external abstract class HTMLFrameSetElement : HTMLElement, WindowEventHandlers {\n open var cols: String\n open var rows: String\n}\n\npublic external abstract class HTMLFrameElement : HTMLElement {\n open var name: String\n open var scrolling: String\n open var src: String\n open var frameBorder: String\n open var longDesc: String\n open var noResize: Boolean\n open val contentDocument: Document?\n open val contentWindow: Window?\n open var marginHeight: String\n open var marginWidth: String\n}\n\npublic external abstract class HTMLDirectoryElement : HTMLElement {\n open var compact: Boolean\n}\n\n/**\n * Exposes the JavaScript [HTMLFontElement](https://developer.mozilla.org/en/docs/Web/API/HTMLFontElement) to Kotlin\n */\npublic external abstract class HTMLFontElement : HTMLElement {\n open var color: String\n open var face: String\n open var size: String\n}\n\npublic external interface External {\n fun AddSearchProvider(): Unit\n fun IsSearchProviderInstalled(): Unit\n}\n\npublic external interface EventInit {\n var bubbles: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var cancelable: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var composed: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun EventInit(bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): EventInit {\n val o = js(\"({})\")\n\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [CustomEvent](https://developer.mozilla.org/en/docs/Web/API/CustomEvent) to Kotlin\n */\npublic external open class CustomEvent(type: String, eventInitDict: CustomEventInit = definedExternally) : Event {\n open val detail: Any?\n fun initCustomEvent(type: String, bubbles: Boolean, cancelable: Boolean, detail: Any?): Unit\n}\n\npublic external interface CustomEventInit : EventInit {\n var detail: Any? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun CustomEventInit(detail: Any? = null, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): CustomEventInit {\n val o = js(\"({})\")\n\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\npublic external interface EventListenerOptions {\n var capture: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun EventListenerOptions(capture: Boolean? = false): EventListenerOptions {\n val o = js(\"({})\")\n\n o[\"capture\"] = capture\n\n return o\n}\n\npublic external interface AddEventListenerOptions : EventListenerOptions {\n var passive: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var once: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun AddEventListenerOptions(passive: Boolean? = false, once: Boolean? = false, capture: Boolean? = false): AddEventListenerOptions {\n val o = js(\"({})\")\n\n o[\"passive\"] = passive\n o[\"once\"] = once\n o[\"capture\"] = capture\n\n return o\n}\n\npublic external interface NonElementParentNode {\n fun getElementById(elementId: String): Element?\n}\n\n/**\n * Exposes the JavaScript [DocumentOrShadowRoot](https://developer.mozilla.org/en/docs/Web/API/DocumentOrShadowRoot) to Kotlin\n */\npublic external interface DocumentOrShadowRoot {\n val fullscreenElement: Element?\n}\n\n/**\n * Exposes the JavaScript [ParentNode](https://developer.mozilla.org/en/docs/Web/API/ParentNode) to Kotlin\n */\npublic external interface ParentNode {\n val children: HTMLCollection\n val firstElementChild: Element?\n val lastElementChild: Element?\n val childElementCount: Int\n fun prepend(vararg nodes: dynamic): Unit\n fun append(vararg nodes: dynamic): Unit\n fun querySelector(selectors: String): Element?\n fun querySelectorAll(selectors: String): NodeList\n}\n\n/**\n * Exposes the JavaScript [NonDocumentTypeChildNode](https://developer.mozilla.org/en/docs/Web/API/NonDocumentTypeChildNode) to Kotlin\n */\npublic external interface NonDocumentTypeChildNode {\n val previousElementSibling: Element?\n val nextElementSibling: Element?\n}\n\n/**\n * Exposes the JavaScript [ChildNode](https://developer.mozilla.org/en/docs/Web/API/ChildNode) to Kotlin\n */\npublic external interface ChildNode {\n fun before(vararg nodes: dynamic): Unit\n fun after(vararg nodes: dynamic): Unit\n fun replaceWith(vararg nodes: dynamic): Unit\n fun remove(): Unit\n}\n\n/**\n * Exposes the JavaScript [Slotable](https://developer.mozilla.org/en/docs/Web/API/Slotable) to Kotlin\n */\npublic external interface Slotable {\n val assignedSlot: HTMLSlotElement?\n}\n\n/**\n * Exposes the JavaScript [NodeList](https://developer.mozilla.org/en/docs/Web/API/NodeList) to Kotlin\n */\npublic external abstract class NodeList : ItemArrayLike {\n override val length: Int\n override fun item(index: Int): Node?\n}\n@kotlin.internal.InlineOnly inline operator fun NodeList.get(index: Int): Node? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [HTMLCollection](https://developer.mozilla.org/en/docs/Web/API/HTMLCollection) to Kotlin\n */\npublic external abstract class HTMLCollection : UnionElementOrHTMLCollection, ItemArrayLike {\n override val length: Int\n override fun item(index: Int): Element?\n fun namedItem(name: String): Element?\n}\n@kotlin.internal.InlineOnly inline operator fun HTMLCollection.get(index: Int): Element? = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun HTMLCollection.get(name: String): Element? = asDynamic()[name]\n\n/**\n * Exposes the JavaScript [MutationObserver](https://developer.mozilla.org/en/docs/Web/API/MutationObserver) to Kotlin\n */\npublic external open class MutationObserver(callback: (Array, MutationObserver) -> Unit) {\n fun observe(target: Node, options: MutationObserverInit = definedExternally): Unit\n fun disconnect(): Unit\n fun takeRecords(): Array\n}\n\n/**\n * Exposes the JavaScript [MutationObserverInit](https://developer.mozilla.org/en/docs/Web/API/MutationObserverInit) to Kotlin\n */\npublic external interface MutationObserverInit {\n var childList: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var attributes: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var characterData: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var subtree: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var attributeOldValue: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var characterDataOldValue: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var attributeFilter: Array?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MutationObserverInit(childList: Boolean? = false, attributes: Boolean? = undefined, characterData: Boolean? = undefined, subtree: Boolean? = false, attributeOldValue: Boolean? = undefined, characterDataOldValue: Boolean? = undefined, attributeFilter: Array? = undefined): MutationObserverInit {\n val o = js(\"({})\")\n\n o[\"childList\"] = childList\n o[\"attributes\"] = attributes\n o[\"characterData\"] = characterData\n o[\"subtree\"] = subtree\n o[\"attributeOldValue\"] = attributeOldValue\n o[\"characterDataOldValue\"] = characterDataOldValue\n o[\"attributeFilter\"] = attributeFilter\n\n return o\n}\n\n/**\n * Exposes the JavaScript [MutationRecord](https://developer.mozilla.org/en/docs/Web/API/MutationRecord) to Kotlin\n */\npublic external abstract class MutationRecord {\n open val type: String\n open val target: Node\n open val addedNodes: NodeList\n open val removedNodes: NodeList\n open val previousSibling: Node?\n open val nextSibling: Node?\n open val attributeName: String?\n open val attributeNamespace: String?\n open val oldValue: String?\n}\n\n/**\n * Exposes the JavaScript [Node](https://developer.mozilla.org/en/docs/Web/API/Node) to Kotlin\n */\npublic external abstract class Node : EventTarget {\n open val nodeType: Short\n open val nodeName: String\n open val baseURI: String\n open val isConnected: Boolean\n open val ownerDocument: Document?\n open val parentNode: Node?\n open val parentElement: Element?\n open val childNodes: NodeList\n open val firstChild: Node?\n open val lastChild: Node?\n open val previousSibling: Node?\n open val nextSibling: Node?\n open var nodeValue: String?\n open var textContent: String?\n fun getRootNode(options: GetRootNodeOptions = definedExternally): Node\n fun hasChildNodes(): Boolean\n fun normalize(): Unit\n fun cloneNode(deep: Boolean = definedExternally): Node\n fun isEqualNode(otherNode: Node?): Boolean\n fun isSameNode(otherNode: Node?): Boolean\n fun compareDocumentPosition(other: Node): Short\n fun contains(other: Node?): Boolean\n fun lookupPrefix(namespace: String?): String?\n fun lookupNamespaceURI(prefix: String?): String?\n fun isDefaultNamespace(namespace: String?): Boolean\n fun insertBefore(node: Node, child: Node?): Node\n fun appendChild(node: Node): Node\n fun replaceChild(node: Node, child: Node): Node\n fun removeChild(child: Node): Node\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external interface GetRootNodeOptions {\n var composed: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun GetRootNodeOptions(composed: Boolean? = false): GetRootNodeOptions {\n val o = js(\"({})\")\n\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [XMLDocument](https://developer.mozilla.org/en/docs/Web/API/XMLDocument) to Kotlin\n */\npublic external open class XMLDocument : Document {\n override fun getElementById(elementId: String): Element?\n override fun prepend(vararg nodes: dynamic): Unit\n override fun append(vararg nodes: dynamic): Unit\n override fun querySelector(selectors: String): Element?\n override fun querySelectorAll(selectors: String): NodeList\n override fun getBoxQuads(options: BoxQuadOptions /* = definedExternally */): Array\n override fun convertQuadFromNode(quad: dynamic, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertRectFromNode(rect: DOMRectReadOnly, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertPointFromNode(point: DOMPointInit, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint\n}\n\npublic external interface ElementCreationOptions {\n @JsName(\"is\") var is_: String?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ElementCreationOptions(is_: String? = undefined): ElementCreationOptions {\n val o = js(\"({})\")\n\n o[\"is\"] = is_\n\n return o\n}\n\n/**\n * Exposes the JavaScript [DOMImplementation](https://developer.mozilla.org/en/docs/Web/API/DOMImplementation) to Kotlin\n */\npublic external abstract class DOMImplementation {\n fun createDocumentType(qualifiedName: String, publicId: String, systemId: String): DocumentType\n fun createDocument(namespace: String?, qualifiedName: String, doctype: DocumentType? = definedExternally): XMLDocument\n fun createHTMLDocument(title: String = definedExternally): Document\n fun hasFeature(): Boolean\n}\n\n/**\n * Exposes the JavaScript [DocumentType](https://developer.mozilla.org/en/docs/Web/API/DocumentType) to Kotlin\n */\npublic external abstract class DocumentType : Node, ChildNode {\n open val name: String\n open val publicId: String\n open val systemId: String\n}\n\n/**\n * Exposes the JavaScript [DocumentFragment](https://developer.mozilla.org/en/docs/Web/API/DocumentFragment) to Kotlin\n */\npublic external open class DocumentFragment : Node, NonElementParentNode, ParentNode {\n override val children: HTMLCollection\n override val firstElementChild: Element?\n override val lastElementChild: Element?\n override val childElementCount: Int\n override fun getElementById(elementId: String): Element?\n override fun prepend(vararg nodes: dynamic): Unit\n override fun append(vararg nodes: dynamic): Unit\n override fun querySelector(selectors: String): Element?\n override fun querySelectorAll(selectors: String): NodeList\n}\n\n/**\n * Exposes the JavaScript [ShadowRoot](https://developer.mozilla.org/en/docs/Web/API/ShadowRoot) to Kotlin\n */\npublic external open class ShadowRoot : DocumentFragment, DocumentOrShadowRoot {\n open val mode: ShadowRootMode\n open val host: Element\n override val fullscreenElement: Element?\n override fun getElementById(elementId: String): Element?\n override fun prepend(vararg nodes: dynamic): Unit\n override fun append(vararg nodes: dynamic): Unit\n override fun querySelector(selectors: String): Element?\n override fun querySelectorAll(selectors: String): NodeList\n}\n\n/**\n * Exposes the JavaScript [Element](https://developer.mozilla.org/en/docs/Web/API/Element) to Kotlin\n */\npublic external abstract class Element : Node, ParentNode, NonDocumentTypeChildNode, ChildNode, Slotable, GeometryUtils, UnionElementOrProcessingInstruction, UnionElementOrHTMLCollection, UnionElementOrRadioNodeList, UnionElementOrMouseEvent {\n open var innerHTML: String\n open var outerHTML: String\n open val namespaceURI: String?\n open val prefix: String?\n open val localName: String\n open val tagName: String\n open var id: String\n open var className: String\n open val classList: DOMTokenList\n open var slot: String\n open val attributes: NamedNodeMap\n open val shadowRoot: ShadowRoot?\n open var scrollTop: Double\n open var scrollLeft: Double\n open val scrollWidth: Int\n open val scrollHeight: Int\n open val clientTop: Int\n open val clientLeft: Int\n open val clientWidth: Int\n open val clientHeight: Int\n fun requestFullscreen(): Promise\n fun setPointerCapture(pointerId: Int): Unit\n fun releasePointerCapture(pointerId: Int): Unit\n fun hasPointerCapture(pointerId: Int): Boolean\n fun insertAdjacentHTML(position: String, text: String): Unit\n fun hasAttributes(): Boolean\n fun getAttributeNames(): Array\n fun getAttribute(qualifiedName: String): String?\n fun getAttributeNS(namespace: String?, localName: String): String?\n fun setAttribute(qualifiedName: String, value: String): Unit\n fun setAttributeNS(namespace: String?, qualifiedName: String, value: String): Unit\n fun removeAttribute(qualifiedName: String): Unit\n fun removeAttributeNS(namespace: String?, localName: String): Unit\n fun hasAttribute(qualifiedName: String): Boolean\n fun hasAttributeNS(namespace: String?, localName: String): Boolean\n fun getAttributeNode(qualifiedName: String): Attr?\n fun getAttributeNodeNS(namespace: String?, localName: String): Attr?\n fun setAttributeNode(attr: Attr): Attr?\n fun setAttributeNodeNS(attr: Attr): Attr?\n fun removeAttributeNode(attr: Attr): Attr\n fun attachShadow(init: ShadowRootInit): ShadowRoot\n fun closest(selectors: String): Element?\n fun matches(selectors: String): Boolean\n fun webkitMatchesSelector(selectors: String): Boolean\n fun getElementsByTagName(qualifiedName: String): HTMLCollection\n fun getElementsByTagNameNS(namespace: String?, localName: String): HTMLCollection\n fun getElementsByClassName(classNames: String): HTMLCollection\n fun insertAdjacentElement(where: String, element: Element): Element?\n fun insertAdjacentText(where: String, data: String): Unit\n fun getClientRects(): Array\n fun getBoundingClientRect(): DOMRect\n fun scrollIntoView(): Unit\n fun scrollIntoView(arg: dynamic): Unit\n fun scroll(options: ScrollToOptions = definedExternally): Unit\n fun scroll(x: Double, y: Double): Unit\n fun scrollTo(options: ScrollToOptions = definedExternally): Unit\n fun scrollTo(x: Double, y: Double): Unit\n fun scrollBy(options: ScrollToOptions = definedExternally): Unit\n fun scrollBy(x: Double, y: Double): Unit\n}\n\npublic external interface ShadowRootInit {\n var mode: ShadowRootMode?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ShadowRootInit(mode: ShadowRootMode?): ShadowRootInit {\n val o = js(\"({})\")\n\n o[\"mode\"] = mode\n\n return o\n}\n\n/**\n * Exposes the JavaScript [NamedNodeMap](https://developer.mozilla.org/en/docs/Web/API/NamedNodeMap) to Kotlin\n */\npublic external abstract class NamedNodeMap : ItemArrayLike {\n override val length: Int\n override fun item(index: Int): Attr?\n fun getNamedItem(qualifiedName: String): Attr?\n fun getNamedItemNS(namespace: String?, localName: String): Attr?\n fun setNamedItem(attr: Attr): Attr?\n fun setNamedItemNS(attr: Attr): Attr?\n fun removeNamedItem(qualifiedName: String): Attr\n fun removeNamedItemNS(namespace: String?, localName: String): Attr\n}\n@kotlin.internal.InlineOnly inline operator fun NamedNodeMap.get(index: Int): Attr? = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun NamedNodeMap.get(qualifiedName: String): Attr? = asDynamic()[qualifiedName]\n\n/**\n * Exposes the JavaScript [Attr](https://developer.mozilla.org/en/docs/Web/API/Attr) to Kotlin\n */\npublic external abstract class Attr : Node {\n open val namespaceURI: String?\n open val prefix: String?\n open val localName: String\n open val name: String\n open var value: String\n open val ownerElement: Element?\n open val specified: Boolean\n}\n\n/**\n * Exposes the JavaScript [CharacterData](https://developer.mozilla.org/en/docs/Web/API/CharacterData) to Kotlin\n */\npublic external abstract class CharacterData : Node, NonDocumentTypeChildNode, ChildNode {\n open var data: String\n open val length: Int\n fun substringData(offset: Int, count: Int): String\n fun appendData(data: String): Unit\n fun insertData(offset: Int, data: String): Unit\n fun deleteData(offset: Int, count: Int): Unit\n fun replaceData(offset: Int, count: Int, data: String): Unit\n}\n\n/**\n * Exposes the JavaScript [Text](https://developer.mozilla.org/en/docs/Web/API/Text) to Kotlin\n */\npublic external open class Text(data: String = definedExternally) : CharacterData, Slotable, GeometryUtils {\n open val wholeText: String\n override val previousElementSibling: Element?\n override val nextElementSibling: Element?\n override val assignedSlot: HTMLSlotElement?\n fun splitText(offset: Int): Text\n override fun before(vararg nodes: dynamic): Unit\n override fun after(vararg nodes: dynamic): Unit\n override fun replaceWith(vararg nodes: dynamic): Unit\n override fun remove(): Unit\n override fun getBoxQuads(options: BoxQuadOptions /* = definedExternally */): Array\n override fun convertQuadFromNode(quad: dynamic, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertRectFromNode(rect: DOMRectReadOnly, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertPointFromNode(point: DOMPointInit, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint\n}\n\n/**\n * Exposes the JavaScript [CDATASection](https://developer.mozilla.org/en/docs/Web/API/CDATASection) to Kotlin\n */\npublic external open class CDATASection : Text {\n override fun before(vararg nodes: dynamic): Unit\n override fun after(vararg nodes: dynamic): Unit\n override fun replaceWith(vararg nodes: dynamic): Unit\n override fun remove(): Unit\n override fun getBoxQuads(options: BoxQuadOptions /* = definedExternally */): Array\n override fun convertQuadFromNode(quad: dynamic, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertRectFromNode(rect: DOMRectReadOnly, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertPointFromNode(point: DOMPointInit, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint\n}\n\n/**\n * Exposes the JavaScript [ProcessingInstruction](https://developer.mozilla.org/en/docs/Web/API/ProcessingInstruction) to Kotlin\n */\npublic external abstract class ProcessingInstruction : CharacterData, LinkStyle, UnionElementOrProcessingInstruction {\n open val target: String\n}\n\n/**\n * Exposes the JavaScript [Comment](https://developer.mozilla.org/en/docs/Web/API/Comment) to Kotlin\n */\npublic external open class Comment(data: String = definedExternally) : CharacterData {\n override val previousElementSibling: Element?\n override val nextElementSibling: Element?\n override fun before(vararg nodes: dynamic): Unit\n override fun after(vararg nodes: dynamic): Unit\n override fun replaceWith(vararg nodes: dynamic): Unit\n override fun remove(): Unit\n}\n\n/**\n * Exposes the JavaScript [Range](https://developer.mozilla.org/en/docs/Web/API/Range) to Kotlin\n */\npublic external open class Range {\n open val startContainer: Node\n open val startOffset: Int\n open val endContainer: Node\n open val endOffset: Int\n open val collapsed: Boolean\n open val commonAncestorContainer: Node\n fun createContextualFragment(fragment: String): DocumentFragment\n fun setStart(node: Node, offset: Int): Unit\n fun setEnd(node: Node, offset: Int): Unit\n fun setStartBefore(node: Node): Unit\n fun setStartAfter(node: Node): Unit\n fun setEndBefore(node: Node): Unit\n fun setEndAfter(node: Node): Unit\n fun collapse(toStart: Boolean = definedExternally): Unit\n fun selectNode(node: Node): Unit\n fun selectNodeContents(node: Node): Unit\n fun compareBoundaryPoints(how: Short, sourceRange: Range): Short\n fun deleteContents(): Unit\n fun extractContents(): DocumentFragment\n fun cloneContents(): DocumentFragment\n fun insertNode(node: Node): Unit\n fun surroundContents(newParent: Node): Unit\n fun cloneRange(): Range\n fun detach(): Unit\n fun isPointInRange(node: Node, offset: Int): Boolean\n fun comparePoint(node: Node, offset: Int): Short\n fun intersectsNode(node: Node): Boolean\n fun getClientRects(): Array\n fun getBoundingClientRect(): DOMRect\n\n companion object {\n val START_TO_START: Short\n val START_TO_END: Short\n val END_TO_END: Short\n val END_TO_START: Short\n }\n}\n\n/**\n * Exposes the JavaScript [NodeIterator](https://developer.mozilla.org/en/docs/Web/API/NodeIterator) to Kotlin\n */\npublic external abstract class NodeIterator {\n open val root: Node\n open val referenceNode: Node\n open val pointerBeforeReferenceNode: Boolean\n open val whatToShow: Int\n open val filter: NodeFilter?\n fun nextNode(): Node?\n fun previousNode(): Node?\n fun detach(): Unit\n}\n\n/**\n * Exposes the JavaScript [TreeWalker](https://developer.mozilla.org/en/docs/Web/API/TreeWalker) to Kotlin\n */\npublic external abstract class TreeWalker {\n open val root: Node\n open val whatToShow: Int\n open val filter: NodeFilter?\n open var currentNode: Node\n fun parentNode(): Node?\n fun firstChild(): Node?\n fun lastChild(): Node?\n fun previousSibling(): Node?\n fun nextSibling(): Node?\n fun previousNode(): Node?\n fun nextNode(): Node?\n}\n\n/**\n * Exposes the JavaScript [NodeFilter](https://developer.mozilla.org/en/docs/Web/API/NodeFilter) to Kotlin\n */\npublic external interface NodeFilter {\n fun acceptNode(node: Node): Short\n\n companion object {\n val FILTER_ACCEPT: Short\n val FILTER_REJECT: Short\n val FILTER_SKIP: Short\n val SHOW_ALL: Int\n val SHOW_ELEMENT: Int\n val SHOW_ATTRIBUTE: Int\n val SHOW_TEXT: Int\n val SHOW_CDATA_SECTION: Int\n val SHOW_ENTITY_REFERENCE: Int\n val SHOW_ENTITY: Int\n val SHOW_PROCESSING_INSTRUCTION: Int\n val SHOW_COMMENT: Int\n val SHOW_DOCUMENT: Int\n val SHOW_DOCUMENT_TYPE: Int\n val SHOW_DOCUMENT_FRAGMENT: Int\n val SHOW_NOTATION: Int\n }\n}\n\n/**\n * Exposes the JavaScript [DOMTokenList](https://developer.mozilla.org/en/docs/Web/API/DOMTokenList) to Kotlin\n */\npublic external abstract class DOMTokenList : ItemArrayLike {\n override val length: Int\n open var value: String\n override fun item(index: Int): String?\n fun contains(token: String): Boolean\n fun add(vararg tokens: String): Unit\n fun remove(vararg tokens: String): Unit\n fun toggle(token: String, force: Boolean = definedExternally): Boolean\n fun replace(token: String, newToken: String): Unit\n fun supports(token: String): Boolean\n}\n@kotlin.internal.InlineOnly inline operator fun DOMTokenList.get(index: Int): String? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [DOMPointReadOnly](https://developer.mozilla.org/en/docs/Web/API/DOMPointReadOnly) to Kotlin\n */\npublic external open class DOMPointReadOnly(x: Double, y: Double, z: Double, w: Double) {\n open val x: Double\n open val y: Double\n open val z: Double\n open val w: Double\n fun matrixTransform(matrix: DOMMatrixReadOnly): DOMPoint\n}\n\n/**\n * Exposes the JavaScript [DOMPoint](https://developer.mozilla.org/en/docs/Web/API/DOMPoint) to Kotlin\n */\npublic external open class DOMPoint : DOMPointReadOnly {\n constructor(point: DOMPointInit)\n constructor(x: Double = definedExternally, y: Double = definedExternally, z: Double = definedExternally, w: Double = definedExternally)\n override var x: Double\n override var y: Double\n override var z: Double\n override var w: Double\n}\n\n/**\n * Exposes the JavaScript [DOMPointInit](https://developer.mozilla.org/en/docs/Web/API/DOMPointInit) to Kotlin\n */\npublic external interface DOMPointInit {\n var x: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var y: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var z: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var w: Double? /* = 1.0 */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun DOMPointInit(x: Double? = 0.0, y: Double? = 0.0, z: Double? = 0.0, w: Double? = 1.0): DOMPointInit {\n val o = js(\"({})\")\n\n o[\"x\"] = x\n o[\"y\"] = y\n o[\"z\"] = z\n o[\"w\"] = w\n\n return o\n}\n\n/**\n * Exposes the JavaScript [DOMRect](https://developer.mozilla.org/en/docs/Web/API/DOMRect) to Kotlin\n */\npublic external open class DOMRect(x: Double = definedExternally, y: Double = definedExternally, width: Double = definedExternally, height: Double = definedExternally) : DOMRectReadOnly {\n override var x: Double\n override var y: Double\n override var width: Double\n override var height: Double\n}\n\n/**\n * Exposes the JavaScript [DOMRectReadOnly](https://developer.mozilla.org/en/docs/Web/API/DOMRectReadOnly) to Kotlin\n */\npublic external open class DOMRectReadOnly(x: Double, y: Double, width: Double, height: Double) {\n open val x: Double\n open val y: Double\n open val width: Double\n open val height: Double\n open val top: Double\n open val right: Double\n open val bottom: Double\n open val left: Double\n}\n\npublic external interface DOMRectInit {\n var x: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var y: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var width: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var height: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun DOMRectInit(x: Double? = 0.0, y: Double? = 0.0, width: Double? = 0.0, height: Double? = 0.0): DOMRectInit {\n val o = js(\"({})\")\n\n o[\"x\"] = x\n o[\"y\"] = y\n o[\"width\"] = width\n o[\"height\"] = height\n\n return o\n}\n\npublic external interface DOMRectList : ItemArrayLike {\n override fun item(index: Int): DOMRect?\n}\n@kotlin.internal.InlineOnly inline operator fun DOMRectList.get(index: Int): DOMRect? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [DOMQuad](https://developer.mozilla.org/en/docs/Web/API/DOMQuad) to Kotlin\n */\npublic external open class DOMQuad {\n constructor(p1: DOMPointInit = definedExternally, p2: DOMPointInit = definedExternally, p3: DOMPointInit = definedExternally, p4: DOMPointInit = definedExternally)\n constructor(rect: DOMRectInit)\n open val p1: DOMPoint\n open val p2: DOMPoint\n open val p3: DOMPoint\n open val p4: DOMPoint\n open val bounds: DOMRectReadOnly\n}\n\n/**\n * Exposes the JavaScript [DOMMatrixReadOnly](https://developer.mozilla.org/en/docs/Web/API/DOMMatrixReadOnly) to Kotlin\n */\npublic external open class DOMMatrixReadOnly(numberSequence: Array) {\n open val a: Double\n open val b: Double\n open val c: Double\n open val d: Double\n open val e: Double\n open val f: Double\n open val m11: Double\n open val m12: Double\n open val m13: Double\n open val m14: Double\n open val m21: Double\n open val m22: Double\n open val m23: Double\n open val m24: Double\n open val m31: Double\n open val m32: Double\n open val m33: Double\n open val m34: Double\n open val m41: Double\n open val m42: Double\n open val m43: Double\n open val m44: Double\n open val is2D: Boolean\n open val isIdentity: Boolean\n fun translate(tx: Double, ty: Double, tz: Double = definedExternally): DOMMatrix\n fun scale(scale: Double, originX: Double = definedExternally, originY: Double = definedExternally): DOMMatrix\n fun scale3d(scale: Double, originX: Double = definedExternally, originY: Double = definedExternally, originZ: Double = definedExternally): DOMMatrix\n fun scaleNonUniform(scaleX: Double, scaleY: Double = definedExternally, scaleZ: Double = definedExternally, originX: Double = definedExternally, originY: Double = definedExternally, originZ: Double = definedExternally): DOMMatrix\n fun rotate(angle: Double, originX: Double = definedExternally, originY: Double = definedExternally): DOMMatrix\n fun rotateFromVector(x: Double, y: Double): DOMMatrix\n fun rotateAxisAngle(x: Double, y: Double, z: Double, angle: Double): DOMMatrix\n fun skewX(sx: Double): DOMMatrix\n fun skewY(sy: Double): DOMMatrix\n fun multiply(other: DOMMatrix): DOMMatrix\n fun flipX(): DOMMatrix\n fun flipY(): DOMMatrix\n fun inverse(): DOMMatrix\n fun transformPoint(point: DOMPointInit = definedExternally): DOMPoint\n fun toFloat32Array(): Float32Array\n fun toFloat64Array(): Float64Array\n}\n\n/**\n * Exposes the JavaScript [DOMMatrix](https://developer.mozilla.org/en/docs/Web/API/DOMMatrix) to Kotlin\n */\npublic external open class DOMMatrix() : DOMMatrixReadOnly {\n constructor(transformList: String)\n constructor(other: DOMMatrixReadOnly)\n constructor(array32: Float32Array)\n constructor(array64: Float64Array)\n constructor(numberSequence: Array)\n override var a: Double\n override var b: Double\n override var c: Double\n override var d: Double\n override var e: Double\n override var f: Double\n override var m11: Double\n override var m12: Double\n override var m13: Double\n override var m14: Double\n override var m21: Double\n override var m22: Double\n override var m23: Double\n override var m24: Double\n override var m31: Double\n override var m32: Double\n override var m33: Double\n override var m34: Double\n override var m41: Double\n override var m42: Double\n override var m43: Double\n override var m44: Double\n fun multiplySelf(other: DOMMatrix): DOMMatrix\n fun preMultiplySelf(other: DOMMatrix): DOMMatrix\n fun translateSelf(tx: Double, ty: Double, tz: Double = definedExternally): DOMMatrix\n fun scaleSelf(scale: Double, originX: Double = definedExternally, originY: Double = definedExternally): DOMMatrix\n fun scale3dSelf(scale: Double, originX: Double = definedExternally, originY: Double = definedExternally, originZ: Double = definedExternally): DOMMatrix\n fun scaleNonUniformSelf(scaleX: Double, scaleY: Double = definedExternally, scaleZ: Double = definedExternally, originX: Double = definedExternally, originY: Double = definedExternally, originZ: Double = definedExternally): DOMMatrix\n fun rotateSelf(angle: Double, originX: Double = definedExternally, originY: Double = definedExternally): DOMMatrix\n fun rotateFromVectorSelf(x: Double, y: Double): DOMMatrix\n fun rotateAxisAngleSelf(x: Double, y: Double, z: Double, angle: Double): DOMMatrix\n fun skewXSelf(sx: Double): DOMMatrix\n fun skewYSelf(sy: Double): DOMMatrix\n fun invertSelf(): DOMMatrix\n fun setMatrixValue(transformList: String): DOMMatrix\n}\n\npublic external interface ScrollOptions {\n var behavior: ScrollBehavior? /* = ScrollBehavior.AUTO */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ScrollOptions(behavior: ScrollBehavior? = ScrollBehavior.AUTO): ScrollOptions {\n val o = js(\"({})\")\n\n o[\"behavior\"] = behavior\n\n return o\n}\n\n/**\n * Exposes the JavaScript [ScrollToOptions](https://developer.mozilla.org/en/docs/Web/API/ScrollToOptions) to Kotlin\n */\npublic external interface ScrollToOptions : ScrollOptions {\n var left: Double?\n get() = definedExternally\n set(value) = definedExternally\n var top: Double?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ScrollToOptions(left: Double? = undefined, top: Double? = undefined, behavior: ScrollBehavior? = ScrollBehavior.AUTO): ScrollToOptions {\n val o = js(\"({})\")\n\n o[\"left\"] = left\n o[\"top\"] = top\n o[\"behavior\"] = behavior\n\n return o\n}\n\n/**\n * Exposes the JavaScript [MediaQueryList](https://developer.mozilla.org/en/docs/Web/API/MediaQueryList) to Kotlin\n */\npublic external abstract class MediaQueryList : EventTarget {\n open val media: String\n open val matches: Boolean\n open var onchange: ((Event) -> dynamic)?\n fun addListener(listener: EventListener?): Unit\n fun addListener(listener: ((Event) -> Unit)?): Unit\n fun removeListener(listener: EventListener?): Unit\n fun removeListener(listener: ((Event) -> Unit)?): Unit\n}\n\n/**\n * Exposes the JavaScript [MediaQueryListEvent](https://developer.mozilla.org/en/docs/Web/API/MediaQueryListEvent) to Kotlin\n */\npublic external open class MediaQueryListEvent(type: String, eventInitDict: MediaQueryListEventInit = definedExternally) : Event {\n open val media: String\n open val matches: Boolean\n}\n\npublic external interface MediaQueryListEventInit : EventInit {\n var media: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var matches: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MediaQueryListEventInit(media: String? = \"\", matches: Boolean? = false, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): MediaQueryListEventInit {\n val o = js(\"({})\")\n\n o[\"media\"] = media\n o[\"matches\"] = matches\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [Screen](https://developer.mozilla.org/en/docs/Web/API/Screen) to Kotlin\n */\npublic external abstract class Screen {\n open val availWidth: Int\n open val availHeight: Int\n open val width: Int\n open val height: Int\n open val colorDepth: Int\n open val pixelDepth: Int\n}\n\n/**\n * Exposes the JavaScript [CaretPosition](https://developer.mozilla.org/en/docs/Web/API/CaretPosition) to Kotlin\n */\npublic external abstract class CaretPosition {\n open val offsetNode: Node\n open val offset: Int\n fun getClientRect(): DOMRect?\n}\n\npublic external interface ScrollIntoViewOptions : ScrollOptions {\n var block: ScrollLogicalPosition? /* = ScrollLogicalPosition.CENTER */\n get() = definedExternally\n set(value) = definedExternally\n var inline: ScrollLogicalPosition? /* = ScrollLogicalPosition.CENTER */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ScrollIntoViewOptions(block: ScrollLogicalPosition? = ScrollLogicalPosition.CENTER, inline: ScrollLogicalPosition? = ScrollLogicalPosition.CENTER, behavior: ScrollBehavior? = ScrollBehavior.AUTO): ScrollIntoViewOptions {\n val o = js(\"({})\")\n\n o[\"block\"] = block\n o[\"inline\"] = inline\n o[\"behavior\"] = behavior\n\n return o\n}\n\npublic external interface BoxQuadOptions {\n var box: CSSBoxType? /* = CSSBoxType.BORDER */\n get() = definedExternally\n set(value) = definedExternally\n var relativeTo: dynamic\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun BoxQuadOptions(box: CSSBoxType? = CSSBoxType.BORDER, relativeTo: dynamic = undefined): BoxQuadOptions {\n val o = js(\"({})\")\n\n o[\"box\"] = box\n o[\"relativeTo\"] = relativeTo\n\n return o\n}\n\npublic external interface ConvertCoordinateOptions {\n var fromBox: CSSBoxType? /* = CSSBoxType.BORDER */\n get() = definedExternally\n set(value) = definedExternally\n var toBox: CSSBoxType? /* = CSSBoxType.BORDER */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ConvertCoordinateOptions(fromBox: CSSBoxType? = CSSBoxType.BORDER, toBox: CSSBoxType? = CSSBoxType.BORDER): ConvertCoordinateOptions {\n val o = js(\"({})\")\n\n o[\"fromBox\"] = fromBox\n o[\"toBox\"] = toBox\n\n return o\n}\n\n/**\n * Exposes the JavaScript [GeometryUtils](https://developer.mozilla.org/en/docs/Web/API/GeometryUtils) to Kotlin\n */\npublic external interface GeometryUtils {\n fun getBoxQuads(options: BoxQuadOptions = definedExternally): Array\n fun convertQuadFromNode(quad: dynamic, from: dynamic, options: ConvertCoordinateOptions = definedExternally): DOMQuad\n fun convertRectFromNode(rect: DOMRectReadOnly, from: dynamic, options: ConvertCoordinateOptions = definedExternally): DOMQuad\n fun convertPointFromNode(point: DOMPointInit, from: dynamic, options: ConvertCoordinateOptions = definedExternally): DOMPoint\n}\n\npublic external @marker interface UnionElementOrProcessingInstruction {\n}\n\npublic external @marker interface UnionElementOrHTMLCollection {\n}\n\npublic external @marker interface UnionElementOrRadioNodeList {\n}\n\npublic external @marker interface UnionHTMLOptGroupElementOrHTMLOptionElement {\n}\n\npublic external @marker interface UnionAudioTrackOrTextTrackOrVideoTrack {\n}\n\npublic external @marker interface UnionElementOrMouseEvent {\n}\n\npublic external @marker interface UnionMessagePortOrWindow {\n}\n\npublic external @marker interface UnionMessagePortOrServiceWorker {\n}\n\npublic external @marker interface HTMLOrSVGScriptElement {\n}\n\npublic external @marker interface RenderingContext {\n}\n\npublic external @marker interface HTMLOrSVGImageElement {\n}\n\n/* please, don't implement this interface! */\npublic external interface DocumentReadyState {\n companion object\n}\npublic inline val DocumentReadyState.Companion.LOADING: DocumentReadyState get() = \"loading\".asDynamic().unsafeCast()\npublic inline val DocumentReadyState.Companion.INTERACTIVE: DocumentReadyState get() = \"interactive\".asDynamic().unsafeCast()\npublic inline val DocumentReadyState.Companion.COMPLETE: DocumentReadyState get() = \"complete\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface CanPlayTypeResult {\n companion object\n}\npublic inline val CanPlayTypeResult.Companion.EMPTY: CanPlayTypeResult get() = \"\".asDynamic().unsafeCast()\npublic inline val CanPlayTypeResult.Companion.MAYBE: CanPlayTypeResult get() = \"maybe\".asDynamic().unsafeCast()\npublic inline val CanPlayTypeResult.Companion.PROBABLY: CanPlayTypeResult get() = \"probably\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface TextTrackMode {\n companion object\n}\npublic inline val TextTrackMode.Companion.DISABLED: TextTrackMode get() = \"disabled\".asDynamic().unsafeCast()\npublic inline val TextTrackMode.Companion.HIDDEN: TextTrackMode get() = \"hidden\".asDynamic().unsafeCast()\npublic inline val TextTrackMode.Companion.SHOWING: TextTrackMode get() = \"showing\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface TextTrackKind {\n companion object\n}\npublic inline val TextTrackKind.Companion.SUBTITLES: TextTrackKind get() = \"subtitles\".asDynamic().unsafeCast()\npublic inline val TextTrackKind.Companion.CAPTIONS: TextTrackKind get() = \"captions\".asDynamic().unsafeCast()\npublic inline val TextTrackKind.Companion.DESCRIPTIONS: TextTrackKind get() = \"descriptions\".asDynamic().unsafeCast()\npublic inline val TextTrackKind.Companion.CHAPTERS: TextTrackKind get() = \"chapters\".asDynamic().unsafeCast()\npublic inline val TextTrackKind.Companion.METADATA: TextTrackKind get() = \"metadata\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface SelectionMode {\n companion object\n}\npublic inline val SelectionMode.Companion.SELECT: SelectionMode get() = \"select\".asDynamic().unsafeCast()\npublic inline val SelectionMode.Companion.START: SelectionMode get() = \"start\".asDynamic().unsafeCast()\npublic inline val SelectionMode.Companion.END: SelectionMode get() = \"end\".asDynamic().unsafeCast()\npublic inline val SelectionMode.Companion.PRESERVE: SelectionMode get() = \"preserve\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface CanvasFillRule {\n companion object\n}\npublic inline val CanvasFillRule.Companion.NONZERO: CanvasFillRule get() = \"nonzero\".asDynamic().unsafeCast()\npublic inline val CanvasFillRule.Companion.EVENODD: CanvasFillRule get() = \"evenodd\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface ImageSmoothingQuality {\n companion object\n}\npublic inline val ImageSmoothingQuality.Companion.LOW: ImageSmoothingQuality get() = \"low\".asDynamic().unsafeCast()\npublic inline val ImageSmoothingQuality.Companion.MEDIUM: ImageSmoothingQuality get() = \"medium\".asDynamic().unsafeCast()\npublic inline val ImageSmoothingQuality.Companion.HIGH: ImageSmoothingQuality get() = \"high\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface CanvasLineCap {\n companion object\n}\npublic inline val CanvasLineCap.Companion.BUTT: CanvasLineCap get() = \"butt\".asDynamic().unsafeCast()\npublic inline val CanvasLineCap.Companion.ROUND: CanvasLineCap get() = \"round\".asDynamic().unsafeCast()\npublic inline val CanvasLineCap.Companion.SQUARE: CanvasLineCap get() = \"square\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface CanvasLineJoin {\n companion object\n}\npublic inline val CanvasLineJoin.Companion.ROUND: CanvasLineJoin get() = \"round\".asDynamic().unsafeCast()\npublic inline val CanvasLineJoin.Companion.BEVEL: CanvasLineJoin get() = \"bevel\".asDynamic().unsafeCast()\npublic inline val CanvasLineJoin.Companion.MITER: CanvasLineJoin get() = \"miter\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface CanvasTextAlign {\n companion object\n}\npublic inline val CanvasTextAlign.Companion.START: CanvasTextAlign get() = \"start\".asDynamic().unsafeCast()\npublic inline val CanvasTextAlign.Companion.END: CanvasTextAlign get() = \"end\".asDynamic().unsafeCast()\npublic inline val CanvasTextAlign.Companion.LEFT: CanvasTextAlign get() = \"left\".asDynamic().unsafeCast()\npublic inline val CanvasTextAlign.Companion.RIGHT: CanvasTextAlign get() = \"right\".asDynamic().unsafeCast()\npublic inline val CanvasTextAlign.Companion.CENTER: CanvasTextAlign get() = \"center\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface CanvasTextBaseline {\n companion object\n}\npublic inline val CanvasTextBaseline.Companion.TOP: CanvasTextBaseline get() = \"top\".asDynamic().unsafeCast()\npublic inline val CanvasTextBaseline.Companion.HANGING: CanvasTextBaseline get() = \"hanging\".asDynamic().unsafeCast()\npublic inline val CanvasTextBaseline.Companion.MIDDLE: CanvasTextBaseline get() = \"middle\".asDynamic().unsafeCast()\npublic inline val CanvasTextBaseline.Companion.ALPHABETIC: CanvasTextBaseline get() = \"alphabetic\".asDynamic().unsafeCast()\npublic inline val CanvasTextBaseline.Companion.IDEOGRAPHIC: CanvasTextBaseline get() = \"ideographic\".asDynamic().unsafeCast()\npublic inline val CanvasTextBaseline.Companion.BOTTOM: CanvasTextBaseline get() = \"bottom\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface CanvasDirection {\n companion object\n}\npublic inline val CanvasDirection.Companion.LTR: CanvasDirection get() = \"ltr\".asDynamic().unsafeCast()\npublic inline val CanvasDirection.Companion.RTL: CanvasDirection get() = \"rtl\".asDynamic().unsafeCast()\npublic inline val CanvasDirection.Companion.INHERIT: CanvasDirection get() = \"inherit\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface ScrollRestoration {\n companion object\n}\npublic inline val ScrollRestoration.Companion.AUTO: ScrollRestoration get() = \"auto\".asDynamic().unsafeCast()\npublic inline val ScrollRestoration.Companion.MANUAL: ScrollRestoration get() = \"manual\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface ImageOrientation {\n companion object\n}\npublic inline val ImageOrientation.Companion.NONE: ImageOrientation get() = \"none\".asDynamic().unsafeCast()\npublic inline val ImageOrientation.Companion.FLIPY: ImageOrientation get() = \"flipY\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface PremultiplyAlpha {\n companion object\n}\npublic inline val PremultiplyAlpha.Companion.NONE: PremultiplyAlpha get() = \"none\".asDynamic().unsafeCast()\npublic inline val PremultiplyAlpha.Companion.PREMULTIPLY: PremultiplyAlpha get() = \"premultiply\".asDynamic().unsafeCast()\npublic inline val PremultiplyAlpha.Companion.DEFAULT: PremultiplyAlpha get() = \"default\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface ColorSpaceConversion {\n companion object\n}\npublic inline val ColorSpaceConversion.Companion.NONE: ColorSpaceConversion get() = \"none\".asDynamic().unsafeCast()\npublic inline val ColorSpaceConversion.Companion.DEFAULT: ColorSpaceConversion get() = \"default\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface ResizeQuality {\n companion object\n}\npublic inline val ResizeQuality.Companion.PIXELATED: ResizeQuality get() = \"pixelated\".asDynamic().unsafeCast()\npublic inline val ResizeQuality.Companion.LOW: ResizeQuality get() = \"low\".asDynamic().unsafeCast()\npublic inline val ResizeQuality.Companion.MEDIUM: ResizeQuality get() = \"medium\".asDynamic().unsafeCast()\npublic inline val ResizeQuality.Companion.HIGH: ResizeQuality get() = \"high\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface BinaryType {\n companion object\n}\npublic inline val BinaryType.Companion.BLOB: BinaryType get() = \"blob\".asDynamic().unsafeCast()\npublic inline val BinaryType.Companion.ARRAYBUFFER: BinaryType get() = \"arraybuffer\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface WorkerType {\n companion object\n}\npublic inline val WorkerType.Companion.CLASSIC: WorkerType get() = \"classic\".asDynamic().unsafeCast()\npublic inline val WorkerType.Companion.MODULE: WorkerType get() = \"module\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface ShadowRootMode {\n companion object\n}\npublic inline val ShadowRootMode.Companion.OPEN: ShadowRootMode get() = \"open\".asDynamic().unsafeCast()\npublic inline val ShadowRootMode.Companion.CLOSED: ShadowRootMode get() = \"closed\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface ScrollBehavior {\n companion object\n}\npublic inline val ScrollBehavior.Companion.AUTO: ScrollBehavior get() = \"auto\".asDynamic().unsafeCast()\npublic inline val ScrollBehavior.Companion.INSTANT: ScrollBehavior get() = \"instant\".asDynamic().unsafeCast()\npublic inline val ScrollBehavior.Companion.SMOOTH: ScrollBehavior get() = \"smooth\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface ScrollLogicalPosition {\n companion object\n}\npublic inline val ScrollLogicalPosition.Companion.START: ScrollLogicalPosition get() = \"start\".asDynamic().unsafeCast()\npublic inline val ScrollLogicalPosition.Companion.CENTER: ScrollLogicalPosition get() = \"center\".asDynamic().unsafeCast()\npublic inline val ScrollLogicalPosition.Companion.END: ScrollLogicalPosition get() = \"end\".asDynamic().unsafeCast()\npublic inline val ScrollLogicalPosition.Companion.NEAREST: ScrollLogicalPosition get() = \"nearest\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface CSSBoxType {\n companion object\n}\npublic inline val CSSBoxType.Companion.MARGIN: CSSBoxType get() = \"margin\".asDynamic().unsafeCast()\npublic inline val CSSBoxType.Companion.BORDER: CSSBoxType get() = \"border\".asDynamic().unsafeCast()\npublic inline val CSSBoxType.Companion.PADDING: CSSBoxType get() = \"padding\".asDynamic().unsafeCast()\npublic inline val CSSBoxType.Companion.CONTENT: CSSBoxType get() = \"content\".asDynamic().unsafeCast()\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See libraries/tools/idl2k for details\n\n@file:Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npackage org.w3c.fetch\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\n/**\n * Exposes the JavaScript [Headers](https://developer.mozilla.org/en/docs/Web/API/Headers) to Kotlin\n */\npublic external open class Headers(init: dynamic = definedExternally) {\n fun append(name: String, value: String): Unit\n fun delete(name: String): Unit\n fun get(name: String): String?\n fun has(name: String): Boolean\n fun set(name: String, value: String): Unit\n}\n\n/**\n * Exposes the JavaScript [Body](https://developer.mozilla.org/en/docs/Web/API/Body) to Kotlin\n */\npublic external interface Body {\n val bodyUsed: Boolean\n fun arrayBuffer(): Promise\n fun blob(): Promise\n fun formData(): Promise\n fun json(): Promise\n fun text(): Promise\n}\n\n/**\n * Exposes the JavaScript [Request](https://developer.mozilla.org/en/docs/Web/API/Request) to Kotlin\n */\npublic external open class Request(input: dynamic, init: RequestInit = definedExternally) : Body {\n open val method: String\n open val url: String\n open val headers: Headers\n open val type: RequestType\n open val destination: RequestDestination\n open val referrer: String\n open val referrerPolicy: dynamic\n open val mode: RequestMode\n open val credentials: RequestCredentials\n open val cache: RequestCache\n open val redirect: RequestRedirect\n open val integrity: String\n open val keepalive: Boolean\n override val bodyUsed: Boolean\n fun clone(): Request\n override fun arrayBuffer(): Promise\n override fun blob(): Promise\n override fun formData(): Promise\n override fun json(): Promise\n override fun text(): Promise\n}\n\npublic external interface RequestInit {\n var method: String?\n get() = definedExternally\n set(value) = definedExternally\n var headers: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var body: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var referrer: String?\n get() = definedExternally\n set(value) = definedExternally\n var referrerPolicy: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var mode: RequestMode?\n get() = definedExternally\n set(value) = definedExternally\n var credentials: RequestCredentials?\n get() = definedExternally\n set(value) = definedExternally\n var cache: RequestCache?\n get() = definedExternally\n set(value) = definedExternally\n var redirect: RequestRedirect?\n get() = definedExternally\n set(value) = definedExternally\n var integrity: String?\n get() = definedExternally\n set(value) = definedExternally\n var keepalive: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var window: Any?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun RequestInit(method: String? = undefined, headers: dynamic = undefined, body: dynamic = undefined, referrer: String? = undefined, referrerPolicy: dynamic = undefined, mode: RequestMode? = undefined, credentials: RequestCredentials? = undefined, cache: RequestCache? = undefined, redirect: RequestRedirect? = undefined, integrity: String? = undefined, keepalive: Boolean? = undefined, window: Any? = undefined): RequestInit {\n val o = js(\"({})\")\n\n o[\"method\"] = method\n o[\"headers\"] = headers\n o[\"body\"] = body\n o[\"referrer\"] = referrer\n o[\"referrerPolicy\"] = referrerPolicy\n o[\"mode\"] = mode\n o[\"credentials\"] = credentials\n o[\"cache\"] = cache\n o[\"redirect\"] = redirect\n o[\"integrity\"] = integrity\n o[\"keepalive\"] = keepalive\n o[\"window\"] = window\n\n return o\n}\n\n/**\n * Exposes the JavaScript [Response](https://developer.mozilla.org/en/docs/Web/API/Response) to Kotlin\n */\npublic external open class Response(body: dynamic = definedExternally, init: ResponseInit = definedExternally) : Body {\n open val type: ResponseType\n open val url: String\n open val redirected: Boolean\n open val status: Short\n open val ok: Boolean\n open val statusText: String\n open val headers: Headers\n open val body: dynamic\n open val trailer: Promise\n override val bodyUsed: Boolean\n fun clone(): Response\n override fun arrayBuffer(): Promise\n override fun blob(): Promise\n override fun formData(): Promise\n override fun json(): Promise\n override fun text(): Promise\n\n companion object {\n fun error(): Response\n fun redirect(url: String, status: Short = definedExternally): Response\n }\n}\n\npublic external interface ResponseInit {\n var status: Short? /* = 200 */\n get() = definedExternally\n set(value) = definedExternally\n var statusText: String? /* = \"OK\" */\n get() = definedExternally\n set(value) = definedExternally\n var headers: dynamic\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ResponseInit(status: Short? = 200, statusText: String? = \"OK\", headers: dynamic = undefined): ResponseInit {\n val o = js(\"({})\")\n\n o[\"status\"] = status\n o[\"statusText\"] = statusText\n o[\"headers\"] = headers\n\n return o\n}\n\n/* please, don't implement this interface! */\npublic external interface RequestType {\n companion object\n}\npublic inline val RequestType.Companion.EMPTY: RequestType get() = \"\".asDynamic().unsafeCast()\npublic inline val RequestType.Companion.AUDIO: RequestType get() = \"audio\".asDynamic().unsafeCast()\npublic inline val RequestType.Companion.FONT: RequestType get() = \"font\".asDynamic().unsafeCast()\npublic inline val RequestType.Companion.IMAGE: RequestType get() = \"image\".asDynamic().unsafeCast()\npublic inline val RequestType.Companion.SCRIPT: RequestType get() = \"script\".asDynamic().unsafeCast()\npublic inline val RequestType.Companion.STYLE: RequestType get() = \"style\".asDynamic().unsafeCast()\npublic inline val RequestType.Companion.TRACK: RequestType get() = \"track\".asDynamic().unsafeCast()\npublic inline val RequestType.Companion.VIDEO: RequestType get() = \"video\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface RequestDestination {\n companion object\n}\npublic inline val RequestDestination.Companion.EMPTY: RequestDestination get() = \"\".asDynamic().unsafeCast()\npublic inline val RequestDestination.Companion.DOCUMENT: RequestDestination get() = \"document\".asDynamic().unsafeCast()\npublic inline val RequestDestination.Companion.EMBED: RequestDestination get() = \"embed\".asDynamic().unsafeCast()\npublic inline val RequestDestination.Companion.FONT: RequestDestination get() = \"font\".asDynamic().unsafeCast()\npublic inline val RequestDestination.Companion.IMAGE: RequestDestination get() = \"image\".asDynamic().unsafeCast()\npublic inline val RequestDestination.Companion.MANIFEST: RequestDestination get() = \"manifest\".asDynamic().unsafeCast()\npublic inline val RequestDestination.Companion.MEDIA: RequestDestination get() = \"media\".asDynamic().unsafeCast()\npublic inline val RequestDestination.Companion.OBJECT: RequestDestination get() = \"object\".asDynamic().unsafeCast()\npublic inline val RequestDestination.Companion.REPORT: RequestDestination get() = \"report\".asDynamic().unsafeCast()\npublic inline val RequestDestination.Companion.SCRIPT: RequestDestination get() = \"script\".asDynamic().unsafeCast()\npublic inline val RequestDestination.Companion.SERVICEWORKER: RequestDestination get() = \"serviceworker\".asDynamic().unsafeCast()\npublic inline val RequestDestination.Companion.SHAREDWORKER: RequestDestination get() = \"sharedworker\".asDynamic().unsafeCast()\npublic inline val RequestDestination.Companion.STYLE: RequestDestination get() = \"style\".asDynamic().unsafeCast()\npublic inline val RequestDestination.Companion.WORKER: RequestDestination get() = \"worker\".asDynamic().unsafeCast()\npublic inline val RequestDestination.Companion.XSLT: RequestDestination get() = \"xslt\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface RequestMode {\n companion object\n}\npublic inline val RequestMode.Companion.NAVIGATE: RequestMode get() = \"navigate\".asDynamic().unsafeCast()\npublic inline val RequestMode.Companion.SAME_ORIGIN: RequestMode get() = \"same-origin\".asDynamic().unsafeCast()\npublic inline val RequestMode.Companion.NO_CORS: RequestMode get() = \"no-cors\".asDynamic().unsafeCast()\npublic inline val RequestMode.Companion.CORS: RequestMode get() = \"cors\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface RequestCredentials {\n companion object\n}\npublic inline val RequestCredentials.Companion.OMIT: RequestCredentials get() = \"omit\".asDynamic().unsafeCast()\npublic inline val RequestCredentials.Companion.SAME_ORIGIN: RequestCredentials get() = \"same-origin\".asDynamic().unsafeCast()\npublic inline val RequestCredentials.Companion.INCLUDE: RequestCredentials get() = \"include\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface RequestCache {\n companion object\n}\npublic inline val RequestCache.Companion.DEFAULT: RequestCache get() = \"default\".asDynamic().unsafeCast()\npublic inline val RequestCache.Companion.NO_STORE: RequestCache get() = \"no-store\".asDynamic().unsafeCast()\npublic inline val RequestCache.Companion.RELOAD: RequestCache get() = \"reload\".asDynamic().unsafeCast()\npublic inline val RequestCache.Companion.NO_CACHE: RequestCache get() = \"no-cache\".asDynamic().unsafeCast()\npublic inline val RequestCache.Companion.FORCE_CACHE: RequestCache get() = \"force-cache\".asDynamic().unsafeCast()\npublic inline val RequestCache.Companion.ONLY_IF_CACHED: RequestCache get() = \"only-if-cached\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface RequestRedirect {\n companion object\n}\npublic inline val RequestRedirect.Companion.FOLLOW: RequestRedirect get() = \"follow\".asDynamic().unsafeCast()\npublic inline val RequestRedirect.Companion.ERROR: RequestRedirect get() = \"error\".asDynamic().unsafeCast()\npublic inline val RequestRedirect.Companion.MANUAL: RequestRedirect get() = \"manual\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface ResponseType {\n companion object\n}\npublic inline val ResponseType.Companion.BASIC: ResponseType get() = \"basic\".asDynamic().unsafeCast()\npublic inline val ResponseType.Companion.CORS: ResponseType get() = \"cors\".asDynamic().unsafeCast()\npublic inline val ResponseType.Companion.DEFAULT: ResponseType get() = \"default\".asDynamic().unsafeCast()\npublic inline val ResponseType.Companion.ERROR: ResponseType get() = \"error\".asDynamic().unsafeCast()\npublic inline val ResponseType.Companion.OPAQUE: ResponseType get() = \"opaque\".asDynamic().unsafeCast()\npublic inline val ResponseType.Companion.OPAQUEREDIRECT: ResponseType get() = \"opaqueredirect\".asDynamic().unsafeCast()\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See libraries/tools/idl2k for details\n\n@file:Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npackage org.w3c.dom.mediacapture\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\n/**\n * Exposes the JavaScript [MediaStream](https://developer.mozilla.org/en/docs/Web/API/MediaStream) to Kotlin\n */\npublic external open class MediaStream() : EventTarget {\n constructor(stream: MediaStream)\n constructor(tracks: Array)\n open val id: String\n open val active: Boolean\n var onaddtrack: ((MediaStreamTrackEvent) -> dynamic)?\n var onremovetrack: ((MediaStreamTrackEvent) -> dynamic)?\n fun getAudioTracks(): Array\n fun getVideoTracks(): Array\n fun getTracks(): Array\n fun getTrackById(trackId: String): MediaStreamTrack?\n fun addTrack(track: MediaStreamTrack): Unit\n fun removeTrack(track: MediaStreamTrack): Unit\n fun clone(): MediaStream\n}\n\n/**\n * Exposes the JavaScript [MediaStreamTrack](https://developer.mozilla.org/en/docs/Web/API/MediaStreamTrack) to Kotlin\n */\npublic external abstract class MediaStreamTrack : EventTarget {\n open val kind: String\n open val id: String\n open val label: String\n open var enabled: Boolean\n open val muted: Boolean\n open var onmute: ((Event) -> dynamic)?\n open var onunmute: ((Event) -> dynamic)?\n open val readyState: MediaStreamTrackState\n open var onended: ((Event) -> dynamic)?\n open var onoverconstrained: ((Event) -> dynamic)?\n fun clone(): MediaStreamTrack\n fun stop(): Unit\n fun getCapabilities(): MediaTrackCapabilities\n fun getConstraints(): MediaTrackConstraints\n fun getSettings(): MediaTrackSettings\n fun applyConstraints(constraints: MediaTrackConstraints = definedExternally): Promise\n}\n\n/**\n * Exposes the JavaScript [MediaTrackSupportedConstraints](https://developer.mozilla.org/en/docs/Web/API/MediaTrackSupportedConstraints) to Kotlin\n */\npublic external interface MediaTrackSupportedConstraints {\n var width: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var height: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var aspectRatio: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var frameRate: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var facingMode: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var resizeMode: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var volume: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var sampleRate: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var sampleSize: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var echoCancellation: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var autoGainControl: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var noiseSuppression: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var latency: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var channelCount: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var deviceId: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var groupId: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MediaTrackSupportedConstraints(width: Boolean? = true, height: Boolean? = true, aspectRatio: Boolean? = true, frameRate: Boolean? = true, facingMode: Boolean? = true, resizeMode: Boolean? = true, volume: Boolean? = true, sampleRate: Boolean? = true, sampleSize: Boolean? = true, echoCancellation: Boolean? = true, autoGainControl: Boolean? = true, noiseSuppression: Boolean? = true, latency: Boolean? = true, channelCount: Boolean? = true, deviceId: Boolean? = true, groupId: Boolean? = true): MediaTrackSupportedConstraints {\n val o = js(\"({})\")\n\n o[\"width\"] = width\n o[\"height\"] = height\n o[\"aspectRatio\"] = aspectRatio\n o[\"frameRate\"] = frameRate\n o[\"facingMode\"] = facingMode\n o[\"resizeMode\"] = resizeMode\n o[\"volume\"] = volume\n o[\"sampleRate\"] = sampleRate\n o[\"sampleSize\"] = sampleSize\n o[\"echoCancellation\"] = echoCancellation\n o[\"autoGainControl\"] = autoGainControl\n o[\"noiseSuppression\"] = noiseSuppression\n o[\"latency\"] = latency\n o[\"channelCount\"] = channelCount\n o[\"deviceId\"] = deviceId\n o[\"groupId\"] = groupId\n\n return o\n}\n\npublic external interface MediaTrackCapabilities {\n var width: ULongRange?\n get() = definedExternally\n set(value) = definedExternally\n var height: ULongRange?\n get() = definedExternally\n set(value) = definedExternally\n var aspectRatio: DoubleRange?\n get() = definedExternally\n set(value) = definedExternally\n var frameRate: DoubleRange?\n get() = definedExternally\n set(value) = definedExternally\n var facingMode: Array?\n get() = definedExternally\n set(value) = definedExternally\n var resizeMode: Array?\n get() = definedExternally\n set(value) = definedExternally\n var volume: DoubleRange?\n get() = definedExternally\n set(value) = definedExternally\n var sampleRate: ULongRange?\n get() = definedExternally\n set(value) = definedExternally\n var sampleSize: ULongRange?\n get() = definedExternally\n set(value) = definedExternally\n var echoCancellation: Array?\n get() = definedExternally\n set(value) = definedExternally\n var autoGainControl: Array?\n get() = definedExternally\n set(value) = definedExternally\n var noiseSuppression: Array?\n get() = definedExternally\n set(value) = definedExternally\n var latency: DoubleRange?\n get() = definedExternally\n set(value) = definedExternally\n var channelCount: ULongRange?\n get() = definedExternally\n set(value) = definedExternally\n var deviceId: String?\n get() = definedExternally\n set(value) = definedExternally\n var groupId: String?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MediaTrackCapabilities(width: ULongRange? = undefined, height: ULongRange? = undefined, aspectRatio: DoubleRange? = undefined, frameRate: DoubleRange? = undefined, facingMode: Array? = undefined, resizeMode: Array? = undefined, volume: DoubleRange? = undefined, sampleRate: ULongRange? = undefined, sampleSize: ULongRange? = undefined, echoCancellation: Array? = undefined, autoGainControl: Array? = undefined, noiseSuppression: Array? = undefined, latency: DoubleRange? = undefined, channelCount: ULongRange? = undefined, deviceId: String? = undefined, groupId: String? = undefined): MediaTrackCapabilities {\n val o = js(\"({})\")\n\n o[\"width\"] = width\n o[\"height\"] = height\n o[\"aspectRatio\"] = aspectRatio\n o[\"frameRate\"] = frameRate\n o[\"facingMode\"] = facingMode\n o[\"resizeMode\"] = resizeMode\n o[\"volume\"] = volume\n o[\"sampleRate\"] = sampleRate\n o[\"sampleSize\"] = sampleSize\n o[\"echoCancellation\"] = echoCancellation\n o[\"autoGainControl\"] = autoGainControl\n o[\"noiseSuppression\"] = noiseSuppression\n o[\"latency\"] = latency\n o[\"channelCount\"] = channelCount\n o[\"deviceId\"] = deviceId\n o[\"groupId\"] = groupId\n\n return o\n}\n\n/**\n * Exposes the JavaScript [MediaTrackConstraints](https://developer.mozilla.org/en/docs/Web/API/MediaTrackConstraints) to Kotlin\n */\npublic external interface MediaTrackConstraints : MediaTrackConstraintSet {\n var advanced: Array?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MediaTrackConstraints(advanced: Array? = undefined, width: dynamic = undefined, height: dynamic = undefined, aspectRatio: dynamic = undefined, frameRate: dynamic = undefined, facingMode: dynamic = undefined, resizeMode: dynamic = undefined, volume: dynamic = undefined, sampleRate: dynamic = undefined, sampleSize: dynamic = undefined, echoCancellation: dynamic = undefined, autoGainControl: dynamic = undefined, noiseSuppression: dynamic = undefined, latency: dynamic = undefined, channelCount: dynamic = undefined, deviceId: dynamic = undefined, groupId: dynamic = undefined): MediaTrackConstraints {\n val o = js(\"({})\")\n\n o[\"advanced\"] = advanced\n o[\"width\"] = width\n o[\"height\"] = height\n o[\"aspectRatio\"] = aspectRatio\n o[\"frameRate\"] = frameRate\n o[\"facingMode\"] = facingMode\n o[\"resizeMode\"] = resizeMode\n o[\"volume\"] = volume\n o[\"sampleRate\"] = sampleRate\n o[\"sampleSize\"] = sampleSize\n o[\"echoCancellation\"] = echoCancellation\n o[\"autoGainControl\"] = autoGainControl\n o[\"noiseSuppression\"] = noiseSuppression\n o[\"latency\"] = latency\n o[\"channelCount\"] = channelCount\n o[\"deviceId\"] = deviceId\n o[\"groupId\"] = groupId\n\n return o\n}\n\npublic external interface MediaTrackConstraintSet {\n var width: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var height: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var aspectRatio: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var frameRate: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var facingMode: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var resizeMode: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var volume: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var sampleRate: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var sampleSize: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var echoCancellation: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var autoGainControl: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var noiseSuppression: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var latency: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var channelCount: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var deviceId: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var groupId: dynamic\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MediaTrackConstraintSet(width: dynamic = undefined, height: dynamic = undefined, aspectRatio: dynamic = undefined, frameRate: dynamic = undefined, facingMode: dynamic = undefined, resizeMode: dynamic = undefined, volume: dynamic = undefined, sampleRate: dynamic = undefined, sampleSize: dynamic = undefined, echoCancellation: dynamic = undefined, autoGainControl: dynamic = undefined, noiseSuppression: dynamic = undefined, latency: dynamic = undefined, channelCount: dynamic = undefined, deviceId: dynamic = undefined, groupId: dynamic = undefined): MediaTrackConstraintSet {\n val o = js(\"({})\")\n\n o[\"width\"] = width\n o[\"height\"] = height\n o[\"aspectRatio\"] = aspectRatio\n o[\"frameRate\"] = frameRate\n o[\"facingMode\"] = facingMode\n o[\"resizeMode\"] = resizeMode\n o[\"volume\"] = volume\n o[\"sampleRate\"] = sampleRate\n o[\"sampleSize\"] = sampleSize\n o[\"echoCancellation\"] = echoCancellation\n o[\"autoGainControl\"] = autoGainControl\n o[\"noiseSuppression\"] = noiseSuppression\n o[\"latency\"] = latency\n o[\"channelCount\"] = channelCount\n o[\"deviceId\"] = deviceId\n o[\"groupId\"] = groupId\n\n return o\n}\n\n/**\n * Exposes the JavaScript [MediaTrackSettings](https://developer.mozilla.org/en/docs/Web/API/MediaTrackSettings) to Kotlin\n */\npublic external interface MediaTrackSettings {\n var width: Int?\n get() = definedExternally\n set(value) = definedExternally\n var height: Int?\n get() = definedExternally\n set(value) = definedExternally\n var aspectRatio: Double?\n get() = definedExternally\n set(value) = definedExternally\n var frameRate: Double?\n get() = definedExternally\n set(value) = definedExternally\n var facingMode: String?\n get() = definedExternally\n set(value) = definedExternally\n var resizeMode: String?\n get() = definedExternally\n set(value) = definedExternally\n var volume: Double?\n get() = definedExternally\n set(value) = definedExternally\n var sampleRate: Int?\n get() = definedExternally\n set(value) = definedExternally\n var sampleSize: Int?\n get() = definedExternally\n set(value) = definedExternally\n var echoCancellation: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var autoGainControl: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var noiseSuppression: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var latency: Double?\n get() = definedExternally\n set(value) = definedExternally\n var channelCount: Int?\n get() = definedExternally\n set(value) = definedExternally\n var deviceId: String?\n get() = definedExternally\n set(value) = definedExternally\n var groupId: String?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MediaTrackSettings(width: Int? = undefined, height: Int? = undefined, aspectRatio: Double? = undefined, frameRate: Double? = undefined, facingMode: String? = undefined, resizeMode: String? = undefined, volume: Double? = undefined, sampleRate: Int? = undefined, sampleSize: Int? = undefined, echoCancellation: Boolean? = undefined, autoGainControl: Boolean? = undefined, noiseSuppression: Boolean? = undefined, latency: Double? = undefined, channelCount: Int? = undefined, deviceId: String? = undefined, groupId: String? = undefined): MediaTrackSettings {\n val o = js(\"({})\")\n\n o[\"width\"] = width\n o[\"height\"] = height\n o[\"aspectRatio\"] = aspectRatio\n o[\"frameRate\"] = frameRate\n o[\"facingMode\"] = facingMode\n o[\"resizeMode\"] = resizeMode\n o[\"volume\"] = volume\n o[\"sampleRate\"] = sampleRate\n o[\"sampleSize\"] = sampleSize\n o[\"echoCancellation\"] = echoCancellation\n o[\"autoGainControl\"] = autoGainControl\n o[\"noiseSuppression\"] = noiseSuppression\n o[\"latency\"] = latency\n o[\"channelCount\"] = channelCount\n o[\"deviceId\"] = deviceId\n o[\"groupId\"] = groupId\n\n return o\n}\n\n/**\n * Exposes the JavaScript [MediaStreamTrackEvent](https://developer.mozilla.org/en/docs/Web/API/MediaStreamTrackEvent) to Kotlin\n */\npublic external open class MediaStreamTrackEvent(type: String, eventInitDict: MediaStreamTrackEventInit) : Event {\n open val track: MediaStreamTrack\n}\n\npublic external interface MediaStreamTrackEventInit : EventInit {\n var track: MediaStreamTrack?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MediaStreamTrackEventInit(track: MediaStreamTrack?, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): MediaStreamTrackEventInit {\n val o = js(\"({})\")\n\n o[\"track\"] = track\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\npublic external open class OverconstrainedErrorEvent(type: String, eventInitDict: OverconstrainedErrorEventInit) : Event {\n open val error: dynamic\n}\n\npublic external interface OverconstrainedErrorEventInit : EventInit {\n var error: dynamic /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun OverconstrainedErrorEventInit(error: dynamic = null, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): OverconstrainedErrorEventInit {\n val o = js(\"({})\")\n\n o[\"error\"] = error\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [MediaDevices](https://developer.mozilla.org/en/docs/Web/API/MediaDevices) to Kotlin\n */\npublic external abstract class MediaDevices : EventTarget {\n open var ondevicechange: ((Event) -> dynamic)?\n fun enumerateDevices(): Promise\n fun getSupportedConstraints(): MediaTrackSupportedConstraints\n fun getUserMedia(constraints: MediaStreamConstraints = definedExternally): Promise\n}\n\n/**\n * Exposes the JavaScript [MediaDeviceInfo](https://developer.mozilla.org/en/docs/Web/API/MediaDeviceInfo) to Kotlin\n */\npublic external abstract class MediaDeviceInfo {\n open val deviceId: String\n open val kind: MediaDeviceKind\n open val label: String\n open val groupId: String\n fun toJSON(): dynamic\n}\n\npublic external abstract class InputDeviceInfo : MediaDeviceInfo {\n fun getCapabilities(): MediaTrackCapabilities\n}\n\n/**\n * Exposes the JavaScript [MediaStreamConstraints](https://developer.mozilla.org/en/docs/Web/API/MediaStreamConstraints) to Kotlin\n */\npublic external interface MediaStreamConstraints {\n var video: dynamic /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var audio: dynamic /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MediaStreamConstraints(video: dynamic = false, audio: dynamic = false): MediaStreamConstraints {\n val o = js(\"({})\")\n\n o[\"video\"] = video\n o[\"audio\"] = audio\n\n return o\n}\n\npublic external interface ConstrainablePattern {\n var onoverconstrained: ((Event) -> dynamic)?\n fun getCapabilities(): Capabilities\n fun getConstraints(): Constraints\n fun getSettings(): Settings\n fun applyConstraints(constraints: Constraints = definedExternally): Promise\n}\n\n/**\n * Exposes the JavaScript [DoubleRange](https://developer.mozilla.org/en/docs/Web/API/DoubleRange) to Kotlin\n */\npublic external interface DoubleRange {\n var max: Double?\n get() = definedExternally\n set(value) = definedExternally\n var min: Double?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun DoubleRange(max: Double? = undefined, min: Double? = undefined): DoubleRange {\n val o = js(\"({})\")\n\n o[\"max\"] = max\n o[\"min\"] = min\n\n return o\n}\n\npublic external interface ConstrainDoubleRange : DoubleRange {\n var exact: Double?\n get() = definedExternally\n set(value) = definedExternally\n var ideal: Double?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ConstrainDoubleRange(exact: Double? = undefined, ideal: Double? = undefined, max: Double? = undefined, min: Double? = undefined): ConstrainDoubleRange {\n val o = js(\"({})\")\n\n o[\"exact\"] = exact\n o[\"ideal\"] = ideal\n o[\"max\"] = max\n o[\"min\"] = min\n\n return o\n}\n\npublic external interface ULongRange {\n var max: Int?\n get() = definedExternally\n set(value) = definedExternally\n var min: Int?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ULongRange(max: Int? = undefined, min: Int? = undefined): ULongRange {\n val o = js(\"({})\")\n\n o[\"max\"] = max\n o[\"min\"] = min\n\n return o\n}\n\npublic external interface ConstrainULongRange : ULongRange {\n var exact: Int?\n get() = definedExternally\n set(value) = definedExternally\n var ideal: Int?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ConstrainULongRange(exact: Int? = undefined, ideal: Int? = undefined, max: Int? = undefined, min: Int? = undefined): ConstrainULongRange {\n val o = js(\"({})\")\n\n o[\"exact\"] = exact\n o[\"ideal\"] = ideal\n o[\"max\"] = max\n o[\"min\"] = min\n\n return o\n}\n\n/**\n * Exposes the JavaScript [ConstrainBooleanParameters](https://developer.mozilla.org/en/docs/Web/API/ConstrainBooleanParameters) to Kotlin\n */\npublic external interface ConstrainBooleanParameters {\n var exact: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var ideal: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ConstrainBooleanParameters(exact: Boolean? = undefined, ideal: Boolean? = undefined): ConstrainBooleanParameters {\n val o = js(\"({})\")\n\n o[\"exact\"] = exact\n o[\"ideal\"] = ideal\n\n return o\n}\n\n/**\n * Exposes the JavaScript [ConstrainDOMStringParameters](https://developer.mozilla.org/en/docs/Web/API/ConstrainDOMStringParameters) to Kotlin\n */\npublic external interface ConstrainDOMStringParameters {\n var exact: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var ideal: dynamic\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ConstrainDOMStringParameters(exact: dynamic = undefined, ideal: dynamic = undefined): ConstrainDOMStringParameters {\n val o = js(\"({})\")\n\n o[\"exact\"] = exact\n o[\"ideal\"] = ideal\n\n return o\n}\n\npublic external interface Capabilities {\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun Capabilities(): Capabilities {\n val o = js(\"({})\")\n\n\n return o\n}\n\npublic external interface Settings {\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun Settings(): Settings {\n val o = js(\"({})\")\n\n\n return o\n}\n\npublic external interface ConstraintSet {\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ConstraintSet(): ConstraintSet {\n val o = js(\"({})\")\n\n\n return o\n}\n\npublic external interface Constraints : ConstraintSet {\n var advanced: Array?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun Constraints(advanced: Array? = undefined): Constraints {\n val o = js(\"({})\")\n\n o[\"advanced\"] = advanced\n\n return o\n}\n\n/* please, don't implement this interface! */\npublic external interface MediaStreamTrackState {\n companion object\n}\npublic inline val MediaStreamTrackState.Companion.LIVE: MediaStreamTrackState get() = \"live\".asDynamic().unsafeCast()\npublic inline val MediaStreamTrackState.Companion.ENDED: MediaStreamTrackState get() = \"ended\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface VideoFacingModeEnum {\n companion object\n}\npublic inline val VideoFacingModeEnum.Companion.USER: VideoFacingModeEnum get() = \"user\".asDynamic().unsafeCast()\npublic inline val VideoFacingModeEnum.Companion.ENVIRONMENT: VideoFacingModeEnum get() = \"environment\".asDynamic().unsafeCast()\npublic inline val VideoFacingModeEnum.Companion.LEFT: VideoFacingModeEnum get() = \"left\".asDynamic().unsafeCast()\npublic inline val VideoFacingModeEnum.Companion.RIGHT: VideoFacingModeEnum get() = \"right\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface VideoResizeModeEnum {\n companion object\n}\npublic inline val VideoResizeModeEnum.Companion.NONE: VideoResizeModeEnum get() = \"none\".asDynamic().unsafeCast()\npublic inline val VideoResizeModeEnum.Companion.CROP_AND_SCALE: VideoResizeModeEnum get() = \"crop-and-scale\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface MediaDeviceKind {\n companion object\n}\npublic inline val MediaDeviceKind.Companion.AUDIOINPUT: MediaDeviceKind get() = \"audioinput\".asDynamic().unsafeCast()\npublic inline val MediaDeviceKind.Companion.AUDIOOUTPUT: MediaDeviceKind get() = \"audiooutput\".asDynamic().unsafeCast()\npublic inline val MediaDeviceKind.Companion.VIDEOINPUT: MediaDeviceKind get() = \"videoinput\".asDynamic().unsafeCast()\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See libraries/tools/idl2k for details\n\n@file:Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npackage org.w3c.dom.pointerevents\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\npublic external interface PointerEventInit : MouseEventInit {\n var pointerId: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var width: Double? /* = 1.0 */\n get() = definedExternally\n set(value) = definedExternally\n var height: Double? /* = 1.0 */\n get() = definedExternally\n set(value) = definedExternally\n var pressure: Float? /* = 0f */\n get() = definedExternally\n set(value) = definedExternally\n var tangentialPressure: Float? /* = 0f */\n get() = definedExternally\n set(value) = definedExternally\n var tiltX: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var tiltY: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var twist: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var pointerType: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var isPrimary: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun PointerEventInit(pointerId: Int? = 0, width: Double? = 1.0, height: Double? = 1.0, pressure: Float? = 0f, tangentialPressure: Float? = 0f, tiltX: Int? = 0, tiltY: Int? = 0, twist: Int? = 0, pointerType: String? = \"\", isPrimary: Boolean? = false, screenX: Int? = 0, screenY: Int? = 0, clientX: Int? = 0, clientY: Int? = 0, button: Short? = 0, buttons: Short? = 0, relatedTarget: EventTarget? = null, ctrlKey: Boolean? = false, shiftKey: Boolean? = false, altKey: Boolean? = false, metaKey: Boolean? = false, modifierAltGraph: Boolean? = false, modifierCapsLock: Boolean? = false, modifierFn: Boolean? = false, modifierFnLock: Boolean? = false, modifierHyper: Boolean? = false, modifierNumLock: Boolean? = false, modifierScrollLock: Boolean? = false, modifierSuper: Boolean? = false, modifierSymbol: Boolean? = false, modifierSymbolLock: Boolean? = false, view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): PointerEventInit {\n val o = js(\"({})\")\n\n o[\"pointerId\"] = pointerId\n o[\"width\"] = width\n o[\"height\"] = height\n o[\"pressure\"] = pressure\n o[\"tangentialPressure\"] = tangentialPressure\n o[\"tiltX\"] = tiltX\n o[\"tiltY\"] = tiltY\n o[\"twist\"] = twist\n o[\"pointerType\"] = pointerType\n o[\"isPrimary\"] = isPrimary\n o[\"screenX\"] = screenX\n o[\"screenY\"] = screenY\n o[\"clientX\"] = clientX\n o[\"clientY\"] = clientY\n o[\"button\"] = button\n o[\"buttons\"] = buttons\n o[\"relatedTarget\"] = relatedTarget\n o[\"ctrlKey\"] = ctrlKey\n o[\"shiftKey\"] = shiftKey\n o[\"altKey\"] = altKey\n o[\"metaKey\"] = metaKey\n o[\"modifierAltGraph\"] = modifierAltGraph\n o[\"modifierCapsLock\"] = modifierCapsLock\n o[\"modifierFn\"] = modifierFn\n o[\"modifierFnLock\"] = modifierFnLock\n o[\"modifierHyper\"] = modifierHyper\n o[\"modifierNumLock\"] = modifierNumLock\n o[\"modifierScrollLock\"] = modifierScrollLock\n o[\"modifierSuper\"] = modifierSuper\n o[\"modifierSymbol\"] = modifierSymbol\n o[\"modifierSymbolLock\"] = modifierSymbolLock\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [PointerEvent](https://developer.mozilla.org/en/docs/Web/API/PointerEvent) to Kotlin\n */\npublic external open class PointerEvent(type: String, eventInitDict: PointerEventInit = definedExternally) : MouseEvent {\n open val pointerId: Int\n open val width: Double\n open val height: Double\n open val pressure: Float\n open val tangentialPressure: Float\n open val tiltX: Int\n open val tiltY: Int\n open val twist: Int\n open val pointerType: String\n open val isPrimary: Boolean\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See libraries/tools/idl2k for details\n\n@file:Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npackage org.w3c.dom.svg\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\n/**\n * Exposes the JavaScript [SVGElement](https://developer.mozilla.org/en/docs/Web/API/SVGElement) to Kotlin\n */\npublic external abstract class SVGElement : Element, ElementCSSInlineStyle, GlobalEventHandlers, SVGElementInstance {\n open val dataset: DOMStringMap\n open val ownerSVGElement: SVGSVGElement?\n open val viewportElement: SVGElement?\n open var tabIndex: Int\n fun focus(): Unit\n fun blur(): Unit\n}\n\npublic external interface SVGBoundingBoxOptions {\n var fill: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var stroke: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var markers: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var clipped: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun SVGBoundingBoxOptions(fill: Boolean? = true, stroke: Boolean? = false, markers: Boolean? = false, clipped: Boolean? = false): SVGBoundingBoxOptions {\n val o = js(\"({})\")\n\n o[\"fill\"] = fill\n o[\"stroke\"] = stroke\n o[\"markers\"] = markers\n o[\"clipped\"] = clipped\n\n return o\n}\n\n/**\n * Exposes the JavaScript [SVGGraphicsElement](https://developer.mozilla.org/en/docs/Web/API/SVGGraphicsElement) to Kotlin\n */\npublic external abstract class SVGGraphicsElement : SVGElement, SVGTests {\n open val transform: SVGAnimatedTransformList\n fun getBBox(options: SVGBoundingBoxOptions = definedExternally): DOMRect\n fun getCTM(): DOMMatrix?\n fun getScreenCTM(): DOMMatrix?\n}\n\n/**\n * Exposes the JavaScript [SVGGeometryElement](https://developer.mozilla.org/en/docs/Web/API/SVGGeometryElement) to Kotlin\n */\npublic external abstract class SVGGeometryElement : SVGGraphicsElement {\n open val pathLength: SVGAnimatedNumber\n fun isPointInFill(point: DOMPoint): Boolean\n fun isPointInStroke(point: DOMPoint): Boolean\n fun getTotalLength(): Float\n fun getPointAtLength(distance: Float): DOMPoint\n}\n\n/**\n * Exposes the JavaScript [SVGNumber](https://developer.mozilla.org/en/docs/Web/API/SVGNumber) to Kotlin\n */\npublic external abstract class SVGNumber {\n open var value: Float\n}\n\n/**\n * Exposes the JavaScript [SVGLength](https://developer.mozilla.org/en/docs/Web/API/SVGLength) to Kotlin\n */\npublic external abstract class SVGLength {\n open val unitType: Short\n open var value: Float\n open var valueInSpecifiedUnits: Float\n open var valueAsString: String\n fun newValueSpecifiedUnits(unitType: Short, valueInSpecifiedUnits: Float): Unit\n fun convertToSpecifiedUnits(unitType: Short): Unit\n\n companion object {\n val SVG_LENGTHTYPE_UNKNOWN: Short\n val SVG_LENGTHTYPE_NUMBER: Short\n val SVG_LENGTHTYPE_PERCENTAGE: Short\n val SVG_LENGTHTYPE_EMS: Short\n val SVG_LENGTHTYPE_EXS: Short\n val SVG_LENGTHTYPE_PX: Short\n val SVG_LENGTHTYPE_CM: Short\n val SVG_LENGTHTYPE_MM: Short\n val SVG_LENGTHTYPE_IN: Short\n val SVG_LENGTHTYPE_PT: Short\n val SVG_LENGTHTYPE_PC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGAngle](https://developer.mozilla.org/en/docs/Web/API/SVGAngle) to Kotlin\n */\npublic external abstract class SVGAngle {\n open val unitType: Short\n open var value: Float\n open var valueInSpecifiedUnits: Float\n open var valueAsString: String\n fun newValueSpecifiedUnits(unitType: Short, valueInSpecifiedUnits: Float): Unit\n fun convertToSpecifiedUnits(unitType: Short): Unit\n\n companion object {\n val SVG_ANGLETYPE_UNKNOWN: Short\n val SVG_ANGLETYPE_UNSPECIFIED: Short\n val SVG_ANGLETYPE_DEG: Short\n val SVG_ANGLETYPE_RAD: Short\n val SVG_ANGLETYPE_GRAD: Short\n }\n}\n\npublic external abstract class SVGNameList {\n open val length: Int\n open val numberOfItems: Int\n fun clear(): Unit\n fun initialize(newItem: dynamic): dynamic\n fun getItem(index: Int): dynamic\n fun insertItemBefore(newItem: dynamic, index: Int): dynamic\n fun replaceItem(newItem: dynamic, index: Int): dynamic\n fun removeItem(index: Int): dynamic\n fun appendItem(newItem: dynamic): dynamic\n}\n@kotlin.internal.InlineOnly inline operator fun SVGNameList.get(index: Int): dynamic = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun SVGNameList.set(index: Int, newItem: dynamic): Unit { asDynamic()[index] = newItem; }\n\n/**\n * Exposes the JavaScript [SVGNumberList](https://developer.mozilla.org/en/docs/Web/API/SVGNumberList) to Kotlin\n */\npublic external abstract class SVGNumberList {\n open val length: Int\n open val numberOfItems: Int\n fun clear(): Unit\n fun initialize(newItem: SVGNumber): SVGNumber\n fun getItem(index: Int): SVGNumber\n fun insertItemBefore(newItem: SVGNumber, index: Int): SVGNumber\n fun replaceItem(newItem: SVGNumber, index: Int): SVGNumber\n fun removeItem(index: Int): SVGNumber\n fun appendItem(newItem: SVGNumber): SVGNumber\n}\n@kotlin.internal.InlineOnly inline operator fun SVGNumberList.get(index: Int): SVGNumber? = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun SVGNumberList.set(index: Int, newItem: SVGNumber): Unit { asDynamic()[index] = newItem; }\n\n/**\n * Exposes the JavaScript [SVGLengthList](https://developer.mozilla.org/en/docs/Web/API/SVGLengthList) to Kotlin\n */\npublic external abstract class SVGLengthList {\n open val length: Int\n open val numberOfItems: Int\n fun clear(): Unit\n fun initialize(newItem: SVGLength): SVGLength\n fun getItem(index: Int): SVGLength\n fun insertItemBefore(newItem: SVGLength, index: Int): SVGLength\n fun replaceItem(newItem: SVGLength, index: Int): SVGLength\n fun removeItem(index: Int): SVGLength\n fun appendItem(newItem: SVGLength): SVGLength\n}\n@kotlin.internal.InlineOnly inline operator fun SVGLengthList.get(index: Int): SVGLength? = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun SVGLengthList.set(index: Int, newItem: SVGLength): Unit { asDynamic()[index] = newItem; }\n\n/**\n * Exposes the JavaScript [SVGAnimatedBoolean](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedBoolean) to Kotlin\n */\npublic external abstract class SVGAnimatedBoolean {\n open var baseVal: Boolean\n open val animVal: Boolean\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedEnumeration](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedEnumeration) to Kotlin\n */\npublic external abstract class SVGAnimatedEnumeration {\n open var baseVal: Short\n open val animVal: Short\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedInteger](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedInteger) to Kotlin\n */\npublic external abstract class SVGAnimatedInteger {\n open var baseVal: Int\n open val animVal: Int\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedNumber](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedNumber) to Kotlin\n */\npublic external abstract class SVGAnimatedNumber {\n open var baseVal: Float\n open val animVal: Float\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedLength](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedLength) to Kotlin\n */\npublic external abstract class SVGAnimatedLength {\n open val baseVal: SVGLength\n open val animVal: SVGLength\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedAngle](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedAngle) to Kotlin\n */\npublic external abstract class SVGAnimatedAngle {\n open val baseVal: SVGAngle\n open val animVal: SVGAngle\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedString](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedString) to Kotlin\n */\npublic external abstract class SVGAnimatedString {\n open var baseVal: String\n open val animVal: String\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedRect](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedRect) to Kotlin\n */\npublic external abstract class SVGAnimatedRect {\n open val baseVal: DOMRect\n open val animVal: DOMRectReadOnly\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedNumberList](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedNumberList) to Kotlin\n */\npublic external abstract class SVGAnimatedNumberList {\n open val baseVal: SVGNumberList\n open val animVal: SVGNumberList\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedLengthList](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedLengthList) to Kotlin\n */\npublic external abstract class SVGAnimatedLengthList {\n open val baseVal: SVGLengthList\n open val animVal: SVGLengthList\n}\n\n/**\n * Exposes the JavaScript [SVGStringList](https://developer.mozilla.org/en/docs/Web/API/SVGStringList) to Kotlin\n */\npublic external abstract class SVGStringList {\n open val length: Int\n open val numberOfItems: Int\n fun clear(): Unit\n fun initialize(newItem: String): String\n fun getItem(index: Int): String\n fun insertItemBefore(newItem: String, index: Int): String\n fun replaceItem(newItem: String, index: Int): String\n fun removeItem(index: Int): String\n fun appendItem(newItem: String): String\n}\n@kotlin.internal.InlineOnly inline operator fun SVGStringList.get(index: Int): String? = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun SVGStringList.set(index: Int, newItem: String): Unit { asDynamic()[index] = newItem; }\n\n/**\n * Exposes the JavaScript [SVGUnitTypes](https://developer.mozilla.org/en/docs/Web/API/SVGUnitTypes) to Kotlin\n */\npublic external interface SVGUnitTypes {\n\n companion object {\n val SVG_UNIT_TYPE_UNKNOWN: Short\n val SVG_UNIT_TYPE_USERSPACEONUSE: Short\n val SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGTests](https://developer.mozilla.org/en/docs/Web/API/SVGTests) to Kotlin\n */\npublic external interface SVGTests {\n val requiredExtensions: SVGStringList\n val systemLanguage: SVGStringList\n}\n\npublic external interface SVGFitToViewBox {\n val viewBox: SVGAnimatedRect\n val preserveAspectRatio: SVGAnimatedPreserveAspectRatio\n}\n\n/**\n * Exposes the JavaScript [SVGZoomAndPan](https://developer.mozilla.org/en/docs/Web/API/SVGZoomAndPan) to Kotlin\n */\npublic external interface SVGZoomAndPan {\n var zoomAndPan: Short\n\n companion object {\n val SVG_ZOOMANDPAN_UNKNOWN: Short\n val SVG_ZOOMANDPAN_DISABLE: Short\n val SVG_ZOOMANDPAN_MAGNIFY: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGURIReference](https://developer.mozilla.org/en/docs/Web/API/SVGURIReference) to Kotlin\n */\npublic external interface SVGURIReference {\n val href: SVGAnimatedString\n}\n\n/**\n * Exposes the JavaScript [SVGSVGElement](https://developer.mozilla.org/en/docs/Web/API/SVGSVGElement) to Kotlin\n */\npublic external abstract class SVGSVGElement : SVGGraphicsElement, SVGFitToViewBox, SVGZoomAndPan, WindowEventHandlers {\n open val x: SVGAnimatedLength\n open val y: SVGAnimatedLength\n open val width: SVGAnimatedLength\n open val height: SVGAnimatedLength\n open var currentScale: Float\n open val currentTranslate: DOMPointReadOnly\n fun getIntersectionList(rect: DOMRectReadOnly, referenceElement: SVGElement?): NodeList\n fun getEnclosureList(rect: DOMRectReadOnly, referenceElement: SVGElement?): NodeList\n fun checkIntersection(element: SVGElement, rect: DOMRectReadOnly): Boolean\n fun checkEnclosure(element: SVGElement, rect: DOMRectReadOnly): Boolean\n fun deselectAll(): Unit\n fun createSVGNumber(): SVGNumber\n fun createSVGLength(): SVGLength\n fun createSVGAngle(): SVGAngle\n fun createSVGPoint(): DOMPoint\n fun createSVGMatrix(): DOMMatrix\n fun createSVGRect(): DOMRect\n fun createSVGTransform(): SVGTransform\n fun createSVGTransformFromMatrix(matrix: DOMMatrixReadOnly): SVGTransform\n fun getElementById(elementId: String): Element\n fun suspendRedraw(maxWaitMilliseconds: Int): Int\n fun unsuspendRedraw(suspendHandleID: Int): Unit\n fun unsuspendRedrawAll(): Unit\n fun forceRedraw(): Unit\n\n companion object {\n val SVG_ZOOMANDPAN_UNKNOWN: Short\n val SVG_ZOOMANDPAN_DISABLE: Short\n val SVG_ZOOMANDPAN_MAGNIFY: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGGElement](https://developer.mozilla.org/en/docs/Web/API/SVGGElement) to Kotlin\n */\npublic external abstract class SVGGElement : SVGGraphicsElement {\n}\n\npublic external abstract class SVGUnknownElement : SVGGraphicsElement {\n}\n\n/**\n * Exposes the JavaScript [SVGDefsElement](https://developer.mozilla.org/en/docs/Web/API/SVGDefsElement) to Kotlin\n */\npublic external abstract class SVGDefsElement : SVGGraphicsElement {\n}\n\n/**\n * Exposes the JavaScript [SVGDescElement](https://developer.mozilla.org/en/docs/Web/API/SVGDescElement) to Kotlin\n */\npublic external abstract class SVGDescElement : SVGElement {\n}\n\n/**\n * Exposes the JavaScript [SVGMetadataElement](https://developer.mozilla.org/en/docs/Web/API/SVGMetadataElement) to Kotlin\n */\npublic external abstract class SVGMetadataElement : SVGElement {\n}\n\n/**\n * Exposes the JavaScript [SVGTitleElement](https://developer.mozilla.org/en/docs/Web/API/SVGTitleElement) to Kotlin\n */\npublic external abstract class SVGTitleElement : SVGElement {\n}\n\n/**\n * Exposes the JavaScript [SVGSymbolElement](https://developer.mozilla.org/en/docs/Web/API/SVGSymbolElement) to Kotlin\n */\npublic external abstract class SVGSymbolElement : SVGGraphicsElement, SVGFitToViewBox {\n}\n\n/**\n * Exposes the JavaScript [SVGUseElement](https://developer.mozilla.org/en/docs/Web/API/SVGUseElement) to Kotlin\n */\npublic external abstract class SVGUseElement : SVGGraphicsElement, SVGURIReference {\n open val x: SVGAnimatedLength\n open val y: SVGAnimatedLength\n open val width: SVGAnimatedLength\n open val height: SVGAnimatedLength\n open val instanceRoot: SVGElement?\n open val animatedInstanceRoot: SVGElement?\n}\n\npublic external open class SVGUseElementShadowRoot : ShadowRoot {\n override fun getElementById(elementId: String): Element?\n override fun prepend(vararg nodes: dynamic): Unit\n override fun append(vararg nodes: dynamic): Unit\n override fun querySelector(selectors: String): Element?\n override fun querySelectorAll(selectors: String): NodeList\n}\n\npublic external interface SVGElementInstance {\n val correspondingElement: SVGElement?\n val correspondingUseElement: SVGUseElement?\n}\n\npublic external open class ShadowAnimation(source: dynamic, newTarget: dynamic) {\n open val sourceAnimation: dynamic\n}\n\n/**\n * Exposes the JavaScript [SVGSwitchElement](https://developer.mozilla.org/en/docs/Web/API/SVGSwitchElement) to Kotlin\n */\npublic external abstract class SVGSwitchElement : SVGGraphicsElement {\n}\n\npublic external interface GetSVGDocument {\n fun getSVGDocument(): Document\n}\n\n/**\n * Exposes the JavaScript [SVGStyleElement](https://developer.mozilla.org/en/docs/Web/API/SVGStyleElement) to Kotlin\n */\npublic external abstract class SVGStyleElement : SVGElement, LinkStyle {\n open var type: String\n open var media: String\n open var title: String\n}\n\n/**\n * Exposes the JavaScript [SVGTransform](https://developer.mozilla.org/en/docs/Web/API/SVGTransform) to Kotlin\n */\npublic external abstract class SVGTransform {\n open val type: Short\n open val matrix: DOMMatrix\n open val angle: Float\n fun setMatrix(matrix: DOMMatrixReadOnly): Unit\n fun setTranslate(tx: Float, ty: Float): Unit\n fun setScale(sx: Float, sy: Float): Unit\n fun setRotate(angle: Float, cx: Float, cy: Float): Unit\n fun setSkewX(angle: Float): Unit\n fun setSkewY(angle: Float): Unit\n\n companion object {\n val SVG_TRANSFORM_UNKNOWN: Short\n val SVG_TRANSFORM_MATRIX: Short\n val SVG_TRANSFORM_TRANSLATE: Short\n val SVG_TRANSFORM_SCALE: Short\n val SVG_TRANSFORM_ROTATE: Short\n val SVG_TRANSFORM_SKEWX: Short\n val SVG_TRANSFORM_SKEWY: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGTransformList](https://developer.mozilla.org/en/docs/Web/API/SVGTransformList) to Kotlin\n */\npublic external abstract class SVGTransformList {\n open val length: Int\n open val numberOfItems: Int\n fun clear(): Unit\n fun initialize(newItem: SVGTransform): SVGTransform\n fun getItem(index: Int): SVGTransform\n fun insertItemBefore(newItem: SVGTransform, index: Int): SVGTransform\n fun replaceItem(newItem: SVGTransform, index: Int): SVGTransform\n fun removeItem(index: Int): SVGTransform\n fun appendItem(newItem: SVGTransform): SVGTransform\n fun createSVGTransformFromMatrix(matrix: DOMMatrixReadOnly): SVGTransform\n fun consolidate(): SVGTransform?\n}\n@kotlin.internal.InlineOnly inline operator fun SVGTransformList.get(index: Int): SVGTransform? = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun SVGTransformList.set(index: Int, newItem: SVGTransform): Unit { asDynamic()[index] = newItem; }\n\n/**\n * Exposes the JavaScript [SVGAnimatedTransformList](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedTransformList) to Kotlin\n */\npublic external abstract class SVGAnimatedTransformList {\n open val baseVal: SVGTransformList\n open val animVal: SVGTransformList\n}\n\n/**\n * Exposes the JavaScript [SVGPreserveAspectRatio](https://developer.mozilla.org/en/docs/Web/API/SVGPreserveAspectRatio) to Kotlin\n */\npublic external abstract class SVGPreserveAspectRatio {\n open var align: Short\n open var meetOrSlice: Short\n\n companion object {\n val SVG_PRESERVEASPECTRATIO_UNKNOWN: Short\n val SVG_PRESERVEASPECTRATIO_NONE: Short\n val SVG_PRESERVEASPECTRATIO_XMINYMIN: Short\n val SVG_PRESERVEASPECTRATIO_XMIDYMIN: Short\n val SVG_PRESERVEASPECTRATIO_XMAXYMIN: Short\n val SVG_PRESERVEASPECTRATIO_XMINYMID: Short\n val SVG_PRESERVEASPECTRATIO_XMIDYMID: Short\n val SVG_PRESERVEASPECTRATIO_XMAXYMID: Short\n val SVG_PRESERVEASPECTRATIO_XMINYMAX: Short\n val SVG_PRESERVEASPECTRATIO_XMIDYMAX: Short\n val SVG_PRESERVEASPECTRATIO_XMAXYMAX: Short\n val SVG_MEETORSLICE_UNKNOWN: Short\n val SVG_MEETORSLICE_MEET: Short\n val SVG_MEETORSLICE_SLICE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedPreserveAspectRatio](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedPreserveAspectRatio) to Kotlin\n */\npublic external abstract class SVGAnimatedPreserveAspectRatio {\n open val baseVal: SVGPreserveAspectRatio\n open val animVal: SVGPreserveAspectRatio\n}\n\n/**\n * Exposes the JavaScript [SVGPathElement](https://developer.mozilla.org/en/docs/Web/API/SVGPathElement) to Kotlin\n */\npublic external abstract class SVGPathElement : SVGGeometryElement {\n}\n\n/**\n * Exposes the JavaScript [SVGRectElement](https://developer.mozilla.org/en/docs/Web/API/SVGRectElement) to Kotlin\n */\npublic external abstract class SVGRectElement : SVGGeometryElement {\n open val x: SVGAnimatedLength\n open val y: SVGAnimatedLength\n open val width: SVGAnimatedLength\n open val height: SVGAnimatedLength\n open val rx: SVGAnimatedLength\n open val ry: SVGAnimatedLength\n}\n\n/**\n * Exposes the JavaScript [SVGCircleElement](https://developer.mozilla.org/en/docs/Web/API/SVGCircleElement) to Kotlin\n */\npublic external abstract class SVGCircleElement : SVGGeometryElement {\n open val cx: SVGAnimatedLength\n open val cy: SVGAnimatedLength\n open val r: SVGAnimatedLength\n}\n\n/**\n * Exposes the JavaScript [SVGEllipseElement](https://developer.mozilla.org/en/docs/Web/API/SVGEllipseElement) to Kotlin\n */\npublic external abstract class SVGEllipseElement : SVGGeometryElement {\n open val cx: SVGAnimatedLength\n open val cy: SVGAnimatedLength\n open val rx: SVGAnimatedLength\n open val ry: SVGAnimatedLength\n}\n\n/**\n * Exposes the JavaScript [SVGLineElement](https://developer.mozilla.org/en/docs/Web/API/SVGLineElement) to Kotlin\n */\npublic external abstract class SVGLineElement : SVGGeometryElement {\n open val x1: SVGAnimatedLength\n open val y1: SVGAnimatedLength\n open val x2: SVGAnimatedLength\n open val y2: SVGAnimatedLength\n}\n\n/**\n * Exposes the JavaScript [SVGMeshElement](https://developer.mozilla.org/en/docs/Web/API/SVGMeshElement) to Kotlin\n */\npublic external abstract class SVGMeshElement : SVGGeometryElement, SVGURIReference {\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedPoints](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedPoints) to Kotlin\n */\npublic external interface SVGAnimatedPoints {\n val points: SVGPointList\n val animatedPoints: SVGPointList\n}\n\npublic external abstract class SVGPointList {\n open val length: Int\n open val numberOfItems: Int\n fun clear(): Unit\n fun initialize(newItem: DOMPoint): DOMPoint\n fun getItem(index: Int): DOMPoint\n fun insertItemBefore(newItem: DOMPoint, index: Int): DOMPoint\n fun replaceItem(newItem: DOMPoint, index: Int): DOMPoint\n fun removeItem(index: Int): DOMPoint\n fun appendItem(newItem: DOMPoint): DOMPoint\n}\n@kotlin.internal.InlineOnly inline operator fun SVGPointList.get(index: Int): DOMPoint? = asDynamic()[index]\n@kotlin.internal.InlineOnly inline operator fun SVGPointList.set(index: Int, newItem: DOMPoint): Unit { asDynamic()[index] = newItem; }\n\n/**\n * Exposes the JavaScript [SVGPolylineElement](https://developer.mozilla.org/en/docs/Web/API/SVGPolylineElement) to Kotlin\n */\npublic external abstract class SVGPolylineElement : SVGGeometryElement, SVGAnimatedPoints {\n}\n\n/**\n * Exposes the JavaScript [SVGPolygonElement](https://developer.mozilla.org/en/docs/Web/API/SVGPolygonElement) to Kotlin\n */\npublic external abstract class SVGPolygonElement : SVGGeometryElement, SVGAnimatedPoints {\n}\n\n/**\n * Exposes the JavaScript [SVGTextContentElement](https://developer.mozilla.org/en/docs/Web/API/SVGTextContentElement) to Kotlin\n */\npublic external abstract class SVGTextContentElement : SVGGraphicsElement {\n open val textLength: SVGAnimatedLength\n open val lengthAdjust: SVGAnimatedEnumeration\n fun getNumberOfChars(): Int\n fun getComputedTextLength(): Float\n fun getSubStringLength(charnum: Int, nchars: Int): Float\n fun getStartPositionOfChar(charnum: Int): DOMPoint\n fun getEndPositionOfChar(charnum: Int): DOMPoint\n fun getExtentOfChar(charnum: Int): DOMRect\n fun getRotationOfChar(charnum: Int): Float\n fun getCharNumAtPosition(point: DOMPoint): Int\n fun selectSubString(charnum: Int, nchars: Int): Unit\n\n companion object {\n val LENGTHADJUST_UNKNOWN: Short\n val LENGTHADJUST_SPACING: Short\n val LENGTHADJUST_SPACINGANDGLYPHS: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGTextPositioningElement](https://developer.mozilla.org/en/docs/Web/API/SVGTextPositioningElement) to Kotlin\n */\npublic external abstract class SVGTextPositioningElement : SVGTextContentElement {\n open val x: SVGAnimatedLengthList\n open val y: SVGAnimatedLengthList\n open val dx: SVGAnimatedLengthList\n open val dy: SVGAnimatedLengthList\n open val rotate: SVGAnimatedNumberList\n}\n\n/**\n * Exposes the JavaScript [SVGTextElement](https://developer.mozilla.org/en/docs/Web/API/SVGTextElement) to Kotlin\n */\npublic external abstract class SVGTextElement : SVGTextPositioningElement {\n}\n\n/**\n * Exposes the JavaScript [SVGTSpanElement](https://developer.mozilla.org/en/docs/Web/API/SVGTSpanElement) to Kotlin\n */\npublic external abstract class SVGTSpanElement : SVGTextPositioningElement {\n}\n\n/**\n * Exposes the JavaScript [SVGTextPathElement](https://developer.mozilla.org/en/docs/Web/API/SVGTextPathElement) to Kotlin\n */\npublic external abstract class SVGTextPathElement : SVGTextContentElement, SVGURIReference {\n open val startOffset: SVGAnimatedLength\n open val method: SVGAnimatedEnumeration\n open val spacing: SVGAnimatedEnumeration\n\n companion object {\n val TEXTPATH_METHODTYPE_UNKNOWN: Short\n val TEXTPATH_METHODTYPE_ALIGN: Short\n val TEXTPATH_METHODTYPE_STRETCH: Short\n val TEXTPATH_SPACINGTYPE_UNKNOWN: Short\n val TEXTPATH_SPACINGTYPE_AUTO: Short\n val TEXTPATH_SPACINGTYPE_EXACT: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGImageElement](https://developer.mozilla.org/en/docs/Web/API/SVGImageElement) to Kotlin\n */\npublic external abstract class SVGImageElement : SVGGraphicsElement, SVGURIReference, HTMLOrSVGImageElement {\n open val x: SVGAnimatedLength\n open val y: SVGAnimatedLength\n open val width: SVGAnimatedLength\n open val height: SVGAnimatedLength\n open val preserveAspectRatio: SVGAnimatedPreserveAspectRatio\n open var crossOrigin: String?\n}\n\n/**\n * Exposes the JavaScript [SVGForeignObjectElement](https://developer.mozilla.org/en/docs/Web/API/SVGForeignObjectElement) to Kotlin\n */\npublic external abstract class SVGForeignObjectElement : SVGGraphicsElement {\n open val x: SVGAnimatedLength\n open val y: SVGAnimatedLength\n open val width: SVGAnimatedLength\n open val height: SVGAnimatedLength\n}\n\npublic external abstract class SVGMarkerElement : SVGElement, SVGFitToViewBox {\n open val refX: SVGAnimatedLength\n open val refY: SVGAnimatedLength\n open val markerUnits: SVGAnimatedEnumeration\n open val markerWidth: SVGAnimatedLength\n open val markerHeight: SVGAnimatedLength\n open val orientType: SVGAnimatedEnumeration\n open val orientAngle: SVGAnimatedAngle\n open var orient: String\n fun setOrientToAuto(): Unit\n fun setOrientToAngle(angle: SVGAngle): Unit\n\n companion object {\n val SVG_MARKERUNITS_UNKNOWN: Short\n val SVG_MARKERUNITS_USERSPACEONUSE: Short\n val SVG_MARKERUNITS_STROKEWIDTH: Short\n val SVG_MARKER_ORIENT_UNKNOWN: Short\n val SVG_MARKER_ORIENT_AUTO: Short\n val SVG_MARKER_ORIENT_ANGLE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGSolidcolorElement](https://developer.mozilla.org/en/docs/Web/API/SVGSolidcolorElement) to Kotlin\n */\npublic external abstract class SVGSolidcolorElement : SVGElement {\n}\n\n/**\n * Exposes the JavaScript [SVGGradientElement](https://developer.mozilla.org/en/docs/Web/API/SVGGradientElement) to Kotlin\n */\npublic external abstract class SVGGradientElement : SVGElement, SVGURIReference, SVGUnitTypes {\n open val gradientUnits: SVGAnimatedEnumeration\n open val gradientTransform: SVGAnimatedTransformList\n open val spreadMethod: SVGAnimatedEnumeration\n\n companion object {\n val SVG_SPREADMETHOD_UNKNOWN: Short\n val SVG_SPREADMETHOD_PAD: Short\n val SVG_SPREADMETHOD_REFLECT: Short\n val SVG_SPREADMETHOD_REPEAT: Short\n val SVG_UNIT_TYPE_UNKNOWN: Short\n val SVG_UNIT_TYPE_USERSPACEONUSE: Short\n val SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGLinearGradientElement](https://developer.mozilla.org/en/docs/Web/API/SVGLinearGradientElement) to Kotlin\n */\npublic external abstract class SVGLinearGradientElement : SVGGradientElement {\n open val x1: SVGAnimatedLength\n open val y1: SVGAnimatedLength\n open val x2: SVGAnimatedLength\n open val y2: SVGAnimatedLength\n}\n\n/**\n * Exposes the JavaScript [SVGRadialGradientElement](https://developer.mozilla.org/en/docs/Web/API/SVGRadialGradientElement) to Kotlin\n */\npublic external abstract class SVGRadialGradientElement : SVGGradientElement {\n open val cx: SVGAnimatedLength\n open val cy: SVGAnimatedLength\n open val r: SVGAnimatedLength\n open val fx: SVGAnimatedLength\n open val fy: SVGAnimatedLength\n open val fr: SVGAnimatedLength\n}\n\npublic external abstract class SVGMeshGradientElement : SVGGradientElement {\n}\n\npublic external abstract class SVGMeshrowElement : SVGElement {\n}\n\npublic external abstract class SVGMeshpatchElement : SVGElement {\n}\n\n/**\n * Exposes the JavaScript [SVGStopElement](https://developer.mozilla.org/en/docs/Web/API/SVGStopElement) to Kotlin\n */\npublic external abstract class SVGStopElement : SVGElement {\n open val offset: SVGAnimatedNumber\n}\n\n/**\n * Exposes the JavaScript [SVGPatternElement](https://developer.mozilla.org/en/docs/Web/API/SVGPatternElement) to Kotlin\n */\npublic external abstract class SVGPatternElement : SVGElement, SVGFitToViewBox, SVGURIReference, SVGUnitTypes {\n open val patternUnits: SVGAnimatedEnumeration\n open val patternContentUnits: SVGAnimatedEnumeration\n open val patternTransform: SVGAnimatedTransformList\n open val x: SVGAnimatedLength\n open val y: SVGAnimatedLength\n open val width: SVGAnimatedLength\n open val height: SVGAnimatedLength\n\n companion object {\n val SVG_UNIT_TYPE_UNKNOWN: Short\n val SVG_UNIT_TYPE_USERSPACEONUSE: Short\n val SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: Short\n }\n}\n\npublic external abstract class SVGHatchElement : SVGElement {\n}\n\npublic external abstract class SVGHatchpathElement : SVGElement {\n}\n\n/**\n * Exposes the JavaScript [SVGCursorElement](https://developer.mozilla.org/en/docs/Web/API/SVGCursorElement) to Kotlin\n */\npublic external abstract class SVGCursorElement : SVGElement, SVGURIReference {\n open val x: SVGAnimatedLength\n open val y: SVGAnimatedLength\n}\n\n/**\n * Exposes the JavaScript [SVGScriptElement](https://developer.mozilla.org/en/docs/Web/API/SVGScriptElement) to Kotlin\n */\npublic external abstract class SVGScriptElement : SVGElement, SVGURIReference, HTMLOrSVGScriptElement {\n open var type: String\n open var crossOrigin: String?\n}\n\n/**\n * Exposes the JavaScript [SVGAElement](https://developer.mozilla.org/en/docs/Web/API/SVGAElement) to Kotlin\n */\npublic external abstract class SVGAElement : SVGGraphicsElement, SVGURIReference {\n open val target: SVGAnimatedString\n open val download: SVGAnimatedString\n open val rel: SVGAnimatedString\n open val relList: SVGAnimatedString\n open val hreflang: SVGAnimatedString\n open val type: SVGAnimatedString\n}\n\n/**\n * Exposes the JavaScript [SVGViewElement](https://developer.mozilla.org/en/docs/Web/API/SVGViewElement) to Kotlin\n */\npublic external abstract class SVGViewElement : SVGElement, SVGFitToViewBox, SVGZoomAndPan {\n\n companion object {\n val SVG_ZOOMANDPAN_UNKNOWN: Short\n val SVG_ZOOMANDPAN_DISABLE: Short\n val SVG_ZOOMANDPAN_MAGNIFY: Short\n }\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See libraries/tools/idl2k for details\n\n@file:Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npackage org.w3c.files\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\n/**\n * Exposes the JavaScript [Blob](https://developer.mozilla.org/en/docs/Web/API/Blob) to Kotlin\n */\npublic external open class Blob(blobParts: Array = definedExternally, options: BlobPropertyBag = definedExternally) {\n open val size: Int\n open val type: String\n open val isClosed: Boolean\n fun slice(start: Int = definedExternally, end: Int = definedExternally, contentType: String = definedExternally): Blob\n fun close(): Unit\n}\n\npublic external interface BlobPropertyBag {\n var type: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun BlobPropertyBag(type: String? = \"\"): BlobPropertyBag {\n val o = js(\"({})\")\n\n o[\"type\"] = type\n\n return o\n}\n\n/**\n * Exposes the JavaScript [File](https://developer.mozilla.org/en/docs/Web/API/File) to Kotlin\n */\npublic external open class File(fileBits: Array, fileName: String, options: FilePropertyBag = definedExternally) : Blob {\n open val name: String\n open val lastModified: Int\n}\n\npublic external interface FilePropertyBag : BlobPropertyBag {\n var lastModified: Int?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun FilePropertyBag(lastModified: Int? = undefined, type: String? = \"\"): FilePropertyBag {\n val o = js(\"({})\")\n\n o[\"lastModified\"] = lastModified\n o[\"type\"] = type\n\n return o\n}\n\n/**\n * Exposes the JavaScript [FileList](https://developer.mozilla.org/en/docs/Web/API/FileList) to Kotlin\n */\npublic external abstract class FileList : ItemArrayLike {\n override val length: Int\n override fun item(index: Int): File?\n}\n@kotlin.internal.InlineOnly inline operator fun FileList.get(index: Int): File? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [FileReader](https://developer.mozilla.org/en/docs/Web/API/FileReader) to Kotlin\n */\npublic external open class FileReader : EventTarget {\n open val readyState: Short\n open val result: dynamic\n open val error: dynamic\n var onloadstart: ((ProgressEvent) -> dynamic)?\n var onprogress: ((ProgressEvent) -> dynamic)?\n var onload: ((Event) -> dynamic)?\n var onabort: ((Event) -> dynamic)?\n var onerror: ((Event) -> dynamic)?\n var onloadend: ((Event) -> dynamic)?\n fun readAsArrayBuffer(blob: Blob): Unit\n fun readAsBinaryString(blob: Blob): Unit\n fun readAsText(blob: Blob, label: String = definedExternally): Unit\n fun readAsDataURL(blob: Blob): Unit\n fun abort(): Unit\n\n companion object {\n val EMPTY: Short\n val LOADING: Short\n val DONE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [FileReaderSync](https://developer.mozilla.org/en/docs/Web/API/FileReaderSync) to Kotlin\n */\npublic external open class FileReaderSync {\n fun readAsArrayBuffer(blob: Blob): ArrayBuffer\n fun readAsBinaryString(blob: Blob): String\n fun readAsText(blob: Blob, label: String = definedExternally): String\n fun readAsDataURL(blob: Blob): String\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See libraries/tools/idl2k for details\n\n@file:Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npackage org.w3c.notifications\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\n/**\n * Exposes the JavaScript [Notification](https://developer.mozilla.org/en/docs/Web/API/Notification) to Kotlin\n */\npublic external open class Notification(title: String, options: NotificationOptions = definedExternally) : EventTarget {\n var onclick: ((MouseEvent) -> dynamic)?\n var onerror: ((Event) -> dynamic)?\n open val title: String\n open val dir: NotificationDirection\n open val lang: String\n open val body: String\n open val tag: String\n open val image: String\n open val icon: String\n open val badge: String\n open val sound: String\n open val vibrate: Array\n open val timestamp: Number\n open val renotify: Boolean\n open val silent: Boolean\n open val noscreen: Boolean\n open val requireInteraction: Boolean\n open val sticky: Boolean\n open val data: Any?\n open val actions: Array\n fun close(): Unit\n\n companion object {\n var permission: NotificationPermission\n var maxActions: Int\n fun requestPermission(deprecatedCallback: (NotificationPermission) -> Unit = definedExternally): Promise\n }\n}\n\npublic external interface NotificationOptions {\n var dir: NotificationDirection? /* = NotificationDirection.AUTO */\n get() = definedExternally\n set(value) = definedExternally\n var lang: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var body: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var tag: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var image: String?\n get() = definedExternally\n set(value) = definedExternally\n var icon: String?\n get() = definedExternally\n set(value) = definedExternally\n var badge: String?\n get() = definedExternally\n set(value) = definedExternally\n var sound: String?\n get() = definedExternally\n set(value) = definedExternally\n var vibrate: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var timestamp: Number?\n get() = definedExternally\n set(value) = definedExternally\n var renotify: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var silent: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var noscreen: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var requireInteraction: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var sticky: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var data: Any? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var actions: Array? /* = arrayOf() */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun NotificationOptions(dir: NotificationDirection? = NotificationDirection.AUTO, lang: String? = \"\", body: String? = \"\", tag: String? = \"\", image: String? = undefined, icon: String? = undefined, badge: String? = undefined, sound: String? = undefined, vibrate: dynamic = undefined, timestamp: Number? = undefined, renotify: Boolean? = false, silent: Boolean? = false, noscreen: Boolean? = false, requireInteraction: Boolean? = false, sticky: Boolean? = false, data: Any? = null, actions: Array? = arrayOf()): NotificationOptions {\n val o = js(\"({})\")\n\n o[\"dir\"] = dir\n o[\"lang\"] = lang\n o[\"body\"] = body\n o[\"tag\"] = tag\n o[\"image\"] = image\n o[\"icon\"] = icon\n o[\"badge\"] = badge\n o[\"sound\"] = sound\n o[\"vibrate\"] = vibrate\n o[\"timestamp\"] = timestamp\n o[\"renotify\"] = renotify\n o[\"silent\"] = silent\n o[\"noscreen\"] = noscreen\n o[\"requireInteraction\"] = requireInteraction\n o[\"sticky\"] = sticky\n o[\"data\"] = data\n o[\"actions\"] = actions\n\n return o\n}\n\npublic external interface NotificationAction {\n var action: String?\n get() = definedExternally\n set(value) = definedExternally\n var title: String?\n get() = definedExternally\n set(value) = definedExternally\n var icon: String?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun NotificationAction(action: String?, title: String?, icon: String? = undefined): NotificationAction {\n val o = js(\"({})\")\n\n o[\"action\"] = action\n o[\"title\"] = title\n o[\"icon\"] = icon\n\n return o\n}\n\npublic external interface GetNotificationOptions {\n var tag: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun GetNotificationOptions(tag: String? = \"\"): GetNotificationOptions {\n val o = js(\"({})\")\n\n o[\"tag\"] = tag\n\n return o\n}\n\n/**\n * Exposes the JavaScript [NotificationEvent](https://developer.mozilla.org/en/docs/Web/API/NotificationEvent) to Kotlin\n */\npublic external open class NotificationEvent(type: String, eventInitDict: NotificationEventInit) : ExtendableEvent {\n open val notification: Notification\n open val action: String\n}\n\npublic external interface NotificationEventInit : ExtendableEventInit {\n var notification: Notification?\n get() = definedExternally\n set(value) = definedExternally\n var action: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun NotificationEventInit(notification: Notification?, action: String? = \"\", bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): NotificationEventInit {\n val o = js(\"({})\")\n\n o[\"notification\"] = notification\n o[\"action\"] = action\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/* please, don't implement this interface! */\npublic external interface NotificationPermission {\n companion object\n}\npublic inline val NotificationPermission.Companion.DEFAULT: NotificationPermission get() = \"default\".asDynamic().unsafeCast()\npublic inline val NotificationPermission.Companion.DENIED: NotificationPermission get() = \"denied\".asDynamic().unsafeCast()\npublic inline val NotificationPermission.Companion.GRANTED: NotificationPermission get() = \"granted\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface NotificationDirection {\n companion object\n}\npublic inline val NotificationDirection.Companion.AUTO: NotificationDirection get() = \"auto\".asDynamic().unsafeCast()\npublic inline val NotificationDirection.Companion.LTR: NotificationDirection get() = \"ltr\".asDynamic().unsafeCast()\npublic inline val NotificationDirection.Companion.RTL: NotificationDirection get() = \"rtl\".asDynamic().unsafeCast()\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See libraries/tools/idl2k for details\n\n@file:Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npackage org.w3c.workers\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.xhr.*\n\n/**\n * Exposes the JavaScript [ServiceWorkerRegistration](https://developer.mozilla.org/en/docs/Web/API/ServiceWorkerRegistration) to Kotlin\n */\npublic external abstract class ServiceWorkerRegistration : EventTarget {\n open val installing: ServiceWorker?\n open val waiting: ServiceWorker?\n open val active: ServiceWorker?\n open val scope: String\n open var onupdatefound: ((Event) -> dynamic)?\n open val APISpace: dynamic\n fun update(): Promise\n fun unregister(): Promise\n fun methodName(): Promise\n fun showNotification(title: String, options: NotificationOptions = definedExternally): Promise\n fun getNotifications(filter: GetNotificationOptions = definedExternally): Promise\n}\n\n/**\n * Exposes the JavaScript [ServiceWorkerGlobalScope](https://developer.mozilla.org/en/docs/Web/API/ServiceWorkerGlobalScope) to Kotlin\n */\npublic external abstract class ServiceWorkerGlobalScope : WorkerGlobalScope {\n open val clients: Clients\n open val registration: ServiceWorkerRegistration\n open var oninstall: ((Event) -> dynamic)?\n open var onactivate: ((Event) -> dynamic)?\n open var onfetch: ((FetchEvent) -> dynamic)?\n open var onforeignfetch: ((Event) -> dynamic)?\n open var onmessage: ((MessageEvent) -> dynamic)?\n open var onfunctionalevent: ((Event) -> dynamic)?\n open var onnotificationclick: ((NotificationEvent) -> dynamic)?\n open var onnotificationclose: ((NotificationEvent) -> dynamic)?\n fun skipWaiting(): Promise\n}\n\n/**\n * Exposes the JavaScript [ServiceWorker](https://developer.mozilla.org/en/docs/Web/API/ServiceWorker) to Kotlin\n */\npublic external abstract class ServiceWorker : EventTarget, AbstractWorker, UnionMessagePortOrServiceWorker, UnionClientOrMessagePortOrServiceWorker {\n open val scriptURL: String\n open val state: ServiceWorkerState\n open var onstatechange: ((Event) -> dynamic)?\n fun postMessage(message: Any?, transfer: Array = definedExternally): Unit\n}\n\n/**\n * Exposes the JavaScript [ServiceWorkerContainer](https://developer.mozilla.org/en/docs/Web/API/ServiceWorkerContainer) to Kotlin\n */\npublic external abstract class ServiceWorkerContainer : EventTarget {\n open val controller: ServiceWorker?\n open val ready: Promise\n open var oncontrollerchange: ((Event) -> dynamic)?\n open var onmessage: ((MessageEvent) -> dynamic)?\n fun register(scriptURL: String, options: RegistrationOptions = definedExternally): Promise\n fun getRegistration(clientURL: String = definedExternally): Promise\n fun getRegistrations(): Promise\n fun startMessages(): Unit\n}\n\npublic external interface RegistrationOptions {\n var scope: String?\n get() = definedExternally\n set(value) = definedExternally\n var type: WorkerType? /* = WorkerType.CLASSIC */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun RegistrationOptions(scope: String? = undefined, type: WorkerType? = WorkerType.CLASSIC): RegistrationOptions {\n val o = js(\"({})\")\n\n o[\"scope\"] = scope\n o[\"type\"] = type\n\n return o\n}\n\n/**\n * Exposes the JavaScript [ServiceWorkerMessageEvent](https://developer.mozilla.org/en/docs/Web/API/ServiceWorkerMessageEvent) to Kotlin\n */\npublic external open class ServiceWorkerMessageEvent(type: String, eventInitDict: ServiceWorkerMessageEventInit = definedExternally) : Event {\n open val data: Any?\n open val origin: String\n open val lastEventId: String\n open val source: UnionMessagePortOrServiceWorker?\n open val ports: Array?\n}\n\npublic external interface ServiceWorkerMessageEventInit : EventInit {\n var data: Any?\n get() = definedExternally\n set(value) = definedExternally\n var origin: String?\n get() = definedExternally\n set(value) = definedExternally\n var lastEventId: String?\n get() = definedExternally\n set(value) = definedExternally\n var source: UnionMessagePortOrServiceWorker?\n get() = definedExternally\n set(value) = definedExternally\n var ports: Array?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ServiceWorkerMessageEventInit(data: Any? = undefined, origin: String? = undefined, lastEventId: String? = undefined, source: UnionMessagePortOrServiceWorker? = undefined, ports: Array? = undefined, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): ServiceWorkerMessageEventInit {\n val o = js(\"({})\")\n\n o[\"data\"] = data\n o[\"origin\"] = origin\n o[\"lastEventId\"] = lastEventId\n o[\"source\"] = source\n o[\"ports\"] = ports\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [Client](https://developer.mozilla.org/en/docs/Web/API/Client) to Kotlin\n */\npublic external abstract class Client : UnionClientOrMessagePortOrServiceWorker {\n open val url: String\n open val frameType: FrameType\n open val id: String\n fun postMessage(message: Any?, transfer: Array = definedExternally): Unit\n}\n\n/**\n * Exposes the JavaScript [WindowClient](https://developer.mozilla.org/en/docs/Web/API/WindowClient) to Kotlin\n */\npublic external abstract class WindowClient : Client {\n open val visibilityState: dynamic\n open val focused: Boolean\n fun focus(): Promise\n fun navigate(url: String): Promise\n}\n\n/**\n * Exposes the JavaScript [Clients](https://developer.mozilla.org/en/docs/Web/API/Clients) to Kotlin\n */\npublic external abstract class Clients {\n fun get(id: String): Promise\n fun matchAll(options: ClientQueryOptions = definedExternally): Promise\n fun openWindow(url: String): Promise\n fun claim(): Promise\n}\n\npublic external interface ClientQueryOptions {\n var includeUncontrolled: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var type: ClientType? /* = ClientType.WINDOW */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ClientQueryOptions(includeUncontrolled: Boolean? = false, type: ClientType? = ClientType.WINDOW): ClientQueryOptions {\n val o = js(\"({})\")\n\n o[\"includeUncontrolled\"] = includeUncontrolled\n o[\"type\"] = type\n\n return o\n}\n\n/**\n * Exposes the JavaScript [ExtendableEvent](https://developer.mozilla.org/en/docs/Web/API/ExtendableEvent) to Kotlin\n */\npublic external open class ExtendableEvent(type: String, eventInitDict: ExtendableEventInit = definedExternally) : Event {\n fun waitUntil(f: Promise): Unit\n}\n\npublic external interface ExtendableEventInit : EventInit {\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ExtendableEventInit(bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): ExtendableEventInit {\n val o = js(\"({})\")\n\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [InstallEvent](https://developer.mozilla.org/en/docs/Web/API/InstallEvent) to Kotlin\n */\npublic external open class InstallEvent(type: String, eventInitDict: ExtendableEventInit = definedExternally) : ExtendableEvent {\n fun registerForeignFetch(options: ForeignFetchOptions): Unit\n}\n\npublic external interface ForeignFetchOptions {\n var scopes: Array?\n get() = definedExternally\n set(value) = definedExternally\n var origins: Array?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ForeignFetchOptions(scopes: Array?, origins: Array?): ForeignFetchOptions {\n val o = js(\"({})\")\n\n o[\"scopes\"] = scopes\n o[\"origins\"] = origins\n\n return o\n}\n\n/**\n * Exposes the JavaScript [FetchEvent](https://developer.mozilla.org/en/docs/Web/API/FetchEvent) to Kotlin\n */\npublic external open class FetchEvent(type: String, eventInitDict: FetchEventInit) : ExtendableEvent {\n open val request: Request\n open val clientId: String?\n open val isReload: Boolean\n fun respondWith(r: Promise): Unit\n}\n\npublic external interface FetchEventInit : ExtendableEventInit {\n var request: Request?\n get() = definedExternally\n set(value) = definedExternally\n var clientId: String? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var isReload: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun FetchEventInit(request: Request?, clientId: String? = null, isReload: Boolean? = false, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): FetchEventInit {\n val o = js(\"({})\")\n\n o[\"request\"] = request\n o[\"clientId\"] = clientId\n o[\"isReload\"] = isReload\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\npublic external open class ForeignFetchEvent(type: String, eventInitDict: ForeignFetchEventInit) : ExtendableEvent {\n open val request: Request\n open val origin: String\n fun respondWith(r: Promise): Unit\n}\n\npublic external interface ForeignFetchEventInit : ExtendableEventInit {\n var request: Request?\n get() = definedExternally\n set(value) = definedExternally\n var origin: String? /* = \"null\" */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ForeignFetchEventInit(request: Request?, origin: String? = \"null\", bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): ForeignFetchEventInit {\n val o = js(\"({})\")\n\n o[\"request\"] = request\n o[\"origin\"] = origin\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\npublic external interface ForeignFetchResponse {\n var response: Response?\n get() = definedExternally\n set(value) = definedExternally\n var origin: String?\n get() = definedExternally\n set(value) = definedExternally\n var headers: Array?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ForeignFetchResponse(response: Response?, origin: String? = undefined, headers: Array? = undefined): ForeignFetchResponse {\n val o = js(\"({})\")\n\n o[\"response\"] = response\n o[\"origin\"] = origin\n o[\"headers\"] = headers\n\n return o\n}\n\n/**\n * Exposes the JavaScript [ExtendableMessageEvent](https://developer.mozilla.org/en/docs/Web/API/ExtendableMessageEvent) to Kotlin\n */\npublic external open class ExtendableMessageEvent(type: String, eventInitDict: ExtendableMessageEventInit = definedExternally) : ExtendableEvent {\n open val data: Any?\n open val origin: String\n open val lastEventId: String\n open val source: UnionClientOrMessagePortOrServiceWorker?\n open val ports: Array?\n}\n\npublic external interface ExtendableMessageEventInit : ExtendableEventInit {\n var data: Any?\n get() = definedExternally\n set(value) = definedExternally\n var origin: String?\n get() = definedExternally\n set(value) = definedExternally\n var lastEventId: String?\n get() = definedExternally\n set(value) = definedExternally\n var source: UnionClientOrMessagePortOrServiceWorker?\n get() = definedExternally\n set(value) = definedExternally\n var ports: Array?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ExtendableMessageEventInit(data: Any? = undefined, origin: String? = undefined, lastEventId: String? = undefined, source: UnionClientOrMessagePortOrServiceWorker? = undefined, ports: Array? = undefined, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): ExtendableMessageEventInit {\n val o = js(\"({})\")\n\n o[\"data\"] = data\n o[\"origin\"] = origin\n o[\"lastEventId\"] = lastEventId\n o[\"source\"] = source\n o[\"ports\"] = ports\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/**\n * Exposes the JavaScript [Cache](https://developer.mozilla.org/en/docs/Web/API/Cache) to Kotlin\n */\npublic external abstract class Cache {\n fun match(request: dynamic, options: CacheQueryOptions = definedExternally): Promise\n fun matchAll(request: dynamic = definedExternally, options: CacheQueryOptions = definedExternally): Promise\n fun add(request: dynamic): Promise\n fun addAll(requests: Array): Promise\n fun put(request: dynamic, response: Response): Promise\n fun delete(request: dynamic, options: CacheQueryOptions = definedExternally): Promise\n fun keys(request: dynamic = definedExternally, options: CacheQueryOptions = definedExternally): Promise\n}\n\npublic external interface CacheQueryOptions {\n var ignoreSearch: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var ignoreMethod: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var ignoreVary: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var cacheName: String?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun CacheQueryOptions(ignoreSearch: Boolean? = false, ignoreMethod: Boolean? = false, ignoreVary: Boolean? = false, cacheName: String? = undefined): CacheQueryOptions {\n val o = js(\"({})\")\n\n o[\"ignoreSearch\"] = ignoreSearch\n o[\"ignoreMethod\"] = ignoreMethod\n o[\"ignoreVary\"] = ignoreVary\n o[\"cacheName\"] = cacheName\n\n return o\n}\n\npublic external interface CacheBatchOperation {\n var type: String?\n get() = definedExternally\n set(value) = definedExternally\n var request: Request?\n get() = definedExternally\n set(value) = definedExternally\n var response: Response?\n get() = definedExternally\n set(value) = definedExternally\n var options: CacheQueryOptions?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun CacheBatchOperation(type: String? = undefined, request: Request? = undefined, response: Response? = undefined, options: CacheQueryOptions? = undefined): CacheBatchOperation {\n val o = js(\"({})\")\n\n o[\"type\"] = type\n o[\"request\"] = request\n o[\"response\"] = response\n o[\"options\"] = options\n\n return o\n}\n\n/**\n * Exposes the JavaScript [CacheStorage](https://developer.mozilla.org/en/docs/Web/API/CacheStorage) to Kotlin\n */\npublic external abstract class CacheStorage {\n fun match(request: dynamic, options: CacheQueryOptions = definedExternally): Promise\n fun has(cacheName: String): Promise\n fun open(cacheName: String): Promise\n fun delete(cacheName: String): Promise\n fun keys(): Promise\n}\n\npublic external open class FunctionalEvent : ExtendableEvent {\n}\n\npublic external @marker interface UnionClientOrMessagePortOrServiceWorker {\n}\n\n/* please, don't implement this interface! */\npublic external interface ServiceWorkerState {\n companion object\n}\npublic inline val ServiceWorkerState.Companion.INSTALLING: ServiceWorkerState get() = \"installing\".asDynamic().unsafeCast()\npublic inline val ServiceWorkerState.Companion.INSTALLED: ServiceWorkerState get() = \"installed\".asDynamic().unsafeCast()\npublic inline val ServiceWorkerState.Companion.ACTIVATING: ServiceWorkerState get() = \"activating\".asDynamic().unsafeCast()\npublic inline val ServiceWorkerState.Companion.ACTIVATED: ServiceWorkerState get() = \"activated\".asDynamic().unsafeCast()\npublic inline val ServiceWorkerState.Companion.REDUNDANT: ServiceWorkerState get() = \"redundant\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface FrameType {\n companion object\n}\npublic inline val FrameType.Companion.AUXILIARY: FrameType get() = \"auxiliary\".asDynamic().unsafeCast()\npublic inline val FrameType.Companion.TOP_LEVEL: FrameType get() = \"top-level\".asDynamic().unsafeCast()\npublic inline val FrameType.Companion.NESTED: FrameType get() = \"nested\".asDynamic().unsafeCast()\npublic inline val FrameType.Companion.NONE: FrameType get() = \"none\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\npublic external interface ClientType {\n companion object\n}\npublic inline val ClientType.Companion.WINDOW: ClientType get() = \"window\".asDynamic().unsafeCast()\npublic inline val ClientType.Companion.WORKER: ClientType get() = \"worker\".asDynamic().unsafeCast()\npublic inline val ClientType.Companion.SHAREDWORKER: ClientType get() = \"sharedworker\".asDynamic().unsafeCast()\npublic inline val ClientType.Companion.ALL: ClientType get() = \"all\".asDynamic().unsafeCast()\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See libraries/tools/idl2k for details\n\n@file:Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npackage org.w3c.xhr\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\n\n/**\n * Exposes the JavaScript [XMLHttpRequestEventTarget](https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequestEventTarget) to Kotlin\n */\npublic external abstract class XMLHttpRequestEventTarget : EventTarget {\n open var onloadstart: ((ProgressEvent) -> dynamic)?\n open var onprogress: ((ProgressEvent) -> dynamic)?\n open var onabort: ((Event) -> dynamic)?\n open var onerror: ((Event) -> dynamic)?\n open var onload: ((Event) -> dynamic)?\n open var ontimeout: ((Event) -> dynamic)?\n open var onloadend: ((Event) -> dynamic)?\n}\n\npublic external abstract class XMLHttpRequestUpload : XMLHttpRequestEventTarget {\n}\n\n/**\n * Exposes the JavaScript [XMLHttpRequest](https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest) to Kotlin\n */\npublic external open class XMLHttpRequest : XMLHttpRequestEventTarget {\n var onreadystatechange: ((Event) -> dynamic)?\n open val readyState: Short\n var timeout: Int\n var withCredentials: Boolean\n open val upload: XMLHttpRequestUpload\n open val responseURL: String\n open val status: Short\n open val statusText: String\n var responseType: XMLHttpRequestResponseType\n open val response: Any?\n open val responseText: String\n open val responseXML: Document?\n fun open(method: String, url: String): Unit\n fun open(method: String, url: String, async: Boolean, username: String? = definedExternally, password: String? = definedExternally): Unit\n fun setRequestHeader(name: String, value: String): Unit\n fun send(body: dynamic = definedExternally): Unit\n fun abort(): Unit\n fun getResponseHeader(name: String): String?\n fun getAllResponseHeaders(): String\n fun overrideMimeType(mime: String): Unit\n\n companion object {\n val UNSENT: Short\n val OPENED: Short\n val HEADERS_RECEIVED: Short\n val LOADING: Short\n val DONE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [FormData](https://developer.mozilla.org/en/docs/Web/API/FormData) to Kotlin\n */\npublic external open class FormData(form: HTMLFormElement = definedExternally) {\n fun append(name: String, value: String): Unit\n fun append(name: String, value: Blob, filename: String = definedExternally): Unit\n fun delete(name: String): Unit\n fun get(name: String): dynamic\n fun getAll(name: String): Array\n fun has(name: String): Boolean\n fun set(name: String, value: String): Unit\n fun set(name: String, value: Blob, filename: String = definedExternally): Unit\n}\n\n/**\n * Exposes the JavaScript [ProgressEvent](https://developer.mozilla.org/en/docs/Web/API/ProgressEvent) to Kotlin\n */\npublic external open class ProgressEvent(type: String, eventInitDict: ProgressEventInit = definedExternally) : Event {\n open val lengthComputable: Boolean\n open val loaded: Int\n open val total: Int\n}\n\npublic external interface ProgressEventInit : EventInit {\n var lengthComputable: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var loaded: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var total: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ProgressEventInit(lengthComputable: Boolean? = false, loaded: Int? = 0, total: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): ProgressEventInit {\n val o = js(\"({})\")\n\n o[\"lengthComputable\"] = lengthComputable\n o[\"loaded\"] = loaded\n o[\"total\"] = total\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n\n return o\n}\n\n/* please, don't implement this interface! */\npublic external interface XMLHttpRequestResponseType {\n companion object\n}\npublic inline val XMLHttpRequestResponseType.Companion.EMPTY: XMLHttpRequestResponseType get() = \"\".asDynamic().unsafeCast()\npublic inline val XMLHttpRequestResponseType.Companion.ARRAYBUFFER: XMLHttpRequestResponseType get() = \"arraybuffer\".asDynamic().unsafeCast()\npublic inline val XMLHttpRequestResponseType.Companion.BLOB: XMLHttpRequestResponseType get() = \"blob\".asDynamic().unsafeCast()\npublic inline val XMLHttpRequestResponseType.Companion.DOCUMENT: XMLHttpRequestResponseType get() = \"document\".asDynamic().unsafeCast()\npublic inline val XMLHttpRequestResponseType.Companion.JSON: XMLHttpRequestResponseType get() = \"json\".asDynamic().unsafeCast()\npublic inline val XMLHttpRequestResponseType.Companion.TEXT: XMLHttpRequestResponseType get() = \"text\".asDynamic().unsafeCast()\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\nimport kotlin.annotation.AnnotationRetention.BINARY\nimport kotlin.annotation.AnnotationRetention.SOURCE\nimport kotlin.annotation.AnnotationTarget.*\nimport kotlin.internal.RequireKotlin\nimport kotlin.internal.RequireKotlinVersionKind\nimport kotlin.reflect.KClass\n\n/**\n * Signals that the annotated annotation class is a marker of an experimental API.\n *\n * Any declaration annotated with that marker is considered an experimental declaration\n * and its call sites should accept the experimental aspect of it either by using [UseExperimental],\n * or by being annotated with that marker themselves, effectively causing further propagation of that experimental aspect.\n *\n * This class is experimental itself and can only be used with the compiler argument `-Xuse-experimental=kotlin.Experimental`.\n */\n@Target(ANNOTATION_CLASS)\n@Retention(BINARY)\n@SinceKotlin(\"1.2\")\n@RequireKotlin(\"1.2.50\", versionKind = RequireKotlinVersionKind.COMPILER_VERSION)\n@Suppress(\"ANNOTATION_CLASS_MEMBER\")\npublic annotation class Experimental(val level: Level = Level.ERROR) {\n /**\n * Severity of the diagnostic that should be reported on usages of experimental API which did not explicitly accept the experimental aspect\n * of that API either by using [UseExperimental] or by being annotated with the corresponding marker annotation.\n */\n public enum class Level {\n /** Specifies that a warning should be reported on incorrect usages of this experimental API. */\n WARNING,\n /** Specifies that an error should be reported on incorrect usages of this experimental API. */\n ERROR,\n }\n}\n\n/**\n * Allows to use experimental API denoted by the given markers in the annotated file, declaration, or expression.\n * If a declaration is annotated with [UseExperimental], its usages are **not** required to opt-in to that experimental API.\n *\n * This class is experimental itself and can only be used with the compiler argument `-Xuse-experimental=kotlin.Experimental`.\n */\n@Target(\n CLASS, PROPERTY, LOCAL_VARIABLE, VALUE_PARAMETER, CONSTRUCTOR, FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, EXPRESSION, FILE, TYPEALIAS\n)\n@Retention(SOURCE)\n@SinceKotlin(\"1.2\")\n@RequireKotlin(\"1.2.50\", versionKind = RequireKotlinVersionKind.COMPILER_VERSION)\npublic annotation class UseExperimental(\n vararg val markerClass: KClass\n)\n\n\n@Target(CLASS, PROPERTY, CONSTRUCTOR, FUNCTION, TYPEALIAS)\n@Retention(BINARY)\ninternal annotation class WasExperimental(\n vararg val markerClass: KClass\n)\n","package kotlin\n\nimport kotlin.annotation.AnnotationTarget.*\n\n/**\n * This annotation marks the standard library API that is considered experimental and is not subject to the\n * [general compatibility guarantees](https://kotlinlang.org/docs/reference/evolution/components-stability.html) given for the standard library:\n * the behavior of such API may be changed or the API may be removed completely in any further release.\n *\n * > Beware using the annotated API especially if you're developing a library, since your library might become binary incompatible\n * with the future versions of the standard library.\n *\n * Any usage of a declaration annotated with `@ExperimentalStdlibApi` must be accepted either by\n * annotating that usage with the [UseExperimental] annotation, e.g. `@UseExperimental(ExperimentalStdlibApi::class)`,\n * or by using the compiler argument `-Xuse-experimental=kotlin.ExperimentalStdlibApi`.\n */\n@Experimental(level = Experimental.Level.ERROR)\n@Retention(AnnotationRetention.BINARY)\n@Target(\n CLASS,\n ANNOTATION_CLASS,\n PROPERTY,\n FIELD,\n LOCAL_VARIABLE,\n VALUE_PARAMETER,\n CONSTRUCTOR,\n FUNCTION,\n PROPERTY_GETTER,\n PROPERTY_SETTER,\n TYPEALIAS\n)\n@MustBeDocumented\n@ExperimentalStdlibApi\n@SinceKotlin(\"1.3\") // TODO: Remove experimental status from itself and advance SinceKotlin to 1.4\npublic annotation class ExperimentalStdlibApi\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\nimport kotlin.annotation.AnnotationTarget.*\nimport kotlin.experimental.ExperimentalTypeInference\n\n/**\n * Allows to infer generic type arguments of a function from the calls in the annotated function parameter of that function.\n *\n * When this annotation is placed on a generic function parameter of a function,\n * it enables to infer the type arguments of that generic function from the lambda body passed to that parameter.\n *\n * The calls that affect inference are either members of the receiver type of an annotated function parameter or\n * extensions for that type. The extensions must be themselves annotated with `@BuilderInference`.\n *\n * Example: we declare\n * ```\n * fun sequence(@BuilderInference block: suspend SequenceScope.() -> Unit): Sequence\n * ```\n * and use it like\n * ```\n * val result = sequence { yield(\"result\") }\n * ```\n * Here the type argument of the resulting sequence is inferred to `String` from\n * the argument of the [SequenceScope.yield] function, that is called inside the lambda passed to [sequence].\n *\n * Note: this annotation is experimental, see [ExperimentalTypeInference] on how to opt-in for it.\n */\n@Target(VALUE_PARAMETER, FUNCTION, PROPERTY)\n@Retention(AnnotationRetention.BINARY)\n@SinceKotlin(\"1.3\")\n@ExperimentalTypeInference\npublic annotation class BuilderInference\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\nimport kotlin.annotation.AnnotationTarget.*\nimport kotlin.internal.RequireKotlin\nimport kotlin.internal.RequireKotlinVersionKind\n\n/**\n * The experimental multiplatform support API marker.\n *\n * Any usage of a declaration annotated with `@ExperimentalMultiplatform` must be accepted either by\n * annotating that usage with the [UseExperimental] annotation, e.g. `@UseExperimental(ExperimentalMultiplatform::class)`,\n * or by using the compiler argument `-Xuse-experimental=kotlin.ExperimentalMultiplatform`.\n */\n@Experimental\n@MustBeDocumented\n@Target(\n CLASS,\n ANNOTATION_CLASS,\n PROPERTY,\n FIELD,\n LOCAL_VARIABLE,\n VALUE_PARAMETER,\n CONSTRUCTOR,\n FUNCTION,\n PROPERTY_GETTER,\n PROPERTY_SETTER,\n TYPEALIAS\n)\n@Retention(AnnotationRetention.BINARY)\n@RequireKotlin(\"1.2.50\", versionKind = RequireKotlinVersionKind.COMPILER_VERSION)\npublic annotation class ExperimentalMultiplatform\n\n/**\n * Marks an expected annotation class that it isn't required to have actual counterparts in all platforms.\n *\n * This annotation is only applicable to `expect` annotation classes in multi-platform projects and marks that class as \"optional\".\n * Optional expected class is allowed to have no corresponding actual class on the platform. Optional annotations can only be used\n * to annotate something, not as types in signatures. If an optional annotation has no corresponding actual class on a platform,\n * the annotation entries where it's used are simply erased when compiling code on that platform.\n *\n * Note: this annotation is experimental, see [ExperimentalMultiplatform] on how to opt-in for it.\n */\n@Target(ANNOTATION_CLASS)\n@Retention(AnnotationRetention.BINARY)\n@ExperimentalMultiplatform\n@RequireKotlin(\"1.2.50\", versionKind = RequireKotlinVersionKind.COMPILER_VERSION)\npublic annotation class OptionalExpectation\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the read-only [Collection] interface.\n *\n * @param E the type of elements contained in the collection. The collection is covariant on its element type.\n */\n@SinceKotlin(\"1.1\")\npublic abstract class AbstractCollection protected constructor() : Collection {\n abstract override val size: Int\n abstract override fun iterator(): Iterator\n\n override fun contains(element: @UnsafeVariance E): Boolean = any { it == element }\n\n override fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean =\n elements.all { contains(it) } // use when js will support bound refs: elements.all(this::contains)\n\n override fun isEmpty(): Boolean = size == 0\n\n override fun toString(): String = joinToString(\", \", \"[\", \"]\") {\n if (it === this) \"(this Collection)\" else it.toString()\n }\n\n /**\n * Returns new array of type `Array` with the elements of this collection.\n */\n protected open fun toArray(): Array = copyToArrayImpl(this)\n\n /**\n * Fills the provided [array] or creates new array of the same type\n * and fills it with the elements of this collection.\n */\n protected open fun toArray(array: Array): Array = copyToArrayImpl(this, array)\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n\nprivate enum class State {\n Ready,\n NotReady,\n Done,\n Failed\n}\n\n/**\n * A base class to simplify implementing iterators so that implementations only have to implement [computeNext]\n * to implement the iterator, calling [done] when the iteration is complete.\n */\npublic abstract class AbstractIterator : Iterator {\n private var state = State.NotReady\n private var nextValue: T? = null\n\n override fun hasNext(): Boolean {\n require(state != State.Failed)\n return when (state) {\n State.Done -> false\n State.Ready -> true\n else -> tryToComputeNext()\n }\n }\n\n override fun next(): T {\n if (!hasNext()) throw NoSuchElementException()\n state = State.NotReady\n @Suppress(\"UNCHECKED_CAST\")\n return nextValue as T\n }\n\n private fun tryToComputeNext(): Boolean {\n state = State.Failed\n computeNext()\n return state == State.Ready\n }\n\n /**\n * Computes the next item in the iterator.\n *\n * This callback method should call one of these two methods:\n *\n * * [setNext] with the next value of the iteration\n * * [done] to indicate there are no more elements\n *\n * Failure to call either method will result in the iteration terminating with a failed state\n */\n abstract protected fun computeNext(): Unit\n\n /**\n * Sets the next value in the iteration, called from the [computeNext] function\n */\n protected fun setNext(value: T): Unit {\n nextValue = value\n state = State.Ready\n }\n\n /**\n * Sets the state to done so that the iteration terminates.\n */\n protected fun done() {\n state = State.Done\n }\n}\n\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT AbstractList\n * Copyright 2007 Google Inc.\n*/\n\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the read-only [List] interface.\n *\n * This class is intended to help implementing read-only lists so it doesn't support concurrent modification tracking.\n *\n * @param E the type of elements contained in the list. The list is covariant on its element type.\n */\n@SinceKotlin(\"1.1\")\npublic abstract class AbstractList protected constructor() : AbstractCollection(), List {\n abstract override val size: Int\n abstract override fun get(index: Int): E\n\n override fun iterator(): Iterator = IteratorImpl()\n\n override fun indexOf(element: @UnsafeVariance E): Int = indexOfFirst { it == element }\n\n override fun lastIndexOf(element: @UnsafeVariance E): Int = indexOfLast { it == element }\n\n override fun listIterator(): ListIterator = ListIteratorImpl(0)\n\n override fun listIterator(index: Int): ListIterator = ListIteratorImpl(index)\n\n override fun subList(fromIndex: Int, toIndex: Int): List = SubList(this, fromIndex, toIndex)\n\n private class SubList(private val list: AbstractList, private val fromIndex: Int, toIndex: Int) : AbstractList(), RandomAccess {\n private var _size: Int = 0\n\n init {\n checkRangeIndexes(fromIndex, toIndex, list.size)\n this._size = toIndex - fromIndex\n }\n\n override fun get(index: Int): E {\n checkElementIndex(index, _size)\n\n return list[fromIndex + index]\n }\n\n override val size: Int get() = _size\n }\n\n /**\n * Compares this list with other list instance with the ordered structural equality.\n *\n * @return true, if [other] instance is a [List] of the same size, which contains the same elements in the same order.\n */\n override fun equals(other: Any?): Boolean {\n if (other === this) return true\n if (other !is List<*>) return false\n\n return orderedEquals(this, other)\n }\n\n /**\n * Returns the hash code value for this list.\n */\n override fun hashCode(): Int = orderedHashCode(this)\n\n private open inner class IteratorImpl : Iterator {\n /** the index of the item that will be returned on the next call to [next]`()` */\n protected var index = 0\n\n override fun hasNext(): Boolean = index < size\n\n override fun next(): E {\n if (!hasNext()) throw NoSuchElementException()\n return get(index++)\n }\n }\n\n /**\n * Implementation of [ListIterator] for abstract lists.\n */\n private open inner class ListIteratorImpl(index: Int) : IteratorImpl(), ListIterator {\n\n init {\n checkPositionIndex(index, this@AbstractList.size)\n this.index = index\n }\n\n override fun hasPrevious(): Boolean = index > 0\n\n override fun nextIndex(): Int = index\n\n override fun previous(): E {\n if (!hasPrevious()) throw NoSuchElementException()\n return get(--index)\n }\n\n override fun previousIndex(): Int = index - 1\n }\n\n internal companion object {\n internal fun checkElementIndex(index: Int, size: Int) {\n if (index < 0 || index >= size) {\n throw IndexOutOfBoundsException(\"index: $index, size: $size\")\n }\n }\n\n internal fun checkPositionIndex(index: Int, size: Int) {\n if (index < 0 || index > size) {\n throw IndexOutOfBoundsException(\"index: $index, size: $size\")\n }\n }\n\n internal fun checkRangeIndexes(fromIndex: Int, toIndex: Int, size: Int) {\n if (fromIndex < 0 || toIndex > size) {\n throw IndexOutOfBoundsException(\"fromIndex: $fromIndex, toIndex: $toIndex, size: $size\")\n }\n if (fromIndex > toIndex) {\n throw IllegalArgumentException(\"fromIndex: $fromIndex > toIndex: $toIndex\")\n }\n }\n\n internal fun checkBoundsIndexes(startIndex: Int, endIndex: Int, size: Int) {\n if (startIndex < 0 || endIndex > size) {\n throw IndexOutOfBoundsException(\"startIndex: $startIndex, endIndex: $endIndex, size: $size\")\n }\n if (startIndex > endIndex) {\n throw IllegalArgumentException(\"startIndex: $startIndex > endIndex: $endIndex\")\n }\n }\n\n internal fun orderedHashCode(c: Collection<*>): Int {\n var hashCode = 1\n for (e in c) {\n hashCode = 31 * hashCode + (e?.hashCode() ?: 0)\n }\n return hashCode\n }\n\n internal fun orderedEquals(c: Collection<*>, other: Collection<*>): Boolean {\n if (c.size != other.size) return false\n\n val otherIterator = other.iterator()\n for (elem in c) {\n val elemOther = otherIterator.next()\n if (elem != elemOther) {\n return false\n }\n }\n return true\n }\n }\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT AbstractMap\n * Copyright 2007 Google Inc.\n */\n\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the read-only [Map] interface.\n *\n * The implementor is required to implement [entries] property, which should return read-only set of map entries.\n *\n * @param K the type of map keys. The map is invariant on its key type.\n * @param V the type of map values. The map is covariant on its value type.\n */\n@SinceKotlin(\"1.1\")\npublic abstract class AbstractMap protected constructor() : Map {\n\n override fun containsKey(key: K): Boolean {\n return implFindEntry(key) != null\n }\n\n override fun containsValue(value: @UnsafeVariance V): Boolean = entries.any { it.value == value }\n\n internal fun containsEntry(entry: Map.Entry<*, *>?): Boolean {\n // since entry comes from @UnsafeVariance parameters it can be virtually anything\n if (entry !is Map.Entry<*, *>) return false\n val key = entry.key\n val value = entry.value\n val ourValue = get(key)\n\n if (value != ourValue) {\n return false\n }\n\n // Perhaps it was null and we don't contain the key?\n if (ourValue == null && !containsKey(key)) {\n return false\n }\n\n return true\n }\n\n\n /**\n * Compares this map with other instance with the ordered structural equality.\n *\n * @return true, if [other] instance is a [Map] of the same size, all entries of which are contained in the [entries] set of this map.\n */\n override fun equals(other: Any?): Boolean {\n if (other === this) return true\n if (other !is Map<*, *>) return false\n if (size != other.size) return false\n\n return other.entries.all { containsEntry(it) }\n }\n\n override operator fun get(key: K): V? = implFindEntry(key)?.value\n\n\n /**\n * Returns the hash code value for this map.\n *\n * It is the same as the hashCode of [entries] set.\n */\n override fun hashCode(): Int = entries.hashCode()\n\n override fun isEmpty(): Boolean = size == 0\n override val size: Int get() = entries.size\n\n /**\n * Returns a read-only [Set] of all keys in this map.\n *\n * Accessing this property first time creates a keys view from [entries].\n * All subsequent accesses just return the created instance.\n */\n override val keys: Set\n get() {\n if (_keys == null) {\n _keys = object : AbstractSet() {\n override operator fun contains(element: K): Boolean = containsKey(element)\n\n override operator fun iterator(): Iterator {\n val entryIterator = entries.iterator()\n return object : Iterator {\n override fun hasNext(): Boolean = entryIterator.hasNext()\n override fun next(): K = entryIterator.next().key\n }\n }\n\n override val size: Int get() = this@AbstractMap.size\n }\n }\n return _keys!!\n }\n\n @kotlin.jvm.Volatile\n private var _keys: Set? = null\n\n\n override fun toString(): String = entries.joinToString(\", \", \"{\", \"}\") { toString(it) }\n\n private fun toString(entry: Map.Entry): String = toString(entry.key) + \"=\" + toString(entry.value)\n\n private fun toString(o: Any?): String = if (o === this) \"(this Map)\" else o.toString()\n\n /**\n * Returns a read-only [Collection] of all values in this map.\n *\n * Accessing this property first time creates a values view from [entries].\n * All subsequent accesses just return the created instance.\n */\n override val values: Collection\n get() {\n if (_values == null) {\n _values = object : AbstractCollection() {\n override operator fun contains(element: @UnsafeVariance V): Boolean = containsValue(element)\n\n override operator fun iterator(): Iterator {\n val entryIterator = entries.iterator()\n return object : Iterator {\n override fun hasNext(): Boolean = entryIterator.hasNext()\n override fun next(): V = entryIterator.next().value\n }\n }\n\n override val size: Int get() = this@AbstractMap.size\n }\n }\n return _values!!\n }\n\n @kotlin.jvm.Volatile\n private var _values: Collection? = null\n\n private fun implFindEntry(key: K): Map.Entry? = entries.firstOrNull { it.key == key }\n\n internal companion object {\n\n internal fun entryHashCode(e: Map.Entry<*, *>): Int = with(e) { (key?.hashCode() ?: 0) xor (value?.hashCode() ?: 0) }\n internal fun entryToString(e: Map.Entry<*, *>): String = with(e) { \"$key=$value\" }\n internal fun entryEquals(e: Map.Entry<*, *>, other: Any?): Boolean {\n if (other !is Map.Entry<*, *>) return false\n return e.key == other.key && e.value == other.value\n }\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the read-only [Set] interface.\n *\n * This class is intended to help implementing read-only sets so it doesn't support concurrent modification tracking.\n *\n * @param E the type of elements contained in the set. The set is covariant on its element type.\n */\n@SinceKotlin(\"1.1\")\npublic abstract class AbstractSet protected constructor() : AbstractCollection(), Set {\n\n /**\n * Compares this set with other set instance with the unordered structural equality.\n *\n * @return true, if [other] instance is a [Set] of the same size, all elements of which are contained in this set.\n */\n override fun equals(other: Any?): Boolean {\n if (other === this) return true\n if (other !is Set<*>) return false\n return setEquals(this, other)\n }\n\n /**\n * Returns the hash code value for this set.\n */\n override fun hashCode(): Int = unorderedHashCode(this)\n\n internal companion object {\n internal fun unorderedHashCode(c: Collection<*>): Int {\n var hashCode = 0\n for (element in c) {\n hashCode += (element?.hashCode() ?: 0)\n }\n return hashCode\n }\n\n internal fun setEquals(c: Set<*>, other: Set<*>): Boolean {\n if (c.size != other.size) return false\n return c.containsAll(other)\n }\n }\n\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"ArraysKt\")\n\n\npackage kotlin.collections\n\nimport kotlin.contracts.*\n\n\n/**\n * Returns a single list of all elements from all arrays in the given array.\n * @sample samples.collections.Arrays.Transformations.flattenArray\n */\npublic fun Array>.flatten(): List {\n val result = ArrayList(sumBy { it.size })\n for (element in this) {\n result.addAll(element)\n }\n return result\n}\n\n/**\n * Returns a pair of lists, where\n * *first* list is built from the first values of each pair from this array,\n * *second* list is built from the second values of each pair from this array.\n * @sample samples.collections.Arrays.Transformations.unzipArray\n */\npublic fun Array>.unzip(): Pair, List> {\n val listT = ArrayList(size)\n val listR = ArrayList(size)\n for (pair in this) {\n listT.add(pair.first)\n listR.add(pair.second)\n }\n return listT to listR\n}\n\n/**\n * Returns `true` if this nullable array is either null or empty.\n * @sample samples.collections.Arrays.Usage.arrayIsNullOrEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Array<*>?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || this.isEmpty()\n}\n\n/**\n * Returns this array if it's not empty\n * or the result of calling [defaultValue] function if the array is empty.\n *\n * @sample samples.collections.Arrays.Usage.arrayIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"UPPER_BOUND_CANNOT_BE_ARRAY\")\npublic inline fun C.ifEmpty(defaultValue: () -> R): R where C : Array<*>, C : R =\n if (isEmpty()) defaultValue() else this\n\n\n@UseExperimental(ExperimentalUnsignedTypes::class)\n@SinceKotlin(\"1.3\")\n@PublishedApi\n@kotlin.jvm.JvmName(\"contentDeepEquals\")\n@kotlin.js.JsName(\"contentDeepEqualsImpl\")\ninternal fun Array.contentDeepEqualsImpl(other: Array): Boolean {\n if (this === other) return true\n if (this.size != other.size) return false\n\n for (i in indices) {\n val v1 = this[i]\n val v2 = other[i]\n\n if (v1 === v2) {\n continue\n } else if (v1 == null || v2 == null) {\n return false\n }\n\n when {\n v1 is Array<*> && v2 is Array<*> -> if (!v1.contentDeepEquals(v2)) return false\n v1 is ByteArray && v2 is ByteArray -> if (!v1.contentEquals(v2)) return false\n v1 is ShortArray && v2 is ShortArray -> if (!v1.contentEquals(v2)) return false\n v1 is IntArray && v2 is IntArray -> if (!v1.contentEquals(v2)) return false\n v1 is LongArray && v2 is LongArray -> if (!v1.contentEquals(v2)) return false\n v1 is FloatArray && v2 is FloatArray -> if (!v1.contentEquals(v2)) return false\n v1 is DoubleArray && v2 is DoubleArray -> if (!v1.contentEquals(v2)) return false\n v1 is CharArray && v2 is CharArray -> if (!v1.contentEquals(v2)) return false\n v1 is BooleanArray && v2 is BooleanArray -> if (!v1.contentEquals(v2)) return false\n\n v1 is UByteArray && v2 is UByteArray -> if (!v1.contentEquals(v2)) return false\n v1 is UShortArray && v2 is UShortArray -> if (!v1.contentEquals(v2)) return false\n v1 is UIntArray && v2 is UIntArray -> if (!v1.contentEquals(v2)) return false\n v1 is ULongArray && v2 is ULongArray -> if (!v1.contentEquals(v2)) return false\n\n else -> if (v1 != v2) return false\n }\n\n }\n return true\n}\n\n@SinceKotlin(\"1.3\")\n@PublishedApi\n@kotlin.jvm.JvmName(\"contentDeepToString\")\n@kotlin.js.JsName(\"contentDeepToStringImpl\")\ninternal fun Array.contentDeepToStringImpl(): String {\n val length = size.coerceAtMost((Int.MAX_VALUE - 2) / 5) * 5 + 2 // in order not to overflow Int.MAX_VALUE\n return buildString(length) {\n contentDeepToStringInternal(this, mutableListOf())\n }\n}\n\n@UseExperimental(ExperimentalUnsignedTypes::class)\nprivate fun Array.contentDeepToStringInternal(result: StringBuilder, processed: MutableList>) {\n if (this in processed) {\n result.append(\"[...]\")\n return\n }\n processed.add(this)\n result.append('[')\n\n for (i in indices) {\n if (i != 0) {\n result.append(\", \")\n }\n val element = this[i]\n when (element) {\n null -> result.append(\"null\")\n is Array<*> -> element.contentDeepToStringInternal(result, processed)\n is ByteArray -> result.append(element.contentToString())\n is ShortArray -> result.append(element.contentToString())\n is IntArray -> result.append(element.contentToString())\n is LongArray -> result.append(element.contentToString())\n is FloatArray -> result.append(element.contentToString())\n is DoubleArray -> result.append(element.contentToString())\n is CharArray -> result.append(element.contentToString())\n is BooleanArray -> result.append(element.contentToString())\n\n is UByteArray -> result.append(element.contentToString())\n is UShortArray -> result.append(element.contentToString())\n is UIntArray -> result.append(element.contentToString())\n is ULongArray -> result.append(element.contentToString())\n\n else -> result.append(element.toString())\n }\n }\n\n result.append(']')\n processed.removeAt(processed.lastIndex)\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n/**\n * Data class representing a value from a collection or sequence, along with its index in that collection or sequence.\n *\n * @property value the underlying value.\n * @property index the index of the value in the collection or sequence.\n */\npublic data class IndexedValue(public val index: Int, public val value: T)\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"MapAccessorsKt\")\n\npackage kotlin.collections\n\nimport kotlin.reflect.KProperty\nimport kotlin.internal.Exact\n\n/**\n * Returns the value of the property for the given object from this read-only map.\n * @param thisRef the object for which the value is requested (not used).\n * @param property the metadata for the property, used to get the name of property and lookup the value corresponding to this name in the map.\n * @return the property value.\n *\n * @throws NoSuchElementException when the map doesn't contain value for the property name and doesn't provide an implicit default (see [withDefault]).\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Map.getValue(thisRef: Any?, property: KProperty<*>): V1 =\n @Suppress(\"UNCHECKED_CAST\") (getOrImplicitDefault(property.name) as V1)\n\n/**\n * Returns the value of the property for the given object from this mutable map.\n * @param thisRef the object for which the value is requested (not used).\n * @param property the metadata for the property, used to get the name of property and lookup the value corresponding to this name in the map.\n * @return the property value.\n *\n * @throws NoSuchElementException when the map doesn't contain value for the property name and doesn't provide an implicit default (see [withDefault]).\n */\n@kotlin.jvm.JvmName(\"getVar\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.getValue(thisRef: Any?, property: KProperty<*>): V1 =\n @Suppress(\"UNCHECKED_CAST\") (getOrImplicitDefault(property.name) as V1)\n\n@Deprecated(\"Use getValue() with two type parameters instead\", level = DeprecationLevel.ERROR)\n@kotlin.jvm.JvmName(\"getVarContravariant\")\n@kotlin.internal.LowPriorityInOverloadResolution\n@kotlin.internal.InlineOnly\npublic inline fun MutableMap.getValue(thisRef: Any?, property: KProperty<*>): V =\n @Suppress(\"UNCHECKED_CAST\") (getOrImplicitDefault(property.name) as V)\n\n/**\n * Stores the value of the property for the given object in this mutable map.\n * @param thisRef the object for which the value is requested (not used).\n * @param property the metadata for the property, used to get the name of property and store the value associated with that name in the map.\n * @param value the value to set.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.setValue(thisRef: Any?, property: KProperty<*>, value: V) {\n this.put(property.name, value)\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"MapsKt\")\n\npackage kotlin.collections\n\n/**\n * Returns the value for the given key, or the implicit default value for this map.\n * By default no implicit value is provided for maps and a [NoSuchElementException] is thrown.\n * To create a map with implicit default value use [withDefault] method.\n *\n * @throws NoSuchElementException when the map doesn't contain a value for the specified key and no implicit default was provided for that map.\n */\n@kotlin.jvm.JvmName(\"getOrImplicitDefaultNullable\")\n@PublishedApi\ninternal fun Map.getOrImplicitDefault(key: K): V {\n if (this is MapWithDefault)\n return this.getOrImplicitDefault(key)\n\n return getOrElseNullable(key, { throw NoSuchElementException(\"Key $key is missing in the map.\") })\n}\n\n/**\n * Returns a wrapper of this read-only map, having the implicit default value provided with the specified function [defaultValue].\n *\n * This implicit default value is used when the original map doesn't contain a value for the key specified\n * and a value is obtained with [Map.getValue] function, for example when properties are delegated to the map.\n *\n * When this map already has an implicit default value provided with a former call to [withDefault], it is being replaced by this call.\n */\npublic fun Map.withDefault(defaultValue: (key: K) -> V): Map =\n when (this) {\n is MapWithDefault -> this.map.withDefault(defaultValue)\n else -> MapWithDefaultImpl(this, defaultValue)\n }\n\n/**\n * Returns a wrapper of this mutable map, having the implicit default value provided with the specified function [defaultValue].\n *\n * This implicit default value is used when the original map doesn't contain a value for the key specified\n * and a value is obtained with [Map.getValue] function, for example when properties are delegated to the map.\n *\n * When this map already has an implicit default value provided with a former call to [withDefault], it is being replaced by this call.\n */\n@kotlin.jvm.JvmName(\"withDefaultMutable\")\npublic fun MutableMap.withDefault(defaultValue: (key: K) -> V): MutableMap =\n when (this) {\n is MutableMapWithDefault -> this.map.withDefault(defaultValue)\n else -> MutableMapWithDefaultImpl(this, defaultValue)\n }\n\n\nprivate interface MapWithDefault : Map {\n public val map: Map\n public fun getOrImplicitDefault(key: K): V\n}\n\nprivate interface MutableMapWithDefault : MutableMap, MapWithDefault {\n public override val map: MutableMap\n}\n\n\nprivate class MapWithDefaultImpl(public override val map: Map, private val default: (key: K) -> V) : MapWithDefault {\n override fun equals(other: Any?): Boolean = map.equals(other)\n override fun hashCode(): Int = map.hashCode()\n override fun toString(): String = map.toString()\n override val size: Int get() = map.size\n override fun isEmpty(): Boolean = map.isEmpty()\n override fun containsKey(key: K): Boolean = map.containsKey(key)\n override fun containsValue(value: @UnsafeVariance V): Boolean = map.containsValue(value)\n override fun get(key: K): V? = map.get(key)\n override val keys: Set get() = map.keys\n override val values: Collection get() = map.values\n override val entries: Set> get() = map.entries\n\n override fun getOrImplicitDefault(key: K): V = map.getOrElseNullable(key, { default(key) })\n}\n\nprivate class MutableMapWithDefaultImpl(public override val map: MutableMap, private val default: (key: K) -> V) : MutableMapWithDefault {\n override fun equals(other: Any?): Boolean = map.equals(other)\n override fun hashCode(): Int = map.hashCode()\n override fun toString(): String = map.toString()\n override val size: Int get() = map.size\n override fun isEmpty(): Boolean = map.isEmpty()\n override fun containsKey(key: K): Boolean = map.containsKey(key)\n override fun containsValue(value: @UnsafeVariance V): Boolean = map.containsValue(value)\n override fun get(key: K): V? = map.get(key)\n override val keys: MutableSet get() = map.keys\n override val values: MutableCollection get() = map.values\n override val entries: MutableSet> get() = map.entries\n\n override fun put(key: K, value: V): V? = map.put(key, value)\n override fun remove(key: K): V? = map.remove(key)\n override fun putAll(from: Map) = map.putAll(from)\n override fun clear() = map.clear()\n\n override fun getOrImplicitDefault(key: K): V = map.getOrElseNullable(key, { default(key) })\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\nimport kotlin.random.Random\n\n/**\n * Removes a single instance of the specified element from this\n * collection, if it is present.\n *\n * Allows to overcome type-safety restriction of `remove` that requires to pass an element of type `E`.\n *\n * @return `true` if the element has been successfully removed; `false` if it was not present in the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> MutableCollection.remove(element: T): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableCollection).remove(element)\n\n/**\n * Removes all of this collection's elements that are also contained in the specified collection.\n\n * Allows to overcome type-safety restriction of `removeAll` that requires to pass a collection of type `Collection`.\n *\n * @return `true` if any of the specified elements was removed from the collection, `false` if the collection was not modified.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> MutableCollection.removeAll(elements: Collection): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableCollection).removeAll(elements)\n\n/**\n * Retains only the elements in this collection that are contained in the specified collection.\n *\n * Allows to overcome type-safety restriction of `retainAll` that requires to pass a collection of type `Collection`.\n *\n * @return `true` if any element was removed from the collection, `false` if the collection was not modified.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> MutableCollection.retainAll(elements: Collection): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableCollection).retainAll(elements)\n\n/**\n * Removes the element at the specified [index] from this list.\n * In Kotlin one should use the [MutableList.removeAt] function instead.\n */\n@Deprecated(\"Use removeAt(index) instead.\", ReplaceWith(\"removeAt(index)\"), level = DeprecationLevel.ERROR)\n@kotlin.internal.InlineOnly\npublic inline fun MutableList.remove(index: Int): T = removeAt(index)\n\n/**\n * Adds the specified [element] to this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.plusAssign(element: T) {\n this.add(element)\n}\n\n/**\n * Adds all elements of the given [elements] collection to this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.plusAssign(elements: Iterable) {\n this.addAll(elements)\n}\n\n/**\n * Adds all elements of the given [elements] array to this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.plusAssign(elements: Array) {\n this.addAll(elements)\n}\n\n/**\n * Adds all elements of the given [elements] sequence to this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.plusAssign(elements: Sequence) {\n this.addAll(elements)\n}\n\n/**\n * Removes a single instance of the specified [element] from this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.minusAssign(element: T) {\n this.remove(element)\n}\n\n/**\n * Removes all elements contained in the given [elements] collection from this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.minusAssign(elements: Iterable) {\n this.removeAll(elements)\n}\n\n/**\n * Removes all elements contained in the given [elements] array from this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.minusAssign(elements: Array) {\n this.removeAll(elements)\n}\n\n/**\n * Removes all elements contained in the given [elements] sequence from this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.minusAssign(elements: Sequence) {\n this.removeAll(elements)\n}\n\n/**\n * Adds all elements of the given [elements] collection to this [MutableCollection].\n */\npublic fun MutableCollection.addAll(elements: Iterable): Boolean {\n when (elements) {\n is Collection -> return addAll(elements)\n else -> {\n var result: Boolean = false\n for (item in elements)\n if (add(item)) result = true\n return result\n }\n }\n}\n\n/**\n * Adds all elements of the given [elements] sequence to this [MutableCollection].\n */\npublic fun MutableCollection.addAll(elements: Sequence): Boolean {\n var result: Boolean = false\n for (item in elements) {\n if (add(item)) result = true\n }\n return result\n}\n\n/**\n * Adds all elements of the given [elements] array to this [MutableCollection].\n */\npublic fun MutableCollection.addAll(elements: Array): Boolean {\n return addAll(elements.asList())\n}\n\n/**\n * Removes all elements from this [MutableIterable] that match the given [predicate].\n */\npublic fun MutableIterable.removeAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, true)\n\n/**\n * Retains only elements of this [MutableIterable] that match the given [predicate].\n */\npublic fun MutableIterable.retainAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, false)\n\nprivate fun MutableIterable.filterInPlace(predicate: (T) -> Boolean, predicateResultToRemove: Boolean): Boolean {\n var result = false\n with(iterator()) {\n while (hasNext())\n if (predicate(next()) == predicateResultToRemove) {\n remove()\n result = true\n }\n }\n return result\n}\n\n/**\n * Removes all elements from this [MutableList] that match the given [predicate].\n */\npublic fun MutableList.removeAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, true)\n\n/**\n * Retains only elements of this [MutableList] that match the given [predicate].\n */\npublic fun MutableList.retainAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, false)\n\nprivate fun MutableList.filterInPlace(predicate: (T) -> Boolean, predicateResultToRemove: Boolean): Boolean {\n if (this !is RandomAccess)\n return (this as MutableIterable).filterInPlace(predicate, predicateResultToRemove)\n\n var writeIndex: Int = 0\n for (readIndex in 0..lastIndex) {\n val element = this[readIndex]\n if (predicate(element) == predicateResultToRemove)\n continue\n\n if (writeIndex != readIndex)\n this[writeIndex] = element\n\n writeIndex++\n }\n if (writeIndex < size) {\n for (removeIndex in lastIndex downTo writeIndex)\n removeAt(removeIndex)\n\n return true\n } else {\n return false\n }\n}\n\n/**\n * Removes all elements from this [MutableCollection] that are also contained in the given [elements] collection.\n */\npublic fun MutableCollection.removeAll(elements: Iterable): Boolean {\n return removeAll(elements.convertToSetForSetOperationWith(this))\n}\n\n/**\n * Removes all elements from this [MutableCollection] that are also contained in the given [elements] sequence.\n */\npublic fun MutableCollection.removeAll(elements: Sequence): Boolean {\n val set = elements.toHashSet()\n return set.isNotEmpty() && removeAll(set)\n}\n\n/**\n * Removes all elements from this [MutableCollection] that are also contained in the given [elements] array.\n */\npublic fun MutableCollection.removeAll(elements: Array): Boolean {\n return elements.isNotEmpty() && removeAll(elements.toHashSet())\n}\n\n/**\n * Retains only elements of this [MutableCollection] that are contained in the given [elements] collection.\n */\npublic fun MutableCollection.retainAll(elements: Iterable): Boolean {\n return retainAll(elements.convertToSetForSetOperationWith(this))\n}\n\n/**\n * Retains only elements of this [MutableCollection] that are contained in the given [elements] array.\n */\npublic fun MutableCollection.retainAll(elements: Array): Boolean {\n if (elements.isNotEmpty())\n return retainAll(elements.toHashSet())\n else\n return retainNothing()\n}\n\n/**\n * Retains only elements of this [MutableCollection] that are contained in the given [elements] sequence.\n */\npublic fun MutableCollection.retainAll(elements: Sequence): Boolean {\n val set = elements.toHashSet()\n if (set.isNotEmpty())\n return retainAll(set)\n else\n return retainNothing()\n}\n\nprivate fun MutableCollection<*>.retainNothing(): Boolean {\n val result = isNotEmpty()\n clear()\n return result\n}\n\n/**\n * Randomly shuffles elements in this mutable list using the specified [random] instance as the source of randomness.\n *\n * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n */\n@SinceKotlin(\"1.3\")\npublic fun MutableList.shuffle(random: Random): Unit {\n for (i in lastIndex downTo 1) {\n val j = random.nextInt(i + 1)\n val copy = this[i]\n this[i] = this[j]\n this[j] = copy\n }\n}\n\n/**\n * Returns a new list with the elements of this list randomly shuffled\n * using the specified [random] instance as the source of randomness.\n */\n@SinceKotlin(\"1.3\")\npublic fun Iterable.shuffled(random: Random): List = toMutableList().apply { shuffle(random) }\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\nprivate open class ReversedListReadOnly(private val delegate: List) : AbstractList() {\n override val size: Int get() = delegate.size\n override fun get(index: Int): T = delegate[reverseElementIndex(index)]\n}\n\nprivate class ReversedList(private val delegate: MutableList) : AbstractMutableList() {\n override val size: Int get() = delegate.size\n override fun get(index: Int): T = delegate[reverseElementIndex(index)]\n\n override fun clear() = delegate.clear()\n override fun removeAt(index: Int): T = delegate.removeAt(reverseElementIndex(index))\n\n override fun set(index: Int, element: T): T = delegate.set(reverseElementIndex(index), element)\n override fun add(index: Int, element: T) {\n delegate.add(reversePositionIndex(index), element)\n }\n}\n\nprivate fun List<*>.reverseElementIndex(index: Int) =\n if (index in 0..lastIndex) lastIndex - index else throw IndexOutOfBoundsException(\"Element index $index must be in range [${0..lastIndex}].\")\n\nprivate fun List<*>.reversePositionIndex(index: Int) =\n if (index in 0..size) size - index else throw IndexOutOfBoundsException(\"Position index $index must be in range [${0..size}].\")\n\n\n/**\n * Returns a reversed read-only view of the original List.\n * All changes made in the original list will be reflected in the reversed one.\n * @sample samples.collections.ReversedViews.asReversedList\n */\npublic fun List.asReversed(): List = ReversedListReadOnly(this)\n\n/**\n * Returns a reversed mutable view of the original mutable List.\n * All changes made in the original list will be reflected in the reversed one and vice versa.\n * @sample samples.collections.ReversedViews.asReversedMutableList\n */\n@kotlin.jvm.JvmName(\"asReversedMutable\")\npublic fun MutableList.asReversed(): MutableList = ReversedList(this)\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"SequencesKt\")\n@file:UseExperimental(ExperimentalTypeInference::class)\n\npackage kotlin.sequences\n\nimport kotlin.coroutines.*\nimport kotlin.coroutines.intrinsics.*\nimport kotlin.experimental.ExperimentalTypeInference\n\n/**\n * Builds a [Sequence] lazily yielding values one by one.\n *\n * @see kotlin.sequences.generateSequence\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n * @sample samples.collections.Sequences.Building.buildFibonacciSequence\n */\n@SinceKotlin(\"1.3\")\npublic fun sequence(@BuilderInference block: suspend SequenceScope.() -> Unit): Sequence = Sequence { iterator(block) }\n\n@SinceKotlin(\"1.3\")\n@Deprecated(\"Use 'sequence { }' function instead.\", ReplaceWith(\"sequence(builderAction)\"), level = DeprecationLevel.ERROR)\n@kotlin.internal.InlineOnly\npublic inline fun buildSequence(@BuilderInference noinline builderAction: suspend SequenceScope.() -> Unit): Sequence = Sequence { iterator(builderAction) }\n\n/**\n * Builds an [Iterator] lazily yielding values one by one.\n *\n * @sample samples.collections.Sequences.Building.buildIterator\n * @sample samples.collections.Iterables.Building.iterable\n */\n@SinceKotlin(\"1.3\")\npublic fun iterator(@BuilderInference block: suspend SequenceScope.() -> Unit): Iterator {\n val iterator = SequenceBuilderIterator()\n iterator.nextStep = block.createCoroutineUnintercepted(receiver = iterator, completion = iterator)\n return iterator\n}\n\n@SinceKotlin(\"1.3\")\n@Deprecated(\"Use 'iterator { }' function instead.\", ReplaceWith(\"iterator(builderAction)\"), level = DeprecationLevel.ERROR)\n@kotlin.internal.InlineOnly\npublic inline fun buildIterator(@BuilderInference noinline builderAction: suspend SequenceScope.() -> Unit): Iterator = iterator(builderAction)\n\n/**\n * The scope for yielding values of a [Sequence] or an [Iterator], provides [yield] and [yieldAll] suspension functions.\n *\n * @see sequence\n * @see iterator\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n * @sample samples.collections.Sequences.Building.buildFibonacciSequence\n */\n@RestrictsSuspension\n@SinceKotlin(\"1.3\")\npublic abstract class SequenceScope internal constructor() {\n /**\n * Yields a value to the [Iterator] being built and suspends\n * until the next value is requested.\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n * @sample samples.collections.Sequences.Building.buildFibonacciSequence\n */\n public abstract suspend fun yield(value: T)\n\n /**\n * Yields all values from the `iterator` to the [Iterator] being built\n * and suspends until all these values are iterated and the next one is requested.\n *\n * The sequence of values returned by the given iterator can be potentially infinite.\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n */\n public abstract suspend fun yieldAll(iterator: Iterator)\n\n /**\n * Yields a collections of values to the [Iterator] being built\n * and suspends until all these values are iterated and the next one is requested.\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n */\n public suspend fun yieldAll(elements: Iterable) {\n if (elements is Collection && elements.isEmpty()) return\n return yieldAll(elements.iterator())\n }\n\n /**\n * Yields potentially infinite sequence of values to the [Iterator] being built\n * and suspends until all these values are iterated and the next one is requested.\n *\n * The sequence can be potentially infinite.\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n */\n public suspend fun yieldAll(sequence: Sequence) = yieldAll(sequence.iterator())\n}\n\n@Deprecated(\"Use SequenceScope class instead.\", ReplaceWith(\"SequenceScope\"), level = DeprecationLevel.ERROR)\npublic typealias SequenceBuilder = SequenceScope\n\nprivate typealias State = Int\n\nprivate const val State_NotReady: State = 0\nprivate const val State_ManyNotReady: State = 1\nprivate const val State_ManyReady: State = 2\nprivate const val State_Ready: State = 3\nprivate const val State_Done: State = 4\nprivate const val State_Failed: State = 5\n\nprivate class SequenceBuilderIterator : SequenceScope(), Iterator, Continuation {\n private var state = State_NotReady\n private var nextValue: T? = null\n private var nextIterator: Iterator? = null\n var nextStep: Continuation? = null\n\n override fun hasNext(): Boolean {\n while (true) {\n when (state) {\n State_NotReady -> {}\n State_ManyNotReady ->\n if (nextIterator!!.hasNext()) {\n state = State_ManyReady\n return true\n } else {\n nextIterator = null\n }\n State_Done -> return false\n State_Ready, State_ManyReady -> return true\n else -> throw exceptionalState()\n }\n\n state = State_Failed\n val step = nextStep!!\n nextStep = null\n step.resume(Unit)\n }\n }\n\n override fun next(): T {\n when (state) {\n State_NotReady, State_ManyNotReady -> return nextNotReady()\n State_ManyReady -> {\n state = State_ManyNotReady\n return nextIterator!!.next()\n }\n State_Ready -> {\n state = State_NotReady\n @Suppress(\"UNCHECKED_CAST\")\n val result = nextValue as T\n nextValue = null\n return result\n }\n else -> throw exceptionalState()\n }\n }\n\n private fun nextNotReady(): T {\n if (!hasNext()) throw NoSuchElementException() else return next()\n }\n\n private fun exceptionalState(): Throwable = when (state) {\n State_Done -> NoSuchElementException()\n State_Failed -> IllegalStateException(\"Iterator has failed.\")\n else -> IllegalStateException(\"Unexpected state of the iterator: $state\")\n }\n\n\n override suspend fun yield(value: T) {\n nextValue = value\n state = State_Ready\n return suspendCoroutineUninterceptedOrReturn { c ->\n nextStep = c\n COROUTINE_SUSPENDED\n }\n }\n\n override suspend fun yieldAll(iterator: Iterator) {\n if (!iterator.hasNext()) return\n nextIterator = iterator\n state = State_ManyReady\n return suspendCoroutineUninterceptedOrReturn { c ->\n nextStep = c\n COROUTINE_SUSPENDED\n }\n }\n\n // Completion continuation implementation\n override fun resumeWith(result: Result) {\n result.getOrThrow() // just rethrow exception if it is there\n state = State_Done\n }\n\n override val context: CoroutineContext\n get() = EmptyCoroutineContext\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\ninternal fun checkWindowSizeStep(size: Int, step: Int) {\n require(size > 0 && step > 0) {\n if (size != step)\n \"Both size $size and step $step must be greater than zero.\"\n else\n \"size $size must be greater than zero.\"\n }\n}\n\ninternal fun Sequence.windowedSequence(size: Int, step: Int, partialWindows: Boolean, reuseBuffer: Boolean): Sequence> {\n checkWindowSizeStep(size, step)\n return Sequence { windowedIterator(iterator(), size, step, partialWindows, reuseBuffer) }\n}\n\ninternal fun windowedIterator(iterator: Iterator, size: Int, step: Int, partialWindows: Boolean, reuseBuffer: Boolean): Iterator> {\n if (!iterator.hasNext()) return EmptyIterator\n return iterator> {\n val gap = step - size\n if (gap >= 0) {\n var buffer = ArrayList(size)\n var skip = 0\n for (e in iterator) {\n if (skip > 0) { skip -= 1; continue }\n buffer.add(e)\n if (buffer.size == size) {\n yield(buffer)\n if (reuseBuffer) buffer.clear() else buffer = ArrayList(size)\n skip = gap\n }\n }\n if (buffer.isNotEmpty()) {\n if (partialWindows || buffer.size == size) yield(buffer)\n }\n } else {\n val buffer = RingBuffer(size)\n for (e in iterator) {\n buffer.add(e)\n if (buffer.isFull()) {\n yield(if (reuseBuffer) buffer else ArrayList(buffer))\n buffer.removeFirst(step)\n }\n }\n if (partialWindows) {\n while (buffer.size > step) {\n yield(if (reuseBuffer) buffer else ArrayList(buffer))\n buffer.removeFirst(step)\n }\n if (buffer.isNotEmpty()) yield(buffer)\n }\n }\n }\n}\n\ninternal class MovingSubList(private val list: List) : AbstractList(), RandomAccess {\n private var fromIndex: Int = 0\n private var _size: Int = 0\n\n fun move(fromIndex: Int, toIndex: Int) {\n checkRangeIndexes(fromIndex, toIndex, list.size)\n this.fromIndex = fromIndex\n this._size = toIndex - fromIndex\n }\n\n override fun get(index: Int): E {\n checkElementIndex(index, _size)\n\n return list[fromIndex + index]\n }\n\n override val size: Int get() = _size\n}\n\n\n/**\n * Provides ring buffer implementation.\n *\n * Buffer overflow is not allowed so [add] doesn't overwrite tail but raises an exception.\n */\nprivate class RingBuffer(val capacity: Int) : AbstractList(), RandomAccess {\n init {\n require(capacity >= 0) { \"ring buffer capacity should not be negative but it is $capacity\" }\n }\n\n private val buffer = arrayOfNulls(capacity)\n private var startIndex: Int = 0\n\n override var size: Int = 0\n private set\n\n override fun get(index: Int): T {\n checkElementIndex(index, size)\n @Suppress(\"UNCHECKED_CAST\")\n return buffer[startIndex.forward(index)] as T\n }\n\n fun isFull() = size == capacity\n\n override fun iterator(): Iterator = object : AbstractIterator() {\n private var count = size\n private var index = startIndex\n\n override fun computeNext() {\n if (count == 0) {\n done()\n } else {\n @Suppress(\"UNCHECKED_CAST\")\n setNext(buffer[index] as T)\n index = index.forward(1)\n count--\n }\n }\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n override fun toArray(array: Array): Array {\n val result: Array =\n if (array.size < this.size) array.copyOf(this.size) else array as Array\n\n val size = this.size\n\n var widx = 0\n var idx = startIndex\n\n while (widx < size && idx < capacity) {\n result[widx] = buffer[idx] as T\n widx++\n idx++\n }\n\n idx = 0\n while (widx < size) {\n result[widx] = buffer[idx] as T\n widx++\n idx++\n }\n if (result.size > this.size) result[this.size] = null\n\n return result as Array\n }\n\n override fun toArray(): Array {\n return toArray(arrayOfNulls(size))\n }\n\n /**\n * Add [element] to the buffer or fail with [IllegalStateException] if no free space available in the buffer\n */\n fun add(element: T) {\n if (isFull()) {\n throw IllegalStateException(\"ring buffer is full\")\n }\n\n buffer[startIndex.forward(size)] = element\n size++\n }\n\n /**\n * Removes [n] first elements from the buffer or fails with [IllegalArgumentException] if not enough elements in the buffer to remove\n */\n fun removeFirst(n: Int) {\n require(n >= 0) { \"n shouldn't be negative but it is $n\" }\n require(n <= size) { \"n shouldn't be greater than the buffer size: n = $n, size = $size\" }\n\n if (n > 0) {\n val start = startIndex\n val end = start.forward(n)\n\n if (start > end) {\n buffer.fill(null, start, capacity)\n buffer.fill(null, 0, end)\n } else {\n buffer.fill(null, start, end)\n }\n\n startIndex = end\n size -= n\n }\n }\n\n\n @Suppress(\"NOTHING_TO_INLINE\")\n private inline fun Int.forward(n: Int): Int = (this + n) % capacity\n\n // TODO: replace with Array.fill from stdlib when available in common\n private fun Array.fill(element: T, fromIndex: Int = 0, toIndex: Int = size): Unit {\n for (idx in fromIndex until toIndex) {\n this[idx] = element\n }\n }\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n// UByteArray =============================================================================\n@ExperimentalUnsignedTypes\nprivate fun partition(\n array: UByteArray, left: Int, right: Int): Int {\n var i = left\n var j = right\n val pivot = array[(left + right) / 2]\n while (i <= j) {\n while (array[i] < pivot)\n i++\n while (array[j] > pivot)\n j--\n if (i <= j) {\n val tmp = array[i]\n array[i] = array[j]\n array[j] = tmp\n i++\n j--\n }\n }\n return i\n}\n\n@ExperimentalUnsignedTypes\nprivate fun quickSort(\n array: UByteArray, left: Int, right: Int) {\n val index = partition(array, left, right)\n if (left < index - 1)\n quickSort(array, left, index - 1)\n if (index < right)\n quickSort(array, index, right)\n}\n\n// UShortArray =============================================================================\n@ExperimentalUnsignedTypes\nprivate fun partition(\n array: UShortArray, left: Int, right: Int): Int {\n var i = left\n var j = right\n val pivot = array[(left + right) / 2]\n while (i <= j) {\n while (array[i] < pivot)\n i++\n while (array[j] > pivot)\n j--\n if (i <= j) {\n val tmp = array[i]\n array[i] = array[j]\n array[j] = tmp\n i++\n j--\n }\n }\n return i\n}\n\n@ExperimentalUnsignedTypes\nprivate fun quickSort(\n array: UShortArray, left: Int, right: Int) {\n val index = partition(array, left, right)\n if (left < index - 1)\n quickSort(array, left, index - 1)\n if (index < right)\n quickSort(array, index, right)\n}\n\n// UIntArray =============================================================================\n@ExperimentalUnsignedTypes\nprivate fun partition(\n array: UIntArray, left: Int, right: Int): Int {\n var i = left\n var j = right\n val pivot = array[(left + right) / 2]\n while (i <= j) {\n while (array[i] < pivot)\n i++\n while (array[j] > pivot)\n j--\n if (i <= j) {\n val tmp = array[i]\n array[i] = array[j]\n array[j] = tmp\n i++\n j--\n }\n }\n return i\n}\n\n@ExperimentalUnsignedTypes\nprivate fun quickSort(\n array: UIntArray, left: Int, right: Int) {\n val index = partition(array, left, right)\n if (left < index - 1)\n quickSort(array, left, index - 1)\n if (index < right)\n quickSort(array, index, right)\n}\n\n// ULongArray =============================================================================\n@ExperimentalUnsignedTypes\nprivate fun partition(\n array: ULongArray, left: Int, right: Int): Int {\n var i = left\n var j = right\n val pivot = array[(left + right) / 2]\n while (i <= j) {\n while (array[i] < pivot)\n i++\n while (array[j] > pivot)\n j--\n if (i <= j) {\n val tmp = array[i]\n array[i] = array[j]\n array[j] = tmp\n i++\n j--\n }\n }\n return i\n}\n\n@ExperimentalUnsignedTypes\nprivate fun quickSort(\n array: ULongArray, left: Int, right: Int) {\n val index = partition(array, left, right)\n if (left < index - 1)\n quickSort(array, left, index - 1)\n if (index < right)\n quickSort(array, index, right)\n}\n\n\n// Interfaces =============================================================================\n/**\n * Sorts the given array using qsort algorithm.\n */\n@ExperimentalUnsignedTypes\ninternal fun sortArray(array: UByteArray) = quickSort(array, 0, array.size - 1)\n@ExperimentalUnsignedTypes\ninternal fun sortArray(array: UShortArray) = quickSort(array, 0, array.size - 1)\n@ExperimentalUnsignedTypes\ninternal fun sortArray(array: UIntArray) = quickSort(array, 0, array.size - 1)\n@ExperimentalUnsignedTypes\ninternal fun sortArray(array: ULongArray) = quickSort(array, 0, array.size - 1)","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.contracts\n\nimport kotlin.internal.ContractsDsl\nimport kotlin.internal.InlineOnly\n\n/**\n * This marker distinguishes the experimental contract declaration API and is used to opt-in for that feature\n * when declaring contracts of user functions.\n *\n * Any usage of a declaration annotated with `@ExperimentalContracts` must be accepted either by\n * annotating that usage with the [UseExperimental] annotation, e.g. `@UseExperimental(ExperimentalContracts::class)`,\n * or by using the compiler argument `-Xuse-experimental=kotlin.contracts.ExperimentalContracts`.\n */\n@Retention(AnnotationRetention.BINARY)\n@SinceKotlin(\"1.3\")\n@Experimental\n@MustBeDocumented\npublic annotation class ExperimentalContracts\n\n/**\n * Provides a scope, where the functions of the contract DSL, such as [returns], [callsInPlace], etc.,\n * can be used to describe the contract of a function.\n *\n * This type is used as a receiver type of the lambda function passed to the [contract] function.\n *\n * @see contract\n */\n@ContractsDsl\n@ExperimentalContracts\n@SinceKotlin(\"1.3\")\npublic interface ContractBuilder {\n /**\n * Describes a situation when a function returns normally, without any exceptions thrown.\n *\n * Use [SimpleEffect.implies] function to describe a conditional effect that happens in such case.\n *\n */\n // @sample samples.contracts.returnsContract\n @ContractsDsl public fun returns(): Returns\n\n /**\n * Describes a situation when a function returns normally with the specified return [value].\n *\n * The possible values of [value] are limited to `true`, `false` or `null`.\n *\n * Use [SimpleEffect.implies] function to describe a conditional effect that happens in such case.\n *\n */\n // @sample samples.contracts.returnsTrueContract\n // @sample samples.contracts.returnsFalseContract\n // @sample samples.contracts.returnsNullContract\n @ContractsDsl public fun returns(value: Any?): Returns\n\n /**\n * Describes a situation when a function returns normally with any value that is not `null`.\n *\n * Use [SimpleEffect.implies] function to describe a conditional effect that happens in such case.\n *\n */\n // @sample samples.contracts.returnsNotNullContract\n @ContractsDsl public fun returnsNotNull(): ReturnsNotNull\n\n /**\n * Specifies that the function parameter [lambda] is invoked in place.\n *\n * This contract specifies that:\n * 1. the function [lambda] can only be invoked during the call of the owner function,\n * and it won't be invoked after that owner function call is completed;\n * 2. _(optionally)_ the function [lambda] is invoked the amount of times specified by the [kind] parameter,\n * see the [InvocationKind] enum for possible values.\n *\n * A function declaring the `callsInPlace` effect must be _inline_.\n *\n */\n /* @sample samples.contracts.callsInPlaceAtMostOnceContract\n * @sample samples.contracts.callsInPlaceAtLeastOnceContract\n * @sample samples.contracts.callsInPlaceExactlyOnceContract\n * @sample samples.contracts.callsInPlaceUnknownContract\n */\n @ContractsDsl public fun callsInPlace(lambda: Function, kind: InvocationKind = InvocationKind.UNKNOWN): CallsInPlace\n}\n\n/**\n * Specifies how many times a function invokes its function parameter in place.\n *\n * See [ContractBuilder.callsInPlace] for the details of the call-in-place function contract.\n */\n@ContractsDsl\n@ExperimentalContracts\n@SinceKotlin(\"1.3\")\npublic enum class InvocationKind {\n /**\n * A function parameter will be invoked one time or not invoked at all.\n */\n // @sample samples.contracts.callsInPlaceAtMostOnceContract\n @ContractsDsl AT_MOST_ONCE,\n\n /**\n * A function parameter will be invoked one or more times.\n *\n */\n // @sample samples.contracts.callsInPlaceAtLeastOnceContract\n @ContractsDsl AT_LEAST_ONCE,\n\n /**\n * A function parameter will be invoked exactly one time.\n *\n */\n // @sample samples.contracts.callsInPlaceExactlyOnceContract\n @ContractsDsl EXACTLY_ONCE,\n\n /**\n * A function parameter is called in place, but it's unknown how many times it can be called.\n *\n */\n // @sample samples.contracts.callsInPlaceUnknownContract\n @ContractsDsl UNKNOWN\n}\n\n/**\n * Specifies the contract of a function.\n *\n * The contract description must be at the beginning of a function and have at least one effect.\n *\n * Only the top-level functions can have a contract for now.\n *\n * @param builder the lambda where the contract of a function is described with the help of the [ContractBuilder] members.\n *\n */\n/* @sample samples.contracts.returnsContract\n* @sample samples.contracts.returnsTrueContract\n* @sample samples.contracts.returnsFalseContract\n* @sample samples.contracts.returnsNullContract\n* @sample samples.contracts.returnsNotNullContract\n* @sample samples.contracts.callsInPlaceAtMostOnceContract\n* @sample samples.contracts.callsInPlaceAtLeastOnceContract\n* @sample samples.contracts.callsInPlaceExactlyOnceContract\n* @sample samples.contracts.callsInPlaceUnknownContract\n*/\n@ContractsDsl\n@ExperimentalContracts\n@InlineOnly\n@SinceKotlin(\"1.3\")\n@Suppress(\"UNUSED_PARAMETER\")\npublic inline fun contract(builder: ContractBuilder.() -> Unit) { }","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines\n\n/**\n * Marks coroutine context element that intercepts coroutine continuations.\n * The coroutines framework uses [ContinuationInterceptor.Key] to retrieve the interceptor and\n * intercepts all coroutine continuations with [interceptContinuation] invocations.\n */\n@SinceKotlin(\"1.3\")\npublic interface ContinuationInterceptor : CoroutineContext.Element {\n /**\n * The key that defines *the* context interceptor.\n */\n companion object Key : CoroutineContext.Key\n\n /**\n * Returns continuation that wraps the original [continuation], thus intercepting all resumptions.\n * This function is invoked by coroutines framework when needed and the resulting continuations are\n * cached internally per each instance of the original [continuation].\n *\n * This function may simply return original [continuation] if it does not want to intercept this particular continuation.\n *\n * When the original [continuation] completes, coroutine framework invokes [releaseInterceptedContinuation]\n * with the resulting continuation if it was intercepted, that is if `interceptContinuation` had previously\n * returned a different continuation instance.\n */\n public fun interceptContinuation(continuation: Continuation): Continuation\n\n /**\n * Invoked for the continuation instance returned by [interceptContinuation] when the original\n * continuation completes and will not be used anymore. This function is invoked only if [interceptContinuation]\n * had returned a different continuation instance from the one it was invoked with.\n *\n * Default implementation does nothing.\n *\n * @param continuation Continuation instance returned by this interceptor's [interceptContinuation] invocation.\n */\n public fun releaseInterceptedContinuation(continuation: Continuation<*>) {\n /* do nothing by default */\n }\n\n // Performance optimization for a singleton Key\n public override operator fun get(key: CoroutineContext.Key): E? =\n @Suppress(\"UNCHECKED_CAST\")\n if (key === Key) this as E else null\n\n // Performance optimization to a singleton Key\n public override fun minusKey(key: CoroutineContext.Key<*>): CoroutineContext =\n if (key === Key) EmptyCoroutineContext else this\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines\n\n/**\n * Persistent context for the coroutine. It is an indexed set of [Element] instances.\n * An indexed set is a mix between a set and a map.\n * Every element in this set has a unique [Key].\n */\n@SinceKotlin(\"1.3\")\npublic interface CoroutineContext {\n /**\n * Returns the element with the given [key] from this context or `null`.\n */\n public operator fun get(key: Key): E?\n\n /**\n * Accumulates entries of this context starting with [initial] value and applying [operation]\n * from left to right to current accumulator value and each element of this context.\n */\n public fun fold(initial: R, operation: (R, Element) -> R): R\n\n /**\n * Returns a context containing elements from this context and elements from other [context].\n * The elements from this context with the same key as in the other one are dropped.\n */\n public operator fun plus(context: CoroutineContext): CoroutineContext =\n if (context === EmptyCoroutineContext) this else // fast path -- avoid lambda creation\n context.fold(this) { acc, element ->\n val removed = acc.minusKey(element.key)\n if (removed === EmptyCoroutineContext) element else {\n // make sure interceptor is always last in the context (and thus is fast to get when present)\n val interceptor = removed[ContinuationInterceptor]\n if (interceptor == null) CombinedContext(removed, element) else {\n val left = removed.minusKey(ContinuationInterceptor)\n if (left === EmptyCoroutineContext) CombinedContext(element, interceptor) else\n CombinedContext(CombinedContext(left, element), interceptor)\n }\n }\n }\n\n /**\n * Returns a context containing elements from this context, but without an element with\n * the specified [key].\n */\n public fun minusKey(key: Key<*>): CoroutineContext\n\n /**\n * Key for the elements of [CoroutineContext]. [E] is a type of element with this key.\n */\n public interface Key\n\n /**\n * An element of the [CoroutineContext]. An element of the coroutine context is a singleton context by itself.\n */\n public interface Element : CoroutineContext {\n /**\n * A key of this coroutine context element.\n */\n public val key: Key<*>\n\n public override operator fun get(key: Key): E? =\n @Suppress(\"UNCHECKED_CAST\")\n if (this.key == key) this as E else null\n\n public override fun fold(initial: R, operation: (R, Element) -> R): R =\n operation(initial, this)\n\n public override fun minusKey(key: Key<*>): CoroutineContext =\n if (this.key == key) EmptyCoroutineContext else this\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines\n\nimport kotlin.coroutines.CoroutineContext.*\nimport kotlin.io.Serializable\n\n/**\n * Base class for [CoroutineContext.Element] implementations.\n */\n@SinceKotlin(\"1.3\")\npublic abstract class AbstractCoroutineContextElement(public override val key: Key<*>) : Element\n\n/**\n * An empty coroutine context.\n */\n@SinceKotlin(\"1.3\")\npublic object EmptyCoroutineContext : CoroutineContext, Serializable {\n private const val serialVersionUID: Long = 0\n private fun readResolve(): Any = EmptyCoroutineContext\n\n public override fun get(key: Key): E? = null\n public override fun fold(initial: R, operation: (R, Element) -> R): R = initial\n public override fun plus(context: CoroutineContext): CoroutineContext = context\n public override fun minusKey(key: Key<*>): CoroutineContext = this\n public override fun hashCode(): Int = 0\n public override fun toString(): String = \"EmptyCoroutineContext\"\n}\n\n//--------------------- internal impl ---------------------\n\n// this class is not exposed, but is hidden inside implementations\n// this is a left-biased list, so that `plus` works naturally\n@SinceKotlin(\"1.3\")\ninternal class CombinedContext(\n private val left: CoroutineContext,\n private val element: Element\n) : CoroutineContext, Serializable {\n\n override fun get(key: Key): E? {\n var cur = this\n while (true) {\n cur.element[key]?.let { return it }\n val next = cur.left\n if (next is CombinedContext) {\n cur = next\n } else {\n return next[key]\n }\n }\n }\n\n public override fun fold(initial: R, operation: (R, Element) -> R): R =\n operation(left.fold(initial, operation), element)\n\n public override fun minusKey(key: Key<*>): CoroutineContext {\n element[key]?.let { return left }\n val newLeft = left.minusKey(key)\n return when {\n newLeft === left -> this\n newLeft === EmptyCoroutineContext -> element\n else -> CombinedContext(newLeft, element)\n }\n }\n\n private fun size(): Int {\n var cur = this\n var size = 2\n while (true) {\n cur = cur.left as? CombinedContext ?: return size\n size++\n }\n }\n\n private fun contains(element: Element): Boolean =\n get(element.key) == element\n\n private fun containsAll(context: CombinedContext): Boolean {\n var cur = context\n while (true) {\n if (!contains(cur.element)) return false\n val next = cur.left\n if (next is CombinedContext) {\n cur = next\n } else {\n return contains(next as Element)\n }\n }\n }\n\n override fun equals(other: Any?): Boolean =\n this === other || other is CombinedContext && other.size() == size() && other.containsAll(this)\n\n override fun hashCode(): Int = left.hashCode() + element.hashCode()\n\n override fun toString(): String =\n \"[\" + fold(\"\") { acc, element ->\n if (acc.isEmpty()) element.toString() else \"$acc, $element\"\n } + \"]\"\n\n private fun writeReplace(): Any {\n val n = size()\n val elements = arrayOfNulls(n)\n var index = 0\n fold(Unit) { _, element -> elements[index++] = element }\n check(index == n)\n @Suppress(\"UNCHECKED_CAST\")\n return Serialized(elements as Array)\n }\n\n private class Serialized(val elements: Array) : Serializable {\n companion object {\n private const val serialVersionUID: Long = 0L\n }\n\n private fun readResolve(): Any = elements.fold(EmptyCoroutineContext, CoroutineContext::plus)\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"IntrinsicsKt\")\n@file:kotlin.jvm.JvmMultifileClass\n\npackage kotlin.coroutines.intrinsics\n\nimport kotlin.coroutines.*\nimport kotlin.internal.InlineOnly\n\n/**\n * Obtains the current continuation instance inside suspend functions and either suspends\n * currently running coroutine or returns result immediately without suspension.\n *\n * If the [block] returns the special [COROUTINE_SUSPENDED] value, it means that suspend function did suspend the execution and will\n * not return any result immediately. In this case, the [Continuation] provided to the [block] shall be\n * resumed by invoking [Continuation.resumeWith] at some moment in the\n * future when the result becomes available to resume the computation.\n *\n * Otherwise, the return value of the [block] must have a type assignable to [T] and represents the result of this suspend function.\n * It means that the execution was not suspended and the [Continuation] provided to the [block] shall not be invoked.\n * As the result type of the [block] is declared as `Any?` and cannot be correctly type-checked,\n * its proper return type remains on the conscience of the suspend function's author.\n *\n * Invocation of [Continuation.resumeWith] resumes coroutine directly in the invoker's thread without going through the\n * [ContinuationInterceptor] that might be present in the coroutine's [CoroutineContext].\n * It is the invoker's responsibility to ensure that a proper invocation context is established.\n * [Continuation.intercepted] can be used to acquire the intercepted continuation.\n *\n * Note that it is not recommended to call either [Continuation.resume] nor [Continuation.resumeWithException] functions synchronously\n * in the same stackframe where suspension function is run. Use [suspendCoroutine] as a safer way to obtain current\n * continuation instance.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\n@Suppress(\"UNUSED_PARAMETER\", \"RedundantSuspendModifier\")\npublic suspend inline fun suspendCoroutineUninterceptedOrReturn(crossinline block: (Continuation) -> Any?): T =\n throw NotImplementedError(\"Implementation of suspendCoroutineUninterceptedOrReturn is intrinsic\")\n\n/**\n * This value is used as a return value of [suspendCoroutineUninterceptedOrReturn] `block` argument to state that\n * the execution was suspended and will not return any result immediately.\n *\n * **Note: this value should not be used in general code.** Using it outside of the context of\n * `suspendCoroutineUninterceptedOrReturn` function return value (including, but not limited to,\n * storing this value in other properties, returning it from other functions, etc)\n * can lead to unspecified behavior of the code.\n */\n// It is implemented as property with getter to avoid ProGuard problem with multifile IntrinsicsKt class\n@SinceKotlin(\"1.3\")\npublic val COROUTINE_SUSPENDED: Any get() = CoroutineSingletons.COROUTINE_SUSPENDED\n\n// Using enum here ensures two important properties:\n// 1. It makes SafeContinuation serializable with all kinds of serialization frameworks (since all of them natively support enums)\n// 2. It improves debugging experience, since you clearly see toString() value of those objects and what package they come from\n@SinceKotlin(\"1.3\")\n@PublishedApi // This class is Published API via serialized representation of SafeContinuation, don't rename/move\ninternal enum class CoroutineSingletons { COROUTINE_SUSPENDED, UNDECIDED, RESUMED }\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.experimental\n\n/** Performs a bitwise AND operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Byte.and(other: Byte): Byte = (this.toInt() and other.toInt()).toByte()\n\n/** Performs a bitwise OR operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Byte.or(other: Byte): Byte = (this.toInt() or other.toInt()).toByte()\n\n/** Performs a bitwise XOR operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Byte.xor(other: Byte): Byte = (this.toInt() xor other.toInt()).toByte()\n\n/** Inverts the bits in this value. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun Byte.inv(): Byte = (this.toInt().inv()).toByte()\n\n\n/** Performs a bitwise AND operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Short.and(other: Short): Short = (this.toInt() and other.toInt()).toShort()\n\n/** Performs a bitwise OR operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Short.or(other: Short): Short = (this.toInt() or other.toInt()).toShort()\n\n/** Performs a bitwise XOR operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Short.xor(other: Short): Short = (this.toInt() xor other.toInt()).toShort()\n\n/** Inverts the bits in this value. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun Short.inv(): Short = (this.toInt().inv()).toShort()\n\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.experimental\n\n/**\n * The experimental marker for type inference augmenting annotations.\n *\n * Any usage of a declaration annotated with `@ExperimentalTypeInference` must be accepted either by\n * annotating that usage with the [UseExperimental] annotation, e.g. `@UseExperimental(ExperimentalTypeInference::class)`,\n * or by using the compiler argument `-Xuse-experimental=kotlin.experimental.ExperimentalTypeInference`.\n */\n@Experimental(level = Experimental.Level.ERROR)\n@MustBeDocumented\n@Retention(AnnotationRetention.BINARY)\n@Target(AnnotationTarget.ANNOTATION_CLASS)\n@SinceKotlin(\"1.3\")\npublic annotation class ExperimentalTypeInference\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.internal\n\n/**\n * Specifies that the corresponding type should be ignored during type inference.\n */\n@Target(AnnotationTarget.TYPE)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class NoInfer\n\n/**\n * Specifies that the constraint built for the type during type inference should be an equality one.\n */\n@Target(AnnotationTarget.TYPE)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class Exact\n\n/**\n * Specifies that a corresponding member has the lowest priority in overload resolution.\n */\n@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class LowPriorityInOverloadResolution\n\n/**\n * Specifies that the corresponding member has the highest priority in overload resolution. Effectively this means that\n * an extension annotated with this annotation will win in overload resolution over a member with the same signature.\n */\n@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class HidesMembers\n\n/**\n * The value of this type parameter should be mentioned in input types (argument types, receiver type or expected type).\n */\n@Target(AnnotationTarget.TYPE_PARAMETER)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class OnlyInputTypes\n\n/**\n * Specifies that this function should not be called directly without inlining\n */\n@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class InlineOnly\n\n/**\n * Specifies that this declaration can have dynamic receiver type.\n */\n@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class DynamicExtension\n\n/**\n * The value of this parameter should be a property reference expression (`this::foo`), referencing a `lateinit` property,\n * the backing field of which is accessible at the point where the corresponding argument is passed.\n */\n@Target(AnnotationTarget.VALUE_PARAMETER)\n@Retention(AnnotationRetention.BINARY)\n@SinceKotlin(\"1.2\")\ninternal annotation class AccessibleLateinitPropertyLiteral\n\n/**\n * Specifies that this declaration is only completely supported since the specified version.\n *\n * The Kotlin compiler of an earlier version is going to report a diagnostic on usages of this declaration.\n * The diagnostic message can be specified with [message], or via [errorCode] (takes less space, but might not be immediately clear\n * to the user). The diagnostic severity can be specified with [level]: WARNING/ERROR mean that either a warning or an error\n * is going to be reported, HIDDEN means that the declaration is going to be removed from resolution completely.\n *\n * [versionKind] specifies which version should be compared with the [version] value, when compiling the usage of the annotated declaration.\n * Note that prior to 1.2, only [RequireKotlinVersionKind.LANGUAGE_VERSION] was supported, so the Kotlin compiler before 1.2 is going to\n * treat any [RequireKotlin] as if it requires the language version. Since 1.2, the Kotlin compiler supports\n * [RequireKotlinVersionKind.LANGUAGE_VERSION], [RequireKotlinVersionKind.COMPILER_VERSION] and [RequireKotlinVersionKind.API_VERSION].\n * If the actual value of [versionKind] is something different (e.g. a new version kind, added in future versions of Kotlin),\n * Kotlin 1.2 is going to ignore this [RequireKotlin] altogether, where as Kotlin before 1.2 is going to treat this as a requirement\n * on the language version.\n *\n * This annotation is erased at compile time; its arguments are stored in a more compact form in the Kotlin metadata.\n */\n@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.TYPEALIAS)\n@Retention(AnnotationRetention.SOURCE)\n@Repeatable\n@SinceKotlin(\"1.2\")\ninternal annotation class RequireKotlin(\n val version: String,\n val message: String = \"\",\n val level: DeprecationLevel = DeprecationLevel.ERROR,\n val versionKind: RequireKotlinVersionKind = RequireKotlinVersionKind.LANGUAGE_VERSION,\n val errorCode: Int = -1\n)\n\n/**\n * The kind of the version that is required by [RequireKotlin].\n */\n@SinceKotlin(\"1.2\")\ninternal enum class RequireKotlinVersionKind {\n LANGUAGE_VERSION,\n COMPILER_VERSION,\n API_VERSION,\n}\n\n/**\n * Specifies that this declaration is a part of special DSL, used for constructing function's contract.\n */\n@Retention(AnnotationRetention.BINARY)\n@SinceKotlin(\"1.2\")\ninternal annotation class ContractsDsl\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.properties\n\nimport kotlin.reflect.KProperty\n\n/**\n * Standard property delegates.\n */\npublic object Delegates {\n /**\n * Returns a property delegate for a read/write property with a non-`null` value that is initialized not during\n * object construction time but at a later time. Trying to read the property before the initial value has been\n * assigned results in an exception.\n *\n * @sample samples.properties.Delegates.notNullDelegate\n */\n public fun notNull(): ReadWriteProperty = NotNullVar()\n\n /**\n * Returns a property delegate for a read/write property that calls a specified callback function when changed.\n * @param initialValue the initial value of the property.\n * @param onChange the callback which is called after the change of the property is made. The value of the property\n * has already been changed when this callback is invoked.\n *\n * @sample samples.properties.Delegates.observableDelegate\n */\n public inline fun observable(initialValue: T, crossinline onChange: (property: KProperty<*>, oldValue: T, newValue: T) -> Unit):\n ReadWriteProperty =\n object : ObservableProperty(initialValue) {\n override fun afterChange(property: KProperty<*>, oldValue: T, newValue: T) = onChange(property, oldValue, newValue)\n }\n\n /**\n * Returns a property delegate for a read/write property that calls a specified callback function when changed,\n * allowing the callback to veto the modification.\n * @param initialValue the initial value of the property.\n * @param onChange the callback which is called before a change to the property value is attempted.\n * The value of the property hasn't been changed yet, when this callback is invoked.\n * If the callback returns `true` the value of the property is being set to the new value,\n * and if the callback returns `false` the new value is discarded and the property remains its old value.\n *\n * @sample samples.properties.Delegates.vetoableDelegate\n * @sample samples.properties.Delegates.throwVetoableDelegate\n */\n public inline fun vetoable(initialValue: T, crossinline onChange: (property: KProperty<*>, oldValue: T, newValue: T) -> Boolean):\n ReadWriteProperty =\n object : ObservableProperty(initialValue) {\n override fun beforeChange(property: KProperty<*>, oldValue: T, newValue: T): Boolean = onChange(property, oldValue, newValue)\n }\n\n}\n\n\nprivate class NotNullVar() : ReadWriteProperty {\n private var value: T? = null\n\n public override fun getValue(thisRef: Any?, property: KProperty<*>): T {\n return value ?: throw IllegalStateException(\"Property ${property.name} should be initialized before get.\")\n }\n\n public override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) {\n this.value = value\n }\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.properties\n\nimport kotlin.reflect.KProperty\n\n/**\n * Implements the core logic of a property delegate for a read/write property that calls callback functions when changed.\n * @param initialValue the initial value of the property.\n */\npublic abstract class ObservableProperty(initialValue: T) : ReadWriteProperty {\n private var value = initialValue\n\n /**\n * The callback which is called before a change to the property value is attempted.\n * The value of the property hasn't been changed yet, when this callback is invoked.\n * If the callback returns `true` the value of the property is being set to the new value,\n * and if the callback returns `false` the new value is discarded and the property remains its old value.\n */\n protected open fun beforeChange(property: KProperty<*>, oldValue: T, newValue: T): Boolean = true\n\n /**\n * The callback which is called after the change of the property is made. The value of the property\n * has already been changed when this callback is invoked.\n */\n protected open fun afterChange(property: KProperty<*>, oldValue: T, newValue: T): Unit {}\n\n public override fun getValue(thisRef: Any?, property: KProperty<*>): T {\n return value\n }\n\n public override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) {\n val oldValue = this.value\n if (!beforeChange(property, oldValue, value)) {\n return\n }\n this.value = value\n afterChange(property, oldValue, value)\n }\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.random\n\nimport kotlin.math.nextDown\n\n/**\n * An abstract class that is implemented by random number generator algorithms.\n *\n * The companion object [Random.Default] is the default instance of [Random].\n *\n * To get a seeded instance of random generator use [Random] function.\n *\n * @sample samples.random.Randoms.defaultRandom\n */\n@SinceKotlin(\"1.3\")\npublic abstract class Random {\n\n /**\n * Gets the next random [bitCount] number of bits.\n *\n * Generates an `Int` whose lower [bitCount] bits are filled with random values and the remaining upper bits are zero.\n *\n * @param bitCount number of bits to generate, must be in range 0..32, otherwise the behavior is unspecified.\n */\n public abstract fun nextBits(bitCount: Int): Int\n\n /**\n * Gets the next random `Int` from the random number generator.\n *\n * Generates an `Int` random value uniformly distributed between `Int.MIN_VALUE` and `Int.MAX_VALUE` (inclusive).\n */\n public open fun nextInt(): Int = nextBits(32)\n\n /**\n * Gets the next random non-negative `Int` from the random number generator less than the specified [until] bound.\n *\n * Generates an `Int` random value uniformly distributed between `0` (inclusive) and the specified [until] bound (exclusive).\n *\n * @param until must be positive.\n *\n * @throws IllegalArgumentException if [until] is negative or zero.\n */\n public open fun nextInt(until: Int): Int = nextInt(0, until)\n\n /**\n * Gets the next random `Int` from the random number generator in the specified range.\n *\n * Generates an `Int` random value uniformly distributed between the specified [from] (inclusive) and [until] (exclusive) bounds.\n *\n * @throws IllegalArgumentException if [from] is greater than or equal to [until].\n */\n public open fun nextInt(from: Int, until: Int): Int {\n checkRangeBounds(from, until)\n val n = until - from\n if (n > 0 || n == Int.MIN_VALUE) {\n val rnd = if (n and -n == n) {\n val bitCount = fastLog2(n)\n nextBits(bitCount)\n } else {\n var v: Int\n do {\n val bits = nextInt().ushr(1)\n v = bits % n\n } while (bits - v + (n - 1) < 0)\n v\n }\n return from + rnd\n } else {\n while (true) {\n val rnd = nextInt()\n if (rnd in from until until) return rnd\n }\n }\n }\n\n /**\n * Gets the next random `Long` from the random number generator.\n *\n * Generates a `Long` random value uniformly distributed between `Long.MIN_VALUE` and `Long.MAX_VALUE` (inclusive).\n */\n public open fun nextLong(): Long = nextInt().toLong().shl(32) + nextInt()\n\n /**\n * Gets the next random non-negative `Long` from the random number generator less than the specified [until] bound.\n *\n * Generates a `Long` random value uniformly distributed between `0` (inclusive) and the specified [until] bound (exclusive).\n *\n * @param until must be positive.\n *\n * @throws IllegalArgumentException if [until] is negative or zero.\n */\n public open fun nextLong(until: Long): Long = nextLong(0, until)\n\n /**\n * Gets the next random `Long` from the random number generator in the specified range.\n *\n * Generates a `Long` random value uniformly distributed between the specified [from] (inclusive) and [until] (exclusive) bounds.\n *\n * @throws IllegalArgumentException if [from] is greater than or equal to [until].\n */\n public open fun nextLong(from: Long, until: Long): Long {\n checkRangeBounds(from, until)\n val n = until - from\n if (n > 0) {\n val rnd: Long\n if (n and -n == n) {\n val nLow = n.toInt()\n val nHigh = (n ushr 32).toInt()\n rnd = when {\n nLow != 0 -> {\n val bitCount = fastLog2(nLow)\n // toUInt().toLong()\n nextBits(bitCount).toLong() and 0xFFFF_FFFF\n }\n nHigh == 1 ->\n // toUInt().toLong()\n nextInt().toLong() and 0xFFFF_FFFF\n else -> {\n val bitCount = fastLog2(nHigh)\n nextBits(bitCount).toLong().shl(32) + nextInt()\n }\n }\n } else {\n var v: Long\n do {\n val bits = nextLong().ushr(1)\n v = bits % n\n } while (bits - v + (n - 1) < 0)\n rnd = v\n }\n return from + rnd\n } else {\n while (true) {\n val rnd = nextLong()\n if (rnd in from until until) return rnd\n }\n }\n }\n\n /**\n * Gets the next random [Boolean] value.\n */\n public open fun nextBoolean(): Boolean = nextBits(1) != 0\n\n /**\n * Gets the next random [Double] value uniformly distributed between 0 (inclusive) and 1 (exclusive).\n */\n public open fun nextDouble(): Double = doubleFromParts(nextBits(26), nextBits(27))\n\n /**\n * Gets the next random non-negative `Double` from the random number generator less than the specified [until] bound.\n *\n * Generates a `Double` random value uniformly distributed between 0 (inclusive) and [until] (exclusive).\n *\n * @throws IllegalArgumentException if [until] is negative or zero.\n */\n public open fun nextDouble(until: Double): Double = nextDouble(0.0, until)\n\n /**\n * Gets the next random `Double` from the random number generator in the specified range.\n *\n * Generates a `Double` random value uniformly distributed between the specified [from] (inclusive) and [until] (exclusive) bounds.\n *\n * [from] and [until] must be finite otherwise the behavior is unspecified.\n *\n * @throws IllegalArgumentException if [from] is greater than or equal to [until].\n */\n public open fun nextDouble(from: Double, until: Double): Double {\n checkRangeBounds(from, until)\n val size = until - from\n val r = if (size.isInfinite() && from.isFinite() && until.isFinite()) {\n val r1 = nextDouble() * (until / 2 - from / 2)\n from + r1 + r1\n } else {\n from + nextDouble() * size\n }\n return if (r >= until) until.nextDown() else r\n }\n\n /**\n * Gets the next random [Float] value uniformly distributed between 0 (inclusive) and 1 (exclusive).\n */\n public open fun nextFloat(): Float = nextBits(24) / (1 shl 24).toFloat()\n\n /**\n * Fills a subrange of the specified byte [array] starting from [fromIndex] inclusive and ending [toIndex] exclusive\n * with random bytes.\n *\n * @return [array] with the subrange filled with random bytes.\n */\n public open fun nextBytes(array: ByteArray, fromIndex: Int = 0, toIndex: Int = array.size): ByteArray {\n require(fromIndex in 0..array.size && toIndex in 0..array.size) { \"fromIndex ($fromIndex) or toIndex ($toIndex) are out of range: 0..${array.size}.\" }\n require(fromIndex <= toIndex) { \"fromIndex ($fromIndex) must be not greater than toIndex ($toIndex).\" }\n\n val steps = (toIndex - fromIndex) / 4\n\n var position = fromIndex\n repeat(steps) {\n val v = nextInt()\n array[position] = v.toByte()\n array[position + 1] = v.ushr(8).toByte()\n array[position + 2] = v.ushr(16).toByte()\n array[position + 3] = v.ushr(24).toByte()\n position += 4\n }\n\n val remainder = toIndex - position\n val vr = nextBits(remainder * 8)\n for (i in 0 until remainder) {\n array[position + i] = vr.ushr(i * 8).toByte()\n }\n\n return array\n }\n\n /**\n * Fills the specified byte [array] with random bytes and returns it.\n *\n * @return [array] filled with random bytes.\n */\n public open fun nextBytes(array: ByteArray): ByteArray = nextBytes(array, 0, array.size)\n\n /**\n * Creates a byte array of the specified [size], filled with random bytes.\n */\n public open fun nextBytes(size: Int): ByteArray = nextBytes(ByteArray(size))\n\n\n /**\n * The default random number generator.\n *\n * On JVM this generator is thread-safe, its methods can be invoked from multiple threads.\n *\n * @sample samples.random.Randoms.defaultRandom\n */\n companion object Default : Random() {\n\n private val defaultRandom: Random = defaultPlatformRandom()\n\n override fun nextBits(bitCount: Int): Int = defaultRandom.nextBits(bitCount)\n override fun nextInt(): Int = defaultRandom.nextInt()\n override fun nextInt(until: Int): Int = defaultRandom.nextInt(until)\n override fun nextInt(from: Int, until: Int): Int = defaultRandom.nextInt(from, until)\n\n override fun nextLong(): Long = defaultRandom.nextLong()\n override fun nextLong(until: Long): Long = defaultRandom.nextLong(until)\n override fun nextLong(from: Long, until: Long): Long = defaultRandom.nextLong(from, until)\n\n override fun nextBoolean(): Boolean = defaultRandom.nextBoolean()\n\n override fun nextDouble(): Double = defaultRandom.nextDouble()\n override fun nextDouble(until: Double): Double = defaultRandom.nextDouble(until)\n override fun nextDouble(from: Double, until: Double): Double = defaultRandom.nextDouble(from, until)\n\n override fun nextFloat(): Float = defaultRandom.nextFloat()\n\n override fun nextBytes(array: ByteArray): ByteArray = defaultRandom.nextBytes(array)\n override fun nextBytes(size: Int): ByteArray = defaultRandom.nextBytes(size)\n override fun nextBytes(array: ByteArray, fromIndex: Int, toIndex: Int): ByteArray = defaultRandom.nextBytes(array, fromIndex, toIndex)\n\n @Deprecated(\"Use Default companion object instead\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"DEPRECATION_ERROR\")\n @kotlin.jvm.JvmField\n public val Companion: Random.Companion = Random.Companion\n }\n\n @Deprecated(\"Use Default companion object instead\", level = DeprecationLevel.HIDDEN)\n public object Companion : Random() {\n override fun nextBits(bitCount: Int): Int = Default.nextBits(bitCount)\n }\n}\n\n/**\n * Returns a repeatable random number generator seeded with the given [seed] `Int` value.\n *\n * Two generators with the same seed produce the same sequence of values within the same version of Kotlin runtime.\n *\n * *Note:* Future versions of Kotlin may change the algorithm of this seeded number generator so that it will return\n * a sequence of values different from the current one for a given seed.\n *\n * @sample samples.random.Randoms.seededRandom\n */\n@SinceKotlin(\"1.3\")\npublic fun Random(seed: Int): Random = XorWowRandom(seed, seed.shr(31))\n\n/**\n * Returns a repeatable random number generator seeded with the given [seed] `Long` value.\n *\n * Two generators with the same seed produce the same sequence of values within the same version of Kotlin runtime.\n *\n * *Note:* Future versions of Kotlin may change the algorithm of this seeded number generator so that it will return\n * a sequence of values different from the current one for a given seed.\n *\n * @sample samples.random.Randoms.seededRandom\n */\n@SinceKotlin(\"1.3\")\npublic fun Random(seed: Long): Random = XorWowRandom(seed.toInt(), seed.shr(32).toInt())\n\n\n\n/**\n * Gets the next random `Int` from the random number generator in the specified [range].\n *\n * Generates an `Int` random value uniformly distributed in the specified [range]:\n * from `range.start` inclusive to `range.endInclusive` inclusive.\n *\n * @throws IllegalArgumentException if [range] is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun Random.nextInt(range: IntRange): Int = when {\n range.isEmpty() -> throw IllegalArgumentException(\"Cannot get random in empty range: $range\")\n range.last < Int.MAX_VALUE -> nextInt(range.first, range.last + 1)\n range.first > Int.MIN_VALUE -> nextInt(range.first - 1, range.last) + 1\n else -> nextInt()\n}\n\n/**\n * Gets the next random `Long` from the random number generator in the specified [range].\n *\n * Generates a `Long` random value uniformly distributed in the specified [range]:\n * from `range.start` inclusive to `range.endInclusive` inclusive.\n *\n * @throws IllegalArgumentException if [range] is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun Random.nextLong(range: LongRange): Long = when {\n range.isEmpty() -> throw IllegalArgumentException(\"Cannot get random in empty range: $range\")\n range.last < Long.MAX_VALUE -> nextLong(range.start, range.endInclusive + 1)\n range.start > Long.MIN_VALUE -> nextLong(range.start - 1, range.endInclusive) + 1\n else -> nextLong()\n}\n\n\ninternal expect fun defaultPlatformRandom(): Random\ninternal expect fun fastLog2(value: Int): Int // 31 - Integer.numberOfLeadingZeros(value)\ninternal expect fun doubleFromParts(hi26: Int, low27: Int): Double\n\n/** Takes upper [bitCount] bits (0..32) from this number. */\ninternal fun Int.takeUpperBits(bitCount: Int): Int =\n this.ushr(32 - bitCount) and (-bitCount).shr(31)\n\ninternal fun checkRangeBounds(from: Int, until: Int) = require(until > from) { boundsErrorMessage(from, until) }\ninternal fun checkRangeBounds(from: Long, until: Long) = require(until > from) { boundsErrorMessage(from, until) }\ninternal fun checkRangeBounds(from: Double, until: Double) = require(until > from) { boundsErrorMessage(from, until) }\n\ninternal fun boundsErrorMessage(from: Any, until: Any) = \"Random range is empty: [$from, $until).\"\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.random\n\n\n/**\n * Gets the next random [UInt] from the random number generator.\n *\n * Generates a [UInt] random value uniformly distributed between [UInt.MIN_VALUE] and [UInt.MAX_VALUE] (inclusive).\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextUInt(): UInt = nextInt().toUInt()\n\n/**\n * Gets the next random [UInt] from the random number generator less than the specified [until] bound.\n *\n * Generates a [UInt] random value uniformly distributed between `0` (inclusive) and the specified [until] bound (exclusive).\n *\n * @throws IllegalArgumentException if [until] is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextUInt(until: UInt): UInt = nextUInt(0u, until)\n\n/**\n * Gets the next random [UInt] from the random number generator in the specified range.\n *\n * Generates a [UInt] random value uniformly distributed between the specified [from] (inclusive) and [until] (exclusive) bounds.\n *\n * @throws IllegalArgumentException if [from] is greater than or equal to [until].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextUInt(from: UInt, until: UInt): UInt {\n checkUIntRangeBounds(from, until)\n\n val signedFrom = from.toInt() xor Int.MIN_VALUE\n val signedUntil = until.toInt() xor Int.MIN_VALUE\n\n val signedResult = nextInt(signedFrom, signedUntil) xor Int.MIN_VALUE\n return signedResult.toUInt()\n}\n\n/**\n * Gets the next random [UInt] from the random number generator in the specified [range].\n *\n * Generates a [UInt] random value uniformly distributed in the specified [range]:\n * from `range.start` inclusive to `range.endInclusive` inclusive.\n *\n * @throws IllegalArgumentException if [range] is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextUInt(range: UIntRange): UInt = when {\n range.isEmpty() -> throw IllegalArgumentException(\"Cannot get random in empty range: $range\")\n range.last < UInt.MAX_VALUE -> nextUInt(range.first, range.last + 1u)\n range.first > UInt.MIN_VALUE -> nextUInt(range.first - 1u, range.last) + 1u\n else -> nextUInt()\n}\n\n/**\n * Gets the next random [ULong] from the random number generator.\n *\n * Generates a [ULong] random value uniformly distributed between [ULong.MIN_VALUE] and [ULong.MAX_VALUE] (inclusive).\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextULong(): ULong = nextLong().toULong()\n\n/**\n * Gets the next random [ULong] from the random number generator less than the specified [until] bound.\n *\n * Generates a [ULong] random value uniformly distributed between `0` (inclusive) and the specified [until] bound (exclusive).\n *\n * @throws IllegalArgumentException if [until] is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextULong(until: ULong): ULong = nextULong(0uL, until)\n\n/**\n * Gets the next random [ULong] from the random number generator in the specified range.\n *\n * Generates a [ULong] random value uniformly distributed between the specified [from] (inclusive) and [until] (exclusive) bounds.\n *\n * @throws IllegalArgumentException if [from] is greater than or equal to [until].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextULong(from: ULong, until: ULong): ULong {\n checkULongRangeBounds(from, until)\n\n val signedFrom = from.toLong() xor Long.MIN_VALUE\n val signedUntil = until.toLong() xor Long.MIN_VALUE\n\n val signedResult = nextLong(signedFrom, signedUntil) xor Long.MIN_VALUE\n return signedResult.toULong()\n}\n\n/**\n * Gets the next random [ULong] from the random number generator in the specified [range].\n *\n * Generates a [ULong] random value uniformly distributed in the specified [range]:\n * from `range.start` inclusive to `range.endInclusive` inclusive.\n *\n * @throws IllegalArgumentException if [range] is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextULong(range: ULongRange): ULong = when {\n range.isEmpty() -> throw IllegalArgumentException(\"Cannot get random in empty range: $range\")\n range.last < ULong.MAX_VALUE -> nextULong(range.first, range.last + 1u)\n range.first > ULong.MIN_VALUE -> nextULong(range.first - 1u, range.last) + 1u\n else -> nextULong()\n}\n\n/**\n * Fills the specified unsigned byte [array] with random bytes and returns it.\n *\n * @return [array] filled with random bytes.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextUBytes(array: UByteArray): UByteArray {\n nextBytes(array.asByteArray())\n return array\n}\n\n/**\n * Creates an unsigned byte array of the specified [size], filled with random bytes.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextUBytes(size: Int): UByteArray = nextBytes(size).asUByteArray()\n\n/**\n * Fills a subrange of the specified `UByte` [array] starting from [fromIndex] inclusive and ending [toIndex] exclusive with random UBytes.\n *\n * @return [array] with the subrange filled with random bytes.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextUBytes(array: UByteArray, fromIndex: Int = 0, toIndex: Int = array.size): UByteArray {\n nextBytes(array.asByteArray(), fromIndex, toIndex)\n return array\n}\n\n\n@ExperimentalUnsignedTypes\ninternal fun checkUIntRangeBounds(from: UInt, until: UInt) = require(until > from) { boundsErrorMessage(from, until) }\n@ExperimentalUnsignedTypes\ninternal fun checkULongRangeBounds(from: ULong, until: ULong) = require(until > from) { boundsErrorMessage(from, until) }\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.random\n\n/**\n * Random number generator, algorithm \"xorwow\" from p. 5 of Marsaglia, \"Xorshift RNGs\".\n *\n * Cycles after 2^160 * (2^32-1) repetitions.\n *\n * See http://www.jstatsoft.org/v08/i14/paper for details.\n */\ninternal class XorWowRandom\ninternal constructor(\n private var x: Int,\n private var y: Int,\n private var z: Int,\n private var w: Int,\n private var v: Int,\n private var addend: Int\n) : Random() {\n\n internal constructor(seed1: Int, seed2: Int) :\n this(seed1, seed2, 0, 0, seed1.inv(), (seed1 shl 10) xor (seed2 ushr 4))\n\n init {\n require((x or y or z or w or v) != 0) { \"Initial state must have at least one non-zero element.\" }\n\n // some trivial seeds can produce several values with zeroes in upper bits, so we discard first 64\n repeat(64) { nextInt() }\n }\n\n override fun nextInt(): Int {\n var t = x\n t = t xor (t ushr 2)\n x = y\n y = z\n z = w\n val v0 = v\n w = v0\n t = (t xor (t shl 1)) xor v0 xor (v0 shl 4)\n v = t\n addend += 362437\n return t + addend\n }\n\n override fun nextBits(bitCount: Int): Int =\n nextInt().takeUpperBits(bitCount)\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"RangesKt\")\n\npackage kotlin.ranges\n\n/**\n * Represents a range of floating point numbers.\n * Extends [ClosedRange] interface providing custom operation [lessThanOrEquals] for comparing values of range domain type.\n *\n * This interface is implemented by floating point ranges returned by [Float.rangeTo] and [Double.rangeTo] operators to\n * achieve IEEE-754 comparison order instead of total order of floating point numbers.\n */\n@SinceKotlin(\"1.1\")\npublic interface ClosedFloatingPointRange> : ClosedRange {\n override fun contains(value: T): Boolean = lessThanOrEquals(start, value) && lessThanOrEquals(value, endInclusive)\n override fun isEmpty(): Boolean = !lessThanOrEquals(start, endInclusive)\n\n /**\n * Compares two values of range domain type and returns true if first is less than or equal to second.\n */\n fun lessThanOrEquals(a: T, b: T): Boolean\n}\n\n/**\n * Represents a range of [Comparable] values.\n */\nprivate open class ComparableRange>(\n override val start: T,\n override val endInclusive: T\n) : ClosedRange {\n\n override fun equals(other: Any?): Boolean {\n return other is ComparableRange<*> && (isEmpty() && other.isEmpty() ||\n start == other.start && endInclusive == other.endInclusive)\n }\n\n override fun hashCode(): Int {\n return if (isEmpty()) -1 else 31 * start.hashCode() + endInclusive.hashCode()\n }\n\n override fun toString(): String = \"$start..$endInclusive\"\n}\n\n/**\n * A closed range of values of type `Double`.\n *\n * Numbers are compared with the ends of this range according to IEEE-754.\n */\nprivate class ClosedDoubleRange(\n start: Double,\n endInclusive: Double\n) : ClosedFloatingPointRange {\n private val _start = start\n private val _endInclusive = endInclusive\n override val start: Double get() = _start\n override val endInclusive: Double get() = _endInclusive\n\n override fun lessThanOrEquals(a: Double, b: Double): Boolean = a <= b\n\n override fun contains(value: Double): Boolean = value >= _start && value <= _endInclusive\n override fun isEmpty(): Boolean = !(_start <= _endInclusive)\n\n override fun equals(other: Any?): Boolean {\n return other is ClosedDoubleRange && (isEmpty() && other.isEmpty() ||\n _start == other._start && _endInclusive == other._endInclusive)\n }\n\n override fun hashCode(): Int {\n return if (isEmpty()) -1 else 31 * _start.hashCode() + _endInclusive.hashCode()\n }\n\n override fun toString(): String = \"$_start..$_endInclusive\"\n}\n\n\n/**\n * Creates a range from this [Comparable] value to the specified [that] value.\n *\n * This value needs to be smaller than [that] value, otherwise the returned range will be empty.\n * @sample samples.ranges.Ranges.rangeFromComparable\n */\npublic operator fun > T.rangeTo(that: T): ClosedRange = ComparableRange(this, that)\n\n/**\n * Creates a range from this [Double] value to the specified [that] value.\n *\n * Numbers are compared with the ends of this range according to IEEE-754.\n * @sample samples.ranges.Ranges.rangeFromDouble\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Double.rangeTo(that: Double): ClosedFloatingPointRange = ClosedDoubleRange(this, that)\n\n\n/**\n * Returns `true` if this iterable range contains the specified [element].\n *\n * Always returns `false` if the [element] is `null`.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline operator fun R.contains(element: T?): Boolean where T : Any, R : Iterable, R : ClosedRange =\n element != null && contains(element)\n\n\ninternal fun checkStepIsPositive(isPositive: Boolean, step: Number) {\n if (!isPositive) throw IllegalArgumentException(\"Step must be positive, was: $step.\")\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.reflect\n\n/**\n * Returns a runtime representation of the given reified type [T] as an instance of [KType].\n */\n@Suppress(\"unused\") // KT-12448\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun typeOf(): KType =\n throw UnsupportedOperationException(\"This function is implemented as an intrinsic on all supported platforms.\")\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CharsKt\")\n\npackage kotlin.text\n\n/**\n * Concatenates this Char and a String.\n *\n * @sample samples.text.Chars.plus\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Char.plus(other: String): String = this.toString() + other\n\n/**\n * Returns `true` if this character is equal to the [other] character, optionally ignoring character case.\n *\n * @param ignoreCase `true` to ignore character case when comparing characters. By default `false`.\n *\n * Two characters are considered the same ignoring case if at least one of the following is `true`:\n * - The two characters are the same (as compared by the == operator)\n * - Applying the method [toUpperCase] to each character produces the same result\n * - Applying the method [toLowerCase] to each character produces the same result\n *\n * @sample samples.text.Chars.equals\n */\npublic fun Char.equals(other: Char, ignoreCase: Boolean = false): Boolean {\n if (this == other) return true\n if (!ignoreCase) return false\n\n if (this.toUpperCase() == other.toUpperCase()) return true\n if (this.toLowerCase() == other.toLowerCase()) return true\n return false\n}\n\n/**\n * Returns `true` if this character is a Unicode surrogate code unit.\n */\npublic fun Char.isSurrogate(): Boolean = this in Char.MIN_SURROGATE..Char.MAX_SURROGATE\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n\npackage kotlin.text\n\n/**\n * Trims leading whitespace characters followed by [marginPrefix] from every line of a source string and removes\n * the first and the last lines if they are blank (notice difference blank vs empty).\n *\n * Doesn't affect a line if it doesn't contain [marginPrefix] except the first and the last blank lines.\n *\n * Doesn't preserve the original line endings.\n *\n * @param marginPrefix non-blank string, which is used as a margin delimiter. Default is `|` (pipe character).\n *\n * @sample samples.text.Strings.trimMargin\n * @see trimIndent\n * @see kotlin.text.isWhitespace\n */\npublic fun String.trimMargin(marginPrefix: String = \"|\"): String =\n replaceIndentByMargin(\"\", marginPrefix)\n\n/**\n * Detects indent by [marginPrefix] as it does [trimMargin] and replace it with [newIndent].\n *\n * @param marginPrefix non-blank string, which is used as a margin delimiter. Default is `|` (pipe character).\n */\npublic fun String.replaceIndentByMargin(newIndent: String = \"\", marginPrefix: String = \"|\"): String {\n require(marginPrefix.isNotBlank()) { \"marginPrefix must be non-blank string.\" }\n val lines = lines()\n\n return lines.reindent(length + newIndent.length * lines.size, getIndentFunction(newIndent), { line ->\n val firstNonWhitespaceIndex = line.indexOfFirst { !it.isWhitespace() }\n\n when {\n firstNonWhitespaceIndex == -1 -> null\n line.startsWith(marginPrefix, firstNonWhitespaceIndex) -> line.substring(firstNonWhitespaceIndex + marginPrefix.length)\n else -> null\n }\n })\n}\n\n/**\n * Detects a common minimal indent of all the input lines, removes it from every line and also removes the first and the last\n * lines if they are blank (notice difference blank vs empty).\n *\n * Note that blank lines do not affect the detected indent level.\n *\n * In case if there are non-blank lines with no leading whitespace characters (no indent at all) then the\n * common indent is 0, and therefore this function doesn't change the indentation.\n *\n * Doesn't preserve the original line endings.\n *\n * @sample samples.text.Strings.trimIndent\n * @see trimMargin\n * @see kotlin.text.isBlank\n */\npublic fun String.trimIndent(): String = replaceIndent(\"\")\n\n/**\n * Detects a common minimal indent like it does [trimIndent] and replaces it with the specified [newIndent].\n */\npublic fun String.replaceIndent(newIndent: String = \"\"): String {\n val lines = lines()\n\n val minCommonIndent = lines\n .filter(String::isNotBlank)\n .map(String::indentWidth)\n .min() ?: 0\n\n return lines.reindent(length + newIndent.length * lines.size, getIndentFunction(newIndent), { line -> line.drop(minCommonIndent) })\n}\n\n/**\n * Prepends [indent] to every line of the original string.\n *\n * Doesn't preserve the original line endings.\n */\npublic fun String.prependIndent(indent: String = \" \"): String =\n lineSequence()\n .map {\n when {\n it.isBlank() -> {\n when {\n it.length < indent.length -> indent\n else -> it\n }\n }\n else -> indent + it\n }\n }\n .joinToString(\"\\n\")\n\nprivate fun String.indentWidth(): Int = indexOfFirst { !it.isWhitespace() }.let { if (it == -1) length else it }\n\nprivate fun getIndentFunction(indent: String) = when {\n indent.isEmpty() -> { line: String -> line }\n else -> { line: String -> indent + line }\n}\n\nprivate inline fun List.reindent(\n resultSizeEstimate: Int,\n indentAddFunction: (String) -> String,\n indentCutFunction: (String) -> String?\n): String {\n val lastIndex = lastIndex\n return mapIndexedNotNull { index, value ->\n if ((index == 0 || index == lastIndex) && value.isBlank())\n null\n else\n indentCutFunction(value)?.let(indentAddFunction) ?: value\n }\n .joinTo(StringBuilder(resultSizeEstimate), \"\\n\")\n .toString()\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\n/**\n * Defines names for Unicode symbols used in proper Typography.\n */\npublic object Typography {\n /** The character " \u2013 quotation mark */\n public const val quote: Char = '\\u0022'\n /** The character $ \u2013 dollar sign */\n public const val dollar: Char = '\\u0024'\n /** The character & \u2013 ampersand */\n public const val amp: Char = '\\u0026'\n /** The character < \u2013 less-than sign */\n public const val less: Char = '\\u003C'\n /** The character > \u2013 greater-than sign */\n public const val greater: Char = '\\u003E'\n /** The non-breaking space character */\n public const val nbsp: Char = '\\u00A0'\n /** The character × */\n public const val times: Char = '\\u00D7'\n /** The character ¢ */\n public const val cent: Char = '\\u00A2'\n /** The character £ */\n public const val pound: Char = '\\u00A3'\n /** The character § */\n public const val section: Char = '\\u00A7'\n /** The character © */\n public const val copyright: Char = '\\u00A9'\n /** The character « */\n public const val leftGuillemete: Char = '\\u00AB'\n /** The character » */\n public const val rightGuillemete: Char = '\\u00BB'\n /** The character ® */\n public const val registered: Char = '\\u00AE'\n /** The character ° */\n public const val degree: Char = '\\u00B0'\n /** The character ± */\n public const val plusMinus: Char = '\\u00B1'\n /** The character ¶ */\n public const val paragraph: Char = '\\u00B6'\n /** The character · */\n public const val middleDot: Char = '\\u00B7'\n /** The character ½ */\n public const val half: Char = '\\u00BD'\n /** The character – */\n public const val ndash: Char = '\\u2013'\n /** The character — */\n public const val mdash: Char = '\\u2014'\n /** The character ‘ */\n public const val leftSingleQuote: Char = '\\u2018'\n /** The character ’ */\n public const val rightSingleQuote: Char = '\\u2019'\n /** The character ‚ */\n public const val lowSingleQuote: Char = '\\u201A'\n /** The character “ */\n public const val leftDoubleQuote: Char = '\\u201C'\n /** The character ” */\n public const val rightDoubleQuote: Char = '\\u201D'\n /** The character „ */\n public const val lowDoubleQuote: Char = '\\u201E'\n /** The character † */\n public const val dagger: Char = '\\u2020'\n /** The character ‡ */\n public const val doubleDagger: Char = '\\u2021'\n /** The character • */\n public const val bullet: Char = '\\u2022'\n /** The character … */\n public const val ellipsis: Char = '\\u2026'\n /** The character ′ */\n public const val prime: Char = '\\u2032'\n /** The character ″ */\n public const val doublePrime: Char = '\\u2033'\n /** The character € */\n public const val euro: Char = '\\u20AC'\n /** The character ™ */\n public const val tm: Char = '\\u2122'\n /** The character ≈ */\n public const val almostEqual: Char = '\\u2248'\n /** The character ≠ */\n public const val notEqual: Char = '\\u2260'\n /** The character ≤ */\n public const val lessOrEqual: Char = '\\u2264'\n /** The character ≥ */\n public const val greaterOrEqual: Char = '\\u2265'\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\n/**\n * Represents a collection of captured groups in a single match of a regular expression.\n *\n * This collection has size of `groupCount + 1` where `groupCount` is the count of groups in the regular expression.\n * Groups are indexed from 1 to `groupCount` and group with the index 0 corresponds to the entire match.\n *\n * An element of the collection at the particular index can be `null`,\n * if the corresponding group in the regular expression is optional and\n * there was no match captured by that group.\n */\npublic interface MatchGroupCollection : Collection {\n\n /** Returns a group with the specified [index].\n *\n * @return An instance of [MatchGroup] if the group with the specified [index] was matched or `null` otherwise.\n *\n * Groups are indexed from 1 to the count of groups in the regular expression. A group with the index 0\n * corresponds to the entire match.\n */\n public operator fun get(index: Int): MatchGroup?\n}\n\n/**\n * Extends [MatchGroupCollection] by introducing a way to get matched groups by name, when regex supports it.\n */\n@SinceKotlin(\"1.1\")\npublic interface MatchNamedGroupCollection : MatchGroupCollection {\n /**\n * Returns a named group with the specified [name].\n * @return An instance of [MatchGroup] if the group with the specified [name] was matched or `null` otherwise.\n * @throws IllegalArgumentException if there is no group with the specified [name] defined in the regex pattern.\n * @throws UnsupportedOperationException if getting named groups isn't supported on the current platform.\n */\n public operator fun get(name: String): MatchGroup?\n}\n\n/**\n * Represents the results from a single regular expression match.\n */\npublic interface MatchResult {\n /** The range of indices in the original string where match was captured. */\n public val range: IntRange\n /** The substring from the input string captured by this match. */\n public val value: String\n /**\n * A collection of groups matched by the regular expression.\n *\n * This collection has size of `groupCount + 1` where `groupCount` is the count of groups in the regular expression.\n * Groups are indexed from 1 to `groupCount` and group with the index 0 corresponds to the entire match.\n */\n public val groups: MatchGroupCollection\n /**\n * A list of matched indexed group values.\n *\n * This list has size of `groupCount + 1` where `groupCount` is the count of groups in the regular expression.\n * Groups are indexed from 1 to `groupCount` and group with the index 0 corresponds to the entire match.\n *\n * If the group in the regular expression is optional and there were no match captured by that group,\n * corresponding item in [groupValues] is an empty string.\n *\n * @sample samples.text.Regexps.matchDestructuringToGroupValues\n */\n public val groupValues: List\n\n /**\n * An instance of [MatchResult.Destructured] wrapper providing components for destructuring assignment of group values.\n *\n * component1 corresponds to the value of the first group, component2 \u2014 of the second, and so on.\n *\n * @sample samples.text.Regexps.matchDestructuringToGroupValues\n */\n public val destructured: Destructured get() = Destructured(this)\n\n /** Returns a new [MatchResult] with the results for the next match, starting at the position\n * at which the last match ended (at the character after the last matched character).\n */\n public fun next(): MatchResult?\n\n /**\n * Provides components for destructuring assignment of group values.\n *\n * [component1] corresponds to the value of the first group, [component2] \u2014 of the second, and so on.\n *\n * If the group in the regular expression is optional and there were no match captured by that group,\n * corresponding component value is an empty string.\n *\n * @sample samples.text.Regexps.matchDestructuringToGroupValues\n */\n public class Destructured internal constructor(public val match: MatchResult) {\n @kotlin.internal.InlineOnly\n public operator inline fun component1(): String = match.groupValues[1]\n @kotlin.internal.InlineOnly\n public operator inline fun component2(): String = match.groupValues[2]\n @kotlin.internal.InlineOnly\n public operator inline fun component3(): String = match.groupValues[3]\n @kotlin.internal.InlineOnly\n public operator inline fun component4(): String = match.groupValues[4]\n @kotlin.internal.InlineOnly\n public operator inline fun component5(): String = match.groupValues[5]\n @kotlin.internal.InlineOnly\n public operator inline fun component6(): String = match.groupValues[6]\n @kotlin.internal.InlineOnly\n public operator inline fun component7(): String = match.groupValues[7]\n @kotlin.internal.InlineOnly\n public operator inline fun component8(): String = match.groupValues[8]\n @kotlin.internal.InlineOnly\n public operator inline fun component9(): String = match.groupValues[9]\n @kotlin.internal.InlineOnly\n public operator inline fun component10(): String = match.groupValues[10]\n\n /**\n * Returns destructured group values as a list of strings.\n * First value in the returned list corresponds to the value of the first group, and so on.\n *\n * @sample samples.text.Regexps.matchDestructuringToGroupValues\n */\n public fun toList(): List = match.groupValues.subList(1, match.groupValues.size)\n }\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\nimport kotlin.internal.InlineOnly\n\n\n/**\n * Returns a hash code value for the object or zero if the object is `null`.\n *\n * @see Any.hashCode\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic inline fun Any?.hashCode(): Int = this?.hashCode() ?: 0\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\n/**\n * Represents a version of the Kotlin standard library.\n *\n * [major], [minor] and [patch] are integer components of a version,\n * they must be non-negative and not greater than 255 ([MAX_COMPONENT_VALUE]).\n *\n * @constructor Creates a version from all three components.\n */\n@SinceKotlin(\"1.1\")\npublic class KotlinVersion(val major: Int, val minor: Int, val patch: Int) : Comparable {\n /**\n * Creates a version from [major] and [minor] components, leaving [patch] component zero.\n */\n public constructor(major: Int, minor: Int) : this(major, minor, 0)\n\n private val version = versionOf(major, minor, patch)\n\n private fun versionOf(major: Int, minor: Int, patch: Int): Int {\n require(major in 0..MAX_COMPONENT_VALUE && minor in 0..MAX_COMPONENT_VALUE && patch in 0..MAX_COMPONENT_VALUE) {\n \"Version components are out of range: $major.$minor.$patch\"\n }\n return major.shl(16) + minor.shl(8) + patch\n }\n\n /**\n * Returns the string representation of this version\n */\n override fun toString(): String = \"$major.$minor.$patch\"\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n val otherVersion = (other as? KotlinVersion) ?: return false\n return this.version == otherVersion.version\n }\n\n override fun hashCode(): Int = version\n\n override fun compareTo(other: KotlinVersion): Int = version - other.version\n\n /**\n * Returns `true` if this version is not less than the version specified\n * with the provided [major] and [minor] components.\n */\n public fun isAtLeast(major: Int, minor: Int): Boolean = // this.version >= versionOf(major, minor, 0)\n this.major > major || (this.major == major &&\n this.minor >= minor)\n\n /**\n * Returns `true` if this version is not less than the version specified\n * with the provided [major], [minor] and [patch] components.\n */\n public fun isAtLeast(major: Int, minor: Int, patch: Int): Boolean = // this.version >= versionOf(major, minor, patch)\n this.major > major || (this.major == major &&\n (this.minor > minor || this.minor == minor &&\n this.patch >= patch))\n\n companion object {\n /**\n * Maximum value a version component can have, a constant value 255.\n */\n // NOTE: Must be placed before CURRENT because its initialization requires this field being initialized in JS\n public const val MAX_COMPONENT_VALUE = 255\n\n /**\n * Returns the current version of the Kotlin standard library.\n */\n @kotlin.jvm.JvmField\n public val CURRENT: KotlinVersion = KotlinVersion(1, 3, 40) // value is written here automatically during build\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"LateinitKt\")\n@file:Suppress(\"unused\")\n\npackage kotlin\n\nimport kotlin.internal.InlineOnly\nimport kotlin.internal.AccessibleLateinitPropertyLiteral\nimport kotlin.reflect.KProperty0\n\n/**\n * Returns `true` if this lateinit property has been assigned a value, and `false` otherwise.\n *\n * Cannot be used in an inline function, to avoid binary compatibility issues.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\ninline val @receiver:AccessibleLateinitPropertyLiteral KProperty0<*>.isInitialized: Boolean\n get() = throw NotImplementedError(\"Implementation is intrinsic\")\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"LazyKt\")\n@file:kotlin.jvm.JvmMultifileClass\n\npackage kotlin\n\nimport kotlin.reflect.KProperty\n\n/**\n * Represents a value with lazy initialization.\n *\n * To create an instance of [Lazy] use the [lazy] function.\n */\npublic interface Lazy {\n /**\n * Gets the lazily initialized value of the current Lazy instance.\n * Once the value was initialized it must not change during the rest of lifetime of this Lazy instance.\n */\n public val value: T\n\n /**\n * Returns `true` if a value for this Lazy instance has been already initialized, and `false` otherwise.\n * Once this function has returned `true` it stays `true` for the rest of lifetime of this Lazy instance.\n */\n public fun isInitialized(): Boolean\n}\n\n/**\n * Creates a new instance of the [Lazy] that is already initialized with the specified [value].\n */\npublic fun lazyOf(value: T): Lazy = InitializedLazyImpl(value)\n\n/**\n * An extension to delegate a read-only property of type [T] to an instance of [Lazy].\n *\n * This extension allows to use instances of Lazy for property delegation:\n * `val property: String by lazy { initializer }`\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Lazy.getValue(thisRef: Any?, property: KProperty<*>): T = value\n\n/**\n * Specifies how a [Lazy] instance synchronizes initialization among multiple threads.\n */\npublic enum class LazyThreadSafetyMode {\n\n /**\n * Locks are used to ensure that only a single thread can initialize the [Lazy] instance.\n */\n SYNCHRONIZED,\n\n /**\n * Initializer function can be called several times on concurrent access to uninitialized [Lazy] instance value,\n * but only the first returned value will be used as the value of [Lazy] instance.\n */\n PUBLICATION,\n\n /**\n * No locks are used to synchronize an access to the [Lazy] instance value; if the instance is accessed from multiple threads, its behavior is undefined.\n *\n * This mode should not be used unless the [Lazy] instance is guaranteed never to be initialized from more than one thread.\n */\n NONE,\n}\n\n\ninternal object UNINITIALIZED_VALUE\n\n// internal to be called from lazy in JS\ninternal class UnsafeLazyImpl(initializer: () -> T) : Lazy, Serializable {\n private var initializer: (() -> T)? = initializer\n private var _value: Any? = UNINITIALIZED_VALUE\n\n override val value: T\n get() {\n if (_value === UNINITIALIZED_VALUE) {\n _value = initializer!!()\n initializer = null\n }\n @Suppress(\"UNCHECKED_CAST\")\n return _value as T\n }\n\n override fun isInitialized(): Boolean = _value !== UNINITIALIZED_VALUE\n\n override fun toString(): String = if (isInitialized()) value.toString() else \"Lazy value not initialized yet.\"\n\n private fun writeReplace(): Any = InitializedLazyImpl(value)\n}\n\ninternal class InitializedLazyImpl(override val value: T) : Lazy, Serializable {\n\n override fun isInitialized(): Boolean = true\n\n override fun toString(): String = value.toString()\n\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\nimport kotlin.internal.RequireKotlin\nimport kotlin.internal.RequireKotlinVersionKind\n\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.2\")\n@Suppress(\"INVISIBLE_MEMBER\", \"INVISIBLE_REFERENCE\")\n@RequireKotlin(\"1.2.30\", level = DeprecationLevel.HIDDEN, versionKind = RequireKotlinVersionKind.COMPILER_VERSION)\npublic inline fun suspend(noinline block: suspend () -> R): suspend () -> R = block\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"TuplesKt\")\n\npackage kotlin\n\n\n/**\n * Represents a generic pair of two values.\n *\n * There is no meaning attached to values in this class, it can be used for any purpose.\n * Pair exhibits value semantics, i.e. two pairs are equal if both components are equal.\n *\n * An example of decomposing it into values:\n * @sample samples.misc.Tuples.pairDestructuring\n *\n * @param A type of the first value.\n * @param B type of the second value.\n * @property first First value.\n * @property second Second value.\n * @constructor Creates a new instance of Pair.\n */\npublic data class Pair(\n public val first: A,\n public val second: B\n) : Serializable {\n\n /**\n * Returns string representation of the [Pair] including its [first] and [second] values.\n */\n public override fun toString(): String = \"($first, $second)\"\n}\n\n/**\n * Creates a tuple of type [Pair] from this and [that].\n *\n * This can be useful for creating [Map] literals with less noise, for example:\n * @sample samples.collections.Maps.Instantiation.mapFromPairs\n */\npublic infix fun A.to(that: B): Pair = Pair(this, that)\n\n/**\n * Converts this pair into a list.\n * @sample samples.misc.Tuples.pairToList\n */\npublic fun Pair.toList(): List = listOf(first, second)\n\n/**\n * Represents a triad of values\n *\n * There is no meaning attached to values in this class, it can be used for any purpose.\n * Triple exhibits value semantics, i.e. two triples are equal if all three components are equal.\n * An example of decomposing it into values:\n * @sample samples.misc.Tuples.tripleDestructuring\n *\n * @param A type of the first value.\n * @param B type of the second value.\n * @param C type of the third value.\n * @property first First value.\n * @property second Second value.\n * @property third Third value.\n */\npublic data class Triple(\n public val first: A,\n public val second: B,\n public val third: C\n) : Serializable {\n\n /**\n * Returns string representation of the [Triple] including its [first], [second] and [third] values.\n */\n public override fun toString(): String = \"($first, $second, $third)\"\n}\n\n/**\n * Converts this triple into a list.\n * @sample samples.misc.Tuples.tripleToList\n */\npublic fun Triple.toList(): List = listOf(first, second, third)\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.ranges\n\n\n\nimport kotlin.internal.*\n\n/**\n * A range of values of type `UInt`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic class UIntRange(start: UInt, endInclusive: UInt) : UIntProgression(start, endInclusive, 1), ClosedRange {\n override val start: UInt get() = first\n override val endInclusive: UInt get() = last\n\n override fun contains(value: UInt): Boolean = first <= value && value <= last\n\n override fun isEmpty(): Boolean = first > last\n\n override fun equals(other: Any?): Boolean =\n other is UIntRange && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * first.toInt() + last.toInt())\n\n override fun toString(): String = \"$first..$last\"\n\n companion object {\n /** An empty range of values of type UInt. */\n public val EMPTY: UIntRange = UIntRange(UInt.MAX_VALUE, UInt.MIN_VALUE)\n }\n}\n\n/**\n * A progression of values of type `UInt`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic open class UIntProgression\ninternal constructor(\n start: UInt,\n endInclusive: UInt,\n step: Int\n) : Iterable {\n init {\n if (step == 0.toInt()) throw kotlin.IllegalArgumentException(\"Step must be non-zero.\")\n if (step == Int.MIN_VALUE) throw kotlin.IllegalArgumentException(\"Step must be greater than Int.MIN_VALUE to avoid overflow on negation.\")\n }\n\n /**\n * The first element in the progression.\n */\n public val first: UInt = start\n\n /**\n * The last element in the progression.\n */\n public val last: UInt = getProgressionLastElement(start, endInclusive, step)\n\n /**\n * The step of the progression.\n */\n public val step: Int = step\n\n override fun iterator(): UIntIterator = UIntProgressionIterator(first, last, step)\n\n /** Checks if the progression is empty. */\n public open fun isEmpty(): Boolean = if (step > 0) first > last else first < last\n\n override fun equals(other: Any?): Boolean =\n other is UIntProgression && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last && step == other.step)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (31 * first.toInt() + last.toInt()) + step.toInt())\n\n override fun toString(): String = if (step > 0) \"$first..$last step $step\" else \"$first downTo $last step ${-step}\"\n\n companion object {\n /**\n * Creates UIntProgression within the specified bounds of a closed range.\n\n * The progression starts with the [rangeStart] value and goes toward the [rangeEnd] value not excluding it, with the specified [step].\n * In order to go backwards the [step] must be negative.\n *\n * [step] must be greater than `Int.MIN_VALUE` and not equal to zero.\n */\n public fun fromClosedRange(rangeStart: UInt, rangeEnd: UInt, step: Int): UIntProgression = UIntProgression(rangeStart, rangeEnd, step)\n }\n}\n\n\n/**\n * An iterator over a progression of values of type `UInt`.\n * @property step the number by which the value is incremented on each step.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\nprivate class UIntProgressionIterator(first: UInt, last: UInt, step: Int) : UIntIterator() {\n private val finalElement = last\n private var hasNext: Boolean = if (step > 0) first <= last else first >= last\n private val step = step.toUInt() // use 2-complement math for negative steps\n private var next = if (hasNext) first else finalElement\n\n override fun hasNext(): Boolean = hasNext\n\n override fun nextUInt(): UInt {\n val value = next\n if (value == finalElement) {\n if (!hasNext) throw kotlin.NoSuchElementException()\n hasNext = false\n } else {\n next += step\n }\n return value\n }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.collections\n\n/** An iterator over a sequence of values of type `UByte`. */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic abstract class UByteIterator : Iterator {\n override final fun next() = nextUByte()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextUByte(): UByte\n}\n\n/** An iterator over a sequence of values of type `UShort`. */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic abstract class UShortIterator : Iterator {\n override final fun next() = nextUShort()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextUShort(): UShort\n}\n\n/** An iterator over a sequence of values of type `UInt`. */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic abstract class UIntIterator : Iterator {\n override final fun next() = nextUInt()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextUInt(): UInt\n}\n\n/** An iterator over a sequence of values of type `ULong`. */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic abstract class ULongIterator : Iterator {\n override final fun next() = nextULong()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextULong(): ULong\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.ranges\n\n\n\nimport kotlin.internal.*\n\n/**\n * A range of values of type `ULong`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic class ULongRange(start: ULong, endInclusive: ULong) : ULongProgression(start, endInclusive, 1), ClosedRange {\n override val start: ULong get() = first\n override val endInclusive: ULong get() = last\n\n override fun contains(value: ULong): Boolean = first <= value && value <= last\n\n override fun isEmpty(): Boolean = first > last\n\n override fun equals(other: Any?): Boolean =\n other is ULongRange && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (first xor (first shr 32)).toInt() + (last xor (last shr 32)).toInt())\n\n override fun toString(): String = \"$first..$last\"\n\n companion object {\n /** An empty range of values of type ULong. */\n public val EMPTY: ULongRange = ULongRange(ULong.MAX_VALUE, ULong.MIN_VALUE)\n }\n}\n\n/**\n * A progression of values of type `ULong`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic open class ULongProgression\ninternal constructor(\n start: ULong,\n endInclusive: ULong,\n step: Long\n) : Iterable {\n init {\n if (step == 0.toLong()) throw kotlin.IllegalArgumentException(\"Step must be non-zero.\")\n if (step == Long.MIN_VALUE) throw kotlin.IllegalArgumentException(\"Step must be greater than Long.MIN_VALUE to avoid overflow on negation.\")\n }\n\n /**\n * The first element in the progression.\n */\n public val first: ULong = start\n\n /**\n * The last element in the progression.\n */\n public val last: ULong = getProgressionLastElement(start, endInclusive, step)\n\n /**\n * The step of the progression.\n */\n public val step: Long = step\n\n override fun iterator(): ULongIterator = ULongProgressionIterator(first, last, step)\n\n /** Checks if the progression is empty. */\n public open fun isEmpty(): Boolean = if (step > 0) first > last else first < last\n\n override fun equals(other: Any?): Boolean =\n other is ULongProgression && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last && step == other.step)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (31 * (first xor (first shr 32)).toInt() + (last xor (last shr 32)).toInt()) + (step xor (step ushr 32)).toInt())\n\n override fun toString(): String = if (step > 0) \"$first..$last step $step\" else \"$first downTo $last step ${-step}\"\n\n companion object {\n /**\n * Creates ULongProgression within the specified bounds of a closed range.\n\n * The progression starts with the [rangeStart] value and goes toward the [rangeEnd] value not excluding it, with the specified [step].\n * In order to go backwards the [step] must be negative.\n *\n * [step] must be greater than `Long.MIN_VALUE` and not equal to zero.\n */\n public fun fromClosedRange(rangeStart: ULong, rangeEnd: ULong, step: Long): ULongProgression = ULongProgression(rangeStart, rangeEnd, step)\n }\n}\n\n\n/**\n * An iterator over a progression of values of type `ULong`.\n * @property step the number by which the value is incremented on each step.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\nprivate class ULongProgressionIterator(first: ULong, last: ULong, step: Long) : ULongIterator() {\n private val finalElement = last\n private var hasNext: Boolean = if (step > 0) first <= last else first >= last\n private val step = step.toULong() // use 2-complement math for negative steps\n private var next = if (hasNext) first else finalElement\n\n override fun hasNext(): Boolean = hasNext\n\n override fun nextULong(): ULong {\n val value = next\n if (value == finalElement) {\n if (!hasNext) throw kotlin.NoSuchElementException()\n hasNext = false\n } else {\n next += step\n }\n return value\n }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.math\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun min(a: UInt, b: UInt): UInt {\n return minOf(a, b)\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun min(a: ULong, b: ULong): ULong {\n return minOf(a, b)\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun max(a: UInt, b: UInt): UInt {\n return maxOf(a, b)\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun max(a: ULong, b: ULong): ULong {\n return maxOf(a, b)\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:UseExperimental(ExperimentalUnsignedTypes::class)\npackage kotlin.internal\n\n// (a - b) mod c\nprivate fun differenceModulo(a: UInt, b: UInt, c: UInt): UInt {\n val ac = a % c\n val bc = b % c\n return if (ac >= bc) ac - bc else ac - bc + c\n}\n\nprivate fun differenceModulo(a: ULong, b: ULong, c: ULong): ULong {\n val ac = a % c\n val bc = b % c\n return if (ac >= bc) ac - bc else ac - bc + c\n}\n\n/**\n * Calculates the final element of a bounded arithmetic progression, i.e. the last element of the progression which is in the range\n * from [start] to [end] in case of a positive [step], or from [end] to [start] in case of a negative\n * [step].\n *\n * No validation on passed parameters is performed. The given parameters should satisfy the condition:\n *\n * - either `step > 0` and `start <= end`,\n * - or `step < 0` and `start >= end`.\n *\n * @param start first element of the progression\n * @param end ending bound for the progression\n * @param step increment, or difference of successive elements in the progression\n * @return the final element of the progression\n * @suppress\n */\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun getProgressionLastElement(start: UInt, end: UInt, step: Int): UInt = when {\n step > 0 -> if (start >= end) end else end - differenceModulo(end, start, step.toUInt())\n step < 0 -> if (start <= end) end else end + differenceModulo(start, end, (-step).toUInt())\n else -> throw kotlin.IllegalArgumentException(\"Step is zero.\")\n}\n\n/**\n * Calculates the final element of a bounded arithmetic progression, i.e. the last element of the progression which is in the range\n * from [start] to [end] in case of a positive [step], or from [end] to [start] in case of a negative\n * [step].\n *\n * No validation on passed parameters is performed. The given parameters should satisfy the condition:\n *\n * - either `step > 0` and `start <= end`,\n * - or `step < 0` and `start >= end`.\n *\n * @param start first element of the progression\n * @param end ending bound for the progression\n * @param step increment, or difference of successive elements in the progression\n * @return the final element of the progression\n * @suppress\n */\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun getProgressionLastElement(start: ULong, end: ULong, step: Long): ULong = when {\n step > 0 -> if (start >= end) end else end - differenceModulo(end, start, step.toULong())\n step < 0 -> if (start <= end) end else end + differenceModulo(start, end, (-step).toULong())\n else -> throw kotlin.IllegalArgumentException(\"Step is zero.\")\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"UStringsKt\") // string representation of unsigned numbers\n\npackage kotlin.text\n\n/**\n * Returns a string representation of this [Byte] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n//@kotlin.internal.InlineOnly\npublic /*inline*/ fun UByte.toString(radix: Int): String = this.toInt().toString(radix)\n\n/**\n * Returns a string representation of this [Short] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n//@kotlin.internal.InlineOnly\npublic /*inline*/ fun UShort.toString(radix: Int): String = this.toInt().toString(radix)\n\n\n/**\n * Returns a string representation of this [Int] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n//@kotlin.internal.InlineOnly\npublic /*inline*/ fun UInt.toString(radix: Int): String = this.toLong().toString(radix)\n\n/**\n * Returns a string representation of this [Long] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULong.toString(radix: Int): String = ulongToString(this.toLong(), checkRadix(radix))\n\n\n/**\n * Parses the string as a signed [UByte] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUByte(): UByte = toUByteOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a signed [UByte] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUByte(radix: Int): UByte = toUByteOrNull(radix) ?: numberFormatError(this)\n\n\n/**\n * Parses the string as a [UShort] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUShort(): UShort = toUShortOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a [UShort] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUShort(radix: Int): UShort = toUShortOrNull(radix) ?: numberFormatError(this)\n\n/**\n * Parses the string as an [UInt] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUInt(): UInt = toUIntOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as an [UInt] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUInt(radix: Int): UInt = toUIntOrNull(radix) ?: numberFormatError(this)\n\n/**\n * Parses the string as a [ULong] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toULong(): ULong = toULongOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a [ULong] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toULong(radix: Int): ULong = toULongOrNull(radix) ?: numberFormatError(this)\n\n\n\n\n\n/**\n * Parses the string as an [UByte] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUByteOrNull(): UByte? = toUByteOrNull(radix = 10)\n\n/**\n * Parses the string as an [UByte] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUByteOrNull(radix: Int): UByte? {\n val int = this.toUIntOrNull(radix) ?: return null\n if (int > UByte.MAX_VALUE) return null\n return int.toUByte()\n}\n\n/**\n * Parses the string as an [UShort] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUShortOrNull(): UShort? = toUShortOrNull(radix = 10)\n\n/**\n * Parses the string as an [UShort] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUShortOrNull(radix: Int): UShort? {\n val int = this.toUIntOrNull(radix) ?: return null\n if (int > UShort.MAX_VALUE) return null\n return int.toUShort()\n}\n\n/**\n * Parses the string as an [UInt] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUIntOrNull(): UInt? = toUIntOrNull(radix = 10)\n\n/**\n * Parses the string as an [UInt] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUIntOrNull(radix: Int): UInt? {\n checkRadix(radix)\n\n val length = this.length\n if (length == 0) return null\n\n val limit: UInt = UInt.MAX_VALUE\n val start: Int\n\n val firstChar = this[0]\n if (firstChar < '0') {\n if (length == 1 || firstChar != '+') return null\n start = 1\n } else {\n start = 0\n }\n\n val uradix = radix.toUInt()\n val limitBeforeMul = limit / uradix\n var result = 0u\n for (i in start until length) {\n val digit = digitOf(this[i], radix)\n\n if (digit < 0) return null\n if (result > limitBeforeMul) return null\n\n result *= uradix\n\n val beforeAdding = result\n result += digit.toUInt()\n if (result < beforeAdding) return null // overflow has happened\n }\n\n return result\n}\n\n/**\n * Parses the string as an [ULong] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toULongOrNull(): ULong? = toULongOrNull(radix = 10)\n\n/**\n * Parses the string as an [ULong] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toULongOrNull(radix: Int): ULong? {\n checkRadix(radix)\n\n val length = this.length\n if (length == 0) return null\n\n val limit: ULong = ULong.MAX_VALUE\n val start: Int\n\n val firstChar = this[0]\n if (firstChar < '0') {\n if (length == 1 || firstChar != '+') return null\n start = 1\n } else {\n start = 0\n }\n\n\n val uradix = radix.toUInt()\n val limitBeforeMul = limit / uradix\n var result = 0uL\n for (i in start until length) {\n val digit = digitOf(this[i], radix)\n\n if (digit < 0) return null\n if (result > limitBeforeMul) return null\n\n result *= uradix\n\n val beforeAdding = result\n result += digit.toUInt()\n if (result < beforeAdding) return null // overflow has happened\n }\n\n return result\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:Suppress(\"INVISIBLE_REFERENCE\", \"INVISIBLE_MEMBER\")\npackage kotlin\n\nimport kotlin.annotation.AnnotationTarget.*\nimport kotlin.internal.RequireKotlin\nimport kotlin.internal.RequireKotlinVersionKind\n\n/**\n * Marks the API that is dependent on the experimental unsigned types, including those types themselves.\n *\n * Usages of such API will be reported as warnings unless an explicit opt-in with\n * the [UseExperimental] annotation, e.g. `@UseExperimental(ExperimentalUnsignedTypes::class)`,\n * or with the `-Xuse-experimental=kotlin.ExperimentalUnsignedTypes` compiler option is given.\n *\n * It's recommended to propagate the experimental status to the API that depends on unsigned types by annotating it with this annotation.\n */\n@Experimental(level = Experimental.Level.WARNING)\n@MustBeDocumented\n@Target(CLASS, ANNOTATION_CLASS, PROPERTY, FIELD, LOCAL_VARIABLE, VALUE_PARAMETER, CONSTRUCTOR, FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, TYPEALIAS)\n@Retention(AnnotationRetention.BINARY)\n@RequireKotlin(\"1.2.50\", versionKind = RequireKotlinVersionKind.COMPILER_VERSION)\npublic annotation class ExperimentalUnsignedTypes\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"MathKt\")\n\n\npackage kotlin.math\n\n\n\n// constants, can't use them from nativeMath as they are not constants there\n\n/** Ratio of the circumference of a circle to its diameter, approximately 3.14159. */\n@SinceKotlin(\"1.2\")\npublic const val PI: Double = 3.141592653589793\n/** Base of the natural logarithms, approximately 2.71828. */\n@SinceKotlin(\"1.2\")\npublic const val E: Double = 2.718281828459045\n\n// region ================ Double Math ========================================\n\n/** Computes the sine of the angle [x] given in radians.\n *\n * Special cases:\n * - `sin(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun sin(x: Double): Double\n\n/** Computes the cosine of the angle [x] given in radians.\n *\n * Special cases:\n * - `cos(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun cos(x: Double): Double\n\n/** Computes the tangent of the angle [x] given in radians.\n *\n * Special cases:\n * - `tan(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun tan(x: Double): Double\n\n/**\n * Computes the arc sine of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `asin(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun asin(x: Double): Double\n\n/**\n * Computes the arc cosine of the value [x];\n * the returned value is an angle in the range from `0.0` to `PI` radians.\n *\n * Special cases:\n * - `acos(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun acos(x: Double): Double\n\n/**\n * Computes the arc tangent of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `atan(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun atan(x: Double): Double\n\n/**\n * Returns the angle `theta` of the polar coordinates `(r, theta)` that correspond\n * to the rectangular coordinates `(x, y)` by computing the arc tangent of the value [y] / [x];\n * the returned value is an angle in the range from `-PI` to `PI` radians.\n *\n * Special cases:\n * - `atan2(0.0, 0.0)` is `0.0`\n * - `atan2(0.0, x)` is `0.0` for `x > 0` and `PI` for `x < 0`\n * - `atan2(-0.0, x)` is `-0.0` for 'x > 0` and `-PI` for `x < 0`\n * - `atan2(y, +Inf)` is `0.0` for `0 < y < +Inf` and `-0.0` for '-Inf < y < 0`\n * - `atan2(y, -Inf)` is `PI` for `0 < y < +Inf` and `-PI` for `-Inf < y < 0`\n * - `atan2(y, 0.0)` is `PI/2` for `y > 0` and `-PI/2` for `y < 0`\n * - `atan2(+Inf, x)` is `PI/2` for finite `x`y\n * - `atan2(-Inf, x)` is `-PI/2` for finite `x`\n * - `atan2(NaN, x)` and `atan2(y, NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun atan2(y: Double, x: Double): Double\n\n/**\n * Computes the hyperbolic sine of the value [x].\n *\n * Special cases:\n * - `sinh(NaN)` is `NaN`\n * - `sinh(+Inf)` is `+Inf`\n * - `sinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun sinh(x: Double): Double\n\n/**\n * Computes the hyperbolic cosine of the value [x].\n *\n * Special cases:\n * - `cosh(NaN)` is `NaN`\n * - `cosh(+Inf|-Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun cosh(x: Double): Double\n\n/**\n * Computes the hyperbolic tangent of the value [x].\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(+Inf)` is `1.0`\n * - `tanh(-Inf)` is `-1.0`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun tanh(x: Double): Double\n\n/**\n * Computes the inverse hyperbolic sine of the value [x].\n *\n * The returned value is `y` such that `sinh(y) == x`.\n *\n * Special cases:\n * - `asinh(NaN)` is `NaN`\n * - `asinh(+Inf)` is `+Inf`\n * - `asinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun asinh(x: Double): Double\n\n/**\n * Computes the inverse hyperbolic cosine of the value [x].\n *\n * The returned value is positive `y` such that `cosh(y) == x`.\n *\n * Special cases:\n * - `acosh(NaN)` is `NaN`\n * - `acosh(x)` is `NaN` when `x < 1`\n * - `acosh(+Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun acosh(x: Double): Double\n\n/**\n * Computes the inverse hyperbolic tangent of the value [x].\n *\n * The returned value is `y` such that `tanh(y) == x`.\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(x)` is `NaN` when `x > 1` or `x < -1`\n * - `tanh(1.0)` is `+Inf`\n * - `tanh(-1.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun atanh(x: Double): Double\n\n/**\n * Computes `sqrt(x^2 + y^2)` without intermediate overflow or underflow.\n *\n * Special cases:\n * - returns `+Inf` if any of arguments is infinite\n * - returns `NaN` if any of arguments is `NaN` and the other is not infinite\n */\n@SinceKotlin(\"1.2\")\npublic expect fun hypot(x: Double, y: Double): Double\n\n/**\n * Computes the positive square root of the value [x].\n *\n * Special cases:\n * - `sqrt(x)` is `NaN` when `x < 0` or `x` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun sqrt(x: Double): Double\n\n/**\n * Computes Euler's number `e` raised to the power of the value [x].\n *\n * Special cases:\n * - `exp(NaN)` is `NaN`\n * - `exp(+Inf)` is `+Inf`\n * - `exp(-Inf)` is `0.0`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun exp(x: Double): Double\n\n/**\n * Computes `exp(x) - 1`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `expm1(NaN)` is `NaN`\n * - `expm1(+Inf)` is `+Inf`\n * - `expm1(-Inf)` is `-1.0`\n *\n * @see [exp] function.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun expm1(x: Double): Double\n\n/**\n * Computes the logarithm of the value [x] to the given [base].\n *\n * Special cases:\n * - `log(x, b)` is `NaN` if either `x` or `b` are `NaN`\n * - `log(x, b)` is `NaN` when `x < 0` or `b <= 0` or `b == 1.0`\n * - `log(+Inf, +Inf)` is `NaN`\n * - `log(+Inf, b)` is `+Inf` for `b > 1` and `-Inf` for `b < 1`\n * - `log(0.0, b)` is `-Inf` for `b > 1` and `+Inf` for `b > 1`\n *\n * See also logarithm functions for common fixed bases: [ln], [log10] and [log2].\n */\n@SinceKotlin(\"1.2\")\npublic expect fun log(x: Double, base: Double): Double\n\n/**\n * Computes the natural logarithm (base `E`) of the value [x].\n *\n * Special cases:\n * - `ln(NaN)` is `NaN`\n * - `ln(x)` is `NaN` when `x < 0.0`\n * - `ln(+Inf)` is `+Inf`\n * - `ln(0.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun ln(x: Double): Double\n\n/**\n * Computes the common logarithm (base 10) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun log10(x: Double): Double\n\n/**\n * Computes the binary logarithm (base 2) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun log2(x: Double): Double\n\n/**\n * Computes `ln(x + 1)`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `ln1p(NaN)` is `NaN`\n * - `ln1p(x)` is `NaN` where `x < -1.0`\n * - `ln1p(-1.0)` is `-Inf`\n * - `ln1p(+Inf)` is `+Inf`\n *\n * @see [ln] function\n * @see [expm1] function\n */\n@SinceKotlin(\"1.2\")\npublic expect fun ln1p(x: Double): Double\n\n/**\n * Rounds the given value [x] to an integer towards positive infinity.\n\n * @return the smallest double value that is greater than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `ceil(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun ceil(x: Double): Double\n\n/**\n * Rounds the given value [x] to an integer towards negative infinity.\n\n * @return the largest double value that is smaller than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `floor(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun floor(x: Double): Double\n\n/**\n * Rounds the given value [x] to an integer towards zero.\n *\n * @return the value [x] having its fractional part truncated.\n *\n * Special cases:\n * - `truncate(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun truncate(x: Double): Double\n\n/**\n * Rounds the given value [x] towards the closest integer with ties rounded towards even integer.\n *\n * Special cases:\n * - `round(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun round(x: Double): Double\n\n/**\n * Returns the absolute value of the given value [x].\n *\n * Special cases:\n * - `abs(NaN)` is `NaN`\n *\n * @see absoluteValue extension property for [Double]\n */\n@SinceKotlin(\"1.2\")\npublic expect fun abs(x: Double): Double\n\n/**\n * Returns the sign of the given value [x]:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `sign(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun sign(x: Double): Double\n\n\n/**\n * Returns the smaller of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun min(a: Double, b: Double): Double\n\n/**\n * Returns the greater of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun max(a: Double, b: Double): Double\n\n// extensions\n\n/**\n * Raises this value to the power [x].\n *\n * Special cases:\n * - `b.pow(0.0)` is `1.0`\n * - `b.pow(1.0) == b`\n * - `b.pow(NaN)` is `NaN`\n * - `NaN.pow(x)` is `NaN` for `x != 0.0`\n * - `b.pow(Inf)` is `NaN` for `abs(b) == 1.0`\n * - `b.pow(x)` is `NaN` for `b < 0` and `x` is finite and not an integer\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.pow(x: Double): Double\n\n/**\n * Raises this value to the integer power [n].\n *\n * See the other overload of [pow] for details.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.pow(n: Int): Double\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `NaN.absoluteValue` is `NaN`\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\npublic expect val Double.absoluteValue: Double\n\n/**\n * Returns the sign of this value:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `NaN.sign` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect val Double.sign: Double\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n *\n * If [sign] is `NaN` the sign of the result is undefined.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.withSign(sign: Double): Double\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.withSign(sign: Int): Double\n\n/**\n * Returns the ulp (unit in the last place) of this value.\n *\n * An ulp is a positive distance between this value and the next nearest [Double] value larger in magnitude.\n *\n * Special Cases:\n * - `NaN.ulp` is `NaN`\n * - `x.ulp` is `+Inf` when `x` is `+Inf` or `-Inf`\n * - `0.0.ulp` is `Double.MIN_VALUE`\n */\n@SinceKotlin(\"1.2\")\npublic expect val Double.ulp: Double\n\n/**\n * Returns the [Double] value nearest to this value in direction of positive infinity.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.nextUp(): Double\n\n/**\n * Returns the [Double] value nearest to this value in direction of negative infinity.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.nextDown(): Double\n\n/**\n * Returns the [Double] value nearest to this value in direction from this value towards the value [to].\n *\n * Special cases:\n * - `x.nextTowards(y)` is `NaN` if either `x` or `y` are `NaN`\n * - `x.nextTowards(x) == x`\n *\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.nextTowards(to: Double): Double\n\n/**\n * Rounds this [Double] value to the nearest integer and converts the result to [Int].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToInt() == Int.MAX_VALUE` when `x > Int.MAX_VALUE`\n * - `x.roundToInt() == Int.MIN_VALUE` when `x < Int.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.roundToInt(): Int\n\n/**\n * Rounds this [Double] value to the nearest integer and converts the result to [Long].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToLong() == Long.MAX_VALUE` when `x > Long.MAX_VALUE`\n * - `x.roundToLong() == Long.MIN_VALUE` when `x < Long.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.roundToLong(): Long\n\n// endregion\n\n\n\n// region ================ Float Math ========================================\n\n/** Computes the sine of the angle [x] given in radians.\n *\n * Special cases:\n * - `sin(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun sin(x: Float): Float\n\n/** Computes the cosine of the angle [x] given in radians.\n *\n * Special cases:\n * - `cos(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun cos(x: Float): Float\n\n/** Computes the tangent of the angle [x] given in radians.\n *\n * Special cases:\n * - `tan(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun tan(x: Float): Float\n\n/**\n * Computes the arc sine of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `asin(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun asin(x: Float): Float\n\n/**\n * Computes the arc cosine of the value [x];\n * the returned value is an angle in the range from `0.0` to `PI` radians.\n *\n * Special cases:\n * - `acos(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun acos(x: Float): Float\n\n/**\n * Computes the arc tangent of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `atan(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun atan(x: Float): Float\n\n/**\n * Returns the angle `theta` of the polar coordinates `(r, theta)` that correspond\n * to the rectangular coordinates `(x, y)` by computing the arc tangent of the value [y] / [x];\n * the returned value is an angle in the range from `-PI` to `PI` radians.\n *\n * Special cases:\n * - `atan2(0.0, 0.0)` is `0.0`\n * - `atan2(0.0, x)` is `0.0` for `x > 0` and `PI` for `x < 0`\n * - `atan2(-0.0, x)` is `-0.0` for 'x > 0` and `-PI` for `x < 0`\n * - `atan2(y, +Inf)` is `0.0` for `0 < y < +Inf` and `-0.0` for '-Inf < y < 0`\n * - `atan2(y, -Inf)` is `PI` for `0 < y < +Inf` and `-PI` for `-Inf < y < 0`\n * - `atan2(y, 0.0)` is `PI/2` for `y > 0` and `-PI/2` for `y < 0`\n * - `atan2(+Inf, x)` is `PI/2` for finite `x`y\n * - `atan2(-Inf, x)` is `-PI/2` for finite `x`\n * - `atan2(NaN, x)` and `atan2(y, NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun atan2(y: Float, x: Float): Float\n\n/**\n * Computes the hyperbolic sine of the value [x].\n *\n * Special cases:\n * - `sinh(NaN)` is `NaN`\n * - `sinh(+Inf)` is `+Inf`\n * - `sinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun sinh(x: Float): Float\n\n/**\n * Computes the hyperbolic cosine of the value [x].\n *\n * Special cases:\n * - `cosh(NaN)` is `NaN`\n * - `cosh(+Inf|-Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun cosh(x: Float): Float\n\n/**\n * Computes the hyperbolic tangent of the value [x].\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(+Inf)` is `1.0`\n * - `tanh(-Inf)` is `-1.0`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun tanh(x: Float): Float\n\n/**\n * Computes the inverse hyperbolic sine of the value [x].\n *\n * The returned value is `y` such that `sinh(y) == x`.\n *\n * Special cases:\n * - `asinh(NaN)` is `NaN`\n * - `asinh(+Inf)` is `+Inf`\n * - `asinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun asinh(x: Float): Float\n\n/**\n * Computes the inverse hyperbolic cosine of the value [x].\n *\n * The returned value is positive `y` such that `cosh(y) == x`.\n *\n * Special cases:\n * - `acosh(NaN)` is `NaN`\n * - `acosh(x)` is `NaN` when `x < 1`\n * - `acosh(+Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun acosh(x: Float): Float\n\n/**\n * Computes the inverse hyperbolic tangent of the value [x].\n *\n * The returned value is `y` such that `tanh(y) == x`.\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(x)` is `NaN` when `x > 1` or `x < -1`\n * - `tanh(1.0)` is `+Inf`\n * - `tanh(-1.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun atanh(x: Float): Float\n\n/**\n * Computes `sqrt(x^2 + y^2)` without intermediate overflow or underflow.\n *\n * Special cases:\n * - returns `+Inf` if any of arguments is infinite\n * - returns `NaN` if any of arguments is `NaN` and the other is not infinite\n */\n@SinceKotlin(\"1.2\")\npublic expect fun hypot(x: Float, y: Float): Float\n\n/**\n * Computes the positive square root of the value [x].\n *\n * Special cases:\n * - `sqrt(x)` is `NaN` when `x < 0` or `x` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun sqrt(x: Float): Float\n\n/**\n * Computes Euler's number `e` raised to the power of the value [x].\n *\n * Special cases:\n * - `exp(NaN)` is `NaN`\n * - `exp(+Inf)` is `+Inf`\n * - `exp(-Inf)` is `0.0`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun exp(x: Float): Float\n\n/**\n * Computes `exp(x) - 1`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `expm1(NaN)` is `NaN`\n * - `expm1(+Inf)` is `+Inf`\n * - `expm1(-Inf)` is `-1.0`\n *\n * @see [exp] function.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun expm1(x: Float): Float\n\n/**\n * Computes the logarithm of the value [x] to the given [base].\n *\n * Special cases:\n * - `log(x, b)` is `NaN` if either `x` or `b` are `NaN`\n * - `log(x, b)` is `NaN` when `x < 0` or `b <= 0` or `b == 1.0`\n * - `log(+Inf, +Inf)` is `NaN`\n * - `log(+Inf, b)` is `+Inf` for `b > 1` and `-Inf` for `b < 1`\n * - `log(0.0, b)` is `-Inf` for `b > 1` and `+Inf` for `b > 1`\n *\n * See also logarithm functions for common fixed bases: [ln], [log10] and [log2].\n */\n@SinceKotlin(\"1.2\")\npublic expect fun log(x: Float, base: Float): Float\n\n/**\n * Computes the natural logarithm (base `E`) of the value [x].\n *\n * Special cases:\n * - `ln(NaN)` is `NaN`\n * - `ln(x)` is `NaN` when `x < 0.0`\n * - `ln(+Inf)` is `+Inf`\n * - `ln(0.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun ln(x: Float): Float\n\n/**\n * Computes the common logarithm (base 10) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun log10(x: Float): Float\n\n/**\n * Computes the binary logarithm (base 2) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun log2(x: Float): Float\n\n/**\n * Computes `ln(a + 1)`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `ln1p(NaN)` is `NaN`\n * - `ln1p(x)` is `NaN` where `x < -1.0`\n * - `ln1p(-1.0)` is `-Inf`\n * - `ln1p(+Inf)` is `+Inf`\n *\n * @see [ln] function\n * @see [expm1] function\n */\n@SinceKotlin(\"1.2\")\npublic expect fun ln1p(x: Float): Float\n\n/**\n * Rounds the given value [x] to an integer towards positive infinity.\n\n * @return the smallest Float value that is greater than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `ceil(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun ceil(x: Float): Float\n\n/**\n * Rounds the given value [x] to an integer towards negative infinity.\n\n * @return the largest Float value that is smaller than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `floor(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun floor(x: Float): Float\n\n/**\n * Rounds the given value [x] to an integer towards zero.\n *\n * @return the value [x] having its fractional part truncated.\n *\n * Special cases:\n * - `truncate(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun truncate(x: Float): Float\n\n/**\n * Rounds the given value [x] towards the closest integer with ties rounded towards even integer.\n *\n * Special cases:\n * - `round(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun round(x: Float): Float\n\n\n/**\n * Returns the absolute value of the given value [x].\n *\n * Special cases:\n * - `abs(NaN)` is `NaN`\n *\n * @see absoluteValue extension property for [Float]\n */\n@SinceKotlin(\"1.2\")\npublic expect fun abs(x: Float): Float\n\n/**\n * Returns the sign of the given value [x]:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `sign(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun sign(x: Float): Float\n\n\n\n/**\n * Returns the smaller of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun min(a: Float, b: Float): Float\n\n/**\n * Returns the greater of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun max(a: Float, b: Float): Float\n\n// extensions\n\n\n/**\n * Raises this value to the power [x].\n *\n * Special cases:\n * - `b.pow(0.0)` is `1.0`\n * - `b.pow(1.0) == b`\n * - `b.pow(NaN)` is `NaN`\n * - `NaN.pow(x)` is `NaN` for `x != 0.0`\n * - `b.pow(Inf)` is `NaN` for `abs(b) == 1.0`\n * - `b.pow(x)` is `NaN` for `b < 0` and `x` is finite and not an integer\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Float.pow(x: Float): Float\n\n/**\n * Raises this value to the integer power [n].\n *\n * See the other overload of [pow] for details.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Float.pow(n: Int): Float\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `NaN.absoluteValue` is `NaN`\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\npublic expect val Float.absoluteValue: Float\n\n/**\n * Returns the sign of this value:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `NaN.sign` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect val Float.sign: Float\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n *\n * If [sign] is `NaN` the sign of the result is undefined.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Float.withSign(sign: Float): Float\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Float.withSign(sign: Int): Float\n\n\n/**\n * Rounds this [Float] value to the nearest integer and converts the result to [Int].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToInt() == Int.MAX_VALUE` when `x > Int.MAX_VALUE`\n * - `x.roundToInt() == Int.MIN_VALUE` when `x < Int.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Float.roundToInt(): Int\n\n/**\n * Rounds this [Float] value to the nearest integer and converts the result to [Long].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToLong() == Long.MAX_VALUE` when `x > Long.MAX_VALUE`\n * - `x.roundToLong() == Long.MIN_VALUE` when `x < Long.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Float.roundToLong(): Long\n\n\n// endregion\n\n// region ================ Integer Math ========================================\n\n\n/**\n * Returns the absolute value of the given value [n].\n *\n * Special cases:\n * - `abs(Int.MIN_VALUE)` is `Int.MIN_VALUE` due to an overflow\n *\n * @see absoluteValue extension property for [Int]\n */\n@SinceKotlin(\"1.2\")\npublic expect fun abs(n: Int): Int\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun min(a: Int, b: Int): Int\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun max(a: Int, b: Int): Int\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `Int.MIN_VALUE.absoluteValue` is `Int.MIN_VALUE` due to an overflow\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\npublic expect val Int.absoluteValue: Int\n\n/**\n * Returns the sign of this value:\n * - `-1` if the value is negative,\n * - `0` if the value is zero,\n * - `1` if the value is positive\n */\n@SinceKotlin(\"1.2\")\npublic expect val Int.sign: Int\n\n\n\n/**\n * Returns the absolute value of the given value [n].\n *\n * Special cases:\n * - `abs(Long.MIN_VALUE)` is `Long.MIN_VALUE` due to an overflow\n *\n * @see absoluteValue extension property for [Long]\n */\n@SinceKotlin(\"1.2\")\npublic expect fun abs(n: Long): Long\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun min(a: Long, b: Long): Long\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun max(a: Long, b: Long): Long\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `Long.MIN_VALUE.absoluteValue` is `Long.MIN_VALUE` due to an overflow\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\npublic expect val Long.absoluteValue: Long\n\n/**\n * Returns the sign of this value:\n * - `-1` if the value is negative,\n * - `0` if the value is zero,\n * - `1` if the value is positive\n */\n@SinceKotlin(\"1.2\")\npublic expect val Long.sign: Int\n\n\n// endregion\n",null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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QAAA,wB;;MAAA,kC;IAAA,C;;MAeA,mC;MAEI,iBACJ,MAAM,KAAoB,U;MAEtB,iBACJ,MAAM,KAAoB,U;MAEtB,kBACuB,C;MAEvB,iBACsB,E;IAZ1B,C;;;;MAAA,0C;QAAA,yB;;MAAA,mC;IAAA,C;;MAeA,oC;MAEI,iBACuB,U;MAEvB,iBACuB,K;MAEvB,kBACuB,C;MAEvB,iBACsB,E;IAZ1B,C;;;;MAAA,2C;QAAA,0B;;MAAA,oC;IAAA,C;;MAeA,mC;MAEI,iBACsB,Q;MAEtB,iBACsB,G;MAEtB,kBACuB,C;MAEvB,iBACsB,C;IAZ1B,C;;;;MAAA,0C;QAAA,yB;;MAAA,mC;IAAA,C;;MAeA,mC;MAEI,iBACmC,C;MAEnC,iBACmC,K;MAEnC,0BAC4C,K;MAE5C,0BAC4C,K;MAE5C,yBAC2C,K;MAE3C,yBAC2C,K;MAE3C,qBACuC,uB;MAEvC,qBACuC,sB;MAEvC,kBACuB,C;MAEvB,iBACsB,E;IA9B1B,C;;;;MAAA,0C;QAAA,yB;;MAAA,mC;IAAA,C;;MAiCA,qC;IAAA,C;;;;MAAA,4C;QAAA,2B;;MAAA,qC;IAAA,C;;MAEA,sC;IAAA,C;;;;MAAA,6C;QAAA,4B;;MAAA,sC;IAAA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aCq5boB,gB;;;;cC/gb0C,mB;;gBAyEvC,yB;eAAyB,wB;;;uBAgBzB,gC;sBAAwB,+B;mCA4JjC,qB;mCA5ImC,qB;;kBAQ1B,2B;iBAA0B,0B;;;;;eCxZgB,wB;sBCQA,sB;iBCPA,0B;;;;aC1K8B,e;;;;;;;;;;;;gCC1ChD,yC;+BCTA,uC;+BCDA,sC;;gCC+I/B,+B;gBClEqE,yB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MC1EE,wC;IANvF,C;IAAA,wD;MAO2C,8B;IAAA,C;IAP3C,8E;;MCSuF,wC;IARvF,C;IAAA,wD;MAS2C,8B;IAAA,C;IAT3C,8E;;MZcI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CAAJ,C;IACX,C;;MAOI,OAAO,UAAI,CA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,yB;MAAA,wD;MelxKA,sC;MCpGA,kC;MAAA,oC;;QAAsG,4C;MAAtG,C;MAAA,6D;QAC4C,+BAAW,CAAX,EAAc,CAAd,C;MAAA,C;MAD5C,kF;MDoGA,iCAOe,yB;QAxFf,8D;;UAwFe,uB;YAAU,eAAsB,gB;YAAtB,OA/Ed,cAAc,SA+EgB,CA/EhB,CAAd,EAA2B,SA+EM,CA/EN,CAA3B,C;UA+EI,C;QAAA,C;OAAA,C;Mf2wKf,sC;QAII,OAAO,mDe/wKI,2Bf+wK2B,Qe/wK3B,Cf+wKJ,E;MACX,C;KALA,C;;MAaI,OAAO,sBAAW,cAAX,C;IACX,C;;MAMoB,kBcjqJQ,iB;MdiqJA,iB;MAAxB,OAAiC,WiBp0K1B,WjBo0K0B,C;IACrC,C;;MAMoB,kBc9pJQ,iB;Md8pJA,iB;MAAxB,OAAiC,WiB30K1B,WjB20K0B,C;IACrC,C;;MAMoB,kBc3pJQ,iB;Md2pJA,iB;MAAxB,OAAiC,WiBl1K1B,WjBk1K0B,C;IACrC,C;;MAMoB,kBAAT,oB;MAAiB,mB;MAAxB,OAAiC,WiBz1K1B,WjBy1K0B,C;IACrC,C;;MAMoB,kBctpJQ,iB;MdspJA,iB;MAAxB,OAAiC,WiBh2K1B,WjBg2K0B,C;IACrC,C;;MAMoB,kBcnpJQ,iB;MdmpJA,iB;MAAxB,OAAiC,WiBv2K1B,WjBu2K0B,C;IACrC,C;;MAMoB,kBAAT,oB;MAAiB,iB;MAAxB,OAAiC,WiB92K1B,WjB82K0B,C;IACrC,C;;MAQI,OAAmC,OAA5B,2BAAgB,UAAhB,CAA4B,C;IACvC,C;;MAM0B,kBAAf,yB;MAAuB,iC;MAA9B,OAAqD,OiB93K9C,WjB83K8C,C;IACzD,C;;MAM0B,kBAAf,yB;MAAuB,iC;MAA9B,OAAqD,OiBr4K9C,WjBq4K8C,C;IACzD,C;;MAM0B,kBAAf,yB;MAAuB,iC;MAA9B,OAAqD,OiB54K9C,WjB44K8C,C;IACzD,C;;MAM0B,kBAAf,yB;MAAuB,iC;MAA9B,OAAqD,OiBn5K9C,WjBm5K8C,C;IACzD,C;;MAM0B,kBAAf,yB;MAAuB,iC;MAA9B,OAAqD,OiB15K9C,WjB05K8C,C;IACzD,C;;MAM0B,kBAAf,yB;MAAuB,iC;MAA9B,OAAqD,OiBj6K9C,WjBi6K8C,C;IACzD,C;;MAM0B,kBAAf,yB;MAAuB,iC;MAA9B,OAAqD,OiBx6K9C,WjBw6K8C,C;IACzD,C;;MAM0B,kBAAf,0B;MAAuB,iC;MAA9B,OAAqD,OiB/6K9C,WjB+6K8C,C;IACzD,C;;MAqsBY,oBAAS,CAAT,EAAY,wBAAZ,C;IAAA,C;;MAMA,oBAAS,CAAT,EAAY,0BAAZ,C;IAAA,C;;MAMA,oBAAS,CAAT,EAAY,0BAAZ,C;IAAA,C;;MAMA,oBAAS,CAAT,EAAY,0BAAZ,C;IAAA,C;;MAMA,oBAAS,CAAT,EAAY,0BAAZ,C;IAAA,C;;MAMA,oBAAS,CAAT,EAAY,0BAAZ,C;IAAA,C;;MAMA,oBAAS,CAAT,EAAY,0BAAZ,C;IAAA,C;;MAMA,oBAAS,CAAT,EAAY,0BAAZ,C;IAAA,C;;MAMA,oBAAS,CAAT,EAAY,0BAAZ,C;IAAA,C;;MAOR,OAAO,qBAAQ,C;IACnB,C;;MAOI,OAAO,qBAAQ,C;IACnB,C;;MAOI,OAAO,qBAAQ,C;IACnB,C;;MAOI,OAAO,qBAAQ,C;IACnB,C;;MAOI,OAAO,qBAAQ,C;IACnB,C;;MAOI,OAAO,qBAAQ,C;IACnB,C;;MAOI,OAAO,qBAAQ,C;IACnB,C;;MAOI,OAAO,qBAAQ,C;IACnB,C;;MAOI,OAAO,qBAAQ,C;IACnB,C;;MAOI,OAAO,EAxEA,qBAAQ,CAwER,C;IACX,C;;MAOI,OAAO,EAxEA,qBAAQ,CAwER,C;IACX,C;;MAOI,OAAO,EAxEA,qBAAQ,CAwER,C;IACX,C;;MAOI,OAAO,EAxEA,qBAAQ,CAwER,C;IACX,C;;MAOI,OAAO,EAxEA,qBAAQ,CAwER,C;IACX,C;;MAOI,OAAO,EAxEA,qBAAQ,CAwER,C;IACX,C;;MAOI,OAAO,EAxEA,qBAAQ,CAwER,C;IACX,C;;MAOI,OAAO,EAxEA,qBAAQ,CAwER,C;IACX,C;;MAOI,OAAO,EAxEA,qBAAQ,CAwER,C;IACX,C;;MAMY,0BAAO,CAAP,I;IAAA,C;;MAMA,0BAAO,CAAP,I;IAAA,C;;MAMA,0BAAO,CAAP,I;IAAA,C;;MAMA,0BAAO,CAAP,I;IAAA,C;;MAMA,0BAAO,CAAP,I;IAAA,C;;MAMA,0BAAO,CAAP,I;IAAA,C;;MAMA,0BAAO,CAAP,I;IAAA,C;;MAMA,0BAAO,CAAP,I;IAAA,C;;MAMA,0BAAO,CAAP,I;IAAA,C;;MAuMkB,wB;QAAW,2BAAK,KAAL,C;MAAX,C;IAAA,C;;MAA1B,OAAO,qBAAa,gBAAb,EAAmB,gCAAnB,C;IACX,C;;MAM2B,wB;QAAW,wBAAK,KAAL,C;MAAX,C;IAAA,C;;MAAvB,OAAO,+BAAU,gBAAV,GAAgB,6BAAhB,C;IACX,C;;MAM2B,wB;QAAW,wBAAK,KAAL,C;MAAX,C;IAAA,C;;MAAvB,OAAO,kBAAU,gBAAV,EAAgB,6BAAhB,C;IACX,C;;MAM6B,wB;QAAW,0BAAK,KAAL,C;MAAX,C;IAAA,C;;MAAzB,OAAO,kCAAY,gBAAZ,GAAkB,+BAAlB,C;IACX,C;;MAM4B,wB;QAAW,yBAAK,KAAL,C;MAAX,C;IAAA,C;;MAAxB,OAAO,kCAAW,gBAAX,GAAiB,8BAAjB,C;IACX,C;;MAM0B,wB;QAAW,uBAAK,KAAL,C;MAAX,C;IAAA,C;;MAAtB,OAAO,gCAAS,gBAAT,GAAe,4BAAf,C;IACX,C;;MAM2B,wB;QAAW,wBAAK,KAAL,C;MAAX,C;IAAA,C;;MAAvB,OAAO,kBAAU,gBAAV,EAAgB,6BAAhB,C;IACX,C;;MAM4B,wB;QAAW,yBAAK,KAAL,C;MAAX,C;IAAA,C;;MAAxB,OAAO,gCAAW,gBAAX,GAAiB,8BAAjB,C;IACX,C;wFA0CA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,uC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAY,mBAAoB,QAApB,C;QA+kBH,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAhlB8C,SAglB/B,CAAU,OAAV,C;UOhtNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;QPgoMA,OAklBO,W;MAjlBX,C;KAXA,C;0FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,uC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAY,mBAAoB,QAApB,C;QA+kBH,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAhlB8C,SAglB/B,CAAU,OAAV,C;UO7tNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;QP6oMA,OAklBO,W;MAjlBX,C;KAXA,C;0FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,uC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAY,mBAAoB,QAApB,C;QA+kBH,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAhlB8C,SAglB/B,CAAU,OAAV,C;UO1uNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;QP0pMA,OAklBO,W;MAjlBX,C;KAXA,C;0FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,uC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAY,mBAAoB,QAApB,C;QA+kBH,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAhlB8C,SAglB/B,CAAU,OAAV,C;UOvvNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;QPuqMA,OAklBO,W;MAjlBX,C;KAXA,C;0FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,uC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAY,mBAAoB,QAApB,C;QA+kBH,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAhlB8C,SAglB/B,CAAU,OAAV,C;UOpwNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;QPorMA,OAklBO,W;MAjlBX,C;KAXA,C;0FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,uC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAY,mBAAoB,QAApB,C;QA+kBH,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAhlB8C,SAglB/B,CAAU,OAAV,C;UOjxNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;QPisMA,OAklBO,W;MAjlBX,C;KAXA,C;0FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,uC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAY,mBAAoB,QAApB,C;QA+kBH,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAhlB8C,SAglB/B,CAAU,OAAV,C;UO9xNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;QP8sMA,OAklBO,W;MAjlBX,C;KAXA,C;0FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,uC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAY,mBAAoB,QAApB,C;QA+kBH,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAhlB8C,SAglB/B,CAAU,OAAV,C;UO3yNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;QP2tMA,OAklBO,W;MAjlBX,C;KAXA,C;0FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAklBA,oC;MAAA,gC;MAllBA,uC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAY,mBAAoB,QAApB,C;QA+kBH,Q;QAAhB,iD;UAAgB,cAAhB,0B;UACI,WAhlB8C,SAglB/B,CAAU,oBAAV,C;UOxzNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;QPwuMA,OAklBO,W;MAjlBX,C;KAXA,C;4FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAAoB,QAApB,C;QA+NL,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAAY,aAhOoC,WAgOhC,CAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;QAhOhB,OAkOO,W;MAjOX,C;KAXA,C;8FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAAuB,QAAvB,C;QAgOL,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAAY,aAjOuC,WAiOnC,CAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;QAjOhB,OAmOO,W;MAlOX,C;KAXA,C;8FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAAwB,QAAxB,C;QAiOL,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAAY,aAlOwC,WAkOpC,CAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;QAlOhB,OAoOO,W;MAnOX,C;KAXA,C;8FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAAsB,QAAtB,C;QAkOL,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAAY,aAnOsC,WAmOlC,CAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;QAnOhB,OAqOO,W;MApOX,C;KAXA,C;8FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAAuB,QAAvB,C;QAmOL,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAAY,aApOuC,WAoOnC,CAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;QApOhB,OAsOO,W;MArOX,C;KAXA,C;8FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAAwB,QAAxB,C;QAoOL,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAAY,aArOwC,WAqOpC,CAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;QArOhB,OAuOO,W;MAtOX,C;KAXA,C;8FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAAyB,QAAzB,C;QAqOL,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAAY,aAtOyC,WAsOrC,CAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;QAtOhB,OAwOO,W;MAvOX,C;KAXA,C;8FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAA0B,QAA1B,C;QAsOL,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAAY,aAvO0C,WAuOtC,CAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;QAvOhB,OAyOO,W;MAxOX,C;KAXA,C;8FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAyOA,oC;MAAA,gC;MAzOA,yC;QASI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAAuB,QAAvB,C;QAuOL,Q;QAAhB,iD;UAAgB,cAAhB,0B;UACI,WAAY,aAxOuC,WAwOnC,CAAY,oBAAZ,CAAJ,EAA0B,oBAA1B,C;;QAxOhB,OA0OO,W;MAzOX,C;KAXA,C;8FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yD;QAQI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAAoB,QAApB,C;QAyOL,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAAY,aA1OoC,WA0OhC,CAAY,OAAZ,CAAJ,EA1OiD,cA0OvB,CAAe,OAAf,CAA1B,C;;QA1OhB,OA4OO,W;MA3OX,C;KAVA,C;8FAYA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yD;QAQI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAAoB,QAApB,C;QA2OL,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAAY,aA5OoC,WA4OhC,CAAY,OAAZ,CAAJ,EA5OiD,cA4OvB,CAAe,OAAf,CAA1B,C;;QA5OhB,OA8OO,W;MA7OX,C;KAVA,C;+FAYA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yD;QAQI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAAoB,QAApB,C;QA6OL,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAAY,aA9OoC,WA8OhC,CAAY,OAAZ,CAAJ,EA9OiD,cA8OvB,CAAe,OAAf,CAA1B,C;;QA9OhB,OAgPO,W;MA/OX,C;KAVA,C;+FAYA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yD;QAQI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAAoB,QAApB,C;QA+OL,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAAY,aAhPoC,WAgPhC,CAAY,OAAZ,CAAJ,EAhPiD,cAgPvB,CAAe,OAAf,CAA1B,C;;QAhPhB,OAkPO,W;MAjPX,C;KAVA,C;+FAYA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yD;QAQI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAAoB,QAApB,C;QAiPL,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAAY,aAlPoC,WAkPhC,CAAY,OAAZ,CAAJ,EAlPiD,cAkPvB,CAAe,OAAf,CAA1B,C;;QAlPhB,OAoPO,W;MAnPX,C;KAVA,C;+FAYA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yD;QAQI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAAoB,QAApB,C;QAmPL,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAAY,aApPoC,WAoPhC,CAAY,OAAZ,CAAJ,EApPiD,cAoPvB,CAAe,OAAf,CAA1B,C;;QApPhB,OAsPO,W;MArPX,C;KAVA,C;+FAYA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yD;QAQI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAAoB,QAApB,C;QAqPL,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAAY,aAtPoC,WAsPhC,CAAY,OAAZ,CAAJ,EAtPiD,cAsPvB,CAAe,OAAf,CAA1B,C;;QAtPhB,OAwPO,W;MAvPX,C;KAVA,C;+FAYA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yD;QAQI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAAoB,QAApB,C;QAuPL,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAAY,aAxPoC,WAwPhC,CAAY,OAAZ,CAAJ,EAxPiD,cAwPvB,CAAe,OAAf,CAA1B,C;;QAxPhB,OA0PO,W;MAzPX,C;KAVA,C;+FAYA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MA0PA,oC;MAAA,gC;MA1PA,yD;QAQI,eAAiC,cAAlB,YAAY,gBAAZ,CAAkB,EAAc,EAAd,C;QAC1B,kBAAc,mBAAoB,QAApB,C;QAyPL,Q;QAAhB,iD;UAAgB,cAAhB,0B;UACI,WAAY,aA1PoC,WA0PhC,CAAY,oBAAZ,CAAJ,EA1PiD,cA0PvB,CAAe,oBAAf,CAA1B,C;;QA1PhB,OA4PO,W;MA3PX,C;KAVA,C;;MAoBoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;MAEhB,OAAO,W;IACX,C;;MAUoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;MAEhB,OAAO,W;IACX,C;;MAUoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;MAEhB,OAAO,W;IACX,C;;MAUoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;MAEhB,OAAO,W;IACX,C;;MAUoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;MAEhB,OAAO,W;IACX,C;;MAUoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;MAEhB,OAAO,W;IACX,C;;MAUoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;MAEhB,OAAO,W;IACX,C;;MAUoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;MAEhB,OAAO,W;IACX,C;iGAEA,yB;MAAA,oC;MAAA,gC;MAAA,sD;QAQoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAhB,UAAgB,SAAhB,O;UACI,WAAY,aAAI,YAAY,oBAAZ,CAAJ,EAA0B,oBAA1B,C;;QAEhB,OAAO,W;MACX,C;KAZA,C;;MAsBoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,eAAe,OAAf,CAA1B,C;;MAEhB,OAAO,W;IACX,C;;MAUoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,eAAe,OAAf,CAA1B,C;;MAEhB,OAAO,W;IACX,C;;MAUoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,eAAe,OAAf,CAA1B,C;;MAEhB,OAAO,W;IACX,C;;MAUoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,eAAe,OAAf,CAA1B,C;;MAEhB,OAAO,W;IACX,C;;MAUoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,eAAe,OAAf,CAA1B,C;;MAEhB,OAAO,W;IACX,C;;MAUoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,eAAe,OAAf,CAA1B,C;;MAEhB,OAAO,W;IACX,C;;MAUoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,eAAe,OAAf,CAA1B,C;;MAEhB,OAAO,W;IACX,C;;MAUoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,eAAe,OAAf,CAA1B,C;;MAEhB,OAAO,W;IACX,C;mGAEA,yB;MAAA,oC;MAAA,gC;MAAA,sE;QAQoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAhB,UAAgB,SAAhB,O;UACI,WAAY,aAAI,YAAY,oBAAZ,CAAJ,EAA0B,eAAe,oBAAf,CAA1B,C;;QAEhB,OAAO,W;MACX,C;KAZA,C;;MAqBoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAe,UAAU,OAAV,C;QOhtNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;MPktNA,OAAO,W;IACX,C;;MASoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAe,UAAU,OAAV,C;QO7tNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;MP+tNA,OAAO,W;IACX,C;;MASoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAe,UAAU,OAAV,C;QO1uNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;MP4uNA,OAAO,W;IACX,C;;MASoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAe,UAAU,OAAV,C;QOvvNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;MPyvNA,OAAO,W;IACX,C;;MASoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAe,UAAU,OAAV,C;QOpwNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;MPswNA,OAAO,W;IACX,C;;MASoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAe,UAAU,OAAV,C;QOjxNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;MPmxNA,OAAO,W;IACX,C;;MASoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAe,UAAU,OAAV,C;QO9xNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;MPgyNA,OAAO,W;IACX,C;;MASoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,WAAe,UAAU,OAAV,C;QO3yNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;MP6yNA,OAAO,W;IACX,C;8FAEA,yB;MAAA,oC;MAAA,gC;MAAA,oD;QAOoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAhB,UAAgB,SAAhB,O;UACI,WAAe,UAAU,oBAAV,C;UOxzNnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;QP0zNA,OAAO,W;MACX,C;KAXA,C;;MAiBiB,Q;MAAb,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,IAAJ,C;;MAEhB,OAAO,W;IACX,C;;MAMiB,Q;MAAb,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,IAAJ,C;;MAEhB,OAAO,W;IACX,C;;MAMiB,Q;MAAb,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,IAAJ,C;;MAEhB,OAAO,W;IACX,C;;MAMiB,Q;MAAb,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,IAAJ,C;;MAEhB,OAAO,W;IACX,C;;MAMiB,Q;MAAb,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,IAAJ,C;;MAEhB,OAAO,W;IACX,C;;MAMiB,Q;MAAb,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,IAAJ,C;;MAEhB,OAAO,W;IACX,C;;MAMiB,Q;MAAb,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,IAAJ,C;;MAEhB,OAAO,W;IACX,C;;MAMiB,Q;MAAb,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,IAAJ,C;;MAEhB,OAAO,W;IACX,C;;MAMiB,Q;MAAb,wBAAa,SAAb,gB;QAAa,WAAb,UAAa,SAAb,O;QACI,WAAY,WAAI,iBAAJ,C;;MAEhB,OAAO,W;IACX,C;;MAMI,OAAO,wBAAa,eAAW,YAAY,gBAAZ,CAAX,CAAb,C;IACX,C;;MAMI,OAAO,0BAAa,eAAc,YAAY,gBAAZ,CAAd,CAAb,C;IACX,C;;MAMI,OAAO,0BAAa,eAAe,YAAY,gBAAZ,CAAf,CAAb,C;IACX,C;;MAMI,OAAO,0BAAa,eAAa,YAAY,gBAAZ,CAAb,CAAb,C;IACX,C;;MAMI,OAAO,0BAAa,eAAc,YAAY,gBAAZ,CAAd,CAAb,C;IACX,C;;MAMI,OAAO,0BAAa,eAAe,YAAY,gBAAZ,CAAf,CAAb,C;IACX,C;;MAMI,OAAO,0BAAa,eAAgB,YAAY,gBAAZ,CAAhB,CAAb,C;IACX,C;;MAMI,OAAO,0BAAa,eAAiB,YAAY,gBAAZ,CAAjB,CAAb,C;IACX,C;;MAMI,OAAO,0BAAa,eAAc,YAAY,gBAAZ,CAAd,CAAb,C;IACX,C;;MAMiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,kB;UAAL,K;aACA,C;UAAK,cAAO,UAAK,CAAL,CAAP,C;UAAL,K;gBACa,qBAAL,SAAK,C;UAHV,K;;MAAP,W;IAKJ,C;;MAMiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,kB;UAAL,K;aACA,C;UAAK,cAAO,UAAK,CAAL,CAAP,C;UAAL,K;gBACa,uBAAL,SAAK,C;UAHV,K;;MAAP,W;IAKJ,C;;MAMiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,kB;UAAL,K;aACA,C;UAAK,cAAO,UAAK,CAAL,CAAP,C;UAAL,K;gBACa,uBAAL,SAAK,C;UAHV,K;;MAAP,W;IAKJ,C;;MAMiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,kB;UAAL,K;aACA,C;UAAK,cAAO,UAAK,CAAL,CAAP,C;UAAL,K;gBACa,uBAAL,SAAK,C;UAHV,K;;MAAP,W;IAKJ,C;;MAMiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,kB;UAAL,K;aACA,C;UAAK,cAAO,UAAK,CAAL,CAAP,C;UAAL,K;gBACa,uBAAL,SAAK,C;UAHV,K;;MAAP,W;IAKJ,C;;MAMiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,kB;UAAL,K;aACA,C;UAAK,cAAO,UAAK,CAAL,CAAP,C;UAAL,K;gBACa,uBAAL,SAAK,C;UAHV,K;;MAAP,W;IAKJ,C;;MAMiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,kB;UAAL,K;aACA,C;UAAK,cAAO,UAAK,CAAL,CAAP,C;UAAL,K;gBACa,uBAAL,SAAK,C;UAHV,K;;MAAP,W;IAKJ,C;;MAMiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,kB;UAAL,K;aACA,C;UAAK,cAAO,UAAK,CAAL,CAAP,C;UAAL,K;gBACa,uBAAL,SAAK,C;UAHV,K;;MAAP,W;IAKJ,C;;MAMiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,kB;UAAL,K;aACA,C;UAAK,cAAO,sBAAK,CAAL,EAAP,C;UAAL,K;gBACa,uBAAL,SAAK,C;UAHV,K;;MAAP,W;IAKJ,C;;MAMI,OAAO,iBAAe,aAAL,SAAK,CAAf,C;IACX,C;;MAOiB,Q;MADb,WAAW,iBAAgB,gBAAhB,C;MACX,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,IAAK,WAAI,IAAJ,C;;MACxB,OAAO,I;IACX,C;;MAOiB,Q;MADb,WAAW,iBAAiB,gBAAjB,C;MACX,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,IAAK,WAAI,IAAJ,C;;MACxB,OAAO,I;IACX,C;;MAOiB,Q;MADb,WAAW,iBAAe,gBAAf,C;MACX,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,IAAK,WAAI,IAAJ,C;;MACxB,OAAO,I;IACX,C;;MAOiB,Q;MADb,WAAW,iBAAgB,gBAAhB,C;MACX,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,IAAK,WAAI,IAAJ,C;;MACxB,OAAO,I;IACX,C;;MAOiB,Q;MADb,WAAW,iBAAiB,gBAAjB,C;MACX,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,IAAK,WAAI,IAAJ,C;;MACxB,OAAO,I;IACX,C;;MAOiB,Q;MADb,WAAW,iBAAkB,gBAAlB,C;MACX,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,IAAK,WAAI,IAAJ,C;;MACxB,OAAO,I;IACX,C;;MAOiB,Q;MADb,WAAW,iBAAmB,gBAAnB,C;MACX,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,IAAK,WAAI,IAAJ,C;;MACxB,OAAO,I;IACX,C;;MAOiB,Q;MADb,WAAW,iBAAgB,gBAAhB,C;MACX,wBAAa,SAAb,gB;QAAa,WAAb,UAAa,SAAb,O;QAAmB,IAAK,WAAI,iBAAJ,C;;MACxB,OAAO,I;IACX,C;;MAQiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,iB;UAAL,K;aACA,C;UAAK,aAAM,UAAK,CAAL,CAAN,C;UAAL,K;gBACQ,+BAAa,qBAAiB,YAAY,gBAAZ,CAAjB,CAAb,C;UAHL,K;;MAAP,W;IAKJ,C;;MAQiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,iB;UAAL,K;aACA,C;UAAK,aAAM,UAAK,CAAL,CAAN,C;UAAL,K;gBACQ,iCAAa,qBAAoB,YAAY,gBAAZ,CAApB,CAAb,C;UAHL,K;;MAAP,W;IAKJ,C;;MAQiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,iB;UAAL,K;aACA,C;UAAK,aAAM,UAAK,CAAL,CAAN,C;UAAL,K;gBACQ,iCAAa,qBAAqB,YAAY,gBAAZ,CAArB,CAAb,C;UAHL,K;;MAAP,W;IAKJ,C;;MAQiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,iB;UAAL,K;aACA,C;UAAK,aAAM,UAAK,CAAL,CAAN,C;UAAL,K;gBACQ,iCAAa,qBAAmB,YAAY,gBAAZ,CAAnB,CAAb,C;UAHL,K;;MAAP,W;IAKJ,C;;MAQiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,iB;UAAL,K;aACA,C;UAAK,aAAM,UAAK,CAAL,CAAN,C;UAAL,K;gBACQ,iCAAa,qBAAoB,YAAY,gBAAZ,CAApB,CAAb,C;UAHL,K;;MAAP,W;IAKJ,C;;MAQiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,iB;UAAL,K;aACA,C;UAAK,aAAM,UAAK,CAAL,CAAN,C;UAAL,K;gBACQ,iCAAa,qBAAqB,YAAY,gBAAZ,CAArB,CAAb,C;UAHL,K;;MAAP,W;IAKJ,C;;MAQiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,iB;UAAL,K;aACA,C;UAAK,aAAM,UAAK,CAAL,CAAN,C;UAAL,K;gBACQ,iCAAa,qBAAsB,YAAY,gBAAZ,CAAtB,CAAb,C;UAHL,K;;MAAP,W;IAKJ,C;;MAQiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,iB;UAAL,K;aACA,C;UAAK,aAAM,UAAK,CAAL,CAAN,C;UAAL,K;gBACQ,iCAAa,qBAAuB,YAAY,gBAAZ,CAAvB,CAAb,C;UAHL,K;;MAAP,W;IAKJ,C;;MAQiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,iB;UAAL,K;aACA,C;UAAK,aAAM,sBAAK,CAAL,EAAN,C;UAAL,K;gBACQ,iCAAa,qBAAoB,YAAY,gBAAZ,CAApB,CAAb,C;UAHL,K;;MAAP,W;IAKJ,C;oFAEA,yB;MAAA,+D;MA+DA,gD;MA/DA,uC;QAIW,kBAAU,gB;QA+DD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAhE6B,SAgElB,CAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAjEhB,OAmEO,W;MAlEX,C;KALA,C;sFAOA,yB;MAAA,+D;MAmEA,gD;MAnEA,uC;QAIW,kBAAU,gB;QAmED,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WApE6B,SAoElB,CAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QArEhB,OAuEO,W;MAtEX,C;KALA,C;sFAOA,yB;MAAA,+D;MAuEA,gD;MAvEA,uC;QAIW,kBAAU,gB;QAuED,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAxE6B,SAwElB,CAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAzEhB,OA2EO,W;MA1EX,C;KALA,C;sFAOA,yB;MAAA,+D;MA2EA,gD;MA3EA,uC;QAIW,kBAAU,gB;QA2ED,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WA5E6B,SA4ElB,CAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QA7EhB,OA+EO,W;MA9EX,C;KALA,C;sFAOA,yB;MAAA,+D;MA+EA,gD;MA/EA,uC;QAIW,kBAAU,gB;QA+ED,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAhF6B,SAgFlB,CAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAjFhB,OAmFO,W;MAlFX,C;KALA,C;sFAOA,yB;MAAA,+D;MAmFA,gD;MAnFA,uC;QAIW,kBAAU,gB;QAmFD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WApF6B,SAoFlB,CAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QArFhB,OAuFO,W;MAtFX,C;KALA,C;sFAOA,yB;MAAA,+D;MAuFA,gD;MAvFA,uC;QAIW,kBAAU,gB;QAuFD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WAxF6B,SAwFlB,CAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAzFhB,OA2FO,W;MA1FX,C;KALA,C;sFAOA,yB;MAAA,+D;MA2FA,gD;MA3FA,uC;QAIW,kBAAU,gB;QA2FD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,WA5F6B,SA4FlB,CAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QA7FhB,OA+FO,W;MA9FX,C;KALA,C;sFAOA,yB;MAAA,+D;MA+FA,oC;MAAA,gD;MAAA,gC;MA/FA,uC;QAIW,kBAAU,gB;QA+FD,Q;QAAhB,iD;UAAgB,cAAhB,0B;UACI,WAhG6B,SAgGlB,CAAU,oBAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAjGhB,OAmGO,W;MAlGX,C;KALA,C;uFAOA,yB;MAAA,gD;MAAA,oD;QAIoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,WAAW,UAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAEhB,OAAO,W;MACX,C;KATA,C;0FAWA,yB;MAAA,gD;MAAA,oD;QAIoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,WAAW,UAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAEhB,OAAO,W;MACX,C;KATA,C;0FAWA,yB;MAAA,gD;MAAA,oD;QAIoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,WAAW,UAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAEhB,OAAO,W;MACX,C;KATA,C;0FAWA,yB;MAAA,gD;MAAA,oD;QAIoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,WAAW,UAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAEhB,OAAO,W;MACX,C;KATA,C;0FAWA,yB;MAAA,gD;MAAA,oD;QAIoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,WAAW,UAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAEhB,OAAO,W;MACX,C;KATA,C;0FAWA,yB;MAAA,gD;MAAA,oD;QAIoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,WAAW,UAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAEhB,OAAO,W;MACX,C;KATA,C;0FAWA,yB;MAAA,gD;MAAA,oD;QAIoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,WAAW,UAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAEhB,OAAO,W;MACX,C;KATA,C;0FAWA,yB;MAAA,gD;MAAA,oD;QAIoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,WAAW,UAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAEhB,OAAO,W;MACX,C;KATA,C;0FAWA,yB;MAAA,oC;MAAA,gD;MAAA,gC;MAAA,oD;QAIoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAhB,UAAgB,SAAhB,O;UACI,WAAW,UAAU,oBAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAEhB,OAAO,W;MACX,C;KATA,C;oFAWA,yB;MAAA,wE;MAiOA,+D;MAjOA,yC;QASW,kBAAU,oB;QAiOD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,UAlOiD,WAkOvC,CAAY,OAAZ,C;UOp8PP,U;UADP,YPs8Pe,WOt8PH,WPs8PwB,GOt8PxB,C;UACL,IAAI,aAAJ,C;YACH,aPo8PuC,gB;YAA5B,WOn8PX,aPm8PgC,GOn8PhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPg8PA,iB;UACA,IAAK,WAAI,OAAJ,C;;QApOT,OAsOO,W;MArOX,C;KAVA,C;sFAYA,yB;MAAA,wE;MAsOA,+D;MAtOA,yC;QASW,kBAAU,oB;QAsOD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,UAvOoD,WAuO1C,CAAY,OAAZ,C;UOr9PP,U;UADP,YPu9Pe,WOv9PH,WPu9PwB,GOv9PxB,C;UACL,IAAI,aAAJ,C;YACH,aPq9PuC,gB;YAA5B,WOp9PX,aPo9PgC,GOp9PhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPi9PA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAzOT,OA2OO,W;MA1OX,C;KAVA,C;sFAYA,yB;MAAA,wE;MA2OA,+D;MA3OA,yC;QASW,kBAAU,oB;QA2OD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,UA5OqD,WA4O3C,CAAY,OAAZ,C;UOt+PP,U;UADP,YPw+Pe,WOx+PH,WPw+PwB,GOx+PxB,C;UACL,IAAI,aAAJ,C;YACH,aPs+PuC,gB;YAA5B,WOr+PX,aPq+PgC,GOr+PhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPk+PA,iB;UACA,IAAK,WAAI,OAAJ,C;;QA9OT,OAgPO,W;MA/OX,C;KAVA,C;sFAYA,yB;MAAA,wE;MAgPA,+D;MAhPA,yC;QASW,kBAAU,oB;QAgPD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,UAjPmD,WAiPzC,CAAY,OAAZ,C;UOv/PP,U;UADP,YPy/Pe,WOz/PH,WPy/PwB,GOz/PxB,C;UACL,IAAI,aAAJ,C;YACH,aPu/PuC,gB;YAA5B,WOt/PX,aPs/PgC,GOt/PhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPm/PA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAnPT,OAqPO,W;MApPX,C;KAVA,C;sFAYA,yB;MAAA,wE;MAqPA,+D;MArPA,yC;QASW,kBAAU,oB;QAqPD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,UAtPoD,WAsP1C,CAAY,OAAZ,C;UOxgQP,U;UADP,YP0gQe,WO1gQH,WP0gQwB,GO1gQxB,C;UACL,IAAI,aAAJ,C;YACH,aPwgQuC,gB;YAA5B,WOvgQX,aPugQgC,GOvgQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPogQA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAxPT,OA0PO,W;MAzPX,C;KAVA,C;sFAYA,yB;MAAA,wE;MA0PA,+D;MA1PA,yC;QASW,kBAAU,oB;QA0PD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,UA3PqD,WA2P3C,CAAY,OAAZ,C;UOzhQP,U;UADP,YP2hQe,WO3hQH,WP2hQwB,GO3hQxB,C;UACL,IAAI,aAAJ,C;YACH,aPyhQuC,gB;YAA5B,WOxhQX,aPwhQgC,GOxhQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPqhQA,iB;UACA,IAAK,WAAI,OAAJ,C;;QA7PT,OA+PO,W;MA9PX,C;KAVA,C;sFAYA,yB;MAAA,wE;MA+PA,+D;MA/PA,yC;QASW,kBAAU,oB;QA+PD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,UAhQsD,WAgQ5C,CAAY,OAAZ,C;UO1iQP,U;UADP,YP4iQe,WO5iQH,WP4iQwB,GO5iQxB,C;UACL,IAAI,aAAJ,C;YACH,aP0iQuC,gB;YAA5B,WOziQX,aPyiQgC,GOziQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPsiQA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAlQT,OAoQO,W;MAnQX,C;KAVA,C;sFAYA,yB;MAAA,wE;MAoQA,+D;MApQA,yC;QASW,kBAAU,oB;QAoQD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,UArQuD,WAqQ7C,CAAY,OAAZ,C;UO3jQP,U;UADP,YP6jQe,WO7jQH,WP6jQwB,GO7jQxB,C;UACL,IAAI,aAAJ,C;YACH,aP2jQuC,gB;YAA5B,WO1jQX,aP0jQgC,GO1jQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPujQA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAvQT,OAyQO,W;MAxQX,C;KAVA,C;sFAYA,yB;MAAA,wE;MAyQA,oC;MAAA,+D;MAAA,gC;MAzQA,yC;QASW,kBAAU,oB;QAyQD,Q;QAAhB,iD;UAAgB,cAAhB,0B;UACI,UA1QoD,WA0Q1C,CAAY,oBAAZ,C;UO5kQP,U;UADP,YP8kQe,WO9kQH,WP8kQwB,GO9kQxB,C;UACL,IAAI,aAAJ,C;YACH,aP4kQuC,gB;YAA5B,WO3kQX,aP2kQgC,GO3kQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPwkQA,iB;UACA,IAAK,WAAI,oBAAJ,C;;QA5QT,OA8QO,W;MA7QX,C;KAVA,C;sFAYA,yB;MAAA,wE;MA8QA,+D;MA9QA,yD;QAUW,kBAAU,oB;QA8QD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,UA/QiD,WA+QvC,CAAY,OAAZ,C;UO9lQP,U;UADP,YPgmQe,WOhmQH,WPgmQwB,GOhmQxB,C;UACL,IAAI,aAAJ,C;YACH,aP8lQuC,gB;YAA5B,WO7lQX,aP6lQgC,GO7lQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UP0lQA,iB;UACA,IAAK,WAjRyD,cAiRrD,CAAe,OAAf,CAAJ,C;;QAjRT,OAmRO,W;MAlRX,C;KAXA,C;sFAaA,yB;MAAA,wE;MAmRA,+D;MAnRA,yD;QAUW,kBAAU,oB;QAmRD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,UApRiD,WAoRvC,CAAY,OAAZ,C;UOhnQP,U;UADP,YPknQe,WOlnQH,WPknQwB,GOlnQxB,C;UACL,IAAI,aAAJ,C;YACH,aPgnQuC,gB;YAA5B,WO/mQX,aP+mQgC,GO/mQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UP4mQA,iB;UACA,IAAK,WAtRyD,cAsRrD,CAAe,OAAf,CAAJ,C;;QAtRT,OAwRO,W;MAvRX,C;KAXA,C;uFAaA,yB;MAAA,wE;MAwRA,+D;MAxRA,yD;QAUW,kBAAU,oB;QAwRD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,UAzRiD,WAyRvC,CAAY,OAAZ,C;UOloQP,U;UADP,YPooQe,WOpoQH,WPooQwB,GOpoQxB,C;UACL,IAAI,aAAJ,C;YACH,aPkoQuC,gB;YAA5B,WOjoQX,aPioQgC,GOjoQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UP8nQA,iB;UACA,IAAK,WA3RyD,cA2RrD,CAAe,OAAf,CAAJ,C;;QA3RT,OA6RO,W;MA5RX,C;KAXA,C;uFAaA,yB;MAAA,wE;MA6RA,+D;MA7RA,yD;QAUW,kBAAU,oB;QA6RD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,UA9RiD,WA8RvC,CAAY,OAAZ,C;UOppQP,U;UADP,YPspQe,WOtpQH,WPspQwB,GOtpQxB,C;UACL,IAAI,aAAJ,C;YACH,aPopQuC,gB;YAA5B,WOnpQX,aPmpQgC,GOnpQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPgpQA,iB;UACA,IAAK,WAhSyD,cAgSrD,CAAe,OAAf,CAAJ,C;;QAhST,OAkSO,W;MAjSX,C;KAXA,C;uFAaA,yB;MAAA,wE;MAkSA,+D;MAlSA,yD;QAUW,kBAAU,oB;QAkSD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,UAnSiD,WAmSvC,CAAY,OAAZ,C;UOtqQP,U;UADP,YPwqQe,WOxqQH,WPwqQwB,GOxqQxB,C;UACL,IAAI,aAAJ,C;YACH,aPsqQuC,gB;YAA5B,WOrqQX,aPqqQgC,GOrqQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPkqQA,iB;UACA,IAAK,WArSyD,cAqSrD,CAAe,OAAf,CAAJ,C;;QArST,OAuSO,W;MAtSX,C;KAXA,C;uFAaA,yB;MAAA,wE;MAuSA,+D;MAvSA,yD;QAUW,kBAAU,oB;QAuSD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,UAxSiD,WAwSvC,CAAY,OAAZ,C;UOxrQP,U;UADP,YP0rQe,WO1rQH,WP0rQwB,GO1rQxB,C;UACL,IAAI,aAAJ,C;YACH,aPwrQuC,gB;YAA5B,WOvrQX,aPurQgC,GOvrQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPorQA,iB;UACA,IAAK,WA1SyD,cA0SrD,CAAe,OAAf,CAAJ,C;;QA1ST,OA4SO,W;MA3SX,C;KAXA,C;uFAaA,yB;MAAA,wE;MA4SA,+D;MA5SA,yD;QAUW,kBAAU,oB;QA4SD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,UA7SiD,WA6SvC,CAAY,OAAZ,C;UO1sQP,U;UADP,YP4sQe,WO5sQH,WP4sQwB,GO5sQxB,C;UACL,IAAI,aAAJ,C;YACH,aP0sQuC,gB;YAA5B,WOzsQX,aPysQgC,GOzsQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPssQA,iB;UACA,IAAK,WA/SyD,cA+SrD,CAAe,OAAf,CAAJ,C;;QA/ST,OAiTO,W;MAhTX,C;KAXA,C;uFAaA,yB;MAAA,wE;MAiTA,+D;MAjTA,yD;QAUW,kBAAU,oB;QAiTD,Q;QAAhB,iD;UAAgB,cAAhB,e;UACI,UAlTiD,WAkTvC,CAAY,OAAZ,C;UO5tQP,U;UADP,YP8tQe,WO9tQH,WP8tQwB,GO9tQxB,C;UACL,IAAI,aAAJ,C;YACH,aP4tQuC,gB;YAA5B,WO3tQX,aP2tQgC,GO3tQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPwtQA,iB;UACA,IAAK,WApTyD,cAoTrD,CAAe,OAAf,CAAJ,C;;QApTT,OAsTO,W;MArTX,C;KAXA,C;uFAaA,yB;MAAA,wE;MAsTA,oC;MAAA,+D;MAAA,gC;MAtTA,yD;QAUW,kBAAU,oB;QAsTD,Q;QAAhB,iD;UAAgB,cAAhB,0B;UACI,UAvTiD,WAuTvC,CAAY,oBAAZ,C;UO9uQP,U;UADP,YPgvQe,WOhvQH,WPgvQwB,GOhvQxB,C;UACL,IAAI,aAAJ,C;YACH,aP8uQuC,gB;YAA5B,WO7uQX,aP6uQgC,GO7uQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UP0uQA,iB;UACA,IAAK,WAzTyD,cAyTrD,CAAe,oBAAf,CAAJ,C;;QAzTT,OA2TO,W;MA1TX,C;KAXA,C;wFAaA,yB;MAAA,+D;MAAA,sD;QASoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,UAAU,YAAY,OAAZ,C;UOp8PP,U;UADP,YPs8Pe,WOt8PH,WPs8PwB,GOt8PxB,C;UACL,IAAI,aAAJ,C;YACH,aPo8PuC,gB;YAA5B,WOn8PX,aPm8PgC,GOn8PhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPg8PA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAET,OAAO,W;MACX,C;KAfA,C;0FAiBA,yB;MAAA,+D;MAAA,sD;QASoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,UAAU,YAAY,OAAZ,C;UOr9PP,U;UADP,YPu9Pe,WOv9PH,WPu9PwB,GOv9PxB,C;UACL,IAAI,aAAJ,C;YACH,aPq9PuC,gB;YAA5B,WOp9PX,aPo9PgC,GOp9PhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPi9PA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAET,OAAO,W;MACX,C;KAfA,C;0FAiBA,yB;MAAA,+D;MAAA,sD;QASoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,UAAU,YAAY,OAAZ,C;UOt+PP,U;UADP,YPw+Pe,WOx+PH,WPw+PwB,GOx+PxB,C;UACL,IAAI,aAAJ,C;YACH,aPs+PuC,gB;YAA5B,WOr+PX,aPq+PgC,GOr+PhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPk+PA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAET,OAAO,W;MACX,C;KAfA,C;0FAiBA,yB;MAAA,+D;MAAA,sD;QASoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,UAAU,YAAY,OAAZ,C;UOv/PP,U;UADP,YPy/Pe,WOz/PH,WPy/PwB,GOz/PxB,C;UACL,IAAI,aAAJ,C;YACH,aPu/PuC,gB;YAA5B,WOt/PX,aPs/PgC,GOt/PhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPm/PA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAET,OAAO,W;MACX,C;KAfA,C;0FAiBA,yB;MAAA,+D;MAAA,sD;QASoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,UAAU,YAAY,OAAZ,C;UOxgQP,U;UADP,YP0gQe,WO1gQH,WP0gQwB,GO1gQxB,C;UACL,IAAI,aAAJ,C;YACH,aPwgQuC,gB;YAA5B,WOvgQX,aPugQgC,GOvgQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPogQA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAET,OAAO,W;MACX,C;KAfA,C;0FAiBA,yB;MAAA,+D;MAAA,sD;QASoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,UAAU,YAAY,OAAZ,C;UOzhQP,U;UADP,YP2hQe,WO3hQH,WP2hQwB,GO3hQxB,C;UACL,IAAI,aAAJ,C;YACH,aPyhQuC,gB;YAA5B,WOxhQX,aPwhQgC,GOxhQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPqhQA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAET,OAAO,W;MACX,C;KAfA,C;0FAiBA,yB;MAAA,+D;MAAA,sD;QASoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,UAAU,YAAY,OAAZ,C;UO1iQP,U;UADP,YP4iQe,WO5iQH,WP4iQwB,GO5iQxB,C;UACL,IAAI,aAAJ,C;YACH,aP0iQuC,gB;YAA5B,WOziQX,aPyiQgC,GOziQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPsiQA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAET,OAAO,W;MACX,C;KAfA,C;0FAiBA,yB;MAAA,+D;MAAA,sD;QASoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,UAAU,YAAY,OAAZ,C;UO3jQP,U;UADP,YP6jQe,WO7jQH,WP6jQwB,GO7jQxB,C;UACL,IAAI,aAAJ,C;YACH,aP2jQuC,gB;YAA5B,WO1jQX,aP0jQgC,GO1jQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPujQA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAET,OAAO,W;MACX,C;KAfA,C;0FAiBA,yB;MAAA,oC;MAAA,+D;MAAA,gC;MAAA,sD;QASoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAhB,UAAgB,SAAhB,O;UACI,UAAU,YAAY,oBAAZ,C;UO5kQP,U;UADP,YP8kQe,WO9kQH,WP8kQwB,GO9kQxB,C;UACL,IAAI,aAAJ,C;YACH,aP4kQuC,gB;YAA5B,WO3kQX,aP2kQgC,GO3kQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPwkQA,iB;UACA,IAAK,WAAI,oBAAJ,C;;QAET,OAAO,W;MACX,C;KAfA,C;0FAiBA,yB;MAAA,+D;MAAA,sE;QAUoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,UAAU,YAAY,OAAZ,C;UO9lQP,U;UADP,YPgmQe,WOhmQH,WPgmQwB,GOhmQxB,C;UACL,IAAI,aAAJ,C;YACH,aP8lQuC,gB;YAA5B,WO7lQX,aP6lQgC,GO7lQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UP0lQA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;MACX,C;KAhBA,C;0FAkBA,yB;MAAA,+D;MAAA,sE;QAUoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,UAAU,YAAY,OAAZ,C;UOhnQP,U;UADP,YPknQe,WOlnQH,WPknQwB,GOlnQxB,C;UACL,IAAI,aAAJ,C;YACH,aPgnQuC,gB;YAA5B,WO/mQX,aP+mQgC,GO/mQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UP4mQA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;MACX,C;KAhBA,C;2FAkBA,yB;MAAA,+D;MAAA,sE;QAUoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,UAAU,YAAY,OAAZ,C;UOloQP,U;UADP,YPooQe,WOpoQH,WPooQwB,GOpoQxB,C;UACL,IAAI,aAAJ,C;YACH,aPkoQuC,gB;YAA5B,WOjoQX,aPioQgC,GOjoQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UP8nQA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;MACX,C;KAhBA,C;2FAkBA,yB;MAAA,+D;MAAA,sE;QAUoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,UAAU,YAAY,OAAZ,C;UOppQP,U;UADP,YPspQe,WOtpQH,WPspQwB,GOtpQxB,C;UACL,IAAI,aAAJ,C;YACH,aPopQuC,gB;YAA5B,WOnpQX,aPmpQgC,GOnpQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPgpQA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;MACX,C;KAhBA,C;2FAkBA,yB;MAAA,+D;MAAA,sE;QAUoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,UAAU,YAAY,OAAZ,C;UOtqQP,U;UADP,YPwqQe,WOxqQH,WPwqQwB,GOxqQxB,C;UACL,IAAI,aAAJ,C;YACH,aPsqQuC,gB;YAA5B,WOrqQX,aPqqQgC,GOrqQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPkqQA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;MACX,C;KAhBA,C;2FAkBA,yB;MAAA,+D;MAAA,sE;QAUoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,UAAU,YAAY,OAAZ,C;UOxrQP,U;UADP,YP0rQe,WO1rQH,WP0rQwB,GO1rQxB,C;UACL,IAAI,aAAJ,C;YACH,aPwrQuC,gB;YAA5B,WOvrQX,aPurQgC,GOvrQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPorQA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;MACX,C;KAhBA,C;2FAkBA,yB;MAAA,+D;MAAA,sE;QAUoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,UAAU,YAAY,OAAZ,C;UO1sQP,U;UADP,YP4sQe,WO5sQH,WP4sQwB,GO5sQxB,C;UACL,IAAI,aAAJ,C;YACH,aP0sQuC,gB;YAA5B,WOzsQX,aPysQgC,GOzsQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPssQA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;MACX,C;KAhBA,C;2FAkBA,yB;MAAA,+D;MAAA,sE;QAUoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,UAAU,YAAY,OAAZ,C;UO5tQP,U;UADP,YP8tQe,WO9tQH,WP8tQwB,GO9tQxB,C;UACL,IAAI,aAAJ,C;YACH,aP4tQuC,gB;YAA5B,WO3tQX,aP2tQgC,GO3tQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UPwtQA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;MACX,C;KAhBA,C;2FAkBA,yB;MAAA,oC;MAAA,+D;MAAA,gC;MAAA,sE;QAUoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAhB,UAAgB,SAAhB,O;UACI,UAAU,YAAY,oBAAZ,C;UO9uQP,U;UADP,YPgvQe,WOhvQH,WPgvQwB,GOhvQxB,C;UACL,IAAI,aAAJ,C;YACH,aP8uQuC,gB;YAA5B,WO7uQX,aP6uQgC,GO7uQhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UP0uQA,iB;UACA,IAAK,WAAI,eAAe,oBAAf,CAAJ,C;;QAET,OAAO,W;MACX,C;KAhBA,C;0FAkBA,yB;MAAA,kC;MAAA,4C;;QAQW,sC;QAAA,8C;MARX,C;MAAA,gE;QASqD,OAAgB,qBAAhB,oBAAgB,C;MAAhB,C;MATrD,oE;QAU4C,gCAAY,OAAZ,C;MAAA,C;MAV5C,gF;MAAA,yC;QAQI,2D;MAIJ,C;KAZA,C;4EAcA,yB;MAAA,gE;MAAA,uC;QAOW,kBAAM,eAAa,gBAAb,C;QA6UA,Q;QAAb,iD;UAAa,WAAb,e;UACI,WAAY,WA9UiB,SA8Ub,CAAU,IAAV,CAAJ,C;;QA9UhB,OA+UO,W;MA9UX,C;KARA,C;8EAUA,yB;MAAA,gE;MAAA,uC;QAOW,kBAAM,eAAa,gBAAb,C;QA6UA,Q;QAAb,iD;UAAa,WAAb,e;UACI,WAAY,WA9UiB,SA8Ub,CAAU,IAAV,CAAJ,C;;QA9UhB,OA+UO,W;MA9UX,C;KARA,C;8EAUA,yB;MAAA,gE;MAAA,uC;QAOW,kBAAM,eAAa,gBAAb,C;QA6UA,Q;QAAb,iD;UAAa,WAAb,e;UACI,WAAY,WA9UiB,SA8Ub,CAAU,IAAV,CAAJ,C;;QA9UhB,OA+UO,W;MA9UX,C;KARA,C;8EAUA,yB;MAAA,gE;MAAA,uC;QAOW,kBAAM,eAAa,gBAAb,C;QA6UA,Q;QAAb,iD;UAAa,WAAb,e;UACI,WAAY,WA9UiB,SA8Ub,CAAU,IAAV,CAAJ,C;;QA9UhB,OA+UO,W;MA9UX,C;KARA,C;8EAUA,yB;MAAA,gE;MAAA,uC;QAOW,kBAAM,eAAa,gBAAb,C;QA6UA,Q;QAAb,iD;UAAa,WAAb,e;UACI,WAAY,WA9UiB,SA8Ub,CAAU,IAAV,CAAJ,C;;QA9UhB,OA+UO,W;MA9UX,C;KARA,C;8EAUA,yB;MAAA,gE;MAAA,uC;QAOW,kBAAM,eAAa,gBAAb,C;QA6UA,Q;QAAb,iD;UAAa,WAAb,e;UACI,WAAY,WA9UiB,SA8Ub,CAAU,IAAV,CAAJ,C;;QA9UhB,OA+UO,W;MA9UX,C;KARA,C;8EAUA,yB;MAAA,gE;MAAA,uC;QAOW,kBAAM,eAAa,gBAAb,C;QA6UA,Q;QAAb,iD;UAAa,WAAb,e;UACI,WAAY,WA9UiB,SA8Ub,CAAU,IAAV,CAAJ,C;;QA9UhB,OA+UO,W;MA9UX,C;KARA,C;8EAUA,yB;MAAA,gE;MAAA,uC;QAOW,kBAAM,eAAa,gBAAb,C;QA6UA,Q;QAAb,iD;UAAa,WAAb,e;UACI,WAAY,WA9UiB,SA8Ub,CAAU,IAAV,CAAJ,C;;QA9UhB,OA+UO,W;MA9UX,C;KARA,C;8EAUA,yB;MAAA,gE;MA+UA,oC;MAAA,gC;MA/UA,uC;QAOW,kBAAM,eAAa,gBAAb,C;QA6UA,Q;QAAb,iD;UAAa,WAAb,0B;UACI,WAAY,WA9UiB,SA8Ub,CAAU,iBAAV,CAAJ,C;;QA9UhB,OA+UO,W;MA9UX,C;KARA,C;0FAUA,yB;MAAA,gE;MAAA,uC;QAOW,kBAAa,eAAa,gBAAb,C;QAgHP,gB;QADb,YAAY,C;QACZ,iD;UAAa,WAAb,e;UACI,WAAY,WAjHwB,SAiHpB,EAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;QAjHhB,OAkHO,W;MAjHX,C;KARA,C;4FAUA,yB;MAAA,gE;MAAA,uC;QAOW,kBAAa,eAAa,gBAAb,C;QAmHP,gB;QADb,YAAY,C;QACZ,iD;UAAa,WAAb,e;UACI,WAAY,WApHwB,SAoHpB,EAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;QApHhB,OAqHO,W;MApHX,C;KARA,C;4FAUA,yB;MAAA,gE;MAAA,uC;QAOW,kBAAa,eAAa,gBAAb,C;QAsHP,gB;QADb,YAAY,C;QACZ,iD;UAAa,WAAb,e;UACI,WAAY,WAvHwB,SAuHpB,EAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;QAvHhB,OAwHO,W;MAvHX,C;KARA,C;4FAUA,yB;MAAA,gE;MAAA,uC;QAOW,kBAAa,eAAa,gBAAb,C;QAyHP,gB;QADb,YAAY,C;QACZ,iD;UAAa,WAAb,e;UACI,WAAY,WA1HwB,SA0HpB,EAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;QA1HhB,OA2HO,W;MA1HX,C;KARA,C;4FAUA,yB;MAAA,gE;MAAA,uC;QAOW,kBAAa,eAAa,gBAAb,C;QA4HP,gB;QADb,YAAY,C;QACZ,iD;UAAa,WAAb,e;UACI,WAAY,WA7HwB,SA6HpB,EAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;QA7HhB,OA8HO,W;MA7HX,C;KARA,C;2FAUA,yB;MAAA,gE;MAAA,uC;QAOW,kBAAa,eAAa,gBAAb,C;QA+HP,gB;QADb,YAAY,C;QACZ,iD;UAAa,WAAb,e;UACI,WAAY,WAhIwB,SAgIpB,EAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;QAhIhB,OAiIO,W;MAhIX,C;KARA,C;4FAUA,yB;MAAA,gE;MAAA,uC;QAOW,kBAAa,eAAa,gBAAb,C;QAkIP,gB;QADb,YAAY,C;QACZ,iD;UAAa,WAAb,e;UACI,WAAY,WAnIwB,SAmIpB,EAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;QAnIhB,OAoIO,W;MAnIX,C;KARA,C;4FAUA,yB;MAAA,gE;MAAA,uC;QAOW,kBAAa,eAAa,gBAAb,C;QAqIP,gB;QADb,YAAY,C;QACZ,iD;UAAa,WAAb,e;UACI,WAAY,WAtIwB,SAsIpB,EAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;QAtIhB,OAuIO,W;MAtIX,C;KARA,C;4FAUA,yB;MAAA,gE;MAuIA,oC;MAAA,gC;MAvIA,uC;QAOW,kBAAa,eAAa,gBAAb,C;QAwIP,gB;QADb,YAAY,C;QACZ,iD;UAAa,WAAb,0B;UACI,WAAY,WAzIwB,SAyIpB,EAAU,cAAV,EAAU,sBAAV,WAAmB,iBAAnB,CAAJ,C;;QAzIhB,OA0IO,W;MAzIX,C;KARA,C;wGAUA,yB;MAAA,+D;MAAA,uC;QAOW,kBAAoB,gB;QA21Dd,gB;QADb,YAAY,C;QACZ,iD;UAAa,WAAb,e;UAj1DmC,U;UAAA,cAVQ,SAUR,EAi1DT,cAj1DS,EAi1DT,sBAj1DS,WAi1DA,IAj1DA,W;YAA6C,6B;;;QAVhF,OAWO,W;MAVX,C;KARA,C;4GAUA,yB;MAAA,oD;QAw1DiB,gB;QADb,YAAY,C;QACZ,iD;UAAa,WAAb,e;UAj1DmC,U;UAAA,yBAi1DT,cAj1DS,EAi1DT,sBAj1DS,WAi1DA,IAj1DA,W;YAA6C,6B;;;QAChF,OAAO,W;MACX,C;KATA,C;;MAmBiB,UACiB,M;MAF9B,YAAY,C;MACZ,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAUiB,UACiB,M;MAF9B,YAAY,C;MACZ,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAUiB,UACiB,M;MAF9B,YAAY,C;MACZ,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAUiB,UACiB,M;MAF9B,YAAY,C;MACZ,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAUiB,UACiB,M;MAF9B,YAAY,C;MACZ,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAUiB,UACiB,M;MAF9B,YAAY,C;MACZ,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAUiB,UACiB,M;MAF9B,YAAY,C;MACZ,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAUiB,UACiB,M;MAF9B,YAAY,C;MACZ,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;MAChB,OAAO,W;IACX,C;gGAEA,yB;MAAA,oC;MAAA,gC;MAAA,oD;QAQiB,UACiB,M;QAF9B,YAAY,C;QACZ,wBAAa,SAAb,gB;UAAa,WAAb,UAAa,SAAb,O;UACI,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,iBAAnB,CAAJ,C;;QAChB,OAAO,W;MACX,C;KAXA,C;0FAaA,yB;MAAA,+D;MAAA,uC;QAKW,kBAAa,gB;QAipDJ,Q;QAAhB,iD;UAAgB,cAAhB,e;UAzoDqB,U;UAAA,cARe,SAQf,CAyoDQ,OAzoDR,W;YAAsC,6B;;;QAR3D,OASO,W;MARX,C;KANA,C;8FAQA,yB;MAAA,oD;QA8oDoB,Q;QAAhB,iD;UAAgB,cAAhB,e;UAzoDqB,U;UAAA,wBAyoDQ,OAzoDR,W;YAAsC,6B;;;QAC3D,OAAO,W;MACX,C;KAPA,C;;MAciB,Q;MAAb,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAOiB,Q;MAAb,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAOiB,Q;MAAb,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAOiB,Q;MAAb,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAOiB,Q;MAAb,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAOiB,Q;MAAb,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAOiB,Q;MAAb,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAOiB,Q;MAAb,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QACI,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;IACX,C;kFAEA,yB;MAAA,oC;MAAA,gC;MAAA,oD;QAKiB,Q;QAAb,wBAAa,SAAb,gB;UAAa,WAAb,UAAa,SAAb,O;UACI,WAAY,WAAI,UAAU,iBAAV,CAAJ,C;;QAChB,OAAO,W;MACX,C;KARA,C;;MAc4B,mB;QAAE,2C;MAAF,C;IAAA,C;;MAAxB,OAAO,qBAAiB,2BAAjB,C;IACX,C;;MAM4B,mB;QAAE,+C;MAAF,C;IAAA,C;;MAAxB,OAAO,qBAAiB,6BAAjB,C;IACX,C;;MAM4B,mB;QAAE,gD;MAAF,C;IAAA,C;;MAAxB,OAAO,qBAAiB,6BAAjB,C;IACX,C;;MAM4B,mB;QAAE,8C;MAAF,C;IAAA,C;;MAAxB,OAAO,qBAAiB,6BAAjB,C;IACX,C;;MAM4B,mB;QAAE,+C;MAAF,C;IAAA,C;;MAAxB,OAAO,qBAAiB,6BAAjB,C;IACX,C;;MAM4B,mB;QAAE,gD;MAAF,C;IAAA,C;;MAAxB,OAAO,qBAAiB,6BAAjB,C;IACX,C;;MAM4B,mB;QAAE,iD;MAAF,C;IAAA,C;;MAAxB,OAAO,qBAAiB,6BAAjB,C;IACX,C;;MAM4B,mB;QAAE,kD;MAAF,C;IAAA,C;;MAAxB,OAAO,qBAAiB,6BAAjB,C;IACX,C;;MAM4B,mB;QAAE,+C;MAAF,C;IAAA,C;;MAAxB,OAAO,qBAAiB,6BAAjB,C;IACX,C;;MAQI,OAA2B,SAAf,aAAL,SAAK,CAAe,C;IAC/B,C;;MAQI,OAA2B,SAAf,eAAL,SAAK,CAAe,C;IAC/B,C;;MAQI,OAA2B,SAAf,eAAL,SAAK,CAAe,C;IAC/B,C;;MAQI,OAA2B,SAAf,eAAL,SAAK,CAAe,C;IAC/B,C;;MAQI,OAA2B,SAAf,eAAL,SAAK,CAAe,C;IAC/B,C;;MAQI,OAA2B,SAAf,eAAL,SAAK,CAAe,C;IAC/B,C;;MAQI,OAA2B,SAAf,eAAL,SAAK,CAAe,C;IAC/B,C;;MAQI,OAA2B,SAAf,eAAL,SAAK,CAAe,C;IAC/B,C;;MAQI,OAA2B,SAAf,eAAL,SAAK,CAAe,C;IAC/B,C;0FAEA,yB;MAAA,2D;MAAA,+D;MAAA,sC;QASc,Q;QAFV,UAAU,c;QACV,WAAW,gB;QACX,wBAAU,SAAV,gB;UAAU,QAAA,SAAV,M;UACI,UAAU,SAAS,CAAT,C;UACV,IAAI,GAAI,WAAI,GAAJ,CAAR,C;YACI,IAAK,WAAI,CAAJ,C;;QAEb,OAAO,I;MACX,C;KAfA,C;4FAiBA,yB;MAAA,2D;MAAA,+D;MAAA,sC;QASc,Q;QAFV,UAAU,c;QACV,WAAW,gB;QACX,wBAAU,SAAV,gB;UAAU,QAAA,SAAV,M;UACI,UAAU,SAAS,CAAT,C;UACV,IAAI,GAAI,WAAI,GAAJ,CAAR,C;YACI,IAAK,WAAI,CAAJ,C;;QAEb,OAAO,I;MACX,C;KAfA,C;4FAiBA,yB;MAAA,2D;MAAA,+D;MAAA,sC;QASc,Q;QAFV,UAAU,c;QACV,WAAW,gB;QACX,wBAAU,SAAV,gB;UAAU,QAAA,SAAV,M;UACI,UAAU,SAAS,CAAT,C;UACV,IAAI,GAAI,WAAI,GAAJ,CAAR,C;YACI,IAAK,WAAI,CAAJ,C;;QAEb,OAAO,I;MACX,C;KAfA,C;4FAiBA,yB;MAAA,2D;MAAA,+D;MAAA,sC;QASc,Q;QAFV,UAAU,c;QACV,WAAW,gB;QACX,wBAAU,SAAV,gB;UAAU,QAAA,SAAV,M;UACI,UAAU,SAAS,CAAT,C;UACV,IAAI,GAAI,WAAI,GAAJ,CAAR,C;YACI,IAAK,WAAI,CAAJ,C;;QAEb,OAAO,I;MACX,C;KAfA,C;4FAiBA,yB;MAAA,2D;MAAA,+D;MAAA,sC;QASc,Q;QAFV,UAAU,c;QACV,WAAW,gB;QACX,wBAAU,SAAV,gB;UAAU,QAAA,SAAV,M;UACI,UAAU,SAAS,CAAT,C;UACV,IAAI,GAAI,WAAI,GAAJ,CAAR,C;YACI,IAAK,WAAI,CAAJ,C;;QAEb,OAAO,I;MACX,C;KAfA,C;4FAiBA,yB;MAAA,2D;MAAA,+D;MAAA,sC;QASc,Q;QAFV,UAAU,c;QACV,WAAW,gB;QACX,wBAAU,SAAV,gB;UAAU,QAAA,SAAV,M;UACI,UAAU,SAAS,CAAT,C;UACV,IAAI,GAAI,WAAI,GAAJ,CAAR,C;YACI,IAAK,WAAI,CAAJ,C;;QAEb,OAAO,I;MACX,C;KAfA,C;4FAiBA,yB;MAAA,2D;MAAA,+D;MAAA,sC;QASc,Q;QAFV,UAAU,c;QACV,WAAW,gB;QACX,wBAAU,SAAV,gB;UAAU,QAAA,SAAV,M;UACI,UAAU,SAAS,CAAT,C;UACV,IAAI,GAAI,WAAI,GAAJ,CAAR,C;YACI,IAAK,WAAI,CAAJ,C;;QAEb,OAAO,I;MACX,C;KAfA,C;4FAiBA,yB;MAAA,2D;MAAA,+D;MAAA,sC;QASc,Q;QAFV,UAAU,c;QACV,WAAW,gB;QACX,wBAAU,SAAV,gB;UAAU,QAAA,SAAV,M;UACI,UAAU,SAAS,CAAT,C;UACV,IAAI,GAAI,WAAI,GAAJ,CAAR,C;YACI,IAAK,WAAI,CAAJ,C;;QAEb,OAAO,I;MACX,C;KAfA,C;4FAiBA,yB;MAAA,2D;MAAA,+D;MAAA,oC;MAAA,gC;MAAA,sC;QASc,Q;QAFV,UAAU,c;QACV,WAAW,gB;QACX,wBAAU,SAAV,gB;UAAU,QAAV,UAAU,SAAV,O;UACI,UAAU,SAAS,cAAT,C;UACV,IAAI,GAAI,WAAI,GAAJ,CAAR,C;YACI,IAAK,WAAI,cAAJ,C;;QAEb,OAAO,I;MACX,C;KAfA,C;;MAuBI,UAAe,aAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,aAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MASiB,Q;MADb,UAAU,qBAAiB,YAAY,gBAAZ,CAAjB,C;MACV,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,GAAI,WAAI,IAAJ,C;;MACvB,OAAO,G;IACX,C;;MASiB,Q;MADb,UAAU,qBAAoB,YAAY,gBAAZ,CAApB,C;MACV,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,GAAI,WAAI,IAAJ,C;;MACvB,OAAO,G;IACX,C;;MASiB,Q;MADb,UAAU,qBAAqB,YAAY,gBAAZ,CAArB,C;MACV,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,GAAI,WAAI,IAAJ,C;;MACvB,OAAO,G;IACX,C;;MASiB,Q;MADb,UAAU,qBAAmB,YAAY,gBAAZ,CAAnB,C;MACV,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,GAAI,WAAI,IAAJ,C;;MACvB,OAAO,G;IACX,C;;MASiB,Q;MADb,UAAU,qBAAoB,YAAY,gBAAZ,CAApB,C;MACV,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,GAAI,WAAI,IAAJ,C;;MACvB,OAAO,G;IACX,C;;MASiB,Q;MADb,UAAU,qBAAqB,YAAY,gBAAZ,CAArB,C;MACV,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,GAAI,WAAI,IAAJ,C;;MACvB,OAAO,G;IACX,C;;MASiB,Q;MADb,UAAU,qBAAsB,YAAY,gBAAZ,CAAtB,C;MACV,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,GAAI,WAAI,IAAJ,C;;MACvB,OAAO,G;IACX,C;;MASiB,Q;MADb,UAAU,qBAAuB,YAAY,gBAAZ,CAAvB,C;MACV,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,GAAI,WAAI,IAAJ,C;;MACvB,OAAO,G;IACX,C;;MASiB,Q;MADb,UAAU,qBAAoB,YAAY,gBAAZ,CAApB,C;MACV,wBAAa,SAAb,gB;QAAa,WAAb,UAAa,SAAb,O;QAAmB,GAAI,WAAI,iBAAJ,C;;MACvB,OAAO,G;IACX,C;;MAUI,UAAe,aAAL,SAAK,C;MACX,OAAJ,GAAI,EAAO,KAAP,C;MACJ,OAAO,G;IACX,C;;MAUI,UAAe,eAAL,SAAK,C;MACX,OAAJ,GAAI,EAAO,KAAP,C;MACJ,OAAO,G;IACX,C;;MAUI,UAAe,eAAL,SAAK,C;MACX,OAAJ,GAAI,EAAO,KAAP,C;MACJ,OAAO,G;IACX,C;;MAUI,UAAe,eAAL,SAAK,C;MACX,OAAJ,GAAI,EAAO,KAAP,C;MACJ,OAAO,G;IACX,C;;MAUI,UAAe,eAAL,SAAK,C;MACX,OAAJ,GAAI,EAAO,KAAP,C;MACJ,OAAO,G;IACX,C;;MAUI,UAAe,eAAL,SAAK,C;MACX,OAAJ,GAAI,EAAO,KAAP,C;MACJ,OAAO,G;IACX,C;;MAUI,UAAe,eAAL,SAAK,C;MACX,OAAJ,GAAI,EAAO,KAAP,C;MACJ,OAAO,G;IACX,C;;MAUI,UAAe,eAAL,SAAK,C;MACX,OAAJ,GAAI,EAAO,KAAP,C;MACJ,OAAO,G;IACX,C;;MAUI,UAAe,eAAL,SAAK,C;MACX,OAAJ,GAAI,EAAO,KAAP,C;MACJ,OAAO,G;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;IACX,C;8EAEA,yB;MAAA,oC;MAAA,gC;MAAA,uC;QAMoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAhB,UAAgB,SAAhB,O;UAAsB,IAAI,CAAC,UAAU,oBAAV,CAAL,C;YAAyB,OAAO,K;;QACtD,OAAO,I;MACX,C;KARA,C;;MAgBI,OAAO,EArgHA,qBAAQ,CAqgHR,C;IACX,C;;MAQI,OAAO,EAtgHA,qBAAQ,CAsgHR,C;IACX,C;;MAQI,OAAO,EAvgHA,qBAAQ,CAugHR,C;IACX,C;;MAQI,OAAO,EAxgHA,qBAAQ,CAwgHR,C;IACX,C;;MAQI,OAAO,EAzgHA,qBAAQ,CAygHR,C;IACX,C;;MAQI,OAAO,EA1gHA,qBAAQ,CA0gHR,C;IACX,C;;MAQI,OAAO,EA3gHA,qBAAQ,CA2gHR,C;IACX,C;;MAQI,OAAO,EA5gHA,qBAAQ,CA4gHR,C;IACX,C;;MAQI,OAAO,EA7gHA,qBAAQ,CA6gHR,C;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;IACX,C;+EAEA,yB;MAAA,oC;MAAA,gC;MAAA,uC;QAMoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAhB,UAAgB,SAAhB,O;UAAsB,IAAI,UAAU,oBAAV,CAAJ,C;YAAwB,OAAO,I;;QACrD,OAAO,K;MACX,C;KARA,C;;MAeI,OAAO,gB;IACX,C;;MAOI,OAAO,gB;IACX,C;;MAOI,OAAO,gB;IACX,C;;MAOI,OAAO,gB;IACX,C;;MAOI,OAAO,gB;IACX,C;;MAOI,OAAO,gB;IACX,C;;MAOI,OAAO,gB;IACX,C;;MAOI,OAAO,gB;IACX,C;;MAOI,OAAO,gB;IACX,C;;MAOoB,Q;MADhB,YAAY,C;MACZ,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,qB;;MAC9C,OAAO,K;IACX,C;;MAOoB,Q;MADhB,YAAY,C;MACZ,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,qB;;MAC9C,OAAO,K;IACX,C;;MAOoB,Q;MADhB,YAAY,C;MACZ,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,qB;;MAC9C,OAAO,K;IACX,C;;MAOoB,Q;MADhB,YAAY,C;MACZ,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,qB;;MAC9C,OAAO,K;IACX,C;;MAOoB,Q;MADhB,YAAY,C;MACZ,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,qB;;MAC9C,OAAO,K;IACX,C;;MAOoB,Q;MADhB,YAAY,C;MACZ,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,qB;;MAC9C,OAAO,K;IACX,C;;MAOoB,Q;MADhB,YAAY,C;MACZ,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,qB;;MAC9C,OAAO,K;IACX,C;;MAOoB,Q;MADhB,YAAY,C;MACZ,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,qB;;MAC9C,OAAO,K;IACX,C;mFAEA,yB;MAAA,oC;MAAA,gC;MAAA,uC;QAKoB,Q;QADhB,YAAY,C;QACZ,wBAAgB,SAAhB,gB;UAAgB,cAAhB,UAAgB,SAAhB,O;UAAsB,IAAI,UAAU,oBAAV,CAAJ,C;YAAwB,qB;;QAC9C,OAAO,K;MACX,C;KAPA,C;;MAcoB,Q;MADhB,kBAAkB,O;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;IACX,C;;MAOoB,Q;MADhB,kBAAkB,O;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;IACX,C;;MAOoB,Q;MADhB,kBAAkB,O;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;IACX,C;;MAOoB,Q;MADhB,kBAAkB,O;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;IACX,C;;MAOoB,Q;MADhB,kBAAkB,O;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;IACX,C;;MAOoB,Q;MADhB,kBAAkB,O;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;IACX,C;;MAOoB,Q;MADhB,kBAAkB,O;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;IACX,C;;MAOoB,Q;MADhB,kBAAkB,O;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;IACX,C;gFAEA,yB;MAAA,oC;MAAA,gC;MAAA,gD;QAKoB,Q;QADhB,kBAAkB,O;QAClB,wBAAgB,SAAhB,gB;UAAgB,cAAhB,UAAgB,SAAhB,O;UAAsB,cAAc,UAAU,WAAV,EAAuB,oBAAvB,C;;QACpC,OAAO,W;MACX,C;KAPA,C;;MAkBoB,UAA8B,M;MAF9C,YAAY,C;MACZ,kBAAkB,O;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,OAAhC,C;;MACpC,OAAO,W;IACX,C;;MAWoB,UAA8B,M;MAF9C,YAAY,C;MACZ,kBAAkB,O;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,OAAhC,C;;MACpC,OAAO,W;IACX,C;;MAWoB,UAA8B,M;MAF9C,YAAY,C;MACZ,kBAAkB,O;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,OAAhC,C;;MACpC,OAAO,W;IACX,C;;MAWoB,UAA8B,M;MAF9C,YAAY,C;MACZ,kBAAkB,O;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,OAAhC,C;;MACpC,OAAO,W;IACX,C;;MAWoB,UAA8B,M;MAF9C,YAAY,C;MACZ,kBAAkB,O;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,OAAhC,C;;MACpC,OAAO,W;IACX,C;;MAWoB,UAA8B,M;MAF9C,YAAY,C;MACZ,kBAAkB,O;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,OAAhC,C;;MACpC,OAAO,W;IACX,C;;MAWoB,UAA8B,M;MAF9C,YAAY,C;MACZ,kBAAkB,O;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,OAAhC,C;;MACpC,OAAO,W;IACX,C;;MAWoB,UAA8B,M;MAF9C,YAAY,C;MACZ,kBAAkB,O;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,OAAhC,C;;MACpC,OAAO,W;IACX,C;8FAEA,yB;MAAA,oC;MAAA,gC;MAAA,gD;QASoB,UAA8B,M;QAF9C,YAAY,C;QACZ,kBAAkB,O;QAClB,wBAAgB,SAAhB,gB;UAAgB,cAAhB,UAAgB,SAAhB,O;UAAsB,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,oBAAhC,C;;QACpC,OAAO,W;MACX,C;KAXA,C;wFAaA,yB;MAAA,8D;MAAA,gD;QAOoC,Q;QAHhC,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,UAAI,YAAJ,EAAI,oBAAJ,OAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAVA,C;0FAYA,yB;MAAA,8D;MAAA,gD;QAOoC,Q;QAHhC,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,UAAI,YAAJ,EAAI,oBAAJ,OAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAVA,C;0FAYA,yB;MAAA,8D;MAAA,gD;QAOoC,Q;QAHhC,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,UAAI,YAAJ,EAAI,oBAAJ,OAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAVA,C;0FAYA,yB;MAAA,8D;MAAA,gD;QAOoC,Q;QAHhC,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,UAAI,YAAJ,EAAI,oBAAJ,OAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAVA,C;0FAYA,yB;MAAA,8D;MAAA,gD;QAOoC,Q;QAHhC,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,UAAI,YAAJ,EAAI,oBAAJ,OAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAVA,C;0FAYA,yB;MAAA,8D;MAAA,gD;QAOoC,Q;QAHhC,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,UAAI,YAAJ,EAAI,oBAAJ,OAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAVA,C;0FAYA,yB;MAAA,8D;MAAA,gD;QAOoC,Q;QAHhC,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,UAAI,YAAJ,EAAI,oBAAJ,OAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAVA,C;0FAYA,yB;MAAA,8D;MAAA,gD;QAOoC,Q;QAHhC,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,UAAI,YAAJ,EAAI,oBAAJ,OAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAVA,C;0FAYA,yB;MAAA,8D;MAAA,oC;MAAA,gD;QAOoC,Q;QAHhC,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,sBAAI,YAAJ,EAAI,oBAAJ,QAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAVA,C;sGAYA,yB;MAAA,8D;MAAA,gD;QAOI,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,UAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAdA,C;wGAgBA,yB;MAAA,8D;MAAA,gD;QAOI,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,UAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAdA,C;wGAgBA,yB;MAAA,8D;MAAA,gD;QAOI,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,UAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAdA,C;wGAgBA,yB;MAAA,8D;MAAA,gD;QAOI,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,UAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAdA,C;wGAgBA,yB;MAAA,8D;MAAA,gD;QAOI,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,UAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAdA,C;wGAgBA,yB;MAAA,8D;MAAA,gD;QAOI,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,UAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAdA,C;wGAgBA,yB;MAAA,8D;MAAA,gD;QAOI,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,UAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAdA,C;wGAgBA,yB;MAAA,8D;MAAA,gD;QAOI,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,UAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAdA,C;wGAgBA,yB;MAAA,8D;MAAA,oC;MAAA,gD;QAOI,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,sBAAI,KAAJ,EAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAdA,C;;MAoBoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,OAAO,OAAP,C;;IAC1B,C;;MAMoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,OAAO,OAAP,C;;IAC1B,C;;MAMoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,OAAO,OAAP,C;;IAC1B,C;;MAMoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,OAAO,OAAP,C;;IAC1B,C;;MAMoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,OAAO,OAAP,C;;IAC1B,C;;MAMoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,OAAO,OAAP,C;;IAC1B,C;;MAMoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,OAAO,OAAP,C;;IAC1B,C;;MAMoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,OAAO,OAAP,C;;IAC1B,C;sFAEA,yB;MAAA,oC;MAAA,gC;MAAA,oC;QAIoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAhB,UAAgB,SAAhB,O;UAAsB,OAAO,oBAAP,C;;MAC1B,C;KALA,C;;MAciB,UAAa,M;MAD1B,YAAY,C;MACZ,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,QAAO,cAAP,EAAO,sBAAP,WAAgB,IAAhB,C;;IACvB,C;;MASiB,UAAa,M;MAD1B,YAAY,C;MACZ,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,QAAO,cAAP,EAAO,sBAAP,WAAgB,IAAhB,C;;IACvB,C;;MASiB,UAAa,M;MAD1B,YAAY,C;MACZ,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,QAAO,cAAP,EAAO,sBAAP,WAAgB,IAAhB,C;;IACvB,C;;MASiB,UAAa,M;MAD1B,YAAY,C;MACZ,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,QAAO,cAAP,EAAO,sBAAP,WAAgB,IAAhB,C;;IACvB,C;;MASiB,UAAa,M;MAD1B,YAAY,C;MACZ,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,QAAO,cAAP,EAAO,sBAAP,WAAgB,IAAhB,C;;IACvB,C;;MASiB,UAAa,M;MAD1B,YAAY,C;MACZ,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,QAAO,cAAP,EAAO,sBAAP,WAAgB,IAAhB,C;;IACvB,C;;MASiB,UAAa,M;MAD1B,YAAY,C;MACZ,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,QAAO,cAAP,EAAO,sBAAP,WAAgB,IAAhB,C;;IACvB,C;;MASiB,UAAa,M;MAD1B,YAAY,C;MACZ,wBAAa,SAAb,gB;QAAa,WAAA,SAAb,M;QAAmB,QAAO,cAAP,EAAO,sBAAP,WAAgB,IAAhB,C;;IACvB,C;oGAEA,yB;MAAA,oC;MAAA,gC;MAAA,oC;QAOiB,UAAa,M;QAD1B,YAAY,C;QACZ,wBAAa,SAAb,gB;UAAa,WAAb,UAAa,SAAb,O;UAAmB,QAAO,cAAP,EAAO,sBAAP,WAAgB,iBAAhB,C;;MACvB,C;KARA,C;;MAoBiB,Q;MAHb,IAr6IO,qBAAQ,CAq6If,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACV,IAAQ,QAAJ,GAAI,CAAR,C;QAAiB,OAAO,G;MACX,+B;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAM,QAAF,CAAE,CAAN,C;UAAe,OAAO,C;QACtB,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAYiB,Q;MAHb,IAv7IO,qBAAQ,CAu7If,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACV,IAAQ,QAAJ,GAAI,CAAR,C;QAAiB,OAAO,G;MACX,+B;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAM,QAAF,CAAE,CAAN,C;UAAe,OAAO,C;QACtB,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IAt8IO,qBAAQ,CAs8If,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,+B;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,sBAAM,CAAN,KAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IA38IO,qBAAQ,CA28If,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IAh9IO,qBAAQ,CAg9If,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IAr9IO,qBAAQ,CAq9If,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IA19IO,qBAAQ,CA09If,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,oBAAM,CAAN,KAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAWiB,Q;MAHb,IAj+IO,qBAAQ,CAi+If,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACV,IAAQ,QAAJ,GAAI,CAAR,C;QAAiB,OAAO,G;MACX,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAM,QAAF,CAAE,CAAN,C;UAAe,OAAO,C;QACtB,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAWiB,Q;MAHb,IA1+IO,qBAAQ,CA0+If,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACV,IAAQ,QAAJ,GAAI,CAAR,C;QAAiB,OAAO,G;MACX,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAM,QAAF,CAAE,CAAN,C;UAAe,OAAO,C;QACtB,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IAz+IO,qBAAQ,CAy+If,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;gFAEA,yB;MAAA,8D;MAAA,sC;QAMI,IAxjJO,qBAAQ,CAwjJf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;kFAsBA,yB;MAAA,8D;MAAA,sC;QAMI,IAtkJO,qBAAQ,CAskJf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;kFAsBA,yB;MAAA,8D;MAAA,sC;QAMI,IAplJO,qBAAQ,CAolJf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;kFAsBA,yB;MAAA,8D;MAAA,sC;QAMI,IAlmJO,qBAAQ,CAkmJf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;kFAsBA,yB;MAAA,8D;MAAA,sC;QAMI,IAhnJO,qBAAQ,CAgnJf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;kFAsBA,yB;MAAA,8D;MAAA,sC;QAMI,IA9nJO,qBAAQ,CA8nJf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;kFAsBA,yB;MAAA,8D;MAAA,sC;QAMI,IA5oJO,qBAAQ,CA4oJf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;kFAsBA,yB;MAAA,8D;MAAA,sC;QAMI,IA1pJO,qBAAQ,CA0pJf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;kFAsBA,yB;MAAA,8D;MAAA,oC;MAAA,sC;QAMI,IAxqJO,qBAAQ,CAwqJf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,oBAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,cAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;;MA4BiB,Q;MAFb,IA5vJO,qBAAQ,CA4vJf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,+B;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IAjwJO,qBAAQ,CAiwJf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IAtwJO,qBAAQ,CAswJf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IA3wJO,qBAAQ,CA2wJf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IAhxJO,qBAAQ,CAgxJf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IArxJO,qBAAQ,CAqxJf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IA1xJO,qBAAQ,CA0xJf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IA/xJO,qBAAQ,CA+xJf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IApyJO,qBAAQ,CAoyJf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,gBAAR,EAAa,cAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAYiB,Q;MAHb,IAp3JO,qBAAQ,CAo3Jf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACV,IAAQ,QAAJ,GAAI,CAAR,C;QAAiB,OAAO,G;MACX,+B;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAM,QAAF,CAAE,CAAN,C;UAAe,OAAO,C;QACtB,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAYiB,Q;MAHb,IAt4JO,qBAAQ,CAs4Jf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACV,IAAQ,QAAJ,GAAI,CAAR,C;QAAiB,OAAO,G;MACX,+B;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAM,QAAF,CAAE,CAAN,C;UAAe,OAAO,C;QACtB,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IAr5JO,qBAAQ,CAq5Jf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,+B;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,sBAAM,CAAN,KAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IA15JO,qBAAQ,CA05Jf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IA/5JO,qBAAQ,CA+5Jf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IAp6JO,qBAAQ,CAo6Jf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IAz6JO,qBAAQ,CAy6Jf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,oBAAM,CAAN,KAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAWiB,Q;MAHb,IAh7JO,qBAAQ,CAg7Jf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACV,IAAQ,QAAJ,GAAI,CAAR,C;QAAiB,OAAO,G;MACX,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAM,QAAF,CAAE,CAAN,C;UAAe,OAAO,C;QACtB,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAWiB,Q;MAHb,IAz7JO,qBAAQ,CAy7Jf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACV,IAAQ,QAAJ,GAAI,CAAR,C;QAAiB,OAAO,G;MACX,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAM,QAAF,CAAE,CAAN,C;UAAe,OAAO,C;QACtB,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IAx7JO,qBAAQ,CAw7Jf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;gFAEA,yB;MAAA,8D;MAAA,sC;QAMI,IAvgKO,qBAAQ,CAugKf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;kFAsBA,yB;MAAA,8D;MAAA,sC;QAMI,IArhKO,qBAAQ,CAqhKf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;kFAsBA,yB;MAAA,8D;MAAA,sC;QAMI,IAniKO,qBAAQ,CAmiKf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;kFAsBA,yB;MAAA,8D;MAAA,sC;QAMI,IAjjKO,qBAAQ,CAijKf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;kFAsBA,yB;MAAA,8D;MAAA,sC;QAMI,IA/jKO,qBAAQ,CA+jKf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;kFAsBA,yB;MAAA,8D;MAAA,sC;QAMI,IA7kKO,qBAAQ,CA6kKf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;kFAsBA,yB;MAAA,8D;MAAA,sC;QAMI,IA3lKO,qBAAQ,CA2lKf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;kFAsBA,yB;MAAA,8D;MAAA,sC;QAMI,IAzmKO,qBAAQ,CAymKf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;kFAsBA,yB;MAAA,8D;MAAA,oC;MAAA,sC;QAMI,IAvnKO,qBAAQ,CAunKf,C;UAAe,OAAO,I;QACtB,cAAc,UAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,oBAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,UAAK,CAAL,C;UACR,QAAQ,SAAS,cAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;;MA4BiB,Q;MAFb,IA3sKO,qBAAQ,CA2sKf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,+B;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IAhtKO,qBAAQ,CAgtKf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IArtKO,qBAAQ,CAqtKf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IA1tKO,qBAAQ,CA0tKf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IA/tKO,qBAAQ,CA+tKf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IApuKO,qBAAQ,CAouKf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IAzuKO,qBAAQ,CAyuKf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IA9uKO,qBAAQ,CA8uKf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IAnvKO,qBAAQ,CAmvKf,C;QAAe,OAAO,I;MACtB,UAAU,UAAK,CAAL,C;MACG,iC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,UAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,gBAAR,EAAa,cAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQI,OAl0KO,qBAAQ,C;IAm0KnB,C;;MAQI,OAn0KO,qBAAQ,C;IAo0KnB,C;;MAQI,OAp0KO,qBAAQ,C;IAq0KnB,C;;MAQI,OAr0KO,qBAAQ,C;IAs0KnB,C;;MAQI,OAt0KO,qBAAQ,C;IAu0KnB,C;;MAQI,OAv0KO,qBAAQ,C;IAw0KnB,C;;MAQI,OAx0KO,qBAAQ,C;IAy0KnB,C;;MAQI,OAz0KO,qBAAQ,C;IA00KnB,C;;MAQI,OA10KO,qBAAQ,C;IA20KnB,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;IACX,C;;MAQoB,Q;MAAhB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QAAsB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;IACX,C;iFAEA,yB;MAAA,oC;MAAA,gC;MAAA,uC;QAMoB,Q;QAAhB,wBAAgB,SAAhB,gB;UAAgB,cAAhB,UAAgB,SAAhB,O;UAAsB,IAAI,UAAU,oBAAV,CAAJ,C;YAAwB,OAAO,K;;QACrD,OAAO,I;MACX,C;KARA,C;kFAUA,yB;MAAA,4F;MAAA,8D;MAAA,uC;QAOqB,Q;QAHjB,IA3+KO,qBAAQ,CA2+Kf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAqB,UAAK,CAAL,C;QACJ,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,UAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;MACX,C;KAXA,C;oFAaA,yB;MAAA,4F;MAAA,8D;MAAA,uC;QAOqB,Q;QAHjB,IAh/KO,qBAAQ,CAg/Kf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,UAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,UAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;MACX,C;KAXA,C;oFAaA,yB;MAAA,4F;MAAA,8D;MAAA,uC;QAOqB,Q;QAHjB,IAr/KO,qBAAQ,CAq/Kf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,UAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,UAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;MACX,C;KAXA,C;oFAaA,yB;MAAA,4F;MAAA,8D;MAAA,uC;QAOqB,Q;QAHjB,IA1/KO,qBAAQ,CA0/Kf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,UAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,UAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;MACX,C;KAXA,C;oFAaA,yB;MAAA,4F;MAAA,8D;MAAA,uC;QAOqB,Q;QAHjB,IA//KO,qBAAQ,CA+/Kf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,UAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,UAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;MACX,C;KAXA,C;oFAaA,yB;MAAA,4F;MAAA,8D;MAAA,uC;QAOqB,Q;QAHjB,IApgLO,qBAAQ,CAogLf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,UAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,UAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;MACX,C;KAXA,C;oFAaA,yB;MAAA,4F;MAAA,8D;MAAA,uC;QAOqB,Q;QAHjB,IAzgLO,qBAAQ,CAygLf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,UAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,UAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;MACX,C;KAXA,C;oFAaA,yB;MAAA,4F;MAAA,8D;MAAA,uC;QAOqB,Q;QAHjB,IA9gLO,qBAAQ,CA8gLf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,UAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,UAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;MACX,C;KAXA,C;oFAaA,yB;MAAA,4F;MAAA,8D;MAAA,oC;MAAA,gC;MAAA,uC;QAOqB,Q;QAHjB,IAnhLO,qBAAQ,CAmhLf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,UAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,oBAAU,wBAAV,EAAuB,sBAAK,KAAL,EAAvB,E;;QAElB,OAAO,W;MACX,C;KAXA,C;gGAaA,yB;MAAA,4F;MAAA,8D;MAAA,uC;QAUqB,Q;QAHjB,IAnmLO,qBAAQ,CAmmLf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAqB,UAAK,CAAL,C;QACJ,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,UAAK,KAAL,CAA9B,C;;QAElB,OAAO,W;MACX,C;KAdA,C;kGAgBA,yB;MAAA,4F;MAAA,8D;MAAA,uC;QAUqB,Q;QAHjB,IA3mLO,qBAAQ,CA2mLf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,UAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,UAAK,KAAL,CAA9B,C;;QAElB,OAAO,W;MACX,C;KAdA,C;kGAgBA,yB;MAAA,4F;MAAA,8D;MAAA,uC;QAUqB,Q;QAHjB,IAnnLO,qBAAQ,CAmnLf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,UAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,UAAK,KAAL,CAA9B,C;;QAElB,OAAO,W;MACX,C;KAdA,C;kGAgBA,yB;MAAA,4F;MAAA,8D;MAAA,uC;QAUqB,Q;QAHjB,IA3nLO,qBAAQ,CA2nLf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,UAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,UAAK,KAAL,CAA9B,C;;QAElB,OAAO,W;MACX,C;KAdA,C;kGAgBA,yB;MAAA,4F;MAAA,8D;MAAA,uC;QAUqB,Q;QAHjB,IAnoLO,qBAAQ,CAmoLf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,UAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,UAAK,KAAL,CAA9B,C;;QAElB,OAAO,W;MACX,C;KAdA,C;kGAgBA,yB;MAAA,4F;MAAA,8D;MAAA,uC;QAUqB,Q;QAHjB,IA3oLO,qBAAQ,CA2oLf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,UAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,UAAK,KAAL,CAA9B,C;;QAElB,OAAO,W;MACX,C;KAdA,C;kGAgBA,yB;MAAA,4F;MAAA,8D;MAAA,uC;QAUqB,Q;QAHjB,IAnpLO,qBAAQ,CAmpLf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,UAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,UAAK,KAAL,CAA9B,C;;QAElB,OAAO,W;MACX,C;KAdA,C;kGAgBA,yB;MAAA,4F;MAAA,8D;MAAA,uC;QAUqB,Q;QAHjB,IA3pLO,qBAAQ,CA2pLf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,UAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,UAAK,KAAL,CAA9B,C;;QAElB,OAAO,W;MACX,C;KAdA,C;kGAgBA,yB;MAAA,4F;MAAA,8D;MAAA,oC;MAAA,gC;MAAA,uC;QAUqB,Q;QAHjB,IAnqLO,qBAAQ,CAmqLf,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,UAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,oBAAU,KAAV,EAAiB,wBAAjB,EAA8B,sBAAK,KAAL,EAA9B,E;;QAElB,OAAO,W;MACX,C;KAdA,C;4FAgBA,yB;MAAA,8D;MAAA,4F;MAAA,uC;QAM6B,UAEO,M;QAJhC,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAqB,UAAI,YAAJ,EAAI,oBAAJ,O;QACrB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,UAAI,cAAJ,EAAI,sBAAJ,SAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAXA,C;8FAaA,yB;MAAA,8D;MAAA,4F;MAAA,uC;QAM0B,UAEU,M;QAJhC,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,UAAI,YAAJ,EAAI,oBAAJ,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,UAAI,cAAJ,EAAI,sBAAJ,SAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAXA,C;8FAaA,yB;MAAA,8D;MAAA,4F;MAAA,uC;QAM0B,UAEU,M;QAJhC,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,UAAI,YAAJ,EAAI,oBAAJ,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,UAAI,cAAJ,EAAI,sBAAJ,SAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAXA,C;8FAaA,yB;MAAA,8D;MAAA,4F;MAAA,uC;QAM0B,UAEU,M;QAJhC,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,UAAI,YAAJ,EAAI,oBAAJ,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,UAAI,cAAJ,EAAI,sBAAJ,SAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAXA,C;8FAaA,yB;MAAA,8D;MAAA,4F;MAAA,uC;QAM0B,UAEU,M;QAJhC,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,UAAI,YAAJ,EAAI,oBAAJ,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,UAAI,cAAJ,EAAI,sBAAJ,SAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAXA,C;8FAaA,yB;MAAA,8D;MAAA,4F;MAAA,uC;QAM0B,UAEU,M;QAJhC,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,UAAI,YAAJ,EAAI,oBAAJ,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,UAAI,cAAJ,EAAI,sBAAJ,SAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAXA,C;8FAaA,yB;MAAA,8D;MAAA,4F;MAAA,uC;QAM0B,UAEU,M;QAJhC,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,UAAI,YAAJ,EAAI,oBAAJ,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,UAAI,cAAJ,EAAI,sBAAJ,SAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAXA,C;8FAaA,yB;MAAA,8D;MAAA,4F;MAAA,uC;QAM0B,UAEU,M;QAJhC,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,UAAI,YAAJ,EAAI,oBAAJ,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,UAAI,cAAJ,EAAI,sBAAJ,SAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAXA,C;8FAaA,yB;MAAA,8D;MAAA,4F;MAAA,oC;MAAA,gC;MAAA,uC;QAM0B,UAEU,M;QAJhC,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,UAAI,YAAJ,EAAI,oBAAJ,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,oBAAU,sBAAI,cAAJ,EAAI,sBAAJ,UAAV,EAAwB,wBAAxB,E;;QAElB,OAAO,W;MACX,C;KAXA,C;0GAaA,yB;MAAA,8D;MAAA,4F;MAAA,uC;QAS6B,Q;QAFzB,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAqB,UAAI,YAAJ,EAAI,oBAAJ,O;QACrB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,UAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAfA,C;4GAiBA,yB;MAAA,8D;MAAA,4F;MAAA,uC;QAS0B,Q;QAFtB,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,UAAI,YAAJ,EAAI,oBAAJ,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,UAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAfA,C;4GAiBA,yB;MAAA,8D;MAAA,4F;MAAA,uC;QAS0B,Q;QAFtB,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,UAAI,YAAJ,EAAI,oBAAJ,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,UAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAfA,C;4GAiBA,yB;MAAA,8D;MAAA,4F;MAAA,uC;QAS0B,Q;QAFtB,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,UAAI,YAAJ,EAAI,oBAAJ,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,UAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAfA,C;4GAiBA,yB;MAAA,8D;MAAA,4F;MAAA,uC;QAS0B,Q;QAFtB,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,UAAI,YAAJ,EAAI,oBAAJ,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,UAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAfA,C;4GAiBA,yB;MAAA,8D;MAAA,4F;MAAA,uC;QAS0B,Q;QAFtB,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,UAAI,YAAJ,EAAI,oBAAJ,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,UAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAfA,C;4GAiBA,yB;MAAA,8D;MAAA,4F;MAAA,uC;QAS0B,Q;QAFtB,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,UAAI,YAAJ,EAAI,oBAAJ,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,UAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAfA,C;4GAiBA,yB;MAAA,8D;MAAA,4F;MAAA,uC;QAS0B,Q;QAFtB,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,UAAI,YAAJ,EAAI,oBAAJ,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,UAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAfA,C;4GAiBA,yB;MAAA,8D;MAAA,4F;MAAA,oC;MAAA,gC;MAAA,uC;QAS0B,Q;QAFtB,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,UAAI,YAAJ,EAAI,oBAAJ,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,oBAAU,KAAV,EAAiB,sBAAI,KAAJ,EAAjB,EAA6B,wBAA7B,E;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAfA,C;;MAsBoB,Q;MADhB,UAAe,C;MACf,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,YAAO,SAAS,OAAT,CAAP,I;;MAEJ,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAe,C;MACf,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,YAAO,SAAS,OAAT,CAAP,I;;MAEJ,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAe,C;MACf,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,YAAO,SAAS,OAAT,CAAP,I;;MAEJ,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAe,C;MACf,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,YAAO,SAAS,OAAT,CAAP,I;;MAEJ,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAe,C;MACf,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,YAAO,SAAS,OAAT,CAAP,I;;MAEJ,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAe,C;MACf,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,YAAO,SAAS,OAAT,CAAP,I;;MAEJ,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAe,C;MACf,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,YAAO,SAAS,OAAT,CAAP,I;;MAEJ,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAe,C;MACf,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,YAAO,SAAS,OAAT,CAAP,I;;MAEJ,OAAO,G;IACX,C;kFAEA,yB;MAAA,oC;MAAA,gC;MAAA,sC;QAKoB,Q;QADhB,UAAe,C;QACf,wBAAgB,SAAhB,gB;UAAgB,cAAhB,UAAgB,SAAhB,O;UACI,YAAO,SAAS,oBAAT,CAAP,I;;QAEJ,OAAO,G;MACX,C;KATA,C;;MAgBoB,Q;MADhB,UAAkB,G;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAkB,G;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAkB,G;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAkB,G;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAkB,G;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAkB,G;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAkB,G;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAkB,G;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;IACX,C;8FAEA,yB;MAAA,oC;MAAA,gC;MAAA,sC;QAKoB,Q;QADhB,UAAkB,G;QAClB,wBAAgB,SAAhB,gB;UAAgB,cAAhB,UAAgB,SAAhB,O;UACI,OAAO,SAAS,oBAAT,C;;QAEX,OAAO,G;MACX,C;KATA,C;;MAeoB,UAMT,M;MANP,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,IAAI,eAAJ,C;UACI,MAAM,gCAAyB,2BAAwB,SAAxB,MAAzB,C;;;MAId,OAAO,0D;IACX,C;wFAEA,yB;MAAA,+D;MAAA,6B;MAAA,uC;QAQoB,Q;QAFhB,YAAY,gB;QACZ,aAAa,gB;QACb,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,IAAI,UAAU,OAAV,CAAJ,C;YACI,KAAM,WAAI,OAAJ,C;;;YAEN,MAAO,WAAI,OAAJ,C;;;QAGf,OAAO,cAAK,KAAL,EAAY,MAAZ,C;MACX,C;KAhBA,C;0FAkBA,yB;MAAA,+D;MAAA,6B;MAAA,uC;QAQoB,Q;QAFhB,YAAY,gB;QACZ,aAAa,gB;QACb,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,IAAI,UAAU,OAAV,CAAJ,C;YACI,KAAM,WAAI,OAAJ,C;;;YAEN,MAAO,WAAI,OAAJ,C;;;QAGf,OAAO,cAAK,KAAL,EAAY,MAAZ,C;MACX,C;KAhBA,C;0FAkBA,yB;MAAA,+D;MAAA,6B;MAAA,uC;QAQoB,Q;QAFhB,YAAY,gB;QACZ,aAAa,gB;QACb,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,IAAI,UAAU,OAAV,CAAJ,C;YACI,KAAM,WAAI,OAAJ,C;;;YAEN,MAAO,WAAI,OAAJ,C;;;QAGf,OAAO,cAAK,KAAL,EAAY,MAAZ,C;MACX,C;KAhBA,C;0FAkBA,yB;MAAA,+D;MAAA,6B;MAAA,uC;QAQoB,Q;QAFhB,YAAY,gB;QACZ,aAAa,gB;QACb,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,IAAI,UAAU,OAAV,CAAJ,C;YACI,KAAM,WAAI,OAAJ,C;;;YAEN,MAAO,WAAI,OAAJ,C;;;QAGf,OAAO,cAAK,KAAL,EAAY,MAAZ,C;MACX,C;KAhBA,C;0FAkBA,yB;MAAA,+D;MAAA,6B;MAAA,uC;QAQoB,Q;QAFhB,YAAY,gB;QACZ,aAAa,gB;QACb,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,IAAI,UAAU,OAAV,CAAJ,C;YACI,KAAM,WAAI,OAAJ,C;;;YAEN,MAAO,WAAI,OAAJ,C;;;QAGf,OAAO,cAAK,KAAL,EAAY,MAAZ,C;MACX,C;KAhBA,C;0FAkBA,yB;MAAA,+D;MAAA,6B;MAAA,uC;QAQoB,Q;QAFhB,YAAY,gB;QACZ,aAAa,gB;QACb,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,IAAI,UAAU,OAAV,CAAJ,C;YACI,KAAM,WAAI,OAAJ,C;;;YAEN,MAAO,WAAI,OAAJ,C;;;QAGf,OAAO,cAAK,KAAL,EAAY,MAAZ,C;MACX,C;KAhBA,C;0FAkBA,yB;MAAA,+D;MAAA,6B;MAAA,uC;QAQoB,Q;QAFhB,YAAY,gB;QACZ,aAAa,gB;QACb,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,IAAI,UAAU,OAAV,CAAJ,C;YACI,KAAM,WAAI,OAAJ,C;;;YAEN,MAAO,WAAI,OAAJ,C;;;QAGf,OAAO,cAAK,KAAL,EAAY,MAAZ,C;MACX,C;KAhBA,C;0FAkBA,yB;MAAA,+D;MAAA,6B;MAAA,uC;QAQoB,Q;QAFhB,YAAY,gB;QACZ,aAAa,gB;QACb,wBAAgB,SAAhB,gB;UAAgB,cAAA,SAAhB,M;UACI,IAAI,UAAU,OAAV,CAAJ,C;YACI,KAAM,WAAI,OAAJ,C;;;YAEN,MAAO,WAAI,OAAJ,C;;;QAGf,OAAO,cAAK,KAAL,EAAY,MAAZ,C;MACX,C;KAhBA,C;0FAkBA,yB;MAAA,+D;MAAA,oC;MAAA,gC;MAAA,6B;MAAA,uC;QAQoB,Q;QAFhB,YAAY,gB;QACZ,aAAa,gB;QACb,wBAAgB,SAAhB,gB;UAAgB,cAAhB,UAAgB,SAAhB,O;UACI,IAAI,UAAU,oBAAV,CAAJ,C;YACI,KAAM,WAAI,oBAAJ,C;;;YAEN,MAAO,WAAI,oBAAJ,C;;;QAGf,OAAO,cAAK,KAAL,EAAY,MAAZ,C;MACX,C;KAhBA,C;;MAoHI,WkBvhZO,MAAK,KlBuhZK,gBkBvhZL,ElB47YD,KA2FkB,OkBvhZjB,C;MlBwhZZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WA9FqB,GA8FP,UAAK,CAAL,CA9FO,EAAnB,KA8FqB,CAAM,CAAN,CA9FF,CA8FrB,C;;MA9FT,OAgGO,I;IA/FX,C;;MA0GI,WkBviZO,MAAK,KlBuiZK,gBkBviZL,ElBs8YD,KAiGkB,OkBviZjB,C;MlBwiZZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WApGqB,GAoGP,UAAK,CAAL,CApGO,EAAnB,KAoGqB,CAAM,CAAN,CApGF,CAoGrB,C;;MApGT,OAsGO,I;IArGX,C;;MAgHI,WkBvjZO,MAAK,KlBujZK,gBkBvjZL,ElBg9YD,KAuGkB,OkBvjZjB,C;MlBwjZZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WA1GqB,GA0GP,UAAK,CAAL,CA1GO,EAAnB,KA0GqB,CAAM,CAAN,CA1GF,CA0GrB,C;;MA1GT,OA4GO,I;IA3GX,C;;MAsHI,WkBvkZO,MAAK,KlBukZK,gBkBvkZL,ElB09YD,KA6GkB,OkBvkZjB,C;MlBwkZZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WAhHqB,GAgHP,UAAK,CAAL,CAhHO,EAAnB,KAgHqB,CAAM,CAAN,CAhHF,CAgHrB,C;;MAhHT,OAkHO,I;IAjHX,C;;MA4HI,WkBvlZO,MAAK,KlBulZK,gBkBvlZL,ElBo+YD,KAmHkB,OkBvlZjB,C;MlBwlZZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WAtHqB,GAsHP,UAAK,CAAL,CAtHO,EAAnB,KAsHqB,CAAM,CAAN,CAtHF,CAsHrB,C;;MAtHT,OAwHO,I;IAvHX,C;;MAkII,WkBvmZO,MAAK,KlBumZK,gBkBvmZL,ElB8+YD,KAyHkB,OkBvmZjB,C;MlBwmZZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WA5HqB,GA4HP,UAAK,CAAL,CA5HO,EAAnB,KA4HqB,CAAM,CAAN,CA5HF,CA4HrB,C;;MA5HT,OA8HO,I;IA7HX,C;;MAwII,WkBvnZO,MAAK,KlBunZK,gBkBvnZL,ElBw/YD,KA+HkB,OkBvnZjB,C;MlBwnZZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WAlIqB,GAkIP,UAAK,CAAL,CAlIO,EAAnB,KAkIqB,CAAM,CAAN,CAlIF,CAkIrB,C;;MAlIT,OAoIO,I;IAnIX,C;;MA8II,WkBvoZO,MAAK,KlBuoZK,gBkBvoZL,ElBkgZD,KAqIkB,OkBvoZjB,C;MlBwoZZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WAxIqB,GAwIP,UAAK,CAAL,CAxIO,EAAnB,KAwIqB,CAAM,CAAN,CAxIF,CAwIrB,C;;MAxIT,OA0IO,I;IAzIX,C;;MAoJI,WkBvpZO,MAAK,KlBupZK,gBkBvpZL,ElB4gZD,KA2IkB,OkBvpZjB,C;MlBwpZZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WA9IqB,GA8IP,sBAAK,CAAL,EA9IO,EAAnB,KA8IqB,CAAM,CAAN,CA9IF,CA8IrB,C;;MA9IT,OAgJO,I;IA/IX,C;8EAEA,yB;MAAA,gE;MkBthZA,iB;MlBshZA,8C;QAQI,WkBvhZO,MAAK,KlBuhZK,gBkBvhZL,ElBuhZW,KAAM,OkBvhZjB,C;QlBwhZZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,UAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;8EAgBA,yB;MAAA,gE;MkBtiZA,iB;MlBsiZA,8C;QAQI,WkBviZO,MAAK,KlBuiZK,gBkBviZL,ElBuiZW,KAAM,OkBviZjB,C;QlBwiZZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,UAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;+EAgBA,yB;MAAA,gE;MkBtjZA,iB;MlBsjZA,8C;QAQI,WkBvjZO,MAAK,KlBujZK,gBkBvjZL,ElBujZW,KAAM,OkBvjZjB,C;QlBwjZZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,UAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;8EAgBA,yB;MAAA,gE;MkBtkZA,iB;MlBskZA,8C;QAQI,WkBvkZO,MAAK,KlBukZK,gBkBvkZL,ElBukZW,KAAM,OkBvkZjB,C;QlBwkZZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,UAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;+EAgBA,yB;MAAA,gE;MkBtlZA,iB;MlBslZA,8C;QAQI,WkBvlZO,MAAK,KlBulZK,gBkBvlZL,ElBulZW,KAAM,OkBvlZjB,C;QlBwlZZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,UAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;+EAgBA,yB;MAAA,gE;MkBtmZA,iB;MlBsmZA,8C;QAQI,WkBvmZO,MAAK,KlBumZK,gBkBvmZL,ElBumZW,KAAM,OkBvmZjB,C;QlBwmZZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,UAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;+EAgBA,yB;MAAA,gE;MkBtnZA,iB;MlBsnZA,8C;QAQI,WkBvnZO,MAAK,KlBunZK,gBkBvnZL,ElBunZW,KAAM,OkBvnZjB,C;QlBwnZZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,UAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;+EAgBA,yB;MAAA,gE;MkBtoZA,iB;MlBsoZA,8C;QAQI,WkBvoZO,MAAK,KlBuoZK,gBkBvoZL,ElBuoZW,KAAM,OkBvoZjB,C;QlBwoZZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,UAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;+EAgBA,yB;MAAA,gE;MAAA,oC;MkBtpZA,iB;MlBspZA,8C;QAQI,WkBvpZO,MAAK,KlBupZK,gBkBvpZL,ElBupZW,KAAM,OkBvpZjB,C;QlBwpZZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,EAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;;MAqHoB,gB;MAHhB,gBAAgB,gB;MAChB,WAAW,iBkBlwZJ,MAAK,KlBkwZwB,wBA5FzB,KA4FyB,EAAwB,EAAxB,CkBlwZxB,ElBkwZqD,SkBlwZrD,ClBkwZD,C;MACX,QAAQ,C;MACQ,OA9FL,KA8FK,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAhGqB,GAgGP,UAAK,UAAL,EAAK,kBAAL,SAhGO,EAgGI,OAhGJ,CAgGrB,C;;MAhGT,OAkGO,I;IAjGX,C;;MA+GoB,gB;MAHhB,gBAAgB,gB;MAChB,WAAW,iBkBpxZJ,MAAK,KlBoxZwB,wBApGzB,KAoGyB,EAAwB,EAAxB,CkBpxZxB,ElBoxZqD,SkBpxZrD,ClBoxZD,C;MACX,QAAQ,C;MACQ,OAtGL,KAsGK,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAxGqB,GAwGP,UAAK,UAAL,EAAK,kBAAL,SAxGO,EAwGI,OAxGJ,CAwGrB,C;;MAxGT,OA0GO,I;IAzGX,C;;MAuHoB,gB;MAHhB,gBAAgB,gB;MAChB,WAAW,iBkBtyZJ,MAAK,KlBsyZwB,wBA5GzB,KA4GyB,EAAwB,EAAxB,CkBtyZxB,ElBsyZqD,SkBtyZrD,ClBsyZD,C;MACX,QAAQ,C;MACQ,OA9GL,KA8GK,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAhHqB,GAgHP,UAAK,UAAL,EAAK,kBAAL,SAhHO,EAgHI,OAhHJ,CAgHrB,C;;MAhHT,OAkHO,I;IAjHX,C;;MA+HoB,gB;MAHhB,gBAAgB,gB;MAChB,WAAW,iBkBxzZJ,MAAK,KlBwzZwB,wBApHzB,KAoHyB,EAAwB,EAAxB,CkBxzZxB,ElBwzZqD,SkBxzZrD,ClBwzZD,C;MACX,QAAQ,C;MACQ,OAtHL,KAsHK,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAxHqB,GAwHP,UAAK,UAAL,EAAK,kBAAL,SAxHO,EAwHI,OAxHJ,CAwHrB,C;;MAxHT,OA0HO,I;IAzHX,C;;MAuIoB,gB;MAHhB,gBAAgB,gB;MAChB,WAAW,iBkB10ZJ,MAAK,KlB00ZwB,wBA5HzB,KA4HyB,EAAwB,EAAxB,CkB10ZxB,ElB00ZqD,SkB10ZrD,ClB00ZD,C;MACX,QAAQ,C;MACQ,OA9HL,KA8HK,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAhIqB,GAgIP,UAAK,UAAL,EAAK,kBAAL,SAhIO,EAgII,OAhIJ,CAgIrB,C;;MAhIT,OAkIO,I;IAjIX,C;;MA+IoB,gB;MAHhB,gBAAgB,gB;MAChB,WAAW,iBkB51ZJ,MAAK,KlB41ZwB,wBApIzB,KAoIyB,EAAwB,EAAxB,CkB51ZxB,ElB41ZqD,SkB51ZrD,ClB41ZD,C;MACX,QAAQ,C;MACQ,OAtIL,KAsIK,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAxIqB,GAwIP,UAAK,UAAL,EAAK,kBAAL,SAxIO,EAwII,OAxIJ,CAwIrB,C;;MAxIT,OA0IO,I;IAzIX,C;;MAuJoB,gB;MAHhB,gBAAgB,gB;MAChB,WAAW,iBkB92ZJ,MAAK,KlB82ZwB,wBA5IzB,KA4IyB,EAAwB,EAAxB,CkB92ZxB,ElB82ZqD,SkB92ZrD,ClB82ZD,C;MACX,QAAQ,C;MACQ,OA9IL,KA8IK,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAhJqB,GAgJP,UAAK,UAAL,EAAK,kBAAL,SAhJO,EAgJI,OAhJJ,CAgJrB,C;;MAhJT,OAkJO,I;IAjJX,C;;MA+JoB,gB;MAHhB,gBAAgB,gB;MAChB,WAAW,iBkBh4ZJ,MAAK,KlBg4ZwB,wBApJzB,KAoJyB,EAAwB,EAAxB,CkBh4ZxB,ElBg4ZqD,SkBh4ZrD,ClBg4ZD,C;MACX,QAAQ,C;MACQ,OAtJL,KAsJK,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAxJqB,GAwJP,UAAK,UAAL,EAAK,kBAAL,SAxJO,EAwJI,OAxJJ,CAwJrB,C;;MAxJT,OA0JO,I;IAzJX,C;;MAuKoB,gB;MAHhB,gBAAgB,gB;MAChB,WAAW,iBkBl5ZJ,MAAK,KlBk5ZwB,wBA5JzB,KA4JyB,EAAwB,EAAxB,CkBl5ZxB,ElBk5ZqD,SkBl5ZrD,ClBk5ZD,C;MACX,QAAQ,C;MACQ,OA9JL,KA8JK,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAhKqB,GAgKP,sBAAK,UAAL,EAAK,kBAAL,UAhKO,EAgKI,OAhKJ,CAgKrB,C;;MAhKT,OAkKO,I;IAjKX,C;+EAEA,yB;MAAA,kF;MAAA,gE;MkBhwZA,iB;MlBgwZA,8C;QAWoB,UAEY,M;QAL5B,gBAAgB,gB;QAChB,WAAW,ekBlwZJ,MAAK,KlBkwZwB,wBAAN,KAAM,EAAwB,EAAxB,CkBlwZxB,ElBkwZqD,SkBlwZrD,ClBkwZD,C;QACX,QAAQ,C;QACQ,uB;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,UAAK,UAAL,EAAK,kBAAL,SAAV,EAAqB,OAArB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAhBA,C;+EAkBA,yB;MAAA,kF;MAAA,gE;MkBlxZA,iB;MlBkxZA,8C;QAWoB,UAEY,M;QAL5B,gBAAgB,gB;QAChB,WAAW,ekBpxZJ,MAAK,KlBoxZwB,wBAAN,KAAM,EAAwB,EAAxB,CkBpxZxB,ElBoxZqD,SkBpxZrD,ClBoxZD,C;QACX,QAAQ,C;QACQ,uB;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,UAAK,UAAL,EAAK,kBAAL,SAAV,EAAqB,OAArB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAhBA,C;+EAkBA,yB;MAAA,kF;MAAA,gE;MkBpyZA,iB;MlBoyZA,8C;QAWoB,UAEY,M;QAL5B,gBAAgB,gB;QAChB,WAAW,ekBtyZJ,MAAK,KlBsyZwB,wBAAN,KAAM,EAAwB,EAAxB,CkBtyZxB,ElBsyZqD,SkBtyZrD,ClBsyZD,C;QACX,QAAQ,C;QACQ,uB;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,UAAK,UAAL,EAAK,kBAAL,SAAV,EAAqB,OAArB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAhBA,C;+EAkBA,yB;MAAA,kF;MAAA,gE;MkBtzZA,iB;MlBszZA,8C;QAWoB,UAEY,M;QAL5B,gBAAgB,gB;QAChB,WAAW,ekBxzZJ,MAAK,KlBwzZwB,wBAAN,KAAM,EAAwB,EAAxB,CkBxzZxB,ElBwzZqD,SkBxzZrD,ClBwzZD,C;QACX,QAAQ,C;QACQ,uB;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,UAAK,UAAL,EAAK,kBAAL,SAAV,EAAqB,OAArB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAhBA,C;+EAkBA,yB;MAAA,kF;MAAA,gE;MkBx0ZA,iB;MlBw0ZA,8C;QAWoB,UAEY,M;QAL5B,gBAAgB,gB;QAChB,WAAW,ekB10ZJ,MAAK,KlB00ZwB,wBAAN,KAAM,EAAwB,EAAxB,CkB10ZxB,ElB00ZqD,SkB10ZrD,ClB00ZD,C;QACX,QAAQ,C;QACQ,uB;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,UAAK,UAAL,EAAK,kBAAL,SAAV,EAAqB,OAArB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAhBA,C;+EAkBA,yB;MAAA,kF;MAAA,gE;MkB11ZA,iB;MlB01ZA,8C;QAWoB,UAEY,M;QAL5B,gBAAgB,gB;QAChB,WAAW,ekB51ZJ,MAAK,KlB41ZwB,wBAAN,KAAM,EAAwB,EAAxB,CkB51ZxB,ElB41ZqD,SkB51ZrD,ClB41ZD,C;QACX,QAAQ,C;QACQ,uB;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,UAAK,UAAL,EAAK,kBAAL,SAAV,EAAqB,OAArB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAhBA,C;+EAkBA,yB;MAAA,kF;MAAA,gE;MkB52ZA,iB;MlB42ZA,8C;QAWoB,UAEY,M;QAL5B,gBAAgB,gB;QAChB,WAAW,ekB92ZJ,MAAK,KlB82ZwB,wBAAN,KAAM,EAAwB,EAAxB,CkB92ZxB,ElB82ZqD,SkB92ZrD,ClB82ZD,C;QACX,QAAQ,C;QACQ,uB;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,UAAK,UAAL,EAAK,kBAAL,SAAV,EAAqB,OAArB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAhBA,C;+EAkBA,yB;MAAA,kF;MAAA,gE;MkB93ZA,iB;MlB83ZA,8C;QAWoB,UAEY,M;QAL5B,gBAAgB,gB;QAChB,WAAW,ekBh4ZJ,MAAK,KlBg4ZwB,wBAAN,KAAM,EAAwB,EAAxB,CkBh4ZxB,ElBg4ZqD,SkBh4ZrD,ClBg4ZD,C;QACX,QAAQ,C;QACQ,uB;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,UAAK,UAAL,EAAK,kBAAL,SAAV,EAAqB,OAArB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAhBA,C;+EAkBA,yB;MAAA,kF;MAAA,gE;MAAA,oC;MkBh5ZA,iB;MlBg5ZA,8C;QAWoB,UAEY,M;QAL5B,gBAAgB,gB;QAChB,WAAW,ekBl5ZJ,MAAK,KlBk5ZwB,wBAAN,KAAM,EAAwB,EAAxB,CkBl5ZxB,ElBk5ZqD,SkBl5ZrD,ClBk5ZD,C;QACX,QAAQ,C;QACQ,uB;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,sBAAK,UAAL,EAAK,kBAAL,UAAV,EAAqB,OAArB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAhBA,C;;MA0GI,WkBn/ZO,MAAK,KlBm/ZK,gBkBn/ZL,ElBk6ZD,KAiFkB,OkBn/ZjB,C;MlBo/ZZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WApFqB,GAoFP,UAAK,CAAL,CApFO,EAAnB,KAoFqB,CAAM,CAAN,CApFF,CAoFrB,C;;MApFT,OAsFO,I;IArFX,C;;MAgGI,WkBngaO,MAAK,KlBmgaK,gBkBngaL,ElB46ZD,KAuFkB,OkBngajB,C;MlBogaZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WA1FqB,GA0FP,UAAK,CAAL,CA1FO,EAAnB,KA0FqB,CAAM,CAAN,CA1FF,CA0FrB,C;;MA1FT,OA4FO,I;IA3FX,C;;MAsGI,WkBnhaO,MAAK,KlBmhaK,gBkBnhaL,ElBs7ZD,KA6FkB,OkBnhajB,C;MlBohaZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WAhGqB,GAgGP,UAAK,CAAL,CAhGO,EAAnB,KAgGqB,CAAM,CAAN,CAhGF,CAgGrB,C;;MAhGT,OAkGO,I;IAjGX,C;;MA4GI,WkBniaO,MAAK,KlBmiaK,gBkBniaL,ElBg8ZD,KAmGkB,OkBniajB,C;MlBoiaZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WAtGqB,GAsGP,UAAK,CAAL,CAtGO,EAAnB,KAsGqB,CAAM,CAAN,CAtGF,CAsGrB,C;;MAtGT,OAwGO,I;IAvGX,C;;MAkHI,WkBnjaO,MAAK,KlBmjaK,gBkBnjaL,ElB08ZD,KAyGkB,OkBnjajB,C;MlBojaZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WA5GqB,GA4GP,UAAK,CAAL,CA5GO,EAAnB,KA4GqB,CAAM,CAAN,CA5GF,CA4GrB,C;;MA5GT,OA8GO,I;IA7GX,C;;MAwHI,WkBnkaO,MAAK,KlBmkaK,gBkBnkaL,ElBo9ZD,KA+GkB,OkBnkajB,C;MlBokaZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WAlHqB,GAkHP,UAAK,CAAL,CAlHO,EAAnB,KAkHqB,CAAM,CAAN,CAlHF,CAkHrB,C;;MAlHT,OAoHO,I;IAnHX,C;;MA8HI,WkBnlaO,MAAK,KlBmlaK,gBkBnlaL,ElB89ZD,KAqHkB,OkBnlajB,C;MlBolaZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WAxHqB,GAwHP,UAAK,CAAL,CAxHO,EAAnB,KAwHqB,CAAM,CAAN,CAxHF,CAwHrB,C;;MAxHT,OA0HO,I;IAzHX,C;;MAoII,WkBnmaO,MAAK,KlBmmaK,gBkBnmaL,ElBw+ZD,KA2HkB,OkBnmajB,C;MlBomaZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WA9HqB,GA8HP,sBAAK,CAAL,EA9HO,EA8HE,YA9HrB,KA8HqB,CAAM,CAAN,EA9HF,CA8HrB,C;;MA9HT,OAgIO,I;IA/HX,C;+EAEA,yB;MAAA,gE;MkBl/ZA,iB;MlBk/ZA,8C;QAQI,WkBn/ZO,MAAK,KlBm/ZK,gBkBn/ZL,ElBm/ZW,KAAM,OkBn/ZjB,C;QlBo/ZZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,UAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;+EAgBA,yB;MAAA,gE;MkBlgaA,iB;MlBkgaA,8C;QAQI,WkBngaO,MAAK,KlBmgaK,gBkBngaL,ElBmgaW,KAAM,OkBngajB,C;QlBogaZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,UAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;+EAgBA,yB;MAAA,gE;MkBlhaA,iB;MlBkhaA,8C;QAQI,WkBnhaO,MAAK,KlBmhaK,gBkBnhaL,ElBmhaW,KAAM,OkBnhajB,C;QlBohaZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,UAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;+EAgBA,yB;MAAA,gE;MkBliaA,iB;MlBkiaA,8C;QAQI,WkBniaO,MAAK,KlBmiaK,gBkBniaL,ElBmiaW,KAAM,OkBniajB,C;QlBoiaZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,UAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;+EAgBA,yB;MAAA,gE;MkBljaA,iB;MlBkjaA,8C;QAQI,WkBnjaO,MAAK,KlBmjaK,gBkBnjaL,ElBmjaW,KAAM,OkBnjajB,C;QlBojaZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,UAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;+EAgBA,yB;MAAA,gE;MkBlkaA,iB;MlBkkaA,8C;QAQI,WkBnkaO,MAAK,KlBmkaK,gBkBnkaL,ElBmkaW,KAAM,OkBnkajB,C;QlBokaZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,UAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;+EAgBA,yB;MAAA,gE;MkBllaA,iB;MlBklaA,8C;QAQI,WkBnlaO,MAAK,KlBmlaK,gBkBnlaL,ElBmlaW,KAAM,OkBnlajB,C;QlBolaZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,UAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;+EAgBA,yB;MAAA,gE;MAAA,oC;MkBlmaA,iB;MlBkmaA,8C;QAQI,WkBnmaO,MAAK,KlBmmaK,gBkBnmaL,ElBmmaW,KAAM,OkBnmajB,C;QlBomaZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,EAAV,EAAmB,kBAAM,CAAN,EAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;;MAwB8D,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAoC,I;MAGvN,Q;MAFhB,MAAO,gBAAO,MAAP,C;MACP,YAAY,C;MACZ,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,IAAI,iCAAU,CAAd,C;UAAiB,MAAO,gBAAO,SAAP,C;QACxB,IAAI,QAAQ,CAAR,IAAa,SAAS,KAA1B,C;UACW,gBAAP,MAAO,EAAc,OAAd,EAAuB,SAAvB,C;;;UACJ,K;;MAEX,IAAI,SAAS,CAAT,IAAc,QAAQ,KAA1B,C;QAAiC,MAAO,gBAAO,SAAP,C;MACxC,MAAO,gBAAO,OAAP,C;MACP,OAAO,M;IACX,C;;MAUwD,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAuC,I;MAGpN,Q;MAFhB,MAAO,gBAAO,MAAP,C;MACP,YAAY,C;MACZ,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,IAAI,iCAAU,CAAd,C;UAAiB,MAAO,gBAAO,SAAP,C;QACxB,IAAI,QAAQ,CAAR,IAAa,SAAS,KAA1B,C;UACI,IAAI,iBAAJ,C;YACI,MAAO,gBAAO,UAAU,OAAV,CAAP,C;;YAEP,MAAO,gBAAO,OAAQ,WAAf,C;;;UACR,K;;MAEX,IAAI,SAAS,CAAT,IAAc,QAAQ,KAA1B,C;QAAiC,MAAO,gBAAO,SAAP,C;MACxC,MAAO,gBAAO,OAAP,C;MACP,OAAO,M;IACX,C;;MAUyD,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAwC,I;MAGtN,Q;MAFhB,MAAO,gBAAO,MAAP,C;MACP,YAAY,C;MACZ,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,IAAI,iCAAU,CAAd,C;UAAiB,MAAO,gBAAO,SAAP,C;QACxB,IAAI,QAAQ,CAAR,IAAa,SAAS,KAA1B,C;UACI,IAAI,iBAAJ,C;YACI,MAAO,gBAAO,UAAU,OAAV,CAAP,C;;YAEP,MAAO,gBAAO,OAAQ,WAAf,C;;;UACR,K;;MAEX,IAAI,SAAS,CAAT,IAAc,QAAQ,KAA1B,C;QAAiC,MAAO,gBAAO,SAAP,C;MACxC,MAAO,gBAAO,OAAP,C;MACP,OAAO,M;IACX,C;;MAUuD,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAsC,I;MAGlN,Q;MAFhB,MAAO,gBAAO,MAAP,C;MACP,YAAY,C;MACZ,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,IAAI,iCAAU,CAAd,C;UAAiB,MAAO,gBAAO,SAAP,C;QACxB,IAAI,QAAQ,CAAR,IAAa,SAAS,KAA1B,C;UACI,IAAI,iBAAJ,C;YACI,MAAO,gBAAO,UAAU,OAAV,CAAP,C;;YAEP,MAAO,gBAAO,OAAQ,WAAf,C;;;UACR,K;;MAEX,IAAI,SAAS,CAAT,IAAc,QAAQ,KAA1B,C;QAAiC,MAAO,gBAAO,SAAP,C;MACxC,MAAO,gBAAO,OAAP,C;MACP,OAAO,M;IACX,C;;MAUwD,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAuC,I;MAGpN,Q;MAFhB,MAAO,gBAAO,MAAP,C;MACP,YAAY,C;MACZ,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,IAAI,iCAAU,CAAd,C;UAAiB,MAAO,gBAAO,SAAP,C;QACxB,IAAI,QAAQ,CAAR,IAAa,SAAS,KAA1B,C;UACI,IAAI,iBAAJ,C;YACI,MAAO,gBAAO,UAAU,OAAV,CAAP,C;;YAEP,MAAO,gBAAO,OAAQ,WAAf,C;;;UACR,K;;MAEX,IAAI,SAAS,CAAT,IAAc,QAAQ,KAA1B,C;QAAiC,MAAO,gBAAO,SAAP,C;MACxC,MAAO,gBAAO,OAAP,C;MACP,OAAO,M;IACX,C;;MAUyD,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAwC,I;MAGtN,Q;MAFhB,MAAO,gBAAO,MAAP,C;MACP,YAAY,C;MACZ,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,IAAI,iCAAU,CAAd,C;UAAiB,MAAO,gBAAO,SAAP,C;QACxB,IAAI,QAAQ,CAAR,IAAa,SAAS,KAA1B,C;UACI,IAAI,iBAAJ,C;YACI,MAAO,gBAAO,UAAU,OAAV,CAAP,C;;YAEP,MAAO,gBAAO,OAAQ,WAAf,C;;;UACR,K;;MAEX,IAAI,SAAS,CAAT,IAAc,QAAQ,KAA1B,C;QAAiC,MAAO,gBAAO,SAAP,C;MACxC,MAAO,gBAAO,OAAP,C;MACP,OAAO,M;IACX,C;;MAU0D,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAyC,I;MAGxN,Q;MAFhB,MAAO,gBAAO,MAAP,C;MACP,YAAY,C;MACZ,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,IAAI,iCAAU,CAAd,C;UAAiB,MAAO,gBAAO,SAAP,C;QACxB,IAAI,QAAQ,CAAR,IAAa,SAAS,KAA1B,C;UACI,IAAI,iBAAJ,C;YACI,MAAO,gBAAO,UAAU,OAAV,CAAP,C;;YAEP,MAAO,gBAAO,OAAQ,WAAf,C;;;UACR,K;;MAEX,IAAI,SAAS,CAAT,IAAc,QAAQ,KAA1B,C;QAAiC,MAAO,gBAAO,SAAP,C;MACxC,MAAO,gBAAO,OAAP,C;MACP,OAAO,M;IACX,C;;MAU2D,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAA0C,I;MAG1N,Q;MAFhB,MAAO,gBAAO,MAAP,C;MACP,YAAY,C;MACZ,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,IAAI,iCAAU,CAAd,C;UAAiB,MAAO,gBAAO,SAAP,C;QACxB,IAAI,QAAQ,CAAR,IAAa,SAAS,KAA1B,C;UACI,IAAI,iBAAJ,C;YACI,MAAO,gBAAO,UAAU,OAAV,CAAP,C;;YAEP,MAAO,gBAAO,OAAQ,WAAf,C;;;UACR,K;;MAEX,IAAI,SAAS,CAAT,IAAc,QAAQ,KAA1B,C;QAAiC,MAAO,gBAAO,SAAP,C;MACxC,MAAO,gBAAO,OAAP,C;MACP,OAAO,M;IACX,C;;MAUwD,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAuC,I;MAGpN,Q;MAFhB,MAAO,gBAAO,MAAP,C;MACP,YAAY,C;MACZ,wBAAgB,SAAhB,gB;QAAgB,cAAhB,UAAgB,SAAhB,O;QACI,IAAI,iCAAU,CAAd,C;UAAiB,MAAO,gBAAO,SAAP,C;QACxB,IAAI,QAAQ,CAAR,IAAa,SAAS,KAA1B,C;UACI,IAAI,iBAAJ,C;YACI,MAAO,gBAAO,UAAU,oBAAV,CAAP,C;;YAEP,MAAO,gBAAO,OAAP,C;;;UACR,K;;MAEX,IAAI,SAAS,CAAT,IAAc,QAAQ,KAA1B,C;QAAiC,MAAO,gBAAO,SAAP,C;MACxC,MAAO,gBAAO,OAAP,C;MACP,OAAO,M;IACX,C;;MAUyC,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAoC,I;MAClN,OAAO,kBAAO,sBAAP,EAAwB,SAAxB,EAAmC,MAAnC,EAA2C,OAA3C,EAAoD,KAApD,EAA2D,SAA3D,EAAsE,SAAtE,CAAiF,W;IAC5F,C;;MAUkC,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAuC,I;MAC9M,OAAO,oBAAO,sBAAP,EAAwB,SAAxB,EAAmC,MAAnC,EAA2C,OAA3C,EAAoD,KAApD,EAA2D,SAA3D,EAAsE,SAAtE,CAAiF,W;IAC5F,C;;MAUmC,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAwC,I;MAChN,OAAO,oBAAO,sBAAP,EAAwB,SAAxB,EAAmC,MAAnC,EAA2C,OAA3C,EAAoD,KAApD,EAA2D,SAA3D,EAAsE,SAAtE,CAAiF,W;IAC5F,C;;MAUiC,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAsC,I;MAC5M,OAAO,oBAAO,sBAAP,EAAwB,SAAxB,EAAmC,MAAnC,EAA2C,OAA3C,EAAoD,KAApD,EAA2D,SAA3D,EAAsE,SAAtE,CAAiF,W;IAC5F,C;;MAUkC,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAuC,I;MAC9M,OAAO,oBAAO,sBAAP,EAAwB,SAAxB,EAAmC,MAAnC,EAA2C,OAA3C,EAAoD,KAApD,EAA2D,SAA3D,EAAsE,SAAtE,CAAiF,W;IAC5F,C;;MAUmC,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAwC,I;MAChN,OAAO,oBAAO,sBAAP,EAAwB,SAAxB,EAAmC,MAAnC,EAA2C,OAA3C,EAAoD,KAApD,EAA2D,SAA3D,EAAsE,SAAtE,CAAiF,W;IAC5F,C;;MAUoC,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAyC,I;MAClN,OAAO,oBAAO,sBAAP,EAAwB,SAAxB,EAAmC,MAAnC,EAA2C,OAA3C,EAAoD,KAApD,EAA2D,SAA3D,EAAsE,SAAtE,CAAiF,W;IAC5F,C;;MAUqC,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAA0C,I;MACpN,OAAO,oBAAO,sBAAP,EAAwB,SAAxB,EAAmC,MAAnC,EAA2C,OAA3C,EAAoD,KAApD,EAA2D,SAA3D,EAAsE,SAAtE,CAAiF,W;IAC5F,C;;MAUkC,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAuC,I;MAC9M,OAAO,oBAAO,sBAAP,EAAwB,SAAxB,EAAmC,MAAnC,EAA2C,OAA3C,EAAoD,KAApD,EAA2D,SAA3D,EAAsE,SAAtE,CAAiF,W;IAC5F,C;;MAOoB,mB;QAAE,OAAK,qBAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IAn3OO,qBAAQ,CAm3Of,C;QAAe,OAAO,W;MACtB,kCAAgB,4BAAhB,C;IACJ,C;;MAOoB,mB;QAAE,OAAK,yBAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IAn3OO,qBAAQ,CAm3Of,C;QAAe,OAAO,W;MACtB,kCAAgB,8BAAhB,C;IACJ,C;;MAOoB,mB;QAAE,OAAK,0BAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IAn3OO,qBAAQ,CAm3Of,C;QAAe,OAAO,W;MACtB,kCAAgB,8BAAhB,C;IACJ,C;;MAOoB,mB;QAAE,OAAK,wBAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IAn3OO,qBAAQ,CAm3Of,C;QAAe,OAAO,W;MACtB,kCAAgB,8BAAhB,C;IACJ,C;;MAOoB,mB;QAAE,OAAK,yBAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IAn3OO,qBAAQ,CAm3Of,C;QAAe,OAAO,W;MACtB,kCAAgB,8BAAhB,C;IACJ,C;;MAOoB,mB;QAAE,OAAK,0BAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IAn3OO,qBAAQ,CAm3Of,C;QAAe,OAAO,W;MACtB,kCAAgB,8BAAhB,C;IACJ,C;;MAOoB,mB;QAAE,OAAK,2BAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IAn3OO,qBAAQ,CAm3Of,C;QAAe,OAAO,W;MACtB,kCAAgB,8BAAhB,C;IACJ,C;;MAOoB,mB;QAAE,OAAK,4BAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IAn3OO,qBAAQ,CAm3Of,C;QAAe,OAAO,W;MACtB,kCAAgB,8BAAhB,C;IACJ,C;;MAOoB,mB;QAAE,OAAK,yBAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IAn3OO,qBAAQ,CAm3Of,C;QAAe,OAAO,W;MACtB,kCAAgB,8BAAhB,C;IACJ,C;;MASoB,mB;QAAE,OAAK,qBAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IA77OO,qBAAQ,CA67Of,C;QAAe,OAAO,e;MACtB,kCAAgB,4BAAhB,C;IACJ,C;;MASoB,mB;QAAE,OAAK,yBAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IA/7OO,qBAAQ,CA+7Of,C;QAAe,OAAO,e;MACtB,kCAAgB,8BAAhB,C;IACJ,C;;MASoB,mB;QAAE,OAAK,0BAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IAj8OO,qBAAQ,CAi8Of,C;QAAe,OAAO,e;MACtB,kCAAgB,8BAAhB,C;IACJ,C;;MASoB,mB;QAAE,OAAK,wBAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IAn8OO,qBAAQ,CAm8Of,C;QAAe,OAAO,e;MACtB,kCAAgB,8BAAhB,C;IACJ,C;;MASoB,mB;QAAE,OAAK,yBAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IAr8OO,qBAAQ,CAq8Of,C;QAAe,OAAO,e;MACtB,kCAAgB,8BAAhB,C;IACJ,C;;MASoB,mB;QAAE,OAAK,0BAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IAv8OO,qBAAQ,CAu8Of,C;QAAe,OAAO,e;MACtB,kCAAgB,8BAAhB,C;IACJ,C;;MASoB,mB;QAAE,OAAK,2BAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IAz8OO,qBAAQ,CAy8Of,C;QAAe,OAAO,e;MACtB,kCAAgB,8BAAhB,C;IACJ,C;;MASoB,mB;QAAE,OAAK,4BAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IA38OO,qBAAQ,CA28Of,C;QAAe,OAAO,e;MACtB,kCAAgB,8BAAhB,C;IACJ,C;;MASoB,mB;QAAE,OAAK,yBAAL,eAAK,C;MAAP,C;IAAA,C;;MADhB,IA78OO,qBAAQ,CA68Of,C;QAAe,OAAO,e;MACtB,kCAAgB,8BAAhB,C;IACJ,C;;MASoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACjB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,O;QACP,qB;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MASoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACjB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,O;QACP,qB;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MASoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACjB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,O;QACP,qB;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MASoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACjB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,O;QACP,qB;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MASoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACjB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,O;QACP,qB;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MASoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACjB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,O;QACP,qB;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MAQoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACjB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,O;QACP,qB;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MAQoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACjB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,O;QACP,qB;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MAQoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACjB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,O;QACP,qB;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MAQoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACjB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,O;QACP,qB;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MAQoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACjB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,O;QACP,qB;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MAQoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACjB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,O;QACP,qB;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MAQoB,Q;MADhB,UAAe,C;MACf,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,YAAO,O;;MAEX,OAAO,G;IACX,C;;MAQoB,Q;MADhB,UAAe,C;MACf,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,YAAO,O;;MAEX,OAAO,G;IACX,C;;MAQoB,Q;MADhB,UAAe,C;MACf,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,YAAO,OAAP,I;;MAEJ,OAAO,G;IACX,C;;MAQoB,Q;MADhB,Y;MACA,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,cAAO,OAAP,C;;MAEJ,OAAO,G;IACX,C;;MAQoB,Q;MADhB,UAAiB,G;MACjB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,O;;MAEX,OAAO,G;IACX,C;;MAQoB,Q;MADhB,UAAkB,G;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,O;;MAEX,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAe,C;MACf,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,YAAO,O;;MAEX,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAe,C;MACf,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,YAAO,O;;MAEX,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAe,C;MACf,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,YAAO,OAAP,I;;MAEJ,OAAO,G;IACX,C;;MAOoB,Q;MADhB,Y;MACA,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,cAAO,OAAP,C;;MAEJ,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAiB,G;MACjB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,O;;MAEX,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAkB,G;MAClB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,OAAO,O;;MAEX,OAAO,G;IACX,C;;MYxicuF,wC;IARvF,C;IAAA,0D;MAS2C,8B;IAAA,C;IAT3C,gF;;MOcI,OAAO,sBAAI,CAAJ,C;IACX,C;;MAOI,OAAO,sBAAI,CAAJ,C;IACX,C;;MAOI,OAAO,sBAAI,CAAJ,C;IACX,C;;MAOI,OAAO,sBAAI,CAAJ,C;IACX,C;;MAOI,OAAO,sBAAI,CAAJ,C;IACX,C;;MAMI,IAAI,oCAAJ,C;QACI,OAAO,yBAAS,OAAT,C;MACX,OAAO,qBAAQ,OAAR,KAAoB,C;IAC/B,C;;MAUkC,qB;QAAE,MAAM,8BAA0B,iDAA8C,aAA9C,MAA1B,C;MAAR,C;IAAA,C;;MAF9B,IAAI,8BAAJ,C;QACI,OAAO,sBAAI,KAAJ,C;MACX,OAAO,6BAAgB,KAAhB,EAAuB,uBAAvB,C;IACX,C;;MASI,OAAO,sBAAI,KAAJ,C;IACX,C;;MAgBqB,Q;MARjB,IAAI,8BAAJ,C;QACI,OAAsB,KAwJf,IAAS,CAAT,IAxJe,KAwJD,IAAS,iBAxJvB,SAwJuB,CAA3B,GAxJI,SAwJkC,aAxJnB,KAwJmB,CAAtC,GAxJ0B,YAwJ4B,CAxJnC,KAwJmC,C;;MAvJ7D,IAAI,QAAQ,CAAZ,C;QACI,OAAO,aAAa,KAAb,C;MACX,eAAe,oB;MACf,YAAY,C;MACZ,OAAO,QAAS,UAAhB,C;QACI,cAAc,QAAS,O;QACvB,IAAI,WAAS,YAAT,EAAS,oBAAT,OAAJ,C;UACI,OAAO,O;;MAEf,OAAO,aAAa,KAAb,C;IACX,C;sGAEA,yB;MAAA,8D;MAAA,iD;QAOI,OAAW,SAAS,CAAT,IAAc,SAAS,wBAA3B,GAAsC,sBAAI,KAAJ,CAAtC,GAAsD,aAAa,KAAb,C;MACjE,C;KARA,C;;MAwBqB,Q;MARjB,IAAI,8BAAJ,C;QACI,OAAY,YAAL,SAAK,EAAU,KAAV,C;MAChB,IAAI,QAAQ,CAAZ,C;QACI,OAAO,I;MACX,eAAe,oB;MACf,YAAY,C;MACZ,OAAO,QAAS,UAAhB,C;QACI,cAAc,QAAS,O;QACvB,IAAI,WAAS,YAAT,EAAS,oBAAT,OAAJ,C;UACI,OAAO,O;;MAEf,OAAO,I;IACX,C;sGAEA,yB;MAAA,sD;MAAA,mC;QAOI,OAAY,UAAL,SAAK,EAAU,KAAV,C;MAChB,C;KARA,C;;MAeW,sB;;QAqFS,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IArFH,SAqFO,CAAU,OAAV,CAAJ,C;YAAwB,qBAAO,O;YAAP,uB;;;QAC9C,qBAAO,I;;;MAtFP,yB;IACJ,C;;MAuSoB,Q;MADhB,WAAe,I;MACC,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAjSc,SAiSV,CAAU,OAAV,CAAJ,C;UACI,OAAO,O;;;MAlSf,OAqSO,I;IApSX,C;;MAOW,qB;;QAoSP,eAAoB,+BAAa,cAAb,C;QACpB,OAAO,QAAS,cAAhB,C;UACI,cAAc,QAAS,W;UACvB,IAvSc,SAuSV,CAAU,OAAV,CAAJ,C;YAAwB,oBAAO,O;YAAP,sB;;;QAE5B,oBAAO,I;;;MAzSP,wB;IACJ,C;;MAQQ,kBADE,SACF,Q;QAAW,OAAY,SAAL,SAAK,C;;QAEnB,eAAe,oB;QACf,IAAI,CAAC,QAAS,UAAd,C;UACI,MAAM,2BAAuB,sBAAvB,C;QACV,OAAO,QAAS,O;;IAG5B,C;;MAOI,IAAI,mBAAJ,C;QACI,MAAM,2BAAuB,gBAAvB,C;MACV,OAAO,sBAAK,CAAL,C;IACX,C;mFAEA,yB;MAAA,iE;MAAA,uC;QAKoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,OAAO,O;;QACrD,MAAM,gCAAuB,wDAAvB,C;MACV,C;KAPA,C;;MAcQ,kBADE,SACF,Q;QACI,IAAI,mBAAJ,C;UACI,OAAO,I;;UAEP,OAAO,sBAAK,CAAL,C;;QAGX,eAAe,oB;QACf,IAAI,CAAC,QAAS,UAAd,C;UACI,OAAO,I;QACX,OAAO,QAAS,O;;IAG5B,C;;MAMI,OAAW,mBAAJ,GAAe,IAAf,GAAyB,sBAAK,CAAL,C;IACpC,C;;MAMoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,O;;MACrD,OAAO,I;IACX,C;0FAEA,yB;MAAA,8D;MAAA,iD;QAKI,OAAW,SAAS,CAAT,IAAc,SAAS,wBAA3B,GAAsC,sBAAI,KAAJ,CAAtC,GAAsD,aAAa,KAAb,C;MACjE,C;KANA,C;;MAYI,OAAW,SAAS,CAAT,IAAc,SAAS,2BAA3B,GAAsC,sBAAI,KAAJ,CAAtC,GAAsD,I;IACjE,C;;MAQiB,Q;MAFb,IAAI,8BAAJ,C;QAAkB,OAAO,SAAK,eAAQ,OAAR,C;MAC9B,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,mBAAmB,KAAnB,C;QACA,IAAI,gBAAW,IAAX,CAAJ,C;UACI,OAAO,K;QACX,qB;;MAEJ,OAAO,E;IACX,C;;MAOI,OAAO,wBAAQ,OAAR,C;IACX,C;gGAEA,yB;MAAA,wE;MAAA,uC;QAKiB,Q;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,mBAAmB,KAAnB,C;UACA,IAAI,UAAU,IAAV,CAAJ,C;YACI,OAAO,K;UACX,qB;;QAEJ,OAAO,E;MACX,C;KAZA,C;;MAmBiB,Q;MADb,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,IAAI,UAAU,IAAV,CAAJ,C;UACI,OAAO,K;QACX,qB;;MAEJ,OAAO,E;IACX,C;8FAEA,yB;MAAA,wE;MAAA,uC;QAMiB,Q;QAFb,gBAAgB,E;QAChB,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,mBAAmB,KAAnB,C;UACA,IAAI,UAAU,IAAV,CAAJ,C;YACI,YAAY,K;UAChB,qB;;QAEJ,OAAO,S;MACX,C;KAbA,C;;MAmBI,eAAe,SAAK,sBAAa,cAAb,C;MACpB,OAAO,QAAS,cAAhB,C;QACI,IAAI,UAAU,QAAS,WAAnB,CAAJ,C;UACI,OAAO,QAAS,Y;;;MAGxB,OAAO,E;IACX,C;;MAQQ,kBADE,SACF,Q;QAAW,OAAY,QAAL,SAAK,C;;QAEnB,eAAe,oB;QACf,IAAI,CAAC,QAAS,UAAd,C;UACI,MAAM,2BAAuB,sBAAvB,C;QACV,WAAW,QAAS,O;QACpB,OAAO,QAAS,UAAhB,C;UACI,OAAO,QAAS,O;QACpB,OAAO,I;;IAGnB,C;;MAOI,IAAI,mBAAJ,C;QACI,MAAM,2BAAuB,gBAAvB,C;MACV,OAAO,sBAAK,2BAAL,C;IACX,C;iFAEA,yB;MAAA,iE;MAAA,gB;MAAA,8B;MAAA,uC;QAOoB,UAQT,M;QAVP,WAAe,I;QACf,YAAY,K;QACI,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,UAAU,OAAV,CAAJ,C;YACI,OAAO,O;YACP,QAAQ,I;;;QAGhB,IAAI,CAAC,KAAL,C;UAAY,MAAM,gCAAuB,wDAAvB,C;QAElB,OAAO,2E;MACX,C;KAhBA,C;iFAkBA,yB;MAAA,iE;MAAA,uC;QAKI,eAAe,SAAK,sBAAa,cAAb,C;QACpB,OAAO,QAAS,cAAhB,C;UACI,cAAc,QAAS,W;UACvB,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,OAAO,O;;QAEnC,MAAM,gCAAuB,kDAAvB,C;MACV,C;KAXA,C;;MAoBiB,Q;MAHb,IAAI,8BAAJ,C;QAAkB,OAAO,SAAK,mBAAY,OAAZ,C;MAC9B,gBAAgB,E;MAChB,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,mBAAmB,KAAnB,C;QACA,IAAI,gBAAW,IAAX,CAAJ,C;UACI,YAAY,K;QAChB,qB;;MAEJ,OAAO,S;IACX,C;;MAOI,OAAO,4BAAY,OAAZ,C;IACX,C;;MAOQ,kBADE,SACF,Q;QAAW,OAAW,mBAAJ,GAAe,IAAf,GAAyB,sBAAK,iBAAO,CAAP,IAAL,C;;QAEvC,eAAe,oB;QACf,IAAI,CAAC,QAAS,UAAd,C;UACI,OAAO,I;QACX,WAAW,QAAS,O;QACpB,OAAO,QAAS,UAAhB,C;UACI,OAAO,QAAS,O;QACpB,OAAO,I;;IAGnB,C;;MAMI,OAAW,mBAAJ,GAAe,IAAf,GAAyB,sBAAK,iBAAO,CAAP,IAAL,C;IACpC,C;;MAOoB,Q;MADhB,WAAe,I;MACC,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,UAAU,OAAV,CAAJ,C;UACI,OAAO,O;;;MAGf,OAAO,I;IACX,C;;MAMI,eAAe,SAAK,sBAAa,cAAb,C;MACpB,OAAO,QAAS,cAAhB,C;QACI,cAAc,QAAS,W;QACvB,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,O;;MAEnC,OAAO,I;IACX,C;qFAEA,yB;MAAA,mC;MAAA,gD;MAAA,4B;QAQI,OAAO,kBAAO,cAAP,C;MACX,C;KATA,C;;MAkBI,IAAI,mBAAJ,C;QACI,MAAM,2BAAuB,sBAAvB,C;MACV,OAAO,qBAAU,MAAO,iBAAQ,cAAR,CAAjB,C;IACX,C;;MAOQ,kBADE,SACF,Q;QAAW,OAAY,UAAL,SAAK,C;;QAEnB,eAAe,oB;QACf,IAAI,CAAC,QAAS,UAAd,C;UACI,MAAM,2BAAuB,sBAAvB,C;QACV,aAAa,QAAS,O;QACtB,IAAI,QAAS,UAAb,C;UACI,MAAM,gCAAyB,uCAAzB,C;QACV,OAAO,M;;IAGnB,C;;MAMiB,IAAN,I;MAAA,QAAM,cAAN,C;aACH,C;UAAK,MAAM,2BAAuB,gBAAvB,C;aACX,C;UAAK,6BAAK,CAAL,C;UAAL,K;gBACQ,MAAM,gCAAyB,iCAAzB,C;;MAHlB,W;IAKJ,C;qFAEA,yB;MAAA,kF;MAAA,iE;MAAA,gB;MAAA,8B;MAAA,uC;QAMoB,UAST,M;QAXP,aAAiB,I;QACjB,YAAY,K;QACI,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,UAAU,OAAV,CAAJ,C;YACI,IAAI,KAAJ,C;cAAW,MAAM,8BAAyB,qDAAzB,C;YACjB,SAAS,O;YACT,QAAQ,I;;;QAGhB,IAAI,CAAC,KAAL,C;UAAY,MAAM,gCAAuB,wDAAvB,C;QAElB,OAAO,6E;MACX,C;KAhBA,C;;MAuBQ,kBADE,SACF,Q;QAAW,OAAW,mBAAQ,CAAZ,GAAe,sBAAK,CAAL,CAAf,GAA4B,I;;QAE1C,eAAe,oB;QACf,IAAI,CAAC,QAAS,UAAd,C;UACI,OAAO,I;QACX,aAAa,QAAS,O;QACtB,IAAI,QAAS,UAAb,C;UACI,OAAO,I;QACX,OAAO,M;;IAGnB,C;;MAMI,OAAW,mBAAQ,CAAZ,GAAe,sBAAK,CAAL,CAAf,GAA4B,I;IACvC,C;;MAQoB,Q;MAFhB,aAAiB,I;MACjB,YAAY,K;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,UAAU,OAAV,CAAJ,C;UACI,IAAI,KAAJ,C;YAAW,OAAO,I;UAClB,SAAS,O;UACT,QAAQ,I;;;MAGhB,IAAI,CAAC,KAAL,C;QAAY,OAAO,I;MACnB,OAAO,M;IACX,C;;MAsBsC,UAGT,MAHS,EAarB,M;MNpkBb,IAAI,EM2iBI,KAAK,CN3iBT,CAAJ,C;QACI,cM0iBc,sD;QNziBd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MM0iBV,IAAI,MAAK,CAAT,C;QAAY,OAAO,mB;MACnB,Q;MACA,IAAI,oCAAJ,C;QACI,iBAAiB,iBAAO,CAAP,I;QACjB,IAAI,cAAc,CAAlB,C;UACI,OAAO,W;QACX,IAAI,eAAc,CAAlB,C;UACI,OAAO,OAAO,kBAAP,C;QACX,OAAO,iBAAa,UAAb,C;QACP,IAAI,8BAAJ,C;UACI,IAAI,sCAAJ,C;YAC0B,qB;YAAtB,iBAAc,CAAd,wB;cACI,IAAK,WAAI,sBAAK,KAAL,CAAJ,C;;;YAEI,wCAAa,CAAb,C;YAAb,OAAa,gBAAb,C;cAAa,wB;cACT,IAAK,WAAI,IAAJ,C;;;UAEb,OAAO,I;;;;QAIX,OAAO,gB;;MAEX,YAAY,C;MACC,6B;MAAb,OAAa,gBAAb,C;QAAa,0B;QACT,IAAI,SAAS,CAAb,C;UAAgB,IAAK,WAAI,MAAJ,C;;UAAe,qB;;MAExC,OAAY,qBAAL,IAAK,C;IAChB,C;;MNxkBI,IAAI,EMklBI,KAAK,CNllBT,CAAJ,C;QACI,cMilBc,sD;QNhlBd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MMilBV,OAAO,kBAAgB,gBAAV,iBAAO,CAAP,IAAU,EAAc,CAAd,CAAhB,C;IACX,C;kGAEA,yB;MAAA,4C;MAAA,qD;MAAA,uC;QAMI,IAAI,CAAC,mBAAL,C;UACI,eAAe,+BAAa,cAAb,C;UACf,OAAO,QAAS,cAAhB,C;YACI,IAAI,CAAC,UAAU,QAAS,WAAnB,CAAL,C;cACI,OAAO,gBAAK,QAAS,YAAT,GAAuB,CAAvB,IAAL,C;;;;QAInB,OAAO,W;MACX,C;KAfA,C;0FAiBA,yB;MAAA,+D;MAAA,uC;QAQiB,Q;QAFb,eAAe,K;QACf,WAAW,gB;QACE,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,IAAI,QAAJ,C;YACI,IAAK,WAAI,IAAJ,C;eACJ,IAAI,CAAC,UAAU,IAAV,CAAL,C;YACD,IAAK,WAAI,IAAJ,C;YACL,WAAW,I;;;QAEnB,OAAO,I;MACX,C;KAhBA,C;oFAkBA,yB;MAAA,+D;MAAA,uC;QAIW,kBAAS,gB;QAyEA,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAzEU,SAyEN,CAAU,OAAV,CAAJ,C;YAAwB,WAAY,WAAI,OAAJ,C;;QAzE1D,OA0EO,W;MAzEX,C;KALA,C;kGAOA,yB;MAAA,+D;MAi5BA,wE;MAj5BA,uC;QAMW,kBAAgB,gB;QAk5BV,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UAx4BT,IAVmC,SAU/B,CAw4BkB,oBAAmB,cAAnB,EAAmB,sBAAnB,UAx4BlB,EAw4B+C,IAx4B/C,CAAJ,C;YAA2C,sBAw4BQ,IAx4BR,C;;QAV/C,OAYO,W;MAXX,C;KAPA,C;sGASA,yB;MAw4BA,wE;MAx4BA,oD;QA+4BiB,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UAx4BT,IAAI,UAw4BkB,oBAAmB,cAAnB,EAAmB,sBAAnB,UAx4BlB,EAw4B+C,IAx4B/C,CAAJ,C;YAA2C,sBAw4BQ,IAx4BR,C;;QAE/C,OAAO,W;MACX,C;KAVA,C;wGAYA,yB;MAAA,+D;MAAA,sC;QAIW,kBAAmB,gB;QAOV,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,YAAJ,C;YAAkB,WAAY,WAAI,OAAJ,C;;QAPpD,OAQO,W;MAPX,C;KALA,C;;MAWoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,YAAJ,C;UAAkB,WAAY,WAAI,OAAJ,C;;MACpD,OAAO,W;IACX,C;0FAEA,yB;MAAA,+D;MAAA,uC;QAIW,kBAAY,gB;QAsBH,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,CAtBS,SAsBR,CAAU,OAAV,CAAL,C;YAAyB,WAAY,WAAI,OAAJ,C;;QAtB3D,OAuBO,W;MAtBX,C;KALA,C;;MAWI,OAAO,6BAAgB,gBAAhB,C;IACX,C;;MAMoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,eAAJ,C;UAAqB,WAAY,WAAI,OAAJ,C;;MACvD,OAAO,W;IACX,C;;MAMoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,WAAY,WAAI,OAAJ,C;;MAC3D,OAAO,W;IACX,C;;MAMoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,WAAY,WAAI,OAAJ,C;;MAC1D,OAAO,W;IACX,C;;MAMI,IAAI,OAAQ,UAAZ,C;QAAuB,ObhqBe,W;;MaiqBtC,OAA6D,SAAtD,SAAK,iBAAQ,OAAQ,MAAhB,EAAuB,OAAQ,aAAR,GAAuB,CAAvB,IAAvB,CAAiD,C;IACjE,C;;MASkB,Q;MAHd,WAAmB,wBAAR,OAAQ,EAAwB,EAAxB,C;MACnB,IAAI,SAAQ,CAAZ,C;QAAe,OAAO,W;MACtB,WAAW,iBAAa,IAAb,C;MACG,yB;MAAd,OAAc,cAAd,C;QAAc,uB;QACV,IAAK,WAAI,sBAAI,KAAJ,CAAJ,C;;MAET,OAAO,I;IACX,C;;MAkBiB,UACL,M;MNhvBR,IAAI,EMuuBI,KAAK,CNvuBT,CAAJ,C;QACI,cMsuBc,sD;QNruBd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MMsuBV,IAAI,MAAK,CAAT,C;QAAY,OAAO,W;MACnB,IAAI,oCAAJ,C;QACI,IAAI,KAAK,cAAT,C;UAAe,OAAO,mB;QACtB,IAAI,MAAK,CAAT,C;UAAY,OAAO,OAAO,mBAAP,C;;MAEvB,YAAY,C;MACZ,WAAW,iBAAa,CAAb,C;MACE,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,IAAI,qDAAW,CAAf,C;UACI,K;QACJ,IAAK,WAAI,IAAJ,C;;MAET,OAAY,qBAAL,IAAK,C;IAChB,C;;MAiBqC,IAGhB,I;MNzwBjB,IAAI,EM+vBI,KAAK,CN/vBT,CAAJ,C;QACI,cM8vBc,sD;QN7vBd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MM8vBV,IAAI,MAAK,CAAT,C;QAAY,OAAO,W;MACnB,WAAW,c;MACX,IAAI,KAAK,IAAT,C;QAAe,OAAO,mB;MACtB,IAAI,MAAK,CAAT,C;QAAY,OAAO,OAAO,kBAAP,C;MACnB,WAAW,iBAAa,CAAb,C;MACX,IAAI,sCAAJ,C;QACI,iBAAc,OAAO,CAAP,IAAd,UAA6B,IAA7B,U;UACI,IAAK,WAAI,sBAAK,KAAL,CAAJ,C;;;QAEI,sCAAa,OAAO,CAAP,IAAb,C;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,IAAK,WAAI,IAAJ,C;;;MAEb,OAAO,I;IACX,C;kGAEA,yB;MAAA,qD;MAAA,gE;MAAA,gD;MAAA,uC;QAMI,IAAI,mBAAJ,C;UACI,OAAO,W;QACX,eAAe,+BAAa,cAAb,C;QACf,OAAO,QAAS,cAAhB,C;UACI,IAAI,CAAC,UAAU,QAAS,WAAnB,CAAL,C;YACI,QAAS,O;YACT,mBAAmB,iBAAO,QAAS,YAAhB,I;YACnB,IAAI,iBAAgB,CAApB,C;cAAuB,OAAO,W;YACI,kBAA3B,eAAa,YAAb,C;YACH,OAAgB,kBAAhB,C;cACI,sBAAa,eAAb,C;YAFR,OF7uBD,W;;;QEmvBP,OAAO,iB;MACX,C;KArBA,C;0FAuBA,yB;MAAA,+D;MAAA,uC;QAOiB,Q;QADb,WAAW,gB;QACE,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,IAAI,CAAC,UAAU,IAAV,CAAL,C;YACI,K;UACJ,IAAK,WAAI,IAAJ,C;;QAET,OAAO,I;MACX,C;KAbA,C;;MAwBI,IAAI,wCAAsB,kBAAQ,CAAlC,C;QAAqC,OAAO,mB;MAC5C,WAAW,0B;MACN,WAAL,IAAK,C;MACL,OAAO,I;IACX,C;oFAEA,yB;MAAA,oD;MJzwBA,sC;MCjFA,kC;MAAA,oC;;QAAsG,4C;MAAtG,C;MAAA,6D;QAC4C,+BAAW,CAAX,EAAc,CAAd,C;MAAA,C;MAD5C,kF;MDiFA,uBAOe,yB;QArEf,8D;;UAqEe,uB;YAAU,eAAsB,gB;YAAtB,OA5Dd,cAAc,SA4DgB,CA5DhB,CAAd,EAA2B,SA4DM,CA5DN,CAA3B,C;UA4DI,C;QAAA,C;OAAA,C;MIkwBf,sC;QAMI,IAAI,iBAAO,CAAX,C;UAAc,iDJxwBH,iBIwwBsB,QJxwBtB,CIwwBG,E;;MAClB,C;KAPA,C;wGASA,yB;MAAA,oD;MJ/vBA,sC;MCpGA,kC;MAAA,oC;;QAAsG,4C;MAAtG,C;MAAA,6D;QAC4C,+BAAW,CAAX,EAAc,CAAd,C;MAAA,C;MAD5C,kF;MDoGA,iCAOe,yB;QAxFf,8D;;UAwFe,uB;YAAU,eAAsB,gB;YAAtB,OA/Ed,cAAc,SA+EgB,CA/EhB,CAAd,EAA2B,SA+EM,CA/EN,CAA3B,C;UA+EI,C;QAAA,C;OAAA,C;MIwvBf,sC;QAMI,IAAI,iBAAO,CAAX,C;UAAc,iDJ9vBH,2BI8vBgC,QJ9vBhC,CI8vBG,E;;MAClB,C;KAPA,C;;MAeI,sBAAS,cAAT,C;IACJ,C;;MAWgB,Q;MAHZ,IAAI,oCAAJ,C;QACI,IAAI,kBAAQ,CAAZ,C;UAAe,OAAY,SAAL,SAAK,C;QAEwB,kBAA3C,sBC53BsD,sBD43BtD,uB;QAAmD,mB;QAA3D,OAAoE,OFxzBjE,WEwzBiE,C;;MAEjD,kBAAhB,0B;MAAwB,oB;MAA/B,OF1zBO,W;IE2zBX,C;wFAEA,yB;MAAA,wD;MJlzBA,sC;MCjFA,kC;MAAA,oC;;QAAsG,4C;MAAtG,C;MAAA,6D;QAC4C,+BAAW,CAAX,EAAc,CAAd,C;MAAA,C;MAD5C,kF;MDiFA,uBAOe,yB;QArEf,8D;;UAqEe,uB;YAAU,eAAsB,gB;YAAtB,OA5Dd,cAAc,SA4DgB,CA5DhB,CAAd,EAA2B,SA4DM,CA5DN,CAA3B,C;UA4DI,C;QAAA,C;OAAA,C;MI2yBf,sC;QAMI,OAAO,mDJjzBI,iBIizBiB,QJjzBjB,CIizBJ,E;MACX,C;KAPA,C;4GASA,yB;MAAA,wD;MJxyBA,sC;MCpGA,kC;MAAA,oC;;QAAsG,4C;MAAtG,C;MAAA,6D;QAC4C,+BAAW,CAAX,EAAc,CAAd,C;MAAA,C;MAD5C,kF;MDoGA,iCAOe,yB;QAxFf,8D;;UAwFe,uB;YAAU,eAAsB,gB;YAAtB,OA/Ed,cAAc,SA+EgB,CA/EhB,CAAd,EAA2B,SA+EM,CA/EN,CAA3B,C;UA+EI,C;QAAA,C;OAAA,C;MIiyBf,sC;QAMI,OAAO,mDJvyBI,2BIuyB2B,QJvyB3B,CIuyBJ,E;MACX,C;KAPA,C;;MAeI,OAAO,wBAAW,cAAX,C;IACX,C;;MAWe,Q;MAHX,IAAI,oCAAJ,C;QACG,IAAI,kBAAQ,CAAZ,C;UAAe,OAAY,SAAL,SAAK,C;QAEe,kBAAlC,sBCr6BuD,sBDq6BvD,uB;QAA0C,iC;QAAlD,OAAyE,OFj2BrE,WEi2BqE,C;;MAErD,kBAAhB,0B;MAAwB,mC;MAA/B,OFn2BO,W;IEo2BX,C;;MAQoB,UACL,M;MAHX,aAAa,oBAAa,cAAb,C;MACb,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,cAAP,EAAO,sBAAP,YAAkB,O;;MACtB,OAAO,M;IACX,C;;MAQoB,UACL,M;MAHX,aAAa,cAAU,cAAV,C;MACb,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,cAAP,EAAO,sBAAP,YAAkB,O;;MACtB,OAAO,M;IACX,C;;MAQoB,UACL,M;MAHX,aAAa,iBAAU,cAAV,C;MACb,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,oC;QACZ,OAAO,cAAP,EAAO,sBAAP,YAAkB,O;;MACtB,OAAO,M;IACX,C;;MAQoB,UACL,M;MAHX,aAAa,iBAAY,cAAZ,C;MACb,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,cAAP,EAAO,sBAAP,YAAkB,O;;MACtB,OAAO,M;IACX,C;;MAQoB,UACL,M;MAHX,aAAa,iBAAW,cAAX,C;MACb,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,cAAP,EAAO,sBAAP,YAAkB,O;;MACtB,OAAO,M;IACX,C;;MAQoB,UACL,M;MAHX,aAAa,eAAS,cAAT,C;MACb,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,cAAP,EAAO,sBAAP,YAAkB,O;;MACtB,OAAO,M;IACX,C;;MAQoB,UACL,M;MAHX,aAAa,iBAAU,cAAV,C;MACb,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,cAAP,EAAO,sBAAP,YAAkB,O;;MACtB,OAAO,M;IACX,C;;MAQoB,UACL,M;MAHX,aAAa,eAAW,cAAX,C;MACb,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,cAAP,EAAO,sBAAP,YAAkB,O;;MACtB,OAAO,M;IACX,C;0FAEA,yB;MAAA,kF;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,uC;QASI,eAAwD,cAAzC,YAAY,mCAAwB,EAAxB,CAAZ,CAAyC,EAAc,EAAd,C;QACjD,kBAAY,mBAAoB,QAApB,C;QA+DH,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WAhE8C,SAgE/B,CAAU,OAAV,C;UZhfnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;QYgbA,OAkEO,W;MAjEX,C;KAXA,C;+FAaA,yB;MAAA,kF;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yC;QASI,eAAwD,cAAzC,YAAY,mCAAwB,EAAxB,CAAZ,CAAyC,EAAc,EAAd,C;QACjD,kBAAc,mBAAoB,QAApB,C;QAuBL,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WAAY,aAxBoC,WAwBhC,CAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;QAxBhB,OA0BO,W;MAzBX,C;KAXA,C;+FAaA,yB;MAAA,kF;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,yD;QAQI,eAAwD,cAAzC,YAAY,mCAAwB,EAAxB,CAAZ,CAAyC,EAAc,EAAd,C;QACjD,kBAAc,mBAAoB,QAApB,C;QAyBL,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WAAY,aA1BoC,WA0BhC,CAAY,OAAZ,CAAJ,EA1BiD,cA0BvB,CAAe,OAAf,CAA1B,C;;QA1BhB,OA4BO,W;MA3BX,C;KAVA,C;;MAoBoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;MAEhB,OAAO,W;IACX,C;;MAUoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,eAAe,OAAf,CAA1B,C;;MAEhB,OAAO,W;IACX,C;;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,WAAe,UAAU,OAAV,C;QZhfnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;MYkfA,OAAO,W;IACX,C;gGAEA,yB;MAAA,kF;MAAA,0D;MAAA,yD;MAAA,uE;MAAA,2C;QAYI,aAAa,mBAA6D,cAAzC,YAAY,mCAAwB,EAAxB,CAAZ,CAAyC,EAAc,EAAd,CAA7D,C;QAYG,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAXO,MAYP,aAAI,OAAJ,EAZe,aAYF,CAAc,OAAd,CAAb,C;;QAZhB,OAAuB,M;MAC3B,C;KAdA,C;;MAwBoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,WAAY,aAAI,OAAJ,EAAa,cAAc,OAAd,CAAb,C;;MAEhB,OAAO,W;IACX,C;;MAMiB,Q;MAAA,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,IAAJ,C;;MAEhB,OAAO,W;IACX,C;;MAMI,OAAO,0BAAa,eAAW,YAAY,mCAAwB,EAAxB,CAAZ,CAAX,CAAb,C;IACX,C;;MAOqB,IAAN,I;MADX,IAAI,oCAAJ,C;QACW,QAAM,cAAN,C;eACH,C;YAAK,kB;YAAL,K;eACA,C;YAAK,cAAW,8BAAJ,GAAkB,sBAAI,CAAJ,CAAlB,GAA8B,oBAAW,OAAhD,C;YAAL,K;kBACa,uBAAL,SAAK,C;YAHV,K;;QAAP,W;;MAMJ,OAA4B,qBAAhB,gBAAL,SAAK,CAAgB,C;IAChC,C;;MAMI,IAAI,oCAAJ,C;QACI,OAAY,gBAAL,SAAK,C;MAChB,OAAO,0BAAa,gBAAb,C;IACX,C;;MAMI,OAAO,iBAAU,SAAV,C;IACX,C;;MASqB,IAAN,I;MADX,IAAI,oCAAJ,C;QACW,QAAM,cAAN,C;eACH,C;YAAK,iB;YAAL,K;eACA,C;YAAK,aAAU,8BAAJ,GAAkB,sBAAK,CAAL,CAAlB,GAA+B,oBAAW,OAAhD,C;YAAL,K;kBACQ,iCAAa,qBAAiB,YAAY,cAAZ,CAAjB,CAAb,C;YAHL,K;;QAAP,W;;MAMJ,OAAwC,oBAAjC,0BAAa,sBAAb,CAAiC,C;IAC5C,C;sFAEA,yB;MAAA,+D;MAOA,gD;MAPA,uC;QAIW,kBAAU,gB;QAOD,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WAR6B,SAQlB,CAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAThB,OAWO,W;MAVX,C;KALA,C;0FAOA,yB;MAAA,gD;MAAA,oD;QAIoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WAAW,UAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAEhB,OAAO,W;MACX,C;KATA,C;uFAWA,yB;MAAA,wE;MAyBA,+D;MAzBA,yC;QASW,kBAAU,oB;QAyBD,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UA1BiD,WA0BvC,CAAY,OAAZ,C;UZj8BP,U;UADP,YYm8Be,WZn8BH,WYm8BwB,GZn8BxB,C;UACL,IAAI,aAAJ,C;YACH,aYi8BuC,gB;YAA5B,WZh8BX,aYg8BgC,GZh8BhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UY67BA,iB;UACA,IAAK,WAAI,OAAJ,C;;QA5BT,OA8BO,W;MA7BX,C;KAVA,C;uFAYA,yB;MAAA,wE;MA8BA,+D;MA9BA,yD;QAUW,kBAAU,oB;QA8BD,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UA/BiD,WA+BvC,CAAY,OAAZ,C;UZn9BP,U;UADP,YYq9Be,WZr9BH,WYq9BwB,GZr9BxB,C;UACL,IAAI,aAAJ,C;YACH,aYm9BuC,gB;YAA5B,WZl9BX,aYk9BgC,GZl9BhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UY+8BA,iB;UACA,IAAK,WAjCyD,cAiCrD,CAAe,OAAf,CAAJ,C;;QAjCT,OAmCO,W;MAlCX,C;KAXA,C;0FAaA,yB;MAAA,+D;MAAA,sD;QASoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;UZj8BP,U;UADP,YYm8Be,WZn8BH,WYm8BwB,GZn8BxB,C;UACL,IAAI,aAAJ,C;YACH,aYi8BuC,gB;YAA5B,WZh8BX,aYg8BgC,GZh8BhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UY67BA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAET,OAAO,W;MACX,C;KAfA,C;2FAiBA,yB;MAAA,+D;MAAA,sE;QAUoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;UZn9BP,U;UADP,YYq9Be,WZr9BH,WYq9BwB,GZr9BxB,C;UACL,IAAI,aAAJ,C;YACH,aYm9BuC,gB;YAA5B,WZl9BX,aYk9BgC,GZl9BhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UY+8BA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;MACX,C;KAhBA,C;4FAkBA,yB;MAAA,kC;MAAA,4C;;QAQW,sC;QAAA,8C;MARX,C;MAAA,gE;QASqD,OAAA,oBAAgB,W;MAAhB,C;MATrD,oE;QAU4C,gCAAY,OAAZ,C;MAAA,C;MAV5C,gF;MAAA,yC;QAQI,2D;MAIJ,C;KAZA,C;8EAcA,yB;MAAA,kF;MAAA,gE;MAAA,uC;QAOW,kBAAM,eAAa,mCAAwB,EAAxB,CAAb,C;QAqEA,Q;QAAA,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WAtEwC,SAsEpC,CAAU,IAAV,CAAJ,C;;QAtEhB,OAuEO,W;MAtEX,C;KARA,C;4FAUA,yB;MAAA,kF;MAAA,gE;MA+BA,wE;MA/BA,uC;QAOW,kBAAa,eAAa,mCAAwB,EAAxB,CAAb,C;QAgCP,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WAjC+C,SAiC3C,CAAU,oBAAmB,cAAnB,EAAmB,sBAAnB,UAAV,EAAuC,IAAvC,CAAJ,C;;QAjChB,OAkCO,W;MAjCX,C;KARA,C;0GAUA,yB;MAAA,+D;MAuQA,wE;MAvQA,uC;QAOW,kBAAoB,gB;QAuQd,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UA7PsB,U;UAAA,cAVQ,SAUR,CA6PT,oBAAmB,cAAnB,EAAmB,sBAAnB,UA7PS,EA6PoB,IA7PpB,W;YAA6C,6B;;;QAVhF,OAWO,W;MAVX,C;KARA,C;8GAUA,yB;MA6PA,wE;MA7PA,oD;QAoQiB,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UA7PsB,U;UAAA,wBA6PT,oBAAmB,cAAnB,EAAmB,sBAAnB,UA7PS,EA6PoB,IA7PpB,W;YAA6C,6B;;;QAChF,OAAO,W;MACX,C;KATA,C;+FAWA,yB;MAAA,wE;MAAA,oD;QAQiB,UACoC,M;QAFjD,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WAAI,UAAU,oBAAmB,cAAnB,EAAmB,sBAAnB,UAAV,EAAuC,IAAvC,CAAJ,C;;QAChB,OAAO,W;MACX,C;KAXA,C;4FAaA,yB;MAAA,+D;MAAA,uC;QAKW,kBAAa,gB;QA6NJ,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UArNK,U;UAAA,cARe,SAQf,CAqNQ,OArNR,W;YAAsC,6B;;;QAR3D,OASO,W;MARX,C;KANA,C;gGAQA,yB;MAAA,oD;QA0NoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UArNK,U;UAAA,wBAqNQ,OArNR,W;YAAsC,6B;;;QAC3D,OAAO,W;MACX,C;KAPA,C;;MAciB,Q;MAAA,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAM4B,mB;QAAE,gC;MAAF,C;IAAA,C;;MAAxB,OAAO,qBAAiB,6BAAjB,C;IACX,C;;MAQI,OAA2B,SAAf,eAAL,SAAK,CAAe,C;IAC/B,C;4FAEA,yB;MAAA,2D;MAAA,+D;MAAA,sC;QASc,Q;QAFV,UAAU,c;QACV,WAAW,gB;QACD,2B;QAAV,OAAU,cAAV,C;UAAU,mB;UACN,UAAU,SAAS,CAAT,C;UACV,IAAI,GAAI,WAAI,GAAJ,CAAR,C;YACI,IAAK,WAAI,CAAJ,C;;QAEb,OAAO,I;MACX,C;KAfA,C;;MAuBI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQI,UAAe,eAAL,SAAK,C;MACX,YAAJ,GAAI,EAAU,KAAV,C;MACJ,OAAO,G;IACX,C;;MAQiB,IAAN,I;MACH,kBADS,SACT,c;QAAoB,4BAAc,SAAd,C;;QACZ,iCAAa,sBAAb,C;MAFZ,W;IAIJ,C;;MAUI,UAAe,eAAL,SAAK,C;MACX,OAAJ,GAAI,EAAO,KAAP,C;MACJ,OAAO,G;IACX,C;8EAEA,yB;MAAA,gD;MAAA,uC;QAOoB,Q;QADhB,IAAI,wCAAsB,mBAA1B,C;UAAqC,OAAO,I;QAC5B,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,CAAC,UAAU,OAAV,CAAL,C;YAAyB,OAAO,K;;QACtD,OAAO,I;MACX,C;KATA,C;;MAiBI,IAAI,oCAAJ,C;QAAwB,OAAO,CAAC,mB;MAChC,OAAO,oBAAW,U;IACtB,C;+EAEA,yB;MAAA,gD;MAAA,uC;QAOoB,Q;QADhB,IAAI,wCAAsB,mBAA1B,C;UAAqC,OAAO,K;QAC5B,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,OAAO,I;;QACrD,OAAO,K;MACX,C;KATA,C;;MAiBoB,Q;MAFhB,IAAI,oCAAJ,C;QAAwB,OAAO,c;MAC/B,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,oBAAmB,qBAAnB,EAAmB,KAAnB,E;;MACtB,OAAO,K;IACX,C;;MAOI,OAAO,c;IACX,C;mFAEA,yB;MAAA,gD;MAAA,wE;MAAA,uC;QAMoB,Q;QAFhB,IAAI,wCAAsB,mBAA1B,C;UAAqC,OAAO,C;QAC5C,YAAY,C;QACI,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,oBAAmB,qBAAnB,EAAmB,KAAnB,E;;QAC9C,OAAO,K;MACX,C;KARA,C;;MAeoB,Q;MADhB,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;IACX,C;8FAEA,yB;MAAA,wE;MAAA,gD;QASoB,UAAiD,M;QAFjE,YAAY,C;QACZ,kBAAkB,O;QACF,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,cAAc,UAAU,oBAAmB,cAAnB,EAAmB,sBAAnB,UAAV,EAAuC,WAAvC,EAAoD,OAApD,C;;QACpC,OAAO,W;MACX,C;KAXA,C;;MAiBI,kBAAkB,O;MAClB,IAAI,CAAC,mBAAL,C;QACI,eAAe,+BAAa,cAAb,C;QACf,OAAO,QAAS,cAAhB,C;UACI,cAAc,UAAU,QAAS,WAAnB,EAA+B,WAA/B,C;;;MAGtB,OAAO,W;IACX,C;;MASI,kBAAkB,O;MAClB,IAAI,CAAC,mBAAL,C;QACI,eAAe,+BAAa,cAAb,C;QACf,OAAO,QAAS,cAAhB,C;UACI,YAAY,QAAS,gB;UACrB,cAAc,UAAU,KAAV,EAAiB,QAAS,WAA1B,EAAsC,WAAtC,C;;;MAGtB,OAAO,W;IACX,C;;MAOoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,OAAO,OAAP,C;;IAC1B,C;oGAEA,yB;MAAA,wE;MAAA,oC;QAOiB,UAAgC,M;QAD7C,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UAAM,OAAO,oBAAmB,cAAnB,EAAmB,sBAAnB,UAAP,EAAoC,IAApC,C;;MACvB,C;KARA,C;;MAiBI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,UAAU,QAAS,O;MACnB,IAAQ,QAAJ,GAAI,CAAR,C;QAAiB,OAAO,G;MACxB,OAAO,QAAS,UAAhB,C;QACI,QAAQ,QAAS,O;QACjB,IAAM,QAAF,CAAE,CAAN,C;UAAe,OAAO,C;QACtB,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MASI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,UAAU,QAAS,O;MACnB,IAAQ,QAAJ,GAAI,CAAR,C;QAAiB,OAAO,G;MACxB,OAAO,QAAS,UAAhB,C;QACI,QAAQ,QAAS,O;QACjB,IAAM,QAAF,CAAE,CAAN,C;UAAe,OAAO,C;QACtB,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAMI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,UAAU,QAAS,O;MACnB,OAAO,QAAS,UAAhB,C;QACI,QAAQ,QAAS,O;QACjB,IAAI,sBAAM,CAAN,KAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAQI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,cAAc,QAAS,O;MACvB,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,O;MAChC,eAAe,SAAS,OAAT,C;;QAEX,QAAQ,QAAS,O;QACjB,QAAQ,SAAS,CAAT,C;QACR,IAAI,2BAAW,CAAX,KAAJ,C;UACI,UAAU,C;UACV,WAAW,C;;;MAED,QAAT,QAAS,W;MAClB,OAAO,O;IACX,C;;MAMI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,UAAU,QAAS,O;MACnB,OAAO,QAAS,UAAhB,C;QACI,QAAQ,QAAS,O;QACjB,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MASI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,UAAU,QAAS,O;MACnB,IAAQ,QAAJ,GAAI,CAAR,C;QAAiB,OAAO,G;MACxB,OAAO,QAAS,UAAhB,C;QACI,QAAQ,QAAS,O;QACjB,IAAM,QAAF,CAAE,CAAN,C;UAAe,OAAO,C;QACtB,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MASI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,UAAU,QAAS,O;MACnB,IAAQ,QAAJ,GAAI,CAAR,C;QAAiB,OAAO,G;MACxB,OAAO,QAAS,UAAhB,C;QACI,QAAQ,QAAS,O;QACjB,IAAM,QAAF,CAAE,CAAN,C;UAAe,OAAO,C;QACtB,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAMI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,UAAU,QAAS,O;MACnB,OAAO,QAAS,UAAhB,C;QACI,QAAQ,QAAS,O;QACjB,IAAI,sBAAM,CAAN,KAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAQI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,cAAc,QAAS,O;MACvB,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,O;MAChC,eAAe,SAAS,OAAT,C;;QAEX,QAAQ,QAAS,O;QACjB,QAAQ,SAAS,CAAT,C;QACR,IAAI,2BAAW,CAAX,KAAJ,C;UACI,UAAU,C;UACV,WAAW,C;;;MAED,QAAT,QAAS,W;MAClB,OAAO,O;IACX,C;;MAMI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,UAAU,QAAS,O;MACnB,OAAO,QAAS,UAAhB,C;QACI,QAAQ,QAAS,O;QACjB,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQI,IAAI,oCAAJ,C;QAAwB,OAAO,mB;MAC/B,OAAO,CAAC,oBAAW,U;IACvB,C;iFAEA,yB;MAAA,gD;MAAA,uC;QAOoB,Q;QADhB,IAAI,wCAAsB,mBAA1B,C;UAAqC,OAAO,I;QAC5B,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,OAAO,K;;QACrD,OAAO,I;MACX,C;KATA,C;;MAgBmC,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,OAAO,OAAP,C;;MAArC,gB;IACJ,C;oFAEA,yB;MAAA,4F;MAAA,uC;QAII,eAAe,SAAK,W;QACpB,IAAI,CAAC,QAAS,UAAd,C;UAAyB,MAAM,mCAA8B,oCAA9B,C;QAC/B,kBAAqB,QAAS,O;QAC9B,OAAO,QAAS,UAAhB,C;UACI,cAAc,UAAU,WAAV,EAAuB,QAAS,OAAhC,C;;QAElB,OAAO,W;MACX,C;KAXA,C;kGAaA,yB;MAAA,4F;MAAA,wE;MAAA,uC;QAYmD,Q;QAL/C,eAAe,SAAK,W;QACpB,IAAI,CAAC,QAAS,UAAd,C;UAAyB,MAAM,mCAA8B,oCAA9B,C;QAC/B,YAAY,C;QACZ,kBAAqB,QAAS,O;QAC9B,OAAO,QAAS,UAAhB,C;UACI,cAAc,UAAU,oBAAmB,YAAnB,EAAmB,oBAAnB,QAAV,EAAuC,WAAvC,EAAoD,QAAS,OAA7D,C;;QAElB,OAAO,W;MACX,C;KAfA,C;8FAiBA,yB;MAAA,4F;MAAA,uC;QAII,eAAe,+BAAa,cAAb,C;QACf,IAAI,CAAC,QAAS,cAAd,C;UACI,MAAM,mCAA8B,8BAA9B,C;QACV,kBAAqB,QAAS,W;QAC9B,OAAO,QAAS,cAAhB,C;UACI,cAAc,UAAU,QAAS,WAAnB,EAA+B,WAA/B,C;;QAElB,OAAO,W;MACX,C;KAZA,C;4GAcA,yB;MAAA,4F;MAAA,uC;QAOI,eAAe,+BAAa,cAAb,C;QACf,IAAI,CAAC,QAAS,cAAd,C;UACI,MAAM,mCAA8B,8BAA9B,C;QACV,kBAAqB,QAAS,W;QAC9B,OAAO,QAAS,cAAhB,C;UACI,YAAY,QAAS,gB;UACrB,cAAc,UAAU,KAAV,EAAiB,QAAS,WAA1B,EAAsC,WAAtC,C;;QAElB,OAAO,W;MACX,C;KAhBA,C;;MAuBoB,Q;MADhB,UAAe,C;MACC,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,YAAO,SAAS,OAAT,CAAP,I;;MAEJ,OAAO,G;IACX,C;;MAOoB,Q;MADhB,UAAkB,G;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;IACX,C;;MAMoB,UAMT,M;MANS,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,eAAJ,C;UACI,MAAM,gCAAyB,2BAAwB,SAAxB,MAAzB,C;;;MAId,OAAO,mE;IACX,C;;MAMoB,UAMT,M;MANS,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,eAAJ,C;UACI,MAAM,gCAAyB,2BAAwB,SAAxB,MAAzB,C;;;MAId,OAAO,+D;IACX,C;;MAaI,OAAO,oBAAS,IAAT,EAAe,IAAf,EAAsC,IAAtC,C;IACX,C;;MAkBI,OAAO,sBAAS,IAAT,EAAe,IAAf,EAAsC,IAAtC,EAAwD,SAAxD,C;IACX,C;;MAMI,aAAa,iBAAa,mCAAwB,EAAxB,CAAb,C;MACb,kBAAc,KAAd,C;MAtrCgB,Q;MAAA,OAurCT,SAvrCS,W;MAAhB,OAAgB,cAAhB,C;QAAgB,2B;QAAU,oB;QAurCK,IAAI,CAAC,SAAD,IAAY,OAvrCX,SAurCW,UAAhB,C;UAAiC,YAAU,I;UAA3C,mBAAiD,K;;;UAAjD,mBAA8D,I;;QAvrCvE,qB;UAurCD,MAvrCqC,WAAI,SAAJ,C;;MAurC1D,OAAqB,M;IACzB,C;;MASI,IAAI,QnBq1IG,YAAQ,CmBr1If,C;QAAwB,OAAY,SAAL,SAAK,C;MACpC,YAAqB,UAAT,QAAS,C;MAhuCd,kBAAY,gB;MAsBH,Q;MAAA,OA2sCT,SA3sCS,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CA2sCF,qBA3sCa,OA2sCb,CA3sCF,C;UAAyB,WAAY,WAAI,OAAJ,C;;MA2sC3D,OA1sCO,W;IA2sCX,C;;MASI,YAAqB,gCAAT,QAAS,EAAgC,SAAhC,C;MACrB,IAAI,KAAM,UAAV,C;QACI,OAAY,SAAL,SAAK,C;MA7uCT,kBAAY,gB;MAsBH,Q;MAAA,OAwtCT,SAxtCS,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAwtCF,qBAxtCa,OAwtCb,CAxtCF,C;UAAyB,WAAY,WAAI,OAAJ,C;;MAwtC3D,OAvtCO,W;IAwtCX,C;;MASI,YAAqB,YAAT,QAAS,C;MACrB,IAAI,KAAM,UAAV,C;QACI,OAAY,SAAL,SAAK,C;MA1vCT,kBAAY,gB;MAsBH,Q;MAAA,OAquCT,SAruCS,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAquCF,qBAruCa,OAquCb,CAruCF,C;UAAyB,WAAY,WAAI,OAAJ,C;;MAquC3D,OApuCO,W;IAquCX,C;8FAEA,yB;MAAA,8C;MAAA,qC;QAKI,OAAO,iBAAM,OAAN,C;MACX,C;KANA,C;0FAQA,yB;MAAA,+D;MAAA,6B;MAAA,uC;QAQoB,Q;QAFhB,YAAY,gB;QACZ,aAAa,gB;QACG,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,UAAU,OAAV,CAAJ,C;YACI,KAAM,WAAI,OAAJ,C;;;YAEN,MAAO,WAAI,OAAJ,C;;;QAGf,OAAO,cAAK,KAAL,EAAY,MAAZ,C;MACX,C;KAhBA,C;;MAsBI,IAAI,oCAAJ,C;QAAwB,OAAY,OAAL,SAAK,EAAK,OAAL,C;MACpC,aAAa,gB;MACN,OAAP,MAAO,EAAO,SAAP,C;MACP,MAAO,WAAI,OAAJ,C;MACP,OAAO,M;IACX,C;;MAMI,aAAa,iBAAa,iBAAO,CAAP,IAAb,C;MACb,MAAO,gBAAO,SAAP,C;MACP,MAAO,WAAI,OAAJ,C;MACP,OAAO,M;IACX,C;;MAMI,IAAI,oCAAJ,C;QAAwB,OAAY,OAAL,SAAK,EAAK,QAAL,C;MACpC,aAAa,gB;MACN,OAAP,MAAO,EAAO,SAAP,C;MACA,SAAP,MAAO,EAAO,QAAP,C;MACP,OAAO,M;IACX,C;;MAMI,aAAa,iBAAa,SAAK,KAAL,GAAY,QAAS,OAArB,IAAb,C;MACb,MAAO,gBAAO,SAAP,C;MACA,SAAP,MAAO,EAAO,QAAP,C;MACP,OAAO,M;IACX,C;;MAMI,IAAI,oCAAJ,C;QAAwB,OAAY,OAAL,SAAK,EAAK,QAAL,C;MACpC,aAAa,gB;MACN,OAAP,MAAO,EAAO,SAAP,C;MACA,OAAP,MAAO,EAAO,QAAP,C;MACP,OAAO,M;IACX,C;;MAMI,IAAI,mCAAJ,C;QACI,aAAa,iBAAa,SAAK,KAAL,GAAY,QAAS,KAArB,IAAb,C;QACb,MAAO,gBAAO,SAAP,C;QACP,MAAO,gBAAO,QAAP,C;QACP,OAAO,M;;;QAEP,eAAa,iBAAa,SAAb,C;QACN,OAAP,QAAO,EAAO,QAAP,C;QACP,OAAO,Q;;IAEf,C;;MAMI,aAAa,gB;MACN,OAAP,MAAO,EAAO,SAAP,C;MACA,SAAP,MAAO,EAAO,QAAP,C;MACP,OAAO,M;IACX,C;;MAMI,aAAa,iBAAa,SAAK,KAAL,GAAY,EAAZ,IAAb,C;MACb,MAAO,gBAAO,SAAP,C;MACA,SAAP,MAAO,EAAO,QAAP,C;MACP,OAAO,M;IACX,C;4FAEA,yB;MAAA,4C;MAAA,qC;QAKI,OAAO,gBAAK,OAAL,C;MACX,C;KANA,C;8FAQA,yB;MAAA,4C;MAAA,qC;QAKI,OAAO,gBAAK,OAAL,C;MACX,C;KANA,C;;MAwB+C,oB;QAAA,OAAY,C;MAAG,8B;QAAA,iBAA0B,K;MACpF,oBAAoB,IAApB,EAA0B,IAA1B,C;MACA,IAAI,0CAAwB,8BAA5B,C;QACI,eAAe,SAAK,K;QACpB,aAAa,iBAAmB,CAAC,WAAW,IAAX,GAAkB,CAAlB,IAAD,IAAwB,IAAxB,IAAnB,C;QACb,gBAAY,CAAZ,C;QACA,OAAO,UAAQ,QAAf,C;UACI,iBAAsB,eAAL,IAAK,EAAa,WAAW,OAAX,IAAb,C;UACtB,IAAI,aAAa,IAAb,IAAqB,CAAC,cAA1B,C;YAA0C,K;Ubt9DlD,WAAW,iBau9Da,Ubv9Db,C;UWOX,mBAAc,CAAd,YEg9DwB,UFh9DxB,Y;YXN6B,eas9DS,sBF/8D3B,OE+8DgC,GAAK,OAAL,IAAL,Cbt9DT,C;;Uas9DrB,MAAO,Wbr9DR,Iaq9DQ,C;UACP,oBAAS,IAAT,I;;QAEJ,OAAO,M;;MAEX,eAAa,gB;MACiE,kBAA9E,iBAAiB,oBAAjB,EAA6B,IAA7B,EAAmC,IAAnC,EAAyC,cAAzC,EAAuE,KAAvE,C;ME7kEA,OAAgB,qBAAhB,C;QAAgB,gC;QF8kEL,mBE9kEqB,OF8kErB,C;;MAEX,OAAO,Q;IACX,C;;MAoBkD,oB;QAAA,OAAY,C;MAAG,8B;QAAA,iBAA0B,K;MACvF,oBAAoB,IAApB,EAA0B,IAA1B,C;MACA,IAAI,0CAAwB,8BAA5B,C;QACI,eAAe,SAAK,K;QACpB,aAAa,iBAAa,CAAC,WAAW,IAAX,GAAkB,CAAlB,IAAD,IAAwB,IAAxB,IAAb,C;QACb,eAAa,kBAAc,SAAd,C;QACb,YAAY,C;QACZ,OAAO,QAAQ,QAAf,C;UACI,QAAO,cAAK,KAAL,EAA2B,eAAd,QAAQ,IAAR,IAAc,EAAa,QAAb,CAA3B,C;UACP,IAAI,CAAC,cAAD,IAAmB,QAAO,KAAP,GAAc,IAArC,C;YAA2C,K;UAC3C,MAAO,WAAI,UAAU,QAAV,CAAJ,C;UACP,gBAAS,IAAT,I;;QAEJ,OAAO,M;;MAEX,eAAa,gB;MACgE,kBAA7E,iBAAiB,oBAAjB,EAA6B,IAA7B,EAAmC,IAAnC,EAAyC,cAAzC,EAAuE,IAAvE,C;MErnEA,OAAgB,qBAAhB,C;QAAgB,gC;QFsnEL,mBAAI,UEtnEiB,OFsnEjB,CAAJ,C;;MAEX,OAAO,Q;IACX,C;;MAuBoB,gB;MAHhB,gBAXW,KAWW,O;MACtB,WAAW,iBDn/DJ,MAAK,KCm/DkB,mCAAwB,EAAxB,CDn/DlB,ECm/D+C,SDn/D/C,CCm/DD,C;MACX,QAAQ,C;MACQ,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAhBqB,GAgBP,OAhBO,EAAnB,KAgBqB,CAAM,UAAN,EAAM,kBAAN,SAhBF,CAgBrB,C;;MAhBT,OAkBO,I;IAjBX,C;+EAEA,yB;MAAA,kF;MAAA,gE;MDj/DA,iB;MCi/DA,8C;QAWoB,UAEsB,M;QALtC,gBAAgB,KAAM,O;QACtB,WAAW,eDn/DJ,MAAK,KCm/DkB,mCAAwB,EAAxB,CDn/DlB,ECm/D+C,SDn/D/C,CCm/DD,C;QACX,QAAQ,C;QACQ,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,OAAV,EAAmB,MAAM,UAAN,EAAM,kBAAN,SAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAhBA,C;;MAoCI,YAAY,oB;MACZ,aAZW,KAYQ,W;MACnB,WAAW,iBDhhEJ,MAAK,KCghEkB,mCAAwB,EAAxB,CDhhElB,ECghEqD,wBAbtD,KAasD,EAAwB,EAAxB,CDhhErD,CCghED,C;MACX,OAAO,KAAM,UAAN,IAAmB,MAAO,UAAjC,C;QACI,IAAK,WAfqB,GAeP,KAAM,OAfC,EAeO,MAAO,OAfd,CAerB,C;;MAfT,OAiBO,I;IAhBX,C;+EAEA,yB;MAAA,kF;MAAA,gE;MD7gEA,iB;MC6gEA,8C;QAQI,YAAY,oB;QACZ,aAAa,KAAM,W;QACnB,WAAW,eDhhEJ,MAAK,KCghEkB,mCAAwB,EAAxB,CDhhElB,ECghEqD,wBAAN,KAAM,EAAwB,EAAxB,CDhhErD,CCghED,C;QACX,OAAO,KAAM,UAAN,IAAmB,MAAO,UAAjC,C;UACI,IAAK,WAAI,UAAU,KAAM,OAAhB,EAAwB,MAAO,OAA/B,CAAJ,C;;QAET,OAAO,I;MACX,C;KAfA,C;;MA0BW,sB;;QAaP,eAAe,oB;QACf,IAAI,CAAC,QAAS,UAAd,C;UAAyB,qBAAO,W;UAAP,uB;;QACzB,ab/oEoD,gB;QagpEpD,cAAc,QAAS,O;QACvB,OAAO,QAAS,UAAhB,C;UACI,WAAW,QAAS,O;UACpB,MAAO,WAnBkB,GAmBJ,OAnBI,EAmBK,IAnBL,CAmBlB,C;UACP,UAAU,I;;QAEd,qBAAO,M;;;MAtBP,yB;IACJ,C;8FAEA,yB;MAAA,qD;MbzoEA,+D;MayoEA,uC;QAUI,eAAe,oB;QACf,IAAI,CAAC,QAAS,UAAd,C;UAAyB,OAAO,W;QAChC,ab/oEoD,gB;QagpEpD,cAAc,QAAS,O;QACvB,OAAO,QAAS,UAAhB,C;UACI,WAAW,QAAS,O;UACpB,MAAO,WAAI,UAAU,OAAV,EAAmB,IAAnB,CAAJ,C;UACP,UAAU,I;;QAEd,OAAO,M;MACX,C;KApBA,C;;MA8B6D,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAoC,I;MAGtN,Q;MAFhB,MAAO,gBAAO,MAAP,C;MACP,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,iCAAU,CAAd,C;UAAiB,MAAO,gBAAO,SAAP,C;QACxB,IAAI,QAAQ,CAAR,IAAa,SAAS,KAA1B,C;UACW,gBAAP,MAAO,EAAc,OAAd,EAAuB,SAAvB,C;;;UACJ,K;;MAEX,IAAI,SAAS,CAAT,IAAc,QAAQ,KAA1B,C;QAAiC,MAAO,gBAAO,SAAP,C;MACxC,MAAO,gBAAO,OAAP,C;MACP,OAAO,M;IACX,C;;MAUwC,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAoC,I;MACjN,OAAO,oBAAO,sBAAP,EAAwB,SAAxB,EAAmC,MAAnC,EAA2C,OAA3C,EAAoD,KAApD,EAA2D,SAA3D,EAAsE,SAAtE,CAAiF,W;IAC5F,C;;MAOI,OAAO,S;IACX,C;;MAQoB,mB;QAAE,OAAA,eAAK,W;MAAP,C;IAAA,C;;MAAhB,oCAAgB,8BAAhB,C;IACJ,C;;MASoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACD,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,O;QACP,oBAAmB,qBAAnB,EAAmB,KAAnB,E;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MASoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACD,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,O;QACP,oBAAmB,qBAAnB,EAAmB,KAAnB,E;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MASoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACD,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,O;QACP,oBAAmB,qBAAnB,EAAmB,KAAnB,E;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MASoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACD,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,O;QACP,oBAAmB,qBAAnB,EAAmB,KAAnB,E;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MASoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACD,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,O;QACP,oBAAmB,qBAAnB,EAAmB,KAAnB,E;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MASoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACD,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,O;QACP,oBAAmB,qBAAnB,EAAmB,KAAnB,E;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MAQoB,Q;MADhB,UAAe,C;MACC,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,YAAO,O;;MAEX,OAAO,G;IACX,C;;MAQoB,Q;MADhB,UAAe,C;MACC,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,YAAO,O;;MAEX,OAAO,G;IACX,C;;MAQoB,Q;MADhB,UAAe,C;MACC,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,YAAO,OAAP,I;;MAEJ,OAAO,G;IACX,C;;MAQoB,Q;MADhB,Y;MACgB,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,cAAO,OAAP,C;;MAEJ,OAAO,G;IACX,C;;MAQoB,Q;MADhB,UAAiB,G;MACD,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,O;;MAEX,OAAO,G;IACX,C;;MAQoB,Q;MADhB,UAAkB,G;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,O;;MAEX,OAAO,G;IACX,C;;MGx0EI,OAAO,QAAM,CAAN,EAAS,QAAM,CAAN,EAAS,CAAT,EAAY,UAAZ,CAAT,EAAkC,UAAlC,C;IACX,C;;MAQI,OAAW,UAAW,SAAQ,CAAR,EAAW,CAAX,CAAX,IAA4B,CAAhC,GAAmC,CAAnC,GAA0C,C;IACrD,C;;MAwGI,OAAO,QAAM,CAAN,EAAS,QAAM,CAAN,EAAS,CAAT,EAAY,UAAZ,CAAT,EAAkC,UAAlC,C;IACX,C;;MAQI,OAAW,UAAW,SAAQ,CAAR,EAAW,CAAX,CAAX,IAA4B,CAAhC,GAAmC,CAAnC,GAA0C,C;IACrD,C;;MC5NI,IAAI,mBAAQ,CAAZ,C;QACI,OAAO,W;MACX,eAAe,iBAAQ,W;MACvB,IAAI,CAAC,QAAS,UAAd,C;QACI,OAAO,W;MACX,YAAY,QAAS,O;MACrB,IAAI,CAAC,QAAS,UAAd,C;QACI,OAAO,OhBwOiD,SgBxO1C,KhBwO+C,IAAL,EgBxO1C,KhBwOoD,MAAV,CgBxOjD,C;;MACX,aAAa,iBAAsB,cAAtB,C;MACb,MAAO,WhBsOqD,SgBtOjD,KhBsOsD,IAAL,EgBtOjD,KhBsO2D,MAAV,CgBtOrD,C;;QAEwB,kBAAhB,QAAS,O;QAApB,MAAO,WhBoOiD,SAAK,eAAL,EAAU,iBAAV,CgBpOjD,C;;MACO,QAAT,QAAS,W;MAClB,OAAO,M;IACX,C;sFAEA,yB;MAAA,+D;MAOA,gD;MAPA,uC;QAIW,kBAAU,gB;QAOD,Q;QAAA,OhB8QoE,iBAAQ,W;QgB9Q5F,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WAR6B,SAQlB,CAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAThB,OAWO,W;MAVX,C;KALA,C;0FAOA,yB;MAAA,gD;MAAA,oD;QAIoB,Q;QAAA,OAAA,ShB8QoE,QAAQ,W;QgB9Q5F,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WAAW,UAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAEhB,OAAO,W;MACX,C;KATA,C;8EAWA,yB;MAAA,gE;MAAA,uC;QAOW,kBAAM,eAAa,cAAb,C;QAyBA,Q;QAAA,OhBuOuE,iBAAQ,W;QgBvO5F,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WA1BiB,SA0Bb,CAAU,IAAV,CAAJ,C;;QA1BhB,OA2BO,W;MA1BX,C;KARA,C;4FAUA,yB;MAAA,+D;MAAA,uC;QAKW,kBAAa,gB;QA4EJ,Q;QAAA,OhB4KoE,iBAAQ,W;QgB5K5F,OAAgB,cAAhB,C;UAAgB,yB;UApEK,U;UAAA,cARe,SAQf,CAoEQ,OApER,W;YAAsC,6B;;;QAR3D,OASO,W;MARX,C;KANA,C;gGAQA,yB;MAAA,oD;QAyEoB,Q;QAAA,OhB4KoE,iBAAQ,W;QgB5K5F,OAAgB,cAAhB,C;UAAgB,yB;UApEK,U;UAAA,wBAoEQ,OApER,W;YAAsC,6B;;;QAC3D,OAAO,W;MACX,C;KAPA,C;;MAciB,Q;MAAA,OAAA,ShBuOuE,QAAQ,W;MgBvO5F,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MASoB,Q;MADhB,IAAI,mBAAJ,C;QAAe,OAAO,I;MACN,OAAA,ShB2NoE,QAAQ,W;MgB3N5F,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;IACX,C;;MAQI,OAAO,CAAC,mB;IACZ,C;;MASoB,Q;MADhB,IAAI,mBAAJ,C;QAAe,OAAO,K;MACN,OAAA,ShBuMoE,QAAQ,W;MgBvM5F,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;IACX,C;;MAOI,OAAO,c;IACX,C;;MAQoB,Q;MAFhB,IAAI,mBAAJ,C;QAAe,OAAO,C;MACtB,YAAY,C;MACI,OAAA,ShBqLoE,QAAQ,W;MgBrL5F,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,qB;;MAC9C,OAAO,K;IACX,C;;MAOoB,Q;MAAA,OAAA,ShB4KoE,QAAQ,W;MgB5K5F,OAAgB,cAAhB,C;QAAgB,yB;QAAM,OAAO,OAAP,C;;IAC1B,C;;MASmB,kBAAR,iB;MAAQ,gB;;QJ09Cf,eAAe,sB;QACf,IAAI,CAAC,QAAS,UAAd,C;UAAyB,eAAO,I;UAAP,iB;;QACzB,cAAc,QAAS,O;QACvB,IAAI,CAAC,QAAS,UAAd,C;UAAyB,eAAO,O;UAAP,iB;;QACzB,eI99CqB,QJ89CN,CAAS,OAAT,C;;UAEX,QAAQ,QAAS,O;UACjB,QIj+CiB,QJi+CT,CAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAED,QAAT,QAAS,W;QAClB,eAAO,O;;;MIv+CP,mB;IACJ,C;sFAEA,yB;MAAA,kD;MAAA,wC;QAKI,OAAe,QAAR,iBAAQ,EAAQ,UAAR,C;MACnB,C;KANA,C;;MAcmB,kBAAR,iB;MAAQ,gB;;QJiiDf,eAAe,sB;QACf,IAAI,CAAC,QAAS,UAAd,C;UAAyB,eAAO,I;UAAP,iB;;QACzB,cAAc,QAAS,O;QACvB,IAAI,CAAC,QAAS,UAAd,C;UAAyB,eAAO,O;UAAP,iB;;QACzB,eIriDqB,QJqiDN,CAAS,OAAT,C;;UAEX,QAAQ,QAAS,O;UACjB,QIxiDiB,QJwiDT,CAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAED,QAAT,QAAS,W;QAClB,eAAO,O;;;MI9iDP,mB;IACJ,C;;MAMI,OAAe,UAAR,iBAAQ,EAAQ,UAAR,C;IACnB,C;;MAQI,OAAO,mB;IACX,C;;MASoB,Q;MADhB,IAAI,mBAAJ,C;QAAe,OAAO,I;MACN,OAAA,ShBuHoE,QAAQ,W;MgBvH5F,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;IACX,C;;MAOmC,Q;MAAA,OhB8GqD,iBAAQ,W;MgB9G7E,OAAgB,cAAhB,C;QAAgB,yB;QAAM,OAAO,OAAP,C;;MAArC,gB;IACJ,C;;MAOI,OAAO,iB;IACX,C;;MAMI,OAAe,aAAR,iBAAQ,C;IACnB,C;gFtBjNA,yB;MAAA,mC;MAAA,2C;MAAA,4B;QAQI,OAAO,kBAAO,cAAP,C;MACX,C;KATA,C;gFAWA,yB;MAAA,mC;MAAA,2C;MAAA,4B;QAQI,OAAO,kBAAO,cAAP,C;MACX,C;KATA,C;gFAWA,yB;MAAA,mC;MAAA,2C;MAAA,4B;QAQI,OAAO,kBAAO,cAAP,C;MACX,C;KATA,C;;;QAmBQ,OAAc,QAAP,MAAO,EAAQ,SAAR,C;;;QAChB,+C;UACE,MAAM,2BAAuB,CAAE,QAAzB,C;;;UAHV,O;;IAKJ,C;;;QAUQ,OAAc,SAAP,MAAO,EAAS,SAAT,C;;;QAChB,+C;UACE,MAAM,2BAAuB,CAAE,QAAzB,C;;;UAHV,O;;IAKJ,C;;;QAUQ,OAAuD,OAAhD,MAAO,iBAAQ,eAAM,IAAd,EAAuB,CAAA,cAAK,IAAL,IAAe,CAAf,IAAvB,CAAyC,C;;;QACzD,+C;UACE,MAAM,2BAAuB,CAAE,QAAzB,C;;;UAHV,O;;IAKJ,C;;MAUI,OAAO,mBAAmB,2BAAS,OAAT,C;IAC9B,C;;MAUI,OAAO,mBAAmB,2BAAS,OAAT,C;IAC9B,C;;MAUI,OAAO,mBAAmB,2BAAS,OAAT,C;IAC9B,C;;MAOI,OAAO,2BAAe,KAAf,C;IACX,C;;MAOI,OAAO,2BAAe,oBAAN,KAAM,CAAf,C;IACX,C;;MAOI,OAAO,2BAAe,KAAf,C;IACX,C;;MAQI,OAAO,2BAAe,KAAf,C;IACX,C;;MAQI,OAAO,2BAAe,KAAf,C;IACX,C;;MgBtDW,ShB8DM,mBAAN,KAAM,C;MAAb,OAA0C,UAAJ,GAAgB,2BAAS,EAAT,CAAhB,GAAkC,K;IAC5E,C;;MgB/DW,ShBuEM,kBAAN,KAAM,C;MAAb,OAA2C,UAAJ,GAAgB,2BAAS,EAAT,CAAhB,GAAkC,K;IAC7E,C;;MgBxEW,ShBgFM,oBAAN,KAAM,C;MAAb,OAA2C,UAAJ,GAAgB,2BAAS,EAAT,CAAhB,GAAkC,K;IAC7E,C;;MgBjFW,ShByFM,qBAAN,KAAM,C;MAAb,OAA4C,UAAJ,GAAgB,2BAAS,EAAT,CAAhB,GAAkC,K;IAC9E,C;;MAOI,OAAO,2BAAe,KAAf,C;IACX,C;;MgBlGW,ShB0GM,mBAAN,KAAM,C;MAAb,OAA0C,UAAJ,GAAgB,2BAAS,EAAT,CAAhB,GAAkC,K;IAC5E,C;;MgB3GW,ShBmHM,oBAAN,KAAM,C;MAAb,OAA2C,UAAJ,GAAgB,2BAAS,EAAT,CAAhB,GAAkC,K;IAC7E,C;;MgBpHW,ShB4HM,oBAAN,KAAM,C;MAAb,OAA2C,UAAJ,GAAgB,2BAAS,EAAT,CAAhB,GAAkC,K;IAC7E,C;;MgB7HW,ShBqIM,qBAAN,KAAM,C;MAAb,OAA4C,UAAJ,GAAgB,2BAAS,EAAT,CAAhB,GAAkC,K;IAC9E,C;;MAOI,OAAO,2BAAe,KAAf,C;IACX,C;;MAOI,OAAO,2BAAe,oBAAN,KAAM,CAAf,C;IACX,C;;MgBtJW,ShB6JM,kBAAN,KAAM,C;MAAb,OAA2C,UAAJ,GAAgB,2BAAS,EAAT,CAAhB,GAAkC,K;IAC7E,C;;MgB9JW,ShBqKM,mBAAN,KAAM,C;MAAb,OAA4C,UAAJ,GAAgB,2BAAS,EAAT,CAAhB,GAAkC,K;IAC9E,C;;MAQI,OAAO,2BAAe,KAAf,C;IACX,C;;MAQI,OAAO,2BAAe,KAAf,C;IACX,C;;MgBxLW,ShB+LM,iBAAN,KAAM,C;MAAb,OAA0C,UAAJ,GAAgB,2BAAS,EAAT,CAAhB,GAAkC,K;IAC5E,C;;MgBhMW,ShBuMM,oBAAN,KAAM,C;MAAb,OAA2C,UAAJ,GAAgB,2BAAS,EAAT,CAAhB,GAAkC,K;IAC7E,C;;MgBxMW,ShB+MM,qBAAN,KAAM,C;MAAb,OAA4C,UAAJ,GAAgB,2BAAS,EAAT,CAAhB,GAAkC,K;IAC9E,C;;MAQI,OAAO,2BAAS,KAAM,WAAf,C;IACX,C;;MAQI,OAAO,2BAAS,KAAM,WAAf,C;IACX,C;;MAOI,OAAO,2BAAe,KAAf,C;IACX,C;;MAOI,OAAO,2BAAe,oBAAN,KAAM,CAAf,C;IACX,C;;MgBlPW,ShByPM,oBAAN,KAAM,C;MAAb,OAA2C,UAAJ,GAAgB,2BAAS,EAAT,CAAhB,GAAkC,K;IAC7E,C;;MAQI,OAAO,2BAAe,KAAf,C;IACX,C;;MAQI,OAAO,2BAAe,KAAf,C;IACX,C;;MASI,OAAO,sCAAe,yBAAgB,SAAhB,EAAyB,EAAzB,EAAkC,EAAlC,C;IAC1B,C;;MASI,OAAO,uCAAgB,yBAAgB,SAAhB,EAAyB,oBAAH,EAAG,CAAzB,M;IAC3B,C;;MASI,OAAO,sCAAe,yBAAqB,SAArB,EAAiC,EAAjC,EAA0C,EAA1C,C;IAC1B,C;;MASI,OAAO,sCAAe,yBAAqB,SAArB,EAAiC,EAAjC,EAA0C,EAA1C,C;IAC1B,C;;MASI,OAAO,uCAAgB,yBAAgB,SAAhB,EAAsB,EAAtB,EAA0B,EAA1B,C;IAC3B,C;;MASI,OAAO,sCAAe,yBAAgB,SAAhB,EAAsB,EAAtB,EAA0B,EAA1B,C;IAC1B,C;;MASI,OAAO,uCAAgB,yBAAgB,SAAhB,EAAyB,oBAAH,EAAG,CAAzB,M;IAC3B,C;;MASI,OAAO,sCAAe,yBAAqB,SAArB,EAA8B,EAA9B,EAAkC,EAAlC,C;IAC1B,C;;MASI,OAAO,sCAAe,yBAAqB,SAArB,EAA8B,EAA9B,EAAkC,EAAlC,C;IAC1B,C;;MASI,OAAO,uCAAgB,yBAAqB,oBAAL,SAAK,CAArB,EAA+B,EAA/B,M;IAC3B,C;;MASI,OAAO,uCAAgB,yBAAgB,SAAhB,EAAsB,EAAtB,M;IAC3B,C;;MASI,OAAO,uCAAgB,yBAAqB,oBAAL,SAAK,CAArB,EAA+B,EAA/B,M;IAC3B,C;;MASI,OAAO,uCAAgB,yBAAqB,oBAAL,SAAK,CAArB,EAA+B,EAA/B,M;IAC3B,C;;MASI,OAAO,sCAAe,yBAAgB,SAAhB,EAAyB,EAAzB,EAAkC,EAAlC,C;IAC1B,C;;MASI,OAAO,uCAAgB,yBAAgB,SAAhB,EAAyB,oBAAH,EAAG,CAAzB,M;IAC3B,C;;MASI,OAAO,sCAAe,yBAAqB,SAArB,EAAiC,EAAjC,EAA0C,EAA1C,C;IAC1B,C;;MASI,OAAO,sCAAe,yBAAqB,SAArB,EAAiC,EAAjC,EAA0C,EAA1C,C;IAC1B,C;;MAMI,OAAO,sCAAe,yBAAgB,cAAhB,EAAsB,eAAtB,EAA6B,CAAC,cAAD,IAA7B,C;IAC1B,C;;MAMI,OAAO,uCAAgB,yBAAgB,cAAhB,EAAsB,eAAtB,EAA8B,cAAD,aAA7B,C;IAC3B,C;;MAMI,OAAO,uCAAgB,yBAAgB,cAAhB,EAAsB,eAAtB,EAA6B,CAAC,cAAD,IAA7B,C;IAC3B,C;;MAMI,oBAAoB,OAAO,CAA3B,EAA8B,IAA9B,C;MACA,OAAO,sCAAe,yBAAgB,eAAhB,EAAuB,cAAvB,EAAiC,SAAK,KAAL,GAAY,CAAhB,GAAmB,IAAnB,GAA6B,CAAC,IAAD,IAA1D,C;IAC1B,C;;MAMI,oBAAoB,kBAAO,CAA3B,EAA8B,IAA9B,C;MACA,OAAO,uCAAgB,yBAAgB,eAAhB,EAAuB,cAAvB,EAAiC,SAAK,KAAL,cAAY,CAAhB,GAAmB,IAAnB,GAA8B,IAAD,aAA1D,C;IAC3B,C;;MAMI,oBAAoB,OAAO,CAA3B,EAA8B,IAA9B,C;MACA,OAAO,uCAAgB,yBAAgB,eAAhB,EAAuB,cAAvB,EAAiC,SAAK,KAAL,GAAY,CAAhB,GAAmB,IAAnB,GAA6B,CAAC,IAAD,IAA1D,C;IAC3B,C;;MAGI,OAAmB,IAAR,8BAAgC,GAApC,GAAiE,OAAL,SAAK,CAAjE,GAA+E,I;IAC1F,C;;MAGI,OAAW,mEAAJ,GAAmE,OAAL,SAAK,SAAnE,GAAiF,I;IAC5F,C;;MAGI,OAAW,YAAQ,aAAA,sCAAe,UAAf,EAA0B,sCAAe,UAAzC,CAAR,YAAJ,GAAqE,OAAL,SAAK,CAArE,GAAmF,I;IAC9F,C;;MAGI,OAAmB,UAAA,sCAAe,UAAf,EAA2B,sCAAe,UAA1C,CAAR,4BAAJ,GAAuE,mBAAL,SAAK,EAAvE,GAAqF,I;IAChG,C;;MAGI,OuB3lBgB,UvB2lBG,sCAAe,UuB3lBlB,EvB2lB6B,sCAAe,UuB3lB5C,CvB2lBL,4BAAJ,GAAqE,mBAAL,SAAK,EAArE,GAAmF,I;IAC9F,C;;MAGI,OAAW,iFAAJ,GAA4D,SAAK,QAAjE,GAA8E,I;IACzF,C;;MAGI,OAAmB,UAAc,WAAd,EAAwC,UAAxC,CAAR,4BAAJ,GAAqE,YAAL,SAAK,CAArE,GAAkF,I;IAC7F,C;;MAGI,OuBvmBgB,UvBumBiB,WuBvmBjB,EvBumB0C,UuBvmB1C,CvBumBL,4BAAJ,GAAmE,YAAL,SAAK,CAAnE,GAAgF,I;IAC3F,C;;MAGI,OAAmB,UAAe,mCAAf,EAA0C,mCAA1C,CAAR,4BAAJ,GAAuE,uBAAL,SAAK,CAAvE,GAAqF,I;IAChG,C;;MAGI,OuB/mBgB,UvB+mBkB,mCuB/mBlB,EvB+mB4C,mCuB/mB5C,CvB+mBL,4BAAJ,GAAqE,uBAAL,SAAK,CAArE,GAAmF,I;IAC9F,C;;MAGI,OAAmB,MAAR,8BAAiC,KAArC,GAAmE,QAAL,SAAK,CAAnE,GAAkF,I;IAC7F,C;;MAGI,OAAW,uEAAJ,GAAqE,QAAL,SAAK,SAArE,GAAoF,I;IAC/F,C;;MAGI,OAAmB,UAAA,uCAAgB,UAAhB,EAA4B,uCAAgB,UAA5C,CAAR,4BAAJ,GAAyE,oBAAL,SAAK,EAAzE,GAAwF,I;IACnG,C;;MAGI,OuB/nBgB,UvB+nBG,uCAAgB,UuB/nBnB,EvB+nB8B,uCAAgB,UuB/nB9C,CvB+nBL,4BAAJ,GAAuE,oBAAL,SAAK,EAAvE,GAAsF,I;IACjG,C;;MAQI,OAAO,wBAAY,EAAa,GAAH,CAAG,IAAzB,C;IACX,C;;MAQI,OAAO,kBAAY,oBAAH,EAAG,CAAc,8BAAH,CAAG,EAA1B,C;IACX,C;;MAQI,OAAO,aAAK,SAAL,EAAoB,EAAa,GAAH,CAAG,IAAjC,C;IACX,C;;MAQI,OAAO,aAAK,SAAL,EAAoB,EAAa,GAAH,CAAG,IAAjC,C;IACX,C;;MAQI,IAAI,MAAM,CAAV,C;QAAoB,OAAO,iCAAU,M;MACrC,OAAO,yBAAiB,OAAR,EAAQ,GAAH,CAAG,CAAjB,C;IACX,C;;MAQI,IAAI,MAAM,WAAV,C;QAAyB,OAAO,gCAAS,M;MACzC,OAAO,wBAAS,EAAQ,GAAH,CAAG,IAAjB,C;IACX,C;;MAQI,OAAO,kBAAY,oBAAH,EAAG,CAAc,8BAAH,CAAG,EAA1B,C;IACX,C;;MAQI,IAAI,MAAM,WAAV,C;QAAyB,OAAO,gCAAS,M;MACzC,OAAO,aAAK,SAAL,EAAiB,EAAQ,GAAH,CAAG,IAAzB,C;IACX,C;;MAQI,IAAI,MAAM,WAAV,C;QAAyB,OAAO,gCAAS,M;MACzC,OAAO,aAAK,SAAL,EAAiB,EAAQ,GAAH,CAAG,IAAzB,C;IACX,C;;MAQI,IAAI,iDAAJ,C;QAA0B,OAAO,iCAAU,M;MAC3C,OAAY,oBAAL,SAAK,CAAL,SAAkB,EAAQ,8BAAH,CAAG,EAA1B,C;IACX,C;;MAQI,IAAI,iDAAJ,C;QAA0B,OAAO,iCAAU,M;MAC3C,OAAO,kBAAS,EAAQ,8BAAH,CAAG,EAAjB,C;IACX,C;;MAQI,IAAI,iDAAJ,C;QAA0B,OAAO,iCAAU,M;MAC3C,OAAY,oBAAL,SAAK,CAAL,SAAkB,EAAQ,8BAAH,CAAG,EAA1B,C;IACX,C;;MAQI,IAAI,iDAAJ,C;QAA0B,OAAO,iCAAU,M;MAC3C,OAAY,oBAAL,SAAK,CAAL,SAAkB,EAAQ,8BAAH,CAAG,EAA1B,C;IACX,C;;MAQI,OAAO,wBAAY,EAAa,GAAH,CAAG,IAAzB,C;IACX,C;;MAQI,OAAO,kBAAY,oBAAH,EAAG,CAAc,8BAAH,CAAG,EAA1B,C;IACX,C;;MAQI,OAAO,aAAK,SAAL,EAAoB,EAAa,GAAH,CAAG,IAAjC,C;IACX,C;;MAQI,OAAO,aAAK,SAAL,EAAoB,EAAa,GAAH,CAAG,IAAjC,C;IACX,C;;MAUI,OAAW,4BAAO,YAAP,KAAJ,GAAyB,YAAzB,GAA2C,S;IACtD,C;;MAUI,OAAW,YAAO,YAAX,GAAyB,YAAzB,GAA2C,S;IACtD,C;;MAUI,OAAW,YAAO,YAAX,GAAyB,YAAzB,GAA2C,S;IACtD,C;;MAUI,OAAW,YAAO,YAAX,GAAyB,YAAzB,GAA2C,S;IACtD,C;;MAUI,OAAW,0BAAO,YAAP,KAAJ,GAAyB,YAAzB,GAA2C,S;IACtD,C;;MAUI,OAAW,YAAO,YAAX,GAAyB,YAAzB,GAA2C,S;IACtD,C;;MAUI,OAAW,YAAO,YAAX,GAAyB,YAAzB,GAA2C,S;IACtD,C;;MAUI,OAAW,4BAAO,YAAP,KAAJ,GAAyB,YAAzB,GAA2C,S;IACtD,C;;MAUI,OAAW,YAAO,YAAX,GAAyB,YAAzB,GAA2C,S;IACtD,C;;MAUI,OAAW,YAAO,YAAX,GAAyB,YAAzB,GAA2C,S;IACtD,C;;MAUI,OAAW,YAAO,YAAX,GAAyB,YAAzB,GAA2C,S;IACtD,C;;MAUI,OAAW,0BAAO,YAAP,KAAJ,GAAyB,YAAzB,GAA2C,S;IACtD,C;;MAUI,OAAW,YAAO,YAAX,GAAyB,YAAzB,GAA2C,S;IACtD,C;;MAUI,OAAW,YAAO,YAAX,GAAyB,YAAzB,GAA2C,S;IACtD,C;;MAUI,IAAI,iBAAiB,IAAjB,IAAyB,iBAAiB,IAA9C,C;QACI,IAAI,+BAAe,YAAf,KAAJ,C;UAAiC,MAAM,gCAAyB,6DAAiD,YAAjD,wCAAoF,YAApF,OAAzB,C;QACvC,IAAI,4BAAO,YAAP,KAAJ,C;UAAyB,OAAO,Y;QAChC,IAAI,4BAAO,YAAP,KAAJ,C;UAAyB,OAAO,Y;;;QAGhC,IAAI,iBAAiB,IAAjB,IAAyB,4BAAO,YAAP,KAA7B,C;UAAkD,OAAO,Y;QACzD,IAAI,iBAAiB,IAAjB,IAAyB,4BAAO,YAAP,KAA7B,C;UAAkD,OAAO,Y;;MAE7D,OAAO,S;IACX,C;;MAUI,IAAI,eAAe,YAAnB,C;QAAiC,MAAM,gCAAyB,oDAAiD,YAAjD,8BAAoF,YAApF,MAAzB,C;MACvC,IAAI,YAAO,YAAX,C;QAAyB,OAAO,Y;MAChC,IAAI,YAAO,YAAX,C;QAAyB,OAAO,Y;MAChC,OAAO,S;IACX,C;;MAUI,IAAI,eAAe,YAAnB,C;QAAiC,MAAM,gCAAyB,oDAAiD,YAAjD,8BAAoF,YAApF,MAAzB,C;MACvC,IAAI,YAAO,YAAX,C;QAAyB,OAAO,Y;MAChC,IAAI,YAAO,YAAX,C;QAAyB,OAAO,Y;MAChC,OAAO,S;IACX,C;;MAUI,IAAI,eAAe,YAAnB,C;QAAiC,MAAM,gCAAyB,oDAAiD,YAAjD,8BAAoF,YAApF,MAAzB,C;MACvC,IAAI,YAAO,YAAX,C;QAAyB,OAAO,Y;MAChC,IAAI,YAAO,YAAX,C;QAAyB,OAAO,Y;MAChC,OAAO,S;IACX,C;;MAUI,IAAI,6BAAe,YAAf,KAAJ,C;QAAiC,MAAM,gCAAyB,oDAAiD,YAAjD,yCAAoF,YAApF,iBAAzB,C;MACvC,IAAI,0BAAO,YAAP,KAAJ,C;QAAyB,OAAO,Y;MAChC,IAAI,0BAAO,YAAP,KAAJ,C;QAAyB,OAAO,Y;MAChC,OAAO,S;IACX,C;;MAUI,IAAI,eAAe,YAAnB,C;QAAiC,MAAM,gCAAyB,oDAAiD,YAAjD,8BAAoF,YAApF,MAAzB,C;MACvC,IAAI,YAAO,YAAX,C;QAAyB,OAAO,Y;MAChC,IAAI,YAAO,YAAX,C;QAAyB,OAAO,Y;MAChC,OAAO,S;IACX,C;;MAUI,IAAI,eAAe,YAAnB,C;QAAiC,MAAM,gCAAyB,oDAAiD,YAAjD,8BAAoF,YAApF,MAAzB,C;MACvC,IAAI,YAAO,YAAX,C;QAAyB,OAAO,Y;MAChC,IAAI,YAAO,YAAX,C;QAAyB,OAAO,Y;MAChC,OAAO,S;IACX,C;;MAYW,Q;MADP,IAAI,KAAM,UAAV,C;QAAqB,MAAM,gCAAyB,4CAAyC,KAAzC,MAAzB,C;MAGvB,IAAA,KAAM,0BAAiB,SAAjB,EAAuB,KAAM,MAA7B,CAAN,IAA6C,CAAC,KAAM,0BAAiB,KAAM,MAAvB,EAA8B,SAA9B,CAApD,C;QAAiG,OAAN,KAAM,M;WAEjG,IAAA,KAAM,0BAAiB,KAAM,aAAvB,EAAqC,SAArC,CAAN,IAAoD,CAAC,KAAM,0BAAiB,SAAjB,EAAuB,KAAM,aAA7B,CAA3D,C;QAA+G,OAAN,KAAM,a;;QACvG,gB;MALZ,W;IAOJ,C;;MAcW,Q;MAJP,IAAI,8CAAJ,C;QACI,OAAY,WAAL,SAAK,EAAY,KAAZ,C;;MAEhB,IAAI,KAAM,UAAV,C;QAAqB,MAAM,gCAAyB,4CAAyC,KAAzC,MAAzB,C;MAEvB,gCAAO,KAAM,MAAb,M;QAA4B,OAAN,KAAM,M;WAC5B,gCAAO,KAAM,aAAb,M;QAAmC,OAAN,KAAM,a;;QAC3B,gB;MAHZ,W;IAKJ,C;;MAcW,Q;MAJP,IAAI,8CAAJ,C;QACI,OAAY,WAAL,SAAK,EAAc,KAAd,C;;MAEhB,IAAI,KAAM,UAAV,C;QAAqB,MAAM,gCAAyB,4CAAyC,KAAzC,MAAzB,C;MAEvB,gBAAO,KAAM,MAAb,C;QAA4B,OAAN,KAAM,M;WAC5B,gBAAO,KAAM,aAAb,C;QAAmC,OAAN,KAAM,a;;QAC3B,gB;MAHZ,W;IAKJ,C;;MAcW,Q;MAJP,IAAI,8CAAJ,C;QACI,OAAY,WAAL,SAAK,EAAe,KAAf,C;;MAEhB,IAAI,KAAM,UAAV,C;QAAqB,MAAM,gCAAyB,4CAAyC,KAAzC,MAAzB,C;MAEvB,8BAAO,KAAM,MAAb,M;QAA4B,OAAN,KAAM,M;WAC5B,8BAAO,KAAM,aAAb,M;QAAmC,OAAN,KAAM,a;;QAC3B,gB;MAHZ,W;IAKJ,C;;MU1mCuF,wC;IANvF,C;IAAA,0D;MAO2C,8B;IAAA,C;IAP3C,gF;;MccI,OAAO,sBAAQ,OAAR,KAAoB,C;IAC/B,C;;MAUkC,qB;QAAE,MAAM,8BAA0B,+CAA4C,aAA5C,MAA1B,C;MAAR,C;IAAA,C;;MAA9B,OAAO,8BAAgB,KAAhB,EAAuB,yBAAvB,C;IACX,C;;MAgBqB,Q;MANjB,IAAI,QAAQ,CAAZ,C;QACI,OAAO,aAAa,KAAb,C;MACX,eAAe,oB;MACf,YAAY,C;MACZ,OAAO,QAAS,UAAhB,C;QACI,cAAc,QAAS,O;QACvB,IAAI,WAAS,YAAT,EAAS,oBAAT,OAAJ,C;UACI,OAAO,O;;MAEf,OAAO,aAAa,KAAb,C;IACX,C;;MAgBqB,Q;MANjB,IAAI,QAAQ,CAAZ,C;QACI,OAAO,I;MACX,eAAe,oB;MACf,YAAY,C;MACZ,OAAO,QAAS,UAAhB,C;QACI,cAAc,QAAS,O;QACvB,IAAI,WAAS,YAAT,EAAS,oBAAT,OAAJ,C;UACI,OAAO,O;;MAEf,OAAO,I;IACX,C;;MASW,sB;;QAuDS,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAvDH,SAuDO,CAAU,OAAV,CAAJ,C;YAAwB,qBAAO,O;YAAP,uB;;;QAC9C,qBAAO,I;;;MAxDP,yB;IACJ,C;;MAsLoB,Q;MADhB,WAAe,I;MACC,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IA9Kc,SA8KV,CAAU,OAAV,CAAJ,C;UACI,OAAO,O;;;MA/Kf,OAkLO,I;IAjLX,C;;MASI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QACI,MAAM,2BAAuB,oBAAvB,C;MACV,OAAO,QAAS,O;IACpB,C;iFAEA,yB;MAAA,iE;MAAA,uC;QAOoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,OAAO,O;;QACrD,MAAM,gCAAuB,sDAAvB,C;MACV,C;KATA,C;;MAiBI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QACI,OAAO,I;MACX,OAAO,QAAS,O;IACpB,C;;MAQoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,O;;MACrD,OAAO,I;IACX,C;;MASiB,Q;MADb,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,mBAAmB,KAAnB,C;QACA,IAAI,gBAAW,IAAX,CAAJ,C;UACI,OAAO,K;QACX,qB;;MAEJ,OAAO,E;IACX,C;+FAEA,yB;MAAA,wE;MAAA,uC;QAOiB,Q;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,mBAAmB,KAAnB,C;UACA,IAAI,UAAU,IAAV,CAAJ,C;YACI,OAAO,K;UACX,qB;;QAEJ,OAAO,E;MACX,C;KAdA,C;6FAgBA,yB;MAAA,wE;MAAA,uC;QAQiB,Q;QAFb,gBAAgB,E;QAChB,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,mBAAmB,KAAnB,C;UACA,IAAI,UAAU,IAAV,CAAJ,C;YACI,YAAY,K;UAChB,qB;;QAEJ,OAAO,S;MACX,C;KAfA,C;;MAwBI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QACI,MAAM,2BAAuB,oBAAvB,C;MACV,WAAW,QAAS,O;MACpB,OAAO,QAAS,UAAhB,C;QACI,OAAO,QAAS,O;MACpB,OAAO,I;IACX,C;+EAEA,yB;MAAA,iE;MAAA,gB;MAAA,8B;MAAA,uC;QASoB,UAQT,M;QAVP,WAAe,I;QACf,YAAY,K;QACI,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,UAAU,OAAV,CAAJ,C;YACI,OAAO,O;YACP,QAAQ,I;;;QAGhB,IAAI,CAAC,KAAL,C;UAAY,MAAM,gCAAuB,sDAAvB,C;QAElB,OAAO,2E;MACX,C;KAlBA,C;;MA4BiB,Q;MAFb,gBAAgB,E;MAChB,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,mBAAmB,KAAnB,C;QACA,IAAI,gBAAW,IAAX,CAAJ,C;UACI,YAAY,K;QAChB,qB;;MAEJ,OAAO,S;IACX,C;;MAQI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QACI,OAAO,I;MACX,WAAW,QAAS,O;MACpB,OAAO,QAAS,UAAhB,C;QACI,OAAO,QAAS,O;MACpB,OAAO,I;IACX,C;;MASoB,Q;MADhB,WAAe,I;MACC,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,UAAU,OAAV,CAAJ,C;UACI,OAAO,O;;;MAGf,OAAO,I;IACX,C;;MAQI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QACI,MAAM,2BAAuB,oBAAvB,C;MACV,aAAa,QAAS,O;MACtB,IAAI,QAAS,UAAb,C;QACI,MAAM,gCAAyB,qCAAzB,C;MACV,OAAO,M;IACX,C;mFAEA,yB;MAAA,kF;MAAA,iE;MAAA,gB;MAAA,8B;MAAA,uC;QAQoB,UAST,M;QAXP,aAAiB,I;QACjB,YAAY,K;QACI,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,UAAU,OAAV,CAAJ,C;YACI,IAAI,KAAJ,C;cAAW,MAAM,8BAAyB,mDAAzB,C;YACjB,SAAS,O;YACT,QAAQ,I;;;QAGhB,IAAI,CAAC,KAAL,C;UAAY,MAAM,gCAAuB,sDAAvB,C;QAElB,OAAO,6E;MACX,C;KAlBA,C;;MA0BI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QACI,OAAO,I;MACX,aAAa,QAAS,O;MACtB,IAAI,QAAS,UAAb,C;QACI,OAAO,I;MACX,OAAO,M;IACX,C;;MAUoB,Q;MAFhB,aAAiB,I;MACjB,YAAY,K;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,UAAU,OAAV,CAAJ,C;UACI,IAAI,KAAJ,C;YAAW,OAAO,I;UAClB,SAAS,O;UACT,QAAQ,I;;;MAGhB,IAAI,CAAC,KAAL,C;QAAY,OAAO,I;MACnB,OAAO,M;IACX,C;;MAaW,Q;MZhUP,IAAI,EY+TI,KAAK,CZ/TT,CAAJ,C;QACI,cY8Tc,sD;QZ7Td,MAAM,gCAAyB,OAAQ,WAAjC,C;;MY+TN,UAAK,CAAL,C;QAAU,gB;WACV,+C;QAAiC,OAAL,SAAK,cAAK,CAAL,C;;QACzB,wBAAa,SAAb,EAAmB,CAAnB,C;MAHZ,W;IAKJ,C;;MAUI,OAAO,sBAAkB,SAAlB,EAAwB,SAAxB,C;IACX,C;;MAQI,OAAO,sBAAkB,SAAlB,EAAwB,IAAxB,EAA8B,SAA9B,C;IACX,C;;MAWgF,qB;QAAE,yBAAU,EAAG,MAAb,EAAoB,EAAG,MAAvB,C;MAAF,C;IAAA,C;;MAAsC,OAAA,EAAG,M;IAAM,C;;MAA3H,OAAO,yBAAqB,sBAAkB,qBAAiB,SAAjB,CAAlB,EAA0C,IAA1C,EAAgD,+BAAhD,CAArB,EAAyG,sBAAzG,C;IACX,C;oGAEA,yB;MAmrBA,wE;MAnrBA,oD;QA4rBiB,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UAnrBT,IAAI,UAmrBkB,oBAAmB,cAAnB,EAAmB,sBAAnB,UAnrBlB,EAmrB+C,IAnrB/C,CAAJ,C;YAA2C,sBAmrBQ,IAnrBR,C;;QAE/C,OAAO,W;MACX,C;KAZA,C;sGAcA,yB;MAAA,8C;MAAA,0C;MAAA,8B;;QAOkB,qB;UAAE,c;QAAF,C;MAAA,C;MAPlB,sC;QAOW,Q;QAAP,OAAO,uCAAO,iCAAP,gC;MACX,C;KARA,C;;MAgBoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,YAAJ,C;UAAkB,WAAY,WAAI,OAAJ,C;;MACpD,OAAO,W;IACX,C;;MAQI,OAAO,sBAAkB,SAAlB,EAAwB,KAAxB,EAA+B,SAA/B,C;IACX,C;;MASuB,iB;IAAW,C;;MAAvB,Q;MAAP,OAAO,4CAAU,oBAAV,kC;IACX,C;;MAQoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,eAAJ,C;UAAqB,WAAY,WAAI,OAAJ,C;;MACvD,OAAO,W;IACX,C;;MAQoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,WAAY,WAAI,OAAJ,C;;MAC3D,OAAO,W;IACX,C;;MAQoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,WAAY,WAAI,OAAJ,C;;MAC1D,OAAO,W;IACX,C;;MAaW,Q;MZrcP,IAAI,EYocI,KAAK,CZpcT,CAAJ,C;QACI,cYmcc,sD;QZlcd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MYocN,UAAK,CAAL,C;QAAU,sB;WACV,+C;QAAiC,OAAL,SAAK,cAAK,CAAL,C;;QACzB,wBAAa,SAAb,EAAmB,CAAnB,C;MAHZ,W;IAKJ,C;;MAUI,OAAO,sBAAkB,SAAlB,EAAwB,SAAxB,C;IACX,C;;MAUW,8B;IAAA,C;;MAEC,iBAA6B,iBAAZ,gBAAY,C;MAClB,QAAX,UAAW,C;MACX,OAAO,UAAW,W;IACtB,C;;;MALJ,0C;IAOJ,C;sFAEA,yB;MAAA,sD;MV7aA,sC;MCjFA,kC;MAAA,oC;;QAAsG,4C;MAAtG,C;MAAA,6D;QAC4C,+BAAW,CAAX,EAAc,CAAd,C;MAAA,C;MAD5C,kF;MDiFA,uBAOe,yB;QArEf,8D;;UAqEe,uB;YAAU,eAAsB,gB;YAAtB,OA5Dd,cAAc,SA4DgB,CA5DhB,CAAd,EAA2B,SA4DM,CA5DN,CAA3B,C;UA4DI,C;QAAA,C;OAAA,C;MUsaf,sC;QAQI,OAAO,mDV9aI,iBU8aiB,QV9ajB,CU8aJ,E;MACX,C;KATA,C;0GAWA,yB;MAAA,sD;MVraA,sC;MCpGA,kC;MAAA,oC;;QAAsG,4C;MAAtG,C;MAAA,6D;QAC4C,+BAAW,CAAX,EAAc,CAAd,C;MAAA,C;MAD5C,kF;MDoGA,iCAOe,yB;QAxFf,8D;;UAwFe,uB;YAAU,eAAsB,gB;YAAtB,OA/Ed,cAAc,SA+EgB,CA/EhB,CAAd,EAA2B,SA+EM,CA/EN,CAA3B,C;UA+EI,C;QAAA,C;OAAA,C;MU8Zf,sC;QAQI,OAAO,mDVtaI,2BUsa2B,QVta3B,CUsaJ,E;MACX,C;KATA,C;;MAmBI,OAAO,wBAAW,cAAX,C;IACX,C;;MAUW,sC;MAAA,4C;IAAA,C;;MAEC,iBAAiC,iBAAhB,oBAAgB,C;MACtB,WAAX,UAAW,EAAS,uBAAT,C;MACX,OAAO,UAAW,W;IACtB,C;;;MALJ,0D;IAOJ,C;wFAEA,yB;MAAA,wE;MAAA,uC;QAWW,kBAAY,oB;QAuEH,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WAxEsC,SAwEvB,CAAU,OAAV,C;UlBrCnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;QkBnCA,OA0EO,W;MAzEX,C;KAZA,C;6FAcA,yB;MAAA,wE;MAAA,yC;QAWW,kBAAc,oB;QA0BL,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WAAY,aA3B4B,WA2BxB,CAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;QA3BhB,OA6BO,W;MA5BX,C;KAZA,C;6FAcA,yB;MAAA,wE;MAAA,yD;QAUW,kBAAc,oB;QA6BL,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WAAY,aA9B4B,WA8BxB,CAAY,OAAZ,CAAJ,EA9ByC,cA8Bf,CAAe,OAAf,CAA1B,C;;QA9BhB,OAgCO,W;MA/BX,C;KAXA,C;;MAuBoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,OAA1B,C;;MAEhB,OAAO,W;IACX,C;;MAYoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,WAAY,aAAI,YAAY,OAAZ,CAAJ,EAA0B,eAAe,OAAf,CAA1B,C;;MAEhB,OAAO,W;IACX,C;;MAWoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,WAAe,UAAU,OAAV,C;QlBrCnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;MkBuCA,OAAO,W;IACX,C;gGAEA,yB;MAAA,wE;MAAA,2C;QAcI,aAAa,oB;QAcG,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAbO,MAcP,aAAI,OAAJ,EAde,aAcF,CAAc,OAAd,CAAb,C;;QAdhB,OAAuB,M;MAC3B,C;KAhBA,C;;MA4BoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,WAAY,aAAI,OAAJ,EAAa,cAAc,OAAd,CAAb,C;;MAEhB,OAAO,W;IACX,C;;MAQiB,Q;MAAA,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,IAAJ,C;;MAEhB,OAAO,W;IACX,C;;MAQI,OAAO,0BAAa,cAAb,C;IACX,C;;MAQI,OAA4B,qBAAhB,iBAAL,SAAK,CAAgB,C;IAChC,C;;MAQI,OAAO,0BAAa,gBAAb,C;IACX,C;;MAUI,OAAwC,oBAAjC,0BAAa,sBAAb,CAAiC,C;IAC5C,C;;MAQiD,OAAA,EAAG,W;IAAW,C;;MAA3D,OAAO,uBAAmB,SAAnB,EAAyB,SAAzB,EAAoC,cAApC,C;IACX,C;yFAEA,yB;MAAA,gD;MAAA,oD;QAMoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WAAW,UAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAEhB,OAAO,W;MACX,C;KAXA,C;qFAaA,yB;MAAA,wE;MA6BA,+D;MA7BA,yC;QAWW,kBAAU,oB;QA6BD,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UA9BiD,WA8BvC,CAAY,OAAZ,C;UlBvfP,U;UADP,YkByfe,WlBzfH,WkByfwB,GlBzfxB,C;UACL,IAAI,aAAJ,C;YACH,akBufuC,gB;YAA5B,WlBtfX,akBsfgC,GlBtfhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UkBmfA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAhCT,OAkCO,W;MAjCX,C;KAZA,C;qFAcA,yB;MAAA,wE;MAkCA,+D;MAlCA,yD;QAYW,kBAAU,oB;QAkCD,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAnCiD,WAmCvC,CAAY,OAAZ,C;UlB3gBP,U;UADP,YkB6gBe,WlB7gBH,WkB6gBwB,GlB7gBxB,C;UACL,IAAI,aAAJ,C;YACH,akB2gBuC,gB;YAA5B,WlB1gBX,akB0gBgC,GlB1gBhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UkBugBA,iB;UACA,IAAK,WArCyD,cAqCrD,CAAe,OAAf,CAAJ,C;;QArCT,OAuCO,W;MAtCX,C;KAbA,C;yFAeA,yB;MAAA,+D;MAAA,sD;QAWoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;UlBvfP,U;UADP,YkByfe,WlBzfH,WkByfwB,GlBzfxB,C;UACL,IAAI,aAAJ,C;YACH,akBufuC,gB;YAA5B,WlBtfX,akBsfgC,GlBtfhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UkBmfA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAET,OAAO,W;MACX,C;KAjBA,C;yFAmBA,yB;MAAA,+D;MAAA,sE;QAYoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;UlB3gBP,U;UADP,YkB6gBe,WlB7gBH,WkB6gBwB,GlB7gBxB,C;UACL,IAAI,aAAJ,C;YACH,akB2gBuC,gB;YAA5B,WlB1gBX,akB0gBgC,GlB1gBhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UkBugBA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;MACX,C;KAlBA,C;0FAoBA,yB;MAAA,kC;MAAA,4C;;QAUW,sC;QAAA,8C;MAVX,C;MAAA,gE;QAWqD,OAAA,oBAAgB,W;MAAhB,C;MAXrD,oE;QAY4C,gCAAY,OAAZ,C;MAAA,C;MAZ5C,gF;MAAA,yC;QAUI,2D;MAIJ,C;KAdA,C;;MAyBI,OAAO,yBAAqB,SAArB,EAA2B,SAA3B,C;IACX,C;;MAWI,OAAO,gCAA4B,SAA5B,EAAkC,SAAlC,C;IACX,C;;MAWI,OAAoD,gBAA7C,gCAA4B,SAA5B,EAAkC,SAAlC,CAA6C,C;IACxD,C;4GAEA,yB;MAsMA,wE;MAtMA,oD;QA+MiB,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UAtMsB,U;UAAA,wBAsMT,oBAAmB,cAAnB,EAAmB,sBAAnB,UAtMS,EAsMoB,IAtMpB,W;YAA6C,6B;;;QAChF,OAAO,W;MACX,C;KAXA,C;8FAaA,yB;MAAA,wE;MAAA,oD;QAUiB,UACoC,M;QAFjD,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WAAI,UAAU,oBAAmB,cAAnB,EAAmB,sBAAnB,UAAV,EAAuC,IAAvC,CAAJ,C;;QAChB,OAAO,W;MACX,C;KAbA,C;;MAsBI,OAA6C,gBAAtC,yBAAqB,SAArB,EAA2B,SAA3B,CAAsC,C;IACjD,C;8FAEA,yB;MAAA,oD;QA6JoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAtJK,U;UAAA,wBAsJQ,OAtJR,W;YAAsC,6B;;;QAC3D,OAAO,W;MACX,C;KATA,C;;MAkBiB,Q;MAAA,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAQI,OAAO,qBAAiB,SAAjB,C;IACX,C;;MAU6B,S;IAAG,C;;MAA5B,OAAY,aAAL,SAAK,EAAW,eAAX,C;IAChB,C;;MAWI,OAAO,qBAAiB,SAAjB,EAAuB,QAAvB,C;IACX,C;;MAWiB,Q;MADb,UAAU,sB;MACG,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QAAM,GAAI,WAAI,IAAJ,C;;MACvB,OAAO,G;IACX,C;;MAUoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;IACX,C;;MAUI,OAAO,oBAAW,U;IACtB,C;;MAUoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;IACX,C;;MASoB,Q;MADhB,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,oBAAmB,qBAAnB,EAAmB,KAAnB,E;;MACtB,OAAO,K;IACX,C;iFAEA,yB;MAAA,wE;MAAA,uC;QAOoB,Q;QADhB,YAAY,C;QACI,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,oBAAmB,qBAAnB,EAAmB,KAAnB,E;;QAC9C,OAAO,K;MACX,C;KATA,C;;MAkBoB,Q;MADhB,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;IACX,C;4FAEA,yB;MAAA,wE;MAAA,gD;QAWoB,UAAiD,M;QAFjE,YAAY,C;QACZ,kBAAkB,O;QACF,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,cAAc,UAAU,oBAAmB,cAAnB,EAAmB,sBAAnB,UAAV,EAAuC,WAAvC,EAAoD,OAApD,C;;QACpC,OAAO,W;MACX,C;KAbA,C;;MAqBoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,OAAO,OAAP,C;;IAC1B,C;kGAEA,yB;MAAA,wE;MAAA,oC;QASiB,UAAgC,M;QAD7C,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UAAM,OAAO,oBAAmB,cAAnB,EAAmB,sBAAnB,UAAP,EAAoC,IAApC,C;;MACvB,C;KAVA,C;;MAqBI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,UAAU,QAAS,O;MACnB,IAAQ,QAAJ,GAAI,CAAR,C;QAAiB,OAAO,G;MACxB,OAAO,QAAS,UAAhB,C;QACI,QAAQ,QAAS,O;QACjB,IAAM,QAAF,CAAE,CAAN,C;UAAe,OAAO,C;QACtB,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAWI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,UAAU,QAAS,O;MACnB,IAAQ,QAAJ,GAAI,CAAR,C;QAAiB,OAAO,G;MACxB,OAAO,QAAS,UAAhB,C;QACI,QAAQ,QAAS,O;QACjB,IAAM,QAAF,CAAE,CAAN,C;UAAe,OAAO,C;QACtB,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAQI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,UAAU,QAAS,O;MACnB,OAAO,QAAS,UAAhB,C;QACI,QAAQ,QAAS,O;QACjB,IAAI,sBAAM,CAAN,KAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAUI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,cAAc,QAAS,O;MACvB,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,O;MAChC,eAAe,SAAS,OAAT,C;;QAEX,QAAQ,QAAS,O;QACjB,QAAQ,SAAS,CAAT,C;QACR,IAAI,2BAAW,CAAX,KAAJ,C;UACI,UAAU,C;UACV,WAAW,C;;;MAED,QAAT,QAAS,W;MAClB,OAAO,O;IACX,C;;MAQI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,UAAU,QAAS,O;MACnB,OAAO,QAAS,UAAhB,C;QACI,QAAQ,QAAS,O;QACjB,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAWI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,UAAU,QAAS,O;MACnB,IAAQ,QAAJ,GAAI,CAAR,C;QAAiB,OAAO,G;MACxB,OAAO,QAAS,UAAhB,C;QACI,QAAQ,QAAS,O;QACjB,IAAM,QAAF,CAAE,CAAN,C;UAAe,OAAO,C;QACtB,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAWI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,UAAU,QAAS,O;MACnB,IAAQ,QAAJ,GAAI,CAAR,C;QAAiB,OAAO,G;MACxB,OAAO,QAAS,UAAhB,C;QACI,QAAQ,QAAS,O;QACjB,IAAM,QAAF,CAAE,CAAN,C;UAAe,OAAO,C;QACtB,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAQI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,UAAU,QAAS,O;MACnB,OAAO,QAAS,UAAhB,C;QACI,QAAQ,QAAS,O;QACjB,IAAI,sBAAM,CAAN,KAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAUI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,cAAc,QAAS,O;MACvB,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,O;MAChC,eAAe,SAAS,OAAT,C;;QAEX,QAAQ,QAAS,O;QACjB,QAAQ,SAAS,CAAT,C;QACR,IAAI,2BAAW,CAAX,KAAJ,C;UACI,UAAU,C;UACV,WAAW,C;;;MAED,QAAT,QAAS,W;MAClB,OAAO,O;IACX,C;;MAQI,eAAe,oB;MACf,IAAI,CAAC,QAAS,UAAd,C;QAAyB,OAAO,I;MAChC,UAAU,QAAS,O;MACnB,OAAO,QAAS,UAAhB,C;QACI,QAAQ,QAAS,O;QACjB,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAUI,OAAO,CAAC,oBAAW,U;IACvB,C;;MAUoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;IACX,C;;MASe,qB;QACP,eAAO,EAAP,C;QAAA,OACA,E;MAFO,C;IAAA,C;;MAAX,OAAO,kBAAI,qBAAJ,C;IAIX,C;kFAEA,yB;MAAA,4F;MAAA,uC;QAMI,eAAe,SAAK,W;QACpB,IAAI,CAAC,QAAS,UAAd,C;UAAyB,MAAM,mCAA8B,kCAA9B,C;QAC/B,kBAAqB,QAAS,O;QAC9B,OAAO,QAAS,UAAhB,C;UACI,cAAc,UAAU,WAAV,EAAuB,QAAS,OAAhC,C;;QAElB,OAAO,W;MACX,C;KAbA,C;gGAeA,yB;MAAA,4F;MAAA,wE;MAAA,uC;QAcmD,Q;QAL/C,eAAe,SAAK,W;QACpB,IAAI,CAAC,QAAS,UAAd,C;UAAyB,MAAM,mCAA8B,kCAA9B,C;QAC/B,YAAY,C;QACZ,kBAAqB,QAAS,O;QAC9B,OAAO,QAAS,UAAhB,C;UACI,cAAc,UAAU,oBAAmB,YAAnB,EAAmB,oBAAnB,QAAV,EAAuC,WAAvC,EAAoD,QAAS,OAA7D,C;;QAElB,OAAO,W;MACX,C;KAjBA,C;;MA0BoB,Q;MADhB,UAAe,C;MACC,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,YAAO,SAAS,OAAT,CAAP,I;;MAEJ,OAAO,G;IACX,C;;MASoB,Q;MADhB,UAAkB,G;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;IACX,C;;MAQe,qB;QAAE,e;UAAM,MAAM,gCAAyB,2BAAwB,mBAAxB,MAAzB,C;;QAAZ,S;MAAF,C;IAAA,C;;MAAX,OAAO,kBAAI,gCAAJ,C;IACX,C;;MAeI,OAAO,sBAAS,IAAT,EAAe,IAAf,EAAsC,IAAtC,C;IACX,C;;MAoBI,OAAO,sBAAS,IAAT,EAAe,IAAf,EAAsC,IAAtC,EAAwD,SAAxD,C;IACX,C;;MAQW,4B;MAAA,sC;IAAA,C;;MAG0B,qB;QAAE,IAAI,CAAC,iBAAD,IAAY,WAAM,eAAN,CAAhB,C;UAAiC,oBAAU,I;UAA3C,OAAiD,K;;;UAAjD,OAA8D,I;MAAhE,C;IAAA,C;;MADzB,kBAAc,KAAd,C;MACA,OAAkB,SAAX,eAAW,EAAO,kEAAP,CAA8E,W;IACpG,C;;;MAJJ,kD;IAMJ,C;;MAeW,wC;MAAA,4B;IAAA,C;;MAG6B,qB;QAAE,OAAM,aAAN,mB;MAAF,C;IAAA,C;;MAD5B,YAAqB,UAAT,qBAAS,C;MACrB,OAAkB,YAAX,eAAW,EAAU,4CAAV,CAA0B,W;IAChD,C;;;MALJ,IAAI,QzB00JG,YAAQ,CyB10Jf,C;QAAwB,OAAO,S;MAC/B,qD;IAMJ,C;;MAcW,wC;MAAA,4B;IAAA,C;;MAMiC,qB;QAAE,OAAM,aAAN,mB;MAAF,C;IAAA,C;;MAJhC,YAAqB,4BAAT,qBAAS,C;MACrB,IAAI,KAAM,UAAV,C;QACI,OAAO,eAAW,W;;QAElB,OAAkB,YAAX,eAAW,EAAU,4CAAV,CAA0B,W;IACpD,C;;;MAPJ,qD;IASJ,C;;MAcW,wC;MAAA,4B;IAAA,C;;MAMiC,qB;QAAE,OAAM,aAAN,mB;MAAF,C;IAAA,C;;MAJhC,YAAqB,YAAT,qBAAS,C;MACrB,IAAI,KAAM,UAAV,C;QACI,OAAO,eAAW,W;;QAElB,OAAkB,YAAX,eAAW,EAAU,4CAAV,CAA0B,W;IACpD,C;;;MAPJ,qD;IASJ,C;8FAEA,yB;MAAA,4C;MAAA,qC;QAOI,OAAO,iBAAM,OAAN,C;MACX,C;KARA,C;wFAUA,yB;MAAA,+D;MAAA,6B;MAAA,uC;QAUoB,Q;QAFhB,YAAY,gB;QACZ,aAAa,gB;QACG,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,UAAU,OAAV,CAAJ,C;YACI,KAAM,WAAI,OAAJ,C;;;YAEN,MAAO,WAAI,OAAJ,C;;;QAGf,OAAO,cAAK,KAAL,EAAY,MAAZ,C;MACX,C;KAlBA,C;;MA0BI,OAA6C,UAAtC,YAAW,SAAX,EAAiB,YAAW,OAAX,EAAjB,EAAsC,C;IACjD,C;;MAWI,OAAY,OAAL,SAAK,EAAc,OAAT,QAAS,CAAd,C;IAChB,C;;MAWI,OAA+C,UAAxC,YAAW,SAAX,EAA0B,aAAT,QAAS,CAA1B,EAAwC,C;IACnD,C;;MAWI,OAAkC,UAA3B,YAAW,SAAX,EAAiB,QAAjB,EAA2B,C;IACtC,C;4FAEA,yB;MAAA,0C;MAAA,qC;QAOI,OAAO,gBAAK,OAAL,C;MACX,C;KARA,C;;MA0B+C,oB;QAAA,OAAY,C;MAAG,8B;QAAA,iBAA0B,K;MACpF,OAAO,8BAAiB,IAAjB,EAAuB,IAAvB,EAA6B,cAA7B,EAA2D,KAA3D,C;IACX,C;;MAoBkD,oB;QAAA,OAAY,C;MAAG,8B;QAAA,iBAA0B,K;MACvF,OAAwE,OAAjE,8BAAiB,IAAjB,EAAuB,IAAvB,EAA6B,cAA7B,EAA2D,IAA3D,CAAiE,EAAI,SAAJ,C;IAC5E,C;;MAWoD,cAAM,EAAN,C;IAAS,C;;MAAzD,OAAO,oBAAgB,SAAhB,EAAsB,KAAtB,EAA6B,UAA7B,C;IACX,C;;MAYI,OAAO,oBAAgB,SAAhB,EAAsB,KAAtB,EAA6B,SAA7B,C;IACX,C;;MAaiC,aAAK,CAAL,C;IAAO,C;;MAApC,OAAO,yBAAY,kBAAZ,C;IACX,C;;MAc4B,wC;MAAA,6B;MAAA,yB;MAAA,gD;MAAA,kD;MAAA,4B;MAAA,2B;MAAA,wB;MAAA,kC;IASxB,C;;;;;;;;;oCARmB,sC;cACf,IAAI,CAAC,mBAAS,UAAd,C;gBAAyB,M;;;gBAAzB,gB;;;;;;;mCACc,mBAAS,O;cACvB,gB;;;cAAA,KAAO,mBAAS,UAAhB,C;gBAAA,gB;;;;gCACe,mBAAS,O;cACpB,gB;8BAAA,iCAAM,6BAAU,kBAAV,EAAmB,eAAnB,CAAN,O;kBAAA,kBCnqDZ,yB;uBDmqDY,yB;cAAA,Q;;cACA,qBAAU,e;cAHd,gB;;;cAKJ,W;;;;;;;;;;;;;;;;IAAA,C;;MATwB,yD;uBAAA,4G;YAAA,S;iBAAA,Q;;iBAAA,uB;MAAA,C;IAAA,C;;MAAxB,OAAO,SAAS,0CAAT,C;IAUX,C;;MAY6D,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAoC,I;MAGtN,Q;MAFhB,MAAO,gBAAO,MAAP,C;MACP,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,iCAAU,CAAd,C;UAAiB,MAAO,gBAAO,SAAP,C;QACxB,IAAI,QAAQ,CAAR,IAAa,SAAS,KAA1B,C;UACW,gBAAP,MAAO,EAAc,OAAd,EAAuB,SAAvB,C;;;UACJ,K;;MAEX,IAAI,SAAS,CAAT,IAAc,QAAQ,KAA1B,C;QAAiC,MAAO,gBAAO,SAAP,C;MACxC,MAAO,gBAAO,OAAP,C;MACP,OAAO,M;IACX,C;;MAYwC,yB;QAAA,YAA0B,I;MAAM,sB;QAAA,SAAuB,E;MAAI,uB;QAAA,UAAwB,E;MAAI,qB;QAAA,QAAa,E;MAAI,yB;QAAA,YAA0B,K;MAAO,yB;QAAA,YAAoC,I;MACjN,OAAO,oBAAO,sBAAP,EAAwB,SAAxB,EAAmC,MAAnC,EAA2C,OAA3C,EAAoD,KAApD,EAA2D,SAA3D,EAAsE,SAAtE,CAAiF,W;IAC5F,C;;MAMoB,mB;QAAE,OAAA,eAAK,W;MAAP,C;IAAA,C;;MAAhB,oCAAgB,8BAAhB,C;IACJ,C;;MAOI,OAAO,S;IACX,C;;MAWoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACD,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,O;QACP,oBAAmB,qBAAnB,EAAmB,KAAnB,E;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MAWoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACD,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,O;QACP,oBAAmB,qBAAnB,EAAmB,KAAnB,E;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MAWoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACD,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,O;QACP,oBAAmB,qBAAnB,EAAmB,KAAnB,E;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MAWoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACD,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,O;QACP,oBAAmB,qBAAnB,EAAmB,KAAnB,E;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MAWoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACD,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,O;QACP,oBAAmB,qBAAnB,EAAmB,KAAnB,E;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MAWoB,Q;MAFhB,UAAkB,G;MAClB,YAAiB,C;MACD,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,O;QACP,oBAAmB,qBAAnB,EAAmB,KAAnB,E;;MAEJ,OAAW,UAAS,CAAb,GAAgB,wCAAO,IAAvB,GAAgC,MAAM,K;IACjD,C;;MAUoB,Q;MADhB,UAAe,C;MACC,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,YAAO,O;;MAEX,OAAO,G;IACX,C;;MAUoB,Q;MADhB,UAAe,C;MACC,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,YAAO,O;;MAEX,OAAO,G;IACX,C;;MAUoB,Q;MADhB,UAAe,C;MACC,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,YAAO,OAAP,I;;MAEJ,OAAO,G;IACX,C;;MAUoB,Q;MADhB,Y;MACgB,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,cAAO,OAAP,C;;MAEJ,OAAO,G;IACX,C;;MAUoB,Q;MADhB,UAAiB,G;MACD,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,O;;MAEX,OAAO,G;IACX,C;;MAUoB,Q;MADhB,UAAkB,G;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,O;;MAEX,OAAO,G;IACX,C;;MEx3DI,aAAa,qBAAiB,YAAY,cAAZ,CAAjB,C;MACb,kBAAc,KAAd,C;MR+sBgB,Q;MAAA,OQ9sBT,SR8sBS,W;MAAhB,OAAgB,cAAhB,C;QAAgB,2B;QAAU,oB;QQ9sBK,IAAI,CAAC,SAAD,IAAY,OR8sBX,SQ9sBW,UAAhB,C;UAAiC,YAAU,I;UAA3C,mBAAiD,K;;;UAAjD,mBAA8D,I;;QR8sBvE,qB;UQ9sBD,MR8sBqC,WAAI,SAAJ,C;;MQ9sB1D,OAAqB,M;IACzB,C;;MAWI,aAAa,qBAAiB,SAAjB,C;MACN,YAAP,MAAO,EAAU,QAAV,C;MACP,OAAO,M;IACX,C;;MAWI,YAAqB,gCAAT,QAAS,EAAgC,SAAhC,C;MACrB,IAAI,KAAM,UAAV,C;QACI,OAAY,QAAL,SAAK,C;MAChB,IAAI,yBAAJ,C;QACgB,kBAAY,sB;QRwqBZ,Q;QAAA,OQxqBL,SRwqBK,W;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,CQxqBwB,qBRwqBb,OQxqBa,CRwqB5B,C;YAAyB,WAAY,WAAI,OAAJ,C;;QQxqBvD,ORyqBG,W;;MQxqBP,aAAa,qBAAiB,SAAjB,C;MACb,MAAO,mBAAU,KAAV,C;MACP,OAAO,M;IACX,C;;MAWI,aAAa,qBAAiB,SAAjB,C;MACN,YAAP,MAAO,EAAU,QAAV,C;MACP,OAAO,M;IACX,C;gGAEA,yB;MAAA,8C;MAAA,qC;QAOI,OAAO,iBAAM,OAAN,C;MACX,C;KARA,C;;MAgBI,aAAa,qBAAiB,YAAY,iBAAO,CAAP,IAAZ,CAAjB,C;MACb,MAAO,gBAAO,SAAP,C;MACP,MAAO,WAAI,OAAJ,C;MACP,OAAO,M;IACX,C;;MASI,aAAa,qBAAiB,YAAY,SAAK,KAAL,GAAY,QAAS,OAArB,IAAZ,CAAjB,C;MACb,MAAO,gBAAO,SAAP,C;MACA,SAAP,MAAO,EAAO,QAAP,C;MACP,OAAO,M;IACX,C;;MAQuD,UAAT,M;MAA1C,aAAa,qBAAiB,YAAY,WAAS,4BAAT,QAAS,CAAT,YAA4C,cAAL,WAAvC,4BAA2D,SAAK,KAAL,GAAY,CAAZ,IAAvE,CAAjB,C;MACb,MAAO,gBAAO,SAAP,C;MACA,OAAP,MAAO,EAAO,QAAP,C;MACP,OAAO,M;IACX,C;;MASI,aAAa,qBAAiB,YAAY,SAAK,KAAL,GAAY,CAAZ,IAAZ,CAAjB,C;MACb,MAAO,gBAAO,SAAP,C;MACA,SAAP,MAAO,EAAO,QAAP,C;MACP,OAAO,M;IACX,C;8FAEA,yB;MAAA,4C;MAAA,qC;QAOI,OAAO,gBAAK,OAAL,C;MACX,C;KARA,C;;MhB1HuF,wC;IANvF,C;IAAA,0D;MAO2C,8B;IAAA,C;IAP3C,gF;;MCSuF,wC;IARvF,C;IAAA,0D;MAS2C,8B;IAAA,C;IAT3C,gF;gGgBcA,yB;MAAA,uD;MAAA,gC;MAAA,iD;QAOI,OAAW,SAAS,CAAT,IAAc,SAAS,wBAA3B,GAAsC,qBAAI,KAAJ,CAAtC,GAAsD,uBAAa,KAAb,E;MACjE,C;KARA,C;gGAUA,yB;MAAA,+C;MAAA,mC;QAOI,OAAY,UAAL,SAAK,EAAU,KAAV,C;MAChB,C;KARA,C;0EAUA,yB;MA0CA,6C;MAAA,oC;MAAA,gC;MA1CA,uC;QAKW,sB;;UAyCS,Q;UAAA,0B;UAAhB,OAAgB,cAAhB,C;YAAgB,oC;YAAM,IAzCH,SAyCO,CAAU,oBAAV,CAAJ,C;cAAwB,qBAAO,O;cAAP,uB;;;UAC9C,qBAAO,I;;;QA1CP,yB;MACJ,C;KANA,C;kFAQA,yB;MA8GA,mD;MAAA,+C;MAAA,oC;MA9GA,uC;QAKW,qB;;UA6GO,Q;UAAA,OAAa,SAAR,sBAAQ,CAAb,W;UAAd,OAAc,cAAd,C;YAAc,uB;YACV,cAAc,qBAAK,KAAL,C;YACd,IA/Gc,SA+GV,CAAU,oBAAV,CAAJ,C;cAAwB,oBAAO,O;cAAP,sB;;;UAE5B,oBAAO,I;;;QAjHP,wB;MACJ,C;KANA,C;;MAaI,ICwKgD,qBAAU,CDxK1D,C;QACI,MAAM,2BAAuB,yBAAvB,C;MACV,OAAO,qBAAK,CAAL,C;IACX,C;4EAEA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,iE;MAAA,uC;QAKoB,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UAAM,IAAI,UAAU,oBAAV,CAAJ,C;YAAwB,OAAO,O;;QACrD,MAAM,gCAAuB,6DAAvB,C;MACV,C;KAPA,C;;MAaI,OCsJgD,qBAAU,CDtJnD,GAAe,IAAf,GAAyB,qBAAK,CAAL,C;IACpC,C;wFAEA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,uC;QAIoB,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UAAM,IAAI,UAAU,oBAAV,CAAJ,C;YAAwB,OAAO,O;;QACrD,OAAO,I;MACX,C;KANA,C;mFAQA,yB;MAAA,uD;MAAA,gC;MAAA,iD;QAKI,OAAW,SAAS,CAAT,IAAc,SAAS,wBAA3B,GAAsC,qBAAI,KAAJ,CAAtC,GAAsD,uBAAa,KAAb,E;MACjE,C;KANA,C;;MAYI,OAAW,SAAS,CAAT,IAAc,SAAS,2BAA3B,GAAsC,qBAAI,KAAJ,CAAtC,GAAsD,I;IACjE,C;0FAEA,yB;MAAA,mD;MAAA,oC;MAAA,uC;QAIkB,gC;QAAA,6B;QAAA,mB;QAAA,kB;QAAA,kB;QAAd,0D;UACI,IAAI,UAAU,iCAAK,KAAL,EAAV,CAAJ,C;YACI,OAAO,K;;;QAGf,OAAO,E;MACX,C;KAVA,C;wFAYA,yB;MAAA,mD;MAAA,+C;MAAA,oC;MAAA,uC;QAIkB,Q;QAAA,OAAQ,SAAR,sBAAQ,CAAR,W;QAAd,OAAc,cAAd,C;UAAc,uB;UACV,IAAI,UAAU,iCAAK,KAAL,EAAV,CAAJ,C;YACI,OAAO,K;;;QAGf,OAAO,E;MACX,C;KAVA,C;;MAiBI,IC+FgD,qBAAU,CD/F1D,C;QACI,MAAM,2BAAuB,yBAAvB,C;MACV,OAAO,qBAAK,2BAAL,C;IACX,C;0EAEA,yB;MAAA,mD;MAAA,+C;MAAA,oC;MAAA,iE;MAAA,uC;QAKkB,Q;QAAA,OAAa,SAAR,YAAL,SAAK,CAAQ,CAAb,W;QAAd,OAAc,cAAd,C;UAAc,uB;UACV,cAAc,qBAAK,KAAL,C;UACd,IAAI,UAAU,oBAAV,CAAJ,C;YAAwB,OAAO,O;;QAEnC,MAAM,gCAAuB,6DAAvB,C;MACV,C;KAVA,C;;MAgBI,OC0EgD,qBAAU,CD1EnD,GAAe,IAAf,GAAyB,qBAAK,mBAAS,CAAT,IAAL,C;IACpC,C;sFAEA,yB;MAAA,mD;MAAA,+C;MAAA,oC;MAAA,uC;QAIkB,Q;QAAA,OAAa,SAAR,YAAL,SAAK,CAAQ,CAAb,W;QAAd,OAAc,cAAd,C;UAAc,uB;UACV,cAAc,qBAAK,KAAL,C;UACd,IAAI,UAAU,oBAAV,CAAJ,C;YAAwB,OAAO,O;;QAEnC,OAAO,I;MACX,C;KATA,C;8EAWA,yB;MAAA,mC;MAAA,yC;MAAA,4B;QAQI,OAAO,kBAAO,cAAP,C;MACX,C;KATA,C;;MAkBI,IC0CgD,qBAAU,CD1C1D,C;QACI,MAAM,2BAAuB,yBAAvB,C;MACV,OAAO,qBAAI,MAAO,iBAAQ,gBAAR,CAAX,C;IACX,C;;MAMiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,MAAM,2BAAuB,yBAAvB,C;aACX,C;UAAK,4BAAK,CAAL,C;UAAL,K;gBACQ,MAAM,gCAAyB,0CAAzB,C;;MAHlB,W;IAKJ,C;8EAEA,yB;MAAA,6C;MAAA,oC;MAAA,kF;MAAA,gC;MAAA,iE;MAAA,8B;MAAA,uC;QAMoB,UAST,M;QAXP,aAAoB,I;QACpB,YAAY,K;QACI,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,IAAI,UAAU,oBAAV,CAAJ,C;YACI,IAAI,KAAJ,C;cAAW,MAAM,8BAAyB,wDAAzB,C;YACjB,SAAS,O;YACT,QAAQ,I;;;QAGhB,IAAI,CAAC,KAAL,C;UAAY,MAAM,gCAAuB,6DAAvB,C;QAElB,OAAO,4E;MACX,C;KAhBA,C;;MAsBI,OAAW,qBAAU,CAAd,GAAiB,qBAAK,CAAL,CAAjB,GAA8B,I;IACzC,C;0FAEA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,uC;QAMoB,Q;QAFhB,aAAoB,I;QACpB,YAAY,K;QACI,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,IAAI,UAAU,oBAAV,CAAJ,C;YACI,IAAI,KAAJ,C;cAAW,OAAO,I;YAClB,SAAS,O;YACT,QAAQ,I;;;QAGhB,IAAI,CAAC,KAAL,C;UAAY,OAAO,I;QACnB,OAAO,M;MACX,C;KAfA,C;;MfrMI,IAAI,Ee8NI,KAAK,Cf9NT,CAAJ,C;QACI,ce6Nc,wD;Qf5Nd,MAAM,gCAAyB,OAAQ,WAAjC,C;;Me6NV,OAAO,8BAAc,eAAF,CAAE,EAAa,gBAAb,CAAd,EAAoC,gBAApC,C;IACX,C;;MfhOI,IAAI,Ee0OI,KAAK,Cf1OT,CAAJ,C;QACI,ceyOc,wD;QfxOd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MeyOV,OE3E6E,oBF2E1D,eAAF,CAAE,EAAa,gBAAb,CE3E0D,C;IF4EjF,C;;Mf5OI,IAAI,EesPI,KAAK,CftPT,CAAJ,C;QACI,ceqPc,wD;QfpPd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MeqPV,OAAO,mBAAkB,gBAAZ,mBAAS,CAAT,IAAY,EAAc,CAAd,CAAlB,C;IACX,C;;MfxPI,IAAI,EekQI,KAAK,CflQT,CAAJ,C;QACI,ceiQc,wD;QfhQd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MeiQV,OAAO,mBAAkB,gBAAZ,mBAAS,CAAT,IAAY,EAAc,CAAd,CAAlB,C;IACX,C;2FAEA,yB;MAAA,uD;MAAA,oC;MAAA,uC;QAMI,iBAAc,wBAAd,WAA+B,CAA/B,U;UACI,IAAI,CAAC,UAAU,iCAAK,KAAL,EAAV,CAAL,C;YACI,OAAO,8BAAY,CAAZ,EAAe,QAAQ,CAAR,IAAf,C;QACf,OAAO,E;MACX,C;KAVA,C;4FAYA,yB;MAAA,uD;MAAA,oC;MAAA,uC;QAMI,iBAAc,wBAAd,WAA+B,CAA/B,U;UACI,IAAI,CAAC,UAAU,iCAAK,KAAL,EAAV,CAAL,C;YACI,OEvHoF,oBFuHnE,CEvHmE,EFuHhE,QAAQ,CAAR,IEvHgE,C;;QFwH5F,OAAO,E;MACX,C;KAVA,C;oFAYA,yB;MAAA,mD;MAAA,oC;MAAA,uC;QAMuB,UAAL,MAAK,EAAL,MAAK,EAAL,M;QAAK,mBAAL,SAAK,C;QAAL,mB;QAAA,kB;QAAA,kB;QAAd,0D;UACI,IAAI,CAAC,UAAU,iCAAK,KAAL,EAAV,CAAL,C;YACI,OAAO,8BAAY,KAAZ,EAAmB,gBAAnB,C;QACf,OAAO,E;MACX,C;KAVA,C;oFAYA,yB;MAAA,mD;MAAA,oC;MAAA,uC;QAMuB,UAAL,MAAK,EAAL,MAAK,EAAL,M;QAAK,mBAAL,SAAK,C;QAAL,mB;QAAA,kB;QAAA,kB;QAAd,0D;UACI,IAAI,CAAC,UAAU,iCAAK,KAAL,EAAV,CAAL,C;YACI,OElJqE,oBFkJpD,KElJoD,C;;QFmJ7E,OAAO,E;MACX,C;KAVA,C;8EAYA,yB;MAAA,yD;MAkEA,oC;MAlEA,uC;QAIW,kBAAS,oB;QAkEM,Q;QAAA,uB;QAAtB,iBAAc,CAAd,wB;UACI,cAAc,qBAAI,KAAJ,C;UACd,IApE6B,SAoEzB,CAAU,oBAAV,CAAJ,C;YAAwB,WAAY,gBAAO,OAAP,C;;QApExC,OAsEO,W;MArEX,C;KALA,C;8EAOA,yB;MAAA,yD;MA2DA,oC;MA3DA,uC;QAIW,kBAAS,oB;QA2DM,Q;QAAA,uB;QAAtB,iBAAc,CAAd,wB;UACI,cAAc,qBAAI,KAAJ,C;UACd,IA7D6B,SA6DzB,CAAU,oBAAV,CAAJ,C;YAAwB,WAAY,gBAAO,OAAP,C;;QA7DxC,OA+DO,WA/DqC,W;MAChD,C;KALA,C;4FAOA,yB;MAAA,yD;MAkBA,gC;MAioBA,6C;MAAA,oC;MAnpBA,uC;QAMW,kBAAgB,oB;QAopBV,gB;QADb,YAAY,C;QACC,0B;QAAb,OAAa,cAAb,C;UAAa,iC;UAAM,eAAO,cAAP,EAAO,sBAAP,S;UAAA,cAAgB,iB;UAjoB/B,IAnBoC,SAmBhC,CAAU,OAAV,EAAiB,OAAjB,CAAJ,C;YAA2C,2BAAO,kBAAP,C;;QAnB/C,OAqBO,W;MApBX,C;KAPA,C;4FASA,yB;MAAA,yD;MASA,gC;MAioBA,6C;MAAA,oC;MA1oBA,uC;QAMW,kBAAgB,oB;QA2oBV,gB;QADb,YAAY,C;QACC,0B;QAAb,OAAa,cAAb,C;UAAa,iC;UAAM,eAAO,cAAP,EAAO,sBAAP,S;UAAA,cAAgB,iB;UAjoB/B,IAVoC,SAUhC,CAAU,OAAV,EAAiB,OAAjB,CAAJ,C;YAA2C,2BAAO,kBAAP,C;;QAV/C,OAYO,WAZ4C,W;MACvD,C;KAPA,C;gGASA,yB;MAAA,gC;MAioBA,6C;MAAA,oC;MAjoBA,oD;QAwoBiB,gB;QADb,YAAY,C;QACC,0B;QAAb,OAAa,cAAb,C;UAAa,iC;UAAM,eAAO,cAAP,EAAO,sBAAP,S;UAAA,cAAgB,iB;UAjoB/B,IAAI,UAAU,OAAV,EAAiB,OAAjB,CAAJ,C;YAA2C,2BAAO,kBAAP,C;;QAE/C,OAAO,W;MACX,C;KAVA,C;oFAYA,yB;MAAA,yD;MAcA,6C;MAAA,oC;MAAA,gC;MAdA,uC;QAIW,kBAAY,oB;QAcH,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UAAM,IAAI,CAdU,SAcT,CAAU,oBAAV,CAAL,C;YAAyB,WAAY,gBAAO,OAAP,C;;QAd3D,OAeO,W;MAdX,C;KALA,C;oFAOA,yB;MAAA,yD;MAOA,6C;MAAA,oC;MAAA,gC;MAPA,uC;QAIW,kBAAY,oB;QAOH,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UAAM,IAAI,CAPU,SAOT,CAAU,oBAAV,CAAL,C;YAAyB,WAAY,gBAAO,OAAP,C;;QAP3D,OAQO,WARwC,W;MACnD,C;KALA,C;wFAOA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,oD;QAIoB,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UAAM,IAAI,CAAC,UAAU,oBAAV,CAAL,C;YAAyB,WAAY,gBAAO,OAAP,C;;QAC3D,OAAO,W;MACX,C;KANA,C;kFAQA,yB;MAAA,oC;MAAA,oD;QAI0B,Q;QAAA,uB;QAAtB,iBAAc,CAAd,wB;UACI,cAAc,qBAAI,KAAJ,C;UACd,IAAI,UAAU,oBAAV,CAAJ,C;YAAwB,WAAY,gBAAO,OAAP,C;;QAExC,OAAO,W;MACX,C;KATA,C;;MAeI,IAAI,OAAQ,UAAZ,C;QAAuB,OAAO,E;MAC9B,OAAO,yBAAY,OAAZ,C;IACX,C;;MAMI,IAAI,OAAQ,UAAZ,C;QAAuB,OAAO,E;MAC9B,OAAO,uBAAU,OAAV,C;IACX,C;;MASc,Q;MAHV,WAAmB,wBAAR,OAAQ,EAAwB,EAAxB,C;MACnB,IAAI,SAAQ,CAAZ,C;QAAe,OAAO,E;MACtB,aAAa,mBAAc,IAAd,C;MACH,yB;MAAV,OAAU,cAAV,C;QAAU,mB;QACN,MAAO,gBAAO,qBAAI,CAAJ,CAAP,C;;MAEX,OAAO,M;IACX,C;4EAEA,yB;MAAA,8B;MAAA,uC;MAAA,qC;QAKY,Q;QAAR,OAA8B,MAAtB,2DAAsB,EAAM,OAAN,CAAe,W;MACjD,C;KANA,C;;MfhaI,IAAI,EegbI,KAAK,CfhbT,CAAJ,C;QACI,ce+ac,wD;Qf9ad,MAAM,gCAAyB,OAAQ,WAAjC,C;;Me+aV,OAAO,8BAAY,CAAZ,EAAiB,eAAF,CAAE,EAAa,gBAAb,CAAjB,C;IACX,C;;MflbI,IAAI,Ee4bI,KAAK,Cf5bT,CAAJ,C;QACI,ce2bc,wD;Qf1bd,MAAM,gCAAyB,OAAQ,WAAjC,C;;Me2bV,OE1R4F,oBF0R3E,CE1R2E,EF0RtE,eAAF,CAAE,EAAa,gBAAb,CE1RsE,C;IF2RhG,C;;Mf9bI,IAAI,EewcI,KAAK,CfxcT,CAAJ,C;QACI,ceucc,wD;Qftcd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MeucV,aAAa,gB;MACb,OAAO,8BAAY,SAAW,eAAF,CAAE,EAAa,MAAb,CAAX,IAAZ,EAA6C,MAA7C,C;IACX,C;;Mf3cI,IAAI,EeqdI,KAAK,CfrdT,CAAJ,C;QACI,ceodc,wD;Qfndd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MeodV,aAAa,gB;MACb,OEvT6E,oBFuT5D,SAAW,eAAF,CAAE,EAAa,MAAb,CAAX,IEvT4D,C;IFwTjF,C;2FAEA,yB;MAAA,uD;MAAA,oC;MAAA,uC;QAMI,iBAAc,wBAAd,WAA+B,CAA/B,U;UACI,IAAI,CAAC,UAAU,iCAAK,KAAL,EAAV,CAAL,C;YACI,OAAO,8BAAY,QAAQ,CAAR,IAAZ,EAAuB,gBAAvB,C;;;QAGf,OAAO,8BAAY,CAAZ,EAAe,gBAAf,C;MACX,C;KAZA,C;4FAcA,yB;MAAA,uD;MAAA,oC;MAAA,uC;QAMI,iBAAc,wBAAd,WAA+B,CAA/B,U;UACI,IAAI,CAAC,UAAU,iCAAK,KAAL,EAAV,CAAL,C;YACI,OEhVqE,oBFgVpD,QAAQ,CAAR,IEhVoD,C;;;QFmV7E,OAAO,S;MACX,C;KAZA,C;oFAcA,yB;MAAA,oC;MAAA,uC;QAM0B,Q;QAAA,uB;QAAtB,iBAAc,CAAd,wB;UACI,IAAI,CAAC,UAAU,iCAAI,KAAJ,EAAV,CAAL,C;YACI,OAAO,8BAAY,CAAZ,EAAe,KAAf,C;;QAEf,OAAO,8BAAY,CAAZ,EAAe,gBAAf,C;MACX,C;KAXA,C;oFAaA,yB;MAAA,oC;MAAA,uC;QAM0B,Q;QAAA,uB;QAAtB,iBAAc,CAAd,wB;UACI,IAAI,CAAC,UAAU,iCAAI,KAAJ,EAAV,CAAL,C;YACI,OExWoF,oBFwWnE,CExWmE,EFwWhE,KExWgE,C;;QF0W5F,OAAO,S;MACX,C;KAXA,C;;MAiBI,OAAO,qBAAc,SAAd,CAAoB,U;IAC/B,C;kFAEA,yB;MAAA,8B;MAAA,6C;MAAA,4B;QAKY,Q;QAAR,OAA8B,SAAtB,2DAAsB,CAAW,W;MAC7C,C;KANA,C;oFAQA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAkEA,6C;MAAA,oC;MAAA,gC;MAlEA,uC;QASI,eAAmC,cAApB,YAAY,gBAAZ,CAAoB,EAAc,EAAd,C;QAC5B,kBAAY,mBAAoB,QAApB,C;QA+DH,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,WAhE8C,SAgE/B,CAAU,oBAAV,C;UrBjCnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;QqB/BA,OAkEO,W;MAjEX,C;KAXA,C;wFAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAyBA,6C;MAAA,oC;MAAA,gC;MAzBA,yC;QASI,eAAmC,cAApB,YAAY,gBAAZ,CAAoB,EAAc,EAAd,C;QAC5B,kBAAc,mBAAuB,QAAvB,C;QAuBL,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,WAAY,aAxBuC,WAwBnC,CAAY,oBAAZ,CAAJ,EAA0B,oBAA1B,C;;QAxBhB,OA0BO,W;MAzBX,C;KAXA,C;wFAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MA0BA,6C;MAAA,oC;MAAA,gC;MA1BA,yD;QAQI,eAAmC,cAApB,YAAY,gBAAZ,CAAoB,EAAc,EAAd,C;QAC5B,kBAAc,mBAAoB,QAApB,C;QAyBL,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,WAAY,aA1BoC,WA0BhC,CAAY,oBAAZ,CAAJ,EA1BiD,cA0BvB,CAAe,oBAAf,CAA1B,C;;QA1BhB,OA4BO,W;MA3BX,C;KAVA,C;4FAYA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,sD;QAQoB,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,WAAY,aAAI,YAAY,oBAAZ,CAAJ,EAA0B,oBAA1B,C;;QAEhB,OAAO,W;MACX,C;KAZA,C;4FAcA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,sE;QAQoB,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,WAAY,aAAI,YAAY,oBAAZ,CAAJ,EAA0B,eAAe,oBAAf,CAA1B,C;;QAEhB,OAAO,W;MACX,C;KAZA,C;wFAcA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,oD;QAOoB,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,WAAe,UAAU,oBAAV,C;UrBjCnB,wBAAI,IAAK,MAAT,EAAgB,IAAK,OAArB,C;;QqBmCA,OAAO,W;MACX,C;KAXA,C;2FAaA,yB;MAAA,0D;MAAA,yD;MAAA,uE;MAgBA,6C;MAAA,oC;MAAA,gC;MAhBA,2C;QAYI,aAAa,mBAA2C,cAApB,YAAY,gBAAZ,CAAoB,EAAc,EAAd,CAA3C,C;QAYG,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UAXO,MAYP,aAAI,oBAAJ,EAZe,aAYF,CAAc,oBAAd,CAAb,C;;QAZhB,OAAuB,M;MAC3B,C;KAdA,C;8FAgBA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,wD;QAQoB,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,WAAY,aAAI,oBAAJ,EAAa,cAAc,oBAAd,CAAb,C;;QAEhB,OAAO,W;MACX,C;KAZA,C;;MAkBiB,Q;MAAA,4B;MAAb,OAAa,cAAb,C;QAAa,iC;QACT,WAAY,WAAI,iBAAJ,C;;MAEhB,OAAO,W;IACX,C;;MAMI,OAAO,2BAAa,eAAc,YAAY,gBAAZ,CAAd,CAAb,C;IACX,C;;MAMiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,kB;UAAL,K;aACA,C;UAAK,cAAO,iCAAK,CAAL,EAAP,C;UAAL,K;gBACa,wBAAL,SAAK,C;UAHV,K;;MAAP,W;IAKJ,C;;MAMI,OAAO,2BAAa,iBAAgB,gBAAhB,CAAb,C;IACX,C;;MAQiB,IAAN,I;MAAA,QAAM,gBAAN,C;aACH,C;UAAK,iB;UAAL,K;aACA,C;UAAK,aAAM,iCAAK,CAAL,EAAN,C;UAAL,K;gBACQ,kCAAa,qBAAoB,YAAY,gBAAZ,CAApB,CAAb,C;UAHL,K;;MAAP,W;IAKJ,C;gFAEA,yB;MAAA,+D;MAOA,6C;MAAA,oC;MAAA,gD;MAAA,gC;MAPA,uC;QAIW,kBAAU,gB;QAOD,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,WAR6B,SAQlB,CAAU,oBAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAThB,OAWO,W;MAVX,C;KALA,C;oFAOA,yB;MAAA,6C;MAAA,oC;MAAA,gD;MAAA,gC;MAAA,oD;QAIoB,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,WAAW,UAAU,oBAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAEhB,OAAO,W;MACX,C;KATA,C;gFAWA,yB;MAAA,wE;MAyBA,6C;MAAA,oC;MAAA,+D;MAAA,gC;MAzBA,yC;QASW,kBAAU,oB;QAyBD,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,UA1BoD,WA0B1C,CAAY,oBAAZ,C;UrBneP,U;UADP,YqBqee,WrBreH,WqBqewB,GrBrexB,C;UACL,IAAI,aAAJ,C;YACH,aqBmeuC,gB;YAA5B,WrBleX,aqBkegC,GrBlehC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UqB+dA,iB;UACA,IAAK,WAAI,oBAAJ,C;;QA5BT,OA8BO,W;MA7BX,C;KAVA,C;gFAYA,yB;MAAA,wE;MA8BA,6C;MAAA,oC;MAAA,+D;MAAA,gC;MA9BA,yD;QAUW,kBAAU,oB;QA8BD,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,UA/BiD,WA+BvC,CAAY,oBAAZ,C;UrBrfP,U;UADP,YqBufe,WrBvfH,WqBufwB,GrBvfxB,C;UACL,IAAI,aAAJ,C;YACH,aqBqfuC,gB;YAA5B,WrBpfX,aqBofgC,GrBpfhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UqBifA,iB;UACA,IAAK,WAjCyD,cAiCrD,CAAe,oBAAf,CAAJ,C;;QAjCT,OAmCO,W;MAlCX,C;KAXA,C;oFAaA,yB;MAAA,6C;MAAA,oC;MAAA,+D;MAAA,gC;MAAA,sD;QASoB,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,UAAU,YAAY,oBAAZ,C;UrBneP,U;UADP,YqBqee,WrBreH,WqBqewB,GrBrexB,C;UACL,IAAI,aAAJ,C;YACH,aqBmeuC,gB;YAA5B,WrBleX,aqBkegC,GrBlehC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UqB+dA,iB;UACA,IAAK,WAAI,oBAAJ,C;;QAET,OAAO,W;MACX,C;KAfA,C;oFAiBA,yB;MAAA,6C;MAAA,oC;MAAA,+D;MAAA,gC;MAAA,sE;QAUoB,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,UAAU,YAAY,oBAAZ,C;UrBrfP,U;UADP,YqBufe,WrBvfH,WqBufwB,GrBvfxB,C;UACL,IAAI,aAAJ,C;YACH,aqBqfuC,gB;YAA5B,WrBpfX,aqBofgC,GrBpfhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;UqBifA,iB;UACA,IAAK,WAAI,eAAe,oBAAf,CAAJ,C;;QAET,OAAO,W;MACX,C;KAhBA,C;qFAkBA,yB;MAAA,6C;MAAA,oC;MAAA,kC;MAAA,4C;;QAQW,sC;QAAA,8C;MARX,C;MAAA,gE;QASwD,OAAgB,SAAhB,oBAAgB,C;MAAhB,C;MATxD,oE;QAU+C,gCAAY,oBAAZ,C;MAAA,C;MAV/C,gF;MAAA,yC;QAQI,2D;MAIJ,C;KAZA,C;wEAcA,yB;MAAA,gE;MAuEA,6C;MAAA,oC;MAAA,gC;MAvEA,uC;QAOW,kBAAM,eAAa,gBAAb,C;QAqEA,Q;QAAA,0B;QAAb,OAAa,cAAb,C;UAAa,iC;UACT,WAAY,WAtEmB,SAsEf,CAAU,iBAAV,CAAJ,C;;QAtEhB,OAuEO,W;MAtEX,C;KARA,C;sFAUA,yB;MAAA,gE;MA+BA,6C;MAAA,oC;MAAA,gC;MA/BA,uC;QAOW,kBAAa,eAAa,gBAAb,C;QAgCP,gB;QADb,YAAY,C;QACC,0B;QAAb,OAAa,cAAb,C;UAAa,iC;UACT,WAAY,WAjC0B,SAiCtB,EAAU,cAAV,EAAU,sBAAV,WAAmB,iBAAnB,CAAJ,C;;QAjChB,OAkCO,W;MAjCX,C;KARA,C;mGAUA,yB;MAAA,+D;MAUA,gC;MAiKA,6C;MAAA,oC;MA3KA,uC;QAOW,kBAAoB,gB;QA2Kd,gB;QADb,YAAY,C;QACC,0B;QAAb,OAAa,cAAb,C;UAAa,iC;UAjKsB,U;UAAA,cAVQ,SAUR,EAiKT,cAjKS,EAiKT,sBAjKS,WAiKA,iBAjKA,W;YAA6C,6B;;;QAVhF,OAWO,W;MAVX,C;KARA,C;uGAUA,yB;MAAA,gC;MAiKA,6C;MAAA,oC;MAjKA,oD;QAwKiB,gB;QADb,YAAY,C;QACC,0B;QAAb,OAAa,cAAb,C;UAAa,iC;UAjKsB,U;UAAA,yBAiKT,cAjKS,EAiKT,sBAjKS,WAiKA,iBAjKA,W;YAA6C,6B;;;QAChF,OAAO,W;MACX,C;KATA,C;0FAWA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,oD;QAQiB,UACiB,M;QAF9B,YAAY,C;QACC,0B;QAAb,OAAa,cAAb,C;UAAa,iC;UACT,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,iBAAnB,CAAJ,C;;QAChB,OAAO,W;MACX,C;KAXA,C;qFAaA,yB;MAAA,+D;MAQA,gC;MA0HA,6C;MAAA,oC;MAlIA,uC;QAKW,kBAAa,gB;QAiIJ,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UAzHK,U;UAAA,cARe,SAQf,CAyHQ,oBAzHR,W;YAAsC,6B;;;QAR3D,OASO,W;MARX,C;KANA,C;yFAQA,yB;MAAA,gC;MA0HA,6C;MAAA,oC;MA1HA,oD;QA8HoB,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UAzHK,U;UAAA,wBAyHQ,oBAzHR,W;YAAsC,6B;;;QAC3D,OAAO,W;MACX,C;KAPA,C;4EASA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,oD;QAKiB,Q;QAAA,0B;QAAb,OAAa,cAAb,C;UAAa,iC;UACT,WAAY,WAAI,UAAU,iBAAV,CAAJ,C;;QAChB,OAAO,W;MACX,C;KARA,C;;MAc4B,mB;QAAE,iC;MAAF,C;IAAA,C;;MAAxB,OAAO,qBAAiB,6BAAjB,C;IACX,C;wEAEA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,uC;QAMoB,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UAAM,IAAI,CAAC,UAAU,oBAAV,CAAL,C;YAAyB,OAAO,K;;QACtD,OAAO,I;MACX,C;KARA,C;;MAgBI,OAAO,EC1rByC,qBAAU,CD0rBnD,C;IACX,C;wEAEA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,uC;QAMoB,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UAAM,IAAI,UAAU,oBAAV,CAAJ,C;YAAwB,OAAO,I;;QACrD,OAAO,K;MACX,C;KARA,C;;MAeI,OAAO,gB;IACX,C;4EAEA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,uC;QAKoB,Q;QADhB,YAAY,C;QACI,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UAAM,IAAI,UAAU,oBAAV,CAAJ,C;YAAwB,qB;;QAC9C,OAAO,K;MACX,C;KAPA,C;0EASA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,gD;QAKoB,Q;QADhB,kBAAkB,O;QACF,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UAAM,cAAc,UAAU,WAAV,EAAuB,oBAAvB,C;;QACpC,OAAO,W;MACX,C;KAPA,C;wFASA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,gD;QASoB,UAA8B,M;QAF9C,YAAY,C;QACZ,kBAAkB,O;QACF,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UAAM,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,oBAAhC,C;;QACpC,OAAO,W;MACX,C;KAXA,C;mFAaA,yB;MAAA,uD;MAAA,oC;MAAA,gD;QAOoC,Q;QAHhC,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,kCAAI,YAAJ,EAAI,oBAAJ,SAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAVA,C;iGAYA,yB;MAAA,uD;MAAA,oC;MAAA,gD;QAOI,YAAY,wB;QACZ,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,iCAAI,KAAJ,EAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAdA,C;gFAgBA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,oC;QAIoB,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UAAM,OAAO,oBAAP,C;;MAC1B,C;KALA,C;8FAOA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,oC;QAOiB,UAAa,M;QAD1B,YAAY,C;QACC,0B;QAAb,OAAa,cAAb,C;UAAa,iC;UAAM,QAAO,cAAP,EAAO,sBAAP,WAAgB,iBAAhB,C;;MACvB,C;KARA,C;;MAgBiB,Q;MAFb,IC/xBgD,qBAAU,CD+xB1D,C;QAAe,OAAO,I;MACtB,UAAU,qBAAK,CAAL,C;MACG,kC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,qBAAK,CAAL,C;QACR,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;4EAEA,yB;MAAA,uD;MAAA,oC;MAAA,sC;QAMI,IC9yBgD,qBAAU,CD8yB1D,C;UAAe,OAAO,I;QACtB,cAAc,qBAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,oBAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,qBAAK,CAAL,C;UACR,QAAQ,SAAS,cAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;;MA4BiB,Q;MAFb,ICl0BgD,qBAAU,CDk0B1D,C;QAAe,OAAO,I;MACtB,UAAU,qBAAK,CAAL,C;MACG,kC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,qBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,gBAAR,EAAa,cAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQiB,Q;MAFb,IC/0BgD,qBAAU,CD+0B1D,C;QAAe,OAAO,I;MACtB,UAAU,qBAAK,CAAL,C;MACG,kC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,qBAAK,CAAL,C;QACR,IAAI,MAAM,CAAV,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;4EAEA,yB;MAAA,uD;MAAA,oC;MAAA,sC;QAMI,IC91BgD,qBAAU,CD81B1D,C;UAAe,OAAO,I;QACtB,cAAc,qBAAK,CAAL,C;QACd,gBAAqB,cAAL,SAAK,C;QACrB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,oBAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,qBAAK,CAAL,C;UACR,QAAQ,SAAS,cAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KApBA,C;;MA4BiB,Q;MAFb,ICl3BgD,qBAAU,CDk3B1D,C;QAAe,OAAO,I;MACtB,UAAU,qBAAK,CAAL,C;MACG,kC;MAAb,aAAU,CAAV,iB;QACI,QAAQ,qBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,gBAAR,EAAa,cAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAQI,OCj4BgD,qBAAU,C;IDk4B9D,C;0EAEA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,uC;QAMoB,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UAAM,IAAI,UAAU,oBAAV,CAAJ,C;YAAwB,OAAO,K;;QACrD,OAAO,I;MACX,C;KARA,C;6EAUA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,oC;QAKmC,Q;QAAA,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UAAM,OAAO,oBAAP,C;;QAArC,gB;MACJ,C;KANA,C;8EAQA,yB;MAAA,4F;MAAA,uD;MAAA,oC;MAAA,gC;MAAA,uC;QAOqB,Q;QAHjB,IC15BgD,qBAAU,CD05B1D,C;UACI,MAAM,mCAA8B,uCAA9B,C;QACV,kBAAkB,qBAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,oBAAU,wBAAV,EAAuB,iCAAK,KAAL,EAAvB,E;;QAElB,OAAO,W;MACX,C;KAXA,C;4FAaA,yB;MAAA,4F;MAAA,uD;MAAA,oC;MAAA,gC;MAAA,uC;QAUqB,Q;QAHjB,IC16BgD,qBAAU,CD06B1D,C;UACI,MAAM,mCAA8B,uCAA9B,C;QACV,kBAAkB,qBAAK,CAAL,C;QACD,+B;QAAjB,iBAAc,CAAd,yB;UACI,cAAc,oBAAU,KAAV,EAAiB,wBAAjB,EAA8B,iCAAK,KAAL,EAA9B,E;;QAElB,OAAO,W;MACX,C;KAdA,C;uFAgBA,yB;MAAA,uD;MAAA,4F;MAAA,oC;MAAA,gC;MAAA,uC;QAM0B,UAEU,M;QAJhC,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,uCAA9B,C;QACrB,kBAAkB,sBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,oBAAU,kCAAI,cAAJ,EAAI,sBAAJ,WAAV,EAAwB,wBAAxB,E;;QAElB,OAAO,W;MACX,C;KAXA,C;qGAaA,yB;MAAA,uD;MAAA,4F;MAAA,oC;MAAA,gC;MAAA,uC;QAS0B,Q;QAFtB,YAAY,wB;QACZ,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,uCAA9B,C;QACrB,kBAAkB,sBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,oBAAU,KAAV,EAAiB,iCAAI,KAAJ,EAAjB,EAA6B,wBAA7B,E;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAfA,C;4EAiBA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,sC;QAKoB,Q;QADhB,UAAe,C;QACC,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,YAAO,SAAS,oBAAT,CAAP,I;;QAEJ,OAAO,G;MACX,C;KATA,C;wFAWA,yB;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,sC;QAKoB,Q;QADhB,UAAkB,G;QACF,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,OAAO,SAAS,oBAAT,C;;QAEX,OAAO,G;MACX,C;KATA,C;;MAsBI,OAAO,sBAAS,IAAT,EAAe,IAAf,EAAsC,IAAtC,C;IACX,C;;MAkBI,OAAO,sBAAS,IAAT,EAAe,IAAf,EAAsC,IAAtC,EAAwD,SAAxD,C;IACX,C;;MAamC,OAAA,EAAG,W;IAAW,C;;MAA7C,OAAO,6BAAgB,IAAhB,EAAsB,sBAAtB,C;IACX,C;;MAkBI,OAAO,8BAAiB,IAAjB,EAAuB,IAAvB,EAA8C,IAA9C,EAAgE,SAAhE,C;IACX,C;oFAEA,yB;MAAA,yD;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,6B;MAAA,uC;QAQoB,Q;QAFhB,YAAY,oB;QACZ,aAAa,oB;QACG,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,IAAI,UAAU,oBAAV,CAAJ,C;YACI,KAAM,gBAAO,OAAP,C;;;YAEN,MAAO,gBAAO,OAAP,C;;;QAGf,OAAO,cAAK,KAAL,EAAY,MAAZ,C;MACX,C;KAhBA,C;oFAkBA,yB;MAAA,yD;MAAA,6C;MAAA,oC;MAAA,gC;MAAA,6B;MAAA,uC;QAQoB,Q;QAFhB,YAAY,oB;QACZ,aAAa,oB;QACG,0B;QAAhB,OAAgB,cAAhB,C;UAAgB,oC;UACZ,IAAI,UAAU,oBAAV,CAAJ,C;YACI,KAAM,gBAAO,OAAP,C;;;YAEN,MAAO,gBAAO,OAAP,C;;;QAGf,OAAO,cAAK,KAAM,WAAX,EAAuB,MAAO,WAA9B,C;MACX,C;KAhBA,C;;MAmCkD,OAAA,EAAG,W;IAAW,C;;MADpB,oB;QAAA,OAAY,C;MAAG,8B;QAAA,iBAA0B,K;MACjF,OAAO,sBAAS,IAAT,EAAe,IAAf,EAAqB,cAArB,EAAqC,eAArC,C;IACX,C;;MAoBgD,oB;QAAA,OAAY,C;MAAG,8B;QAAA,iBAA0B,K;MAOhE,Q;MANrB,oBAAoB,IAApB,EAA0B,IAA1B,C;MACA,eAAe,SAAK,O;MACpB,aAAa,iBAAa,CAAC,WAAW,IAAX,GAAkB,CAAlB,IAAD,IAAwB,IAAxB,IAAb,C;MACb,YAAY,C;MACZ,OAAO,QAAQ,QAAf,C;QACI,UAAU,QAAQ,IAAR,I;QACO,IAAI,MAAM,QAAV,C;UAAsB,IAAI,cAAJ,C;YAAoB,e;;YAAc,K;;;UAAa,U;QAAtF,qB;QACA,MAAO,WAAI,UAAU,8BAAY,KAAZ,EAAmB,UAAnB,CAAV,CAAJ,C;QACP,gBAAS,IAAT,I;;MAEJ,OAAO,M;IACX,C;;MAmB0D,OAAA,EAAG,W;IAAW,C;;MADpB,oB;QAAA,OAAY,C;MAAG,8B;QAAA,iBAA0B,K;MACzF,OAAO,8BAAiB,IAAjB,EAAuB,IAAvB,EAA6B,cAA7B,EAA6C,uBAA7C,C;IACX,C;;MAuBoC,wB;QAAW,yBAAU,0CAAY,KAAZ,EAAkC,eAAd,QAAQ,YAAR,IAAc,EAAa,4BAAb,CAAlC,CAAV,C;MAAX,C;IAAA,C;;MAHoB,sB;QAAA,SAAY,C;MAAG,8B;QAAA,iBAA0B,K;MAC7F,oBAAoB,IAApB,EAA0B,MAA1B,C;MACA,cAAc,KAAK,cAAJ,GAAoB,yBAApB,GAAiC,WAAQ,mBAAS,IAAT,GAAgB,CAAhB,IAAR,CAAlC,EAAkE,MAAlE,C;MACd,OAA4B,OAAb,aAAR,OAAQ,CAAa,EAAI,qDAAJ,C;IAChC,C;;MAoBI,aV/uCO,MAAK,KU+uCY,gBV/uCZ,EUouCD,KAW2B,OV/uC1B,C;MUgvCZ,WAAW,iBAAa,MAAb,C;MACX,aAAU,CAAV,MAAkB,MAAlB,M;QACI,IAAK,WAdqB,GAcP,iCAAK,CAAL,EAdO,EAcE,YAdrB,KAcqB,YAAM,CAAN,EAdF,CAcrB,C;;MAdT,OAgBO,I;IAfX,C;wEAEA,yB;MAAA,gE;MAAA,oC;MV9uCA,iB;MU8uCA,8C;QAQI,aV/uCO,MAAK,KU+uCO,SAAK,OV/uCZ,EU+uCoB,KAAM,OV/uC1B,C;QUgvCZ,WAAW,eAAa,MAAb,C;QACX,aAAU,CAAV,MAAkB,MAAlB,M;UACI,IAAK,WAAI,UAAU,iCAAK,CAAL,EAAV,EAAmB,6BAAM,CAAN,EAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAdA,C;;MAyBW,sB;;QAaP,WAAW,mBAAS,CAAT,I;QACX,IAAI,OAAO,CAAX,C;UAAc,qBAAO,W;UAAP,uB;;QACd,aAAa,iBAAa,IAAb,C;QACb,iBAAc,CAAd,UAAsB,IAAtB,U;UACI,MAAO,WAjBkB,GAiBJ,iCAAK,KAAL,EAjBI,EAiBS,iCAAK,QAAQ,CAAR,IAAL,EAjBT,CAiBlB,C;;QAEX,qBAAO,M;;;MAnBP,yB;IACJ,C;uFAEA,yB;MAAA,qD;MAAA,gE;MAAA,oC;MAAA,uC;QAUI,WAAW,mBAAS,CAAT,I;QACX,IAAI,OAAO,CAAX,C;UAAc,OAAO,W;QACrB,aAAa,eAAa,IAAb,C;QACb,iBAAc,CAAd,UAAsB,IAAtB,U;UACI,MAAO,WAAI,UAAU,iCAAK,KAAL,EAAV,EAAuB,iCAAK,QAAQ,CAAR,IAAL,EAAvB,CAAJ,C;;QAEX,OAAO,M;MACX,C;KAjBA,C;;MAwBoB,mB;QAAE,OAAK,WAAL,eAAK,C;MAAP,C;IAAA,C;;MADZ,wC;MAAA,S;QAAkB,OC1uC0B,qBAAU,C;;MD0uC1D,S;QAAiC,OAAO,W;MACxC,oCAAgB,8BAAhB,C;IACJ,C;;MAOoB,mB;QAAE,OAAK,WAAL,eAAK,C;MAAP,C;IAAA,C;;MADZ,wC;MAAA,S;QAAkB,OClvC0B,qBAAU,C;;MDkvC1D,S;QAAiC,OAAO,e;MACxC,oCAAgB,8BAAhB,C;IACJ,C;;MGz5CsC,wB;QAAW,OAAA,aAAK,KAAL,C7BqGV,K;M6BrGD,C;IAAA,C;;MCAF,wB;QAAW,OAAA,aAAK,KAAL,C7BiIV,K;M6BjID,C;IAAA,C;;MCAE,wB;QAAW,OAAA,aAAK,KAAL,CC4IV,K;MD5ID,C;IAAA,C;;MEAE,wB;QAAW,OAAA,aAAK,KAAL,C/BgHV,K;M+BhHD,C;IAAA,C;;MCzCpC,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;;MASI,OAAO,sBAAI,CAAJ,C;IACX,C;uGAsCA,yB;MAs8FI,8D;MAt8FJ,iD;QASe,oBAAS,C;QAAT,S;UAAc,gBA67FT,cAAR,iBAAQ,C;;QA77FhB,OAAO,OAAsC,sBAAI,KAAJ,CAAtC,GAAsD,aAAa,KAAb,C;MACjE,C;KAVA,C;uGAYA,yB;MAk8FI,8D;MAl8FJ,iD;QASe,oBAAS,C;QAAT,S;UAAc,gBAy7FT,cAAR,iBAAQ,C;;QAz7FhB,OAAO,OAAsC,sBAAI,KAAJ,CAAtC,GAAsD,aAAa,KAAb,C;MACjE,C;KAVA,C;uGAYA,yB;MA87FI,8D;MA97FJ,iD;QASe,oBAAS,C;QAAT,S;UAAc,gBAq7FT,cAAR,iBAAQ,C;;QAr7FhB,OAAO,OAAsC,sBAAI,KAAJ,CAAtC,GAAsD,aAAa,KAAb,C;MACjE,C;KAVA,C;uGAYA,yB;MA07FI,8D;MA17FJ,iD;QASe,oBAAS,C;QAAT,S;UAAc,gBAi7FT,cAAR,iBAAQ,C;;QAj7FhB,OAAO,OAAsC,sBAAI,KAAJ,CAAtC,GAAsD,aAAa,KAAb,C;MACjE,C;KAVA,C;uGAYA,yB;MAAA,sD;MAAA,mC;QASI,OAAY,UAAL,SAAK,EAAU,KAAV,C;MAChB,C;KAVA,C;uGAYA,yB;MAAA,sD;MAAA,mC;QASI,OAAY,UAAL,SAAK,EAAU,KAAV,C;MAChB,C;KAVA,C;uGAYA,yB;MAAA,sD;MAAA,mC;QASI,OAAY,UAAL,SAAK,EAAU,KAAV,C;MAChB,C;KAVA,C;uGAYA,yB;MAAA,sD;MAAA,mC;QASI,OAAY,UAAL,SAAK,EAAU,KAAV,C;MAChB,C;KAVA,C;;MAmBW,sB;;QAgNS,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAhNH,SAgNO,CAAU,OAAV,CAAJ,C;YAAwB,qBAAO,O;YAAP,uB;;;QAC9C,qBAAO,I;;;MAjNP,yB;IACJ,C;;MASW,sB;;QAiNS,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAjNH,SAiNO,CAAU,OAAV,CAAJ,C;YAAwB,qBAAO,O;YAAP,uB;;;QAC9C,qBAAO,I;;;MAlNP,yB;IACJ,C;;MASW,sB;;QAkNS,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAlNH,SAkNO,CAAU,OAAV,CAAJ,C;YAAwB,qBAAO,O;YAAP,uB;;;QAC9C,qBAAO,I;;;MAnNP,yB;IACJ,C;;MASW,sB;;QAmNS,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAnNH,SAmNO,CAAU,OAAV,CAAJ,C;YAAwB,qBAAO,O;YAAP,uB;;;QAC9C,qBAAO,I;;;MApNP,yB;IACJ,C;yFAEA,yB;MA4kBA,+C;MAktEI,0D;MA9xFJ,uC;QAOW,qB;;UA4kBO,Q;UAAA,OAAa,SA2sEX,YAAR,iBAAQ,CA3sEW,CAAb,W;UAAd,OAAc,cAAd,C;YAAc,uB;YACV,cAAc,sBAAK,KAAL,C;YACd,IA9kBc,SA8kBV,CAAU,OAAV,CAAJ,C;cAAwB,oBAAO,O;cAAP,sB;;;UAE5B,oBAAO,I;;;QAhlBP,wB;MACJ,C;KARA,C;yFAUA,yB;MAglBA,+C;MA4sEI,0D;MA5xFJ,uC;QAOW,qB;;UAglBO,Q;UAAA,OAAa,SAqsEX,YAAR,iBAAQ,CArsEW,CAAb,W;UAAd,OAAc,cAAd,C;YAAc,uB;YACV,cAAc,sBAAK,KAAL,C;YACd,IAllBc,SAklBV,CAAU,OAAV,CAAJ,C;cAAwB,oBAAO,O;cAAP,sB;;;UAE5B,oBAAO,I;;;QAplBP,wB;MACJ,C;KARA,C;yFAUA,yB;MAolBA,+C;MAssEI,0D;MA1xFJ,uC;QAOW,qB;;UAolBO,Q;UAAA,OAAa,SA+rEX,YAAR,iBAAQ,CA/rEW,CAAb,W;UAAd,OAAc,cAAd,C;YAAc,uB;YACV,cAAc,sBAAK,KAAL,C;YACd,IAtlBc,SAslBV,CAAU,OAAV,CAAJ,C;cAAwB,oBAAO,O;cAAP,sB;;;UAE5B,oBAAO,I;;;QAxlBP,wB;MACJ,C;KARA,C;yFAUA,yB;MAwlBA,+C;MAgsEI,0D;MAxxFJ,uC;QAOW,qB;;UAwlBO,Q;UAAA,OAAa,SAyrEX,YAAR,iBAAQ,CAzrEW,CAAb,W;UAAd,OAAc,cAAd,C;YAAc,uB;YACV,cAAc,sBAAK,KAAL,C;YACd,IA1lBc,SA0lBV,CAAU,OAAV,CAAJ,C;cAAwB,oBAAO,O;cAAP,sB;;;UAE5B,oBAAO,I;;;QA5lBP,wB;MACJ,C;KARA,C;mFAUA,yB;MAAA,8C;MjChJA,6B;MiCgJA,4B;QAQI,OjC9ImC,ciC8IpB,MAAR,iBAAQ,CjC9IoB,C;MiC+IvC,C;KATA,C;mFAWA,yB;MAAA,8C;MF5IA,+B;ME4IA,4B;QAQI,OF1IsC,eE0IvB,MAAR,iBAAQ,CF1IuB,C;ME2I1C,C;KATA,C;mFAWA,yB;MAAA,8C;MlCxMA,+B;MkCwMA,4B;QAQI,OlCtMsC,ekCsMvB,MAAR,iBAAQ,ClCtMuB,C;MkCuM1C,C;KATA,C;mFAWA,yB;MAAA,8C;MhCtMA,iC;MgCsMA,4B;QAQI,OhCpMyC,gBgCoM1B,MAAR,iBAAQ,ChCpM0B,C;MgCqM7C,C;KATA,C;mFAWA,yB;MAAA,iE;MAAA,uC;QAQoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,OAAO,O;;QACrD,MAAM,gCAAuB,mDAAvB,C;MACV,C;KAVA,C;mFAYA,yB;MAAA,iE;MAAA,uC;QAQoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,OAAO,O;;QACrD,MAAM,gCAAuB,mDAAvB,C;MACV,C;KAVA,C;mFAYA,yB;MAAA,iE;MAAA,uC;QAQoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,OAAO,O;;QACrD,MAAM,gCAAuB,mDAAvB,C;MACV,C;KAVA,C;mFAYA,yB;MAAA,iE;MAAA,uC;QAQoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,OAAO,O;;QACrD,MAAM,gCAAuB,mDAAvB,C;MACV,C;KAVA,C;;MAkBI,OAAW,mBAAJ,GAAe,IAAf,GAAyB,sBAAK,CAAL,C;IACpC,C;;MAQI,OAAW,mBAAJ,GAAe,IAAf,GAAyB,sBAAK,CAAL,C;IACpC,C;;MAQI,OAAW,mBAAJ,GAAe,IAAf,GAAyB,sBAAK,CAAL,C;IACpC,C;;MAQI,OAAW,mBAAJ,GAAe,IAAf,GAAyB,sBAAK,CAAL,C;IACpC,C;;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,O;;MACrD,OAAO,I;IACX,C;;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,O;;MACrD,OAAO,I;IACX,C;;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,O;;MACrD,OAAO,I;IACX,C;;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,O;;MACrD,OAAO,I;IACX,C;2FAEA,yB;MA0mFI,8D;MA1mFJ,iD;QAOe,oBAAS,C;QAAT,S;UAAc,gBAmmFT,cAAR,iBAAQ,C;;QAnmFhB,OAAO,OAAsC,sBAAI,KAAJ,CAAtC,GAAsD,aAAa,KAAb,C;MACjE,C;KARA,C;2FAUA,yB;MAwmFI,8D;MAxmFJ,iD;QAOe,oBAAS,C;QAAT,S;UAAc,gBAimFT,cAAR,iBAAQ,C;;QAjmFhB,OAAO,OAAsC,sBAAI,KAAJ,CAAtC,GAAsD,aAAa,KAAb,C;MACjE,C;KARA,C;2FAUA,yB;MAsmFI,8D;MAtmFJ,iD;QAOe,oBAAS,C;QAAT,S;UAAc,gBA+lFT,cAAR,iBAAQ,C;;QA/lFhB,OAAO,OAAsC,sBAAI,KAAJ,CAAtC,GAAsD,aAAa,KAAb,C;MACjE,C;KARA,C;2FAUA,yB;MAomFI,8D;MApmFJ,iD;QAOe,oBAAS,C;QAAT,S;UAAc,gBA6lFT,cAAR,iBAAQ,C;;QA7lFhB,OAAO,OAAsC,sBAAI,KAAJ,CAAtC,GAAsD,aAAa,KAAb,C;MACjE,C;KARA,C;;MAgBe,oBAAS,C;MAAT,S;QAAc,gBA4jFT,gBAAR,iBAAQ,C;;MA5jFhB,OAAO,OAAsC,sBAAI,KAAJ,CAAtC,GAAsD,I;IACjE,C;;MAQe,oBAAS,C;MAAT,S;QAAc,gBA2jFT,gBAAR,iBAAQ,C;;MA3jFhB,OAAO,OAAsC,sBAAI,KAAJ,CAAtC,GAAsD,I;IACjE,C;;MAQe,oBAAS,C;MAAT,S;QAAc,gBA0jFT,gBAAR,iBAAQ,C;;MA1jFhB,OAAO,OAAsC,sBAAI,KAAJ,CAAtC,GAAsD,I;IACjE,C;;MAQe,oBAAS,C;MAAT,S;QAAc,gBAyjFT,gBAAR,iBAAQ,C;;MAzjFhB,OAAO,OAAsC,sBAAI,KAAJ,CAAtC,GAAsD,I;IACjE,C;uFAEA,yB;MAAA,kD;MAAA,qC;QAOI,OAAe,QAAR,iBAAQ,EAAQ,OjC1eU,KiC0elB,C;MACnB,C;KARA,C;uFAUA,yB;MAAA,kD;MAAA,qC;QAOI,OAAe,QAAR,iBAAQ,EAAQ,OFzeY,KEyepB,C;MACnB,C;KARA,C;uFAUA,yB;MAAA,kD;MAAA,qC;QAOI,OAAe,QAAR,iBAAQ,EAAQ,OlC1hBY,KkC0hBpB,C;MACnB,C;KARA,C;uFAUA,yB;MAAA,kD;MAAA,qC;QAOI,OAAe,QAAR,iBAAQ,EAAQ,OhCzhBc,KgCyhBtB,C;MACnB,C;KARA,C;iGAUA,yB;MAAA,sC;MjChbA,6B;MiCgbA,0BAOgC,yB;QjCvbhC,6B;;UiCubgC,qB;YAAE,yBjC7aK,ciC6aK,EjC7aL,CiC6aL,C;UAAF,C;QAAA,C;OAAA,C;MAPhC,uC;QAOmB,kBAAR,iB;QAAQ,uB;;UpC2rBf,0D;YACI,IoC5rB0B,UjC7aK,cHymCjB,YAAK,KAAL,CGzmCiB,CiC6aL,CpC4rB1B,C;cACI,sBAAO,K;cAAP,wB;;;UAGR,sBAAO,E;;;QoChsBP,0B;MACJ,C;KARA,C;iGAUA,yB;MAAA,sC;MF3aA,+B;ME2aA,0BAOgC,yB;QFlbhC,+B;;UEkbgC,qB;YAAE,yBFxaQ,eEwaE,EFxaF,CEwaR,C;UAAF,C;QAAA,C;OAAA,C;MAPhC,uC;QAOmB,kBAAR,iB;QAAQ,uB;;UpC6rBf,0D;YACI,IoC9rB0B,UFxaQ,elCsmCpB,YAAK,KAAL,CkCtmCoB,CEwaR,CpC8rB1B,C;cACI,sBAAO,K;cAAP,wB;;;UAGR,sBAAO,E;;;QoClsBP,0B;MACJ,C;KARA,C;iGAUA,yB;MAAA,sC;MlCteA,+B;MkCseA,0BAOgC,yB;QlC7ehC,+B;;UkC6egC,qB;YAAE,yBlCneQ,ekCmeE,ElCneF,CkCmeR,C;UAAF,C;QAAA,C;OAAA,C;MAPhC,uC;QAOmB,kBAAR,iB;QAAQ,uB;;UpC+oBf,0D;YACI,IoChpB0B,UlCneQ,eFmnCpB,YAAK,KAAL,CEnnCoB,CkCmeR,CpCgpB1B,C;cACI,sBAAO,K;cAAP,wB;;;UAGR,sBAAO,E;;;QoCppBP,0B;MACJ,C;KARA,C;iGAUA,yB;MAAA,sC;MhCneA,iC;MgCmeA,0BAOgC,yB;QhC1ehC,iC;;UgC0egC,qB;YAAE,yBhCheW,gBgCgeD,EhCheC,CgCgeX,C;UAAF,C;QAAA,C;OAAA,C;MAPhC,uC;QAOmB,kBAAR,iB;QAAQ,uB;;UpCipBf,0D;YACI,IoClpB0B,UhCheW,gBJknCvB,YAAK,KAAL,CIlnCuB,CgCgeX,CpCkpB1B,C;cACI,sBAAO,K;cAAP,wB;;;UAGR,sBAAO,E;;;QoCtpBP,0B;MACJ,C;KARA,C;+FAUA,yB;MAAA,sC;MpCkwBA,0D;MAAA,+C;MG1tCA,6B;MiCwdA,yBAO+B,yB;QjC/d/B,6B;;UiC+d+B,qB;YAAE,yBjCrdM,ciCqdI,EjCrdJ,CiCqdN,C;UAAF,C;QAAA,C;OAAA,C;MAP/B,uC;QAOmB,kBAAR,iB;QAAQ,sB;;UpC+vBD,Q;UAAA,OAAQ,SAAR,wBAAQ,CAAR,W;UAAd,OAAc,cAAd,C;YAAc,uB;YACV,IoChwByB,UjCrdM,cHqtCjB,YAAK,KAAL,CGrtCiB,CiCqdN,CpCgwBzB,C;cACI,qBAAO,K;cAAP,uB;;;UAGR,qBAAO,E;;;QoCpwBP,yB;MACJ,C;KARA,C;+FAUA,yB;MAAA,sC;MpCowBA,0D;MAAA,+C;MkCvtCA,+B;MEmdA,yBAO+B,yB;QF1d/B,+B;;UE0d+B,qB;YAAE,yBFhdS,eEgdC,EFhdD,CEgdT,C;UAAF,C;QAAA,C;OAAA,C;MAP/B,uC;QAOmB,kBAAR,iB;QAAQ,sB;;UpCiwBD,Q;UAAA,OAAQ,SAAR,wBAAQ,CAAR,W;UAAd,OAAc,cAAd,C;YAAc,uB;YACV,IoClwByB,UFhdS,elCktCpB,YAAK,KAAL,CkCltCoB,CEgdT,CpCkwBzB,C;cACI,qBAAO,K;cAAP,uB;;;UAGR,qBAAO,E;;;QoCtwBP,yB;MACJ,C;KARA,C;+FAUA,yB;MAAA,sC;MpCstBA,0D;MAAA,+C;MEpuCA,+B;MkC8gBA,yBAO+B,yB;QlCrhB/B,+B;;UkCqhB+B,qB;YAAE,yBlC3gBS,ekC2gBC,ElC3gBD,CkC2gBT,C;UAAF,C;QAAA,C;OAAA,C;MAP/B,uC;QAOmB,kBAAR,iB;QAAQ,sB;;UpCmtBD,Q;UAAA,OAAQ,SAAR,wBAAQ,CAAR,W;UAAd,OAAc,cAAd,C;YAAc,uB;YACV,IoCptByB,UlC3gBS,eF+tCpB,YAAK,KAAL,CE/tCoB,CkC2gBT,CpCotBzB,C;cACI,qBAAO,K;cAAP,uB;;;UAGR,qBAAO,E;;;QoCxtBP,yB;MACJ,C;KARA,C;+FAUA,yB;MAAA,sC;MpCwtBA,0D;MAAA,+C;MInuCA,iC;MgC2gBA,yBAO+B,yB;QhClhB/B,iC;;UgCkhB+B,qB;YAAE,yBhCxgBY,gBgCwgBF,EhCxgBE,CgCwgBZ,C;UAAF,C;QAAA,C;OAAA,C;MAP/B,uC;QAOmB,kBAAR,iB;QAAQ,sB;;UpCqtBD,Q;UAAA,OAAQ,SAAR,wBAAQ,CAAR,W;UAAd,OAAc,cAAd,C;YAAc,uB;YACV,IoCttByB,UhCxgBY,gBJ8tCvB,YAAK,KAAL,CI9tCuB,CgCwgBZ,CpCstBzB,C;cACI,qBAAO,K;cAAP,uB;;;UAGR,qBAAO,E;;;QoC1tBP,yB;MACJ,C;KARA,C;iFAUA,yB;MAAA,4C;MjChgBA,6B;MiCggBA,4B;QAQI,OjC9fmC,ciC8fpB,KAAR,iBAAQ,CjC9foB,C;MiC+fvC,C;KATA,C;iFAWA,yB;MAAA,4C;MF5fA,+B;ME4fA,4B;QAQI,OF1fsC,eE0fvB,KAAR,iBAAQ,CF1fuB,C;ME2f1C,C;KATA,C;iFAWA,yB;MAAA,4C;MlCxjBA,+B;MkCwjBA,4B;QAQI,OlCtjBsC,ekCsjBvB,KAAR,iBAAQ,ClCtjBuB,C;MkCujB1C,C;KATA,C;iFAWA,yB;MAAA,4C;MhCtjBA,iC;MgCsjBA,4B;QAQI,OhCpjByC,gBgCojB1B,KAAR,iBAAQ,ChCpjB0B,C;MgCqjB7C,C;KATA,C;iFAWA,yB;MAAA,+C;MAAA,iE;MA01EI,0D;MA11EJ,uC;QAQkB,Q;QAAA,OAAa,SAk1EX,YAl1EF,SAk1EN,QAAQ,CAl1EW,CAAb,W;QAAd,OAAc,cAAd,C;UAAc,uB;UACV,cAAc,sBAAK,KAAL,C;UACd,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,OAAO,O;;QAEnC,MAAM,gCAAuB,mDAAvB,C;MACV,C;KAbA,C;iFAeA,yB;MAAA,+C;MAAA,iE;MAm1EI,0D;MAn1EJ,uC;QAQkB,Q;QAAA,OAAa,SA20EX,YA30EF,SA20EN,QAAQ,CA30EW,CAAb,W;QAAd,OAAc,cAAd,C;UAAc,uB;UACV,cAAc,sBAAK,KAAL,C;UACd,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,OAAO,O;;QAEnC,MAAM,gCAAuB,mDAAvB,C;MACV,C;KAbA,C;iFAeA,yB;MAAA,+C;MAAA,iE;MA40EI,0D;MA50EJ,uC;QAQkB,Q;QAAA,OAAa,SAo0EX,YAp0EF,SAo0EN,QAAQ,CAp0EW,CAAb,W;QAAd,OAAc,cAAd,C;UAAc,uB;UACV,cAAc,sBAAK,KAAL,C;UACd,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,OAAO,O;;QAEnC,MAAM,gCAAuB,mDAAvB,C;MACV,C;KAbA,C;iFAeA,yB;MAAA,+C;MAAA,iE;MAq0EI,0D;MAr0EJ,uC;QAQkB,Q;QAAA,OAAa,SA6zEX,YA7zEF,SA6zEN,QAAQ,CA7zEW,CAAb,W;QAAd,OAAc,cAAd,C;UAAc,uB;UACV,cAAc,sBAAK,KAAL,C;UACd,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,OAAO,O;;QAEnC,MAAM,gCAAuB,mDAAvB,C;MACV,C;KAbA,C;+FAeA,yB;MAAA,0D;MAAA,qC;QAOI,OAAe,YAAR,iBAAQ,EAAY,OjC1sBM,KiC0sBlB,C;MACnB,C;KARA,C;+FAUA,yB;MAAA,0D;MAAA,qC;QAOI,OAAe,YAAR,iBAAQ,EAAY,OFzsBQ,KEysBpB,C;MACnB,C;KARA,C;+FAUA,yB;MAAA,0D;MAAA,qC;QAOI,OAAe,YAAR,iBAAQ,EAAY,OlC1vBQ,KkC0vBpB,C;MACnB,C;KARA,C;+FAUA,yB;MAAA,0D;MAAA,qC;QAOI,OAAe,YAAR,iBAAQ,EAAY,OhCzvBU,KgCyvBtB,C;MACnB,C;KARA,C;;MAgBI,OAAW,mBAAJ,GAAe,IAAf,GAAyB,sBAAK,iBAAO,CAAP,IAAL,C;IACpC,C;;MAQI,OAAW,mBAAJ,GAAe,IAAf,GAAyB,sBAAK,iBAAO,CAAP,IAAL,C;IACpC,C;;MAQI,OAAW,mBAAJ,GAAe,IAAf,GAAyB,sBAAK,iBAAO,CAAP,IAAL,C;IACpC,C;;MAQI,OAAW,mBAAJ,GAAe,IAAf,GAAyB,sBAAK,iBAAO,CAAP,IAAL,C;IACpC,C;6FAEA,yB;MAAA,+C;MAktEI,0D;MAltEJ,uC;QAOkB,Q;QAAA,OAAa,SA2sEX,YA3sEF,SA2sEN,QAAQ,CA3sEW,CAAb,W;QAAd,OAAc,cAAd,C;UAAc,uB;UACV,cAAc,sBAAK,KAAL,C;UACd,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,OAAO,O;;QAEnC,OAAO,I;MACX,C;KAZA,C;6FAcA,yB;MAAA,+C;MA4sEI,0D;MA5sEJ,uC;QAOkB,Q;QAAA,OAAa,SAqsEX,YArsEF,SAqsEN,QAAQ,CArsEW,CAAb,W;QAAd,OAAc,cAAd,C;UAAc,uB;UACV,cAAc,sBAAK,KAAL,C;UACd,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,OAAO,O;;QAEnC,OAAO,I;MACX,C;KAZA,C;6FAcA,yB;MAAA,+C;MAssEI,0D;MAtsEJ,uC;QAOkB,Q;QAAA,OAAa,SA+rEX,YA/rEF,SA+rEN,QAAQ,CA/rEW,CAAb,W;QAAd,OAAc,cAAd,C;UAAc,uB;UACV,cAAc,sBAAK,KAAL,C;UACd,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,OAAO,O;;QAEnC,OAAO,I;MACX,C;KAZA,C;6FAcA,yB;MAAA,+C;MAgsEI,0D;MAhsEJ,uC;QAOkB,Q;QAAA,OAAa,SAyrEX,YAzrEF,SAyrEN,QAAQ,CAzrEW,CAAb,W;QAAd,OAAc,cAAd,C;UAAc,uB;UACV,cAAc,sBAAK,KAAL,C;UACd,IAAI,UAAU,OAAV,CAAJ,C;YAAwB,OAAO,O;;QAEnC,OAAO,I;MACX,C;KAZA,C;qFAcA,yB;MAAA,mC;MAAA,gD;MAAA,4B;QASI,OAAO,kBAAO,cAAP,C;MACX,C;KAVA,C;qFAYA,yB;MAAA,mC;MAAA,gD;MAAA,4B;QASI,OAAO,kBAAO,cAAP,C;MACX,C;KAVA,C;qFAYA,yB;MAAA,mC;MAAA,gD;MAAA,4B;QASI,OAAO,kBAAO,cAAP,C;MACX,C;KAVA,C;qFAYA,yB;MAAA,mC;MAAA,gD;MAAA,4B;QASI,OAAO,kBAAO,cAAP,C;MACX,C;KAVA,C;;MAoBI,IAAI,mBAAJ,C;QACI,MAAM,2BAAuB,iBAAvB,C;MACV,OAAO,sBAAI,MAAO,iBAAQ,cAAR,CAAX,C;IACX,C;;MAUI,IAAI,mBAAJ,C;QACI,MAAM,2BAAuB,iBAAvB,C;MACV,OAAO,sBAAI,MAAO,iBAAQ,cAAR,CAAX,C;IACX,C;;MAUI,IAAI,mBAAJ,C;QACI,MAAM,2BAAuB,iBAAvB,C;MACV,OAAO,sBAAI,MAAO,iBAAQ,cAAR,CAAX,C;IACX,C;;MAUI,IAAI,mBAAJ,C;QACI,MAAM,2BAAuB,iBAAvB,C;MACV,OAAO,sBAAI,MAAO,iBAAQ,cAAR,CAAX,C;IACX,C;qFAEA,yB;MAAA,gD;MjCh1BA,6B;MiCg1BA,4B;QAOI,OjC70BmC,ciC60BpB,OAAR,iBAAQ,CjC70BoB,C;MiC80BvC,C;KARA,C;qFAUA,yB;MAAA,gD;MF30BA,+B;ME20BA,4B;QAOI,OFx0BsC,eEw0BvB,OAAR,iBAAQ,CFx0BuB,C;MEy0B1C,C;KARA,C;qFAUA,yB;MAAA,gD;MlCt4BA,+B;MkCs4BA,4B;QAOI,OlCn4BsC,ekCm4BvB,OAAR,iBAAQ,ClCn4BuB,C;MkCo4B1C,C;KARA,C;qFAUA,yB;MAAA,gD;MhCn4BA,iC;MgCm4BA,4B;QAOI,OhCh4ByC,gBgCg4B1B,OAAR,iBAAQ,ChCh4B0B,C;MgCi4B7C,C;KARA,C;qFAUA,yB;MAAA,kF;MAAA,iE;MAAA,wB;MAAA,8B;MAAA,uC;QASoB,UAST,M;QAXP,aAAoB,I;QACpB,YAAY,K;QACI,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,UAAU,OAAV,CAAJ,C;YACI,IAAI,KAAJ,C;cAAW,MAAM,8BAAyB,gDAAzB,C;YACjB,SAAS,O;YACT,QAAQ,I;;;QAGhB,IAAI,CAAC,KAAL,C;UAAY,MAAM,gCAAuB,mDAAvB,C;QAElB,OAAO,0D;MACX,C;KAnBA,C;qFAqBA,yB;MAAA,kF;MAAA,iE;MAAA,0B;MAAA,8B;MAAA,uC;QASoB,UAST,M;QAXP,aAAqB,I;QACrB,YAAY,K;QACI,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,UAAU,OAAV,CAAJ,C;YACI,IAAI,KAAJ,C;cAAW,MAAM,8BAAyB,gDAAzB,C;YACjB,SAAS,O;YACT,QAAQ,I;;;QAGhB,IAAI,CAAC,KAAL,C;UAAY,MAAM,gCAAuB,mDAAvB,C;QAElB,OAAO,2D;MACX,C;KAnBA,C;qFAqBA,yB;MAAA,kF;MAAA,iE;MAAA,0B;MAAA,8B;MAAA,uC;QASoB,UAST,M;QAXP,aAAqB,I;QACrB,YAAY,K;QACI,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,UAAU,OAAV,CAAJ,C;YACI,IAAI,KAAJ,C;cAAW,MAAM,8BAAyB,gDAAzB,C;YACjB,SAAS,O;YACT,QAAQ,I;;;QAGhB,IAAI,CAAC,KAAL,C;UAAY,MAAM,gCAAuB,mDAAvB,C;QAElB,OAAO,2D;MACX,C;KAnBA,C;qFAqBA,yB;MAAA,kF;MAAA,iE;MAAA,4B;MAAA,8B;MAAA,uC;QASoB,UAST,M;QAXP,aAAsB,I;QACtB,YAAY,K;QACI,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,UAAU,OAAV,CAAJ,C;YACI,IAAI,KAAJ,C;cAAW,MAAM,8BAAyB,gDAAzB,C;YACjB,SAAS,O;YACT,QAAQ,I;;;QAGhB,IAAI,CAAC,KAAL,C;UAAY,MAAM,gCAAuB,mDAAvB,C;QAElB,OAAO,4D;MACX,C;KAnBA,C;;MA2BI,OAAW,mBAAQ,CAAZ,GAAe,sBAAK,CAAL,CAAf,GAA4B,I;IACvC,C;;MAQI,OAAW,mBAAQ,CAAZ,GAAe,sBAAK,CAAL,CAAf,GAA4B,I;IACvC,C;;MAQI,OAAW,mBAAQ,CAAZ,GAAe,sBAAK,CAAL,CAAf,GAA4B,I;IACvC,C;;MAQI,OAAW,mBAAQ,CAAZ,GAAe,sBAAK,CAAL,CAAf,GAA4B,I;IACvC,C;;MAWoB,Q;MAFhB,aAAoB,I;MACpB,YAAY,K;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,UAAU,OAAV,CAAJ,C;UACI,IAAI,KAAJ,C;YAAW,OAAO,I;UAClB,SAAS,O;UACT,QAAQ,I;;;MAGhB,IAAI,CAAC,KAAL,C;QAAY,OAAO,I;MACnB,OAAO,M;IACX,C;;MAWoB,Q;MAFhB,aAAqB,I;MACrB,YAAY,K;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,UAAU,OAAV,CAAJ,C;UACI,IAAI,KAAJ,C;YAAW,OAAO,I;UAClB,SAAS,O;UACT,QAAQ,I;;;MAGhB,IAAI,CAAC,KAAL,C;QAAY,OAAO,I;MACnB,OAAO,M;IACX,C;;MAWoB,Q;MAFhB,aAAqB,I;MACrB,YAAY,K;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,UAAU,OAAV,CAAJ,C;UACI,IAAI,KAAJ,C;YAAW,OAAO,I;UAClB,SAAS,O;UACT,QAAQ,I;;;MAGhB,IAAI,CAAC,KAAL,C;QAAY,OAAO,I;MACnB,OAAO,M;IACX,C;;MAWoB,Q;MAFhB,aAAsB,I;MACtB,YAAY,K;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,UAAU,OAAV,CAAJ,C;UACI,IAAI,KAAJ,C;YAAW,OAAO,I;UAClB,SAAS,O;UACT,QAAQ,I;;;MAGhB,IAAI,CAAC,KAAL,C;QAAY,OAAO,I;MACnB,OAAO,M;IACX,C;;MvB3zCI,IAAI,EuBu0CI,KAAK,CvBv0CT,CAAJ,C;QACI,cuBs0Cc,sD;QvBr0Cd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MuBs0CV,OAAO,uBAAoB,gBAAV,iBAAO,CAAP,IAAU,EAAc,CAAd,CAApB,C;IACX,C;;MvBz0CI,IAAI,EuBq1CI,KAAK,CvBr1CT,CAAJ,C;QACI,cuBo1Cc,sD;QvBn1Cd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MuBo1CV,OAAO,uBAAoB,gBAAV,iBAAO,CAAP,IAAU,EAAc,CAAd,CAApB,C;IACX,C;;MvBv1CI,IAAI,EuBm2CI,KAAK,CvBn2CT,CAAJ,C;QACI,cuBk2Cc,sD;QvBj2Cd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MuBk2CV,OAAO,uBAAoB,gBAAV,iBAAO,CAAP,IAAU,EAAc,CAAd,CAApB,C;IACX,C;;MvBr2CI,IAAI,EuBi3CI,KAAK,CvBj3CT,CAAJ,C;QACI,cuBg3Cc,sD;QvB/2Cd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MuBg3CV,OAAO,uBAAoB,gBAAV,iBAAO,CAAP,IAAU,EAAc,CAAd,CAApB,C;IACX,C;;MvBn3CI,IAAI,EuB+3CI,KAAK,CvB/3CT,CAAJ,C;QACI,cuB83Cc,sD;QvB73Cd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MuB83CV,OAAO,mBAAgB,gBAAV,iBAAO,CAAP,IAAU,EAAc,CAAd,CAAhB,C;IACX,C;;MvBj4CI,IAAI,EuB64CI,KAAK,CvB74CT,CAAJ,C;QACI,cuB44Cc,sD;QvB34Cd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MuB44CV,OAAO,mBAAgB,gBAAV,iBAAO,CAAP,IAAU,EAAc,CAAd,CAAhB,C;IACX,C;;MvB/4CI,IAAI,EuB25CI,KAAK,CvB35CT,CAAJ,C;QACI,cuB05Cc,sD;QvBz5Cd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MuB05CV,OAAO,mBAAgB,gBAAV,iBAAO,CAAP,IAAU,EAAc,CAAd,CAAhB,C;IACX,C;;MvB75CI,IAAI,EuBy6CI,KAAK,CvBz6CT,CAAJ,C;QACI,cuBw6Cc,sD;QvBv6Cd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MuBw6CV,OAAO,mBAAgB,gBAAV,iBAAO,CAAP,IAAU,EAAc,CAAd,CAAhB,C;IACX,C;mGAEA,yB;MAAA,4C;MAAA,qD;MAsvDI,8D;MAtvDJ,uC;QASI,iBA6uDgB,cAAR,iBAAQ,CA7uDhB,WAA+B,CAA/B,U;UACI,IAAI,CAAC,UAAU,sBAAK,KAAL,CAAV,CAAL,C;YACI,OAAO,gBAAK,QAAQ,CAAR,IAAL,C;;;QAGf,OAAO,W;MACX,C;KAfA,C;mGAiBA,yB;MAAA,4C;MAAA,qD;MA6uDI,8D;MA7uDJ,uC;QASI,iBAouDgB,cAAR,iBAAQ,CApuDhB,WAA+B,CAA/B,U;UACI,IAAI,CAAC,UAAU,sBAAK,KAAL,CAAV,CAAL,C;YACI,OAAO,gBAAK,QAAQ,CAAR,IAAL,C;;;QAGf,OAAO,W;MACX,C;KAfA,C;mGAiBA,yB;MAAA,4C;MAAA,qD;MAouDI,8D;MApuDJ,uC;QASI,iBA2tDgB,cAAR,iBAAQ,CA3tDhB,WAA+B,CAA/B,U;UACI,IAAI,CAAC,UAAU,sBAAK,KAAL,CAAV,CAAL,C;YACI,OAAO,gBAAK,QAAQ,CAAR,IAAL,C;;;QAGf,OAAO,W;MACX,C;KAfA,C;mGAiBA,yB;MAAA,4C;MAAA,qD;MA2tDI,8D;MA3tDJ,uC;QASI,iBAktDgB,cAAR,iBAAQ,CAltDhB,WAA+B,CAA/B,U;UACI,IAAI,CAAC,UAAU,sBAAK,KAAL,CAAV,CAAL,C;YACI,OAAO,gBAAK,QAAQ,CAAR,IAAL,C;;;QAGf,OAAO,W;MACX,C;KAfA,C;2FAiBA,yB;MAAA,+D;MAAA,uC;QAWiB,Q;QAFb,eAAe,K;QACf,WAAW,gB;QACE,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,IAAI,QAAJ,C;YACI,IAAK,WAAI,IAAJ,C;eACJ,IAAI,CAAC,UAAU,IAAV,CAAL,C;YACD,IAAK,WAAI,IAAJ,C;YACL,WAAW,I;;;QAEnB,OAAO,I;MACX,C;KAnBA,C;2FAqBA,yB;MAAA,+D;MAAA,uC;QAWiB,Q;QAFb,eAAe,K;QACf,WAAW,gB;QACE,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,IAAI,QAAJ,C;YACI,IAAK,WAAI,IAAJ,C;eACJ,IAAI,CAAC,UAAU,IAAV,CAAL,C;YACD,IAAK,WAAI,IAAJ,C;YACL,WAAW,I;;;QAEnB,OAAO,I;MACX,C;KAnBA,C;2FAqBA,yB;MAAA,+D;MAAA,uC;QAWiB,Q;QAFb,eAAe,K;QACf,WAAW,gB;QACE,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,IAAI,QAAJ,C;YACI,IAAK,WAAI,IAAJ,C;eACJ,IAAI,CAAC,UAAU,IAAV,CAAL,C;YACD,IAAK,WAAI,IAAJ,C;YACL,WAAW,I;;;QAEnB,OAAO,I;MACX,C;KAnBA,C;2FAqBA,yB;MAAA,+D;MAAA,uC;QAWiB,Q;QAFb,eAAe,K;QACf,WAAW,gB;QACE,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,IAAI,QAAJ,C;YACI,IAAK,WAAI,IAAJ,C;eACJ,IAAI,CAAC,UAAU,IAAV,CAAL,C;YACD,IAAK,WAAI,IAAJ,C;YACL,WAAW,I;;;QAEnB,OAAO,I;MACX,C;KAnBA,C;qFAqBA,yB;MAAA,+D;MAAA,uC;QAOW,kBAAS,gB;QAwOA,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAxOa,SAwOT,CAAU,OAAV,CAAJ,C;YAAwB,WAAY,WAAI,OAAJ,C;;QAxO1D,OAyOO,W;MAxOX,C;KARA,C;qFAUA,yB;MAAA,+D;MAAA,uC;QAOW,kBAAS,gB;QAyOA,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAzOc,SAyOV,CAAU,OAAV,CAAJ,C;YAAwB,WAAY,WAAI,OAAJ,C;;QAzO1D,OA0OO,W;MAzOX,C;KARA,C;qFAUA,yB;MAAA,+D;MAAA,uC;QAOW,kBAAS,gB;QA0OA,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IA1Oc,SA0OV,CAAU,OAAV,CAAJ,C;YAAwB,WAAY,WAAI,OAAJ,C;;QA1O1D,OA2OO,W;MA1OX,C;KARA,C;qFAUA,yB;MAAA,+D;MAAA,uC;QAOW,kBAAS,gB;QA2OA,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IA3Oe,SA2OX,CAAU,OAAV,CAAJ,C;YAAwB,WAAY,WAAI,OAAJ,C;;QA3O1D,OA4OO,W;MA3OX,C;KARA,C;kGAUA,yB;MAAA,+D;MAAA,uC;QASW,kBAAgB,gB;QA6/FV,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UA58FT,IAjDsC,SAiDlC,EA48FkB,cA58FlB,EA48FkB,sBA58FlB,WA48F2B,IA58F3B,CAAJ,C;YAA2C,sBA48FZ,IA58FY,C;;QAjD/C,OAmDO,W;MAlDX,C;KAVA,C;mGAYA,yB;MAAA,+D;MAAA,uC;QASW,kBAAgB,gB;QA8/FV,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UA18FT,IApDuC,SAoDnC,EA08FkB,cA18FlB,EA08FkB,sBA18FlB,WA08F2B,IA18F3B,CAAJ,C;YAA2C,sBA08FZ,IA18FY,C;;QApD/C,OAsDO,W;MArDX,C;KAVA,C;mGAYA,yB;MAAA,+D;MAAA,uC;QASW,kBAAgB,gB;QA+/FV,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UAx8FT,IAvDuC,SAuDnC,EAw8FkB,cAx8FlB,EAw8FkB,sBAx8FlB,WAw8F2B,IAx8F3B,CAAJ,C;YAA2C,sBAw8FZ,IAx8FY,C;;QAvD/C,OAyDO,W;MAxDX,C;KAVA,C;mGAYA,yB;MAAA,+D;MAAA,uC;QASW,kBAAgB,gB;QAggGV,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UAt8FT,IA1DwC,SA0DpC,EAs8FkB,cAt8FlB,EAs8FkB,sBAt8FlB,WAs8F2B,IAt8F3B,CAAJ,C;YAA2C,sBAs8FZ,IAt8FY,C;;QA1D/C,OA4DO,W;MA3DX,C;KAVA,C;;MAk+FiB,gB;MADb,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QA58FT,IAAI,WA48FkB,cA58FlB,EA48FkB,sBA58FlB,WA48F2B,IA58F3B,CAAJ,C;UAA2C,sBA48FZ,IA58FY,C;;MAE/C,OAAO,W;IACX,C;;MAs9FiB,gB;MADb,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QA18FT,IAAI,WA08FkB,cA18FlB,EA08FkB,sBA18FlB,WA08F2B,IA18F3B,CAAJ,C;UAA2C,sBA08FZ,IA18FY,C;;MAE/C,OAAO,W;IACX,C;;MAo9FiB,gB;MADb,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QAx8FT,IAAI,WAw8FkB,cAx8FlB,EAw8FkB,sBAx8FlB,WAw8F2B,IAx8F3B,CAAJ,C;UAA2C,sBAw8FZ,IAx8FY,C;;MAE/C,OAAO,W;IACX,C;;MAk9FiB,gB;MADb,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QAt8FT,IAAI,WAs8FkB,cAt8FlB,EAs8FkB,sBAt8FlB,WAs8F2B,IAt8F3B,CAAJ,C;UAA2C,sBAs8FZ,IAt8FY,C;;MAE/C,OAAO,W;IACX,C;2FAEA,yB;MAAA,+D;MAAA,uC;QAOW,kBAAY,gB;QAwCH,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,CAxCY,SAwCX,CAAU,OAAV,CAAL,C;YAAyB,WAAY,WAAI,OAAJ,C;;QAxC3D,OAyCO,W;MAxCX,C;KARA,C;2FAUA,yB;MAAA,+D;MAAA,uC;QAOW,kBAAY,gB;QAyCH,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,CAzCa,SAyCZ,CAAU,OAAV,CAAL,C;YAAyB,WAAY,WAAI,OAAJ,C;;QAzC3D,OA0CO,W;MAzCX,C;KARA,C;2FAUA,yB;MAAA,+D;MAAA,uC;QAOW,kBAAY,gB;QA0CH,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,CA1Ca,SA0CZ,CAAU,OAAV,CAAL,C;YAAyB,WAAY,WAAI,OAAJ,C;;QA1C3D,OA2CO,W;MA1CX,C;KARA,C;2FAUA,yB;MAAA,+D;MAAA,uC;QAOW,kBAAY,gB;QA2CH,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,CA3Cc,SA2Cb,CAAU,OAAV,CAAL,C;YAAyB,WAAY,WAAI,OAAJ,C;;QA3C3D,OA4CO,W;MA3CX,C;KARA,C;;MAiBoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,WAAY,WAAI,OAAJ,C;;MAC3D,OAAO,W;IACX,C;;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,WAAY,WAAI,OAAJ,C;;MAC3D,OAAO,W;IACX,C;;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,WAAY,WAAI,OAAJ,C;;MAC3D,OAAO,W;IACX,C;;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,WAAY,WAAI,OAAJ,C;;MAC3D,OAAO,W;IACX,C;;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,WAAY,WAAI,OAAJ,C;;MAC1D,OAAO,W;IACX,C;;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,WAAY,WAAI,OAAJ,C;;MAC1D,OAAO,W;IACX,C;;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,WAAY,WAAI,OAAJ,C;;MAC1D,OAAO,W;IACX,C;;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,WAAY,WAAI,OAAJ,C;;MAC1D,OAAO,W;IACX,C;;MAQI,IAAI,OAAQ,UAAZ,C;QAAuB,O9BjzDe,W;;M8BkzDtC,OAA4D,SAmvCrD,cAAkB,cAAR,iBAAQ,EAnvCN,OAAQ,MAmvCF,EAnvCS,OAAQ,aAAR,GAAuB,CAAvB,IAmvCT,CAAlB,CAnvCqD,C;IAChE,C;;MAQI,IAAI,OAAQ,UAAZ,C;QAAuB,O9B3zDe,W;;M8B4zDtC,OAA4D,SAsvCrD,eAAmB,cAAR,iBAAQ,EAtvCP,OAAQ,MAsvCD,EAtvCQ,OAAQ,aAAR,GAAuB,CAAvB,IAsvCR,CAAnB,CAtvCqD,C;IAChE,C;;MAQI,IAAI,OAAQ,UAAZ,C;QAAuB,O9Br0De,W;;M8Bs0DtC,OAA4D,UAyvCrD,eAAmB,cAAR,iBAAQ,EAzvCP,OAAQ,MAyvCD,EAzvCQ,OAAQ,aAAR,GAAuB,CAAvB,IAyvCR,CAAnB,CAzvCqD,C;IAChE,C;;MAQI,IAAI,OAAQ,UAAZ,C;QAAuB,O9B/0De,W;;M8Bg1DtC,OAA4D,UA4vCrD,gBAAoB,cAAR,iBAAQ,EA5vCR,OAAQ,MA4vCA,EA5vCO,OAAQ,aAAR,GAAuB,CAAvB,IA4vCP,CAApB,CA5vCqD,C;IAChE,C;;MAWkB,Q;MAHd,WAAmB,wBAAR,OAAQ,EAAwB,EAAxB,C;MACnB,IAAI,SAAQ,CAAZ,C;QAAe,OAAO,W;MACtB,WAAW,iBAAgB,IAAhB,C;MACG,yB;MAAd,OAAc,cAAd,C;QAAc,uB;QACV,IAAK,WAAI,sBAAI,KAAJ,CAAJ,C;;MAET,OAAO,I;IACX,C;;MAWkB,Q;MAHd,WAAmB,wBAAR,OAAQ,EAAwB,EAAxB,C;MACnB,IAAI,SAAQ,CAAZ,C;QAAe,OAAO,W;MACtB,WAAW,iBAAiB,IAAjB,C;MACG,yB;MAAd,OAAc,cAAd,C;QAAc,uB;QACV,IAAK,WAAI,sBAAI,KAAJ,CAAJ,C;;MAET,OAAO,I;IACX,C;;MAWkB,Q;MAHd,WAAmB,wBAAR,OAAQ,EAAwB,EAAxB,C;MACnB,IAAI,SAAQ,CAAZ,C;QAAe,OAAO,W;MACtB,WAAW,iBAAiB,IAAjB,C;MACG,yB;MAAd,OAAc,cAAd,C;QAAc,uB;QACV,IAAK,WAAI,sBAAI,KAAJ,CAAJ,C;;MAET,OAAO,I;IACX,C;;MAWkB,Q;MAHd,WAAmB,wBAAR,OAAQ,EAAwB,EAAxB,C;MACnB,IAAI,SAAQ,CAAZ,C;QAAe,OAAO,W;MACtB,WAAW,iBAAkB,IAAlB,C;MACG,yB;MAAd,OAAc,cAAd,C;QAAc,uB;QACV,IAAK,WAAI,sBAAI,KAAJ,CAAJ,C;;MAET,OAAO,I;IACX,C;;MAQI,OAAO,cAAkB,aAAR,iBAAQ,EAAW,OAAX,CAAlB,C;IACX,C;;MAQI,OAAO,eAAmB,aAAR,iBAAQ,EAAW,OAAX,CAAnB,C;IACX,C;;MAQI,OAAO,eAAmB,aAAR,iBAAQ,EAAW,OAAX,CAAnB,C;IACX,C;;MAQI,OAAO,gBAAoB,aAAR,iBAAQ,EAAW,OAAX,CAApB,C;IACX,C;;MAQI,OAAO,cAAkB,cAAR,iBAAQ,EAAW,OAAX,CAAlB,C;IACX,C;;MAQI,OAAO,eAAmB,cAAR,iBAAQ,EAAW,OAAX,CAAnB,C;IACX,C;;MAQI,OAAO,eAAmB,aAAR,iBAAQ,EAAW,OAAX,CAAnB,C;IACX,C;;MAQI,OAAO,gBAAoB,cAAR,iBAAQ,EAAW,OAAX,CAApB,C;IACX,C;;MAkBiB,UACL,M;MvBthER,IAAI,EuB+gEI,KAAK,CvB/gET,CAAJ,C;QACI,cuB8gEc,sD;QvB7gEd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MuB8gEV,IAAI,MAAK,CAAT,C;QAAY,OAAO,W;MACnB,IAAI,KAAK,cAAT,C;QAAe,OAAO,mB;MACtB,IAAI,MAAK,CAAT,C;QAAY,OAAO,OAAO,sBAAK,CAAL,CAAP,C;MACnB,YAAY,C;MACZ,WAAW,iBAAgB,CAAhB,C;MACE,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,IAAI,qDAAW,CAAf,C;UACI,K;QACJ,IAAK,WAAI,IAAJ,C;;MAET,OAAO,I;IACX,C;;MAkBiB,UACL,M;MvB9iER,IAAI,EuBuiEI,KAAK,CvBviET,CAAJ,C;QACI,cuBsiEc,sD;QvBriEd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MuBsiEV,IAAI,MAAK,CAAT,C;QAAY,OAAO,W;MACnB,IAAI,KAAK,cAAT,C;QAAe,OAAO,mB;MACtB,IAAI,MAAK,CAAT,C;QAAY,OAAO,OAAO,sBAAK,CAAL,CAAP,C;MACnB,YAAY,C;MACZ,WAAW,iBAAiB,CAAjB,C;MACE,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,IAAI,qDAAW,CAAf,C;UACI,K;QACJ,IAAK,WAAI,IAAJ,C;;MAET,OAAO,I;IACX,C;;MAkBiB,UACL,M;MvBtkER,IAAI,EuB+jEI,KAAK,CvB/jET,CAAJ,C;QACI,cuB8jEc,sD;QvB7jEd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MuB8jEV,IAAI,MAAK,CAAT,C;QAAY,OAAO,W;MACnB,IAAI,KAAK,cAAT,C;QAAe,OAAO,mB;MACtB,IAAI,MAAK,CAAT,C;QAAY,OAAO,OAAO,sBAAK,CAAL,CAAP,C;MACnB,YAAY,C;MACZ,WAAW,iBAAiB,CAAjB,C;MACE,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,IAAI,qDAAW,CAAf,C;UACI,K;QACJ,IAAK,WAAI,IAAJ,C;;MAET,OAAO,I;IACX,C;;MAkBiB,UACL,M;MvB9lER,IAAI,EuBulEI,KAAK,CvBvlET,CAAJ,C;QACI,cuBslEc,sD;QvBrlEd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MuBslEV,IAAI,MAAK,CAAT,C;QAAY,OAAO,W;MACnB,IAAI,KAAK,cAAT,C;QAAe,OAAO,mB;MACtB,IAAI,MAAK,CAAT,C;QAAY,OAAO,OAAO,sBAAK,CAAL,CAAP,C;MACnB,YAAY,C;MACZ,WAAW,iBAAkB,CAAlB,C;MACE,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,IAAI,qDAAW,CAAf,C;UACI,K;QACJ,IAAK,WAAI,IAAJ,C;;MAET,OAAO,I;IACX,C;;MvBnmEI,IAAI,EuB+mEI,KAAK,CvB/mET,CAAJ,C;QACI,cuB8mEc,sD;QvB7mEd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MuB8mEV,IAAI,MAAK,CAAT,C;QAAY,OAAO,W;MACnB,WAAW,c;MACX,IAAI,KAAK,IAAT,C;QAAe,OAAO,mB;MACtB,IAAI,MAAK,CAAT,C;QAAY,OAAO,OAAO,sBAAK,OAAO,CAAP,IAAL,CAAP,C;MACnB,WAAW,iBAAgB,CAAhB,C;MACX,iBAAc,OAAO,CAAP,IAAd,UAA6B,IAA7B,U;QACI,IAAK,WAAI,sBAAK,KAAL,CAAJ,C;MACT,OAAO,I;IACX,C;;MvBxnEI,IAAI,EuBooEI,KAAK,CvBpoET,CAAJ,C;QACI,cuBmoEc,sD;QvBloEd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MuBmoEV,IAAI,MAAK,CAAT,C;QAAY,OAAO,W;MACnB,WAAW,c;MACX,IAAI,KAAK,IAAT,C;QAAe,OAAO,mB;MACtB,IAAI,MAAK,CAAT,C;QAAY,OAAO,OAAO,sBAAK,OAAO,CAAP,IAAL,CAAP,C;MACnB,WAAW,iBAAiB,CAAjB,C;MACX,iBAAc,OAAO,CAAP,IAAd,UAA6B,IAA7B,U;QACI,IAAK,WAAI,sBAAK,KAAL,CAAJ,C;MACT,OAAO,I;IACX,C;;MvB7oEI,IAAI,EuBypEI,KAAK,CvBzpET,CAAJ,C;QACI,cuBwpEc,sD;QvBvpEd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MuBwpEV,IAAI,MAAK,CAAT,C;QAAY,OAAO,W;MACnB,WAAW,c;MACX,IAAI,KAAK,IAAT,C;QAAe,OAAO,mB;MACtB,IAAI,MAAK,CAAT,C;QAAY,OAAO,OAAO,sBAAK,OAAO,CAAP,IAAL,CAAP,C;MACnB,WAAW,iBAAiB,CAAjB,C;MACX,iBAAc,OAAO,CAAP,IAAd,UAA6B,IAA7B,U;QACI,IAAK,WAAI,sBAAK,KAAL,CAAJ,C;MACT,OAAO,I;IACX,C;;MvBlqEI,IAAI,EuB8qEI,KAAK,CvB9qET,CAAJ,C;QACI,cuB6qEc,sD;QvB5qEd,MAAM,gCAAyB,OAAQ,WAAjC,C;;MuB6qEV,IAAI,MAAK,CAAT,C;QAAY,OAAO,W;MACnB,WAAW,c;MACX,IAAI,KAAK,IAAT,C;QAAe,OAAO,mB;MACtB,IAAI,MAAK,CAAT,C;QAAY,OAAO,OAAO,sBAAK,OAAO,CAAP,IAAL,CAAP,C;MACnB,WAAW,iBAAkB,CAAlB,C;MACX,iBAAc,OAAO,CAAP,IAAd,UAA6B,IAA7B,U;QACI,IAAK,WAAI,sBAAK,KAAL,CAAJ,C;MACT,OAAO,I;IACX,C;mGAEA,yB;MAAA,4C;MAAA,gD;MA0+BI,8D;MA1+BJ,uC;QASI,iBAi+BgB,cAAR,iBAAQ,CAj+BhB,WAA+B,CAA/B,U;UACI,IAAI,CAAC,UAAU,sBAAK,KAAL,CAAV,CAAL,C;YACI,OAAO,gBAAK,QAAQ,CAAR,IAAL,C;;;QAGf,OAAO,iB;MACX,C;KAfA,C;mGAiBA,yB;MAAA,4C;MAAA,gD;MAi+BI,8D;MAj+BJ,uC;QASI,iBAw9BgB,cAAR,iBAAQ,CAx9BhB,WAA+B,CAA/B,U;UACI,IAAI,CAAC,UAAU,sBAAK,KAAL,CAAV,CAAL,C;YACI,OAAO,gBAAK,QAAQ,CAAR,IAAL,C;;;QAGf,OAAO,iB;MACX,C;KAfA,C;mGAiBA,yB;MAAA,4C;MAAA,gD;MAw9BI,8D;MAx9BJ,uC;QASI,iBA+8BgB,cAAR,iBAAQ,CA/8BhB,WAA+B,CAA/B,U;UACI,IAAI,CAAC,UAAU,sBAAK,KAAL,CAAV,CAAL,C;YACI,OAAO,gBAAK,QAAQ,CAAR,IAAL,C;;;QAGf,OAAO,iB;MACX,C;KAfA,C;mGAiBA,yB;MAAA,4C;MAAA,gD;MA+8BI,8D;MA/8BJ,uC;QASI,iBAs8BgB,cAAR,iBAAQ,CAt8BhB,WAA+B,CAA/B,U;UACI,IAAI,CAAC,UAAU,sBAAK,KAAL,CAAV,CAAL,C;YACI,OAAO,gBAAK,QAAQ,CAAR,IAAL,C;;;QAGf,OAAO,iB;MACX,C;KAfA,C;2FAiBA,yB;MAAA,+D;MAAA,uC;QAUiB,Q;QADb,WAAW,gB;QACE,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,IAAI,CAAC,UAAU,IAAV,CAAL,C;YACI,K;UACJ,IAAK,WAAI,IAAJ,C;;QAET,OAAO,I;MACX,C;KAhBA,C;2FAkBA,yB;MAAA,+D;MAAA,uC;QAUiB,Q;QADb,WAAW,gB;QACE,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,IAAI,CAAC,UAAU,IAAV,CAAL,C;YACI,K;UACJ,IAAK,WAAI,IAAJ,C;;QAET,OAAO,I;MACX,C;KAhBA,C;2FAkBA,yB;MAAA,+D;MAAA,uC;QAUiB,Q;QADb,WAAW,gB;QACE,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,IAAI,CAAC,UAAU,IAAV,CAAL,C;YACI,K;UACJ,IAAK,WAAI,IAAJ,C;;QAET,OAAO,I;MACX,C;KAhBA,C;2FAkBA,yB;MAAA,+D;MAAA,uC;QAUiB,Q;QADb,WAAW,gB;QACE,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,IAAI,CAAC,UAAU,IAAV,CAAL,C;YACI,K;UACJ,IAAK,WAAI,IAAJ,C;;QAET,OAAO,I;MACX,C;KAhBA,C;sFAkBA,yB;MAAA,kD;MAAA,4B;QAOY,QAAR,iBAAQ,C;MACZ,C;KARA,C;sFAUA,yB;MAAA,kD;MAAA,4B;QAOY,QAAR,iBAAQ,C;MACZ,C;KARA,C;uFAUA,yB;MAAA,kD;MAAA,4B;QAOY,QAAR,iBAAQ,C;MACZ,C;KARA,C;uFAUA,yB;MAAA,kD;MAAA,4B;QAOY,QAAR,iBAAQ,C;MACZ,C;KARA,C;;MAgBI,IAAI,mBAAJ,C;QAAe,OAAO,W;MACtB,WAAW,0B;MACN,WAAL,IAAK,C;MACL,OAAO,I;IACX,C;;MAQI,IAAI,mBAAJ,C;QAAe,OAAO,W;MACtB,WAAW,0B;MACN,WAAL,IAAK,C;MACL,OAAO,I;IACX,C;;MAQI,IAAI,mBAAJ,C;QAAe,OAAO,W;MACtB,WAAW,0B;MACN,WAAL,IAAK,C;MACL,OAAO,I;IACX,C;;MAQI,IAAI,mBAAJ,C;QAAe,OAAO,W;MACtB,WAAW,0B;MACN,WAAL,IAAK,C;MACL,OAAO,I;IACX,C;kGAEA,yB;MAAA,8D;MAAA,uC;MAAA,4B;QAOI,OAAO,mBAAkB,cAAR,iBAAQ,CAAlB,C;MACX,C;KARA,C;kGAUA,yB;MAAA,8D;MAAA,yC;MAAA,4B;QAOI,OAAO,oBAAmB,cAAR,iBAAQ,CAAnB,C;MACX,C;KARA,C;mGAUA,yB;MAAA,8D;MAAA,yC;MAAA,4B;QAOI,OAAO,oBAAmB,cAAR,iBAAQ,CAAnB,C;MACX,C;KARA,C;mGAUA,yB;MAAA,8D;MAAA,2C;MAAA,4B;QAOI,OAAO,qBAAoB,cAAR,iBAAQ,CAApB,C;MACX,C;KARA,C;;MAgBI,IAAI,iBAAO,CAAX,C;QACI,iB;QAhII,UAAR,iBAAQ,C;;IAmIZ,C;;MAQI,IAAI,iBAAO,CAAX,C;QACI,iB;QAlII,UAAR,iBAAQ,C;;IAqIZ,C;;MAQI,IAAI,iBAAO,CAAX,C;QACI,iB;QApII,UAAR,iBAAQ,C;;IAuIZ,C;;MAQI,IAAI,iBAAO,CAAX,C;QACI,iB;QAtII,UAAR,iBAAQ,C;;IAyIZ,C;;MAQoB,kBA+eT,cAAU,iBtBnwEO,QsBmwEjB,C;MA/eiB,mB;MAAxB,OAAiC,SnB38E1B,WmB28E0B,C;IACrC,C;;MAQoB,kBAkfT,eAAmB,UAAR,iBAAQ,CAAnB,C;MAlfiB,mB;MAAxB,OAAiC,SnBp9E1B,WmBo9E0B,C;IACrC,C;;MAQoB,kBAqfT,eAAW,iBtB/yEM,QsB+yEjB,C;MArfiB,mB;MAAxB,OAAiC,UnB79E1B,WmB69E0B,C;IACrC,C;;MAQoB,kBAwfT,gBAAY,iBtBjzEK,QsBizEjB,C;MAxfiB,mB;MAAxB,OAAiC,UnBt+E1B,WmBs+E0B,C;IACrC,C;;MAQI,IAAI,mBAAJ,C;QAAe,OAAO,S;MACD,kBA0cd,cA1cA,SA0cU,QtBnwEO,QsBmwEjB,C;MA1csB,mB;MAA7B,OnBh/EO,W;ImBi/EX,C;;MAQI,IAAI,mBAAJ,C;QAAe,OAAO,S;MACD,kBA4cd,eAAmB,UA5cnB,SA4cW,QAAQ,CAAnB,C;MA5csB,mB;MAA7B,OnB1/EO,W;ImB2/EX,C;;MAQI,IAAI,mBAAJ,C;QAAe,OAAO,S;MACD,kBA8cd,eA9cA,SA8cW,QtB/yEM,QsB+yEjB,C;MA9csB,mB;MAA7B,OnBpgFO,W;ImBqgFX,C;;MAQI,IAAI,mBAAJ,C;QAAe,OAAO,S;MACD,kBAgdd,gBAhdA,SAgdY,QtBjzEK,QsBizEjB,C;MAhdsB,mB;MAA7B,OnB9gFO,W;ImB+gFX,C;;MAQI,IAAI,mBAAJ,C;QAAe,OAAO,S;MACD,kBAkad,cAlaA,SAkaU,QtBnwEO,QsBmwEjB,C;MAlasB,6B;MAA7B,OnBxhFO,W;ImByhFX,C;;MAQI,IAAI,mBAAJ,C;QAAe,OAAO,S;MACD,kBAoad,eAAmB,UApanB,SAoaW,QAAQ,CAAnB,C;MApasB,6B;MAA7B,OnBliFO,W;ImBmiFX,C;;MAQI,IAAI,mBAAJ,C;QAAe,OAAO,S;MACD,kBAsad,eAtaA,SAsaW,QtB/yEM,QsB+yEjB,C;MAtasB,8B;MAA7B,OnB5iFO,W;ImB6iFX,C;;MAQI,IAAI,mBAAJ,C;QAAe,OAAO,S;MACD,kBAwad,gBAxaA,SAwaY,QtBjzEK,QsBizEjB,C;MAxasB,8B;MAA7B,OnBtjFO,W;ImBujFX,C;;MAUoB,kBAyXT,cAAU,iBtBnwEO,QsBmwEjB,C;MAzXiB,mB;MAAxB,OAAiC,YnBjkF1B,WmBikF0B,C;IACrC,C;;MAUoB,kBA0XT,eAAmB,UAAR,iBAAQ,CAAnB,C;MA1XiB,mB;MAAxB,OAAiC,YnB5kF1B,WmB4kF0B,C;IACrC,C;;MAUoB,kBA2XT,eAAW,iBtB/yEM,QsB+yEjB,C;MA3XiB,mB;MAAxB,OAAiC,YnBvlF1B,WmBulF0B,C;IACrC,C;;MAUoB,kBA4XT,gBAAY,iBtBjzEK,QsBizEjB,C;MA5XiB,mB;MAAxB,OAAiC,YnBlmF1B,WmBkmF0B,C;IACrC,C;;MAUI,OAAO,iB;IACX,C;;MAUI,OAAO,iB;IACX,C;;MAsCI,OAAO,iB;IACX,C;;MAUI,OAAO,iB;IACX,C;8FAEA,yB;MAAA,yC;MAAA,4B;QAQI,OAAO,oBAAW,SAAX,C;MACX,C;KATA,C;4FAWA,yB;MAAA,uC;MAAA,4B;QAQI,OAAO,mBAAU,SAAV,C;MACX,C;KATA,C;8FAWA,yB;MAAA,yC;MAAA,4B;QAQI,OAAO,oBAAW,SAAX,C;MACX,C;KATA,C;gGAWA,yB;MAAA,2C;MAAA,4B;QAQI,OAAO,qBAAY,SAAZ,C;MACX,C;KATA,C;;MAkBI,OAAe,cAAR,iBAAQ,EAAc,KAAM,QAApB,C;IACnB,C;;MASI,OAAe,cAAR,iBAAQ,EAAc,KAAM,QAApB,C;IACnB,C;;MASI,OAAe,cAAR,iBAAQ,EAAc,KAAM,QAApB,C;IACnB,C;;MASI,OAAe,cAAR,iBAAQ,EAAc,KAAM,QAApB,C;IACnB,C;;MAQI,OAAe,gBAAR,iBAAQ,C;IACnB,C;;MAQI,OAAe,gBAAR,iBAAQ,C;IACnB,C;;MAQI,OAAe,gBAAR,iBAAQ,C;IACnB,C;;MAQI,OAAe,gBAAR,iBAAQ,C;IACnB,C;;MAUI,OAAO,0BAAa,IAAb,EAAmB,GAAnB,EAAwB,GAAxB,C;IACX,C;;MAUI,OAAO,0BAAa,IAAb,EAAmB,GAAnB,EAAwB,GAAxB,C;IACX,C;;MAUI,OAAO,0BAAa,IAAb,EAAmB,GAAnB,EAAwB,GAAxB,C;IACX,C;;MAUI,OAAO,0BAAa,IAAb,EAAmB,GAAnB,EAAwB,GAAxB,C;IACX,C;sFAEA,yB;MtB/0EA,8C;MsB+0EA,kF;QAmB6D,iC;UAAA,oBAAyB,C;QAAG,0B;UAAA,aAAkB,C;QAAG,wB;UAAA,WAAgB,c;QtB90E1H,UsB+0EA,iBtB/0EA,EsB+0EiB,WAAY,QtB/0E7B,EsB+0EsC,iBtB/0EtC,EsB+0EyD,UtB/0EzD,EsB+0EqE,QtB/0ErE,C;QsBg1EA,OAAO,W;MACX,C;KAtBA,C;wFAwBA,yB;MtB/0EA,8C;MsB+0EA,kF;QAmB+D,iC;UAAA,oBAAyB,C;QAAG,0B;UAAA,aAAkB,C;QAAG,wB;UAAA,WAAgB,c;QtB90E5H,UsB+0EA,iBtB/0EA,EsB+0EiB,WAAY,QtB/0E7B,EsB+0EsC,iBtB/0EtC,EsB+0EyD,UtB/0EzD,EsB+0EqE,QtB/0ErE,C;QsBg1EA,OAAO,W;MACX,C;KAtBA,C;wFAwBA,yB;MtB/6EA,8C;MsB+6EA,kF;QAmB+D,iC;UAAA,oBAAyB,C;QAAG,0B;UAAA,aAAkB,C;QAAG,wB;UAAA,WAAgB,c;QtB96E5H,UsB+6EA,iBtB/6EA,EsB+6EiB,WAAY,QtB/6E7B,EsB+6EsC,iBtB/6EtC,EsB+6EyD,UtB/6EzD,EsB+6EqE,QtB/6ErE,C;QsBg7EA,OAAO,W;MACX,C;KAtBA,C;wFAwBA,yB;MtB/6EA,8C;MsB+6EA,kF;QAmBiE,iC;UAAA,oBAAyB,C;QAAG,0B;UAAA,aAAkB,C;QAAG,wB;UAAA,WAAgB,c;QtB96E9H,UsB+6EA,iBtB/6EA,EsB+6EiB,WAAY,QtB/6E7B,EsB+6EsC,iBtB/6EtC,EsB+6EyD,UtB/6EzD,EsB+6EqE,QtB/6ErE,C;QsBg7EA,OAAO,W;MACX,C;KAtBA,C;kFAwBA,yB;MAAA,uC;MAAA,4B;QASI,OAAO,mBAAU,iBtBnwEO,QsBmwEjB,C;MACX,C;KAVA,C;oFAYA,yB;MAAA,gD;MAAA,yC;MAAA,4B;QASI,OAAO,oBAAmB,OAAR,iBAAQ,CAAnB,C;MACX,C;KAVA,C;oFAYA,yB;MAAA,yC;MAAA,4B;QASI,OAAO,oBAAW,iBtB/yEM,QsB+yEjB,C;MACX,C;KAVA,C;oFAYA,yB;MAAA,2C;MAAA,4B;QASI,OAAO,qBAAY,iBtBjzEK,QsBizEjB,C;MACX,C;KAVA,C;oFAYA,yB;MAAA,gD;MAAA,uC;MAAA,qC;QAWI,OAAO,mBAAkB,OAAR,iBAAQ,EAAO,OAAP,CAAlB,C;MACX,C;KAZA,C;oFAcA,yB;MAAA,gD;MAAA,yC;MAAA,qC;QAWI,OAAO,oBAAmB,OAAR,iBAAQ,EAAO,OAAP,CAAnB,C;MACX,C;KAZA,C;oFAcA,yB;MAAA,+C;MAAA,yC;MAAA,qC;QAWI,OAAO,oBAAmB,OAAR,iBAAQ,EAAO,OAAP,CAAnB,C;MACX,C;KAZA,C;oFAcA,yB;MAAA,gD;MAAA,2C;MAAA,qC;QAWI,OAAO,qBAAoB,OAAR,iBAAQ,EAAO,OAAP,CAApB,C;MACX,C;KAZA,C;4FAcA,yB;MAAA,0D;MAAA,uC;MAAA,gD;QAUI,OAAO,mBAAkB,YAAR,iBAAQ,EAAY,SAAZ,EAAuB,OAAvB,CAAlB,C;MACX,C;KAXA,C;8FAaA,yB;MAAA,0D;MAAA,yC;MAAA,gD;QAUI,OAAO,oBAAmB,YAAR,iBAAQ,EAAY,SAAZ,EAAuB,OAAvB,CAAnB,C;MACX,C;KAXA,C;8FAaA,yB;MAAA,0D;MAAA,yC;MAAA,gD;QAUI,OAAO,oBAAmB,YAAR,iBAAQ,EAAY,SAAZ,EAAuB,OAAvB,CAAnB,C;MACX,C;KAXA,C;6FAaA,yB;MAAA,0D;MAAA,2C;MAAA,gD;QAUI,OAAO,qBAAoB,YAAR,iBAAQ,EAAY,SAAZ,EAAuB,OAAvB,CAApB,C;MACX,C;KAXA,C;8FAmBI,yB;MAAA,0D;MAAA,4B;QAAQ,OAAQ,YAAR,iBAAQ,C;MAAR,C;KAAR,C;8FAQA,yB;MAAA,0D;MAAA,4B;QAAQ,OAAQ,YAAR,iBAAQ,C;MAAR,C;KAAR,C;+FAQA,yB;MAAA,0D;MAAA,4B;QAAQ,OAAQ,YAAR,iBAAQ,C;MAAR,C;KAAR,C;+FAQA,yB;MAAA,0D;MAAA,4B;QAAQ,OAAQ,YAAR,iBAAQ,C;MAAR,C;KAAR,C;kGAQA,yB;MAAA,8D;MAAA,4B;QAAQ,OAAQ,cAAR,iBAAQ,C;MAAR,C;KAAR,C;kGAQA,yB;MAAA,8D;MAAA,4B;QAAQ,OAAQ,cAAR,iBAAQ,C;MAAR,C;KAAR,C;mGAQA,yB;MAAA,8D;MAAA,4B;QAAQ,OAAQ,cAAR,iBAAQ,C;MAAR,C;KAAR,C;mGAQA,yB;MAAA,8D;MAAA,4B;QAAQ,OAAQ,cAAR,iBAAQ,C;MAAR,C;KAAR,C;iFAEJ,yB;MAAA,uC;MtBjiEA,iD;MsBiiEA,qC;QAOqB,4B;QAAA,gBAAU,OjCliGM,K;QiCkiGjC,OAAO,mBtBniEA,2BAxIK,gBAAW,SAAX,EAwIL,CsBmiEA,C;MACX,C;KARA,C;iFAUA,yB;MAAA,yC;MtBniEA,iD;MsBmiEA,qC;QAOI,OAAO,oBtBriEA,qBsBqiEW,iBtBriEX,EAxIK,mBsB6qEgB,OFjiGO,KpBo3BvB,CAwIL,CsBqiEA,C;MACX,C;KARA,C;iFAUA,yB;MAAA,yC;MtBrkEA,iD;MsBqkEA,qC;QAOsB,4B;QAAA,gBAAU,OlCllGO,K;QkCklGnC,OAAO,oBtBvkEA,2BAxIK,eAAY,SAAZ,EAwIL,CsBukEA,C;MACX,C;KARA,C;iFAUA,yB;MAAA,2C;MtBvkEA,iD;MsBukEA,qC;QAOuB,4B;QAAA,gBAAU,OhCjlGQ,K;QgCilGrC,OAAO,qBtBzkEA,2BAxIK,gBAAa,SAAb,EAwIL,CsBykEA,C;MACX,C;KARA,C;;MAkBoB,UAAiB,M;MAFjC,YAAY,c;MACZ,aAAqB,UAAR,iBAAQ,EAAO,iBAAO,QAAS,KAAhB,IAAP,C;MACL,0B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAU,OAAO,cAAP,EAAO,sBAAP,YAAkB,OjC3kGX,K;;MiC4kGjC,OAAO,cAAU,MAAV,C;IACX,C;;MAUoB,UAAiB,M;MAFjC,YAAY,c;MACZ,aAAqB,UAAR,iBAAQ,EAAO,iBAAO,QAAS,KAAhB,IAAP,C;MACL,0B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAU,OAAO,cAAP,EAAO,sBAAP,YAAkB,OF5kGT,K;;ME6kGnC,OAAO,eAAW,MAAX,C;IACX,C;;MAUoB,UAAiB,M;MAFjC,YAAY,c;MACZ,aAAqB,UAAR,iBAAQ,EAAO,iBAAO,QAAS,KAAhB,IAAP,C;MACL,0B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAU,OAAO,cAAP,EAAO,sBAAP,YAAkB,OlC/nGT,K;;MkCgoGnC,OAAO,eAAW,MAAX,C;IACX,C;;MAUoB,UAAiB,M;MAFjC,YAAY,c;MACZ,aAAqB,UAAR,iBAAQ,EAAO,iBAAO,QAAS,KAAhB,IAAP,C;MACL,0B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAU,OAAO,cAAP,EAAO,sBAAP,YAAkB,OhChoGP,K;;MgCioGrC,OAAO,gBAAY,MAAZ,C;IACX,C;iFAEA,yB;MAAA,uC;MtBznEA,iD;MsBynEA,sC;QAOI,OAAO,mBtB3nEA,qBsB2nEU,iBtB3nEV,EsB2nEoB,QAAS,QtB3nE7B,CsB2nEA,C;MACX,C;KARA,C;iFAUA,yB;MAAA,yC;MtB3nEA,iD;MsB2nEA,sC;QAOI,OAAO,oBtB7nEA,qBsB6nEW,iBtB7nEX,EsB6nEqB,QAAS,QtB7nE9B,CsB6nEA,C;MACX,C;KARA,C;iFAUA,yB;MAAA,yC;MtB7pEA,iD;MsB6pEA,sC;QAOI,OAAO,oBtB/pEA,qBsB+pEW,iBtB/pEX,EsB+pEqB,QAAS,QtB/pE9B,CsB+pEA,C;MACX,C;KARA,C;iFAUA,yB;MAAA,2C;MtB/pEA,iD;MsB+pEA,sC;QAOI,OAAO,qBtBjqEA,qBsBiqEY,iBtBjqEZ,EsBiqEsB,QAAS,QtBjqE/B,CsBiqEA,C;MACX,C;KARA,C;;MAgBI,IAAI,iBAAO,CAAX,C;QAAc,YAAU,SAAV,C;IAClB,C;;MAQI,IAAI,iBAAO,CAAX,C;QAAc,YAAU,SAAV,C;IAClB,C;;MAQI,IAAI,iBAAO,CAAX,C;QAAc,YAAU,SAAV,C;IAClB,C;;MAQI,IAAI,iBAAO,CAAX,C;QAAc,YAAU,SAAV,C;IAClB,C;;MAUI,OAAO,iBtBtpFiB,Q;IsBupF5B,C;;MAUI,OAAO,iBtB7oFiB,Q;IsB8oF5B,C;8FAEA,yB;MAAA,gD;MAAA,4B;QAQI,OAAe,OAAR,iBAAQ,C;MACnB,C;KATA,C;;MAmBI,OAAO,iBtB7qFiB,Q;IsB8qF5B,C;;MAQuB,wB;QAAW,qCAAK,KAAL,C;MAAX,C;IAAA,C;;MAAnB,OAAO,iBAAM,cAAN,EAAY,8BAAZ,C;IACX,C;;MAQuB,wB;QAAW,qCAAK,KAAL,C;MAAX,C;IAAA,C;;MAAnB,OAAO,iBAAM,cAAN,EAAY,gCAAZ,C;IACX,C;;MAQuB,wB;QAAW,qCAAK,KAAL,C;MAAX,C;IAAA,C;;MAAnB,OAAO,iBAAM,cAAN,EAAY,gCAAZ,C;IACX,C;;MAQuB,wB;QAAW,qCAAK,KAAL,C;MAAX,C;IAAA,C;;MAAnB,OAAO,iBAAM,cAAN,EAAY,gCAAZ,C;IACX,C;;MAQ4B,wB;QAAW,yBAAK,KAAL,C;MAAX,C;IAAA,C;;MAAxB,OLt5GO,eAAW,+BKs5GA,gBLt5GA,GAAgB,kBKs5GV,8BLt5GU,CAAhB,CAAX,C;IKu5GX,C;gGAEA,yB;MAAA,yC;MAAA,4B;QAQI,OAAO,oBAAW,StB/uFM,QsB+uFjB,C;MACX,C;KATA,C;;MAiB2B,wB;QAAW,wBAAK,KAAL,C;MAAX,C;IAAA,C;;MAAvB,OJ16GO,cAAU,gCI06GA,gBJ16GA,GAAe,iBI06GT,6BJ16GS,CAAf,CAAV,C;II26GX,C;8FAEA,yB;MAAA,uC;MAAA,4B;QAQI,OAAO,mBAAU,StB/uFO,QsB+uFjB,C;MACX,C;KATA,C;;MAiB4B,wB;QAAW,yBAAK,KAAL,C;MAAX,C;IAAA,C;;MAAxB,OH97GO,eAAW,kBG87GA,gBH97GA,EAAgB,kBG87GV,8BH97GU,CAAhB,CAAX,C;IG+7GX,C;gGAEA,yB;MAAA,gD;MAAA,yC;MAAA,4B;QAQI,OAAO,oBAAgB,OAAL,SAAK,CAAhB,C;MACX,C;KATA,C;;MAiB6B,wB;QAAW,0BAAK,KAAL,C;MAAX,C;IAAA,C;;MAAzB,ODl9GO,gBAAY,gCCk9GA,gBDl9GA,GAAiB,mBCk9GX,+BDl9GW,CAAjB,CAAZ,C;ICm9GX,C;kGAEA,yB;MAAA,2C;MAAA,4B;QAQI,OAAO,qBAAY,StBjyFK,QsBiyFjB,C;MACX,C;KATA,C;uFAWA,yB;MAAA,+D;MAwCA,gD;MAxCA,uC;QAOW,kBAAU,gB;QAwCD,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WAzC6B,SAyClB,CAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QA1ChB,OA4CO,W;MA3CX,C;KARA,C;uFAUA,yB;MAAA,+D;MA4CA,gD;MA5CA,uC;QAOW,kBAAU,gB;QA4CD,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WA7C6B,SA6ClB,CAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QA9ChB,OAgDO,W;MA/CX,C;KARA,C;uFAUA,yB;MAAA,+D;MAgDA,gD;MAhDA,uC;QAOW,kBAAU,gB;QAgDD,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WAjD6B,SAiDlB,CAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAlDhB,OAoDO,W;MAnDX,C;KARA,C;uFAUA,yB;MAAA,+D;MAoDA,gD;MApDA,uC;QAOW,kBAAU,gB;QAoDD,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WArD6B,SAqDlB,CAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAtDhB,OAwDO,W;MAvDX,C;KARA,C;2FAUA,yB;MAAA,gD;MAAA,oD;QAOoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WAAW,UAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAEhB,OAAO,W;MACX,C;KAZA,C;2FAcA,yB;MAAA,gD;MAAA,oD;QAOoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WAAW,UAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAEhB,OAAO,W;MACX,C;KAZA,C;2FAcA,yB;MAAA,gD;MAAA,oD;QAOoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WAAW,UAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAEhB,OAAO,W;MACX,C;KAZA,C;2FAcA,yB;MAAA,gD;MAAA,oD;QAOoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,WAAW,UAAU,OAAV,C;UACC,OAAZ,WAAY,EAAO,IAAP,C;;QAEhB,OAAO,W;MACX,C;KAZA,C;uFAcA,yB;MAAA,wE;MA4HA,+D;MA5HA,yC;QAYW,kBAAU,oB;QA4HD,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UA7HoD,WA6H1C,CAAY,OAAZ,C;U7B59GP,U;UADP,Y6B89Ge,W7B99GH,W6B89GwB,G7B99GxB,C;UACL,IAAI,aAAJ,C;YACH,a6B49GuC,gB;YAA5B,W7B39GX,a6B29GgC,G7B39GhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;U6Bw9GA,iB;UACA,IAAK,WAAI,OAAJ,C;;QA/HT,OAiIO,W;MAhIX,C;KAbA,C;uFAeA,yB;MAAA,wE;MAiIA,+D;MAjIA,yC;QAYW,kBAAU,oB;QAiID,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAlIqD,WAkI3C,CAAY,OAAZ,C;U7Bh/GP,U;UADP,Y6Bk/Ge,W7Bl/GH,W6Bk/GwB,G7Bl/GxB,C;UACL,IAAI,aAAJ,C;YACH,a6Bg/GuC,gB;YAA5B,W7B/+GX,a6B++GgC,G7B/+GhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;U6B4+GA,iB;UACA,IAAK,WAAI,OAAJ,C;;QApIT,OAsIO,W;MArIX,C;KAbA,C;sFAeA,yB;MAAA,wE;MAsIA,+D;MAtIA,yC;QAYW,kBAAU,oB;QAsID,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAvIqD,WAuI3C,CAAY,OAAZ,C;U7BpgHP,U;UADP,Y6BsgHe,W7BtgHH,W6BsgHwB,G7BtgHxB,C;UACL,IAAI,aAAJ,C;YACH,a6BogHuC,gB;YAA5B,W7BngHX,a6BmgHgC,G7BngHhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;U6BggHA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAzIT,OA2IO,W;MA1IX,C;KAbA,C;uFAeA,yB;MAAA,wE;MA2IA,+D;MA3IA,yC;QAYW,kBAAU,oB;QA2ID,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UA5IsD,WA4I5C,CAAY,OAAZ,C;U7BxhHP,U;UADP,Y6B0hHe,W7B1hHH,W6B0hHwB,G7B1hHxB,C;UACL,IAAI,aAAJ,C;YACH,a6BwhHuC,gB;YAA5B,W7BvhHX,a6BuhHgC,G7BvhHhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;U6BohHA,iB;UACA,IAAK,WAAI,OAAJ,C;;QA9IT,OAgJO,W;MA/IX,C;KAbA,C;uFAeA,yB;MAAA,wE;MAgJA,+D;MAhJA,yD;QAaW,kBAAU,oB;QAgJD,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAjJiD,WAiJvC,CAAY,OAAZ,C;U7B7iHP,U;UADP,Y6B+iHe,W7B/iHH,W6B+iHwB,G7B/iHxB,C;UACL,IAAI,aAAJ,C;YACH,a6B6iHuC,gB;YAA5B,W7B5iHX,a6B4iHgC,G7B5iHhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;U6ByiHA,iB;UACA,IAAK,WAnJyD,cAmJrD,CAAe,OAAf,CAAJ,C;;QAnJT,OAqJO,W;MApJX,C;KAdA,C;uFAgBA,yB;MAAA,wE;MAqJA,+D;MArJA,yD;QAaW,kBAAU,oB;QAqJD,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAtJiD,WAsJvC,CAAY,OAAZ,C;U7BlkHP,U;UADP,Y6BokHe,W7BpkHH,W6BokHwB,G7BpkHxB,C;UACL,IAAI,aAAJ,C;YACH,a6BkkHuC,gB;YAA5B,W7BjkHX,a6BikHgC,G7BjkHhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;U6B8jHA,iB;UACA,IAAK,WAxJyD,cAwJrD,CAAe,OAAf,CAAJ,C;;QAxJT,OA0JO,W;MAzJX,C;KAdA,C;uFAgBA,yB;MAAA,wE;MA0JA,+D;MA1JA,yD;QAaW,kBAAU,oB;QA0JD,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UA3JiD,WA2JvC,CAAY,OAAZ,C;U7BvlHP,U;UADP,Y6BylHe,W7BzlHH,W6BylHwB,G7BzlHxB,C;UACL,IAAI,aAAJ,C;YACH,a6BulHuC,gB;YAA5B,W7BtlHX,a6BslHgC,G7BtlHhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;U6BmlHA,iB;UACA,IAAK,WA7JyD,cA6JrD,CAAe,OAAf,CAAJ,C;;QA7JT,OA+JO,W;MA9JX,C;KAdA,C;uFAgBA,yB;MAAA,wE;MA+JA,+D;MA/JA,yD;QAaW,kBAAU,oB;QA+JD,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAhKiD,WAgKvC,CAAY,OAAZ,C;U7B5mHP,U;UADP,Y6B8mHe,W7B9mHH,W6B8mHwB,G7B9mHxB,C;UACL,IAAI,aAAJ,C;YACH,a6B4mHuC,gB;YAA5B,W7B3mHX,a6B2mHgC,G7B3mHhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;U6BwmHA,iB;UACA,IAAK,WAlKyD,cAkKrD,CAAe,OAAf,CAAJ,C;;QAlKT,OAoKO,W;MAnKX,C;KAdA,C;2FAgBA,yB;MAAA,+D;MAAA,sD;QAYoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;U7B59GP,U;UADP,Y6B89Ge,W7B99GH,W6B89GwB,G7B99GxB,C;UACL,IAAI,aAAJ,C;YACH,a6B49GuC,gB;YAA5B,W7B39GX,a6B29GgC,G7B39GhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;U6Bw9GA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAET,OAAO,W;MACX,C;KAlBA,C;2FAoBA,yB;MAAA,+D;MAAA,sD;QAYoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;U7Bh/GP,U;UADP,Y6Bk/Ge,W7Bl/GH,W6Bk/GwB,G7Bl/GxB,C;UACL,IAAI,aAAJ,C;YACH,a6Bg/GuC,gB;YAA5B,W7B/+GX,a6B++GgC,G7B/+GhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;U6B4+GA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAET,OAAO,W;MACX,C;KAlBA,C;2FAoBA,yB;MAAA,+D;MAAA,sD;QAYoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;U7BpgHP,U;UADP,Y6BsgHe,W7BtgHH,W6BsgHwB,G7BtgHxB,C;UACL,IAAI,aAAJ,C;YACH,a6BogHuC,gB;YAA5B,W7BngHX,a6BmgHgC,G7BngHhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;U6BggHA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAET,OAAO,W;MACX,C;KAlBA,C;2FAoBA,yB;MAAA,+D;MAAA,sD;QAYoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;U7BxhHP,U;UADP,Y6B0hHe,W7B1hHH,W6B0hHwB,G7B1hHxB,C;UACL,IAAI,aAAJ,C;YACH,a6BwhHuC,gB;YAA5B,W7BvhHX,a6BuhHgC,G7BvhHhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;U6BohHA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAET,OAAO,W;MACX,C;KAlBA,C;2FAoBA,yB;MAAA,+D;MAAA,sE;QAaoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;U7B7iHP,U;UADP,Y6B+iHe,W7B/iHH,W6B+iHwB,G7B/iHxB,C;UACL,IAAI,aAAJ,C;YACH,a6B6iHuC,gB;YAA5B,W7B5iHX,a6B4iHgC,G7B5iHhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;U6ByiHA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;MACX,C;KAnBA,C;2FAqBA,yB;MAAA,+D;MAAA,sE;QAaoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;U7BlkHP,U;UADP,Y6BokHe,W7BpkHH,W6BokHwB,G7BpkHxB,C;UACL,IAAI,aAAJ,C;YACH,a6BkkHuC,gB;YAA5B,W7BjkHX,a6BikHgC,G7BjkHhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;U6B8jHA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;MACX,C;KAnBA,C;2FAqBA,yB;MAAA,+D;MAAA,sE;QAaoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;U7BvlHP,U;UADP,Y6BylHe,W7BzlHH,W6BylHwB,G7BzlHxB,C;UACL,IAAI,aAAJ,C;YACH,a6BulHuC,gB;YAA5B,W7BtlHX,a6BslHgC,G7BtlHhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;U6BmlHA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;MACX,C;KAnBA,C;2FAqBA,yB;MAAA,+D;MAAA,sE;QAaoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;U7B5mHP,U;UADP,Y6B8mHe,W7B9mHH,W6B8mHwB,G7B9mHxB,C;UACL,IAAI,aAAJ,C;YACH,a6B4mHuC,gB;YAA5B,W7B3mHX,a6B2mHgC,G7B3mHhC,EAAS,MAAT,C;YACA,e;;;YAEA,c;;U6BwmHA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;MACX,C;KAnBA,C;+EAqBA,yB;MAAA,gE;MAAA,uC;QAUW,kBAAM,eAAa,cAAb,C;QAsKA,Q;QAAA,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WAvKiB,SAuKb,CAAU,IAAV,CAAJ,C;;QAvKhB,OAwKO,W;MAvKX,C;KAXA,C;+EAaA,yB;MAAA,gE;MAAA,uC;QAUW,kBAAM,eAAa,cAAb,C;QAsKA,Q;QAAA,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WAvKiB,SAuKb,CAAU,IAAV,CAAJ,C;;QAvKhB,OAwKO,W;MAvKX,C;KAXA,C;8EAaA,yB;MAAA,gE;MAAA,uC;QAUW,kBAAM,eAAa,cAAb,C;QAsKA,Q;QAAA,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WAvKiB,SAuKb,CAAU,IAAV,CAAJ,C;;QAvKhB,OAwKO,W;MAvKX,C;KAXA,C;+EAaA,yB;MAAA,gE;MAAA,uC;QAUW,kBAAM,eAAa,cAAb,C;QAsKA,Q;QAAA,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WAvKiB,SAuKb,CAAU,IAAV,CAAJ,C;;QAvKhB,OAwKO,W;MAvKX,C;KAXA,C;4FAaA,yB;MAAA,gE;MAAA,uC;QAUW,kBAAa,eAAa,cAAb,C;QAqDP,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WAtDwB,SAsDpB,EAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;QAtDhB,OAuDO,W;MAtDX,C;KAXA,C;6FAaA,yB;MAAA,gE;MAAA,uC;QAUW,kBAAa,eAAa,cAAb,C;QAwDP,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WAzDwB,SAyDpB,EAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;QAzDhB,OA0DO,W;MAzDX,C;KAXA,C;6FAaA,yB;MAAA,gE;MAAA,uC;QAUW,kBAAa,eAAa,cAAb,C;QA2DP,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WA5DwB,SA4DpB,EAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;QA5DhB,OA6DO,W;MA5DX,C;KAXA,C;4FAaA,yB;MAAA,gE;MAAA,uC;QAUW,kBAAa,eAAa,cAAb,C;QA8DP,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WA/DwB,SA+DpB,EAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;QA/DhB,OAgEO,W;MA/DX,C;KAXA,C;;MAwBiB,UACiB,M;MAF9B,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAaiB,UACiB,M;MAF9B,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAaiB,UACiB,M;MAF9B,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAaiB,UACiB,M;MAF9B,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAUiB,Q;MAAA,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAUiB,Q;MAAA,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAUiB,Q;MAAA,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAUiB,Q;MAAA,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;IACX,C;;MAQ4B,mB;QAAE,gC;MAAF,C;IAAA,C;;MAAxB,OAAO,qBAAiB,8BAAjB,C;IACX,C;;MAQ4B,mB;QAAE,gC;MAAF,C;IAAA,C;;MAAxB,OAAO,qBAAiB,8BAAjB,C;IACX,C;;MAQ4B,mB;QAAE,gC;MAAF,C;IAAA,C;;MAAxB,OAAO,qBAAiB,8BAAjB,C;IACX,C;;MAQ4B,mB;QAAE,gC;MAAF,C;IAAA,C;;MAAxB,OAAO,qBAAiB,8BAAjB,C;IACX,C;;MAWoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;IACX,C;;MAWoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;IACX,C;;MAWoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;IACX,C;;MAWoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;IACX,C;+EAEA,yB;MAAA,0C;MAAA,4B;QASI,OAAe,IAAR,iBAAQ,C;MACnB,C;KAVA,C;+EAYA,yB;MAAA,0C;MAAA,4B;QASI,OAAe,IAAR,iBAAQ,C;MACnB,C;KAVA,C;+EAYA,yB;MAAA,0C;MAAA,4B;QASI,OAAe,IAAR,iBAAQ,C;MACnB,C;KAVA,C;+EAYA,yB;MAAA,0C;MAAA,4B;QASI,OAAe,IAAR,iBAAQ,C;MACnB,C;KAVA,C;;MAqBoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;IACX,C;;MAWoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;IACX,C;;MAWoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;IACX,C;;MAWoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;IACX,C;;MAUoB,Q;MADhB,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,qB;;MAC9C,OAAO,K;IACX,C;;MAUoB,Q;MADhB,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,qB;;MAC9C,OAAO,K;IACX,C;;MAUoB,Q;MADhB,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,qB;;MAC9C,OAAO,K;IACX,C;;MAUoB,Q;MADhB,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,qB;;MAC9C,OAAO,K;IACX,C;;MAUoB,Q;MADhB,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;IACX,C;;MAUoB,Q;MADhB,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;IACX,C;;MAUoB,Q;MADhB,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;IACX,C;;MAUoB,Q;MADhB,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;IACX,C;;MAcoB,UAA8B,M;MAF9C,YAAY,C;MACZ,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,OAAhC,C;;MACpC,OAAO,W;IACX,C;;MAcoB,UAA8B,M;MAF9C,YAAY,C;MACZ,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,OAAhC,C;;MACpC,OAAO,W;IACX,C;;MAcoB,UAA8B,M;MAF9C,YAAY,C;MACZ,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,OAAhC,C;;MACpC,OAAO,W;IACX,C;;MAcoB,UAA8B,M;MAF9C,YAAY,C;MACZ,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,OAAhC,C;;MACpC,OAAO,W;IACX,C;0FAEA,yB;MAtxCI,8D;MAsxCJ,gD;QAUoC,Q;QAHhC,YA7xCgB,cAAR,iBAAQ,C;QA8xChB,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,YAAJ,EAAI,oBAAJ,QAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAbA,C;2FAeA,yB;MA7xCI,8D;MA6xCJ,gD;QAUoC,Q;QAHhC,YApyCgB,cAAR,iBAAQ,C;QAqyChB,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,YAAJ,EAAI,oBAAJ,QAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAbA,C;2FAeA,yB;MApyCI,8D;MAoyCJ,gD;QAUoC,Q;QAHhC,YA3yCgB,cAAR,iBAAQ,C;QA4yChB,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,YAAJ,EAAI,oBAAJ,QAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAbA,C;2FAeA,yB;MA3yCI,8D;MA2yCJ,gD;QAUoC,Q;QAHhC,YAlzCgB,cAAR,iBAAQ,C;QAmzChB,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,YAAJ,EAAI,oBAAJ,QAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAbA,C;yGAeA,yB;MAl1CI,8D;MAk1CJ,gD;QAUI,YA51CgB,cAAR,iBAAQ,C;QA61ChB,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,sBAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAjBA,C;yGAmBA,yB;MA71CI,8D;MA61CJ,gD;QAUI,YAv2CgB,cAAR,iBAAQ,C;QAw2ChB,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,sBAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAjBA,C;yGAmBA,yB;MAx2CI,8D;MAw2CJ,gD;QAUI,YAl3CgB,cAAR,iBAAQ,C;QAm3ChB,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,sBAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAjBA,C;yGAmBA,yB;MAn3CI,8D;MAm3CJ,gD;QAUI,YA73CgB,cAAR,iBAAQ,C;QA83ChB,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,sBAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAjBA,C;;MA0BoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,OAAO,OAAP,C;;IAC1B,C;;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,OAAO,OAAP,C;;IAC1B,C;;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,OAAO,OAAP,C;;IAC1B,C;;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,OAAO,OAAP,C;;IAC1B,C;;MAYiB,UAAa,M;MAD1B,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QAAM,QAAO,cAAP,EAAO,sBAAP,WAAgB,IAAhB,C;;IACvB,C;;MAYiB,UAAa,M;MAD1B,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QAAM,QAAO,cAAP,EAAO,sBAAP,WAAgB,IAAhB,C;;IACvB,C;;MAYiB,UAAa,M;MAD1B,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QAAM,QAAO,cAAP,EAAO,sBAAP,WAAgB,IAAhB,C;;IACvB,C;;MAYiB,UAAa,M;MAD1B,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QAAM,QAAO,cAAP,EAAO,sBAAP,WAAgB,IAAhB,C;;IACvB,C;;MAUiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAlgDG,gBAAR,iBAAQ,C;MAkgDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IjC7oJ8D,YiC6oJ1D,GjC7oJ2E,KAAjB,EiC6oJpD,CjC7oJiF,KAA7B,CiC6oJ1D,IAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAUiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAzgDG,gBAAR,iBAAQ,C;MAygDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IFppJ+D,aEopJ3D,GFppJ6E,KAAlB,EEopJrD,CFppJmF,KAA9B,CEopJ3D,IAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAUiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAhhDG,gBAAR,iBAAQ,C;MAghDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IlC3rJ4E,0BkC2rJxE,GlC3iJ8B,KAAL,GAAiB,GAhJ8B,EkC2rJlE,ClC3iJwB,KAAL,GAAiB,GAhJ8B,CkC2rJxE,IAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAUiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAvhDG,gBAAR,iBAAQ,C;MAuhDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IhClsJ6E,0BgCksJzE,GhCzjJ8B,KAAL,GAAiB,KAzI+B,EgCksJnE,ChCzjJwB,KAAL,GAAiB,KAzI+B,CgCksJzE,IAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;mFAEA,yB;MAtjDI,8D;MAsjDJ,sC;QASI,IAAI,mBAAJ,C;UAAe,OAAO,I;QACtB,cAAc,sBAAK,CAAL,C;QACd,gBAjkDgB,cAikDA,SAjkDR,QAAQ,C;QAkkDhB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,sBAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KAvBA,C;mFAyBA,yB;MAvkDI,8D;MAukDJ,sC;QASI,IAAI,mBAAJ,C;UAAe,OAAO,I;QACtB,cAAc,sBAAK,CAAL,C;QACd,gBAllDgB,cAklDA,SAllDR,QAAQ,C;QAmlDhB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,sBAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KAvBA,C;mFAyBA,yB;MAxlDI,8D;MAwlDJ,sC;QASI,IAAI,mBAAJ,C;UAAe,OAAO,I;QACtB,cAAc,sBAAK,CAAL,C;QACd,gBAnmDgB,cAmmDA,SAnmDR,QAAQ,C;QAomDhB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,sBAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KAvBA,C;mFAyBA,yB;MAzmDI,8D;MAymDJ,sC;QASI,IAAI,mBAAJ,C;UAAe,OAAO,I;QACtB,cAAc,sBAAK,CAAL,C;QACd,gBApnDgB,cAonDA,SApnDR,QAAQ,C;QAqnDhB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,sBAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KAvBA,C;;MAiCiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAlqDG,gBAAR,iBAAQ,C;MAkqDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAUiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAzqDG,gBAAR,iBAAQ,C;MAyqDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAUiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAhrDG,gBAAR,iBAAQ,C;MAgrDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAUiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAvrDG,gBAAR,iBAAQ,C;MAurDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAUiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OA9tDG,gBAAR,iBAAQ,C;MA8tDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IjCz2J8D,YiCy2J1D,GjCz2J2E,KAAjB,EiCy2JpD,CjCz2JiF,KAA7B,CiCy2J1D,IAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAUiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAruDG,gBAAR,iBAAQ,C;MAquDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IFh3J+D,aEg3J3D,GFh3J6E,KAAlB,EEg3JrD,CFh3JmF,KAA9B,CEg3J3D,IAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAUiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OA5uDG,gBAAR,iBAAQ,C;MA4uDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IlCv5J4E,0BkCu5JxE,GlCvwJ8B,KAAL,GAAiB,GAhJ8B,EkCu5JlE,ClCvwJwB,KAAL,GAAiB,GAhJ8B,CkCu5JxE,IAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;;MAUiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAnvDG,gBAAR,iBAAQ,C;MAmvDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IhC95J6E,0BgC85JzE,GhCrxJ8B,KAAL,GAAiB,KAzI+B,EgC85JnE,ChCrxJwB,KAAL,GAAiB,KAzI+B,CgC85JzE,IAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;IACX,C;mFAEA,yB;MAlxDI,8D;MAkxDJ,sC;QASI,IAAI,mBAAJ,C;UAAe,OAAO,I;QACtB,cAAc,sBAAK,CAAL,C;QACd,gBA7xDgB,cA6xDA,SA7xDR,QAAQ,C;QA8xDhB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,sBAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KAvBA,C;mFAyBA,yB;MAnyDI,8D;MAmyDJ,sC;QASI,IAAI,mBAAJ,C;UAAe,OAAO,I;QACtB,cAAc,sBAAK,CAAL,C;QACd,gBA9yDgB,cA8yDA,SA9yDR,QAAQ,C;QA+yDhB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,sBAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KAvBA,C;mFAyBA,yB;MApzDI,8D;MAozDJ,sC;QASI,IAAI,mBAAJ,C;UAAe,OAAO,I;QACtB,cAAc,sBAAK,CAAL,C;QACd,gBA/zDgB,cA+zDA,SA/zDR,QAAQ,C;QAg0DhB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,sBAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KAvBA,C;mFAyBA,yB;MAr0DI,8D;MAq0DJ,sC;QASI,IAAI,mBAAJ,C;UAAe,OAAO,I;QACtB,cAAc,sBAAK,CAAL,C;QACd,gBAh1DgB,cAg1DA,SAh1DR,QAAQ,C;QAi1DhB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,sBAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;;QAGnB,OAAO,O;MACX,C;KAvBA,C;;MAiCiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OA93DG,gBAAR,iBAAQ,C;MA83DhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAUiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAr4DG,gBAAR,iBAAQ,C;MAq4DhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAUiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OA54DG,gBAAR,iBAAQ,C;MA44DhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAUiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAn5DG,gBAAR,iBAAQ,C;MAm5DhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;IACX,C;;MAWI,OAAO,mB;IACX,C;;MAWI,OAAO,mB;IACX,C;;MAWI,OAAO,mB;IACX,C;;MAWI,OAAO,mB;IACX,C;;MAWoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;IACX,C;;MAWoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;IACX,C;;MAWoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;IACX,C;;MAWoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;IACX,C;qFAEA,yB;MAAA,4F;MAthEI,8D;MAshEJ,uC;QAUqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,sBAAK,CAAL,C;QACD,OAhiED,cAAR,iBAAQ,C;QAgiEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,sBAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;MACX,C;KAdA,C;qFAgBA,yB;MAAA,4F;MA9hEI,8D;MA8hEJ,uC;QAUqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,sBAAK,CAAL,C;QACD,OAxiED,cAAR,iBAAQ,C;QAwiEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,sBAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;MACX,C;KAdA,C;qFAgBA,yB;MAAA,4F;MAtiEI,8D;MAsiEJ,uC;QAUqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,sBAAK,CAAL,C;QACD,OAhjED,cAAR,iBAAQ,C;QAgjEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,sBAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;MACX,C;KAdA,C;qFAgBA,yB;MAAA,4F;MA9iEI,8D;MA8iEJ,uC;QAUqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,sBAAK,CAAL,C;QACD,OAxjED,cAAR,iBAAQ,C;QAwjEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,sBAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;MACX,C;KAdA,C;mGAgBA,yB;MAAA,4F;MAtlEI,8D;MAslEJ,uC;QAaqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,sBAAK,CAAL,C;QACD,OAnmED,cAAR,iBAAQ,C;QAmmEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,sBAAK,KAAL,CAA9B,C;;QAElB,OAAO,W;MACX,C;KAjBA,C;mGAmBA,yB;MAAA,4F;MAjmEI,8D;MAimEJ,uC;QAaqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,sBAAK,CAAL,C;QACD,OA9mED,cAAR,iBAAQ,C;QA8mEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,sBAAK,KAAL,CAA9B,C;;QAElB,OAAO,W;MACX,C;KAjBA,C;mGAmBA,yB;MAAA,4F;MA5mEI,8D;MA4mEJ,uC;QAaqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,sBAAK,CAAL,C;QACD,OAznED,cAAR,iBAAQ,C;QAynEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,sBAAK,KAAL,CAA9B,C;;QAElB,OAAO,W;MACX,C;KAjBA,C;mGAmBA,yB;MAAA,4F;MAvnEI,8D;MAunEJ,uC;QAaqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,sBAAK,CAAL,C;QACD,OApoED,cAAR,iBAAQ,C;QAooEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,sBAAK,KAAL,CAA9B,C;;QAElB,OAAO,W;MACX,C;KAjBA,C;+FAmBA,yB;MAAA,4F;MAlqEI,8D;MAkqEJ,uC;QAS0B,UAEU,M;QAJhC,YAzqEgB,cAAR,iBAAQ,C;QA0qEhB,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,cAAJ,EAAI,sBAAJ,UAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAdA,C;+FAgBA,yB;MAAA,4F;MA1qEI,8D;MA0qEJ,uC;QAS0B,UAEU,M;QAJhC,YAjrEgB,cAAR,iBAAQ,C;QAkrEhB,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,cAAJ,EAAI,sBAAJ,UAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAdA,C;+FAgBA,yB;MAAA,4F;MAlrEI,8D;MAkrEJ,uC;QAS0B,UAEU,M;QAJhC,YAzrEgB,cAAR,iBAAQ,C;QA0rEhB,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,cAAJ,EAAI,sBAAJ,UAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAdA,C;+FAgBA,yB;MAAA,4F;MA1rEI,8D;MA0rEJ,uC;QAS0B,UAEU,M;QAJhC,YAjsEgB,cAAR,iBAAQ,C;QAksEhB,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,cAAJ,EAAI,sBAAJ,UAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;MACX,C;KAdA,C;6GAgBA,yB;MAAA,4F;MAluEI,8D;MAkuEJ,uC;QAY0B,Q;QAFtB,YA5uEgB,cAAR,iBAAQ,C;QA6uEhB,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,sBAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAlBA,C;6GAoBA,yB;MAAA,4F;MA9uEI,8D;MA8uEJ,uC;QAY0B,Q;QAFtB,YAxvEgB,cAAR,iBAAQ,C;QAyvEhB,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,sBAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAlBA,C;6GAoBA,yB;MAAA,4F;MA1vEI,8D;MA0vEJ,uC;QAY0B,Q;QAFtB,YApwEgB,cAAR,iBAAQ,C;QAqwEhB,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,sBAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAlBA,C;6GAoBA,yB;MAAA,4F;MAtwEI,8D;MAswEJ,uC;QAY0B,Q;QAFtB,YAhxEgB,cAAR,iBAAQ,C;QAixEhB,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,sBAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;MACX,C;KAlBA,C;mFAoBA,yB;MAAA,wB;MAAA,sC;QAQoB,Q;QADhB,UAAgB,W;QACA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,MjCl7KiD,SiCk7KjD,GjCl7K2D,KAAK,GiCk7KzD,SAAS,OAAT,CjCl7KoE,KAAX,IAAf,C;;QiCo7KrD,OAAO,G;MACX,C;KAZA,C;mFAcA,yB;MAAA,wB;MAAA,sC;QAQoB,Q;QADhB,UAAgB,W;QACA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,MjCh8KiD,SiCg8KjD,GjCh8K2D,KAAK,GiCg8KzD,SAAS,OAAT,CjCh8KoE,KAAX,IAAf,C;;QiCk8KrD,OAAO,G;MACX,C;KAZA,C;mFAcA,yB;MAAA,wB;MAAA,sC;QAQoB,Q;QADhB,UAAgB,W;QACA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,MjC98KiD,SiC88KjD,GjC98K2D,KAAK,GiC88KzD,SAAS,OAAT,CjC98KoE,KAAX,IAAf,C;;QiCg9KrD,OAAO,G;MACX,C;KAZA,C;mFAcA,yB;MAAA,wB;MAAA,sC;QAQoB,Q;QADhB,UAAgB,W;QACA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,MjC59KiD,SiC49KjD,GjC59K2D,KAAK,GiC49KzD,SAAS,OAAT,CjC59KoE,KAAX,IAAf,C;;QiC89KrD,OAAO,G;MACX,C;KAZA,C;;MAsBoB,Q;MADhB,UAAkB,G;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;IACX,C;;MAUoB,Q;MADhB,UAAkB,G;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;IACX,C;;MAUoB,Q;MADhB,UAAkB,G;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;IACX,C;;MAUoB,Q;MADhB,UAAkB,G;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;IACX,C;;MA6DI,WlB1+KO,MAAK,KkB0+KK,clB1+KL,EkBw7KD,KAkDkB,OlB1+KjB,C;MkB2+KZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WArDqB,GAqDP,sBAAK,CAAL,CArDO,EAAnB,KAqDqB,CAAM,CAAN,CArDF,CAqDrB,C;;MArDT,OAuDO,I;IAtDX,C;;MAoEI,WlB7/KO,MAAK,KkB6/KK,clB7/KL,EkBo8KD,KAyDkB,OlB7/KjB,C;MkB8/KZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WA5DqB,GA4DP,sBAAK,CAAL,CA5DO,EAAnB,KA4DqB,CAAM,CAAN,CA5DF,CA4DrB,C;;MA5DT,OA8DO,I;IA7DX,C;;MA2EI,WlBhhLO,MAAK,KkBghLK,clBhhLL,EkBg9KD,KAgEkB,OlBhhLjB,C;MkBihLZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WAnEqB,GAmEP,sBAAK,CAAL,CAnEO,EAAnB,KAmEqB,CAAM,CAAN,CAnEF,CAmErB,C;;MAnET,OAqEO,I;IApEX,C;;MAkFI,WlBniLO,MAAK,KkBmiLK,clBniLL,EkB49KD,KAuEkB,OlBniLjB,C;MkBoiLZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WA1EqB,GA0EP,sBAAK,CAAL,CA1EO,EAAnB,KA0EqB,CAAM,CAAN,CA1EF,CA0ErB,C;;MA1ET,OA4EO,I;IA3EX,C;+EAEA,yB;MAAA,gE;MlBt+KA,iB;MkBs+KA,8C;QAWI,WlB1+KO,MAAK,KkB0+KK,clB1+KL,EkB0+KW,KAAM,OlB1+KjB,C;QkB2+KZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAjBA,C;+EAmBA,yB;MAAA,gE;MlBz/KA,iB;MkBy/KA,8C;QAWI,WlB7/KO,MAAK,KkB6/KK,clB7/KL,EkB6/KW,KAAM,OlB7/KjB,C;QkB8/KZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAjBA,C;+EAmBA,yB;MAAA,gE;MlB5gLA,iB;MkB4gLA,8C;QAWI,WlBhhLO,MAAK,KkBghLK,clBhhLL,EkBghLW,KAAM,OlBhhLjB,C;QkBihLZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAjBA,C;+EAmBA,yB;MAAA,gE;MlB/hLA,iB;MkB+hLA,8C;QAWI,WlBniLO,MAAK,KkBmiLK,clBniLL,EkBmiLW,KAAM,OlBniLjB,C;QkBoiLZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAjBA,C;;MAiFoB,gB;MAHhB,gBAAgB,c;MAChB,WAAW,iBlBvmLJ,MAAK,KkBumLwB,wBAnDzB,KAmDyB,EAAwB,EAAxB,ClBvmLxB,EkBumLqD,SlBvmLrD,CkBumLD,C;MACX,QAAQ,C;MACQ,OArDL,KAqDK,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAvDqB,GAuDP,uBAAK,UAAL,EAAK,kBAAL,UAvDO,EAuDI,OAvDJ,CAuDrB,C;;MAvDT,OAyDO,I;IAxDX,C;;MAyEoB,gB;MAHhB,gBAAgB,c;MAChB,WAAW,iBlB5nLJ,MAAK,KkB4nLwB,wBA5DzB,KA4DyB,EAAwB,EAAxB,ClB5nLxB,EkB4nLqD,SlB5nLrD,CkB4nLD,C;MACX,QAAQ,C;MACQ,OA9DL,KA8DK,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAhEqB,GAgEP,uBAAK,UAAL,EAAK,kBAAL,UAhEO,EAgEI,OAhEJ,CAgErB,C;;MAhET,OAkEO,I;IAjEX,C;;MAkFoB,gB;MAHhB,gBAAgB,c;MAChB,WAAW,iBlBjpLJ,MAAK,KkBipLwB,wBArEzB,KAqEyB,EAAwB,EAAxB,ClBjpLxB,EkBipLqD,SlBjpLrD,CkBipLD,C;MACX,QAAQ,C;MACQ,OAvEL,KAuEK,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAzEqB,GAyEP,uBAAK,UAAL,EAAK,kBAAL,UAzEO,EAyEI,OAzEJ,CAyErB,C;;MAzET,OA2EO,I;IA1EX,C;;MA2FoB,gB;MAHhB,gBAAgB,c;MAChB,WAAW,iBlBtqLJ,MAAK,KkBsqLwB,wBA9EzB,KA8EyB,EAAwB,EAAxB,ClBtqLxB,EkBsqLqD,SlBtqLrD,CkBsqLD,C;MACX,QAAQ,C;MACQ,OAhFL,KAgFK,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAlFqB,GAkFP,uBAAK,UAAL,EAAK,kBAAL,UAlFO,EAkFI,OAlFJ,CAkFrB,C;;MAlFT,OAoFO,I;IAnFX,C;+EAEA,yB;MAAA,kF;MAAA,gE;MlBlmLA,iB;MkBkmLA,8C;QAcoB,UAEY,M;QAL5B,gBAAgB,c;QAChB,WAAW,elBvmLJ,MAAK,KkBumLwB,wBAAN,KAAM,EAAwB,EAAxB,ClBvmLxB,EkBumLqD,SlBvmLrD,CkBumLD,C;QACX,QAAQ,C;QACQ,uB;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,uBAAK,UAAL,EAAK,kBAAL,UAAV,EAAqB,OAArB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAnBA,C;+EAqBA,yB;MAAA,kF;MAAA,gE;MlBvnLA,iB;MkBunLA,8C;QAcoB,UAEY,M;QAL5B,gBAAgB,c;QAChB,WAAW,elB5nLJ,MAAK,KkB4nLwB,wBAAN,KAAM,EAAwB,EAAxB,ClB5nLxB,EkB4nLqD,SlB5nLrD,CkB4nLD,C;QACX,QAAQ,C;QACQ,uB;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,uBAAK,UAAL,EAAK,kBAAL,UAAV,EAAqB,OAArB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAnBA,C;+EAqBA,yB;MAAA,kF;MAAA,gE;MlB5oLA,iB;MkB4oLA,8C;QAcoB,UAEY,M;QAL5B,gBAAgB,c;QAChB,WAAW,elBjpLJ,MAAK,KkBipLwB,wBAAN,KAAM,EAAwB,EAAxB,ClBjpLxB,EkBipLqD,SlBjpLrD,CkBipLD,C;QACX,QAAQ,C;QACQ,uB;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,uBAAK,UAAL,EAAK,kBAAL,UAAV,EAAqB,OAArB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAnBA,C;8EAqBA,yB;MAAA,kF;MAAA,gE;MlBjqLA,iB;MkBiqLA,8C;QAcoB,UAEY,M;QAL5B,gBAAgB,c;QAChB,WAAW,elBtqLJ,MAAK,KkBsqLwB,wBAAN,KAAM,EAAwB,EAAxB,ClBtqLxB,EkBsqLqD,SlBtqLrD,CkBsqLD,C;QACX,QAAQ,C;QACQ,uB;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,uBAAK,UAAL,EAAK,kBAAL,UAAV,EAAqB,OAArB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAnBA,C;;MAgFI,WlB1uLO,MAAK,KkB0uLK,clB1uLL,EkBwrLD,KAkDkB,KlB1uLjB,C;MkB2uLZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WArDqB,GAqDP,sBAAK,CAAL,CArDO,EAAnB,KAqDqB,aAAM,CAAN,CArDF,CAqDrB,C;;MArDT,OAuDO,I;IAtDX,C;;MAoEI,WlB7vLO,MAAK,KkB6vLK,clB7vLL,EkBosLD,KAyDkB,KlB7vLjB,C;MkB8vLZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WA5DqB,GA4DP,sBAAK,CAAL,CA5DO,EAAnB,KA4DqB,aAAM,CAAN,CA5DF,CA4DrB,C;;MA5DT,OA8DO,I;IA7DX,C;;MA2EI,WlBhxLO,MAAK,KkBgxLK,clBhxLL,EkBgtLD,KAgEkB,KlBhxLjB,C;MkBixLZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WAnEqB,GAmEP,sBAAK,CAAL,CAnEO,EAAnB,KAmEqB,aAAM,CAAN,CAnEF,CAmErB,C;;MAnET,OAqEO,I;IApEX,C;;MAkFI,WlBnyLO,MAAK,KkBmyLK,clBnyLL,EkB4tLD,KAuEkB,KlBnyLjB,C;MkBoyLZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WA1EqB,GA0EP,sBAAK,CAAL,CA1EO,EAAnB,KA0EqB,aAAM,CAAN,CA1EF,CA0ErB,C;;MA1ET,OA4EO,I;IA3EX,C;+EAEA,yB;MAAA,gE;MlBtuLA,iB;MkBsuLA,8C;QAWI,WlB1uLO,MAAK,KkB0uLK,clB1uLL,EkB0uLW,KAAM,KlB1uLjB,C;QkB2uLZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,CAAV,EAAmB,kBAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAjBA,C;+EAmBA,yB;MAAA,gE;MlBzvLA,iB;MkByvLA,8C;QAWI,WlB7vLO,MAAK,KkB6vLK,clB7vLL,EkB6vLW,KAAM,KlB7vLjB,C;QkB8vLZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,CAAV,EAAmB,kBAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAjBA,C;+EAmBA,yB;MAAA,gE;MlB5wLA,iB;MkB4wLA,8C;QAWI,WlBhxLO,MAAK,KkBgxLK,clBhxLL,EkBgxLW,KAAM,KlBhxLjB,C;QkBixLZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,CAAV,EAAmB,kBAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAjBA,C;+EAmBA,yB;MAAA,gE;MlB/xLA,iB;MkB+xLA,8C;QAWI,WlBnyLO,MAAK,KkBmyLK,clBnyLL,EkBmyLW,KAAM,KlBnyLjB,C;QkBoyLZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,CAAV,EAAmB,kBAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;MACX,C;KAjBA,C;;MA2BoB,Q;MADhB,UAAgB,W;MAChB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,MjC95LiD,SiC85LjD,GjC95L2D,KAAK,GiC85LzD,OjC95LoE,KAAX,IAAf,C;;MiCg6LrD,OAAO,G;IACX,C;;MAUoB,Q;MADhB,UAAiB,2B;MACjB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,MFz6LmD,UEy6LnD,GFz6L8D,KAAK,KEy6L5D,OFz6LuE,KAAX,CAAhB,C;;ME26LvD,OAAO,G;IACX,C;;MAUoB,Q;MADhB,UAAgB,W;MAChB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,MjC17LiD,SiC07LjD,GjC17L2D,KAAK,GAAW,CDgJ5C,SkC0yLxB,OlC1yLkC,KAAL,GAAiB,GAAtB,CChJ4C,MAAX,IAAf,C;;MiC47LrD,OAAO,G;IACX,C;;MAUoB,Q;MADhB,UAAgB,W;MAChB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,MjCx8LiD,SiCw8LjD,GjCx8L2D,KAAK,GAAW,CCiJ5C,SgCuzLxB,OhCvzLkC,KAAL,GAAiB,KAAtB,CDjJ4C,MAAX,IAAf,C;;MiC08LrD,OAAO,G;IACX,C;+EAEA,yB;MAAA,0C;MjC5vLA,6B;MiC4vLA,4B;QAOI,OjCzvLmC,ciCyvLpB,IAAR,iBAAQ,CjCzvLoB,C;MiC0vLvC,C;KARA,C;+EAUA,yB;MAAA,0C;MFvvLA,+B;MEuvLA,4B;QAOI,OFpvLsC,eEovLvB,IAAR,iBAAQ,CFpvLuB,C;MEqvL1C,C;KARA,C;+EAUA,yB;MAAA,sC;MA5hBA,wB;MA4hBA,iBAOiB,yB;QlCj2Lb,6B;;UkCi2Le,OlCx1LoB,ckCw1LpB,ElCx1L8B,KAAL,GAAiB,GAAtB,C;QkCw1LR,C;OAAd,C;MAPjB,4B;QAphBoB,Q;QADhB,UAAgB,W;QACA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,MjC98KiD,SiC88KjD,GjC98K2D,KAAK,GAAW,CDgJ5C,SkC8zKf,OlC9zKyB,KAAL,GAAiB,GAAtB,CChJ4C,MAAX,IAAf,C;;QiCw+LrD,OAxhBO,G;MAyhBX,C;KARA,C;+EAUA,yB;MAAA,sC;MAxhBA,wB;MAwhBA,iBAOiB,yB;QhC12Lb,6B;;UgC02Le,OhCj2LoB,cgCi2LpB,EhCj2L8B,KAAL,GAAiB,KAAtB,C;QgCi2LR,C;OAAd,C;MAPjB,4B;QAhhBoB,Q;QADhB,UAAgB,W;QACA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,MjC59KiD,SiC49KjD,GjC59K2D,KAAK,GAAW,CCiJ5C,SgC20Kf,OhC30KyB,KAAL,GAAiB,KAAtB,CDjJ4C,MAAX,IAAf,C;;QiCk/LrD,OAphBO,G;MAqhBX,C;KARA,C;;MC/hMoB,UACL,M;MAHX,aAAa,gBAAW,cAAX,C;MACb,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,oBAAO,cAAP,EAAO,sBAAP,WAAkB,OAAlB,C;;MACJ,OAAO,M;IACX,C;;MAUoB,UACL,M;MAHX,aAAa,eAAU,cAAV,C;MACb,YAAY,C;MACI,2B;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AAX,C;QAAsB,gC;WACtB,0C;QAA4B,MAAM,MAAO,U;;QACjC,a;MAHZ,W;IAKJ,C;;;MAlCA,0D;MACyD,6BAAK,QAAL,EAAe,2CAAf,C;MADzD,Y;IAAA,C;;M1B+CA,sC;MAAA,4C;IATJ,C;IAAA,yF;MAWoB,2B;IAAA,CAXpB,E;IAAA,4E;MAcY,wBAAW,MAAX,C;IAAA,C;IAdZ,sF;;MDiHW,Q;MADP,e4B1JA,M5B0JA,C;MACO,Q4B3JP,M5B2JO,+D;M4B1JX,W;IAAA,C;;;MCwHI,aAAa,IAAb,MAAa,E;MACb,KAAK,MAAL,C;MACA,OAAO,M;IACX,C;;MC3HyG,kBAApB,wBAAc,IAAd,C;MAA0B,IvEoE3G,a;MuEpEiF,OvEqE1E,W;IuErE0E,C;;MAQvC,kBAA1B,cAAhB,sCAAgB,EAAc,IAAd,EAAoB,IAApB,C;MAAiC,sBvE2E3C,WuE3E2C,C;MAAjD,OvE4EO,W;IuE5EP,C;;MCZ8C,8B;MAAA,OCIN,aDJwB,yBAAa,QAAb,mCCIxB,C7D6rBgC,sB;I4DjsB1B,C;;MzFu8GvC,kBAAY,gB;MA8EH,Q;MAAhB,wByF7gHqB,UzF6gHrB,gB;QAAgB,cyF7gHK,UzF6gHrB,M;QAAsB,IAAI,CyF7gHkB,oBzF6gHP,OyF7gHO,CzF6gHtB,C;UAAyB,WAAY,WAAI,OAAJ,C;;MyF7gH3D,qBzF8gHO,W;MyF7gHP,InFoJwD,CmFpJpD,cnFoJqD,UmFpJzD,C;Q5DoGuC,U;Q4DnGnC,qB5DmGyD,OAAtB,+B4DnGd,mB5DmGc,uBAAsB,CAAO,W;Q8DvGpD,kBAAhB,sB;QFMQ,0C;QACA,IAAI,E5DkNoC,0BAAU,C4DlN9C,CAAJ,C;UACI,2BAAO,GAAP,C;;QAEW,sCAAa,GAAb,C;QALnB,sBxE8DG,W0EnE8B,W;QFYjC,OAAO,I;;MAGX,OAAO,K;IACX,C;;MAQmB,c;;QzF6yTC,Q;QAAhB,wByF7yTI,UzF6yTJ,gB;UAAgB,cyF7yTZ,UzF6yTJ,M;UAAsB,IyF7yTD,oBzF6yTe,OyF7yTf,CzF6yTC,C;YAAwB,aAAO,I;YAAP,e;;;QAC9C,aAAO,K;;;MyF9yTP,e;QACI,kBAA6B,MAAX,UAA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AqGA,6B;MClGA,4C;MDHA,wB;QAEsD,OCGF,WDyGjB,cAAU,SAAL,GAAiB,GAAtB,CCzGiB,EC0GjB,cF7GqC,KE6G3B,KAAL,GAAiB,KAAtB,CD1GiB,C;MDHE,C;KAFtD,C;0FAGA,yB;MAkGA,6B;MClGA,4C;MDAA,wB;QAEoD,OCAA,WDyGjB,cAAU,SAAL,GAAiB,GAAtB,CCzGiB,EDAkB,KCAlB,C;MDAA,C;KAFpD,C;0FAGA,yB;MAyGA,WAS6D,wB;MAT7D,+B;MgCzGA,8C;MhCAA,wB;QAEsD,OgCAA,YhCgHjB,eAAW,oBAAL,SAAK,CAAL,UAAN,CgChHiB,EhCAmB,KgCAnB,C;MhCAA,C;KAFtD,C;0FAIA,yB;MA2FA,6B;MCrFA,kD;MDNA,wB;QAEqD,OCMD,cD4FjB,cAAU,SAAL,GAAiB,GAAtB,CC5FiB,ED4FjB,cAlGoC,KAkG1B,KAAL,GAAiB,GAAtB,CC5FiB,C;MDNC,C;KAFrD,C;0FAGA,yB;MAwFA,6B;MCrFA,kD;MDHA,wB;QAEsD,OCGF,cD4FjB,cAAU,SAAL,GAAiB,GAAtB,CC5FiB,EC6FjB,cFhGqC,KEgG3B,KAAL,GAAiB,KAAtB,CD7FiB,C;MDHE,C;KAFtD,C;0FAGA,yB;MAqFA,6B;MCrFA,kD;MDAA,wB;QAEoD,OCAA,cD4FjB,cAAU,SAAL,GAAiB,GAAtB,CC5FiB,EDAkB,KCAlB,C;MDAA,C;KAFpD,C;0FAGA,yB;MA4FA,WAS6D,wB;MAT7D,+B;MgC5FA,oD;MhCAA,wB;QAEsD,OgCAA,ehCmGjB,eAAW,oBAAL,SAAK,CAAL,UAAN,CgCnGiB,EhCAmB,KgCAnB,C;MhCAA,C;KAFtD,C;0EAIA,yB;MAAA,0B;MAAA,+B;MAAA,mB;QAE0C,sBAAW,OAAL,SAAK,KAAX,C;MAAA,C;KAF1C,C;0EAGA,yB;MAAA,0B;MAAA,+B;MAAA,mB;QAE0C,sBAAW,OAAL,SAAK,KAAX,C;MAAA,C;KAF1C,C;kGAIA,yB;MAAA,8C;MAuEA,6B;MAvEA,wB;QAE8D,0BA8E3B,cAAU,SAAL,GAAiB,GAAtB,CA9E2B,EA8E3B,cA9EoD,KA8E1C,KAAL,GAAiB,GAAtB,CA9E2B,C;MAAA,C;KAF9D,C;0FAIA,yB;MAAA,+B;MyJ5IJ,0B;MzJ4II,wB;QAEmD,sByJ3IgC,OzJ2I1B,IAAK,KyJ3IX,GzJ2IoB,KAAM,KyJ3IM,CzJ2IhC,C;MAAA,C;KAFnD,C;wFAGA,yB;MAAA,+B;MyJ1IJ,0B;MzJ0II,wB;QAEkD,sByJzI+B,OzJyIzB,IAAK,KyJzIX,GzJyImB,KAAM,KyJzIM,CzJyI/B,C;MAAA,C;KAFlD,C;0FAGA,yB;MAAA,+B;MyJxIJ,0B;MzJwII,wB;QAEmD,sByJvIgC,OzJuI1B,IAAK,KyJvIX,GzJuIoB,KAAM,KyJvIM,CzJuIhC,C;MAAA,C;KAFnD,C;0EAGA,yB;MAAA,+B;MyJtIJ,0B;MzJsII,mB;QAEiC,sByJrIqB,OAAP,CzJqIR,SyJrIe,CzJqIrB,C;MAAA,C;KAFjC,C;;MAamC,gB;IAAA,C;kFACnC,yB;MyJ9IJ,4B;MzJ8II,mB;QASqC,OyJpJiD,QzJoJ5C,SyJpJY,GzJoJE,GyJpJ8B,C;MzJoJjD,C;KATrC,C;;MAmBiC,OAAK,SAAL,GAAiB,G;IAAjB,C;gFACjC,yB;MAAA,WASqD,wB;MATrD,mB;QASmC,OAAK,oBAAL,SAAK,CAAL,U;MAAA,C;KATnC,C;;MAaqC,W;IAAA,C;oFACrC,yB;MAAA,iC;MyJhLJ,4B;MzJgLI,mB;QASuC,uByJtL+C,QzJsLnC,SyJtLG,GzJsLW,GyJtLqB,CzJsL/C,C;MAAA,C;KATvC,C;gFAUA,yB;MAAA,6B;MAAA,mB;QASmC,qBAAU,SAAL,GAAiB,GAAtB,C;MAAA,C;KATnC,C;kFAUA,yB;MAAA,WAS6D,wB;MAT7D,+B;MAAA,mB;QASqC,sBAAW,oBAAL,SAAK,CAAL,UAAN,C;MAAA,C;KATrC,C;;MAiBqC,OApDC,SAAL,GAAiB,G;IAoDb,C;;MAOE,OA3DD,SAAL,GAAiB,G;IA2DX,C;;MAEE,OAAQ,CA7DX,SAAL,GAAiB,GA6DD,Y;IAAR,C;;;;;;MA/O7C,c;MAG6D,qD;MAH7D,a;IAAA,C;;MAAA,2IAG6D,oCAH7D,G;IAAA,C;wEAmPA,yB;MAAA,+B;MAAA,4B;QAU0C,sBAAM,SAAN,C;MAAA,C;KA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CAAN,EAAS,CAAT,C;MACX,C;KARA,C;wEAUA,yB;MAAA,8C;MAAA,uB;QAOI,OAAO,MAAM,CAAN,EAAS,CAAT,C;MACX,C;KARA,C;;MC3BI,ShLyHoD,cgLzH3C,ChLyH2C,EgLzHvC,ChLyHuC,C;MgLxHpD,ShLwHoD,cgLxH3C,ChLwH2C,EgLxHvC,ChLwHuC,C;MgLvHpD,OhLiDkE,YgLjDvD,EhLiDwE,KAAjB,EgLjDjD,EhLiD8E,KAA7B,CgLjDvD,KAAX,GhLgFsD,SgLhFjC,EhLgF2C,KAAK,GgLhF3C,EhLgFuD,KAAZ,IAAf,CgLhFtD,GhLmEqD,SAAU,CAaT,SgLhFpB,EhLgF8B,KAAK,GgLhF9B,EhLgF0C,KAAZ,IAAf,CAbS,MAAK,GgLnExB,ChLmEmC,KAAX,IAAf,C;IgLlEzD,C;;MAGI,SjJsHsD,eiJtH7C,CjJsH6C,EiJtHzC,CjJsHyC,C;MiJrHtD,SjJqHsD,eiJrH7C,CjJqH6C,EiJrHzC,CjJqHyC,C;MiJpHtD,OjJmDmE,aiJnDxD,EjJmD0E,KAAlB,EiJnDlD,EjJmDgF,KAA9B,CiJnDxD,KAAX,GjJ6EwD,UiJ7EnC,EjJ6E8C,KAAK,UiJ7E9C,EjJ6E0D,KAAZ,CAAhB,CiJ7ExD,GjJgEuD,UAAW,CAaV,UiJ7EtB,EjJ6EiC,KAAK,UiJ7EjC,EjJ6E6C,KAAZ,CAAhB,CAbU,MAAK,KiJhE3B,CjJgEsC,KAAX,CAAhB,C;IiJ/D3D,C;;MAqBI,WAAO,CAAP,C;QAD8E,OhLsBZ,YgLrBlD,KhLqBmE,KAAjB,EgLrBzC,GhLqBsE,KAA7B,CgLrBlD,KAD8D,GAChD,GADgD,GhLqDxB,SgLpDf,GhLoDyB,KAAK,GgLpDxB,mBAAiB,GAAjB,EAAsB,KAAtB,EhLkQV,SgLlQuC,IhLkQvC,CgLlQU,ChLoDoC,KAAZ,IAAf,C;;YgLnDtD,WAAO,CAAP,C;QAF8E,OhLsBZ,YgLpBlD,KhLoBmE,KAAjB,EgLpBzC,GhLoBsE,KAA7B,CgLpBlD,KAF8D,GAEhD,GAFgD,GhLwCzB,SgLtCd,GhLsCwB,KAAK,GgLtCvB,mBAAiB,KAAjB,EAAwB,GAAxB,EhLiQV,SgLjQwC,CAAC,IA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vH6B,MAAK,EAAY,CDsH9C,cE5HwC,KF4H9B,KAAL,GAAiB,GAAtB,CCtH8C,MAAZ,CAAf,C;MCNC,C;KAFvD,C;gGAGA,yB;MAmHA,6B;MAnHA,wB;QAEwD,ODGF,cAAe,YAAL,CCuH7B,cAAU,SAAL,GAAiB,KAAtB,CDvH6B,MAAK,EAAY,CCuH9C,cA1HyC,KA0H/B,KAAL,GAAiB,KAAtB,CDvH8C,MAAZ,CAAf,C;MCHE,C;KAFxD,C;gGAGA,yB;MAgHA,6B;MAhHA,wB;QAEsD,ODAA,cAAe,YAAL,CCuH7B,cAAU,SAAL,GAAiB,KAAtB,CDvH6B,MAAK,ECAK,KDAO,KAAZ,CAAf,C;MCAA,C;KAFtD,C;gGAGA,yB;MAuHA,aAS6D,0B;MAT7D,+B;MAvHA,wB;QAEwD,O8BAA,eAAW,C9B8H9B,eAAW,oBAAL,SAAK,CAAL,YAAN,C8B9H8B,MAAK,U9BAK,K8BAO,KAAZ,CAAhB,C;M9BAA,C;KAFxD,C;4FAIA,yB;MAyGA,6B;MDnGA,4C;MCNA,wB;QAEqD,ODMD,WC0GjB,cAAU,SAAL,GAAiB,KAAtB,CD1GiB,EDyGjB,cE/GoC,KF+G1B,KAAL,GAAiB,GAAtB,CCzGiB,C;MCNC,C;KAFrD,C;4FAGA,yB;MAsGA,6B;MDnGA,4C;MCHA,wB;QAEsD,ODGF,WC0GjB,cAAU,SAAL,GAAiB,KAAtB,CD1GiB,EC0GjB,cA7GqC,KA6G3B,KAAL,GAAiB,KAAtB,CD1GiB,C;MCHE,C;KAFtD,C;4FAGA,yB;MAmGA,6B;MDnGA,4C;MCAA,wB;QAEoD,ODAA,WC0GjB,cAAU,SAAL,GAAiB,KAAtB,CD1GiB,ECAkB,KDAlB,C;MCAA,C;KAFpD,C;4FAGA,yB;MA0GA,aAS6D,0B;MAT7D,+B;M8B1GA,8C;M9BAA,wB;QAEsD,O8BAA,Y9BiHjB,eAAW,oBAAL,SAAK,CAAL,YAAN,C8BjHiB,E9BAmB,K8BAnB,C;M9BAA,C;KAFtD,C;4FAIA,yB;MA4FA,6B;MDtFA,kD;MCNA,wB;QAEqD,ODMD,cC6FjB,cAAU,SAAL,GAAiB,KAAtB,CD7FiB,ED4FjB,cElGoC,KFkG1B,KAAL,GAAiB,GAAtB,CC5FiB,C;MCNC,C;KAFrD,C;4FAGA,yB;MAyFA,6B;MDtFA,kD;MCHA,wB;QAEsD,ODGF,cC6FjB,cAAU,SAAL,GAAiB,KAAtB,CD7FiB,EC6FjB,cAhGqC,KAgG3B,KAAL,GAAiB,KAAtB,CD7FiB,C;MCHE,C;KAFtD,C;4FAGA,yB;MAsFA,6B;MDtFA,kD;MCAA,wB;QAEoD,ODAA,cC6FjB,cAAU,SAAL,GAAiB,KAAtB,CD7FiB,ECAkB,KDAlB,C;MCAA,C;KAFpD,C;4FAGA,yB;MA6FA,aAS6D,0B;MAT7D,+B;M8B7FA,oD;M9BAA,wB;QAEsD,O8BAA,e9BoGjB,eAAW,oBAAL,SAAK,CAAL,YAAN,C8BpGiB,E9BAmB,K8BAnB,C;M9BAA,C;KAFtD,C;4EAIA,yB;MAAA,4B;MAAA,iC;MAAA,mB;QAE2C,uBAAY,QAAL,SAAK,KAAZ,C;MAAA,C;KAF3C,C;4EAGA,yB;MAAA,4B;MAAA,iC;MAAA,mB;QAE2C,uBAAY,QAAL,SAAK,KAAZ,C;MAAA,C;KAF3C,C;oGAIA,yB;MAAA,8C;MAwEA,6B;MAxEA,wB;QAE+D,0BA+E5B,cAAU,SAAL,GAAiB,KAAtB,CA/E4B,EA+E5B,cA/EqD,KA+E3C,KAAL,GAAiB,KAAtB,CA/E4B,C;MAAA,C;KAF/D,C;4FAIA,yB;MAAA,iC;MuJvHJ,4B;MvJuHI,wB;QAEqD,uBuJtHiC,QvJsH1B,IAAK,KuJtHX,GvJsHoB,KAAM,KuJtHM,CvJsHjC,C;MAAA,C;KAFrD,C;0FAGA,yB;MAAA,iC;MuJrHJ,4B;MvJqHI,wB;QAEoD,uBuJpHgC,QvJoHzB,IAAK,KuJpHX,GvJoHmB,KAAM,KuJpHM,CvJoHhC,C;MAAA,C;KAFpD,C;4FAGA,yB;MAAA,iC;MuJnHJ,4B;MvJmHI,wB;QAEqD,uBuJlHiC,QvJkH1B,IAAK,KuJlHX,GvJkHoB,KAAM,KuJlHM,CvJkHjC,C;MAAA,C;KAFrD,C;4EAGA,yB;MAAA,iC;MuJjHJ,4B;MvJiHI,mB;QAEkC,uBuJhHsB,QAAP,CvJgHR,SuJhHe,CvJgHtB,C;MAAA,C;KAFlC,C;kFAIA,yB;MAAA,0B;MAAA,mB;QAUmC,OAAK,OAAL,SAAK,C;MAAL,C;KAVnC,C;;MAoBqC,gB;IAAA,C;;MAUJ,OAAK,SAAL,GAAiB,K;IAAjB,C;kFACjC,yB;MAAA,aASqD,0B;MATrD,mB;QASmC,OAAK,oBAAL,SAAK,CAAL,Y;MAAA,C;KATnC,C;oFAWA,yB;MF+DJ,0B;MAAA,+B;ME/DI,mB;QASqC,OFiEE,eAAW,OEjEb,SFiEa,CAAX,C;MEjEF,C;KATrC,C;;MAYuC,W;IAAA,C;kFACvC,yB;MAAA,6B;MAAA,mB;QASmC,qBAAU,SAAL,GAAiB,KAAtB,C;MAAA,C;KATnC,C;oFAUA,yB;MAAA,aAS6D,0B;MAT7D,+B;MAAA,mB;QASqC,sBAAW,oBAAL,SAAK,CAAL,YAAN,C;MAAA,C;KATrC,C;;MAiBqC,OApDC,SAAL,GAAiB,K;IAoDb,C;;MAOE,OA3DD,SAAL,GAAiB,K;IA2DX,C;;MAEE,OAAQ,CA7DX,SAAL,GAAiB,KA6DD,Y;IAAR,C;;;;;;MAhP7C,c;MAG8D,qD;MAH9D,a;IAAA,C;;MAAA,2IAG8D,oCAH9D,G;IAAA,C;0EAoPA,yB;MAAA,iC;MAAA,4B;QAW4C,uBAAY,SAAZ,C;MAAA,C;KAX5C,C;4EAYA,yB;MAAA,iC;MAAA,4B;QAU6C,uBAAO,SAAP,C;MAAA,C;KAV7C,C;4EAWA,yB;MAAA,4B;MAAA,iC;MAAA,4B;QAW2C,uBAAY,QAAL,SAAK,CAAZ,C;MAAA,C;KAX3C,C;4EAYA,yB;MAAA,4B;MAAA,iC;MAAA,4B;QAW4C,uBAAY,QAAL,SAAK,SAAZ,C;MAAA,C;KAX5C,C;;M+BpRqB,sB;IAFrB,C;;MAakD,O/B4PL,W+B5PK,aAAQ,KAAR,C/B4PL,C;I+B5PK,C;;MAS1C,aAAQ,KAAR,IAAiB,K/BkJgB,K;I+BjJrC,C;;MAGsC,OAAA,YAAQ,O;IAAR,C;;MAGoB,gCAAS,YAAT,C;IAAA,C;;MAEF,yB;MAAjC,oB;MACnB,eAAoB,C;IADF,C;;MAEO,sBAAQ,YAAM,O;IAAd,C;;MACiC,Q;MAA9B,IAAI,eAAQ,YAAM,OAAlB,C;QAAA,O/BuOS,W+BvOe,aAAM,mBAAN,EAAM,2BAAN,O/BuOf,C;;;Q+BvO8C,MAAM,2BAAuB,YAAM,WAA7B,C;IAA7D,C;;;MAMvB,Q;MAAL,IAAI,eAAC,0EAAD,SAAJ,C;QAAkC,OAAO,K;MAEzC,OAAe,WAAR,YAAQ,EAAS,O/B8HS,K+B9HlB,C;IACnB,C;;MAGY,Q;MAA2B,gBAA3B,gE;MAA2B,c;;QhBu4CvB,U;QADhB,IAAI,wCAAsB,mBAA1B,C;UAAqC,aAAO,I;UAAP,e;;QACrB,6B;QAAhB,OAAgB,gBAAhB,C;UAAgB,2B;UgBv4C6B,2BhBu4CR,OgBv4CQ,S;UAAA,W;YAAwB,oBAAR,YAAQ,EhBu4ChC,Of7wCA,K+B1HgC,C;;UhBu4C/C,IAAI,OAAJ,C;YAAyB,aAAO,K;YAAP,e;;;QAC/C,aAAO,I;;;MgBx4CH,iB;IACJ,C;;MAEkC,OAAA,IAAK,QAAQ,OAAb,KAAqB,C;IAArB,C;;;MA7ClC,qD;MACgC,wBAAK,eAAW,IAAX,CAAL,C;MADhC,Y;IAAA,C;;;;;MAPJ,OAKqB,sDALrB,M;IAAA,C;;MAAA,c;MAKqB,wD;MALrB,a;IAAA,C;;MAAA,2IAKqB,0CALrB,G;IAAA,C;kFAuDA,yB;MAAA,2C;;QAIwC,wB;UAAW,OAAA,aAAK,KAAL,C/BgHV,K;Q+BhHD,C;MAAA,C;MAJxC,6B;QAII,OAAO,qBAAY,gCAAW,IAAX,GAAiB,wBAAjB,CAAZ,C;MACX,C;KALA,C;;MAUwE,e;IAAA,C;;MiJzDb,OAAa,WAAb,SlL4KjB,KAAL,GAAiB,GkL5KkB,EAAS,KAAT,C;IAAb,C;;MAUC,OAAa,WAAb,ShLmKlB,KAAL,GAAiB,KgLnKmB,EAAS,KAAT,C;IAAb,C;;MAWF,OAAc,WjLyK5B,oBiLzKc,SjLyKnB,KAAK,CAAL,iBiLzKiC,EAAS,KAAT,C;IAAd,C;;MASV,uBAAc,SlJiKvB,KkJjKS,EAA6B,WAAW,KAAX,CAA7B,C;IAAA,C;;MASX,Q;MAAA,0DAAmB,kBAAkB,SAAlB,C;IAAnB,C;;MASU,Q;MAAA,0CAAc,KAAd,oBAAwB,kBAAkB,SAAlB,C;IAAxB,C;;MASR,Q;MAAA,2DAAoB,kBAAkB,SAAlB,C;IAApB,C;;MASU,Q;MAAA,2CAAe,KAAf,oBAAyB,kBAAkB,SAAlB,C;IAAzB,C;;MAQd,Q;MAAA,yDAAkB,kBAAkB,SAAlB,C;IAAlB,C;;MASU,Q;MAAA,yCAAa,KAAb,oBAAuB,kBAAkB,SAAlB,C;IAAvB,C;;MAQR,Q;MAAA,0DAAmB,kBAAkB,SAAlB,C;IAAnB,C;;MASU,Q;MAAA,0CAAc,KAAd,oBAAwB,kBAAkB,SAAlB,C;IAAxB,C;;MAYH,kCAAsB,EAAtB,C;IAAA,C;;MAWzB,Q;MAAA,sBAAL,SAAK,EAAa,KAAb,C;MAAL,iB;QAA4B,OAAO,I;;MAA7C,UAAU,I;MACV,IjLhFkE,YiLgF9D,GjLhF+E,KAAjB,EAA6B,CDkK5D,SkLlFzB,6BAAM,UlLkF6B,KAAL,GAAiB,GAAtB,CClK4D,MAA7B,CiLgF9D,IAAJ,C;QAA2B,OAAO,I;MAClC,OlLkJqC,UAAW,OkLlJzC,GjL4E8B,KDsEW,CAAX,C;IkLjJzC,C;;MAQ8C,mCAAuB,EAAvB,C;IAAA,C;;MAW3B,Q;MAAA,sBAAL,SAAK,EAAa,KAAb,C;MAAL,iB;QAA4B,OAAO,I;;MAA7C,UAAU,I;MACV,IjLtGkE,YiLsG9D,GjLtG+E,KAAjB,EAA6B,CCmK5D,SgL7DzB,8BAAO,UhL6D4B,KAAL,GAAiB,KAAtB,CDnK4D,MAA7B,CiLsG9D,IAAJ,C;QAA4B,OAAO,I;MACnC,OhL6HuC,WAAY,QgL7H5C,GjLgEgC,KC6DY,CAAZ,C;IgL5H3C,C;;MAQ0C,iCAAqB,EAArB,C;IAAA,C;;MAWtC,WAAW,KAAX,C;MAEA,aAAa,SAAK,O;MAClB,IAAI,WAAU,CAAd,C;QAAiB,OAAO,I;MAExB,YAAkB,4BAAK,U;MACvB,S;MAEA,gBAAgB,qBAAK,CAAL,C;MAChB,IAAI,YAAY,EAAhB,C;QACI,IAAI,WAAU,CAAV,IAAe,cAAa,EAAhC,C;UAAqC,OAAO,I;QAC5C,QAAQ,C;;;QAER,QAAQ,C;;MAGZ,ajLkGmC,SiLlGtB,KjLkGsB,C;MiLjGnC,qBjLnFoD,WiLmF/B,KjLnF+B,EiLmFvB,MjLnFuB,C;MiLoFpD,aAAa,W;MACb,aAAU,KAAV,MAAsB,MAAtB,M;QACI,YAAY,QAAQ,qBAAK,CAAL,CAAR,EAAiB,KAAjB,C;QAEZ,IAAI,QAAQ,CAAZ,C;UAAe,OAAO,I;QACtB,IjLlJ8D,YiLkJ1D,MjLlJ2E,KAAjB,EiLkJjD,cjLlJ8E,KAA7B,CiLkJ1D,IAAJ,C;UAA6B,OAAO,I;QAEpC,SjLxGkD,SAAe,YiLwGjE,MjLxG4D,KAAK,EiLwGvD,MjLxGmE,KAAZ,CAAf,C;QiL0GlD,mBAAmB,M;QACnB,SjLrIiD,SiLqIjD,MjLrI2D,KAAK,GAAW,CA2N5C,SiLtFrB,KjLsFqB,CA3N4C,MAAX,IAAf,C;QiLsIjD,IjLxJ8D,YiLwJ1D,MjLxJ2E,KAAjB,EiLwJjD,YjLxJ8E,KAA7B,CiLwJ1D,IAAJ,C;UAA2B,OAAO,I;;MAGtC,OAAO,M;IACX,C;;MAQ4C,kCAAsB,EAAtB,C;IAAA,C;;MAWxC,WAAW,KAAX,C;MAEA,aAAa,SAAK,O;MAClB,IAAI,WAAU,CAAd,C;QAAiB,OAAO,I;MAExB,YAAmB,6BAAM,U;MACzB,S;MAEA,gBAAgB,qBAAK,CAAL,C;MAChB,IAAI,YAAY,EAAhB,C;QACI,IAAI,WAAU,CAAV,IAAe,cAAa,EAAhC,C;UAAqC,OAAO,I;QAC5C,QAAQ,C;;;QAER,QAAQ,C;;MAIZ,ajL6CmC,SiL7CtB,KjL6CsB,C;MiL5CnC,qBlJrIsD,YkJqIjC,KlJrIiC,E/BwHjB,UAAW,oBiLanB,MjLbc,KAAK,CAAL,iBAAN,C+BxHiB,C;MkJsItD,aAAa,2B;MACb,aAAU,KAAV,MAAsB,MAAtB,M;QACI,YAAY,QAAQ,qBAAK,CAAL,CAAR,EAAiB,KAAjB,C;QAEZ,IAAI,QAAQ,CAAZ,C;UAAe,OAAO,I;QACtB,IlJ/L+D,akJ+L3D,MlJ/L6E,KAAlB,EkJ+LlD,clJ/LgF,KAA9B,CkJ+L3D,IAAJ,C;UAA6B,OAAO,I;QAEpC,SlJ1JoD,UkJ0JpD,MlJ1J+D,KAAK,UAAY,C/BqI/C,UAAW,oBiLqBlC,MjLrB6B,KAAK,CAAL,iBAAN,C+BrI+C,MAAZ,CAAhB,C;QkJ4JpD,mBAAmB,M;QACnB,SlJvLmD,UkJuLnD,MlJvL8D,KAAK,KAAW,C/B+J7C,UAAW,oBAAL,CAyDR,SiLjCrB,KjLiCqB,CAzDQ,MAAK,CAAL,iBAAN,C+B/J6C,MAAX,CAAhB,C;QkJwLnD,IlJrM+D,akJqM3D,MlJrM6E,KAAlB,EkJqMlD,YlJrMgF,KAA9B,CkJqM3D,IAAJ,C;UAA2B,OAAO,I;;MAGtC,OAAO,M;IACX,C;;M1KrQkD,OAAuB,0BAAtB,KAAO,WAAe,EAAU,KAAO,WAAjB,C;IAAvB,C;;MAEG,OAAC,gCAAuB,iBAAU,gCAAV,C;IAAxB,C;;MAGD,OPwSZ,SAvGI,oBOjMS,EPiMd,KAAK,CAAL,iBOjMc,KPiMT,oBOjMuB,EPiM5B,KAAK,CAAL,iBOjMc,CPwSH,QAAV,C;IOxSY,C;;MAEG,OPsSf,SAvGI,oBO/LY,EP+LjB,KAAK,CAAL,iBO/LiB,QP+LZ,oBO/L0B,EP+L/B,KAAK,CAAL,iBO/LiB,CPsSN,QAAV,C;IOtSe,C;;MAOnD,eAAe,EwByLoB,K;MxBxLnC,cAAc,EwBwLqB,K;MxBvLnC,IAAI,qBAAU,CAAd,C;QACI,OwB2C+D,axB3CpD,EwB2CsE,KAAlB,ExB3C/C,EwB2C6E,KAA9B,CxB3CpD,IAAJ,GAAa,aAAb,GAA2B,a;;MAItC,IAAI,uBAAY,CAAhB,C;QACI,OAAO,UAAM,aAAW,OAAX,CAAN,C;;MAIX,eAAiB,4BAAc,CAAd,CAAD,KAAoB,OAApB,CAAD,WAAkC,CAAlC,C;MACf,UAAU,kBAAW,kBAAW,OAAX,CAAX,C;MACV,OAAO,UAAM,iCwBgCsD,aAAkB,CxBhCzD,UAAM,GAAN,CwBgCyD,MAAlB,EAA8B,CxBhCvD,UAAM,OAAN,CwBgCuD,MAA9B,CxBhCvC,KAAJ,GAAkC,CAAlC,GAAyC,CAApD,EAAN,C;IAEX,C;;MAOe,Q;MAHX,eAAe,EwBqKoB,K;MxBpKnC,cAAc,EwBoKqB,K;MxBnKnC,IAAI,qBAAU,CAAd,C;QACW,IwBuBwD,axBvBpD,EwBuBsE,KAAlB,ExBvB/C,EwBuB6E,KAA9B,CxBvBpD,IAAJ,C;UACH,S;;;UAEA,OwB8CgD,UxB9ChD,EwB8C2D,KAAK,UxB9C3D,EwB8CuE,KAAZ,CAAhB,C;;QxBjDpD,W;;MAQJ,IAAI,uBAAY,CAAhB,C;QACI,OAAO,UAAM,gBAAW,OAAX,CAAN,C;;MAIX,eAAiB,4BAAc,CAAd,CAAD,KAAoB,OAApB,CAAD,WAAkC,CAAlC,C;MACf,UAAU,kBAAW,kBAAW,OAAX,CAAX,C;MACV,OAAO,UAAM,awBQsD,aAAkB,CxBR9D,UAAM,GAAN,CwBQ8D,MAAlB,EAA8B,CxBR5D,UAAM,OAAN,CwBQ4D,MAA9B,CxBR5C,KAAJ,GAAkC,OAAlC,KAAN,CAAN,C;IACX,C;;MAII,IAAE,QAAF,CAAE,CAAF,C;QADyC,OAC5B,W;;QACb,SP+LuC,aO/LlC,4BAAK,UP+L0C,KAAb,CO/LvC,C;UAFyC,OAEP,4BAAK,U;;UACvC,SP8LuC,aO9LlC,4BAAK,UP8L0C,KAAb,CO9LvC,C;YAHyC,OAGP,4BAAK,U;eACvC,SAAK,UAAL,C;YAJyC,OPyON,SOrOX,YAAF,CAAE,CPqOW,C;;;YOzOM,OPcY,SAAU,CA2N5B,SOpOP,YAAnB,IAAI,UAAe,CPoOO,CA3N4B,MAAK,GAAW,CA2N5C,SOpOY,UPoOZ,CA3N4C,MAAX,IAAf,C;;;;IOdZ,C;;MAUzC,IAAE,QAAF,CAAE,CAAF,C;QAD2C,OAC9B,2B;;QACb,SwByLuC,cxBzLlC,6BAAM,UwByL0C,KAAd,CxBzLvC,C;UAF2C,OAER,6BAAM,U;;UACzC,SwBwLuC,cxBxLlC,6BAAM,UwBwL0C,KAAd,CxBxLvC,C;YAH2C,OAGR,6BAAM,U;eACzC,4C;YAJ2C,OwB+OL,UxB3Od,uBAAF,CAAE,CwB2Oc,C;;;YxB/OK,OwBQY,UAAW,CAuO5B,UxBxOF,uBAA3B,IAAI,oBAAuB,CwBwOE,CAvO4B,MAAK,KAAW,CxBDzB,gCwBCyB,MAAX,CAAhB,C;;;;IxBRZ,C;;MAYH,QAAC,CAAqB,GAAf,UAAP,IAAmC,CAAC,MAAO,EAAW,IAAJ,EAAf,IAAgC,C;IAAnE,C;;MAGE,OAAC,qBAAO,EAAP,CAAW,WAAZ,GAAyB,IAAzB,GAAiC,YAAjC,W;IAAA,C;;MAGA,uBAAc,CAAd,EAAiB,EAAjB,C;IAAA,C;;MAG1C,IAAI,gBAAK,CAAT,C;QAAY,OAAS,WAAF,CAAE,EAAS,IAAT,C;MAErB,eAAiB,qBAAO,CAAP,CAAD,yBAAa,IAAb,EAAD,WAAwB,CAAxB,C;MACf,UAAU,WAAI,sCAAW,IAAX,EAAJ,C;MACV,IAAI,kBAAO,IAAX,C;QACI,uCAAO,IAAP,E;QACA,4CAAY,CAAZ,E;;MAEJ,OAAgB,WAAT,QAAS,EAAS,IAAT,CAAT,GAA8B,WAAJ,GAAI,EAAS,IAAT,C;IACzC,C;;I2K5FA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IjGsE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"} \ No newline at end of file +{"version":3,"file":"kotlin.js","sources":["wrapper.js","arrayUtils.js","callableReferenceUtils.js","conversions.js","core.js","long.js","markerFunctions.js","misc.js","polyfills.js","rtti.js","arrayUtils.kt","runtime/Enum.kt","primitiveCompanionObjects.kt","generated/_Arrays.kt","generated/_Ranges.kt","kotlin/UByte.kt","kotlin/UInt.kt","kotlin/UShort.kt","Ranges.kt","collections/Collections.kt","collections/Maps.kt","collections/Sets.kt","text/StringNumberConversions.kt","kotlin/UnsignedUtils.kt","collections/Iterables.kt","collections/Sequences.kt","util/Preconditions.kt","generated/_ArraysJs.kt","comparisons/Comparisons.kt","kotlin/Comparator.kt","util/Standard.kt","generated/_ComparisonsJs.kt","generated/_Collections.kt","kotlin/collections.kt","collections/Iterators.kt","generated/_Comparisons.kt","generated/_Maps.kt","generated/_Sequences.kt","generated/_Sets.kt","generated/_Strings.kt","text/Strings.kt","kotlin/text/string.kt","kotlin/UByteArray.kt","kotlin/UIntArray.kt","kotlin/ULongArray.kt","kotlin/ULong.kt","kotlin/UShortArray.kt","generated/_UArrays.kt","generated/_UCollections.kt","generated/_UComparisons.kt","generated/_URanges.kt","generated/_USequences.kt","Collections.kt","Iterators.kt","ProgressionIterators.kt","Progressions.kt","Range.kt","Unit.kt","annotation/Annotations.kt","internal/InternalAnnotations.kt","internal/progressionUtil.kt","reflect/KParameter.kt","reflect/KType.kt","reflect/KVariance.kt","reflect/KVisibility.kt","kotlin/builtins.kt","kotlin/jsTypeOf.kt","kotlin/kotlin.kt","kotlin/coroutines/CoroutineImpl.kt","util/Result.kt","coroutines/Continuation.kt","kotlin/coroutines/intrinsics/IntrinsicsJs.kt","kotlin/currentBeMisc.kt","kotlin/jsOperators.kt","kotlin/math_js-v1.kt","kotlin/numbers_js-v1.kt","kotlin/text/numberConversions_js-v1.kt","generated/_CollectionsJs.kt","generated/_StringsJs.kt","generated/_UArraysJs.kt","jquery/ui.kt","kotlin/annotations.kt","kotlin/annotationsJVM.kt","kotlin/collections/AbstractMutableCollection.kt","kotlin/collections/AbstractMutableList.kt","kotlin/collections/AbstractMutableMap.kt","kotlin/collections/AbstractMutableSet.kt","kotlin/collections/ArrayList.kt","kotlin/collections/ArraySorting.kt","kotlin/collections/ArraysJs.kt","kotlin/collections/EqualityComparator.kt","kotlin/collections/HashMap.kt","kotlin/collections/HashSet.kt","kotlin/collections/InternalHashCodeMap.kt","kotlin/collections/InternalMap.kt","kotlin/collections/InternalStringMap.kt","kotlin/collections/LinkedHashMap.kt","kotlin/collections/LinkedHashSet.kt","kotlin/concurrent.kt","kotlin/console.kt","kotlin/coroutines/SafeContinuationJs.kt","kotlin/coroutines/js/internal/EmptyContinuation.kt","kotlin/date.kt","kotlin/dom/Builders.kt","kotlin/dom/Classes.kt","text/regex/RegexExtensions.kt","text/StringBuilder.kt","kotlin/dom/Dom.kt","kotlin/dom/EventListener.kt","kotlin/dom/ItemArrayLike.kt","kotlin/dom/Mutations.kt","kotlin/dynamic.kt","kotlin/exceptionUtils.kt","kotlin/exceptions.kt","kotlin/grouping.kt","collections/Grouping.kt","kotlin/js.math.kt","kotlin/json.kt","kotlin/math.kt","kotlin/numbers.kt","kotlin/promise.kt","kotlin/random/PlatformRandom.kt","kotlin/reflect/JsClass.kt","kotlin/reflect/KClassImpl.kt","kotlin/reflect/KTypeHelpers.kt","kotlin/reflect/KTypeImpl.kt","kotlin/reflect/KTypeParameterImpl.kt","kotlin/reflect/primitives.kt","kotlin/reflect/reflection.kt","kotlin/regexp.kt","kotlin/sequence.kt","kotlin/text/CharacterCodingExceptionJs.kt","kotlin/text/StringBuilderJs.kt","kotlin/text/char.kt","kotlin/text/numberConversions.kt","kotlin/text/regex.kt","kotlin/text/stringsCode.kt","kotlin/text/utf8Encoding.kt","kotlin/time/DurationUnit.kt","kotlin/time/MonoTimeSource.kt","kotlin/time/formatToDecimals.kt","org.w3c/deprecated.kt","org.w3c/org.khronos.webgl.kt","org.w3c/org.w3c.dom.clipboard.kt","org.w3c/org.w3c.dom.css.kt","org.w3c/org.w3c.dom.events.kt","org.w3c/org.w3c.dom.kt","org.w3c/org.w3c.fetch.kt","org.w3c/org.w3c.dom.mediacapture.kt","org.w3c/org.w3c.dom.pointerevents.kt","org.w3c/org.w3c.dom.svg.kt","org.w3c/org.w3c.files.kt","org.w3c/org.w3c.notifications.kt","org.w3c/org.w3c.workers.kt","org.w3c/org.w3c.xhr.kt","annotations/Experimental.kt","annotations/ExperimentalStdlibApi.kt","annotations/Inference.kt","annotations/Multiplatform.kt","annotations/OptIn.kt","collections/AbstractCollection.kt","collections/AbstractIterator.kt","collections/AbstractList.kt","collections/AbstractMap.kt","collections/AbstractSet.kt","collections/ArrayDeque.kt","collections/Arrays.kt","collections/IndexedValue.kt","collections/MapAccessors.kt","collections/MapWithDefault.kt","collections/MutableCollections.kt","collections/ReversedViews.kt","collections/SequenceBuilder.kt","collections/SlidingWindow.kt","collections/UArraySorting.kt","contracts/ContractBuilder.kt","coroutines/ContinuationInterceptor.kt","coroutines/CoroutineContext.kt","coroutines/CoroutineContextImpl.kt","coroutines/intrinsics/Intrinsics.kt","experimental/bitwiseOperations.kt","experimental/inferenceMarker.kt","internal/Annotations.kt","properties/Delegates.kt","properties/ObservableProperty.kt","random/Random.kt","random/URandom.kt","random/XorWowRandom.kt","ranges/Ranges.kt","reflect/KClasses.kt","reflect/typeOf.kt","text/Appendable.kt","text/Char.kt","text/Indent.kt","text/Typography.kt","text/regex/MatchResult.kt","time/Duration.kt","time/DurationUnit.kt","time/ExperimentalTime.kt","time/TimeSource.kt","time/TimeSources.kt","time/measureTime.kt","util/HashCode.kt","util/KotlinVersion.kt","util/Lateinit.kt","util/Lazy.kt","util/Numbers.kt","util/Suspend.kt","util/Tuples.kt","kotlin/UIntRange.kt","kotlin/UIterators.kt","kotlin/ULongRange.kt","kotlin/UMath.kt","kotlin/UNumbers.kt","kotlin/UProgressionUtil.kt","kotlin/UStrings.kt","kotlin/annotations/Unsigned.kt","kotlin/MathH.kt","coroutines.kt","CoroutinesLibrary.kt","coroutinesIntrinsics.kt","ContinuationInterceptor.kt","CoroutineContext.kt","CoroutineContextImpl.kt","Coroutines.kt","Intrinsics.kt","SequenceBuilder.kt"],"sourcesContent":["(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define('kotlin', ['exports'], factory);\n }\n else if (typeof exports === 'object') {\n factory(module.exports);\n }\n else {\n root.kotlin = {};\n factory(root.kotlin);\n }\n}(this, function (Kotlin) {\n var _ = Kotlin;\n\n insertContent();\n}));\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\nKotlin.isBooleanArray = function (a) {\n return (Array.isArray(a) || a instanceof Int8Array) && a.$type$ === \"BooleanArray\"\n};\n\nKotlin.isByteArray = function (a) {\n return a instanceof Int8Array && a.$type$ !== \"BooleanArray\"\n};\n\nKotlin.isShortArray = function (a) {\n return a instanceof Int16Array\n};\n\nKotlin.isCharArray = function (a) {\n return a instanceof Uint16Array && a.$type$ === \"CharArray\"\n};\n\nKotlin.isIntArray = function (a) {\n return a instanceof Int32Array\n};\n\nKotlin.isFloatArray = function (a) {\n return a instanceof Float32Array\n};\n\nKotlin.isDoubleArray = function (a) {\n return a instanceof Float64Array\n};\n\nKotlin.isLongArray = function (a) {\n return Array.isArray(a) && a.$type$ === \"LongArray\"\n};\n\nKotlin.isArray = function (a) {\n return Array.isArray(a) && !a.$type$;\n};\n\nKotlin.isArrayish = function (a) {\n return Array.isArray(a) || ArrayBuffer.isView(a)\n};\n\nKotlin.arrayToString = function (a) {\n var toString = Kotlin.isCharArray(a) ? String.fromCharCode : Kotlin.toString;\n return \"[\" + Array.prototype.map.call(a, function(e) { return toString(e); }).join(\", \") + \"]\";\n};\n\nKotlin.arrayDeepToString = function (arr) {\n return Kotlin.kotlin.collections.contentDeepToStringImpl(arr);\n};\n\nKotlin.arrayEquals = function (a, b) {\n if (a === b) {\n return true;\n }\n if (!Kotlin.isArrayish(b) || a.length !== b.length) {\n return false;\n }\n\n for (var i = 0, n = a.length; i < n; i++) {\n if (!Kotlin.equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n};\n\nKotlin.arrayDeepEquals = function (a, b) {\n return Kotlin.kotlin.collections.contentDeepEqualsImpl(a, b);\n};\n\nKotlin.arrayHashCode = function (arr) {\n var result = 1;\n for (var i = 0, n = arr.length; i < n; i++) {\n result = ((31 * result | 0) + Kotlin.hashCode(arr[i])) | 0;\n }\n return result;\n};\n\nKotlin.arrayDeepHashCode = function (arr) {\n return Kotlin.kotlin.collections.contentDeepHashCodeImpl(arr);\n};\n\nKotlin.primitiveArraySort = function (array) {\n array.sort(Kotlin.doubleCompareTo)\n};\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\nKotlin.getCallableRef = function(name, f) {\n f.callableName = name;\n return f;\n};\n\nKotlin.getPropertyCallableRef = function(name, paramCount, getter, setter) {\n getter.get = getter;\n getter.set = setter;\n getter.callableName = name;\n return getPropertyRefClass(getter, setter, propertyRefClassMetadataCache[paramCount]);\n};\n\nfunction getPropertyRefClass(obj, setter, cache) {\n obj.$metadata$ = getPropertyRefMetadata(typeof setter === \"function\" ? cache.mutable : cache.immutable);\n obj.constructor = obj;\n return obj;\n}\n\nvar propertyRefClassMetadataCache = [\n {\n mutable: { value: null, implementedInterface: function () {\n return Kotlin.kotlin.reflect.KMutableProperty0 }\n },\n immutable: { value: null, implementedInterface: function () {\n return Kotlin.kotlin.reflect.KProperty0 }\n }\n },\n {\n mutable: { value: null, implementedInterface: function () {\n return Kotlin.kotlin.reflect.KMutableProperty1 }\n },\n immutable: { value: null, implementedInterface: function () {\n return Kotlin.kotlin.reflect.KProperty1 }\n }\n }\n];\n\nfunction getPropertyRefMetadata(cache) {\n if (cache.value === null) {\n cache.value = {\n interfaces: [cache.implementedInterface()],\n baseClass: null,\n functions: {},\n properties: {},\n types: {},\n staticMembers: {}\n };\n }\n return cache.value;\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\nKotlin.toShort = function (a) {\n return (a & 0xFFFF) << 16 >> 16;\n};\n\nKotlin.toByte = function (a) {\n return (a & 0xFF) << 24 >> 24;\n};\n\nKotlin.toChar = function (a) {\n return a & 0xFFFF;\n};\n\nKotlin.numberToLong = function (a) {\n return a instanceof Kotlin.Long ? a : Kotlin.Long.fromNumber(a);\n};\n\nKotlin.numberToInt = function (a) {\n return a instanceof Kotlin.Long ? a.toInt() : Kotlin.doubleToInt(a);\n};\n\nKotlin.numberToShort = function (a) {\n return Kotlin.toShort(Kotlin.numberToInt(a));\n};\n\nKotlin.numberToByte = function (a) {\n return Kotlin.toByte(Kotlin.numberToInt(a));\n};\n\nKotlin.numberToDouble = function (a) {\n return +a;\n};\n\nKotlin.numberToChar = function (a) {\n return Kotlin.toChar(Kotlin.numberToInt(a));\n};\n\nKotlin.doubleToInt = function(a) {\n if (a > 2147483647) return 2147483647;\n if (a < -2147483648) return -2147483648;\n return a | 0;\n};\n\nKotlin.toBoxedChar = function (a) {\n if (a == null) return a;\n if (a instanceof Kotlin.BoxedChar) return a;\n return new Kotlin.BoxedChar(a);\n};\n\nKotlin.unboxChar = function(a) {\n if (a == null) return a;\n return Kotlin.toChar(a);\n};\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\nKotlin.equals = function (obj1, obj2) {\n if (obj1 == null) {\n return obj2 == null;\n }\n\n if (obj2 == null) {\n return false;\n }\n\n if (obj1 !== obj1) {\n return obj2 !== obj2;\n }\n\n if (typeof obj1 === \"object\" && typeof obj1.equals === \"function\") {\n return obj1.equals(obj2);\n }\n\n if (typeof obj1 === \"number\" && typeof obj2 === \"number\") {\n return obj1 === obj2 && (obj1 !== 0 || 1 / obj1 === 1 / obj2)\n }\n\n return obj1 === obj2;\n};\n\nKotlin.hashCode = function (obj) {\n if (obj == null) {\n return 0;\n }\n var objType = typeof obj;\n if (\"object\" === objType) {\n return \"function\" === typeof obj.hashCode ? obj.hashCode() : getObjectHashCode(obj);\n }\n if (\"function\" === objType) {\n return getObjectHashCode(obj);\n }\n if (\"number\" === objType) {\n return Kotlin.numberHashCode(obj);\n }\n if (\"boolean\" === objType) {\n return Number(obj)\n }\n\n var str = String(obj);\n return getStringHashCode(str);\n};\n\n\nKotlin.toString = function (o) {\n if (o == null) {\n return \"null\";\n }\n else if (Kotlin.isArrayish(o)) {\n return \"[...]\";\n }\n else {\n return o.toString();\n }\n};\n\n/** @const */\nvar POW_2_32 = 4294967296;\n// TODO: consider switching to Symbol type once we are on ES6.\n/** @const */\nvar OBJECT_HASH_CODE_PROPERTY_NAME = \"kotlinHashCodeValue$\";\n\nfunction getObjectHashCode(obj) {\n if (!(OBJECT_HASH_CODE_PROPERTY_NAME in obj)) {\n var hash = (Math.random() * POW_2_32) | 0; // Make 32-bit singed integer.\n Object.defineProperty(obj, OBJECT_HASH_CODE_PROPERTY_NAME, { value: hash, enumerable: false });\n }\n return obj[OBJECT_HASH_CODE_PROPERTY_NAME];\n}\n\nfunction getStringHashCode(str) {\n var hash = 0;\n for (var i = 0; i < str.length; i++) {\n var code = str.charCodeAt(i);\n hash = (hash * 31 + code) | 0; // Keep it 32-bit.\n }\n return hash;\n}\n\nKotlin.identityHashCode = getObjectHashCode;\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Copyright 2009 The Closure Library Authors. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS-IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\n/**\n * Constructs a 64-bit two's-complement integer, given its low and high 32-bit\n * values as *signed* integers. See the from* functions below for more\n * convenient ways of constructing Longs.\n *\n * The internal representation of a long is the two given signed, 32-bit values.\n * We use 32-bit pieces because these are the size of integers on which\n * Javascript performs bit-operations. For operations like addition and\n * multiplication, we split each number into 16-bit pieces, which can easily be\n * multiplied within Javascript's floating-point representation without overflow\n * or change in sign.\n *\n * In the algorithms below, we frequently reduce the negative case to the\n * positive case by negating the input(s) and then post-processing the result.\n * Note that we must ALWAYS check specially whether those values are MIN_VALUE\n * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\n * a positive number, it overflows back into a negative). Not handling this\n * case would often result in infinite recursion.\n *\n * @param {number} low The low (signed) 32 bits of the long.\n * @param {number} high The high (signed) 32 bits of the long.\n * @constructor\n * @final\n */\nKotlin.Long = function(low, high) {\n /**\n * @type {number}\n * @private\n */\n this.low_ = low | 0; // force into 32 signed bits.\n\n /**\n * @type {number}\n * @private\n */\n this.high_ = high | 0; // force into 32 signed bits.\n};\n\nKotlin.Long.$metadata$ = {\n kind: \"class\",\n simpleName: \"Long\",\n interfaces:[]\n};\n\n\n// NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the\n// from* methods on which they depend.\n\n\n/**\n * A cache of the Long representations of small integer values.\n * @type {!Object}\n * @private\n */\nKotlin.Long.IntCache_ = {};\n\n\n/**\n * Returns a Long representing the given (32-bit) integer value.\n * @param {number} value The 32-bit integer in question.\n * @return {!Kotlin.Long} The corresponding Long value.\n */\nKotlin.Long.fromInt = function(value) {\n if (-128 <= value && value < 128) {\n var cachedObj = Kotlin.Long.IntCache_[value];\n if (cachedObj) {\n return cachedObj;\n }\n }\n\n var obj = new Kotlin.Long(value | 0, value < 0 ? -1 : 0);\n if (-128 <= value && value < 128) {\n Kotlin.Long.IntCache_[value] = obj;\n }\n return obj;\n};\n\n\n/**\n * Converts this number value to `Long`.\n * The fractional part, if any, is rounded down towards zero.\n * Returns zero if this `Double` value is `NaN`, `Long.MIN_VALUE` if it's less than `Long.MIN_VALUE`,\n * `Long.MAX_VALUE` if it's bigger than `Long.MAX_VALUE`.\n * @param {number} value The number in question.\n * @return {!Kotlin.Long} The corresponding Long value.\n */\nKotlin.Long.fromNumber = function(value) {\n if (isNaN(value)) {\n return Kotlin.Long.ZERO;\n } else if (value <= -Kotlin.Long.TWO_PWR_63_DBL_) {\n return Kotlin.Long.MIN_VALUE;\n } else if (value + 1 >= Kotlin.Long.TWO_PWR_63_DBL_) {\n return Kotlin.Long.MAX_VALUE;\n } else if (value < 0) {\n return Kotlin.Long.fromNumber(-value).negate();\n } else {\n return new Kotlin.Long(\n (value % Kotlin.Long.TWO_PWR_32_DBL_) | 0,\n (value / Kotlin.Long.TWO_PWR_32_DBL_) | 0);\n }\n};\n\n\n/**\n * Returns a Long representing the 64-bit integer that comes by concatenating\n * the given high and low bits. Each is assumed to use 32 bits.\n * @param {number} lowBits The low 32-bits.\n * @param {number} highBits The high 32-bits.\n * @return {!Kotlin.Long} The corresponding Long value.\n */\nKotlin.Long.fromBits = function(lowBits, highBits) {\n return new Kotlin.Long(lowBits, highBits);\n};\n\n\n/**\n * Returns a Long representation of the given string, written using the given\n * radix.\n * @param {string} str The textual representation of the Long.\n * @param {number=} opt_radix The radix in which the text is written.\n * @return {!Kotlin.Long} The corresponding Long value.\n */\nKotlin.Long.fromString = function(str, opt_radix) {\n if (str.length == 0) {\n throw Error('number format error: empty string');\n }\n\n var radix = opt_radix || 10;\n if (radix < 2 || 36 < radix) {\n throw Error('radix out of range: ' + radix);\n }\n\n if (str.charAt(0) == '-') {\n return Kotlin.Long.fromString(str.substring(1), radix).negate();\n } else if (str.indexOf('-') >= 0) {\n throw Error('number format error: interior \"-\" character: ' + str);\n }\n\n // Do several (8) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = Kotlin.Long.fromNumber(Math.pow(radix, 8));\n\n var result = Kotlin.Long.ZERO;\n for (var i = 0; i < str.length; i += 8) {\n var size = Math.min(8, str.length - i);\n var value = parseInt(str.substring(i, i + size), radix);\n if (size < 8) {\n var power = Kotlin.Long.fromNumber(Math.pow(radix, size));\n result = result.multiply(power).add(Kotlin.Long.fromNumber(value));\n } else {\n result = result.multiply(radixToPower);\n result = result.add(Kotlin.Long.fromNumber(value));\n }\n }\n return result;\n};\n\n\n// NOTE: the compiler should inline these constant values below and then remove\n// these variables, so there should be no runtime penalty for these.\n\n\n/**\n * Number used repeated below in calculations. This must appear before the\n * first call to any from* function below.\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_16_DBL_ = 1 << 16;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_24_DBL_ = 1 << 24;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_32_DBL_ =\n Kotlin.Long.TWO_PWR_16_DBL_ * Kotlin.Long.TWO_PWR_16_DBL_;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_31_DBL_ =\n Kotlin.Long.TWO_PWR_32_DBL_ / 2;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_48_DBL_ =\n Kotlin.Long.TWO_PWR_32_DBL_ * Kotlin.Long.TWO_PWR_16_DBL_;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_64_DBL_ =\n Kotlin.Long.TWO_PWR_32_DBL_ * Kotlin.Long.TWO_PWR_32_DBL_;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_63_DBL_ =\n Kotlin.Long.TWO_PWR_64_DBL_ / 2;\n\n\n/** @type {!Kotlin.Long} */\nKotlin.Long.ZERO = Kotlin.Long.fromInt(0);\n\n\n/** @type {!Kotlin.Long} */\nKotlin.Long.ONE = Kotlin.Long.fromInt(1);\n\n\n/** @type {!Kotlin.Long} */\nKotlin.Long.NEG_ONE = Kotlin.Long.fromInt(-1);\n\n\n/** @type {!Kotlin.Long} */\nKotlin.Long.MAX_VALUE =\n Kotlin.Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0);\n\n\n/** @type {!Kotlin.Long} */\nKotlin.Long.MIN_VALUE = Kotlin.Long.fromBits(0, 0x80000000 | 0);\n\n\n/**\n * @type {!Kotlin.Long}\n * @private\n */\nKotlin.Long.TWO_PWR_24_ = Kotlin.Long.fromInt(1 << 24);\n\n\n/** @return {number} The value, assuming it is a 32-bit integer. */\nKotlin.Long.prototype.toInt = function() {\n return this.low_;\n};\n\n\n/** @return {number} The closest floating-point representation to this value. */\nKotlin.Long.prototype.toNumber = function() {\n return this.high_ * Kotlin.Long.TWO_PWR_32_DBL_ +\n this.getLowBitsUnsigned();\n};\n\n/** @return {number} The 32-bit hashCode of this value. */\nKotlin.Long.prototype.hashCode = function() {\n return this.high_ ^ this.low_;\n};\n\n/**\n * @param {number=} opt_radix The radix in which the text should be written.\n * @return {string} The textual representation of this value.\n * @override\n */\nKotlin.Long.prototype.toString = function(opt_radix) {\n var radix = opt_radix || 10;\n if (radix < 2 || 36 < radix) {\n throw Error('radix out of range: ' + radix);\n }\n\n if (this.isZero()) {\n return '0';\n }\n\n if (this.isNegative()) {\n if (this.equalsLong(Kotlin.Long.MIN_VALUE)) {\n // We need to change the Long value before it can be negated, so we remove\n // the bottom-most digit in this base and then recurse to do the rest.\n var radixLong = Kotlin.Long.fromNumber(radix);\n var div = this.div(radixLong);\n var rem = div.multiply(radixLong).subtract(this);\n return div.toString(radix) + rem.toInt().toString(radix);\n } else {\n return '-' + this.negate().toString(radix);\n }\n }\n\n // Do several (6) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = Kotlin.Long.fromNumber(Math.pow(radix, 6));\n\n var rem = this;\n var result = '';\n while (true) {\n var remDiv = rem.div(radixToPower);\n var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt();\n var digits = intval.toString(radix);\n\n rem = remDiv;\n if (rem.isZero()) {\n return digits + result;\n } else {\n while (digits.length < 6) {\n digits = '0' + digits;\n }\n result = '' + digits + result;\n }\n }\n};\n\n\n/** @return {number} The high 32-bits as a signed value. */\nKotlin.Long.prototype.getHighBits = function() {\n return this.high_;\n};\n\n\n/** @return {number} The low 32-bits as a signed value. */\nKotlin.Long.prototype.getLowBits = function() {\n return this.low_;\n};\n\n\n/** @return {number} The low 32-bits as an unsigned value. */\nKotlin.Long.prototype.getLowBitsUnsigned = function() {\n return (this.low_ >= 0) ?\n this.low_ : Kotlin.Long.TWO_PWR_32_DBL_ + this.low_;\n};\n\n\n/**\n * @return {number} Returns the number of bits needed to represent the absolute\n * value of this Long.\n */\nKotlin.Long.prototype.getNumBitsAbs = function() {\n if (this.isNegative()) {\n if (this.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return 64;\n } else {\n return this.negate().getNumBitsAbs();\n }\n } else {\n var val = this.high_ != 0 ? this.high_ : this.low_;\n for (var bit = 31; bit > 0; bit--) {\n if ((val & (1 << bit)) != 0) {\n break;\n }\n }\n return this.high_ != 0 ? bit + 33 : bit + 1;\n }\n};\n\n\n/** @return {boolean} Whether this value is zero. */\nKotlin.Long.prototype.isZero = function() {\n return this.high_ == 0 && this.low_ == 0;\n};\n\n\n/** @return {boolean} Whether this value is negative. */\nKotlin.Long.prototype.isNegative = function() {\n return this.high_ < 0;\n};\n\n\n/** @return {boolean} Whether this value is odd. */\nKotlin.Long.prototype.isOdd = function() {\n return (this.low_ & 1) == 1;\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long equals the other.\n */\nKotlin.Long.prototype.equalsLong = function(other) {\n return (this.high_ == other.high_) && (this.low_ == other.low_);\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long does not equal the other.\n */\nKotlin.Long.prototype.notEqualsLong = function(other) {\n return (this.high_ != other.high_) || (this.low_ != other.low_);\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long is less than the other.\n */\nKotlin.Long.prototype.lessThan = function(other) {\n return this.compare(other) < 0;\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long is less than or equal to the other.\n */\nKotlin.Long.prototype.lessThanOrEqual = function(other) {\n return this.compare(other) <= 0;\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long is greater than the other.\n */\nKotlin.Long.prototype.greaterThan = function(other) {\n return this.compare(other) > 0;\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long is greater than or equal to the other.\n */\nKotlin.Long.prototype.greaterThanOrEqual = function(other) {\n return this.compare(other) >= 0;\n};\n\n\n/**\n * Compares this Long with the given one.\n * @param {Kotlin.Long} other Long to compare against.\n * @return {number} 0 if they are the same, 1 if the this is greater, and -1\n * if the given one is greater.\n */\nKotlin.Long.prototype.compare = function(other) {\n if (this.equalsLong(other)) {\n return 0;\n }\n\n var thisNeg = this.isNegative();\n var otherNeg = other.isNegative();\n if (thisNeg && !otherNeg) {\n return -1;\n }\n if (!thisNeg && otherNeg) {\n return 1;\n }\n\n // at this point, the signs are the same, so subtraction will not overflow\n if (this.subtract(other).isNegative()) {\n return -1;\n } else {\n return 1;\n }\n};\n\n\n/** @return {!Kotlin.Long} The negation of this value. */\nKotlin.Long.prototype.negate = function() {\n if (this.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return Kotlin.Long.MIN_VALUE;\n } else {\n return this.not().add(Kotlin.Long.ONE);\n }\n};\n\n\n/**\n * Returns the sum of this and the given Long.\n * @param {Kotlin.Long} other Long to add to this one.\n * @return {!Kotlin.Long} The sum of this and the given Long.\n */\nKotlin.Long.prototype.add = function(other) {\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\n\n var a48 = this.high_ >>> 16;\n var a32 = this.high_ & 0xFFFF;\n var a16 = this.low_ >>> 16;\n var a00 = this.low_ & 0xFFFF;\n\n var b48 = other.high_ >>> 16;\n var b32 = other.high_ & 0xFFFF;\n var b16 = other.low_ >>> 16;\n var b00 = other.low_ & 0xFFFF;\n\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\n c00 += a00 + b00;\n c16 += c00 >>> 16;\n c00 &= 0xFFFF;\n c16 += a16 + b16;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c32 += a32 + b32;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c48 += a48 + b48;\n c48 &= 0xFFFF;\n return Kotlin.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32);\n};\n\n\n/**\n * Returns the difference of this and the given Long.\n * @param {Kotlin.Long} other Long to subtract from this.\n * @return {!Kotlin.Long} The difference of this and the given Long.\n */\nKotlin.Long.prototype.subtract = function(other) {\n return this.add(other.negate());\n};\n\n\n/**\n * Returns the product of this and the given long.\n * @param {Kotlin.Long} other Long to multiply with this.\n * @return {!Kotlin.Long} The product of this and the other.\n */\nKotlin.Long.prototype.multiply = function(other) {\n if (this.isZero()) {\n return Kotlin.Long.ZERO;\n } else if (other.isZero()) {\n return Kotlin.Long.ZERO;\n }\n\n if (this.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return other.isOdd() ? Kotlin.Long.MIN_VALUE : Kotlin.Long.ZERO;\n } else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return this.isOdd() ? Kotlin.Long.MIN_VALUE : Kotlin.Long.ZERO;\n }\n\n if (this.isNegative()) {\n if (other.isNegative()) {\n return this.negate().multiply(other.negate());\n } else {\n return this.negate().multiply(other).negate();\n }\n } else if (other.isNegative()) {\n return this.multiply(other.negate()).negate();\n }\n\n // If both longs are small, use float multiplication\n if (this.lessThan(Kotlin.Long.TWO_PWR_24_) &&\n other.lessThan(Kotlin.Long.TWO_PWR_24_)) {\n return Kotlin.Long.fromNumber(this.toNumber() * other.toNumber());\n }\n\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\n // We can skip products that would overflow.\n\n var a48 = this.high_ >>> 16;\n var a32 = this.high_ & 0xFFFF;\n var a16 = this.low_ >>> 16;\n var a00 = this.low_ & 0xFFFF;\n\n var b48 = other.high_ >>> 16;\n var b32 = other.high_ & 0xFFFF;\n var b16 = other.low_ >>> 16;\n var b00 = other.low_ & 0xFFFF;\n\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\n c00 += a00 * b00;\n c16 += c00 >>> 16;\n c00 &= 0xFFFF;\n c16 += a16 * b00;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c16 += a00 * b16;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c32 += a32 * b00;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c32 += a16 * b16;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c32 += a00 * b32;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\n c48 &= 0xFFFF;\n return Kotlin.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32);\n};\n\n\n/**\n * Returns this Long divided by the given one.\n * @param {Kotlin.Long} other Long by which to divide.\n * @return {!Kotlin.Long} This Long divided by the given one.\n */\nKotlin.Long.prototype.div = function(other) {\n if (other.isZero()) {\n throw Error('division by zero');\n } else if (this.isZero()) {\n return Kotlin.Long.ZERO;\n }\n\n if (this.equalsLong(Kotlin.Long.MIN_VALUE)) {\n if (other.equalsLong(Kotlin.Long.ONE) ||\n other.equalsLong(Kotlin.Long.NEG_ONE)) {\n return Kotlin.Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\n } else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return Kotlin.Long.ONE;\n } else {\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\n var halfThis = this.shiftRight(1);\n var approx = halfThis.div(other).shiftLeft(1);\n if (approx.equalsLong(Kotlin.Long.ZERO)) {\n return other.isNegative() ? Kotlin.Long.ONE : Kotlin.Long.NEG_ONE;\n } else {\n var rem = this.subtract(other.multiply(approx));\n var result = approx.add(rem.div(other));\n return result;\n }\n }\n } else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return Kotlin.Long.ZERO;\n }\n\n if (this.isNegative()) {\n if (other.isNegative()) {\n return this.negate().div(other.negate());\n } else {\n return this.negate().div(other).negate();\n }\n } else if (other.isNegative()) {\n return this.div(other.negate()).negate();\n }\n\n // Repeat the following until the remainder is less than other: find a\n // floating-point that approximates remainder / other *from below*, add this\n // into the result, and subtract it from the remainder. It is critical that\n // the approximate value is less than or equal to the real value so that the\n // remainder never becomes negative.\n var res = Kotlin.Long.ZERO;\n var rem = this;\n while (rem.greaterThanOrEqual(other)) {\n // Approximate the result of division. This may be a little greater or\n // smaller than the actual value.\n var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber()));\n\n // We will tweak the approximate result by changing it in the 48-th digit or\n // the smallest non-fractional digit, whichever is larger.\n var log2 = Math.ceil(Math.log(approx) / Math.LN2);\n var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48);\n\n // Decrease the approximation until it is smaller than the remainder. Note\n // that if it is too large, the product overflows and is negative.\n var approxRes = Kotlin.Long.fromNumber(approx);\n var approxRem = approxRes.multiply(other);\n while (approxRem.isNegative() || approxRem.greaterThan(rem)) {\n approx -= delta;\n approxRes = Kotlin.Long.fromNumber(approx);\n approxRem = approxRes.multiply(other);\n }\n\n // We know the answer can't be zero... and actually, zero would cause\n // infinite recursion since we would make no progress.\n if (approxRes.isZero()) {\n approxRes = Kotlin.Long.ONE;\n }\n\n res = res.add(approxRes);\n rem = rem.subtract(approxRem);\n }\n return res;\n};\n\n\n/**\n * Returns this Long modulo the given one.\n * @param {Kotlin.Long} other Long by which to mod.\n * @return {!Kotlin.Long} This Long modulo the given one.\n */\nKotlin.Long.prototype.modulo = function(other) {\n return this.subtract(this.div(other).multiply(other));\n};\n\n\n/** @return {!Kotlin.Long} The bitwise-NOT of this value. */\nKotlin.Long.prototype.not = function() {\n return Kotlin.Long.fromBits(~this.low_, ~this.high_);\n};\n\n\n/**\n * Returns the bitwise-AND of this Long and the given one.\n * @param {Kotlin.Long} other The Long with which to AND.\n * @return {!Kotlin.Long} The bitwise-AND of this and the other.\n */\nKotlin.Long.prototype.and = function(other) {\n return Kotlin.Long.fromBits(this.low_ & other.low_,\n this.high_ & other.high_);\n};\n\n\n/**\n * Returns the bitwise-OR of this Long and the given one.\n * @param {Kotlin.Long} other The Long with which to OR.\n * @return {!Kotlin.Long} The bitwise-OR of this and the other.\n */\nKotlin.Long.prototype.or = function(other) {\n return Kotlin.Long.fromBits(this.low_ | other.low_,\n this.high_ | other.high_);\n};\n\n\n/**\n * Returns the bitwise-XOR of this Long and the given one.\n * @param {Kotlin.Long} other The Long with which to XOR.\n * @return {!Kotlin.Long} The bitwise-XOR of this and the other.\n */\nKotlin.Long.prototype.xor = function(other) {\n return Kotlin.Long.fromBits(this.low_ ^ other.low_,\n this.high_ ^ other.high_);\n};\n\n\n/**\n * Returns this Long with bits shifted to the left by the given amount.\n * @param {number} numBits The number of bits by which to shift.\n * @return {!Kotlin.Long} This shifted to the left by the given amount.\n */\nKotlin.Long.prototype.shiftLeft = function(numBits) {\n numBits &= 63;\n if (numBits == 0) {\n return this;\n } else {\n var low = this.low_;\n if (numBits < 32) {\n var high = this.high_;\n return Kotlin.Long.fromBits(\n low << numBits,\n (high << numBits) | (low >>> (32 - numBits)));\n } else {\n return Kotlin.Long.fromBits(0, low << (numBits - 32));\n }\n }\n};\n\n\n/**\n * Returns this Long with bits shifted to the right by the given amount.\n * @param {number} numBits The number of bits by which to shift.\n * @return {!Kotlin.Long} This shifted to the right by the given amount.\n */\nKotlin.Long.prototype.shiftRight = function(numBits) {\n numBits &= 63;\n if (numBits == 0) {\n return this;\n } else {\n var high = this.high_;\n if (numBits < 32) {\n var low = this.low_;\n return Kotlin.Long.fromBits(\n (low >>> numBits) | (high << (32 - numBits)),\n high >> numBits);\n } else {\n return Kotlin.Long.fromBits(\n high >> (numBits - 32),\n high >= 0 ? 0 : -1);\n }\n }\n};\n\n\n/**\n * Returns this Long with bits shifted to the right by the given amount, with\n * zeros placed into the new leading bits.\n * @param {number} numBits The number of bits by which to shift.\n * @return {!Kotlin.Long} This shifted to the right by the given amount, with\n * zeros placed into the new leading bits.\n */\nKotlin.Long.prototype.shiftRightUnsigned = function(numBits) {\n numBits &= 63;\n if (numBits == 0) {\n return this;\n } else {\n var high = this.high_;\n if (numBits < 32) {\n var low = this.low_;\n return Kotlin.Long.fromBits(\n (low >>> numBits) | (high << (32 - numBits)),\n high >>> numBits);\n } else if (numBits == 32) {\n return Kotlin.Long.fromBits(high, 0);\n } else {\n return Kotlin.Long.fromBits(high >>> (numBits - 32), 0);\n }\n }\n};\n\n// Support for Kotlin\nKotlin.Long.prototype.equals = function (other) {\n return other instanceof Kotlin.Long && this.equalsLong(other);\n};\n\nKotlin.Long.prototype.compareTo_11rb$ = Kotlin.Long.prototype.compare;\n\nKotlin.Long.prototype.inc = function() {\n return this.add(Kotlin.Long.ONE);\n};\n\nKotlin.Long.prototype.dec = function() {\n return this.add(Kotlin.Long.NEG_ONE);\n};\n\nKotlin.Long.prototype.valueOf = function() {\n return this.toNumber();\n};\n\nKotlin.Long.prototype.unaryPlus = function() {\n return this;\n};\n\nKotlin.Long.prototype.unaryMinus = Kotlin.Long.prototype.negate;\nKotlin.Long.prototype.inv = Kotlin.Long.prototype.not;\n\nKotlin.Long.prototype.rangeTo = function (other) {\n return new Kotlin.kotlin.ranges.LongRange(this, other);\n};","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n/**\n * @param {string} id\n * @param {Object} declaration\n */\nKotlin.defineModule = function (id, declaration) {\n};\n\nKotlin.defineInlineFunction = function(tag, fun) {\n return fun;\n};\n\nKotlin.wrapFunction = function(fun) {\n var f = function() {\n f = fun();\n return f.apply(this, arguments);\n };\n return function() {\n return f.apply(this, arguments);\n };\n};\n\nKotlin.isTypeOf = function(type) {\n return function (object) {\n return typeof object === type;\n }\n};\n\nKotlin.isInstanceOf = function (klass) {\n return function (object) {\n return Kotlin.isType(object, klass);\n }\n};\n\nKotlin.orNull = function (fn) {\n return function (object) {\n return object == null || fn(object);\n }\n};\n\nKotlin.andPredicate = function (a, b) {\n return function (object) {\n return a(object) && b(object);\n }\n};\n\nKotlin.kotlinModuleMetadata = function (abiVersion, moduleName, data) {\n};\n\nKotlin.suspendCall = function(value) {\n return value;\n};\n\nKotlin.coroutineResult = function(qualifier) {\n throwMarkerError();\n};\n\nKotlin.coroutineController = function(qualifier) {\n throwMarkerError();\n};\n\nKotlin.coroutineReceiver = function(qualifier) {\n throwMarkerError();\n};\n\nKotlin.setCoroutineResult = function(value, qualifier) {\n throwMarkerError();\n};\n\nKotlin.getReifiedTypeParameterKType = function(typeParameter) {\n throwMarkerError();\n};\n\nfunction throwMarkerError() {\n throw new Error(\n \"This marker function should never been called. \" +\n \"Looks like compiler did not eliminate it properly. \" +\n \"Please, report an issue if you caught this exception.\");\n}\n\nKotlin.getFunctionById = function(id, defaultValue) {\n return function() {\n return defaultValue;\n }\n};","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\nKotlin.compareTo = function (a, b) {\n var typeA = typeof a;\n if (typeA === \"number\") {\n if (typeof b === \"number\") {\n return Kotlin.doubleCompareTo(a, b);\n }\n return Kotlin.primitiveCompareTo(a, b);\n }\n if (typeA === \"string\" || typeA === \"boolean\") {\n return Kotlin.primitiveCompareTo(a, b);\n }\n return a.compareTo_11rb$(b);\n};\n\nKotlin.primitiveCompareTo = function (a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n};\n\nKotlin.doubleCompareTo = function (a, b) {\n if (a < b) return -1;\n if (a > b) return 1;\n\n if (a === b) {\n if (a !== 0) return 0;\n\n var ia = 1 / a;\n return ia === 1 / b ? 0 : (ia < 0 ? -1 : 1);\n }\n\n return a !== a ? (b !== b ? 0 : 1) : -1\n};\n\nKotlin.charInc = function (value) {\n return Kotlin.toChar(value+1);\n};\n\nKotlin.charDec = function (value) {\n return Kotlin.toChar(value-1);\n};\n\nKotlin.imul = Math.imul || imul;\n\nKotlin.imulEmulated = imul;\n\nfunction imul(a, b) {\n return ((a & 0xffff0000) * (b & 0xffff) + (a & 0xffff) * (b | 0)) | 0;\n}\n\n(function() {\n var buf = new ArrayBuffer(8);\n var bufFloat64 = new Float64Array(buf);\n var bufFloat32 = new Float32Array(buf);\n var bufInt32 = new Int32Array(buf);\n var lowIndex = 0;\n var highIndex = 1;\n\n bufFloat64[0] = -1; // bff00000_00000000\n if (bufInt32[lowIndex] !== 0) {\n lowIndex = 1;\n highIndex = 0;\n }\n\n Kotlin.doubleToBits = function(value) {\n return Kotlin.doubleToRawBits(isNaN(value) ? NaN : value);\n };\n\n Kotlin.doubleToRawBits = function(value) {\n bufFloat64[0] = value;\n return Kotlin.Long.fromBits(bufInt32[lowIndex], bufInt32[highIndex]);\n };\n\n Kotlin.doubleFromBits = function(value) {\n bufInt32[lowIndex] = value.low_;\n bufInt32[highIndex] = value.high_;\n return bufFloat64[0];\n };\n\n Kotlin.floatToBits = function(value) {\n return Kotlin.floatToRawBits(isNaN(value) ? NaN : value);\n };\n\n Kotlin.floatToRawBits = function(value) {\n bufFloat32[0] = value;\n return bufInt32[0];\n };\n\n Kotlin.floatFromBits = function(value) {\n bufInt32[0] = value;\n return bufFloat32[0];\n };\n\n // returns zero value for number with positive sign bit and non-zero value for number with negative sign bit.\n Kotlin.doubleSignBit = function(value) {\n bufFloat64[0] = value;\n return bufInt32[highIndex] & 0x80000000;\n };\n\n Kotlin.numberHashCode = function(obj) {\n if ((obj | 0) === obj) {\n return obj | 0;\n }\n else {\n bufFloat64[0] = obj;\n return (bufInt32[highIndex] * 31 | 0) + bufInt32[lowIndex] | 0;\n }\n }\n})();\n\nKotlin.ensureNotNull = function(x) {\n return x != null ? x : Kotlin.throwNPE();\n};\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\nif (typeof String.prototype.startsWith === \"undefined\") {\n String.prototype.startsWith = function(searchString, position) {\n position = position || 0;\n return this.lastIndexOf(searchString, position) === position;\n };\n}\nif (typeof String.prototype.endsWith === \"undefined\") {\n String.prototype.endsWith = function(searchString, position) {\n var subjectString = this.toString();\n if (position === undefined || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n}\n// ES6 Math polyfills\nif (typeof Math.sign === \"undefined\") {\n Math.sign = function(x) {\n x = +x; // convert to a number\n if (x === 0 || isNaN(x)) {\n return Number(x);\n }\n return x > 0 ? 1 : -1;\n };\n}\nif (typeof Math.trunc === \"undefined\") {\n Math.trunc = function(x) {\n if (isNaN(x)) {\n return NaN;\n }\n if (x > 0) {\n return Math.floor(x);\n }\n return Math.ceil(x);\n };\n}\n\n(function() {\n var epsilon = 2.220446049250313E-16;\n var taylor_2_bound = Math.sqrt(epsilon);\n var taylor_n_bound = Math.sqrt(taylor_2_bound);\n var upper_taylor_2_bound = 1/taylor_2_bound;\n var upper_taylor_n_bound = 1/taylor_n_bound;\n\n if (typeof Math.sinh === \"undefined\") {\n Math.sinh = function(x) {\n if (Math.abs(x) < taylor_n_bound) {\n var result = x;\n if (Math.abs(x) > taylor_2_bound) {\n result += (x * x * x) / 6;\n }\n return result;\n } else {\n var y = Math.exp(x);\n var y1 = 1 / y;\n if (!isFinite(y)) return Math.exp(x - Math.LN2);\n if (!isFinite(y1)) return -Math.exp(-x - Math.LN2);\n return (y - y1) / 2;\n }\n };\n }\n if (typeof Math.cosh === \"undefined\") {\n Math.cosh = function(x) {\n var y = Math.exp(x);\n var y1 = 1 / y;\n if (!isFinite(y) || !isFinite(y1)) return Math.exp(Math.abs(x) - Math.LN2);\n return (y + y1) / 2;\n };\n }\n\n if (typeof Math.tanh === \"undefined\") {\n Math.tanh = function(x){\n if (Math.abs(x) < taylor_n_bound) {\n var result = x;\n if (Math.abs(x) > taylor_2_bound) {\n result -= (x * x * x) / 3;\n }\n return result;\n }\n else {\n var a = Math.exp(+x), b = Math.exp(-x);\n return a === Infinity ? 1 : b === Infinity ? -1 : (a - b) / (a + b);\n }\n };\n }\n\n // Inverse hyperbolic function implementations derived from boost special math functions,\n // Copyright Eric Ford & Hubert Holin 2001.\n\n if (typeof Math.asinh === \"undefined\") {\n var asinh = function(x) {\n if (x >= +taylor_n_bound)\n {\n if (x > upper_taylor_n_bound)\n {\n if (x > upper_taylor_2_bound)\n {\n // approximation by laurent series in 1/x at 0+ order from -1 to 0\n return Math.log(x) + Math.LN2;\n }\n else\n {\n // approximation by laurent series in 1/x at 0+ order from -1 to 1\n return Math.log(x * 2 + (1 / (x * 2)));\n }\n }\n else\n {\n return Math.log(x + Math.sqrt(x * x + 1));\n }\n }\n else if (x <= -taylor_n_bound)\n {\n return -asinh(-x);\n }\n else\n {\n // approximation by taylor series in x at 0 up to order 2\n var result = x;\n if (Math.abs(x) >= taylor_2_bound)\n {\n var x3 = x * x * x;\n // approximation by taylor series in x at 0 up to order 4\n result -= x3 / 6;\n }\n return result;\n }\n };\n Math.asinh = asinh;\n }\n if (typeof Math.acosh === \"undefined\") {\n Math.acosh = function(x) {\n if (x < 1)\n {\n return NaN;\n }\n else if (x - 1 >= taylor_n_bound)\n {\n if (x > upper_taylor_2_bound)\n {\n // approximation by laurent series in 1/x at 0+ order from -1 to 0\n return Math.log(x) + Math.LN2;\n }\n else\n {\n return Math.log(x + Math.sqrt(x * x - 1));\n }\n }\n else\n {\n var y = Math.sqrt(x - 1);\n // approximation by taylor series in y at 0 up to order 2\n var result = y;\n if (y >= taylor_2_bound)\n {\n var y3 = y * y * y;\n // approximation by taylor series in y at 0 up to order 4\n result -= y3 / 12;\n }\n\n return Math.sqrt(2) * result;\n }\n };\n }\n if (typeof Math.atanh === \"undefined\") {\n Math.atanh = function(x) {\n if (Math.abs(x) < taylor_n_bound) {\n var result = x;\n if (Math.abs(x) > taylor_2_bound) {\n result += (x * x * x) / 3;\n }\n return result;\n }\n return Math.log((1 + x) / (1 - x)) / 2;\n };\n }\n if (typeof Math.log1p === \"undefined\") {\n Math.log1p = function(x) {\n if (Math.abs(x) < taylor_n_bound) {\n var x2 = x * x;\n var x3 = x2 * x;\n var x4 = x3 * x;\n // approximation by taylor series in x at 0 up to order 4\n return (-x4 / 4 + x3 / 3 - x2 / 2 + x);\n }\n return Math.log(x + 1);\n };\n }\n if (typeof Math.expm1 === \"undefined\") {\n Math.expm1 = function(x) {\n if (Math.abs(x) < taylor_n_bound) {\n var x2 = x * x;\n var x3 = x2 * x;\n var x4 = x3 * x;\n // approximation by taylor series in x at 0 up to order 4\n return (x4 / 24 + x3 / 6 + x2 / 2 + x);\n }\n return Math.exp(x) - 1;\n };\n }\n})();\nif (typeof Math.hypot === \"undefined\") {\n Math.hypot = function() {\n var y = 0;\n var length = arguments.length;\n\n for (var i = 0; i < length; i++) {\n if (arguments[i] === Infinity || arguments[i] === -Infinity) {\n return Infinity;\n }\n y += arguments[i] * arguments[i];\n }\n return Math.sqrt(y);\n };\n}\nif (typeof Math.log10 === \"undefined\") {\n Math.log10 = function(x) {\n return Math.log(x) * Math.LOG10E;\n };\n}\nif (typeof Math.log2 === \"undefined\") {\n Math.log2 = function(x) {\n return Math.log(x) * Math.LOG2E;\n };\n}\nif (typeof Math.clz32 === \"undefined\") {\n Math.clz32 = (function(log, LN2) {\n return function(x) {\n var asUint = x >>> 0;\n if (asUint === 0) {\n return 32;\n }\n return 31 - (log(asUint) / LN2 | 0) | 0; // the \"| 0\" acts like math.floor\n };\n })(Math.log, Math.LN2);\n}\n\n// For HtmlUnit and PhantomJs\nif (typeof ArrayBuffer.isView === \"undefined\") {\n ArrayBuffer.isView = function(a) {\n return a != null && a.__proto__ != null && a.__proto__.__proto__ === Int8Array.prototype.__proto__;\n };\n}\n\nif (typeof Array.prototype.fill === \"undefined\") {\n // Polyfill from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill#Polyfill\n Array.prototype.fill = function() {\n // Steps 1-2.\n if (this == null) {\n throw new TypeError('this is null or not defined');\n }\n\n var O = Object(this);\n\n // Steps 3-5.\n var len = O.length >>> 0;\n\n // Steps 6-7.\n var start = arguments[1];\n var relativeStart = start >> 0;\n\n // Step 8.\n var k = relativeStart < 0 ?\n Math.max(len + relativeStart, 0) :\n Math.min(relativeStart, len);\n\n // Steps 9-10.\n var end = arguments[2];\n var relativeEnd = end === undefined ?\n len : end >> 0;\n\n // Step 11.\n var final = relativeEnd < 0 ?\n Math.max(len + relativeEnd, 0) :\n Math.min(relativeEnd, len);\n\n // Step 12.\n while (k < final) {\n O[k] = value;\n k++;\n }\n\n // Step 13.\n return O;\n };\n}\n\n(function() {\n function normalizeOffset(offset, length) {\n if (offset < 0) return Math.max(0, offset + length);\n return Math.min(offset, length);\n }\n function typedArraySlice(begin, end) {\n if (typeof end === \"undefined\") {\n end = this.length;\n }\n begin = normalizeOffset(begin || 0, this.length);\n end = Math.max(begin, normalizeOffset(end, this.length));\n return new this.constructor(this.subarray(begin, end));\n }\n\n var arrays = [Int8Array, Int16Array, Uint16Array, Int32Array, Float32Array, Float64Array];\n for (var i = 0; i < arrays.length; ++i) {\n var TypedArray = arrays[i];\n if (typeof TypedArray.prototype.fill === \"undefined\") {\n TypedArray.prototype.fill = Array.prototype.fill;\n }\n if (typeof TypedArray.prototype.slice === \"undefined\") {\n Object.defineProperty(TypedArray.prototype, 'slice', {\n value: typedArraySlice\n });\n }\n }\n\n // Patch apply to work with TypedArrays if needed.\n try {\n (function() {}).apply(null, new Int32Array(0))\n } catch (e) {\n var apply = Function.prototype.apply;\n Object.defineProperty(Function.prototype, 'apply', {\n value: function(self, array) {\n return apply.call(this, self, [].slice.call(array));\n }\n });\n }\n\n\n // Patch map to work with TypedArrays if needed.\n for (var i = 0; i < arrays.length; ++i) {\n var TypedArray = arrays[i];\n if (typeof TypedArray.prototype.map === \"undefined\") {\n Object.defineProperty(TypedArray.prototype, 'map', {\n value: function(callback, self) {\n return [].slice.call(this).map(callback, self);\n }\n });\n }\n }\n\n // Patch sort to work with TypedArrays if needed.\n // TODO: consider to remove following function and replace it with `Kotlin.doubleCompareTo` (see misc.js)\n var totalOrderComparator = function (a, b) {\n if (a < b) return -1;\n if (a > b) return 1;\n\n if (a === b) {\n if (a !== 0) return 0;\n\n var ia = 1 / a;\n return ia === 1 / b ? 0 : (ia < 0 ? -1 : 1);\n }\n\n return a !== a ? (b !== b ? 0 : 1) : -1\n };\n\n for (var i = 0; i < arrays.length; ++i) {\n var TypedArray = arrays[i];\n if (typeof TypedArray.prototype.sort === \"undefined\") {\n Object.defineProperty(TypedArray.prototype, 'sort', {\n value: function(compareFunction) {\n return Array.prototype.sort.call(this, compareFunction || totalOrderComparator);\n }\n });\n }\n }\n})();\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. \n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\nKotlin.Kind = {\n CLASS: \"class\",\n INTERFACE: \"interface\",\n OBJECT: \"object\"\n};\n\nKotlin.callGetter = function (thisObject, klass, propertyName) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(klass, propertyName);\n if (propertyDescriptor != null && propertyDescriptor.get != null) {\n return propertyDescriptor.get.call(thisObject);\n }\n\n propertyDescriptor = Object.getOwnPropertyDescriptor(thisObject, propertyName);\n if (propertyDescriptor != null && \"value\" in propertyDescriptor) {\n return thisObject[propertyName];\n }\n\n return Kotlin.callGetter(thisObject, Object.getPrototypeOf(klass), propertyName);\n};\n\nKotlin.callSetter = function (thisObject, klass, propertyName, value) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(klass, propertyName);\n if (propertyDescriptor != null && propertyDescriptor.set != null) {\n propertyDescriptor.set.call(thisObject, value);\n return;\n }\n\n propertyDescriptor = Object.getOwnPropertyDescriptor(thisObject, propertyName);\n if (propertyDescriptor != null && \"value\" in propertyDescriptor) {\n thisObject[propertyName] = value;\n return\n }\n\n Kotlin.callSetter(thisObject, Object.getPrototypeOf(klass), propertyName, value);\n};\n\nfunction isInheritanceFromInterface(ctor, iface) {\n if (ctor === iface) return true;\n\n var metadata = ctor.$metadata$;\n if (metadata != null) {\n var interfaces = metadata.interfaces;\n for (var i = 0; i < interfaces.length; i++) {\n if (isInheritanceFromInterface(interfaces[i], iface)) {\n return true;\n }\n }\n }\n\n var superPrototype = ctor.prototype != null ? Object.getPrototypeOf(ctor.prototype) : null;\n var superConstructor = superPrototype != null ? superPrototype.constructor : null;\n return superConstructor != null && isInheritanceFromInterface(superConstructor, iface);\n}\n\n/**\n *\n * @param {*} object\n * @param {Function|Object} klass\n * @returns {Boolean}\n */\nKotlin.isType = function (object, klass) {\n if (klass === Object) {\n switch (typeof object) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n case \"function\":\n return true;\n default:\n return object instanceof Object;\n }\n }\n\n if (object == null || klass == null || (typeof object !== 'object' && typeof object !== 'function')) {\n return false;\n }\n\n if (typeof klass === \"function\" && object instanceof klass) {\n return true;\n }\n\n var proto = Object.getPrototypeOf(klass);\n var constructor = proto != null ? proto.constructor : null;\n if (constructor != null && \"$metadata$\" in constructor) {\n var metadata = constructor.$metadata$;\n if (metadata.kind === Kotlin.Kind.OBJECT) {\n return object === klass;\n }\n }\n\n var klassMetadata = klass.$metadata$;\n\n // In WebKit (JavaScriptCore) for some interfaces from DOM typeof returns \"object\", nevertheless they can be used in RHS of instanceof\n if (klassMetadata == null) {\n return object instanceof klass;\n }\n\n if (klassMetadata.kind === Kotlin.Kind.INTERFACE && object.constructor != null) {\n return isInheritanceFromInterface(object.constructor, klass);\n }\n\n return false;\n};\n\nKotlin.isNumber = function (a) {\n return typeof a == \"number\" || a instanceof Kotlin.Long;\n};\n\nKotlin.isChar = function (value) {\n return value instanceof Kotlin.BoxedChar\n};\n\nKotlin.isComparable = function (value) {\n var type = typeof value;\n\n return type === \"string\" ||\n type === \"boolean\" ||\n Kotlin.isNumber(value) ||\n Kotlin.isType(value, Kotlin.kotlin.Comparable);\n};\n\nKotlin.isCharSequence = function (value) {\n return typeof value === \"string\" || Kotlin.isType(value, Kotlin.kotlin.CharSequence);\n};",null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\npublic class Enum> : Comparable> {\n @JsName(\"name$\") private var _name: String = \"\"\n @JsName(\"ordinal$\") private var _ordinal: Int = 0\n\n val name: String\n get() = _name\n\n val ordinal: Int\n get() = _ordinal\n\n override fun compareTo(other: Enum) = ordinal.compareTo(other.ordinal)\n\n override fun equals(other: Any?) = this === other\n\n override fun hashCode(): Int = js(\"Kotlin.identityHashCode\")(this)\n\n override fun toString() = name\n\n companion object\n}",null,"/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"ArraysKt\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component1(): T {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component1(): Byte {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component1(): Short {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component1(): Int {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component1(): Long {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component1(): Float {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component1(): Double {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component1(): Boolean {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component1(): Char {\n return get(0)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component2(): T {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component2(): Byte {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component2(): Short {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component2(): Int {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component2(): Long {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component2(): Float {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component2(): Double {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component2(): Boolean {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component2(): Char {\n return get(1)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component3(): T {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component3(): Byte {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component3(): Short {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component3(): Int {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component3(): Long {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component3(): Float {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component3(): Double {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component3(): Boolean {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component3(): Char {\n return get(2)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component4(): T {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component4(): Byte {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component4(): Short {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component4(): Int {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component4(): Long {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component4(): Float {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component4(): Double {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component4(): Boolean {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component4(): Char {\n return get(3)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Array.component5(): T {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ByteArray.component5(): Byte {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun ShortArray.component5(): Short {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun IntArray.component5(): Int {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun LongArray.component5(): Long {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun FloatArray.component5(): Float {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun DoubleArray.component5(): Double {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun BooleanArray.component5(): Boolean {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharArray.component5(): Char {\n return get(4)\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun <@kotlin.internal.OnlyInputTypes T> Array.contains(element: T): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun ByteArray.contains(element: Byte): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun ShortArray.contains(element: Short): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun IntArray.contains(element: Int): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun LongArray.contains(element: Long): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun FloatArray.contains(element: Float): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun DoubleArray.contains(element: Double): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun BooleanArray.contains(element: Boolean): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns `true` if [element] is found in the array.\n */\npublic operator fun CharArray.contains(element: Char): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun Array.elementAt(index: Int): T\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun ByteArray.elementAt(index: Int): Byte\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun ShortArray.elementAt(index: Int): Short\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun IntArray.elementAt(index: Int): Int\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun LongArray.elementAt(index: Int): Long\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun FloatArray.elementAt(index: Int): Float\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun DoubleArray.elementAt(index: Int): Double\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun BooleanArray.elementAt(index: Int): Boolean\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun CharArray.elementAt(index: Int): Char\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Byte): Byte {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Short): Short {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Int): Int {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Long): Long {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Float): Float {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Double): Double {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Boolean): Boolean {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Char): Char {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.elementAtOrNull(index: Int): T? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.elementAtOrNull(index: Int): Byte? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.elementAtOrNull(index: Int): Short? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.elementAtOrNull(index: Int): Int? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.elementAtOrNull(index: Int): Long? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.elementAtOrNull(index: Int): Float? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.elementAtOrNull(index: Int): Double? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.elementAtOrNull(index: Int): Boolean? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.elementAtOrNull(index: Int): Char? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.find(predicate: (T) -> Boolean): T? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.find(predicate: (Byte) -> Boolean): Byte? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.find(predicate: (Short) -> Boolean): Short? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.find(predicate: (Int) -> Boolean): Int? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.find(predicate: (Long) -> Boolean): Long? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.find(predicate: (Float) -> Boolean): Float? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.find(predicate: (Double) -> Boolean): Double? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.find(predicate: (Boolean) -> Boolean): Boolean? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.find(predicate: (Char) -> Boolean): Char? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.findLast(predicate: (Byte) -> Boolean): Byte? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.findLast(predicate: (Short) -> Boolean): Short? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.findLast(predicate: (Int) -> Boolean): Int? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.findLast(predicate: (Long) -> Boolean): Long? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.findLast(predicate: (Float) -> Boolean): Float? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.findLast(predicate: (Double) -> Boolean): Double? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.findLast(predicate: (Boolean) -> Boolean): Boolean? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.findLast(predicate: (Char) -> Boolean): Char? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun Array.first(): T {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ByteArray.first(): Byte {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ShortArray.first(): Short {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun IntArray.first(): Int {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun LongArray.first(): Long {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun FloatArray.first(): Float {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun DoubleArray.first(): Double {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun BooleanArray.first(): Boolean {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun CharArray.first(): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun Array.first(predicate: (T) -> Boolean): T {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ByteArray.first(predicate: (Byte) -> Boolean): Byte {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ShortArray.first(predicate: (Short) -> Boolean): Short {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun IntArray.first(predicate: (Int) -> Boolean): Int {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun LongArray.first(predicate: (Long) -> Boolean): Long {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun FloatArray.first(predicate: (Float) -> Boolean): Float {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun DoubleArray.first(predicate: (Double) -> Boolean): Double {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun BooleanArray.first(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun CharArray.first(predicate: (Char) -> Boolean): Char {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun Array.firstOrNull(): T? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun ByteArray.firstOrNull(): Byte? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun ShortArray.firstOrNull(): Short? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun IntArray.firstOrNull(): Int? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun LongArray.firstOrNull(): Long? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun FloatArray.firstOrNull(): Float? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun DoubleArray.firstOrNull(): Double? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun BooleanArray.firstOrNull(): Boolean? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\npublic fun CharArray.firstOrNull(): Char? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun Array.firstOrNull(predicate: (T) -> Boolean): T? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun ByteArray.firstOrNull(predicate: (Byte) -> Boolean): Byte? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun ShortArray.firstOrNull(predicate: (Short) -> Boolean): Short? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun IntArray.firstOrNull(predicate: (Int) -> Boolean): Int? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun LongArray.firstOrNull(predicate: (Long) -> Boolean): Long? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun FloatArray.firstOrNull(predicate: (Float) -> Boolean): Float? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun DoubleArray.firstOrNull(predicate: (Double) -> Boolean): Double? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun BooleanArray.firstOrNull(predicate: (Boolean) -> Boolean): Boolean? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun CharArray.firstOrNull(predicate: (Char) -> Boolean): Char? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.getOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.getOrElse(index: Int, defaultValue: (Int) -> Byte): Byte {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.getOrElse(index: Int, defaultValue: (Int) -> Short): Short {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.getOrElse(index: Int, defaultValue: (Int) -> Int): Int {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.getOrElse(index: Int, defaultValue: (Int) -> Long): Long {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.getOrElse(index: Int, defaultValue: (Int) -> Float): Float {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.getOrElse(index: Int, defaultValue: (Int) -> Double): Double {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.getOrElse(index: Int, defaultValue: (Int) -> Boolean): Boolean {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.getOrElse(index: Int, defaultValue: (Int) -> Char): Char {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun Array.getOrNull(index: Int): T? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun ByteArray.getOrNull(index: Int): Byte? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun ShortArray.getOrNull(index: Int): Short? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun IntArray.getOrNull(index: Int): Int? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun LongArray.getOrNull(index: Int): Long? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun FloatArray.getOrNull(index: Int): Float? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun DoubleArray.getOrNull(index: Int): Double? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun BooleanArray.getOrNull(index: Int): Boolean? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\npublic fun CharArray.getOrNull(index: Int): Char? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Array.indexOf(element: T): Int {\n if (element == null) {\n for (index in indices) {\n if (this[index] == null) {\n return index\n }\n }\n } else {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun ByteArray.indexOf(element: Byte): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun ShortArray.indexOf(element: Short): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun IntArray.indexOf(element: Int): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun LongArray.indexOf(element: Long): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun FloatArray.indexOf(element: Float): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun DoubleArray.indexOf(element: Double): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun BooleanArray.indexOf(element: Boolean): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\npublic fun CharArray.indexOf(element: Char): Int {\n for (index in indices) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun Array.indexOfFirst(predicate: (T) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ByteArray.indexOfFirst(predicate: (Byte) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ShortArray.indexOfFirst(predicate: (Short) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun IntArray.indexOfFirst(predicate: (Int) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun LongArray.indexOfFirst(predicate: (Long) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun FloatArray.indexOfFirst(predicate: (Float) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun DoubleArray.indexOfFirst(predicate: (Double) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun BooleanArray.indexOfFirst(predicate: (Boolean) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun CharArray.indexOfFirst(predicate: (Char) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun Array.indexOfLast(predicate: (T) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ByteArray.indexOfLast(predicate: (Byte) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun ShortArray.indexOfLast(predicate: (Short) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun IntArray.indexOfLast(predicate: (Int) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun LongArray.indexOfLast(predicate: (Long) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun FloatArray.indexOfLast(predicate: (Float) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun DoubleArray.indexOfLast(predicate: (Double) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun BooleanArray.indexOfLast(predicate: (Boolean) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\npublic inline fun CharArray.indexOfLast(predicate: (Char) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun Array.last(): T {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ByteArray.last(): Byte {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun ShortArray.last(): Short {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun IntArray.last(): Int {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun LongArray.last(): Long {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun FloatArray.last(): Float {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun DoubleArray.last(): Double {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun BooleanArray.last(): Boolean {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\npublic fun CharArray.last(): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun Array.last(predicate: (T) -> Boolean): T {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ByteArray.last(predicate: (Byte) -> Boolean): Byte {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun ShortArray.last(predicate: (Short) -> Boolean): Short {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun IntArray.last(predicate: (Int) -> Boolean): Int {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun LongArray.last(predicate: (Long) -> Boolean): Long {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun FloatArray.last(predicate: (Float) -> Boolean): Float {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun DoubleArray.last(predicate: (Double) -> Boolean): Double {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun BooleanArray.last(predicate: (Boolean) -> Boolean): Boolean {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun CharArray.last(predicate: (Char) -> Boolean): Char {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Array.lastIndexOf(element: T): Int {\n if (element == null) {\n for (index in indices.reversed()) {\n if (this[index] == null) {\n return index\n }\n }\n } else {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun ByteArray.lastIndexOf(element: Byte): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun ShortArray.lastIndexOf(element: Short): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun IntArray.lastIndexOf(element: Int): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun LongArray.lastIndexOf(element: Long): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun FloatArray.lastIndexOf(element: Float): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun DoubleArray.lastIndexOf(element: Double): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun BooleanArray.lastIndexOf(element: Boolean): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\npublic fun CharArray.lastIndexOf(element: Char): Int {\n for (index in indices.reversed()) {\n if (element == this[index]) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun Array.lastOrNull(): T? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun ByteArray.lastOrNull(): Byte? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun ShortArray.lastOrNull(): Short? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun IntArray.lastOrNull(): Int? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun LongArray.lastOrNull(): Long? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun FloatArray.lastOrNull(): Float? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun DoubleArray.lastOrNull(): Double? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun BooleanArray.lastOrNull(): Boolean? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\npublic fun CharArray.lastOrNull(): Char? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun Array.lastOrNull(predicate: (T) -> Boolean): T? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun ByteArray.lastOrNull(predicate: (Byte) -> Boolean): Byte? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun ShortArray.lastOrNull(predicate: (Short) -> Boolean): Short? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun IntArray.lastOrNull(predicate: (Int) -> Boolean): Int? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun LongArray.lastOrNull(predicate: (Long) -> Boolean): Long? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun FloatArray.lastOrNull(predicate: (Float) -> Boolean): Float? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun DoubleArray.lastOrNull(predicate: (Double) -> Boolean): Double? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun BooleanArray.lastOrNull(predicate: (Boolean) -> Boolean): Boolean? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun CharArray.lastOrNull(predicate: (Char) -> Boolean): Char? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Array.random(): T {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.random(): Byte {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.random(): Short {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.random(): Int {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.random(): Long {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.random(): Float {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.random(): Double {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.random(): Boolean {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.random(): Char {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun Array.random(random: Random): T {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun ByteArray.random(random: Random): Byte {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun ShortArray.random(random: Random): Short {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun IntArray.random(random: Random): Int {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun LongArray.random(random: Random): Long {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun FloatArray.random(random: Random): Float {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun DoubleArray.random(random: Random): Double {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun BooleanArray.random(random: Random): Boolean {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun CharArray.random(random: Random): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun Array.randomOrNull(): T? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.randomOrNull(): Byte? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.randomOrNull(): Short? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.randomOrNull(): Int? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.randomOrNull(): Long? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.randomOrNull(): Float? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.randomOrNull(): Double? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.randomOrNull(): Boolean? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.randomOrNull(): Char? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun Array.randomOrNull(random: Random): T? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun ByteArray.randomOrNull(random: Random): Byte? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun ShortArray.randomOrNull(random: Random): Short? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun IntArray.randomOrNull(random: Random): Int? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun LongArray.randomOrNull(random: Random): Long? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun FloatArray.randomOrNull(random: Random): Float? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun DoubleArray.randomOrNull(random: Random): Double? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun BooleanArray.randomOrNull(random: Random): Boolean? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun CharArray.randomOrNull(random: Random): Char? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun Array.single(): T {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun ByteArray.single(): Byte {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun ShortArray.single(): Short {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun IntArray.single(): Int {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun LongArray.single(): Long {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun FloatArray.single(): Float {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun DoubleArray.single(): Double {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun BooleanArray.single(): Boolean {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\npublic fun CharArray.single(): Char {\n return when (size) {\n 0 -> throw NoSuchElementException(\"Array is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Array has more than one element.\")\n }\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun Array.single(predicate: (T) -> Boolean): T {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as T\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun ByteArray.single(predicate: (Byte) -> Boolean): Byte {\n var single: Byte? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Byte\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun ShortArray.single(predicate: (Short) -> Boolean): Short {\n var single: Short? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Short\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun IntArray.single(predicate: (Int) -> Boolean): Int {\n var single: Int? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Int\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun LongArray.single(predicate: (Long) -> Boolean): Long {\n var single: Long? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Long\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun FloatArray.single(predicate: (Float) -> Boolean): Float {\n var single: Float? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Float\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun DoubleArray.single(predicate: (Double) -> Boolean): Double {\n var single: Double? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Double\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun BooleanArray.single(predicate: (Boolean) -> Boolean): Boolean {\n var single: Boolean? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Boolean\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun CharArray.single(predicate: (Char) -> Boolean): Char {\n var single: Char? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Char\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun Array.singleOrNull(): T? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun ByteArray.singleOrNull(): Byte? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun ShortArray.singleOrNull(): Short? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun IntArray.singleOrNull(): Int? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun LongArray.singleOrNull(): Long? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun FloatArray.singleOrNull(): Float? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun DoubleArray.singleOrNull(): Double? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun BooleanArray.singleOrNull(): Boolean? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\npublic fun CharArray.singleOrNull(): Char? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun Array.singleOrNull(predicate: (T) -> Boolean): T? {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun ByteArray.singleOrNull(predicate: (Byte) -> Boolean): Byte? {\n var single: Byte? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun ShortArray.singleOrNull(predicate: (Short) -> Boolean): Short? {\n var single: Short? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun IntArray.singleOrNull(predicate: (Int) -> Boolean): Int? {\n var single: Int? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun LongArray.singleOrNull(predicate: (Long) -> Boolean): Long? {\n var single: Long? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun FloatArray.singleOrNull(predicate: (Float) -> Boolean): Float? {\n var single: Float? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun DoubleArray.singleOrNull(predicate: (Double) -> Boolean): Double? {\n var single: Double? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun BooleanArray.singleOrNull(predicate: (Boolean) -> Boolean): Boolean? {\n var single: Boolean? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun CharArray.singleOrNull(predicate: (Char) -> Boolean): Char? {\n var single: Char? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun Array.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ByteArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ShortArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun IntArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun LongArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun FloatArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun DoubleArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun BooleanArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun CharArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun Array.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ByteArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun ShortArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun IntArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun LongArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun FloatArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun DoubleArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun BooleanArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun CharArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun Array.dropLastWhile(predicate: (T) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ByteArray.dropLastWhile(predicate: (Byte) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ShortArray.dropLastWhile(predicate: (Short) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun IntArray.dropLastWhile(predicate: (Int) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun LongArray.dropLastWhile(predicate: (Long) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun FloatArray.dropLastWhile(predicate: (Float) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun DoubleArray.dropLastWhile(predicate: (Double) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun BooleanArray.dropLastWhile(predicate: (Boolean) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun CharArray.dropLastWhile(predicate: (Char) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun Array.dropWhile(predicate: (T) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ByteArray.dropWhile(predicate: (Byte) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun ShortArray.dropWhile(predicate: (Short) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun IntArray.dropWhile(predicate: (Int) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun LongArray.dropWhile(predicate: (Long) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun FloatArray.dropWhile(predicate: (Float) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun DoubleArray.dropWhile(predicate: (Double) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun BooleanArray.dropWhile(predicate: (Boolean) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun CharArray.dropWhile(predicate: (Char) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun Array.filter(predicate: (T) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun ByteArray.filter(predicate: (Byte) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun ShortArray.filter(predicate: (Short) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun IntArray.filter(predicate: (Int) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun LongArray.filter(predicate: (Long) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun FloatArray.filter(predicate: (Float) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun DoubleArray.filter(predicate: (Double) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun BooleanArray.filter(predicate: (Boolean) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun CharArray.filter(predicate: (Char) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun Array.filterIndexed(predicate: (index: Int, T) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun ByteArray.filterIndexed(predicate: (index: Int, Byte) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun ShortArray.filterIndexed(predicate: (index: Int, Short) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun IntArray.filterIndexed(predicate: (index: Int, Int) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun LongArray.filterIndexed(predicate: (index: Int, Long) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun FloatArray.filterIndexed(predicate: (index: Int, Float) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun DoubleArray.filterIndexed(predicate: (index: Int, Double) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun BooleanArray.filterIndexed(predicate: (index: Int, Boolean) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun CharArray.filterIndexed(predicate: (index: Int, Char) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > Array.filterIndexedTo(destination: C, predicate: (index: Int, T) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > ByteArray.filterIndexedTo(destination: C, predicate: (index: Int, Byte) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > ShortArray.filterIndexedTo(destination: C, predicate: (index: Int, Short) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > IntArray.filterIndexedTo(destination: C, predicate: (index: Int, Int) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > LongArray.filterIndexedTo(destination: C, predicate: (index: Int, Long) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > FloatArray.filterIndexedTo(destination: C, predicate: (index: Int, Float) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > DoubleArray.filterIndexedTo(destination: C, predicate: (index: Int, Double) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > BooleanArray.filterIndexedTo(destination: C, predicate: (index: Int, Boolean) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > CharArray.filterIndexedTo(destination: C, predicate: (index: Int, Char) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Returns a list containing all elements that are instances of specified type parameter R.\n */\npublic inline fun Array<*>.filterIsInstance(): List<@kotlin.internal.NoInfer R> {\n return filterIsInstanceTo(ArrayList())\n}\n\n/**\n * Appends all elements that are instances of specified type parameter R to the given [destination].\n */\npublic inline fun > Array<*>.filterIsInstanceTo(destination: C): C {\n for (element in this) if (element is R) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun Array.filterNot(predicate: (T) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun ByteArray.filterNot(predicate: (Byte) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun ShortArray.filterNot(predicate: (Short) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun IntArray.filterNot(predicate: (Int) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun LongArray.filterNot(predicate: (Long) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun FloatArray.filterNot(predicate: (Float) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun DoubleArray.filterNot(predicate: (Double) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun BooleanArray.filterNot(predicate: (Boolean) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun CharArray.filterNot(predicate: (Char) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements that are not `null`.\n * \n * @sample samples.collections.Collections.Filtering.filterNotNull\n */\npublic fun Array.filterNotNull(): List {\n return filterNotNullTo(ArrayList())\n}\n\n/**\n * Appends all elements that are not `null` to the given [destination].\n */\npublic fun , T : Any> Array.filterNotNullTo(destination: C): C {\n for (element in this) if (element != null) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > Array.filterNotTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > ByteArray.filterNotTo(destination: C, predicate: (Byte) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > ShortArray.filterNotTo(destination: C, predicate: (Short) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > IntArray.filterNotTo(destination: C, predicate: (Int) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > LongArray.filterNotTo(destination: C, predicate: (Long) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > FloatArray.filterNotTo(destination: C, predicate: (Float) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > DoubleArray.filterNotTo(destination: C, predicate: (Double) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > BooleanArray.filterNotTo(destination: C, predicate: (Boolean) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > CharArray.filterNotTo(destination: C, predicate: (Char) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > Array.filterTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > ByteArray.filterTo(destination: C, predicate: (Byte) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > ShortArray.filterTo(destination: C, predicate: (Short) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > IntArray.filterTo(destination: C, predicate: (Int) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > LongArray.filterTo(destination: C, predicate: (Long) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > FloatArray.filterTo(destination: C, predicate: (Float) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > DoubleArray.filterTo(destination: C, predicate: (Double) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > BooleanArray.filterTo(destination: C, predicate: (Boolean) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > CharArray.filterTo(destination: C, predicate: (Char) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun Array.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun ByteArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun ShortArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun IntArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun LongArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun FloatArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun DoubleArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun BooleanArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun CharArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun Array.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun ByteArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun ShortArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun IntArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun LongArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun FloatArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun DoubleArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun BooleanArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun CharArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun Array.sliceArray(indices: Collection): Array {\n val result = arrayOfNulls(this, indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun ByteArray.sliceArray(indices: Collection): ByteArray {\n val result = ByteArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun ShortArray.sliceArray(indices: Collection): ShortArray {\n val result = ShortArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun IntArray.sliceArray(indices: Collection): IntArray {\n val result = IntArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun LongArray.sliceArray(indices: Collection): LongArray {\n val result = LongArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun FloatArray.sliceArray(indices: Collection): FloatArray {\n val result = FloatArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun DoubleArray.sliceArray(indices: Collection): DoubleArray {\n val result = DoubleArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun BooleanArray.sliceArray(indices: Collection): BooleanArray {\n val result = BooleanArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\npublic fun CharArray.sliceArray(indices: Collection): CharArray {\n val result = CharArray(indices.size)\n var targetIndex = 0\n for (sourceIndex in indices) {\n result[targetIndex++] = this[sourceIndex]\n }\n return result\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun Array.sliceArray(indices: IntRange): Array {\n if (indices.isEmpty()) return copyOfRange(0, 0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun ByteArray.sliceArray(indices: IntRange): ByteArray {\n if (indices.isEmpty()) return ByteArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun ShortArray.sliceArray(indices: IntRange): ShortArray {\n if (indices.isEmpty()) return ShortArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun IntArray.sliceArray(indices: IntRange): IntArray {\n if (indices.isEmpty()) return IntArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun LongArray.sliceArray(indices: IntRange): LongArray {\n if (indices.isEmpty()) return LongArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun FloatArray.sliceArray(indices: IntRange): FloatArray {\n if (indices.isEmpty()) return FloatArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun DoubleArray.sliceArray(indices: IntRange): DoubleArray {\n if (indices.isEmpty()) return DoubleArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun BooleanArray.sliceArray(indices: IntRange): BooleanArray {\n if (indices.isEmpty()) return BooleanArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\npublic fun CharArray.sliceArray(indices: IntRange): CharArray {\n if (indices.isEmpty()) return CharArray(0)\n return copyOfRange(indices.start, indices.endInclusive + 1)\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun Array.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ByteArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ShortArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun IntArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun LongArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun FloatArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun DoubleArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun BooleanArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun CharArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun Array.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ByteArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun ShortArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun IntArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun LongArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun FloatArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun DoubleArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun BooleanArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun CharArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun Array.takeLastWhile(predicate: (T) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ByteArray.takeLastWhile(predicate: (Byte) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ShortArray.takeLastWhile(predicate: (Short) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun IntArray.takeLastWhile(predicate: (Int) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun LongArray.takeLastWhile(predicate: (Long) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun FloatArray.takeLastWhile(predicate: (Float) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun DoubleArray.takeLastWhile(predicate: (Double) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun BooleanArray.takeLastWhile(predicate: (Boolean) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun CharArray.takeLastWhile(predicate: (Char) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun Array.takeWhile(predicate: (T) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ByteArray.takeWhile(predicate: (Byte) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun ShortArray.takeWhile(predicate: (Short) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun IntArray.takeWhile(predicate: (Int) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun LongArray.takeWhile(predicate: (Long) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun FloatArray.takeWhile(predicate: (Float) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun DoubleArray.takeWhile(predicate: (Double) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun BooleanArray.takeWhile(predicate: (Boolean) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun CharArray.takeWhile(predicate: (Char) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun Array.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun ByteArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun ShortArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun IntArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun LongArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun FloatArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun DoubleArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun BooleanArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Reverses elements in the array in-place.\n */\npublic fun CharArray.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun Array.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun ByteArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun ShortArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun IntArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun LongArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun FloatArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun DoubleArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun BooleanArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun CharArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun Array.reversedArray(): Array {\n if (isEmpty()) return this\n val result = arrayOfNulls(this, size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun ByteArray.reversedArray(): ByteArray {\n if (isEmpty()) return this\n val result = ByteArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun ShortArray.reversedArray(): ShortArray {\n if (isEmpty()) return this\n val result = ShortArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun IntArray.reversedArray(): IntArray {\n if (isEmpty()) return this\n val result = IntArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun LongArray.reversedArray(): LongArray {\n if (isEmpty()) return this\n val result = LongArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun FloatArray.reversedArray(): FloatArray {\n if (isEmpty()) return this\n val result = FloatArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun DoubleArray.reversedArray(): DoubleArray {\n if (isEmpty()) return this\n val result = DoubleArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun BooleanArray.reversedArray(): BooleanArray {\n if (isEmpty()) return this\n val result = BooleanArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\npublic fun CharArray.reversedArray(): CharArray {\n if (isEmpty()) return this\n val result = CharArray(size)\n val lastIndex = lastIndex\n for (i in 0..lastIndex)\n result[lastIndex - i] = this[i]\n return result\n}\n\n/**\n * Sorts elements in the array in-place according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Array.sortBy(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareBy(selector))\n}\n\n/**\n * Sorts elements in the array in-place descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Array.sortByDescending(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareByDescending(selector))\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sortDescending(): Unit {\n sortWith(reverseOrder())\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun ByteArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun ShortArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun IntArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun LongArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun FloatArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun DoubleArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\npublic fun CharArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sorted(): List {\n return sortedArray().asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun ByteArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun ShortArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun IntArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun LongArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun FloatArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun DoubleArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\npublic fun CharArray.sorted(): List {\n return toTypedArray().apply { sort() }.asList()\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sortedArray(): Array {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun ByteArray.sortedArray(): ByteArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun ShortArray.sortedArray(): ShortArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun IntArray.sortedArray(): IntArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun LongArray.sortedArray(): LongArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun FloatArray.sortedArray(): FloatArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun DoubleArray.sortedArray(): DoubleArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\npublic fun CharArray.sortedArray(): CharArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sortedArrayDescending(): Array {\n if (isEmpty()) return this\n return this.copyOf().apply { sortWith(reverseOrder()) }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun ByteArray.sortedArrayDescending(): ByteArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun ShortArray.sortedArrayDescending(): ShortArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun IntArray.sortedArrayDescending(): IntArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun LongArray.sortedArrayDescending(): LongArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun FloatArray.sortedArrayDescending(): FloatArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun DoubleArray.sortedArrayDescending(): DoubleArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\npublic fun CharArray.sortedArrayDescending(): CharArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun Array.sortedArrayWith(comparator: Comparator): Array {\n if (isEmpty()) return this\n return this.copyOf().apply { sortWith(comparator) }\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Array.sortedBy(crossinline selector: (T) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > ByteArray.sortedBy(crossinline selector: (Byte) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > ShortArray.sortedBy(crossinline selector: (Short) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > IntArray.sortedBy(crossinline selector: (Int) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > LongArray.sortedBy(crossinline selector: (Long) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > FloatArray.sortedBy(crossinline selector: (Float) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > DoubleArray.sortedBy(crossinline selector: (Double) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > BooleanArray.sortedBy(crossinline selector: (Boolean) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > CharArray.sortedBy(crossinline selector: (Char) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Array.sortedByDescending(crossinline selector: (T) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > ByteArray.sortedByDescending(crossinline selector: (Byte) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > ShortArray.sortedByDescending(crossinline selector: (Short) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > IntArray.sortedByDescending(crossinline selector: (Int) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > LongArray.sortedByDescending(crossinline selector: (Long) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > FloatArray.sortedByDescending(crossinline selector: (Float) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > DoubleArray.sortedByDescending(crossinline selector: (Double) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > BooleanArray.sortedByDescending(crossinline selector: (Boolean) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n */\npublic inline fun > CharArray.sortedByDescending(crossinline selector: (Char) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Array.sortedDescending(): List {\n return sortedWith(reverseOrder())\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun ByteArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun ShortArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun IntArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun LongArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun FloatArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun DoubleArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n */\npublic fun CharArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun Array.sortedWith(comparator: Comparator): List {\n return sortedArrayWith(comparator).asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun ByteArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun ShortArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun IntArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun LongArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun FloatArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun DoubleArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun BooleanArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n */\npublic fun CharArray.sortedWith(comparator: Comparator): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun Array.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun ByteArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun ShortArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun IntArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun LongArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun FloatArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun DoubleArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun BooleanArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun CharArray.asList(): List\n\n/**\n * Returns `true` if the two specified arrays are *deeply* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * If two corresponding elements are nested arrays, they are also compared deeply.\n * If any of arrays contains itself on any nesting level the behavior is undefined.\n * \n * The elements of other types are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun Array.contentDeepEquals(other: Array): Boolean\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level the behavior is undefined.\n */\n@SinceKotlin(\"1.1\")\npublic expect fun Array.contentDeepHashCode(): Int\n\n/**\n * Returns a string representation of the contents of this array as if it is a [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level that reference\n * is rendered as `\"[...]\"` to prevent recursion.\n * \n * @sample samples.collections.Arrays.ContentOperations.contentDeepToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun Array.contentDeepToString(): String\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun Array.contentEquals(other: Array): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun ByteArray.contentEquals(other: ByteArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun ShortArray.contentEquals(other: ShortArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun IntArray.contentEquals(other: IntArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun LongArray.contentEquals(other: LongArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun FloatArray.contentEquals(other: FloatArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun DoubleArray.contentEquals(other: DoubleArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun BooleanArray.contentEquals(other: BooleanArray): Boolean\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\npublic expect infix fun CharArray.contentEquals(other: CharArray): Boolean\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun Array.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun ByteArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun ShortArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun IntArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun LongArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun FloatArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun DoubleArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun BooleanArray.contentHashCode(): Int\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\npublic expect fun CharArray.contentHashCode(): Int\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun Array.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun ByteArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun ShortArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun IntArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun LongArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun FloatArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun DoubleArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun BooleanArray.contentToString(): String\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\npublic expect fun CharArray.contentToString(): String\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun Array.copyInto(destination: Array, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): Array\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun ByteArray.copyInto(destination: ByteArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ByteArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun ShortArray.copyInto(destination: ShortArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ShortArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun IntArray.copyInto(destination: IntArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): IntArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun LongArray.copyInto(destination: LongArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): LongArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun FloatArray.copyInto(destination: FloatArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): FloatArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun DoubleArray.copyInto(destination: DoubleArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): DoubleArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun BooleanArray.copyInto(destination: BooleanArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): BooleanArray\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\npublic expect fun CharArray.copyInto(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): CharArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun Array.copyOf(): Array\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun ByteArray.copyOf(): ByteArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun ShortArray.copyOf(): ShortArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun IntArray.copyOf(): IntArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun LongArray.copyOf(): LongArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun FloatArray.copyOf(): FloatArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun DoubleArray.copyOf(): DoubleArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun BooleanArray.copyOf(): BooleanArray\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic expect fun CharArray.copyOf(): CharArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun ByteArray.copyOf(newSize: Int): ByteArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun ShortArray.copyOf(newSize: Int): ShortArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun IntArray.copyOf(newSize: Int): IntArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun LongArray.copyOf(newSize: Int): LongArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun FloatArray.copyOf(newSize: Int): FloatArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun DoubleArray.copyOf(newSize: Int): DoubleArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with `false` values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `false` values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun BooleanArray.copyOf(newSize: Int): BooleanArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with null char (`\\u0000`) values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with null char (`\\u0000`) values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic expect fun CharArray.copyOf(newSize: Int): CharArray\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with `null` values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `null` values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizingCopyOf\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun Array.copyOf(newSize: Int): Array\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun Array.copyOfRange(fromIndex: Int, toIndex: Int): Array\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun ByteArray.copyOfRange(fromIndex: Int, toIndex: Int): ByteArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun ShortArray.copyOfRange(fromIndex: Int, toIndex: Int): ShortArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun IntArray.copyOfRange(fromIndex: Int, toIndex: Int): IntArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun LongArray.copyOfRange(fromIndex: Int, toIndex: Int): LongArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun FloatArray.copyOfRange(fromIndex: Int, toIndex: Int): FloatArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun DoubleArray.copyOfRange(fromIndex: Int, toIndex: Int): DoubleArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun BooleanArray.copyOfRange(fromIndex: Int, toIndex: Int): BooleanArray\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic expect fun CharArray.copyOfRange(fromIndex: Int, toIndex: Int): CharArray\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun Array.fill(element: T, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun ByteArray.fill(element: Byte, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun ShortArray.fill(element: Short, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun IntArray.fill(element: Int, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun LongArray.fill(element: Long, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun FloatArray.fill(element: Float, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun DoubleArray.fill(element: Double, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun BooleanArray.fill(element: Boolean, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\npublic expect fun CharArray.fill(element: Char, fromIndex: Int = 0, toIndex: Int = size): Unit\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val Array.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val ByteArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val ShortArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val IntArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val LongArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val FloatArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val DoubleArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val BooleanArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns the range of valid indices for the array.\n */\npublic val CharArray.indices: IntRange\n get() = IntRange(0, lastIndex)\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.isEmpty(): Boolean {\n return size == 0\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if the array is not empty.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.isNotEmpty(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns the last valid index for the array.\n */\npublic val Array.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val ByteArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val ShortArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val IntArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val LongArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val FloatArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val DoubleArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val BooleanArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns the last valid index for the array.\n */\npublic val CharArray.lastIndex: Int\n get() = size - 1\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect operator fun Array.plus(element: T): Array\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun ByteArray.plus(element: Byte): ByteArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun ShortArray.plus(element: Short): ShortArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun IntArray.plus(element: Int): IntArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun LongArray.plus(element: Long): LongArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun FloatArray.plus(element: Float): FloatArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun DoubleArray.plus(element: Double): DoubleArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun BooleanArray.plus(element: Boolean): BooleanArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\npublic expect operator fun CharArray.plus(element: Char): CharArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect operator fun Array.plus(elements: Collection): Array\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun ByteArray.plus(elements: Collection): ByteArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun ShortArray.plus(elements: Collection): ShortArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun IntArray.plus(elements: Collection): IntArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun LongArray.plus(elements: Collection): LongArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun FloatArray.plus(elements: Collection): FloatArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun DoubleArray.plus(elements: Collection): DoubleArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun BooleanArray.plus(elements: Collection): BooleanArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic expect operator fun CharArray.plus(elements: Collection): CharArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect operator fun Array.plus(elements: Array): Array\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun ByteArray.plus(elements: ByteArray): ByteArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun ShortArray.plus(elements: ShortArray): ShortArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun IntArray.plus(elements: IntArray): IntArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun LongArray.plus(elements: LongArray): LongArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun FloatArray.plus(elements: FloatArray): FloatArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun DoubleArray.plus(elements: DoubleArray): DoubleArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun BooleanArray.plus(elements: BooleanArray): BooleanArray\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\npublic expect operator fun CharArray.plus(elements: CharArray): CharArray\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NO_ACTUAL_FOR_EXPECT\")\npublic expect fun Array.plusElement(element: T): Array\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun IntArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun LongArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun ByteArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun ShortArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun DoubleArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun FloatArray.sort(): Unit\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic expect fun CharArray.sort(): Unit\n\n/**\n * Sorts the array in-place according to the natural order of its elements.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n * \n * @sample samples.collections.Arrays.Sorting.sortArrayOfComparable\n */\npublic expect fun > Array.sort(): Unit\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic expect fun Array.sortWith(comparator: Comparator): Unit\n\n/**\n * Returns an array of Boolean containing all of the elements of this generic array.\n */\npublic fun Array.toBooleanArray(): BooleanArray {\n return BooleanArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Byte containing all of the elements of this generic array.\n */\npublic fun Array.toByteArray(): ByteArray {\n return ByteArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Char containing all of the elements of this generic array.\n */\npublic fun Array.toCharArray(): CharArray {\n return CharArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Double containing all of the elements of this generic array.\n */\npublic fun Array.toDoubleArray(): DoubleArray {\n return DoubleArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Float containing all of the elements of this generic array.\n */\npublic fun Array.toFloatArray(): FloatArray {\n return FloatArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Int containing all of the elements of this generic array.\n */\npublic fun Array.toIntArray(): IntArray {\n return IntArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Long containing all of the elements of this generic array.\n */\npublic fun Array.toLongArray(): LongArray {\n return LongArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of Short containing all of the elements of this generic array.\n */\npublic fun Array.toShortArray(): ShortArray {\n return ShortArray(size) { index -> this[index] }\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun ByteArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun ShortArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun IntArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun LongArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun FloatArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun DoubleArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun BooleanArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun CharArray.toTypedArray(): Array\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun Array.associate(transform: (T) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun ByteArray.associate(transform: (Byte) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun ShortArray.associate(transform: (Short) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun IntArray.associate(transform: (Int) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun LongArray.associate(transform: (Long) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun FloatArray.associate(transform: (Float) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun DoubleArray.associate(transform: (Double) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun BooleanArray.associate(transform: (Boolean) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives\n */\npublic inline fun CharArray.associate(transform: (Char) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun Array.associateBy(keySelector: (T) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun ByteArray.associateBy(keySelector: (Byte) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun ShortArray.associateBy(keySelector: (Short) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun IntArray.associateBy(keySelector: (Int) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun LongArray.associateBy(keySelector: (Long) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun FloatArray.associateBy(keySelector: (Float) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun DoubleArray.associateBy(keySelector: (Double) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun BooleanArray.associateBy(keySelector: (Boolean) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the elements from the given array indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy\n */\npublic inline fun CharArray.associateBy(keySelector: (Char) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun Array.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun ByteArray.associateBy(keySelector: (Byte) -> K, valueTransform: (Byte) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun ShortArray.associateBy(keySelector: (Short) -> K, valueTransform: (Short) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun IntArray.associateBy(keySelector: (Int) -> K, valueTransform: (Int) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun LongArray.associateBy(keySelector: (Long) -> K, valueTransform: (Long) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun FloatArray.associateBy(keySelector: (Float) -> K, valueTransform: (Float) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun DoubleArray.associateBy(keySelector: (Double) -> K, valueTransform: (Double) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun BooleanArray.associateBy(keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original array.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform\n */\npublic inline fun CharArray.associateBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > Array.associateByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > ByteArray.associateByTo(destination: M, keySelector: (Byte) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > ShortArray.associateByTo(destination: M, keySelector: (Short) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > IntArray.associateByTo(destination: M, keySelector: (Int) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > LongArray.associateByTo(destination: M, keySelector: (Long) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > FloatArray.associateByTo(destination: M, keySelector: (Float) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > DoubleArray.associateByTo(destination: M, keySelector: (Double) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > BooleanArray.associateByTo(destination: M, keySelector: (Boolean) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given array\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo\n */\npublic inline fun > CharArray.associateByTo(destination: M, keySelector: (Char) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > Array.associateByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > ByteArray.associateByTo(destination: M, keySelector: (Byte) -> K, valueTransform: (Byte) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > ShortArray.associateByTo(destination: M, keySelector: (Short) -> K, valueTransform: (Short) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > IntArray.associateByTo(destination: M, keySelector: (Int) -> K, valueTransform: (Int) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > LongArray.associateByTo(destination: M, keySelector: (Long) -> K, valueTransform: (Long) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > FloatArray.associateByTo(destination: M, keySelector: (Float) -> K, valueTransform: (Float) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > DoubleArray.associateByTo(destination: M, keySelector: (Double) -> K, valueTransform: (Double) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > BooleanArray.associateByTo(destination: M, keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given array.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform\n */\npublic inline fun > CharArray.associateByTo(destination: M, keySelector: (Char) -> K, valueTransform: (Char) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > Array.associateTo(destination: M, transform: (T) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > ByteArray.associateTo(destination: M, transform: (Byte) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > ShortArray.associateTo(destination: M, transform: (Short) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > IntArray.associateTo(destination: M, transform: (Int) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > LongArray.associateTo(destination: M, transform: (Long) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > FloatArray.associateTo(destination: M, transform: (Float) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > DoubleArray.associateTo(destination: M, transform: (Double) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > BooleanArray.associateTo(destination: M, transform: (Boolean) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given array.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo\n */\npublic inline fun > CharArray.associateTo(destination: M, transform: (Char) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > Array.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > ByteArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > ShortArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > IntArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > LongArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > FloatArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > DoubleArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > BooleanArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > CharArray.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun Array.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun ByteArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun ShortArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun IntArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun LongArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun FloatArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun DoubleArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun BooleanArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun CharArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun Array.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun ByteArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun ShortArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun IntArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun LongArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun FloatArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun DoubleArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun BooleanArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun CharArray.toList(): List {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun Array.toMutableList(): MutableList {\n return ArrayList(this.asCollection())\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun ByteArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun ShortArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun IntArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun LongArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun FloatArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun DoubleArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun BooleanArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this array.\n */\npublic fun CharArray.toMutableList(): MutableList {\n val list = ArrayList(size)\n for (item in this) list.add(item)\n return list\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun Array.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ByteArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ShortArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun IntArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun LongArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun FloatArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun DoubleArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun BooleanArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun CharArray.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun Array.flatMap(transform: (T) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun ByteArray.flatMap(transform: (Byte) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun ShortArray.flatMap(transform: (Short) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun IntArray.flatMap(transform: (Int) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun LongArray.flatMap(transform: (Long) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun FloatArray.flatMap(transform: (Float) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun DoubleArray.flatMap(transform: (Double) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun BooleanArray.flatMap(transform: (Boolean) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun CharArray.flatMap(transform: (Char) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > Array.flatMapTo(destination: C, transform: (T) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > ByteArray.flatMapTo(destination: C, transform: (Byte) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > ShortArray.flatMapTo(destination: C, transform: (Short) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > IntArray.flatMapTo(destination: C, transform: (Int) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > LongArray.flatMapTo(destination: C, transform: (Long) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > FloatArray.flatMapTo(destination: C, transform: (Float) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > DoubleArray.flatMapTo(destination: C, transform: (Double) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > BooleanArray.flatMapTo(destination: C, transform: (Boolean) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\npublic inline fun > CharArray.flatMapTo(destination: C, transform: (Char) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun Array.groupBy(keySelector: (T) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun ByteArray.groupBy(keySelector: (Byte) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun ShortArray.groupBy(keySelector: (Short) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun IntArray.groupBy(keySelector: (Int) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun LongArray.groupBy(keySelector: (Long) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun FloatArray.groupBy(keySelector: (Float) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun DoubleArray.groupBy(keySelector: (Double) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun BooleanArray.groupBy(keySelector: (Boolean) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun CharArray.groupBy(keySelector: (Char) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun Array.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun ByteArray.groupBy(keySelector: (Byte) -> K, valueTransform: (Byte) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun ShortArray.groupBy(keySelector: (Short) -> K, valueTransform: (Short) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun IntArray.groupBy(keySelector: (Int) -> K, valueTransform: (Int) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun LongArray.groupBy(keySelector: (Long) -> K, valueTransform: (Long) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun FloatArray.groupBy(keySelector: (Float) -> K, valueTransform: (Float) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun DoubleArray.groupBy(keySelector: (Double) -> K, valueTransform: (Double) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun BooleanArray.groupBy(keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun CharArray.groupBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> Array.groupByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> ByteArray.groupByTo(destination: M, keySelector: (Byte) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> ShortArray.groupByTo(destination: M, keySelector: (Short) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> IntArray.groupByTo(destination: M, keySelector: (Int) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> LongArray.groupByTo(destination: M, keySelector: (Long) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> FloatArray.groupByTo(destination: M, keySelector: (Float) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> DoubleArray.groupByTo(destination: M, keySelector: (Double) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> BooleanArray.groupByTo(destination: M, keySelector: (Boolean) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> CharArray.groupByTo(destination: M, keySelector: (Char) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> Array.groupByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> ByteArray.groupByTo(destination: M, keySelector: (Byte) -> K, valueTransform: (Byte) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> ShortArray.groupByTo(destination: M, keySelector: (Short) -> K, valueTransform: (Short) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> IntArray.groupByTo(destination: M, keySelector: (Int) -> K, valueTransform: (Int) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> LongArray.groupByTo(destination: M, keySelector: (Long) -> K, valueTransform: (Long) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> FloatArray.groupByTo(destination: M, keySelector: (Float) -> K, valueTransform: (Float) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> DoubleArray.groupByTo(destination: M, keySelector: (Double) -> K, valueTransform: (Double) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> BooleanArray.groupByTo(destination: M, keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> CharArray.groupByTo(destination: M, keySelector: (Char) -> K, valueTransform: (Char) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Creates a [Grouping] source from an array to be used later with one of group-and-fold operations\n * using the specified [keySelector] function to extract a key from each element.\n * \n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Array.groupingBy(crossinline keySelector: (T) -> K): Grouping {\n return object : Grouping {\n override fun sourceIterator(): Iterator = this@groupingBy.iterator()\n override fun keyOf(element: T): K = keySelector(element)\n }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun Array.map(transform: (T) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun ByteArray.map(transform: (Byte) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun ShortArray.map(transform: (Short) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun IntArray.map(transform: (Int) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun LongArray.map(transform: (Long) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun FloatArray.map(transform: (Float) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun DoubleArray.map(transform: (Double) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun BooleanArray.map(transform: (Boolean) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun CharArray.map(transform: (Char) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Array.mapIndexed(transform: (index: Int, T) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun ByteArray.mapIndexed(transform: (index: Int, Byte) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun ShortArray.mapIndexed(transform: (index: Int, Short) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun IntArray.mapIndexed(transform: (index: Int, Int) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun LongArray.mapIndexed(transform: (index: Int, Long) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun FloatArray.mapIndexed(transform: (index: Int, Float) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun DoubleArray.mapIndexed(transform: (index: Int, Double) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun BooleanArray.mapIndexed(transform: (index: Int, Boolean) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun CharArray.mapIndexed(transform: (index: Int, Char) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Array.mapIndexedNotNull(transform: (index: Int, T) -> R?): List {\n return mapIndexedNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends only the non-null results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Array.mapIndexedNotNullTo(destination: C, transform: (index: Int, T) -> R?): C {\n forEachIndexed { index, element -> transform(index, element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Array.mapIndexedTo(destination: C, transform: (index: Int, T) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > ByteArray.mapIndexedTo(destination: C, transform: (index: Int, Byte) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > ShortArray.mapIndexedTo(destination: C, transform: (index: Int, Short) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > IntArray.mapIndexedTo(destination: C, transform: (index: Int, Int) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > LongArray.mapIndexedTo(destination: C, transform: (index: Int, Long) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > FloatArray.mapIndexedTo(destination: C, transform: (index: Int, Float) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > DoubleArray.mapIndexedTo(destination: C, transform: (index: Int, Double) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > BooleanArray.mapIndexedTo(destination: C, transform: (index: Int, Boolean) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > CharArray.mapIndexedTo(destination: C, transform: (index: Int, Char) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element in the original array.\n */\npublic inline fun Array.mapNotNull(transform: (T) -> R?): List {\n return mapNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element in the original array\n * and appends only the non-null results to the given [destination].\n */\npublic inline fun > Array.mapNotNullTo(destination: C, transform: (T) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > Array.mapTo(destination: C, transform: (T) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > ByteArray.mapTo(destination: C, transform: (Byte) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > ShortArray.mapTo(destination: C, transform: (Short) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > IntArray.mapTo(destination: C, transform: (Int) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > LongArray.mapTo(destination: C, transform: (Long) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > FloatArray.mapTo(destination: C, transform: (Float) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > DoubleArray.mapTo(destination: C, transform: (Double) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > BooleanArray.mapTo(destination: C, transform: (Boolean) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\npublic inline fun > CharArray.mapTo(destination: C, transform: (Char) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun Array.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun ByteArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun ShortArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun IntArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun LongArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun FloatArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun DoubleArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun BooleanArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun CharArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun Array.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun ByteArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun ShortArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun IntArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun LongArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun FloatArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun DoubleArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun BooleanArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only distinct elements from the given array.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun CharArray.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun Array.distinctBy(selector: (T) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun ByteArray.distinctBy(selector: (Byte) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun ShortArray.distinctBy(selector: (Short) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun IntArray.distinctBy(selector: (Int) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun LongArray.distinctBy(selector: (Long) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun FloatArray.distinctBy(selector: (Float) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun DoubleArray.distinctBy(selector: (Double) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun BooleanArray.distinctBy(selector: (Boolean) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a list containing only elements from the given array\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source array.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun CharArray.distinctBy(selector: (Char) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun Array.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun ByteArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun ShortArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun IntArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun LongArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun FloatArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun DoubleArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun BooleanArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by both this array and the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun CharArray.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun Array.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun ByteArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun ShortArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun IntArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun LongArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun FloatArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun DoubleArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun BooleanArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this array and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic infix fun CharArray.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun Array.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ByteArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun ShortArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun IntArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun LongArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun FloatArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun DoubleArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun BooleanArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given array.\n * \n * The returned set preserves the element iteration order of the original array.\n */\npublic fun CharArray.toMutableSet(): MutableSet {\n val set = LinkedHashSet(mapCapacity(size))\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun Array.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun ByteArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun ShortArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun IntArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun LongArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun FloatArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun DoubleArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun BooleanArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original array.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun CharArray.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun Array.all(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun ByteArray.all(predicate: (Byte) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun ShortArray.all(predicate: (Short) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun IntArray.all(predicate: (Int) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun LongArray.all(predicate: (Long) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun FloatArray.all(predicate: (Float) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun DoubleArray.all(predicate: (Double) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun BooleanArray.all(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun CharArray.all(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun Array.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun ByteArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun ShortArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun IntArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun LongArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun FloatArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun DoubleArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun BooleanArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun CharArray.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun Array.any(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun ByteArray.any(predicate: (Byte) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun ShortArray.any(predicate: (Short) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun IntArray.any(predicate: (Int) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun LongArray.any(predicate: (Long) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun FloatArray.any(predicate: (Float) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun DoubleArray.any(predicate: (Double) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun BooleanArray.any(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun CharArray.any(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Array.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements in this array.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun Array.count(predicate: (T) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun ByteArray.count(predicate: (Byte) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun ShortArray.count(predicate: (Short) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun IntArray.count(predicate: (Int) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun LongArray.count(predicate: (Long) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun FloatArray.count(predicate: (Float) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun DoubleArray.count(predicate: (Double) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun BooleanArray.count(predicate: (Boolean) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun CharArray.count(predicate: (Char) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun Array.fold(initial: R, operation: (acc: R, T) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun ByteArray.fold(initial: R, operation: (acc: R, Byte) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun ShortArray.fold(initial: R, operation: (acc: R, Short) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun IntArray.fold(initial: R, operation: (acc: R, Int) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun LongArray.fold(initial: R, operation: (acc: R, Long) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun FloatArray.fold(initial: R, operation: (acc: R, Float) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun DoubleArray.fold(initial: R, operation: (acc: R, Double) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun BooleanArray.fold(initial: R, operation: (acc: R, Boolean) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun CharArray.fold(initial: R, operation: (acc: R, Char) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun Array.foldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun ByteArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Byte) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun ShortArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Short) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun IntArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Int) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun LongArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Long) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun FloatArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Float) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun DoubleArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Double) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun BooleanArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Boolean) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun CharArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun Array.foldRight(initial: R, operation: (T, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun ByteArray.foldRight(initial: R, operation: (Byte, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun ShortArray.foldRight(initial: R, operation: (Short, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun IntArray.foldRight(initial: R, operation: (Int, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun LongArray.foldRight(initial: R, operation: (Long, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun FloatArray.foldRight(initial: R, operation: (Float, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun DoubleArray.foldRight(initial: R, operation: (Double, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun BooleanArray.foldRight(initial: R, operation: (Boolean, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun CharArray.foldRight(initial: R, operation: (Char, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun Array.foldRightIndexed(initial: R, operation: (index: Int, T, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun ByteArray.foldRightIndexed(initial: R, operation: (index: Int, Byte, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun ShortArray.foldRightIndexed(initial: R, operation: (index: Int, Short, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun IntArray.foldRightIndexed(initial: R, operation: (index: Int, Int, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun LongArray.foldRightIndexed(initial: R, operation: (index: Int, Long, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun FloatArray.foldRightIndexed(initial: R, operation: (index: Int, Float, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun DoubleArray.foldRightIndexed(initial: R, operation: (index: Int, Double, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun BooleanArray.foldRightIndexed(initial: R, operation: (index: Int, Boolean, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun CharArray.foldRightIndexed(initial: R, operation: (index: Int, Char, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun Array.forEach(action: (T) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun ByteArray.forEach(action: (Byte) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun ShortArray.forEach(action: (Short) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun IntArray.forEach(action: (Int) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun LongArray.forEach(action: (Long) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun FloatArray.forEach(action: (Float) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun DoubleArray.forEach(action: (Double) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun BooleanArray.forEach(action: (Boolean) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\npublic inline fun CharArray.forEach(action: (Char) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun Array.forEachIndexed(action: (index: Int, T) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun ByteArray.forEachIndexed(action: (index: Int, Byte) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun ShortArray.forEachIndexed(action: (index: Int, Short) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun IntArray.forEachIndexed(action: (index: Int, Int) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun LongArray.forEachIndexed(action: (index: Int, Long) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun FloatArray.forEachIndexed(action: (index: Int, Float) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun DoubleArray.forEachIndexed(action: (index: Int, Double) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun BooleanArray.forEachIndexed(action: (index: Int, Boolean) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun CharArray.forEachIndexed(action: (index: Int, Char) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Array.max(): Double? {\n if (isEmpty()) return null\n var max = this[0]\n if (max.isNaN()) return max\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Array.max(): Float? {\n if (isEmpty()) return null\n var max = this[0]\n if (max.isNaN()) return max\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun > Array.max(): T? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun ByteArray.max(): Byte? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun ShortArray.max(): Short? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun IntArray.max(): Int? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun LongArray.max(): Long? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\npublic fun FloatArray.max(): Float? {\n if (isEmpty()) return null\n var max = this[0]\n if (max.isNaN()) return max\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\npublic fun DoubleArray.max(): Double? {\n if (isEmpty()) return null\n var max = this[0]\n if (max.isNaN()) return max\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun CharArray.max(): Char? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > Array.maxBy(selector: (T) -> R): T? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > ByteArray.maxBy(selector: (Byte) -> R): Byte? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > ShortArray.maxBy(selector: (Short) -> R): Short? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > IntArray.maxBy(selector: (Int) -> R): Int? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > LongArray.maxBy(selector: (Long) -> R): Long? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > FloatArray.maxBy(selector: (Float) -> R): Float? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > DoubleArray.maxBy(selector: (Double) -> R): Double? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > BooleanArray.maxBy(selector: (Boolean) -> R): Boolean? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > CharArray.maxBy(selector: (Char) -> R): Char? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun Array.maxWith(comparator: Comparator): T? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun ByteArray.maxWith(comparator: Comparator): Byte? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun ShortArray.maxWith(comparator: Comparator): Short? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun IntArray.maxWith(comparator: Comparator): Int? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun LongArray.maxWith(comparator: Comparator): Long? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun FloatArray.maxWith(comparator: Comparator): Float? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun DoubleArray.maxWith(comparator: Comparator): Double? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun BooleanArray.maxWith(comparator: Comparator): Boolean? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun CharArray.maxWith(comparator: Comparator): Char? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Array.min(): Double? {\n if (isEmpty()) return null\n var min = this[0]\n if (min.isNaN()) return min\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Array.min(): Float? {\n if (isEmpty()) return null\n var min = this[0]\n if (min.isNaN()) return min\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun > Array.min(): T? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun ByteArray.min(): Byte? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun ShortArray.min(): Short? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun IntArray.min(): Int? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun LongArray.min(): Long? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\npublic fun FloatArray.min(): Float? {\n if (isEmpty()) return null\n var min = this[0]\n if (min.isNaN()) return min\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\npublic fun DoubleArray.min(): Double? {\n if (isEmpty()) return null\n var min = this[0]\n if (min.isNaN()) return min\n for (i in 1..lastIndex) {\n val e = this[i]\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun CharArray.min(): Char? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > Array.minBy(selector: (T) -> R): T? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > ByteArray.minBy(selector: (Byte) -> R): Byte? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > ShortArray.minBy(selector: (Short) -> R): Short? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > IntArray.minBy(selector: (Int) -> R): Int? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > LongArray.minBy(selector: (Long) -> R): Long? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > FloatArray.minBy(selector: (Float) -> R): Float? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > DoubleArray.minBy(selector: (Double) -> R): Double? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > BooleanArray.minBy(selector: (Boolean) -> R): Boolean? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > CharArray.minBy(selector: (Char) -> R): Char? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun Array.minWith(comparator: Comparator): T? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun ByteArray.minWith(comparator: Comparator): Byte? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun ShortArray.minWith(comparator: Comparator): Short? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun IntArray.minWith(comparator: Comparator): Int? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun LongArray.minWith(comparator: Comparator): Long? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun FloatArray.minWith(comparator: Comparator): Float? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun DoubleArray.minWith(comparator: Comparator): Double? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun BooleanArray.minWith(comparator: Comparator): Boolean? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun CharArray.minWith(comparator: Comparator): Char? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun Array.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun ByteArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun ShortArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun IntArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun LongArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun FloatArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun DoubleArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun BooleanArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun CharArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun Array.none(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun ByteArray.none(predicate: (Byte) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun ShortArray.none(predicate: (Short) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun IntArray.none(predicate: (Int) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun LongArray.none(predicate: (Long) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun FloatArray.none(predicate: (Float) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun DoubleArray.none(predicate: (Double) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun BooleanArray.none(predicate: (Boolean) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun CharArray.none(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun Array.reduce(operation: (acc: S, T) -> S): S {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun ByteArray.reduce(operation: (acc: Byte, Byte) -> Byte): Byte {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun ShortArray.reduce(operation: (acc: Short, Short) -> Short): Short {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun IntArray.reduce(operation: (acc: Int, Int) -> Int): Int {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun LongArray.reduce(operation: (acc: Long, Long) -> Long): Long {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun FloatArray.reduce(operation: (acc: Float, Float) -> Float): Float {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun DoubleArray.reduce(operation: (acc: Double, Double) -> Double): Double {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun BooleanArray.reduce(operation: (acc: Boolean, Boolean) -> Boolean): Boolean {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun CharArray.reduce(operation: (acc: Char, Char) -> Char): Char {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun Array.reduceIndexed(operation: (index: Int, acc: S, T) -> S): S {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun ByteArray.reduceIndexed(operation: (index: Int, acc: Byte, Byte) -> Byte): Byte {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun ShortArray.reduceIndexed(operation: (index: Int, acc: Short, Short) -> Short): Short {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun IntArray.reduceIndexed(operation: (index: Int, acc: Int, Int) -> Int): Int {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun LongArray.reduceIndexed(operation: (index: Int, acc: Long, Long) -> Long): Long {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun FloatArray.reduceIndexed(operation: (index: Int, acc: Float, Float) -> Float): Float {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun DoubleArray.reduceIndexed(operation: (index: Int, acc: Double, Double) -> Double): Double {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun BooleanArray.reduceIndexed(operation: (index: Int, acc: Boolean, Boolean) -> Boolean): Boolean {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun CharArray.reduceIndexed(operation: (index: Int, acc: Char, Char) -> Char): Char {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Array.reduceOrNull(operation: (acc: S, T) -> S): S? {\n if (isEmpty())\n return null\n var accumulator: S = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun ByteArray.reduceOrNull(operation: (acc: Byte, Byte) -> Byte): Byte? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun ShortArray.reduceOrNull(operation: (acc: Short, Short) -> Short): Short? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun IntArray.reduceOrNull(operation: (acc: Int, Int) -> Int): Int? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun LongArray.reduceOrNull(operation: (acc: Long, Long) -> Long): Long? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun FloatArray.reduceOrNull(operation: (acc: Float, Float) -> Float): Float? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun DoubleArray.reduceOrNull(operation: (acc: Double, Double) -> Double): Double? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun BooleanArray.reduceOrNull(operation: (acc: Boolean, Boolean) -> Boolean): Boolean? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun CharArray.reduceOrNull(operation: (acc: Char, Char) -> Char): Char? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun Array.reduceRight(operation: (T, acc: S) -> S): S {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun ByteArray.reduceRight(operation: (Byte, acc: Byte) -> Byte): Byte {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun ShortArray.reduceRight(operation: (Short, acc: Short) -> Short): Short {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun IntArray.reduceRight(operation: (Int, acc: Int) -> Int): Int {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun LongArray.reduceRight(operation: (Long, acc: Long) -> Long): Long {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun FloatArray.reduceRight(operation: (Float, acc: Float) -> Float): Float {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun DoubleArray.reduceRight(operation: (Double, acc: Double) -> Double): Double {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun BooleanArray.reduceRight(operation: (Boolean, acc: Boolean) -> Boolean): Boolean {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun CharArray.reduceRight(operation: (Char, acc: Char) -> Char): Char {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun Array.reduceRightIndexed(operation: (index: Int, T, acc: S) -> S): S {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator: S = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun ByteArray.reduceRightIndexed(operation: (index: Int, Byte, acc: Byte) -> Byte): Byte {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun ShortArray.reduceRightIndexed(operation: (index: Int, Short, acc: Short) -> Short): Short {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun IntArray.reduceRightIndexed(operation: (index: Int, Int, acc: Int) -> Int): Int {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun LongArray.reduceRightIndexed(operation: (index: Int, Long, acc: Long) -> Long): Long {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun FloatArray.reduceRightIndexed(operation: (index: Int, Float, acc: Float) -> Float): Float {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun DoubleArray.reduceRightIndexed(operation: (index: Int, Double, acc: Double) -> Double): Double {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun BooleanArray.reduceRightIndexed(operation: (index: Int, Boolean, acc: Boolean) -> Boolean): Boolean {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun CharArray.reduceRightIndexed(operation: (index: Int, Char, acc: Char) -> Char): Char {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Array.reduceRightOrNull(operation: (T, acc: S) -> S): S? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator: S = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun ByteArray.reduceRightOrNull(operation: (Byte, acc: Byte) -> Byte): Byte? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun ShortArray.reduceRightOrNull(operation: (Short, acc: Short) -> Short): Short? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun IntArray.reduceRightOrNull(operation: (Int, acc: Int) -> Int): Int? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun LongArray.reduceRightOrNull(operation: (Long, acc: Long) -> Long): Long? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun FloatArray.reduceRightOrNull(operation: (Float, acc: Float) -> Float): Float? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun DoubleArray.reduceRightOrNull(operation: (Double, acc: Double) -> Double): Double? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun BooleanArray.reduceRightOrNull(operation: (Boolean, acc: Boolean) -> Boolean): Boolean? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun CharArray.reduceRightOrNull(operation: (Char, acc: Char) -> Char): Char? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Array.scan(initial: R, operation: (acc: R, T) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.scan(initial: R, operation: (acc: R, Byte) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.scan(initial: R, operation: (acc: R, Short) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.scan(initial: R, operation: (acc: R, Int) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.scan(initial: R, operation: (acc: R, Long) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.scan(initial: R, operation: (acc: R, Float) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.scan(initial: R, operation: (acc: R, Double) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.scan(initial: R, operation: (acc: R, Boolean) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.scan(initial: R, operation: (acc: R, Char) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Array.scanIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Byte) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Short) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Int) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Long) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Float) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Double) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Boolean) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and the element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Array.scanReduce(operation: (acc: S, T) -> S): List {\n if (isEmpty()) return emptyList()\n var accumulator: S = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.scanReduce(operation: (acc: Byte, Byte) -> Byte): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.scanReduce(operation: (acc: Short, Short) -> Short): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.scanReduce(operation: (acc: Int, Int) -> Int): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.scanReduce(operation: (acc: Long, Long) -> Long): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.scanReduce(operation: (acc: Float, Float) -> Float): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.scanReduce(operation: (acc: Double, Double) -> Double): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.scanReduce(operation: (acc: Boolean, Boolean) -> Boolean): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.scanReduce(operation: (acc: Char, Char) -> Char): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Array.scanReduceIndexed(operation: (index: Int, acc: S, T) -> S): List {\n if (isEmpty()) return emptyList()\n var accumulator: S = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.scanReduceIndexed(operation: (index: Int, acc: Byte, Byte) -> Byte): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.scanReduceIndexed(operation: (index: Int, acc: Short, Short) -> Short): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.scanReduceIndexed(operation: (index: Int, acc: Int, Int) -> Int): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.scanReduceIndexed(operation: (index: Int, acc: Long, Long) -> Long): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.scanReduceIndexed(operation: (index: Int, acc: Float, Float) -> Float): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.scanReduceIndexed(operation: (index: Int, acc: Double, Double) -> Double): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun BooleanArray.scanReduceIndexed(operation: (index: Int, acc: Boolean, Boolean) -> Boolean): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.scanReduceIndexed(operation: (index: Int, acc: Char, Char) -> Char): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun Array.sumBy(selector: (T) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ByteArray.sumBy(selector: (Byte) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ShortArray.sumBy(selector: (Short) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun IntArray.sumBy(selector: (Int) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun LongArray.sumBy(selector: (Long) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun FloatArray.sumBy(selector: (Float) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun DoubleArray.sumBy(selector: (Double) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun BooleanArray.sumBy(selector: (Boolean) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun CharArray.sumBy(selector: (Char) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun Array.sumByDouble(selector: (T) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ByteArray.sumByDouble(selector: (Byte) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun ShortArray.sumByDouble(selector: (Short) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun IntArray.sumByDouble(selector: (Int) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun LongArray.sumByDouble(selector: (Long) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun FloatArray.sumByDouble(selector: (Float) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun DoubleArray.sumByDouble(selector: (Double) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun BooleanArray.sumByDouble(selector: (Boolean) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\npublic inline fun CharArray.sumByDouble(selector: (Char) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n */\npublic fun Array.requireNoNulls(): Array {\n for (element in this) {\n if (element == null) {\n throw IllegalArgumentException(\"null element found in $this.\")\n }\n }\n @Suppress(\"UNCHECKED_CAST\")\n return this as Array\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun Array.partition(predicate: (T) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun ByteArray.partition(predicate: (Byte) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun ShortArray.partition(predicate: (Short) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun IntArray.partition(predicate: (Int) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun LongArray.partition(predicate: (Long) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun FloatArray.partition(predicate: (Float) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun DoubleArray.partition(predicate: (Double) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun BooleanArray.partition(predicate: (Boolean) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original array into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives\n */\npublic inline fun CharArray.partition(predicate: (Char) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Array.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ByteArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ShortArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun IntArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun LongArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun FloatArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun DoubleArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun BooleanArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun CharArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Array.zip(other: Array, transform: (a: T, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ByteArray.zip(other: Array, transform: (a: Byte, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ShortArray.zip(other: Array, transform: (a: Short, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun IntArray.zip(other: Array, transform: (a: Int, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun LongArray.zip(other: Array, transform: (a: Long, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun FloatArray.zip(other: Array, transform: (a: Float, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun DoubleArray.zip(other: Array, transform: (a: Double, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun BooleanArray.zip(other: Array, transform: (a: Boolean, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun CharArray.zip(other: Array, transform: (a: Char, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Array.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ByteArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ShortArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun IntArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun LongArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun FloatArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun DoubleArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun BooleanArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun CharArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Array.zip(other: Iterable, transform: (a: T, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ByteArray.zip(other: Iterable, transform: (a: Byte, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ShortArray.zip(other: Iterable, transform: (a: Short, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun IntArray.zip(other: Iterable, transform: (a: Int, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun LongArray.zip(other: Iterable, transform: (a: Long, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun FloatArray.zip(other: Iterable, transform: (a: Float, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun DoubleArray.zip(other: Iterable, transform: (a: Double, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun BooleanArray.zip(other: Iterable, transform: (a: Boolean, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun CharArray.zip(other: Iterable, transform: (a: Char, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ByteArray.zip(other: ByteArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun ShortArray.zip(other: ShortArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun IntArray.zip(other: IntArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun LongArray.zip(other: LongArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun FloatArray.zip(other: FloatArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun DoubleArray.zip(other: DoubleArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun BooleanArray.zip(other: BooleanArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun CharArray.zip(other: CharArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ByteArray.zip(other: ByteArray, transform: (a: Byte, b: Byte) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun ShortArray.zip(other: ShortArray, transform: (a: Short, b: Short) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun IntArray.zip(other: IntArray, transform: (a: Int, b: Int) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun LongArray.zip(other: LongArray, transform: (a: Long, b: Long) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun FloatArray.zip(other: FloatArray, transform: (a: Float, b: Float) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun DoubleArray.zip(other: DoubleArray, transform: (a: Double, b: Double) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun BooleanArray.zip(other: BooleanArray, transform: (a: Boolean, b: Boolean) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun CharArray.zip(other: CharArray, transform: (a: Char, b: Char) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun Array.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n buffer.appendElement(element, transform)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun ByteArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Byte) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun ShortArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Short) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun IntArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Int) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun LongArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Long) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun FloatArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Float) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun DoubleArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Double) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun BooleanArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Boolean) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element.toString())\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun CharArray.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Char) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n if (transform != null)\n buffer.append(transform(element))\n else\n buffer.append(element)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun Array.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun ByteArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Byte) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun ShortArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Short) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun IntArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Int) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun LongArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Long) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun FloatArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Float) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun DoubleArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Double) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun BooleanArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Boolean) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun CharArray.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((Char) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun Array.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun ByteArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun ShortArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun IntArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun LongArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun FloatArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun DoubleArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun BooleanArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated.\n */\npublic fun CharArray.asIterable(): Iterable {\n if (isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun Array.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun ByteArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun ShortArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun IntArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun LongArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun FloatArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun DoubleArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun BooleanArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromArray\n */\npublic fun CharArray.asSequence(): Sequence {\n if (isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfByte\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfShort\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfInt\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfLong\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfFloat\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\n@kotlin.jvm.JvmName(\"averageOfDouble\")\npublic fun Array.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun ByteArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun ShortArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun IntArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun LongArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun FloatArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the array.\n */\npublic fun DoubleArray.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n ++count\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfByte\")\npublic fun Array.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfShort\")\npublic fun Array.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfInt\")\npublic fun Array.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfLong\")\npublic fun Array.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfFloat\")\npublic fun Array.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfDouble\")\npublic fun Array.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun ByteArray.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun ShortArray.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun IntArray.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun LongArray.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun FloatArray.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\npublic fun DoubleArray.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"RangesKt\")\n\npackage kotlin.ranges\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\n\n/**\n * Returns a random element from this range.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun IntRange.random(): Int {\n return random(Random)\n}\n\n/**\n * Returns a random element from this range.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun LongRange.random(): Long {\n return random(Random)\n}\n\n/**\n * Returns a random element from this range.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun CharRange.random(): Char {\n return random(Random)\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun IntRange.random(random: Random): Int {\n try {\n return random.nextInt(this)\n } catch(e: IllegalArgumentException) {\n throw NoSuchElementException(e.message)\n }\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun LongRange.random(random: Random): Long {\n try {\n return random.nextLong(this)\n } catch(e: IllegalArgumentException) {\n throw NoSuchElementException(e.message)\n }\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun CharRange.random(random: Random): Char {\n try {\n return random.nextInt(first.toInt(), last.toInt() + 1).toChar()\n } catch(e: IllegalArgumentException) {\n throw NoSuchElementException(e.message)\n }\n}\n\n/**\n * Returns a random element from this range, or `null` if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun IntRange.randomOrNull(): Int? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this range, or `null` if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun LongRange.randomOrNull(): Long? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this range, or `null` if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun CharRange.randomOrNull(): Char? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness, or `null` if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun IntRange.randomOrNull(random: Random): Int? {\n if (isEmpty())\n return null\n return random.nextInt(this)\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness, or `null` if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun LongRange.randomOrNull(random: Random): Long? {\n if (isEmpty())\n return null\n return random.nextLong(this)\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness, or `null` if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun CharRange.randomOrNull(random: Random): Char? {\n if (isEmpty())\n return null\n return random.nextInt(first.toInt(), last.toInt() + 1).toChar()\n}\n\n/**\n * Returns `true` if this range contains the specified [element].\n * \n * Always returns `false` if the [element] is `null`.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline operator fun IntRange.contains(element: Int?): Boolean {\n return element != null && contains(element)\n}\n\n/**\n * Returns `true` if this range contains the specified [element].\n * \n * Always returns `false` if the [element] is `null`.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline operator fun LongRange.contains(element: Long?): Boolean {\n return element != null && contains(element)\n}\n\n/**\n * Returns `true` if this range contains the specified [element].\n * \n * Always returns `false` if the [element] is `null`.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline operator fun CharRange.contains(element: Char?): Boolean {\n return element != null && contains(element)\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"intRangeContains\")\npublic operator fun ClosedRange.contains(value: Byte): Boolean {\n return contains(value.toInt())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"longRangeContains\")\npublic operator fun ClosedRange.contains(value: Byte): Boolean {\n return contains(value.toLong())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"shortRangeContains\")\npublic operator fun ClosedRange.contains(value: Byte): Boolean {\n return contains(value.toShort())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"doubleRangeContains\")\npublic operator fun ClosedRange.contains(value: Byte): Boolean {\n return contains(value.toDouble())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"floatRangeContains\")\npublic operator fun ClosedRange.contains(value: Byte): Boolean {\n return contains(value.toFloat())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"intRangeContains\")\npublic operator fun ClosedRange.contains(value: Double): Boolean {\n return value.toIntExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"longRangeContains\")\npublic operator fun ClosedRange.contains(value: Double): Boolean {\n return value.toLongExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"byteRangeContains\")\npublic operator fun ClosedRange.contains(value: Double): Boolean {\n return value.toByteExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"shortRangeContains\")\npublic operator fun ClosedRange.contains(value: Double): Boolean {\n return value.toShortExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"floatRangeContains\")\npublic operator fun ClosedRange.contains(value: Double): Boolean {\n return contains(value.toFloat())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"intRangeContains\")\npublic operator fun ClosedRange.contains(value: Float): Boolean {\n return value.toIntExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"longRangeContains\")\npublic operator fun ClosedRange.contains(value: Float): Boolean {\n return value.toLongExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"byteRangeContains\")\npublic operator fun ClosedRange.contains(value: Float): Boolean {\n return value.toByteExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"shortRangeContains\")\npublic operator fun ClosedRange.contains(value: Float): Boolean {\n return value.toShortExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"doubleRangeContains\")\npublic operator fun ClosedRange.contains(value: Float): Boolean {\n return contains(value.toDouble())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"longRangeContains\")\npublic operator fun ClosedRange.contains(value: Int): Boolean {\n return contains(value.toLong())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"byteRangeContains\")\npublic operator fun ClosedRange.contains(value: Int): Boolean {\n return value.toByteExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"shortRangeContains\")\npublic operator fun ClosedRange.contains(value: Int): Boolean {\n return value.toShortExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"doubleRangeContains\")\npublic operator fun ClosedRange.contains(value: Int): Boolean {\n return contains(value.toDouble())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"floatRangeContains\")\npublic operator fun ClosedRange.contains(value: Int): Boolean {\n return contains(value.toFloat())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"intRangeContains\")\npublic operator fun ClosedRange.contains(value: Long): Boolean {\n return value.toIntExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"byteRangeContains\")\npublic operator fun ClosedRange.contains(value: Long): Boolean {\n return value.toByteExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"shortRangeContains\")\npublic operator fun ClosedRange.contains(value: Long): Boolean {\n return value.toShortExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"doubleRangeContains\")\npublic operator fun ClosedRange.contains(value: Long): Boolean {\n return contains(value.toDouble())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"floatRangeContains\")\npublic operator fun ClosedRange.contains(value: Long): Boolean {\n return contains(value.toFloat())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"intRangeContains\")\npublic operator fun ClosedRange.contains(value: Short): Boolean {\n return contains(value.toInt())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"longRangeContains\")\npublic operator fun ClosedRange.contains(value: Short): Boolean {\n return contains(value.toLong())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"byteRangeContains\")\npublic operator fun ClosedRange.contains(value: Short): Boolean {\n return value.toByteExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"doubleRangeContains\")\npublic operator fun ClosedRange.contains(value: Short): Boolean {\n return contains(value.toDouble())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@kotlin.jvm.JvmName(\"floatRangeContains\")\npublic operator fun ClosedRange.contains(value: Short): Boolean {\n return contains(value.toFloat())\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Int.downTo(to: Byte): IntProgression {\n return IntProgression.fromClosedRange(this, to.toInt(), -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Long.downTo(to: Byte): LongProgression {\n return LongProgression.fromClosedRange(this, to.toLong(), -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Byte.downTo(to: Byte): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to.toInt(), -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Short.downTo(to: Byte): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to.toInt(), -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Char.downTo(to: Char): CharProgression {\n return CharProgression.fromClosedRange(this, to, -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Int.downTo(to: Int): IntProgression {\n return IntProgression.fromClosedRange(this, to, -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Long.downTo(to: Int): LongProgression {\n return LongProgression.fromClosedRange(this, to.toLong(), -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Byte.downTo(to: Int): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to, -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Short.downTo(to: Int): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to, -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Int.downTo(to: Long): LongProgression {\n return LongProgression.fromClosedRange(this.toLong(), to, -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Long.downTo(to: Long): LongProgression {\n return LongProgression.fromClosedRange(this, to, -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Byte.downTo(to: Long): LongProgression {\n return LongProgression.fromClosedRange(this.toLong(), to, -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Short.downTo(to: Long): LongProgression {\n return LongProgression.fromClosedRange(this.toLong(), to, -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Int.downTo(to: Short): IntProgression {\n return IntProgression.fromClosedRange(this, to.toInt(), -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Long.downTo(to: Short): LongProgression {\n return LongProgression.fromClosedRange(this, to.toLong(), -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Byte.downTo(to: Short): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to.toInt(), -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Short.downTo(to: Short): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to.toInt(), -1)\n}\n\n/**\n * Returns a progression that goes over the same range in the opposite direction with the same step.\n */\npublic fun IntProgression.reversed(): IntProgression {\n return IntProgression.fromClosedRange(last, first, -step)\n}\n\n/**\n * Returns a progression that goes over the same range in the opposite direction with the same step.\n */\npublic fun LongProgression.reversed(): LongProgression {\n return LongProgression.fromClosedRange(last, first, -step)\n}\n\n/**\n * Returns a progression that goes over the same range in the opposite direction with the same step.\n */\npublic fun CharProgression.reversed(): CharProgression {\n return CharProgression.fromClosedRange(last, first, -step)\n}\n\n/**\n * Returns a progression that goes over the same range with the given step.\n */\npublic infix fun IntProgression.step(step: Int): IntProgression {\n checkStepIsPositive(step > 0, step)\n return IntProgression.fromClosedRange(first, last, if (this.step > 0) step else -step)\n}\n\n/**\n * Returns a progression that goes over the same range with the given step.\n */\npublic infix fun LongProgression.step(step: Long): LongProgression {\n checkStepIsPositive(step > 0, step)\n return LongProgression.fromClosedRange(first, last, if (this.step > 0) step else -step)\n}\n\n/**\n * Returns a progression that goes over the same range with the given step.\n */\npublic infix fun CharProgression.step(step: Int): CharProgression {\n checkStepIsPositive(step > 0, step)\n return CharProgression.fromClosedRange(first, last, if (this.step > 0) step else -step)\n}\n\ninternal fun Int.toByteExactOrNull(): Byte? {\n return if (this in Byte.MIN_VALUE.toInt()..Byte.MAX_VALUE.toInt()) this.toByte() else null\n}\n\ninternal fun Long.toByteExactOrNull(): Byte? {\n return if (this in Byte.MIN_VALUE.toLong()..Byte.MAX_VALUE.toLong()) this.toByte() else null\n}\n\ninternal fun Short.toByteExactOrNull(): Byte? {\n return if (this in Byte.MIN_VALUE.toShort()..Byte.MAX_VALUE.toShort()) this.toByte() else null\n}\n\ninternal fun Double.toByteExactOrNull(): Byte? {\n return if (this in Byte.MIN_VALUE.toDouble()..Byte.MAX_VALUE.toDouble()) this.toByte() else null\n}\n\ninternal fun Float.toByteExactOrNull(): Byte? {\n return if (this in Byte.MIN_VALUE.toFloat()..Byte.MAX_VALUE.toFloat()) this.toByte() else null\n}\n\ninternal fun Long.toIntExactOrNull(): Int? {\n return if (this in Int.MIN_VALUE.toLong()..Int.MAX_VALUE.toLong()) this.toInt() else null\n}\n\ninternal fun Double.toIntExactOrNull(): Int? {\n return if (this in Int.MIN_VALUE.toDouble()..Int.MAX_VALUE.toDouble()) this.toInt() else null\n}\n\ninternal fun Float.toIntExactOrNull(): Int? {\n return if (this in Int.MIN_VALUE.toFloat()..Int.MAX_VALUE.toFloat()) this.toInt() else null\n}\n\ninternal fun Double.toLongExactOrNull(): Long? {\n return if (this in Long.MIN_VALUE.toDouble()..Long.MAX_VALUE.toDouble()) this.toLong() else null\n}\n\ninternal fun Float.toLongExactOrNull(): Long? {\n return if (this in Long.MIN_VALUE.toFloat()..Long.MAX_VALUE.toFloat()) this.toLong() else null\n}\n\ninternal fun Int.toShortExactOrNull(): Short? {\n return if (this in Short.MIN_VALUE.toInt()..Short.MAX_VALUE.toInt()) this.toShort() else null\n}\n\ninternal fun Long.toShortExactOrNull(): Short? {\n return if (this in Short.MIN_VALUE.toLong()..Short.MAX_VALUE.toLong()) this.toShort() else null\n}\n\ninternal fun Double.toShortExactOrNull(): Short? {\n return if (this in Short.MIN_VALUE.toDouble()..Short.MAX_VALUE.toDouble()) this.toShort() else null\n}\n\ninternal fun Float.toShortExactOrNull(): Short? {\n return if (this in Short.MIN_VALUE.toFloat()..Short.MAX_VALUE.toFloat()) this.toShort() else null\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Int.until(to: Byte): IntRange {\n return this .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Long.until(to: Byte): LongRange {\n return this .. (to.toLong() - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Byte.until(to: Byte): IntRange {\n return this.toInt() .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Short.until(to: Byte): IntRange {\n return this.toInt() .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Char.until(to: Char): CharRange {\n if (to <= '\\u0000') return CharRange.EMPTY\n return this .. (to - 1).toChar()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Int.until(to: Int): IntRange {\n if (to <= Int.MIN_VALUE) return IntRange.EMPTY\n return this .. (to - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Long.until(to: Int): LongRange {\n return this .. (to.toLong() - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Byte.until(to: Int): IntRange {\n if (to <= Int.MIN_VALUE) return IntRange.EMPTY\n return this.toInt() .. (to - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Short.until(to: Int): IntRange {\n if (to <= Int.MIN_VALUE) return IntRange.EMPTY\n return this.toInt() .. (to - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Int.until(to: Long): LongRange {\n if (to <= Long.MIN_VALUE) return LongRange.EMPTY\n return this.toLong() .. (to - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Long.until(to: Long): LongRange {\n if (to <= Long.MIN_VALUE) return LongRange.EMPTY\n return this .. (to - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Byte.until(to: Long): LongRange {\n if (to <= Long.MIN_VALUE) return LongRange.EMPTY\n return this.toLong() .. (to - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Short.until(to: Long): LongRange {\n if (to <= Long.MIN_VALUE) return LongRange.EMPTY\n return this.toLong() .. (to - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Int.until(to: Short): IntRange {\n return this .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Long.until(to: Short): LongRange {\n return this .. (to.toLong() - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Byte.until(to: Short): IntRange {\n return this.toInt() .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Short.until(to: Short): IntRange {\n return this.toInt() .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeastComparable\n */\npublic fun > T.coerceAtLeast(minimumValue: T): T {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Byte.coerceAtLeast(minimumValue: Byte): Byte {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Short.coerceAtLeast(minimumValue: Short): Short {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Int.coerceAtLeast(minimumValue: Int): Int {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Long.coerceAtLeast(minimumValue: Long): Long {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Float.coerceAtLeast(minimumValue: Float): Float {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Double.coerceAtLeast(minimumValue: Double): Double {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMostComparable\n */\npublic fun > T.coerceAtMost(maximumValue: T): T {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Byte.coerceAtMost(maximumValue: Byte): Byte {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Short.coerceAtMost(maximumValue: Short): Short {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Int.coerceAtMost(maximumValue: Int): Int {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Long.coerceAtMost(maximumValue: Long): Long {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Float.coerceAtMost(maximumValue: Float): Float {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Double.coerceAtMost(maximumValue: Double): Double {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceInComparable\n */\npublic fun > T.coerceIn(minimumValue: T?, maximumValue: T?): T {\n if (minimumValue !== null && maximumValue !== null) {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n }\n else {\n if (minimumValue !== null && this < minimumValue) return minimumValue\n if (maximumValue !== null && this > maximumValue) return maximumValue\n }\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Byte.coerceIn(minimumValue: Byte, maximumValue: Byte): Byte {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Short.coerceIn(minimumValue: Short, maximumValue: Short): Short {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Int.coerceIn(minimumValue: Int, maximumValue: Int): Int {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Long.coerceIn(minimumValue: Long, maximumValue: Long): Long {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Float.coerceIn(minimumValue: Float, maximumValue: Float): Float {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Double.coerceIn(minimumValue: Double, maximumValue: Double): Double {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified [range].\n * \n * @return this value if it's in the [range], or `range.start` if this value is less than `range.start`, or `range.endInclusive` if this value is greater than `range.endInclusive`.\n * \n * @sample samples.comparisons.ComparableOps.coerceInFloatingPointRange\n */\n@SinceKotlin(\"1.1\")\npublic fun > T.coerceIn(range: ClosedFloatingPointRange): T {\n if (range.isEmpty()) throw IllegalArgumentException(\"Cannot coerce value to an empty range: $range.\")\n return when {\n // this < start equiv to this <= start && !(this >= start)\n range.lessThanOrEquals(this, range.start) && !range.lessThanOrEquals(range.start, this) -> range.start\n // this > end equiv to this >= end && !(this <= end)\n range.lessThanOrEquals(range.endInclusive, this) && !range.lessThanOrEquals(this, range.endInclusive) -> range.endInclusive\n else -> this\n }\n}\n\n/**\n * Ensures that this value lies in the specified [range].\n * \n * @return this value if it's in the [range], or `range.start` if this value is less than `range.start`, or `range.endInclusive` if this value is greater than `range.endInclusive`.\n * \n * @sample samples.comparisons.ComparableOps.coerceInComparable\n */\npublic fun > T.coerceIn(range: ClosedRange): T {\n if (range is ClosedFloatingPointRange) {\n return this.coerceIn(range)\n }\n if (range.isEmpty()) throw IllegalArgumentException(\"Cannot coerce value to an empty range: $range.\")\n return when {\n this < range.start -> range.start\n this > range.endInclusive -> range.endInclusive\n else -> this\n }\n}\n\n/**\n * Ensures that this value lies in the specified [range].\n * \n * @return this value if it's in the [range], or `range.start` if this value is less than `range.start`, or `range.endInclusive` if this value is greater than `range.endInclusive`.\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Int.coerceIn(range: ClosedRange): Int {\n if (range is ClosedFloatingPointRange) {\n return this.coerceIn(range)\n }\n if (range.isEmpty()) throw IllegalArgumentException(\"Cannot coerce value to an empty range: $range.\")\n return when {\n this < range.start -> range.start\n this > range.endInclusive -> range.endInclusive\n else -> this\n }\n}\n\n/**\n * Ensures that this value lies in the specified [range].\n * \n * @return this value if it's in the [range], or `range.start` if this value is less than `range.start`, or `range.endInclusive` if this value is greater than `range.endInclusive`.\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Long.coerceIn(range: ClosedRange): Long {\n if (range is ClosedFloatingPointRange) {\n return this.coerceIn(range)\n }\n if (range.isEmpty()) throw IllegalArgumentException(\"Cannot coerce value to an empty range: $range.\")\n return when {\n this < range.start -> range.start\n this > range.endInclusive -> range.endInclusive\n else -> this\n }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\nimport kotlin.experimental.*\n\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class UByte @PublishedApi internal constructor(@PublishedApi internal val data: Byte) : Comparable {\n\n companion object {\n /**\n * A constant holding the minimum value an instance of UByte can have.\n */\n public const val MIN_VALUE: UByte = UByte(0)\n\n /**\n * A constant holding the maximum value an instance of UByte can have.\n */\n public const val MAX_VALUE: UByte = UByte(-1)\n\n /**\n * The number of bytes used to represent an instance of UByte in a binary form.\n */\n public const val SIZE_BYTES: Int = 1\n\n /**\n * The number of bits used to represent an instance of UByte in a binary form.\n */\n public const val SIZE_BITS: Int = 8\n }\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n @Suppress(\"OVERRIDE_BY_INLINE\")\n public override inline operator fun compareTo(other: UByte): Int = this.toInt().compareTo(other.toInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UShort): Int = this.toInt().compareTo(other.toInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UInt): Int = this.toUInt().compareTo(other)\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: ULong): Int = this.toULong().compareTo(other)\n\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UByte): UInt = this.toUInt().plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UShort): UInt = this.toUInt().plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UInt): UInt = this.toUInt().plus(other)\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: ULong): ULong = this.toULong().plus(other)\n\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UByte): UInt = this.toUInt().minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UShort): UInt = this.toUInt().minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UInt): UInt = this.toUInt().minus(other)\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: ULong): ULong = this.toULong().minus(other)\n\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UByte): UInt = this.toUInt().times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UShort): UInt = this.toUInt().times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UInt): UInt = this.toUInt().times(other)\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: ULong): ULong = this.toULong().times(other)\n\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UByte): UInt = this.toUInt().div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UShort): UInt = this.toUInt().div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UInt): UInt = this.toUInt().div(other)\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: ULong): ULong = this.toULong().div(other)\n\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UByte): UInt = this.toUInt().rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UShort): UInt = this.toUInt().rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UInt): UInt = this.toUInt().rem(other)\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: ULong): ULong = this.toULong().rem(other)\n\n /** Increments this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun inc(): UByte = UByte(data.inc())\n /** Decrements this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun dec(): UByte = UByte(data.dec())\n\n /** Creates a range from this value to the specified [other] value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rangeTo(other: UByte): UIntRange = UIntRange(this.toUInt(), other.toUInt())\n\n /** Performs a bitwise AND operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun and(other: UByte): UByte = UByte(this.data and other.data)\n /** Performs a bitwise OR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun or(other: UByte): UByte = UByte(this.data or other.data)\n /** Performs a bitwise XOR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun xor(other: UByte): UByte = UByte(this.data xor other.data)\n /** Inverts the bits in this value. */\n @kotlin.internal.InlineOnly\n public inline fun inv(): UByte = UByte(data.inv())\n\n /**\n * Converts this [UByte] value to [Byte].\n *\n * If this value is less than or equals to [Byte.MAX_VALUE], the resulting `Byte` value represents\n * the same numerical value as this `UByte`. Otherwise the result is negative.\n *\n * The resulting `Byte` value has the same binary representation as this `UByte` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toByte(): Byte = data\n /**\n * Converts this [UByte] value to [Short].\n *\n * The resulting `Short` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `Short` value are the same as the bits of this `UByte` value,\n * whereas the most significant 8 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toShort(): Short = data.toShort() and 0xFF\n /**\n * Converts this [UByte] value to [Int].\n *\n * The resulting `Int` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `Int` value are the same as the bits of this `UByte` value,\n * whereas the most significant 24 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toInt(): Int = data.toInt() and 0xFF\n /**\n * Converts this [UByte] value to [Long].\n *\n * The resulting `Long` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `Long` value are the same as the bits of this `UByte` value,\n * whereas the most significant 56 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toLong(): Long = data.toLong() and 0xFF\n\n /** Returns this value. */\n @kotlin.internal.InlineOnly\n public inline fun toUByte(): UByte = this\n /**\n * Converts this [UByte] value to [UShort].\n *\n * The resulting `UShort` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `UShort` value are the same as the bits of this `UByte` value,\n * whereas the most significant 8 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUShort(): UShort = UShort(data.toShort() and 0xFF)\n /**\n * Converts this [UByte] value to [UInt].\n *\n * The resulting `UInt` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `UInt` value are the same as the bits of this `UByte` value,\n * whereas the most significant 24 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUInt(): UInt = UInt(data.toInt() and 0xFF)\n /**\n * Converts this [UByte] value to [ULong].\n *\n * The resulting `ULong` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `ULong` value are the same as the bits of this `UByte` value,\n * whereas the most significant 56 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toULong(): ULong = ULong(data.toLong() and 0xFF)\n\n /**\n * Converts this [UByte] value to [Float].\n *\n * The resulting `Float` value represents the same numerical value as this `UByte`.\n */\n @kotlin.internal.InlineOnly\n public inline fun toFloat(): Float = this.toInt().toFloat()\n /**\n * Converts this [UByte] value to [Double].\n *\n * The resulting `Double` value represents the same numerical value as this `UByte`.\n */\n @kotlin.internal.InlineOnly\n public inline fun toDouble(): Double = this.toInt().toDouble()\n\n public override fun toString(): String = toInt().toString()\n\n}\n\n/**\n * Converts this [Byte] value to [UByte].\n *\n * If this value is positive, the resulting `UByte` value represents the same numerical value as this `Byte`.\n *\n * The resulting `UByte` value has the same binary representation as this `Byte` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Byte.toUByte(): UByte = UByte(this)\n/**\n * Converts this [Short] value to [UByte].\n *\n * If this value is positive and less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `Short`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `Short` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Short.toUByte(): UByte = UByte(this.toByte())\n/**\n * Converts this [Int] value to [UByte].\n *\n * If this value is positive and less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `Int`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `Int` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Int.toUByte(): UByte = UByte(this.toByte())\n/**\n * Converts this [Long] value to [UByte].\n *\n * If this value is positive and less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `Long`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `Long` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Long.toUByte(): UByte = UByte(this.toByte())\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\nimport kotlin.experimental.*\n\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class UInt @PublishedApi internal constructor(@PublishedApi internal val data: Int) : Comparable {\n\n companion object {\n /**\n * A constant holding the minimum value an instance of UInt can have.\n */\n public const val MIN_VALUE: UInt = UInt(0)\n\n /**\n * A constant holding the maximum value an instance of UInt can have.\n */\n public const val MAX_VALUE: UInt = UInt(-1)\n\n /**\n * The number of bytes used to represent an instance of UInt in a binary form.\n */\n public const val SIZE_BYTES: Int = 4\n\n /**\n * The number of bits used to represent an instance of UInt in a binary form.\n */\n public const val SIZE_BITS: Int = 32\n }\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UByte): Int = this.compareTo(other.toUInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UShort): Int = this.compareTo(other.toUInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n @Suppress(\"OVERRIDE_BY_INLINE\")\n public override inline operator fun compareTo(other: UInt): Int = uintCompare(this.data, other.data)\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: ULong): Int = this.toULong().compareTo(other)\n\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UByte): UInt = this.plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UShort): UInt = this.plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UInt): UInt = UInt(this.data.plus(other.data))\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: ULong): ULong = this.toULong().plus(other)\n\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UByte): UInt = this.minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UShort): UInt = this.minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UInt): UInt = UInt(this.data.minus(other.data))\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: ULong): ULong = this.toULong().minus(other)\n\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UByte): UInt = this.times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UShort): UInt = this.times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UInt): UInt = UInt(this.data.times(other.data))\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: ULong): ULong = this.toULong().times(other)\n\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UByte): UInt = this.div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UShort): UInt = this.div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UInt): UInt = uintDivide(this, other)\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: ULong): ULong = this.toULong().div(other)\n\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UByte): UInt = this.rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UShort): UInt = this.rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UInt): UInt = uintRemainder(this, other)\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: ULong): ULong = this.toULong().rem(other)\n\n /** Increments this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun inc(): UInt = UInt(data.inc())\n /** Decrements this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun dec(): UInt = UInt(data.dec())\n\n /** Creates a range from this value to the specified [other] value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rangeTo(other: UInt): UIntRange = UIntRange(this, other)\n\n /** Shifts this value left by the [bitCount] number of bits. */\n @kotlin.internal.InlineOnly\n public inline infix fun shl(bitCount: Int): UInt = UInt(data shl bitCount)\n /** Shifts this value right by the [bitCount] number of bits, filling the leftmost bits with zeros. */\n @kotlin.internal.InlineOnly\n public inline infix fun shr(bitCount: Int): UInt = UInt(data ushr bitCount)\n /** Performs a bitwise AND operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun and(other: UInt): UInt = UInt(this.data and other.data)\n /** Performs a bitwise OR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun or(other: UInt): UInt = UInt(this.data or other.data)\n /** Performs a bitwise XOR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun xor(other: UInt): UInt = UInt(this.data xor other.data)\n /** Inverts the bits in this value. */\n @kotlin.internal.InlineOnly\n public inline fun inv(): UInt = UInt(data.inv())\n\n /**\n * Converts this [UInt] value to [Byte].\n *\n * If this value is less than or equals to [Byte.MAX_VALUE], the resulting `Byte` value represents\n * the same numerical value as this `UInt`.\n *\n * The resulting `Byte` value is represented by the least significant 8 bits of this `UInt` value.\n * Note that the resulting `Byte` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toByte(): Byte = data.toByte()\n /**\n * Converts this [UInt] value to [Short].\n *\n * If this value is less than or equals to [Short.MAX_VALUE], the resulting `Short` value represents\n * the same numerical value as this `UInt`.\n *\n * The resulting `Short` value is represented by the least significant 16 bits of this `UInt` value.\n * Note that the resulting `Short` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toShort(): Short = data.toShort()\n /**\n * Converts this [UInt] value to [Int].\n *\n * If this value is less than or equals to [Int.MAX_VALUE], the resulting `Int` value represents\n * the same numerical value as this `UInt`. Otherwise the result is negative.\n *\n * The resulting `Int` value has the same binary representation as this `UInt` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toInt(): Int = data\n /**\n * Converts this [UInt] value to [Long].\n *\n * The resulting `Long` value represents the same numerical value as this `UInt`.\n *\n * The least significant 32 bits of the resulting `Long` value are the same as the bits of this `UInt` value,\n * whereas the most significant 32 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toLong(): Long = data.toLong() and 0xFFFF_FFFF\n\n /**\n * Converts this [UInt] value to [UByte].\n *\n * If this value is less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `UInt`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `UInt` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUByte(): UByte = data.toUByte()\n /**\n * Converts this [UInt] value to [UShort].\n *\n * If this value is less than or equals to [UShort.MAX_VALUE], the resulting `UShort` value represents\n * the same numerical value as this `UInt`.\n *\n * The resulting `UShort` value is represented by the least significant 16 bits of this `UInt` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUShort(): UShort = data.toUShort()\n /** Returns this value. */\n @kotlin.internal.InlineOnly\n public inline fun toUInt(): UInt = this\n /**\n * Converts this [UInt] value to [ULong].\n *\n * The resulting `ULong` value represents the same numerical value as this `UInt`.\n *\n * The least significant 32 bits of the resulting `ULong` value are the same as the bits of this `UInt` value,\n * whereas the most significant 32 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toULong(): ULong = ULong(data.toLong() and 0xFFFF_FFFF)\n\n /**\n * Converts this [UInt] value to [Float].\n *\n * The resulting value is the closest `Float` to this `UInt` value.\n * In case when this `UInt` value is exactly between two `Float`s,\n * the one with zero at least significant bit of mantissa is selected.\n */\n @kotlin.internal.InlineOnly\n public inline fun toFloat(): Float = this.toDouble().toFloat()\n /**\n * Converts this [UInt] value to [Double].\n *\n * The resulting `Double` value represents the same numerical value as this `UInt`.\n */\n @kotlin.internal.InlineOnly\n public inline fun toDouble(): Double = uintToDouble(data)\n\n public override fun toString(): String = toLong().toString()\n\n}\n\n/**\n * Converts this [Byte] value to [UInt].\n *\n * If this value is positive, the resulting `UInt` value represents the same numerical value as this `Byte`.\n *\n * The least significant 8 bits of the resulting `UInt` value are the same as the bits of this `Byte` value,\n * whereas the most significant 24 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Byte.toUInt(): UInt = UInt(this.toInt())\n/**\n * Converts this [Short] value to [UInt].\n *\n * If this value is positive, the resulting `UInt` value represents the same numerical value as this `Short`.\n *\n * The least significant 16 bits of the resulting `UInt` value are the same as the bits of this `Short` value,\n * whereas the most significant 16 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Short.toUInt(): UInt = UInt(this.toInt())\n/**\n * Converts this [Int] value to [UInt].\n *\n * If this value is positive, the resulting `UInt` value represents the same numerical value as this `Int`.\n *\n * The resulting `UInt` value has the same binary representation as this `Int` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Int.toUInt(): UInt = UInt(this)\n/**\n * Converts this [Long] value to [UInt].\n *\n * If this value is positive and less than or equals to [UInt.MAX_VALUE], the resulting `UInt` value represents\n * the same numerical value as this `Long`.\n *\n * The resulting `UInt` value is represented by the least significant 32 bits of this `Long` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Long.toUInt(): UInt = UInt(this.toInt())\n\n/**\n * Converts this [Float] value to [UInt].\n *\n * The fractional part, if any, is rounded down towards zero.\n * Returns zero if this `Float` value is negative or `NaN`, [UInt.MAX_VALUE] if it's bigger than `UInt.MAX_VALUE`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Float.toUInt(): UInt = doubleToUInt(this.toDouble())\n/**\n * Converts this [Double] value to [UInt].\n *\n * The fractional part, if any, is rounded down towards zero.\n * Returns zero if this `Double` value is negative or `NaN`, [UInt.MAX_VALUE] if it's bigger than `UInt.MAX_VALUE`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Double.toUInt(): UInt = doubleToUInt(this)\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\nimport kotlin.experimental.*\n\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class UShort @PublishedApi internal constructor(@PublishedApi internal val data: Short) : Comparable {\n\n companion object {\n /**\n * A constant holding the minimum value an instance of UShort can have.\n */\n public const val MIN_VALUE: UShort = UShort(0)\n\n /**\n * A constant holding the maximum value an instance of UShort can have.\n */\n public const val MAX_VALUE: UShort = UShort(-1)\n\n /**\n * The number of bytes used to represent an instance of UShort in a binary form.\n */\n public const val SIZE_BYTES: Int = 2\n\n /**\n * The number of bits used to represent an instance of UShort in a binary form.\n */\n public const val SIZE_BITS: Int = 16\n }\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UByte): Int = this.toInt().compareTo(other.toInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n @Suppress(\"OVERRIDE_BY_INLINE\")\n public override inline operator fun compareTo(other: UShort): Int = this.toInt().compareTo(other.toInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UInt): Int = this.toUInt().compareTo(other)\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: ULong): Int = this.toULong().compareTo(other)\n\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UByte): UInt = this.toUInt().plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UShort): UInt = this.toUInt().plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UInt): UInt = this.toUInt().plus(other)\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: ULong): ULong = this.toULong().plus(other)\n\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UByte): UInt = this.toUInt().minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UShort): UInt = this.toUInt().minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UInt): UInt = this.toUInt().minus(other)\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: ULong): ULong = this.toULong().minus(other)\n\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UByte): UInt = this.toUInt().times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UShort): UInt = this.toUInt().times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UInt): UInt = this.toUInt().times(other)\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: ULong): ULong = this.toULong().times(other)\n\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UByte): UInt = this.toUInt().div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UShort): UInt = this.toUInt().div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UInt): UInt = this.toUInt().div(other)\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: ULong): ULong = this.toULong().div(other)\n\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UByte): UInt = this.toUInt().rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UShort): UInt = this.toUInt().rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UInt): UInt = this.toUInt().rem(other)\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: ULong): ULong = this.toULong().rem(other)\n\n /** Increments this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun inc(): UShort = UShort(data.inc())\n /** Decrements this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun dec(): UShort = UShort(data.dec())\n\n /** Creates a range from this value to the specified [other] value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rangeTo(other: UShort): UIntRange = UIntRange(this.toUInt(), other.toUInt())\n\n /** Performs a bitwise AND operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun and(other: UShort): UShort = UShort(this.data and other.data)\n /** Performs a bitwise OR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun or(other: UShort): UShort = UShort(this.data or other.data)\n /** Performs a bitwise XOR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun xor(other: UShort): UShort = UShort(this.data xor other.data)\n /** Inverts the bits in this value. */\n @kotlin.internal.InlineOnly\n public inline fun inv(): UShort = UShort(data.inv())\n\n /**\n * Converts this [UShort] value to [Byte].\n *\n * If this value is less than or equals to [Byte.MAX_VALUE], the resulting `Byte` value represents\n * the same numerical value as this `UShort`.\n *\n * The resulting `Byte` value is represented by the least significant 8 bits of this `UShort` value.\n * Note that the resulting `Byte` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toByte(): Byte = data.toByte()\n /**\n * Converts this [UShort] value to [Short].\n *\n * If this value is less than or equals to [Short.MAX_VALUE], the resulting `Short` value represents\n * the same numerical value as this `UShort`. Otherwise the result is negative.\n *\n * The resulting `Short` value has the same binary representation as this `UShort` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toShort(): Short = data\n /**\n * Converts this [UShort] value to [Int].\n *\n * The resulting `Int` value represents the same numerical value as this `UShort`.\n *\n * The least significant 16 bits of the resulting `Int` value are the same as the bits of this `UShort` value,\n * whereas the most significant 16 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toInt(): Int = data.toInt() and 0xFFFF\n /**\n * Converts this [UShort] value to [Long].\n *\n * The resulting `Long` value represents the same numerical value as this `UShort`.\n *\n * The least significant 16 bits of the resulting `Long` value are the same as the bits of this `UShort` value,\n * whereas the most significant 48 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toLong(): Long = data.toLong() and 0xFFFF\n\n /**\n * Converts this [UShort] value to [UByte].\n *\n * If this value is less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `UShort`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `UShort` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUByte(): UByte = data.toUByte()\n /** Returns this value. */\n @kotlin.internal.InlineOnly\n public inline fun toUShort(): UShort = this\n /**\n * Converts this [UShort] value to [UInt].\n *\n * The resulting `UInt` value represents the same numerical value as this `UShort`.\n *\n * The least significant 16 bits of the resulting `UInt` value are the same as the bits of this `UShort` value,\n * whereas the most significant 16 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUInt(): UInt = UInt(data.toInt() and 0xFFFF)\n /**\n * Converts this [UShort] value to [ULong].\n *\n * The resulting `ULong` value represents the same numerical value as this `UShort`.\n *\n * The least significant 16 bits of the resulting `ULong` value are the same as the bits of this `UShort` value,\n * whereas the most significant 48 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toULong(): ULong = ULong(data.toLong() and 0xFFFF)\n\n /**\n * Converts this [UShort] value to [Float].\n *\n * The resulting `Float` value represents the same numerical value as this `UShort`.\n */\n @kotlin.internal.InlineOnly\n public inline fun toFloat(): Float = this.toInt().toFloat()\n /**\n * Converts this [UShort] value to [Double].\n *\n * The resulting `Double` value represents the same numerical value as this `UShort`.\n */\n @kotlin.internal.InlineOnly\n public inline fun toDouble(): Double = this.toInt().toDouble()\n\n public override fun toString(): String = toInt().toString()\n\n}\n\n/**\n * Converts this [Byte] value to [UShort].\n *\n * If this value is positive, the resulting `UShort` value represents the same numerical value as this `Byte`.\n *\n * The least significant 8 bits of the resulting `UShort` value are the same as the bits of this `Byte` value,\n * whereas the most significant 8 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Byte.toUShort(): UShort = UShort(this.toShort())\n/**\n * Converts this [Short] value to [UShort].\n *\n * If this value is positive, the resulting `UShort` value represents the same numerical value as this `Short`.\n *\n * The resulting `UShort` value has the same binary representation as this `Short` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Short.toUShort(): UShort = UShort(this)\n/**\n * Converts this [Int] value to [UShort].\n *\n * If this value is positive and less than or equals to [UShort.MAX_VALUE], the resulting `UShort` value represents\n * the same numerical value as this `Int`.\n *\n * The resulting `UShort` value is represented by the least significant 16 bits of this `Int` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Int.toUShort(): UShort = UShort(this.toShort())\n/**\n * Converts this [Long] value to [UShort].\n *\n * If this value is positive and less than or equals to [UShort.MAX_VALUE], the resulting `UShort` value represents\n * the same numerical value as this `Long`.\n *\n * The resulting `UShort` value is represented by the least significant 16 bits of this `Long` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Long.toUShort(): UShort = UShort(this.toShort())\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.ranges\n\n/**\n * A range of values of type `Char`.\n */\npublic class CharRange(start: Char, endInclusive: Char) : CharProgression(start, endInclusive, 1), ClosedRange {\n override val start: Char get() = first\n override val endInclusive: Char get() = last\n\n override fun contains(value: Char): Boolean = first <= value && value <= last\n\n override fun isEmpty(): Boolean = first > last\n\n override fun equals(other: Any?): Boolean =\n other is CharRange && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * first.toInt() + last.toInt())\n\n override fun toString(): String = \"$first..$last\"\n\n companion object {\n /** An empty range of values of type Char. */\n public val EMPTY: CharRange = CharRange(1.toChar(), 0.toChar())\n }\n}\n\n/**\n * A range of values of type `Int`.\n */\npublic class IntRange(start: Int, endInclusive: Int) : IntProgression(start, endInclusive, 1), ClosedRange {\n override val start: Int get() = first\n override val endInclusive: Int get() = last\n\n override fun contains(value: Int): Boolean = first <= value && value <= last\n\n override fun isEmpty(): Boolean = first > last\n\n override fun equals(other: Any?): Boolean =\n other is IntRange && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * first + last)\n\n override fun toString(): String = \"$first..$last\"\n\n companion object {\n /** An empty range of values of type Int. */\n public val EMPTY: IntRange = IntRange(1, 0)\n }\n}\n\n/**\n * A range of values of type `Long`.\n */\npublic class LongRange(start: Long, endInclusive: Long) : LongProgression(start, endInclusive, 1), ClosedRange {\n override val start: Long get() = first\n override val endInclusive: Long get() = last\n\n override fun contains(value: Long): Boolean = first <= value && value <= last\n\n override fun isEmpty(): Boolean = first > last\n\n override fun equals(other: Any?): Boolean =\n other is LongRange && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (first xor (first ushr 32)) + (last xor (last ushr 32))).toInt()\n\n override fun toString(): String = \"$first..$last\"\n\n companion object {\n /** An empty range of values of type Long. */\n public val EMPTY: LongRange = LongRange(1, 0)\n }\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n@file:UseExperimental(kotlin.experimental.ExperimentalTypeInference::class)\n\npackage kotlin.collections\n\nimport kotlin.contracts.*\n\ninternal object EmptyIterator : ListIterator {\n override fun hasNext(): Boolean = false\n override fun hasPrevious(): Boolean = false\n override fun nextIndex(): Int = 0\n override fun previousIndex(): Int = -1\n override fun next(): Nothing = throw NoSuchElementException()\n override fun previous(): Nothing = throw NoSuchElementException()\n}\n\ninternal object EmptyList : List, Serializable, RandomAccess {\n private const val serialVersionUID: Long = -7390468764508069838L\n\n override fun equals(other: Any?): Boolean = other is List<*> && other.isEmpty()\n override fun hashCode(): Int = 1\n override fun toString(): String = \"[]\"\n\n override val size: Int get() = 0\n override fun isEmpty(): Boolean = true\n override fun contains(element: Nothing): Boolean = false\n override fun containsAll(elements: Collection): Boolean = elements.isEmpty()\n\n override fun get(index: Int): Nothing = throw IndexOutOfBoundsException(\"Empty list doesn't contain element at index $index.\")\n override fun indexOf(element: Nothing): Int = -1\n override fun lastIndexOf(element: Nothing): Int = -1\n\n override fun iterator(): Iterator = EmptyIterator\n override fun listIterator(): ListIterator = EmptyIterator\n override fun listIterator(index: Int): ListIterator {\n if (index != 0) throw IndexOutOfBoundsException(\"Index: $index\")\n return EmptyIterator\n }\n\n override fun subList(fromIndex: Int, toIndex: Int): List {\n if (fromIndex == 0 && toIndex == 0) return this\n throw IndexOutOfBoundsException(\"fromIndex: $fromIndex, toIndex: $toIndex\")\n }\n\n private fun readResolve(): Any = EmptyList\n}\n\ninternal fun Array.asCollection(): Collection = ArrayAsCollection(this, isVarargs = false)\n\nprivate class ArrayAsCollection(val values: Array, val isVarargs: Boolean) : Collection {\n override val size: Int get() = values.size\n override fun isEmpty(): Boolean = values.isEmpty()\n override fun contains(element: T): Boolean = values.contains(element)\n override fun containsAll(elements: Collection): Boolean = elements.all { contains(it) }\n override fun iterator(): Iterator = values.iterator()\n // override hidden toArray implementation to prevent copying of values array\n public fun toArray(): Array = values.copyToArrayOfAny(isVarargs)\n}\n\n/**\n * Returns an empty read-only list. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.emptyReadOnlyList\n */\npublic fun emptyList(): List = EmptyList\n\n/**\n * Returns a new read-only list of given elements. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.readOnlyList\n */\npublic fun listOf(vararg elements: T): List = if (elements.size > 0) elements.asList() else emptyList()\n\n/**\n * Returns an empty read-only list. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.emptyReadOnlyList\n */\n@kotlin.internal.InlineOnly\npublic inline fun listOf(): List = emptyList()\n\n/**\n * Returns an empty new [MutableList].\n * @sample samples.collections.Collections.Lists.emptyMutableList\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun mutableListOf(): MutableList = ArrayList()\n\n/**\n * Returns an empty new [ArrayList].\n * @sample samples.collections.Collections.Lists.emptyArrayList\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun arrayListOf(): ArrayList = ArrayList()\n\n/**\n * Returns a new [MutableList] with the given elements.\n * @sample samples.collections.Collections.Lists.mutableList\n */\npublic fun mutableListOf(vararg elements: T): MutableList =\n if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))\n\n/**\n * Returns a new [ArrayList] with the given elements.\n * @sample samples.collections.Collections.Lists.arrayList\n */\npublic fun arrayListOf(vararg elements: T): ArrayList =\n if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))\n\n/**\n * Returns a new read-only list either of single given element, if it is not null, or empty list if the element is null. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.listOfNotNull\n */\npublic fun listOfNotNull(element: T?): List = if (element != null) listOf(element) else emptyList()\n\n/**\n * Returns a new read-only list only of those given elements, that are not null. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.listOfNotNull\n */\npublic fun listOfNotNull(vararg elements: T?): List = elements.filterNotNull()\n\n/**\n * Creates a new read-only list with the specified [size], where each element is calculated by calling the specified\n * [init] function.\n *\n * The function [init] is called for each list element sequentially starting from the first one.\n * It should return the value for a list element given its index.\n *\n * @sample samples.collections.Collections.Lists.readOnlyListFromInitializer\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun List(size: Int, init: (index: Int) -> T): List = MutableList(size, init)\n\n/**\n * Creates a new mutable list with the specified [size], where each element is calculated by calling the specified\n * [init] function.\n *\n * The function [init] is called for each list element sequentially starting from the first one.\n * It should return the value for a list element given its index.\n *\n * @sample samples.collections.Collections.Lists.mutableListFromInitializer\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun MutableList(size: Int, init: (index: Int) -> T): MutableList {\n val list = ArrayList(size)\n repeat(size) { index -> list.add(init(index)) }\n return list\n}\n\n/**\n * Builds a new read-only [List] by populating a [MutableList] using the given [builderAction]\n * and returning a read-only list with the same elements.\n *\n * The list passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * @sample samples.collections.Builders.Lists.buildListSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildList(@BuilderInference builderAction: MutableList.() -> Unit): List {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return ArrayList().apply(builderAction)\n}\n\n/**\n * Builds a new read-only [List] by populating a [MutableList] using the given [builderAction]\n * and returning a read-only list with the same elements.\n *\n * The list passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * [capacity] is used to hint the expected number of elements added in the [builderAction].\n *\n * @throws IllegalArgumentException if the given [capacity] is negative.\n *\n * @sample samples.collections.Builders.Lists.buildListSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildList(capacity: Int, @BuilderInference builderAction: MutableList.() -> Unit): List {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n checkBuilderCapacity(capacity)\n return ArrayList(capacity).apply(builderAction)\n}\n\n\n/**\n * Returns an [IntRange] of the valid indices for this collection.\n * @sample samples.collections.Collections.Collections.indicesOfCollection\n */\npublic val Collection<*>.indices: IntRange\n get() = 0..size - 1\n\n/**\n * Returns the index of the last item in the list or -1 if the list is empty.\n *\n * @sample samples.collections.Collections.Lists.lastIndexOfList\n */\npublic val List.lastIndex: Int\n get() = this.size - 1\n\n/**\n * Returns `true` if the collection is not empty.\n * @sample samples.collections.Collections.Collections.collectionIsNotEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection.isNotEmpty(): Boolean = !isEmpty()\n\n/**\n * Returns `true` if this nullable collection is either null or empty.\n * @sample samples.collections.Collections.Collections.collectionIsNullOrEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Collection?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || this.isEmpty()\n}\n\n/**\n * Returns this Collection if it's not `null` and the empty list otherwise.\n * @sample samples.collections.Collections.Collections.collectionOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection?.orEmpty(): Collection = this ?: emptyList()\n\n/**\n * Returns this List if it's not `null` and the empty list otherwise.\n * @sample samples.collections.Collections.Lists.listOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun List?.orEmpty(): List = this ?: emptyList()\n\n/**\n * Returns this collection if it's not empty\n * or the result of calling [defaultValue] function if the collection is empty.\n *\n * @sample samples.collections.Collections.Collections.collectionIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun C.ifEmpty(defaultValue: () -> R): R where C : Collection<*>, C : R =\n if (isEmpty()) defaultValue() else this\n\n\n/**\n * Checks if all elements in the specified collection are contained in this collection.\n *\n * Allows to overcome type-safety restriction of `containsAll` that requires to pass a collection of type `Collection`.\n * @sample samples.collections.Collections.Collections.collectionContainsAll\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> Collection.containsAll(elements: Collection): Boolean = this.containsAll(elements)\n\ninternal fun List.optimizeReadOnlyList() = when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this\n}\n\n/**\n * Searches this list or its range for the provided [element] using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the Comparable natural ordering of its elements,\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements equal to the specified [element], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchOnComparable\n * @sample samples.collections.Collections.Lists.binarySearchWithBoundaries\n */\npublic fun > List.binarySearch(element: T?, fromIndex: Int = 0, toIndex: Int = size): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = compareValues(midVal, element)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Searches this list or its range for the provided [element] using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the specified [comparator],\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements equal to the specified [element], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted according to the specified [comparator].\n * @sample samples.collections.Collections.Lists.binarySearchWithComparator\n */\npublic fun List.binarySearch(element: T, comparator: Comparator, fromIndex: Int = 0, toIndex: Int = size): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = comparator.compare(midVal, element)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Searches this list or its range for an element having the key returned by the specified [selector] function\n * equal to the provided [key] value using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the Comparable natural ordering of keys of its elements.\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements with the specified [key], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element with the specified [key], if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchByKey\n */\npublic inline fun > List.binarySearchBy(\n key: K?,\n fromIndex: Int = 0,\n toIndex: Int = size,\n crossinline selector: (T) -> K?\n): Int =\n binarySearch(fromIndex, toIndex) { compareValues(selector(it), key) }\n\n// do not introduce this overload --- too rare\n//public fun List.binarySearchBy(key: K, comparator: Comparator, fromIndex: Int = 0, toIndex: Int = size(), selector: (T) -> K): Int =\n// binarySearch(fromIndex, toIndex) { comparator.compare(selector(it), key) }\n\n\n/**\n * Searches this list or its range for an element for which the given [comparison] function returns zero using the binary search algorithm.\n *\n * The list is expected to be sorted so that the signs of the [comparison] function's return values ascend on the list elements,\n * i.e. negative values come before zero and zeroes come before positive values.\n * Otherwise, the result is undefined.\n *\n * If the list contains multiple elements for which [comparison] returns zero, there is no guarantee which one will be found.\n *\n * @param comparison function that returns zero when called on the list element being searched.\n * On the elements coming before the target element, the function must return negative values;\n * on the elements coming after the target element, the function must return positive values.\n *\n * @return the index of the found element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchWithComparisonFunction\n */\npublic fun List.binarySearch(fromIndex: Int = 0, toIndex: Int = size, comparison: (T) -> Int): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = comparison(midVal)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Checks that `from` and `to` are in\n * the range of [0..size] and throws an appropriate exception, if they aren't.\n */\nprivate fun rangeCheck(size: Int, fromIndex: Int, toIndex: Int) {\n when {\n fromIndex > toIndex -> throw IllegalArgumentException(\"fromIndex ($fromIndex) is greater than toIndex ($toIndex).\")\n fromIndex < 0 -> throw IndexOutOfBoundsException(\"fromIndex ($fromIndex) is less than zero.\")\n toIndex > size -> throw IndexOutOfBoundsException(\"toIndex ($toIndex) is greater than size ($size).\")\n }\n}\n\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal expect fun checkIndexOverflow(index: Int): Int\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal expect fun checkCountOverflow(count: Int): Int\n\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun throwIndexOverflow() { throw ArithmeticException(\"Index overflow has happened.\") }\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun throwCountOverflow() { throw ArithmeticException(\"Count overflow has happened.\") }\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"MapsKt\")\n@file:UseExperimental(kotlin.experimental.ExperimentalTypeInference::class)\n\npackage kotlin.collections\n\nimport kotlin.contracts.*\n\nprivate object EmptyMap : Map, Serializable {\n private const val serialVersionUID: Long = 8246714829545688274\n\n override fun equals(other: Any?): Boolean = other is Map<*, *> && other.isEmpty()\n override fun hashCode(): Int = 0\n override fun toString(): String = \"{}\"\n\n override val size: Int get() = 0\n override fun isEmpty(): Boolean = true\n\n override fun containsKey(key: Any?): Boolean = false\n override fun containsValue(value: Nothing): Boolean = false\n override fun get(key: Any?): Nothing? = null\n override val entries: Set> get() = EmptySet\n override val keys: Set get() = EmptySet\n override val values: Collection get() = EmptyList\n\n private fun readResolve(): Any = EmptyMap\n}\n\n/**\n * Returns an empty read-only map of specified type.\n *\n * The returned map is serializable (JVM).\n * @sample samples.collections.Maps.Instantiation.emptyReadOnlyMap\n */\npublic fun emptyMap(): Map = @Suppress(\"UNCHECKED_CAST\") (EmptyMap as Map)\n\n/**\n * Returns a new read-only map with the specified contents, given as a list of pairs\n * where the first value is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * The returned map is serializable (JVM).\n *\n * @sample samples.collections.Maps.Instantiation.mapFromPairs\n */\npublic fun mapOf(vararg pairs: Pair): Map =\n if (pairs.size > 0) pairs.toMap(LinkedHashMap(mapCapacity(pairs.size))) else emptyMap()\n\n/**\n * Returns an empty read-only map.\n *\n * The returned map is serializable (JVM).\n * @sample samples.collections.Maps.Instantiation.emptyReadOnlyMap\n */\n@kotlin.internal.InlineOnly\npublic inline fun mapOf(): Map = emptyMap()\n\n/**\n * Returns an empty new [MutableMap].\n *\n * The returned map preserves the entry iteration order.\n * @sample samples.collections.Maps.Instantiation.emptyMutableMap\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun mutableMapOf(): MutableMap = LinkedHashMap()\n\n/**\n * Returns a new [MutableMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * @sample samples.collections.Maps.Instantiation.mutableMapFromPairs\n * @sample samples.collections.Maps.Instantiation.emptyMutableMap\n */\npublic fun mutableMapOf(vararg pairs: Pair): MutableMap =\n LinkedHashMap(mapCapacity(pairs.size)).apply { putAll(pairs) }\n\n/**\n * Returns an empty new [HashMap].\n *\n * @sample samples.collections.Maps.Instantiation.emptyHashMap\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun hashMapOf(): HashMap = HashMap()\n\n/**\n * Returns a new [HashMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * @sample samples.collections.Maps.Instantiation.hashMapFromPairs\n */\npublic fun hashMapOf(vararg pairs: Pair): HashMap = HashMap(mapCapacity(pairs.size)).apply { putAll(pairs) }\n\n/**\n * Returns an empty new [LinkedHashMap].\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun linkedMapOf(): LinkedHashMap = LinkedHashMap()\n\n/**\n * Returns a new [LinkedHashMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * @sample samples.collections.Maps.Instantiation.linkedMapFromPairs\n */\npublic fun linkedMapOf(vararg pairs: Pair): LinkedHashMap = pairs.toMap(LinkedHashMap(mapCapacity(pairs.size)))\n\n/**\n * Builds a new read-only [Map] by populating a [MutableMap] using the given [builderAction]\n * and returning a read-only map with the same key-value pairs.\n *\n * The map passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * Entries of the map are iterated in the order they were added by the [builderAction].\n *\n * @sample samples.collections.Builders.Maps.buildMapSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildMap(@BuilderInference builderAction: MutableMap.() -> Unit): Map {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return LinkedHashMap().apply(builderAction)\n}\n\n/**\n * Builds a new read-only [Map] by populating a [MutableMap] using the given [builderAction]\n * and returning a read-only map with the same key-value pairs.\n *\n * The map passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * [capacity] is used to hint the expected number of pairs added in the [builderAction].\n *\n * Entries of the map are iterated in the order they were added by the [builderAction].\n *\n * @throws IllegalArgumentException if the given [capacity] is negative.\n *\n * @sample samples.collections.Builders.Maps.buildMapSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildMap(capacity: Int, @BuilderInference builderAction: MutableMap.() -> Unit): Map {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n checkBuilderCapacity(capacity)\n return LinkedHashMap(mapCapacity(capacity)).apply(builderAction)\n}\n\n/**\n * Calculate the initial capacity of a map.\n */\n@PublishedApi\ninternal expect fun mapCapacity(expectedSize: Int): Int\n\n/**\n * Checks a collection builder function capacity argument.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@PublishedApi\ninternal expect fun checkBuilderCapacity(capacity: Int)\n\n/**\n * Returns `true` if this map is not empty.\n * @sample samples.collections.Maps.Usage.mapIsNotEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.isNotEmpty(): Boolean = !isEmpty()\n\n/**\n * Returns `true` if this nullable map is either null or empty.\n * @sample samples.collections.Maps.Usage.mapIsNullOrEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Map?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || isEmpty()\n}\n\n/**\n * Returns the [Map] if its not `null`, or the empty [Map] otherwise.\n *\n * @sample samples.collections.Maps.Usage.mapOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map?.orEmpty(): Map = this ?: emptyMap()\n\n/**\n * Returns this map if it's not empty\n * or the result of calling [defaultValue] function if the map is empty.\n *\n * @sample samples.collections.Maps.Usage.mapIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun M.ifEmpty(defaultValue: () -> R): R where M : Map<*, *>, M : R =\n if (isEmpty()) defaultValue() else this\n\n/**\n * Checks if the map contains the given key.\n *\n * This method allows to use the `x in map` syntax for checking whether an object is contained in the map.\n *\n * @sample samples.collections.Maps.Usage.containsKey\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <@kotlin.internal.OnlyInputTypes K, V> Map.contains(key: K): Boolean = containsKey(key)\n\n/**\n * Returns the value corresponding to the given [key], or `null` if such a key is not present in the map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <@kotlin.internal.OnlyInputTypes K, V> Map.get(key: K): V? =\n @Suppress(\"UNCHECKED_CAST\") (this as Map).get(key)\n\n/**\n * Allows to use the index operator for storing values in a mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.set(key: K, value: V): Unit {\n put(key, value)\n}\n\n/**\n * Returns `true` if the map contains the specified [key].\n *\n * Allows to overcome type-safety restriction of `containsKey` that requires to pass a key of type `K`.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes K> Map.containsKey(key: K): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as Map).containsKey(key)\n\n/**\n * Returns `true` if the map maps one or more keys to the specified [value].\n *\n * Allows to overcome type-safety restriction of `containsValue` that requires to pass a value of type `V`.\n *\n * @sample samples.collections.Maps.Usage.containsValue\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\n@kotlin.internal.InlineOnly\npublic inline fun Map.containsValue(value: V): Boolean = this.containsValue(value)\n\n\n/**\n * Removes the specified key and its corresponding value from this map.\n *\n * @return the previous value associated with the key, or `null` if the key was not present in the map.\n\n * Allows to overcome type-safety restriction of `remove` that requires to pass a key of type `K`.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes K, V> MutableMap.remove(key: K): V? =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableMap).remove(key)\n\n/**\n * Returns the key component of the map entry.\n *\n * This method allows to use destructuring declarations when working with maps, for example:\n * ```\n * for ((key, value) in map) {\n * // do something with the key and the value\n * }\n * ```\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Map.Entry.component1(): K = key\n\n/**\n * Returns the value component of the map entry.\n *\n * This method allows to use destructuring declarations when working with maps, for example:\n * ```\n * for ((key, value) in map) {\n * // do something with the key and the value\n * }\n * ```\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Map.Entry.component2(): V = value\n\n/**\n * Converts entry to [Pair] with key being first component and value being second.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.Entry.toPair(): Pair = Pair(key, value)\n\n/**\n * Returns the value for the given key, or the result of the [defaultValue] function if there was no entry for the given key.\n *\n * @sample samples.collections.Maps.Usage.getOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.getOrElse(key: K, defaultValue: () -> V): V = get(key) ?: defaultValue()\n\n\ninternal inline fun Map.getOrElseNullable(key: K, defaultValue: () -> V): V {\n val value = get(key)\n if (value == null && !containsKey(key)) {\n return defaultValue()\n } else {\n @Suppress(\"UNCHECKED_CAST\")\n return value as V\n }\n}\n\n/**\n * Returns the value for the given [key] or throws an exception if there is no such key in the map.\n *\n * If the map was created by [withDefault], resorts to its `defaultValue` provider function\n * instead of throwing an exception.\n *\n * @throws NoSuchElementException when the map doesn't contain a value for the specified key and\n * no implicit default value was provided for that map.\n */\n@SinceKotlin(\"1.1\")\npublic fun Map.getValue(key: K): V = getOrImplicitDefault(key)\n\n/**\n * Returns the value for the given key. If the key is not found in the map, calls the [defaultValue] function,\n * puts its result into the map under the given key and returns it.\n *\n * Note that the operation is not guaranteed to be atomic if the map is being modified concurrently.\n *\n * @sample samples.collections.Maps.Usage.getOrPut\n */\npublic inline fun MutableMap.getOrPut(key: K, defaultValue: () -> V): V {\n val value = get(key)\n return if (value == null) {\n val answer = defaultValue()\n put(key, answer)\n answer\n } else {\n value\n }\n}\n\n/**\n * Returns an [Iterator] over the entries in the [Map].\n *\n * @sample samples.collections.Maps.Usage.forOverEntries\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Map.iterator(): Iterator> = entries.iterator()\n\n/**\n * Returns a [MutableIterator] over the mutable entries in the [MutableMap].\n *\n */\n@kotlin.jvm.JvmName(\"mutableIterator\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.iterator(): MutableIterator> = entries.iterator()\n\n/**\n * Populates the given [destination] map with entries having the keys of this map and the values obtained\n * by applying the [transform] function to each entry in this [Map].\n */\npublic inline fun > Map.mapValuesTo(destination: M, transform: (Map.Entry) -> R): M {\n return entries.associateByTo(destination, { it.key }, transform)\n}\n\n/**\n * Populates the given [destination] map with entries having the keys obtained\n * by applying the [transform] function to each entry in this [Map] and the values of this map.\n *\n * In case if any two entries are mapped to the equal keys, the value of the latter one will overwrite\n * the value associated with the former one.\n */\npublic inline fun > Map.mapKeysTo(destination: M, transform: (Map.Entry) -> R): M {\n return entries.associateByTo(destination, transform, { it.value })\n}\n\n/**\n * Puts all the given [pairs] into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun MutableMap.putAll(pairs: Array>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Puts all the elements of the given collection into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun MutableMap.putAll(pairs: Iterable>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Puts all the elements of the given sequence into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun MutableMap.putAll(pairs: Sequence>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Returns a new map with entries having the keys of this map and the values obtained by applying the [transform]\n * function to each entry in this [Map].\n *\n * The returned map preserves the entry iteration order of the original map.\n *\n * @sample samples.collections.Maps.Transformations.mapValues\n */\npublic inline fun Map.mapValues(transform: (Map.Entry) -> R): Map {\n return mapValuesTo(LinkedHashMap(mapCapacity(size)), transform) // .optimizeReadOnlyMap()\n}\n\n/**\n * Returns a new Map with entries having the keys obtained by applying the [transform] function to each entry in this\n * [Map] and the values of this map.\n *\n * In case if any two entries are mapped to the equal keys, the value of the latter one will overwrite\n * the value associated with the former one.\n *\n * The returned map preserves the entry iteration order of the original map.\n *\n * @sample samples.collections.Maps.Transformations.mapKeys\n */\npublic inline fun Map.mapKeys(transform: (Map.Entry) -> R): Map {\n return mapKeysTo(LinkedHashMap(mapCapacity(size)), transform) // .optimizeReadOnlyMap()\n}\n\n/**\n * Returns a map containing all key-value pairs with keys matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterKeys\n */\npublic inline fun Map.filterKeys(predicate: (K) -> Boolean): Map {\n val result = LinkedHashMap()\n for (entry in this) {\n if (predicate(entry.key)) {\n result.put(entry.key, entry.value)\n }\n }\n return result\n}\n\n/**\n * Returns a map containing all key-value pairs with values matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterValues\n */\npublic inline fun Map.filterValues(predicate: (V) -> Boolean): Map {\n val result = LinkedHashMap()\n for (entry in this) {\n if (predicate(entry.value)) {\n result.put(entry.key, entry.value)\n }\n }\n return result\n}\n\n\n/**\n * Appends all entries matching the given [predicate] into the mutable map given as [destination] parameter.\n *\n * @return the destination map.\n * @sample samples.collections.Maps.Filtering.filterTo\n */\npublic inline fun > Map.filterTo(destination: M, predicate: (Map.Entry) -> Boolean): M {\n for (element in this) {\n if (predicate(element)) {\n destination.put(element.key, element.value)\n }\n }\n return destination\n}\n\n/**\n * Returns a new map containing all key-value pairs matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filter\n */\npublic inline fun Map.filter(predicate: (Map.Entry) -> Boolean): Map {\n return filterTo(LinkedHashMap(), predicate)\n}\n\n/**\n * Appends all entries not matching the given [predicate] into the given [destination].\n *\n * @return the destination map.\n * @sample samples.collections.Maps.Filtering.filterNotTo\n */\npublic inline fun > Map.filterNotTo(destination: M, predicate: (Map.Entry) -> Boolean): M {\n for (element in this) {\n if (!predicate(element)) {\n destination.put(element.key, element.value)\n }\n }\n return destination\n}\n\n/**\n * Returns a new map containing all key-value pairs not matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterNot\n */\npublic inline fun Map.filterNot(predicate: (Map.Entry) -> Boolean): Map {\n return filterNotTo(LinkedHashMap(), predicate)\n}\n\n/**\n * Returns a new map containing all key-value pairs from the given collection of pairs.\n *\n * The returned map preserves the entry iteration order of the original collection.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun Iterable>.toMap(): Map {\n if (this is Collection) {\n return when (size) {\n 0 -> emptyMap()\n 1 -> mapOf(if (this is List) this[0] else iterator().next())\n else -> toMap(LinkedHashMap(mapCapacity(size)))\n }\n }\n return toMap(LinkedHashMap()).optimizeReadOnlyMap()\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given collection of pairs.\n */\npublic fun > Iterable>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new map containing all key-value pairs from the given array of pairs.\n *\n * The returned map preserves the entry iteration order of the original array.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun Array>.toMap(): Map = when (size) {\n 0 -> emptyMap()\n 1 -> mapOf(this[0])\n else -> toMap(LinkedHashMap(mapCapacity(size)))\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given array of pairs.\n */\npublic fun > Array>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new map containing all key-value pairs from the given sequence of pairs.\n *\n * The returned map preserves the entry iteration order of the original sequence.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun Sequence>.toMap(): Map = toMap(LinkedHashMap()).optimizeReadOnlyMap()\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given sequence of pairs.\n */\npublic fun > Sequence>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new read-only map containing all key-value pairs from the original map.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic fun Map.toMap(): Map = when (size) {\n 0 -> emptyMap()\n 1 -> toSingletonMap()\n else -> toMutableMap()\n}\n\n/**\n * Returns a new mutable map containing all key-value pairs from the original map.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic fun Map.toMutableMap(): MutableMap = LinkedHashMap(this)\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given map.\n */\n@SinceKotlin(\"1.1\")\npublic fun > Map.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Creates a new read-only map by replacing or adding an entry to this map from a given key-value [pair].\n *\n * The returned map preserves the entry iteration order of the original map.\n * The [pair] is iterated in the end if it has a unique key.\n */\npublic operator fun Map.plus(pair: Pair): Map =\n if (this.isEmpty()) mapOf(pair) else LinkedHashMap(this).apply { put(pair.first, pair.second) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given collection of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] collection.\n */\npublic operator fun Map.plus(pairs: Iterable>): Map =\n if (this.isEmpty()) pairs.toMap() else LinkedHashMap(this).apply { putAll(pairs) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given array of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] array.\n */\npublic operator fun Map.plus(pairs: Array>): Map =\n if (this.isEmpty()) pairs.toMap() else LinkedHashMap(this).apply { putAll(pairs) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given sequence of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] sequence.\n */\npublic operator fun Map.plus(pairs: Sequence>): Map =\n LinkedHashMap(this).apply { putAll(pairs) }.optimizeReadOnlyMap()\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from another [map].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those entries of another [map] that are missing in this map are iterated in the end in the order of that [map].\n */\npublic operator fun Map.plus(map: Map): Map =\n LinkedHashMap(this).apply { putAll(map) }\n\n\n/**\n * Appends or replaces the given [pair] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pair: Pair) {\n put(pair.first, pair.second)\n}\n\n/**\n * Appends or replaces all pairs from the given collection of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pairs: Iterable>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all pairs from the given array of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pairs: Array>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all pairs from the given sequence of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pairs: Sequence>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all entries from the given [map] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(map: Map) {\n putAll(map)\n}\n\n/**\n * Returns a map containing all entries of the original map except the entry with the given [key].\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(key: K): Map =\n this.toMutableMap().apply { minusAssign(key) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] collection.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(keys: Iterable): Map =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] array.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(keys: Array): Map =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] sequence.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(keys: Sequence): Map =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Removes the entry with the given [key] from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(key: K) {\n remove(key)\n}\n\n/**\n * Removes all entries the keys of which are contained in the given [keys] collection from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(keys: Iterable) {\n this.keys.removeAll(keys)\n}\n\n/**\n * Removes all entries the keys of which are contained in the given [keys] array from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(keys: Array) {\n this.keys.removeAll(keys)\n}\n\n/**\n * Removes all entries from the keys of which are contained in the given [keys] sequence from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(keys: Sequence) {\n this.keys.removeAll(keys)\n}\n\n\n// do not expose for now @PublishedApi\ninternal fun Map.optimizeReadOnlyMap() = when (size) {\n 0 -> emptyMap()\n 1 -> toSingletonMapOrSelf()\n else -> this\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"SetsKt\")\n@file:UseExperimental(kotlin.experimental.ExperimentalTypeInference::class)\n\npackage kotlin.collections\n\nimport kotlin.contracts.*\n\ninternal object EmptySet : Set, Serializable {\n private const val serialVersionUID: Long = 3406603774387020532\n\n override fun equals(other: Any?): Boolean = other is Set<*> && other.isEmpty()\n override fun hashCode(): Int = 0\n override fun toString(): String = \"[]\"\n\n override val size: Int get() = 0\n override fun isEmpty(): Boolean = true\n override fun contains(element: Nothing): Boolean = false\n override fun containsAll(elements: Collection): Boolean = elements.isEmpty()\n\n override fun iterator(): Iterator = EmptyIterator\n\n private fun readResolve(): Any = EmptySet\n}\n\n\n/**\n * Returns an empty read-only set. The returned set is serializable (JVM).\n * @sample samples.collections.Collections.Sets.emptyReadOnlySet\n */\npublic fun emptySet(): Set = EmptySet\n\n/**\n * Returns a new read-only set with the given elements.\n * Elements of the set are iterated in the order they were specified.\n * The returned set is serializable (JVM).\n * @sample samples.collections.Collections.Sets.readOnlySet\n */\npublic fun setOf(vararg elements: T): Set = if (elements.size > 0) elements.toSet() else emptySet()\n\n/**\n * Returns an empty read-only set. The returned set is serializable (JVM).\n * @sample samples.collections.Collections.Sets.emptyReadOnlySet\n */\n@kotlin.internal.InlineOnly\npublic inline fun setOf(): Set = emptySet()\n\n/**\n * Returns an empty new [MutableSet].\n *\n * The returned set preserves the element iteration order.\n * @sample samples.collections.Collections.Sets.emptyMutableSet\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun mutableSetOf(): MutableSet = LinkedHashSet()\n\n/**\n * Returns a new [MutableSet] with the given elements.\n * Elements of the set are iterated in the order they were specified.\n * @sample samples.collections.Collections.Sets.mutableSet\n */\npublic fun mutableSetOf(vararg elements: T): MutableSet = elements.toCollection(LinkedHashSet(mapCapacity(elements.size)))\n\n/** Returns an empty new [HashSet]. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun hashSetOf(): HashSet = HashSet()\n\n/** Returns a new [HashSet] with the given elements. */\npublic fun hashSetOf(vararg elements: T): HashSet = elements.toCollection(HashSet(mapCapacity(elements.size)))\n\n/**\n * Returns an empty new [LinkedHashSet].\n * @sample samples.collections.Collections.Sets.emptyLinkedHashSet\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun linkedSetOf(): LinkedHashSet = LinkedHashSet()\n\n/**\n * Returns a new [LinkedHashSet] with the given elements.\n * Elements of the set are iterated in the order they were specified.\n * @sample samples.collections.Collections.Sets.linkedHashSet\n */\npublic fun linkedSetOf(vararg elements: T): LinkedHashSet = elements.toCollection(LinkedHashSet(mapCapacity(elements.size)))\n\n/**\n * Builds a new read-only [Set] by populating a [MutableSet] using the given [builderAction]\n * and returning a read-only set with the same elements.\n *\n * The set passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * Elements of the set are iterated in the order they were added by the [builderAction].\n *\n * @sample samples.collections.Builders.Sets.buildSetSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildSet(@BuilderInference builderAction: MutableSet.() -> Unit): Set {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return LinkedHashSet().apply(builderAction)\n}\n\n/**\n * Builds a new read-only [Set] by populating a [MutableSet] using the given [builderAction]\n * and returning a read-only set with the same elements.\n *\n * The set passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * [capacity] is used to hint the expected number of elements added in the [builderAction].\n *\n * Elements of the set are iterated in the order they were added by the [builderAction].\n *\n * @throws IllegalArgumentException if the given [capacity] is negative.\n *\n * @sample samples.collections.Builders.Sets.buildSetSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildSet(capacity: Int, @BuilderInference builderAction: MutableSet.() -> Unit): Set {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n checkBuilderCapacity(capacity)\n return LinkedHashSet(mapCapacity(capacity)).apply(builderAction)\n}\n\n\n/** Returns this Set if it's not `null` and the empty set otherwise. */\n@kotlin.internal.InlineOnly\npublic inline fun Set?.orEmpty(): Set = this ?: emptySet()\n\ninternal fun Set.optimizeReadOnlySet() = when (size) {\n 0 -> emptySet()\n 1 -> setOf(iterator().next())\n else -> this\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n@file:Suppress(\"PLATFORM_CLASS_MAPPED_TO_KOTLIN\")\n\npackage kotlin.text\n\n/**\n * Parses the string as a signed [Byte] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toByteOrNull(): Byte? = toByteOrNull(radix = 10)\n\n/**\n * Parses the string as a signed [Byte] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toByteOrNull(radix: Int): Byte? {\n val int = this.toIntOrNull(radix) ?: return null\n if (int < Byte.MIN_VALUE || int > Byte.MAX_VALUE) return null\n return int.toByte()\n}\n\n/**\n * Parses the string as a [Short] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toShortOrNull(): Short? = toShortOrNull(radix = 10)\n\n/**\n * Parses the string as a [Short] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toShortOrNull(radix: Int): Short? {\n val int = this.toIntOrNull(radix) ?: return null\n if (int < Short.MIN_VALUE || int > Short.MAX_VALUE) return null\n return int.toShort()\n}\n\n/**\n * Parses the string as an [Int] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toIntOrNull(): Int? = toIntOrNull(radix = 10)\n\n/**\n * Parses the string as an [Int] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toIntOrNull(radix: Int): Int? {\n checkRadix(radix)\n\n val length = this.length\n if (length == 0) return null\n\n val start: Int\n val isNegative: Boolean\n val limit: Int\n\n val firstChar = this[0]\n if (firstChar < '0') { // Possible leading sign\n if (length == 1) return null // non-digit (possible sign) only, no digits after\n\n start = 1\n\n if (firstChar == '-') {\n isNegative = true\n limit = Int.MIN_VALUE\n } else if (firstChar == '+') {\n isNegative = false\n limit = -Int.MAX_VALUE\n } else\n return null\n } else {\n start = 0\n isNegative = false\n limit = -Int.MAX_VALUE\n }\n\n\n val limitForMaxRadix = (-Int.MAX_VALUE) / 36\n\n var limitBeforeMul = limitForMaxRadix\n var result = 0\n for (i in start until length) {\n val digit = digitOf(this[i], radix)\n\n if (digit < 0) return null\n if (result < limitBeforeMul) {\n if (limitBeforeMul == limitForMaxRadix) {\n limitBeforeMul = limit / radix\n\n if (result < limitBeforeMul) {\n return null\n }\n } else {\n return null\n }\n }\n\n result *= radix\n\n if (result < limit + digit) return null\n\n result -= digit\n }\n\n return if (isNegative) result else -result\n}\n\n/**\n * Parses the string as a [Long] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toLongOrNull(): Long? = toLongOrNull(radix = 10)\n\n/**\n * Parses the string as a [Long] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toLongOrNull(radix: Int): Long? {\n checkRadix(radix)\n\n val length = this.length\n if (length == 0) return null\n\n val start: Int\n val isNegative: Boolean\n val limit: Long\n\n val firstChar = this[0]\n if (firstChar < '0') { // Possible leading sign\n if (length == 1) return null // non-digit (possible sign) only, no digits after\n\n start = 1\n\n if (firstChar == '-') {\n isNegative = true\n limit = Long.MIN_VALUE\n } else if (firstChar == '+') {\n isNegative = false\n limit = -Long.MAX_VALUE\n } else\n return null\n } else {\n start = 0\n isNegative = false\n limit = -Long.MAX_VALUE\n }\n\n\n val limitForMaxRadix = (-Long.MAX_VALUE) / 36\n\n var limitBeforeMul = limitForMaxRadix\n var result = 0L\n for (i in start until length) {\n val digit = digitOf(this[i], radix)\n\n if (digit < 0) return null\n if (result < limitBeforeMul) {\n if (limitBeforeMul == limitForMaxRadix) {\n limitBeforeMul = limit / radix\n\n if (result < limitBeforeMul) {\n return null\n }\n } else {\n return null\n }\n }\n\n result *= radix\n\n if (result < limit + digit) return null\n\n result -= digit\n }\n\n return if (isNegative) result else -result\n}\n\n\ninternal fun numberFormatError(input: String): Nothing = throw NumberFormatException(\"Invalid number format: '$input'\")\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n@file:kotlin.jvm.JvmName(\"UnsignedKt\")\n@file:UseExperimental(ExperimentalUnsignedTypes::class)\npackage kotlin\n\n@PublishedApi\ninternal fun uintCompare(v1: Int, v2: Int): Int = (v1 xor Int.MIN_VALUE).compareTo(v2 xor Int.MIN_VALUE)\n@PublishedApi\ninternal fun ulongCompare(v1: Long, v2: Long): Int = (v1 xor Long.MIN_VALUE).compareTo(v2 xor Long.MIN_VALUE)\n\n@PublishedApi\ninternal fun uintDivide(v1: UInt, v2: UInt): UInt = (v1.toLong() / v2.toLong()).toUInt()\n@PublishedApi\ninternal fun uintRemainder(v1: UInt, v2: UInt): UInt = (v1.toLong() % v2.toLong()).toUInt()\n\n// Division and remainder are based on Guava's UnsignedLongs implementation\n// Copyright 2011 The Guava Authors\n\n@PublishedApi\ninternal fun ulongDivide(v1: ULong, v2: ULong): ULong {\n val dividend = v1.toLong()\n val divisor = v2.toLong()\n if (divisor < 0) { // i.e., divisor >= 2^63:\n return if (v1 < v2) ULong(0) else ULong(1)\n }\n\n // Optimization - use signed division if both dividend and divisor < 2^63\n if (dividend >= 0) {\n return ULong(dividend / divisor)\n }\n\n // Otherwise, approximate the quotient, check, and correct if necessary.\n val quotient = ((dividend ushr 1) / divisor) shl 1\n val rem = dividend - quotient * divisor\n return ULong(quotient + if (ULong(rem) >= ULong(divisor)) 1 else 0)\n\n}\n\n@PublishedApi\ninternal fun ulongRemainder(v1: ULong, v2: ULong): ULong {\n val dividend = v1.toLong()\n val divisor = v2.toLong()\n if (divisor < 0) { // i.e., divisor >= 2^63:\n return if (v1 < v2) {\n v1 // dividend < divisor\n } else {\n v1 - v2 // dividend >= divisor\n }\n }\n\n // Optimization - use signed modulus if both dividend and divisor < 2^63\n if (dividend >= 0) {\n return ULong(dividend % divisor)\n }\n\n // Otherwise, approximate the quotient, check, and correct if necessary.\n val quotient = ((dividend ushr 1) / divisor) shl 1\n val rem = dividend - quotient * divisor\n return ULong(rem - if (ULong(rem) >= ULong(divisor)) divisor else 0)\n}\n\n@PublishedApi\ninternal fun doubleToUInt(v: Double): UInt = when {\n v.isNaN() -> 0u\n v <= UInt.MIN_VALUE.toDouble() -> UInt.MIN_VALUE\n v >= UInt.MAX_VALUE.toDouble() -> UInt.MAX_VALUE\n v <= Int.MAX_VALUE -> v.toInt().toUInt()\n else -> (v - Int.MAX_VALUE).toInt().toUInt() + Int.MAX_VALUE.toUInt() // Int.MAX_VALUE < v < UInt.MAX_VALUE\n}\n\n@PublishedApi\ninternal fun doubleToULong(v: Double): ULong = when {\n v.isNaN() -> 0u\n v <= ULong.MIN_VALUE.toDouble() -> ULong.MIN_VALUE\n v >= ULong.MAX_VALUE.toDouble() -> ULong.MAX_VALUE\n v < Long.MAX_VALUE -> v.toLong().toULong()\n\n // Real values from Long.MAX_VALUE to (Long.MAX_VALUE + 1) are not representable in Double, so don't handle them.\n else -> (v - 9223372036854775808.0).toLong().toULong() + 9223372036854775808uL // Long.MAX_VALUE + 1 < v < ULong.MAX_VALUE\n}\n\n\n@PublishedApi\ninternal fun uintToDouble(v: Int): Double = (v and Int.MAX_VALUE).toDouble() + (v ushr 31 shl 30).toDouble() * 2\n\n@PublishedApi\ninternal fun ulongToDouble(v: Long): Double = (v ushr 11).toDouble() * 2048 + (v and 2047)\n\n\ninternal fun ulongToString(v: Long): String = ulongToString(v, 10)\n\ninternal fun ulongToString(v: Long, base: Int): String {\n if (v >= 0) return v.toString(base)\n\n var quotient = ((v ushr 1) / base) shl 1\n var rem = v - quotient * base\n if (rem >= base) {\n rem -= base\n quotient += 1\n }\n return quotient.toString(base) + rem.toString(base)\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\n/**\n * Given an [iterator] function constructs an [Iterable] instance that returns values through the [Iterator]\n * provided by that function.\n * @sample samples.collections.Iterables.Building.iterable\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable(crossinline iterator: () -> Iterator): Iterable = object : Iterable {\n override fun iterator(): Iterator = iterator()\n}\n\n/**\n * A wrapper over another [Iterable] (or any other object that can produce an [Iterator]) that returns\n * an indexing iterator.\n */\ninternal class IndexingIterable(private val iteratorFactory: () -> Iterator) : Iterable> {\n override fun iterator(): Iterator> = IndexingIterator(iteratorFactory())\n}\n\n\n/**\n * Returns the size of this iterable if it is known, or `null` otherwise.\n */\n@PublishedApi\ninternal fun Iterable.collectionSizeOrNull(): Int? = if (this is Collection<*>) this.size else null\n\n/**\n * Returns the size of this iterable if it is known, or the specified [default] value otherwise.\n */\n@PublishedApi\ninternal fun Iterable.collectionSizeOrDefault(default: Int): Int = if (this is Collection<*>) this.size else default\n\n/** Returns true when it's safe to convert this collection to a set without changing contains method behavior. */\nprivate fun Collection.safeToConvertToSet() = size > 2 && this is ArrayList\n\n/** Converts this collection to a set, when it's worth so and it doesn't change contains method behavior. */\ninternal fun Iterable.convertToSetForSetOperationWith(source: Iterable): Collection =\n when (this) {\n is Set -> this\n is Collection ->\n when {\n source is Collection && source.size < 2 -> this\n else -> if (this.safeToConvertToSet()) toHashSet() else this\n }\n else -> toHashSet()\n }\n\n/** Converts this collection to a set, when it's worth so and it doesn't change contains method behavior. */\ninternal fun Iterable.convertToSetForSetOperation(): Collection =\n when (this) {\n is Set -> this\n is Collection -> if (this.safeToConvertToSet()) toHashSet() else this\n else -> toHashSet()\n }\n\n\n/**\n * Returns a single list of all elements from all collections in the given collection.\n * @sample samples.collections.Iterables.Operations.flattenIterable\n */\npublic fun Iterable>.flatten(): List {\n val result = ArrayList()\n for (element in this) {\n result.addAll(element)\n }\n return result\n}\n\n/**\n * Returns a pair of lists, where\n * *first* list is built from the first values of each pair from this collection,\n * *second* list is built from the second values of each pair from this collection.\n * @sample samples.collections.Iterables.Operations.unzipIterable\n */\npublic fun Iterable>.unzip(): Pair, List> {\n val expectedSize = collectionSizeOrDefault(10)\n val listT = ArrayList(expectedSize)\n val listR = ArrayList(expectedSize)\n for (pair in this) {\n listT.add(pair.first)\n listR.add(pair.second)\n }\n return listT to listR\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"SequencesKt\")\n\npackage kotlin.sequences\n\n/**\n * Given an [iterator] function constructs a [Sequence] that returns values through the [Iterator]\n * provided by that function.\n * The values are evaluated lazily, and the sequence is potentially infinite.\n *\n * @sample samples.collections.Sequences.Building.sequenceFromIterator\n */\n@kotlin.internal.InlineOnly\npublic inline fun Sequence(crossinline iterator: () -> Iterator): Sequence = object : Sequence {\n override fun iterator(): Iterator = iterator()\n}\n\n/**\n * Creates a sequence that returns all elements from this iterator. The sequence is constrained to be iterated only once.\n *\n * @sample samples.collections.Sequences.Building.sequenceFromIterator\n */\npublic fun Iterator.asSequence(): Sequence = Sequence { this }.constrainOnce()\n\n/**\n * Creates a sequence that returns the specified values.\n *\n * @sample samples.collections.Sequences.Building.sequenceOfValues\n */\npublic fun sequenceOf(vararg elements: T): Sequence = if (elements.isEmpty()) emptySequence() else elements.asSequence()\n\n/**\n * Returns an empty sequence.\n */\npublic fun emptySequence(): Sequence = EmptySequence\n\nprivate object EmptySequence : Sequence, DropTakeSequence {\n override fun iterator(): Iterator = EmptyIterator\n override fun drop(n: Int) = EmptySequence\n override fun take(n: Int) = EmptySequence\n}\n\n/**\n * Returns this sequence if it's not `null` and the empty sequence otherwise.\n * @sample samples.collections.Sequences.Usage.sequenceOrEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Sequence?.orEmpty(): Sequence = this ?: emptySequence()\n\n\n/**\n * Returns a sequence that iterates through the elements either of this sequence\n * or, if this sequence turns out to be empty, of the sequence returned by [defaultValue] function.\n *\n * @sample samples.collections.Sequences.Usage.sequenceIfEmpty\n */\n@SinceKotlin(\"1.3\")\npublic fun Sequence.ifEmpty(defaultValue: () -> Sequence): Sequence = sequence {\n val iterator = this@ifEmpty.iterator()\n if (iterator.hasNext()) {\n yieldAll(iterator)\n } else {\n yieldAll(defaultValue())\n }\n}\n\n/**\n * Returns a sequence of all elements from all sequences in this sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence>.flatten(): Sequence = flatten { it.iterator() }\n\n/**\n * Returns a sequence of all elements from all iterables in this sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n */\n@kotlin.jvm.JvmName(\"flattenSequenceOfIterable\")\npublic fun Sequence>.flatten(): Sequence = flatten { it.iterator() }\n\nprivate fun Sequence.flatten(iterator: (T) -> Iterator): Sequence {\n if (this is TransformingSequence<*, *>) {\n return (this as TransformingSequence<*, T>).flatten(iterator)\n }\n return FlatteningSequence(this, { it }, iterator)\n}\n\n/**\n * Returns a pair of lists, where\n * *first* list is built from the first values of each pair from this sequence,\n * *second* list is built from the second values of each pair from this sequence.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence>.unzip(): Pair, List> {\n val listT = ArrayList()\n val listR = ArrayList()\n for (pair in this) {\n listT.add(pair.first)\n listR.add(pair.second)\n }\n return listT to listR\n}\n\n/**\n * A sequence that returns the values from the underlying [sequence] that either match or do not match\n * the specified [predicate].\n *\n * @param sendWhen If `true`, values for which the predicate returns `true` are returned. Otherwise,\n * values for which the predicate returns `false` are returned\n */\ninternal class FilteringSequence(\n private val sequence: Sequence,\n private val sendWhen: Boolean = true,\n private val predicate: (T) -> Boolean\n) : Sequence {\n\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var nextState: Int = -1 // -1 for unknown, 0 for done, 1 for continue\n var nextItem: T? = null\n\n private fun calcNext() {\n while (iterator.hasNext()) {\n val item = iterator.next()\n if (predicate(item) == sendWhen) {\n nextItem = item\n nextState = 1\n return\n }\n }\n nextState = 0\n }\n\n override fun next(): T {\n if (nextState == -1)\n calcNext()\n if (nextState == 0)\n throw NoSuchElementException()\n val result = nextItem\n nextItem = null\n nextState = -1\n @Suppress(\"UNCHECKED_CAST\")\n return result as T\n }\n\n override fun hasNext(): Boolean {\n if (nextState == -1)\n calcNext()\n return nextState == 1\n }\n }\n}\n\n/**\n * A sequence which returns the results of applying the given [transformer] function to the values\n * in the underlying [sequence].\n */\n\ninternal class TransformingSequence\nconstructor(private val sequence: Sequence, private val transformer: (T) -> R) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n override fun next(): R {\n return transformer(iterator.next())\n }\n\n override fun hasNext(): Boolean {\n return iterator.hasNext()\n }\n }\n\n internal fun flatten(iterator: (R) -> Iterator): Sequence {\n return FlatteningSequence(sequence, transformer, iterator)\n }\n}\n\n/**\n * A sequence which returns the results of applying the given [transformer] function to the values\n * in the underlying [sequence], where the transformer function takes the index of the value in the underlying\n * sequence along with the value itself.\n */\ninternal class TransformingIndexedSequence\nconstructor(private val sequence: Sequence, private val transformer: (Int, T) -> R) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var index = 0\n override fun next(): R {\n return transformer(checkIndexOverflow(index++), iterator.next())\n }\n\n override fun hasNext(): Boolean {\n return iterator.hasNext()\n }\n }\n}\n\n/**\n * A sequence which combines values from the underlying [sequence] with their indices and returns them as\n * [IndexedValue] objects.\n */\ninternal class IndexingSequence\nconstructor(private val sequence: Sequence) : Sequence> {\n override fun iterator(): Iterator> = object : Iterator> {\n val iterator = sequence.iterator()\n var index = 0\n override fun next(): IndexedValue {\n return IndexedValue(checkIndexOverflow(index++), iterator.next())\n }\n\n override fun hasNext(): Boolean {\n return iterator.hasNext()\n }\n }\n}\n\n/**\n * A sequence which takes the values from two parallel underlying sequences, passes them to the given\n * [transform] function and returns the values returned by that function. The sequence stops returning\n * values as soon as one of the underlying sequences stops returning values.\n */\ninternal class MergingSequence\nconstructor(\n private val sequence1: Sequence,\n private val sequence2: Sequence,\n private val transform: (T1, T2) -> V\n) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n val iterator1 = sequence1.iterator()\n val iterator2 = sequence2.iterator()\n override fun next(): V {\n return transform(iterator1.next(), iterator2.next())\n }\n\n override fun hasNext(): Boolean {\n return iterator1.hasNext() && iterator2.hasNext()\n }\n }\n}\n\ninternal class FlatteningSequence\nconstructor(\n private val sequence: Sequence,\n private val transformer: (T) -> R,\n private val iterator: (R) -> Iterator\n) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var itemIterator: Iterator? = null\n\n override fun next(): E {\n if (!ensureItemIterator())\n throw NoSuchElementException()\n return itemIterator!!.next()\n }\n\n override fun hasNext(): Boolean {\n return ensureItemIterator()\n }\n\n private fun ensureItemIterator(): Boolean {\n if (itemIterator?.hasNext() == false)\n itemIterator = null\n\n while (itemIterator == null) {\n if (!iterator.hasNext()) {\n return false\n } else {\n val element = iterator.next()\n val nextItemIterator = iterator(transformer(element))\n if (nextItemIterator.hasNext()) {\n itemIterator = nextItemIterator\n return true\n }\n }\n }\n return true\n }\n }\n}\n\n/**\n * A sequence that supports drop(n) and take(n) operations\n */\ninternal interface DropTakeSequence : Sequence {\n fun drop(n: Int): Sequence\n fun take(n: Int): Sequence\n}\n\n/**\n * A sequence that skips [startIndex] values from the underlying [sequence]\n * and stops returning values right before [endIndex], i.e. stops at `endIndex - 1`\n */\ninternal class SubSequence(\n private val sequence: Sequence,\n private val startIndex: Int,\n private val endIndex: Int\n) : Sequence, DropTakeSequence {\n\n init {\n require(startIndex >= 0) { \"startIndex should be non-negative, but is $startIndex\" }\n require(endIndex >= 0) { \"endIndex should be non-negative, but is $endIndex\" }\n require(endIndex >= startIndex) { \"endIndex should be not less than startIndex, but was $endIndex < $startIndex\" }\n }\n\n private val count: Int get() = endIndex - startIndex\n\n override fun drop(n: Int): Sequence = if (n >= count) emptySequence() else SubSequence(sequence, startIndex + n, endIndex)\n override fun take(n: Int): Sequence = if (n >= count) this else SubSequence(sequence, startIndex, startIndex + n)\n\n override fun iterator() = object : Iterator {\n\n val iterator = sequence.iterator()\n var position = 0\n\n // Shouldn't be called from constructor to avoid premature iteration\n private fun drop() {\n while (position < startIndex && iterator.hasNext()) {\n iterator.next()\n position++\n }\n }\n\n override fun hasNext(): Boolean {\n drop()\n return (position < endIndex) && iterator.hasNext()\n }\n\n override fun next(): T {\n drop()\n if (position >= endIndex)\n throw NoSuchElementException()\n position++\n return iterator.next()\n }\n }\n}\n\n/**\n * A sequence that returns at most [count] values from the underlying [sequence], and stops returning values\n * as soon as that count is reached.\n */\ninternal class TakeSequence(\n private val sequence: Sequence,\n private val count: Int\n) : Sequence, DropTakeSequence {\n\n init {\n require(count >= 0) { \"count must be non-negative, but was $count.\" }\n }\n\n override fun drop(n: Int): Sequence = if (n >= count) emptySequence() else SubSequence(sequence, n, count)\n override fun take(n: Int): Sequence = if (n >= count) this else TakeSequence(sequence, n)\n\n override fun iterator(): Iterator = object : Iterator {\n var left = count\n val iterator = sequence.iterator()\n\n override fun next(): T {\n if (left == 0)\n throw NoSuchElementException()\n left--\n return iterator.next()\n }\n\n override fun hasNext(): Boolean {\n return left > 0 && iterator.hasNext()\n }\n }\n}\n\n/**\n * A sequence that returns values from the underlying [sequence] while the [predicate] function returns\n * `true`, and stops returning values once the function returns `false` for the next element.\n */\ninternal class TakeWhileSequence\nconstructor(\n private val sequence: Sequence,\n private val predicate: (T) -> Boolean\n) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var nextState: Int = -1 // -1 for unknown, 0 for done, 1 for continue\n var nextItem: T? = null\n\n private fun calcNext() {\n if (iterator.hasNext()) {\n val item = iterator.next()\n if (predicate(item)) {\n nextState = 1\n nextItem = item\n return\n }\n }\n nextState = 0\n }\n\n override fun next(): T {\n if (nextState == -1)\n calcNext() // will change nextState\n if (nextState == 0)\n throw NoSuchElementException()\n @Suppress(\"UNCHECKED_CAST\")\n val result = nextItem as T\n\n // Clean next to avoid keeping reference on yielded instance\n nextItem = null\n nextState = -1\n return result\n }\n\n override fun hasNext(): Boolean {\n if (nextState == -1)\n calcNext() // will change nextState\n return nextState == 1\n }\n }\n}\n\n/**\n * A sequence that skips the specified number of values from the underlying [sequence] and returns\n * all values after that.\n */\ninternal class DropSequence(\n private val sequence: Sequence,\n private val count: Int\n) : Sequence, DropTakeSequence {\n init {\n require(count >= 0) { \"count must be non-negative, but was $count.\" }\n }\n\n override fun drop(n: Int): Sequence = (count + n).let { n1 -> if (n1 < 0) DropSequence(this, n) else DropSequence(sequence, n1) }\n override fun take(n: Int): Sequence = (count + n).let { n1 -> if (n1 < 0) TakeSequence(this, n) else SubSequence(sequence, count, n1) }\n\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var left = count\n\n // Shouldn't be called from constructor to avoid premature iteration\n private fun drop() {\n while (left > 0 && iterator.hasNext()) {\n iterator.next()\n left--\n }\n }\n\n override fun next(): T {\n drop()\n return iterator.next()\n }\n\n override fun hasNext(): Boolean {\n drop()\n return iterator.hasNext()\n }\n }\n}\n\n/**\n * A sequence that skips the values from the underlying [sequence] while the given [predicate] returns `true` and returns\n * all values after that.\n */\ninternal class DropWhileSequence\nconstructor(\n private val sequence: Sequence,\n private val predicate: (T) -> Boolean\n) : Sequence {\n\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var dropState: Int = -1 // -1 for not dropping, 1 for nextItem, 0 for normal iteration\n var nextItem: T? = null\n\n private fun drop() {\n while (iterator.hasNext()) {\n val item = iterator.next()\n if (!predicate(item)) {\n nextItem = item\n dropState = 1\n return\n }\n }\n dropState = 0\n }\n\n override fun next(): T {\n if (dropState == -1)\n drop()\n\n if (dropState == 1) {\n @Suppress(\"UNCHECKED_CAST\")\n val result = nextItem as T\n nextItem = null\n dropState = 0\n return result\n }\n return iterator.next()\n }\n\n override fun hasNext(): Boolean {\n if (dropState == -1)\n drop()\n return dropState == 1 || iterator.hasNext()\n }\n }\n}\n\ninternal class DistinctSequence(private val source: Sequence, private val keySelector: (T) -> K) : Sequence {\n override fun iterator(): Iterator = DistinctIterator(source.iterator(), keySelector)\n}\n\nprivate class DistinctIterator(private val source: Iterator, private val keySelector: (T) -> K) : AbstractIterator() {\n private val observed = HashSet()\n\n override fun computeNext() {\n while (source.hasNext()) {\n val next = source.next()\n val key = keySelector(next)\n\n if (observed.add(key)) {\n setNext(next)\n return\n }\n }\n\n done()\n }\n}\n\n\nprivate class GeneratorSequence(private val getInitialValue: () -> T?, private val getNextValue: (T) -> T?) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n var nextItem: T? = null\n var nextState: Int = -2 // -2 for initial unknown, -1 for next unknown, 0 for done, 1 for continue\n\n private fun calcNext() {\n nextItem = if (nextState == -2) getInitialValue() else getNextValue(nextItem!!)\n nextState = if (nextItem == null) 0 else 1\n }\n\n override fun next(): T {\n if (nextState < 0)\n calcNext()\n\n if (nextState == 0)\n throw NoSuchElementException()\n val result = nextItem as T\n // Do not clean nextItem (to avoid keeping reference on yielded instance) -- need to keep state for getNextValue\n nextState = -1\n return result\n }\n\n override fun hasNext(): Boolean {\n if (nextState < 0)\n calcNext()\n return nextState == 1\n }\n }\n}\n\n/**\n * Returns a wrapper sequence that provides values of this sequence, but ensures it can be iterated only one time.\n *\n * The operation is _intermediate_ and _stateless_.\n *\n * [IllegalStateException] is thrown on iterating the returned sequence from the second time.\n *\n */\npublic fun Sequence.constrainOnce(): Sequence {\n // as? does not work in js\n //return this as? ConstrainedOnceSequence ?: ConstrainedOnceSequence(this)\n return if (this is ConstrainedOnceSequence) this else ConstrainedOnceSequence(this)\n}\n\n\n/**\n * Returns a sequence which invokes the function to calculate the next value on each iteration until the function returns `null`.\n *\n * The returned sequence is constrained to be iterated only once.\n *\n * @see constrainOnce\n * @see kotlin.sequences.sequence\n *\n * @sample samples.collections.Sequences.Building.generateSequence\n */\npublic fun generateSequence(nextFunction: () -> T?): Sequence {\n return GeneratorSequence(nextFunction, { nextFunction() }).constrainOnce()\n}\n\n/**\n * Returns a sequence defined by the starting value [seed] and the function [nextFunction],\n * which is invoked to calculate the next value based on the previous one on each iteration.\n *\n * The sequence produces values until it encounters first `null` value.\n * If [seed] is `null`, an empty sequence is produced.\n *\n * The sequence can be iterated multiple times, each time starting with [seed].\n *\n * @see kotlin.sequences.sequence\n *\n * @sample samples.collections.Sequences.Building.generateSequenceWithSeed\n */\n@kotlin.internal.LowPriorityInOverloadResolution\npublic fun generateSequence(seed: T?, nextFunction: (T) -> T?): Sequence =\n if (seed == null)\n EmptySequence\n else\n GeneratorSequence({ seed }, nextFunction)\n\n/**\n * Returns a sequence defined by the function [seedFunction], which is invoked to produce the starting value,\n * and the [nextFunction], which is invoked to calculate the next value based on the previous one on each iteration.\n *\n * The sequence produces values until it encounters first `null` value.\n * If [seedFunction] returns `null`, an empty sequence is produced.\n *\n * The sequence can be iterated multiple times.\n *\n * @see kotlin.sequences.sequence\n *\n * @sample samples.collections.Sequences.Building.generateSequenceWithLazySeed\n */\npublic fun generateSequence(seedFunction: () -> T?, nextFunction: (T) -> T?): Sequence =\n GeneratorSequence(seedFunction, nextFunction)\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"PreconditionsKt\")\n\npackage kotlin\n\nimport kotlin.contracts.contract\n\n/**\n * Throws an [IllegalArgumentException] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failRequireWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun require(value: Boolean): Unit {\n contract {\n returns() implies value\n }\n require(value) { \"Failed requirement.\" }\n}\n\n/**\n * Throws an [IllegalArgumentException] with the result of calling [lazyMessage] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failRequireWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun require(value: Boolean, lazyMessage: () -> Any): Unit {\n contract {\n returns() implies value\n }\n if (!value) {\n val message = lazyMessage()\n throw IllegalArgumentException(message.toString())\n }\n}\n\n/**\n * Throws an [IllegalArgumentException] if the [value] is null. Otherwise returns the not null value.\n */\n@kotlin.internal.InlineOnly\npublic inline fun requireNotNull(value: T?): T {\n contract {\n returns() implies (value != null)\n }\n return requireNotNull(value) { \"Required value was null.\" }\n}\n\n/**\n * Throws an [IllegalArgumentException] with the result of calling [lazyMessage] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failRequireWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun requireNotNull(value: T?, lazyMessage: () -> Any): T {\n contract {\n returns() implies (value != null)\n }\n\n if (value == null) {\n val message = lazyMessage()\n throw IllegalArgumentException(message.toString())\n } else {\n return value\n }\n}\n\n/**\n * Throws an [IllegalStateException] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun check(value: Boolean): Unit {\n contract {\n returns() implies value\n }\n check(value) { \"Check failed.\" }\n}\n\n/**\n * Throws an [IllegalStateException] with the result of calling [lazyMessage] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun check(value: Boolean, lazyMessage: () -> Any): Unit {\n contract {\n returns() implies value\n }\n if (!value) {\n val message = lazyMessage()\n throw IllegalStateException(message.toString())\n }\n}\n\n/**\n * Throws an [IllegalStateException] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun checkNotNull(value: T?): T {\n contract {\n returns() implies (value != null)\n }\n return checkNotNull(value) { \"Required value was null.\" }\n}\n\n/**\n * Throws an [IllegalStateException] with the result of calling [lazyMessage] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun checkNotNull(value: T?, lazyMessage: () -> Any): T {\n contract {\n returns() implies (value != null)\n }\n\n if (value == null) {\n val message = lazyMessage()\n throw IllegalStateException(message.toString())\n } else {\n return value\n }\n}\n\n\n/**\n * Throws an [IllegalStateException] with the given [message].\n *\n * @sample samples.misc.Preconditions.failWithError\n */\n@kotlin.internal.InlineOnly\npublic inline fun error(message: Any): Nothing = throw IllegalStateException(message.toString())\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.js.*\nimport primitiveArrayConcat\nimport withType\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun Array.elementAt(index: Int): T {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun ByteArray.elementAt(index: Int): Byte {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun ShortArray.elementAt(index: Int): Short {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun IntArray.elementAt(index: Int): Int {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun LongArray.elementAt(index: Int): Long {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun FloatArray.elementAt(index: Int): Float {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun DoubleArray.elementAt(index: Int): Double {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun BooleanArray.elementAt(index: Int): Boolean {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun CharArray.elementAt(index: Int): Char {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic actual fun Array.asList(): List {\n return ArrayList(this.unsafeCast>())\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun ByteArray.asList(): List {\n return this.unsafeCast>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun ShortArray.asList(): List {\n return this.unsafeCast>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun IntArray.asList(): List {\n return this.unsafeCast>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun LongArray.asList(): List {\n return this.unsafeCast>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun FloatArray.asList(): List {\n return this.unsafeCast>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun DoubleArray.asList(): List {\n return this.unsafeCast>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun BooleanArray.asList(): List {\n return this.unsafeCast>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic actual fun CharArray.asList(): List {\n return object : AbstractList(), RandomAccess {\n override val size: Int get() = this@asList.size\n override fun isEmpty(): Boolean = this@asList.isEmpty()\n override fun contains(element: Char): Boolean = this@asList.contains(element)\n override fun get(index: Int): Char {\n AbstractList.checkElementIndex(index, size)\n return this@asList[index]\n }\n override fun indexOf(element: Char): Int {\n if ((element as Any?) !is Char) return -1\n return this@asList.indexOf(element)\n }\n override fun lastIndexOf(element: Char): Int {\n if ((element as Any?) !is Char) return -1\n return this@asList.lastIndexOf(element)\n }\n }\n}\n\n/**\n * Returns `true` if the two specified arrays are *deeply* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * If two corresponding elements are nested arrays, they are also compared deeply.\n * If any of arrays contains itself on any nesting level the behavior is undefined.\n * \n * The elements of other types are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayDeepEquals\")\npublic actual infix fun Array.contentDeepEquals(other: Array): Boolean {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level the behavior is undefined.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayDeepHashCode\")\npublic actual fun Array.contentDeepHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of this array as if it is a [List].\n * Nested arrays are treated as lists too.\n * \n * If any of arrays contains itself on any nesting level that reference\n * is rendered as `\"[...]\"` to prevent recursion.\n * \n * @sample samples.collections.Arrays.ContentOperations.contentDeepToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayDeepToString\")\npublic actual fun Array.contentDeepToString(): String {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun Array.contentEquals(other: Array): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun ByteArray.contentEquals(other: ByteArray): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun ShortArray.contentEquals(other: ShortArray): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun IntArray.contentEquals(other: IntArray): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun LongArray.contentEquals(other: LongArray): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun FloatArray.contentEquals(other: FloatArray): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun DoubleArray.contentEquals(other: DoubleArray): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun BooleanArray.contentEquals(other: BooleanArray): Boolean {\n definedExternally\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n * \n * The elements are compared for equality with the [equals][Any.equals] function.\n * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`.\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayEquals\")\npublic actual infix fun CharArray.contentEquals(other: CharArray): Boolean {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun Array.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun ByteArray.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun ShortArray.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun IntArray.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun LongArray.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun FloatArray.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun DoubleArray.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun BooleanArray.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayHashCode\")\npublic actual fun CharArray.contentHashCode(): Int {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun Array.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun ByteArray.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun ShortArray.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun IntArray.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun LongArray.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun FloatArray.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun DoubleArray.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun BooleanArray.contentToString(): String {\n definedExternally\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.1\")\n@library(\"arrayToString\")\npublic actual fun CharArray.contentToString(): String {\n definedExternally\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun Array.copyInto(destination: Array, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): Array {\n arrayCopy(this, destination, destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun ByteArray.copyInto(destination: ByteArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ByteArray {\n arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun ShortArray.copyInto(destination: ShortArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ShortArray {\n arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun IntArray.copyInto(destination: IntArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): IntArray {\n arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun LongArray.copyInto(destination: LongArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): LongArray {\n arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun FloatArray.copyInto(destination: FloatArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): FloatArray {\n arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun DoubleArray.copyInto(destination: DoubleArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): DoubleArray {\n arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun BooleanArray.copyInto(destination: BooleanArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): BooleanArray {\n arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun CharArray.copyInto(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): CharArray {\n arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\", \"NOTHING_TO_INLINE\")\npublic actual inline fun Array.copyOf(): Array {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun ByteArray.copyOf(): ByteArray {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun ShortArray.copyOf(): ShortArray {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun IntArray.copyOf(): IntArray {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic actual fun LongArray.copyOf(): LongArray {\n return withType(\"LongArray\", this.asDynamic().slice())\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun FloatArray.copyOf(): FloatArray {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun DoubleArray.copyOf(): DoubleArray {\n return this.asDynamic().slice()\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic actual fun BooleanArray.copyOf(): BooleanArray {\n return withType(\"BooleanArray\", this.asDynamic().slice())\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\npublic actual fun CharArray.copyOf(): CharArray {\n return withType(\"CharArray\", this.asDynamic().slice())\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun ByteArray.copyOf(newSize: Int): ByteArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return fillFrom(this, ByteArray(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun ShortArray.copyOf(newSize: Int): ShortArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return fillFrom(this, ShortArray(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun IntArray.copyOf(newSize: Int): IntArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return fillFrom(this, IntArray(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun LongArray.copyOf(newSize: Int): LongArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return withType(\"LongArray\", arrayCopyResize(this, newSize, 0L))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun FloatArray.copyOf(newSize: Int): FloatArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return fillFrom(this, FloatArray(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun DoubleArray.copyOf(newSize: Int): DoubleArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return fillFrom(this, DoubleArray(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with `false` values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `false` values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun BooleanArray.copyOf(newSize: Int): BooleanArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return withType(\"BooleanArray\", arrayCopyResize(this, newSize, false))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with null char (`\\u0000`) values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with null char (`\\u0000`) values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf\n */\npublic actual fun CharArray.copyOf(newSize: Int): CharArray {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return withType(\"CharArray\", fillFrom(this, CharArray(newSize)))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with `null` values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `null` values.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.resizingCopyOf\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\")\npublic actual fun Array.copyOf(newSize: Int): Array {\n require(newSize >= 0) { \"Invalid new array size: $newSize.\" }\n return arrayCopyResize(this, newSize, null)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\")\npublic actual fun Array.copyOfRange(fromIndex: Int, toIndex: Int): Array {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic actual fun ByteArray.copyOfRange(fromIndex: Int, toIndex: Int): ByteArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic actual fun ShortArray.copyOfRange(fromIndex: Int, toIndex: Int): ShortArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic actual fun IntArray.copyOfRange(fromIndex: Int, toIndex: Int): IntArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic actual fun LongArray.copyOfRange(fromIndex: Int, toIndex: Int): LongArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return withType(\"LongArray\", this.asDynamic().slice(fromIndex, toIndex))\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic actual fun FloatArray.copyOfRange(fromIndex: Int, toIndex: Int): FloatArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic actual fun DoubleArray.copyOfRange(fromIndex: Int, toIndex: Int): DoubleArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return this.asDynamic().slice(fromIndex, toIndex)\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic actual fun BooleanArray.copyOfRange(fromIndex: Int, toIndex: Int): BooleanArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return withType(\"BooleanArray\", this.asDynamic().slice(fromIndex, toIndex))\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\npublic actual fun CharArray.copyOfRange(fromIndex: Int, toIndex: Int): CharArray {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n return withType(\"CharArray\", this.asDynamic().slice(fromIndex, toIndex))\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun Array.fill(element: T, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun ByteArray.fill(element: Byte, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun ShortArray.fill(element: Short, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun IntArray.fill(element: Int, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun LongArray.fill(element: Long, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun FloatArray.fill(element: Float, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun DoubleArray.fill(element: Double, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun BooleanArray.fill(element: Boolean, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun CharArray.fill(element: Char, fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n this.asDynamic().fill(element, fromIndex, toIndex);\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\", \"NOTHING_TO_INLINE\")\npublic actual inline operator fun Array.plus(element: T): Array {\n return this.asDynamic().concat(arrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun ByteArray.plus(element: Byte): ByteArray {\n return plus(byteArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun ShortArray.plus(element: Short): ShortArray {\n return plus(shortArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun IntArray.plus(element: Int): IntArray {\n return plus(intArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun LongArray.plus(element: Long): LongArray {\n return plus(longArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun FloatArray.plus(element: Float): FloatArray {\n return plus(floatArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun DoubleArray.plus(element: Double): DoubleArray {\n return plus(doubleArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun BooleanArray.plus(element: Boolean): BooleanArray {\n return plus(booleanArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun CharArray.plus(element: Char): CharArray {\n return plus(charArrayOf(element))\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\")\npublic actual operator fun Array.plus(elements: Collection): Array {\n return arrayPlusCollection(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun ByteArray.plus(elements: Collection): ByteArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun ShortArray.plus(elements: Collection): ShortArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun IntArray.plus(elements: Collection): IntArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun LongArray.plus(elements: Collection): LongArray {\n return arrayPlusCollection(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun FloatArray.plus(elements: Collection): FloatArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun DoubleArray.plus(elements: Collection): DoubleArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun BooleanArray.plus(elements: Collection): BooleanArray {\n return arrayPlusCollection(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\npublic actual operator fun CharArray.plus(elements: Collection): CharArray {\n return fillFromCollection(this.copyOf(size + elements.size), this.size, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\", \"NOTHING_TO_INLINE\")\npublic actual inline operator fun Array.plus(elements: Array): Array {\n return this.asDynamic().concat(elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun ByteArray.plus(elements: ByteArray): ByteArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun ShortArray.plus(elements: ShortArray): ShortArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun IntArray.plus(elements: IntArray): IntArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun LongArray.plus(elements: LongArray): LongArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun FloatArray.plus(elements: FloatArray): FloatArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun DoubleArray.plus(elements: DoubleArray): DoubleArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun BooleanArray.plus(elements: BooleanArray): BooleanArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline operator fun CharArray.plus(elements: CharArray): CharArray {\n return primitiveArrayConcat(this, elements)\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\", \"NOTHING_TO_INLINE\")\npublic actual inline fun Array.plusElement(element: T): Array {\n return this.asDynamic().concat(arrayOf(element))\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@library(\"primitiveArraySort\")\npublic actual fun IntArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\npublic actual fun LongArray.sort(): Unit {\n if (size > 1) sort { a: Long, b: Long -> a.compareTo(b) }\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@library(\"primitiveArraySort\")\npublic actual fun ByteArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@library(\"primitiveArraySort\")\npublic actual fun ShortArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@library(\"primitiveArraySort\")\npublic actual fun DoubleArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@library(\"primitiveArraySort\")\npublic actual fun FloatArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@library(\"primitiveArraySort\")\npublic actual fun CharArray.sort(): Unit {\n definedExternally\n}\n\n/**\n * Sorts the array in-place according to the natural order of its elements.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n * \n * @sample samples.collections.Arrays.Sorting.sortArrayOfComparable\n */\npublic actual fun > Array.sort(): Unit {\n if (size > 1) sortArray(this)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun Array.sort(comparison: (a: T, b: T) -> Int): Unit {\n if (size > 1) sortArrayWith(this, comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.sort(noinline comparison: (a: Byte, b: Byte) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.sort(noinline comparison: (a: Short, b: Short) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.sort(noinline comparison: (a: Int, b: Int) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.sort(noinline comparison: (a: Long, b: Long) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun FloatArray.sort(noinline comparison: (a: Float, b: Float) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun DoubleArray.sort(noinline comparison: (a: Double, b: Double) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparison] function.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharArray.sort(noinline comparison: (a: Char, b: Char) -> Int): Unit {\n asDynamic().sort(comparison)\n}\n\n/**\n * Sorts the array in-place according to the order specified by the given [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic actual fun Array.sortWith(comparator: Comparator): Unit {\n if (size > 1) sortArrayWith(this, comparator)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun ByteArray.toTypedArray(): Array {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun ShortArray.toTypedArray(): Array {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun IntArray.toTypedArray(): Array {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun LongArray.toTypedArray(): Array {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun FloatArray.toTypedArray(): Array {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun DoubleArray.toTypedArray(): Array {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun BooleanArray.toTypedArray(): Array {\n return js(\"[]\").slice.call(this)\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic actual fun CharArray.toTypedArray(): Array {\n return Array(size) { index -> this[index] }\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n@file:kotlin.jvm.JvmName(\"ComparisonsKt\")\n@file:kotlin.jvm.JvmMultifileClass\n\npackage kotlin.comparisons\n\n/**\n * Compares two values using the specified functions [selectors] to calculate the result of the comparison.\n * The functions are called sequentially, receive the given values [a] and [b] and return [Comparable]\n * objects. As soon as the [Comparable] instances returned by a function for [a] and [b] values do not\n * compare as equal, the result of that comparison is returned.\n *\n * @sample samples.comparisons.Comparisons.compareValuesByWithSelectors\n */\npublic fun compareValuesBy(a: T, b: T, vararg selectors: (T) -> Comparable<*>?): Int {\n require(selectors.size > 0)\n return compareValuesByImpl(a, b, selectors)\n}\n\nprivate fun compareValuesByImpl(a: T, b: T, selectors: Array Comparable<*>?>): Int {\n for (fn in selectors) {\n val v1 = fn(a)\n val v2 = fn(b)\n val diff = compareValues(v1, v2)\n if (diff != 0) return diff\n }\n return 0\n}\n\n/**\n * Compares two values using the specified [selector] function to calculate the result of the comparison.\n * The function is applied to the given values [a] and [b] and return [Comparable] objects.\n * The result of comparison of these [Comparable] instances is returned.\n *\n * @sample samples.comparisons.Comparisons.compareValuesByWithSingleSelector\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareValuesBy(a: T, b: T, selector: (T) -> Comparable<*>?): Int {\n return compareValues(selector(a), selector(b))\n}\n\n/**\n * Compares two values using the specified [selector] function to calculate the result of the comparison.\n * The function is applied to the given values [a] and [b] and return objects of type K which are then being\n * compared with the given [comparator].\n *\n * @sample samples.comparisons.Comparisons.compareValuesByWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareValuesBy(a: T, b: T, comparator: Comparator, selector: (T) -> K): Int {\n return comparator.compare(selector(a), selector(b))\n}\n\n//// Not so useful without type inference for receiver of expression\n//// compareValuesWith(v1, v2, compareBy { it.prop1 } thenByDescending { it.prop2 })\n///**\n// * Compares two values using the specified [comparator].\n// */\n//@Suppress(\"NOTHING_TO_INLINE\")\n//public inline fun compareValuesWith(a: T, b: T, comparator: Comparator): Int = comparator.compare(a, b)\n//\n\n\n/**\n * Compares two nullable [Comparable] values. Null is considered less than any value.\n *\n * @sample samples.comparisons.Comparisons.compareValues\n */\npublic fun > compareValues(a: T?, b: T?): Int {\n if (a === b) return 0\n if (a == null) return -1\n if (b == null) return 1\n\n @Suppress(\"UNCHECKED_CAST\")\n return (a as Comparable).compareTo(b)\n}\n\n/**\n * Creates a comparator using the sequence of functions to calculate a result of comparison.\n * The functions are called sequentially, receive the given values `a` and `b` and return [Comparable]\n * objects. As soon as the [Comparable] instances returned by a function for `a` and `b` values do not\n * compare as equal, the result of that comparison is returned from the [Comparator].\n *\n * @sample samples.comparisons.Comparisons.compareByWithSelectors\n */\npublic fun compareBy(vararg selectors: (T) -> Comparable<*>?): Comparator {\n require(selectors.size > 0)\n return Comparator { a, b -> compareValuesByImpl(a, b, selectors) }\n}\n\n\n/**\n * Creates a comparator using the function to transform value to a [Comparable] instance for comparison.\n *\n * @sample samples.comparisons.Comparisons.compareByWithSingleSelector\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareBy(crossinline selector: (T) -> Comparable<*>?): Comparator =\n Comparator { a, b -> compareValuesBy(a, b, selector) }\n\n/**\n * Creates a comparator using the [selector] function to transform values being compared and then applying\n * the specified [comparator] to compare transformed values.\n *\n * @sample samples.comparisons.Comparisons.compareByWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareBy(comparator: Comparator, crossinline selector: (T) -> K): Comparator =\n Comparator { a, b -> compareValuesBy(a, b, comparator, selector) }\n\n/**\n * Creates a descending comparator using the function to transform value to a [Comparable] instance for comparison.\n *\n * @sample samples.comparisons.Comparisons.compareByDescendingWithSingleSelector\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareByDescending(crossinline selector: (T) -> Comparable<*>?): Comparator =\n Comparator { a, b -> compareValuesBy(b, a, selector) }\n\n/**\n * Creates a descending comparator using the [selector] function to transform values being compared and then applying\n * the specified [comparator] to compare transformed values.\n *\n * Note that an order of [comparator] is reversed by this wrapper.\n *\n * @sample samples.comparisons.Comparisons.compareByDescendingWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareByDescending(comparator: Comparator, crossinline selector: (T) -> K): Comparator =\n Comparator { a, b -> compareValuesBy(b, a, comparator, selector) }\n\n/**\n * Creates a comparator comparing values after the primary comparator defined them equal. It uses\n * the function to transform value to a [Comparable] instance for comparison.\n *\n * @sample samples.comparisons.Comparisons.thenBy\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenBy(crossinline selector: (T) -> Comparable<*>?): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenBy.compare(a, b)\n if (previousCompare != 0) previousCompare else compareValuesBy(a, b, selector)\n }\n\n/**\n * Creates a comparator comparing values after the primary comparator defined them equal. It uses\n * the [selector] function to transform values and then compares them with the given [comparator].\n *\n * @sample samples.comparisons.Comparisons.thenByWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenBy(comparator: Comparator, crossinline selector: (T) -> K): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenBy.compare(a, b)\n if (previousCompare != 0) previousCompare else compareValuesBy(a, b, comparator, selector)\n }\n\n/**\n * Creates a descending comparator using the primary comparator and\n * the function to transform value to a [Comparable] instance for comparison.\n *\n * @sample samples.comparisons.Comparisons.thenByDescending\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenByDescending(crossinline selector: (T) -> Comparable<*>?): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenByDescending.compare(a, b)\n if (previousCompare != 0) previousCompare else compareValuesBy(b, a, selector)\n }\n\n/**\n * Creates a descending comparator comparing values after the primary comparator defined them equal. It uses\n * the [selector] function to transform values and then compares them with the given [comparator].\n *\n * @sample samples.comparisons.Comparisons.thenByDescendingWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenByDescending(comparator: Comparator, crossinline selector: (T) -> K): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenByDescending.compare(a, b)\n if (previousCompare != 0) previousCompare else compareValuesBy(b, a, comparator, selector)\n }\n\n\n/**\n * Creates a comparator using the primary comparator and function to calculate a result of comparison.\n *\n * @sample samples.comparisons.Comparisons.thenComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenComparator(crossinline comparison: (a: T, b: T) -> Int): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenComparator.compare(a, b)\n if (previousCompare != 0) previousCompare else comparison(a, b)\n }\n\n/**\n * Combines this comparator and the given [comparator] such that the latter is applied only\n * when the former considered values equal.\n *\n * @sample samples.comparisons.Comparisons.then\n */\npublic infix fun Comparator.then(comparator: Comparator): Comparator =\n Comparator { a, b ->\n val previousCompare = this@then.compare(a, b)\n if (previousCompare != 0) previousCompare else comparator.compare(a, b)\n }\n\n/**\n * Combines this comparator and the given [comparator] such that the latter is applied only\n * when the former considered values equal.\n *\n * @sample samples.comparisons.Comparisons.thenDescending\n */\npublic infix fun Comparator.thenDescending(comparator: Comparator): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenDescending.compare(a, b)\n if (previousCompare != 0) previousCompare else comparator.compare(b, a)\n }\n\n// Not so useful without type inference for receiver of expression\n/**\n * Extends the given [comparator] of non-nullable values to a comparator of nullable values\n * considering `null` value less than any other value.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastWithComparator\n */\npublic fun nullsFirst(comparator: Comparator): Comparator =\n Comparator { a, b ->\n when {\n a === b -> 0\n a == null -> -1\n b == null -> 1\n else -> comparator.compare(a, b)\n }\n }\n\n/**\n * Provides a comparator of nullable [Comparable] values\n * considering `null` value less than any other value.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun > nullsFirst(): Comparator = nullsFirst(naturalOrder())\n\n/**\n * Extends the given [comparator] of non-nullable values to a comparator of nullable values\n * considering `null` value greater than any other value.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastWithComparator\n */\npublic fun nullsLast(comparator: Comparator): Comparator =\n Comparator { a, b ->\n when {\n a === b -> 0\n a == null -> 1\n b == null -> -1\n else -> comparator.compare(a, b)\n }\n }\n\n/**\n * Provides a comparator of nullable [Comparable] values\n * considering `null` value greater than any other value.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun > nullsLast(): Comparator = nullsLast(naturalOrder())\n\n/**\n * Returns a comparator that compares [Comparable] objects in natural order.\n *\n * @sample samples.comparisons.Comparisons.naturalOrderComparator\n */\npublic fun > naturalOrder(): Comparator = @Suppress(\"UNCHECKED_CAST\") (NaturalOrderComparator as Comparator)\n\n/**\n * Returns a comparator that compares [Comparable] objects in reversed natural order.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastWithComparator\n */\npublic fun > reverseOrder(): Comparator = @Suppress(\"UNCHECKED_CAST\") (ReverseOrderComparator as Comparator)\n\n/**\n * Returns a comparator that imposes the reverse ordering of this comparator.\n *\n * @sample samples.comparisons.Comparisons.reversed\n */\npublic fun Comparator.reversed(): Comparator = when (this) {\n is ReversedComparator -> this.comparator\n NaturalOrderComparator -> @Suppress(\"UNCHECKED_CAST\") (ReverseOrderComparator as Comparator)\n ReverseOrderComparator -> @Suppress(\"UNCHECKED_CAST\") (NaturalOrderComparator as Comparator)\n else -> ReversedComparator(this)\n}\n\n\nprivate class ReversedComparator(public val comparator: Comparator) : Comparator {\n override fun compare(a: T, b: T): Int = comparator.compare(b, a)\n @Suppress(\"VIRTUAL_MEMBER_HIDDEN\")\n fun reversed(): Comparator = comparator\n}\n\nprivate object NaturalOrderComparator : Comparator> {\n override fun compare(a: Comparable, b: Comparable): Int = a.compareTo(b)\n @Suppress(\"VIRTUAL_MEMBER_HIDDEN\")\n fun reversed(): Comparator> = ReverseOrderComparator\n}\n\nprivate object ReverseOrderComparator : Comparator> {\n override fun compare(a: Comparable, b: Comparable): Int = b.compareTo(a)\n @Suppress(\"VIRTUAL_MEMBER_HIDDEN\")\n fun reversed(): Comparator> = NaturalOrderComparator\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\n\npublic actual interface Comparator {\n @JsName(\"compare\")\n actual fun compare(a: T, b: T): Int\n}\n\npublic actual inline fun Comparator(crossinline comparison: (a: T, b: T) -> Int): Comparator = object : Comparator {\n override fun compare(a: T, b: T): Int = comparison(a, b)\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StandardKt\")\npackage kotlin\n\nimport kotlin.contracts.*\n\n/**\n * An exception is thrown to indicate that a method body remains to be implemented.\n */\npublic class NotImplementedError(message: String = \"An operation is not implemented.\") : Error(message)\n\n/**\n * Always throws [NotImplementedError] stating that operation is not implemented.\n */\n\n@kotlin.internal.InlineOnly\npublic inline fun TODO(): Nothing = throw NotImplementedError()\n\n/**\n * Always throws [NotImplementedError] stating that operation is not implemented.\n *\n * @param reason a string explaining why the implementation is missing.\n */\n@kotlin.internal.InlineOnly\npublic inline fun TODO(reason: String): Nothing = throw NotImplementedError(\"An operation is not implemented: $reason\")\n\n\n\n/**\n * Calls the specified function [block] and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#run).\n */\n@kotlin.internal.InlineOnly\npublic inline fun run(block: () -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block()\n}\n\n/**\n * Calls the specified function [block] with `this` value as its receiver and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#run).\n */\n@kotlin.internal.InlineOnly\npublic inline fun T.run(block: T.() -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block()\n}\n\n/**\n * Calls the specified function [block] with the given [receiver] as its receiver and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#with).\n */\n@kotlin.internal.InlineOnly\npublic inline fun with(receiver: T, block: T.() -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return receiver.block()\n}\n\n/**\n * Calls the specified function [block] with `this` value as its receiver and returns `this` value.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#apply).\n */\n@kotlin.internal.InlineOnly\npublic inline fun T.apply(block: T.() -> Unit): T {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n block()\n return this\n}\n\n/**\n * Calls the specified function [block] with `this` value as its argument and returns `this` value.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#also).\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun T.also(block: (T) -> Unit): T {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n block(this)\n return this\n}\n\n/**\n * Calls the specified function [block] with `this` value as its argument and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#let).\n */\n@kotlin.internal.InlineOnly\npublic inline fun T.let(block: (T) -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block(this)\n}\n\n/**\n * Returns `this` value if it satisfies the given [predicate] or `null`, if it doesn't.\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun T.takeIf(predicate: (T) -> Boolean): T? {\n contract {\n callsInPlace(predicate, InvocationKind.EXACTLY_ONCE)\n }\n return if (predicate(this)) this else null\n}\n\n/**\n * Returns `this` value if it _does not_ satisfy the given [predicate] or `null`, if it does.\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun T.takeUnless(predicate: (T) -> Boolean): T? {\n contract {\n callsInPlace(predicate, InvocationKind.EXACTLY_ONCE)\n }\n return if (!predicate(this)) this else null\n}\n\n/**\n * Executes the given function [action] specified number of [times].\n *\n * A zero-based index of current iteration is passed as a parameter to [action].\n *\n * @sample samples.misc.ControlFlow.repeat\n */\n@kotlin.internal.InlineOnly\npublic inline fun repeat(times: Int, action: (Int) -> Unit) {\n contract { callsInPlace(action) }\n\n for (index in 0 until times) {\n action(index)\n }\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.comparisons\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.js.*\n\n/**\n * Returns the greater of two values.\n * If values are equal, returns the first one.\n */\n@SinceKotlin(\"1.1\")\npublic actual fun > maxOf(a: T, b: T): T {\n return if (a >= b) a else b\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Byte, b: Byte): Byte {\n return Math.max(a.toInt(), b.toInt()).unsafeCast()\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Short, b: Short): Short {\n return Math.max(a.toInt(), b.toInt()).unsafeCast()\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Int, b: Int): Int {\n return Math.max(a, b)\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@Suppress(\"DEPRECATION_ERROR\", \"NOTHING_TO_INLINE\")\npublic actual inline fun maxOf(a: Long, b: Long): Long {\n return if (a >= b) a else b\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Float, b: Float): Float {\n return Math.max(a, b)\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Double, b: Double): Double {\n return Math.max(a, b)\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\npublic actual fun > maxOf(a: T, b: T, c: T): T {\n return maxOf(a, maxOf(b, c))\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Byte, b: Byte, c: Byte): Byte {\n return Math.max(a.toInt(), b.toInt(), c.toInt()).unsafeCast()\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Short, b: Short, c: Short): Short {\n return Math.max(a.toInt(), b.toInt(), c.toInt()).unsafeCast()\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Int, b: Int, c: Int): Int {\n return Math.max(a, b, c)\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic actual inline fun maxOf(a: Long, b: Long, c: Long): Long {\n return maxOf(a, maxOf(b, c))\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Float, b: Float, c: Float): Float {\n return Math.max(a, b, c)\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Double, b: Double, c: Double): Double {\n return Math.max(a, b, c)\n}\n\n/**\n * Returns the smaller of two values.\n * If values are equal, returns the first one.\n */\n@SinceKotlin(\"1.1\")\npublic actual fun > minOf(a: T, b: T): T {\n return if (a <= b) a else b\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Byte, b: Byte): Byte {\n return Math.min(a.toInt(), b.toInt()).unsafeCast()\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Short, b: Short): Short {\n return Math.min(a.toInt(), b.toInt()).unsafeCast()\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Int, b: Int): Int {\n return Math.min(a, b)\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@Suppress(\"DEPRECATION_ERROR\", \"NOTHING_TO_INLINE\")\npublic actual inline fun minOf(a: Long, b: Long): Long {\n return if (a <= b) a else b\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Float, b: Float): Float {\n return Math.min(a, b)\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Double, b: Double): Double {\n return Math.min(a, b)\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\npublic actual fun > minOf(a: T, b: T, c: T): T {\n return minOf(a, minOf(b, c))\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Byte, b: Byte, c: Byte): Byte {\n return Math.min(a.toInt(), b.toInt(), c.toInt()).unsafeCast()\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Short, b: Short, c: Short): Short {\n return Math.min(a.toInt(), b.toInt(), c.toInt()).unsafeCast()\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Int, b: Int, c: Int): Int {\n return Math.min(a, b, c)\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic actual inline fun minOf(a: Long, b: Long, c: Long): Long {\n return minOf(a, minOf(b, c))\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Float, b: Float, c: Float): Float {\n return Math.min(a, b, c)\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Double, b: Double, c: Double): Double {\n return Math.min(a, b, c)\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns 1st *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 1.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component1(): T {\n return get(0)\n}\n\n/**\n * Returns 2nd *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 2.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component2(): T {\n return get(1)\n}\n\n/**\n * Returns 3rd *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 3.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component3(): T {\n return get(2)\n}\n\n/**\n * Returns 4th *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 4.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component4(): T {\n return get(3)\n}\n\n/**\n * Returns 5th *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 5.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component5(): T {\n return get(4)\n}\n\n/**\n * Returns `true` if [element] is found in the collection.\n */\npublic operator fun <@kotlin.internal.OnlyInputTypes T> Iterable.contains(element: T): Boolean {\n if (this is Collection)\n return contains(element)\n return indexOf(element) >= 0\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic fun Iterable.elementAt(index: Int): T {\n if (this is List)\n return get(index)\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"Collection doesn't contain element at index $index.\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.elementAt(index: Int): T {\n return get(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\npublic fun Iterable.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n if (this is List)\n return this.getOrElse(index, defaultValue)\n if (index < 0)\n return defaultValue(index)\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\npublic fun Iterable.elementAtOrNull(index: Int): T? {\n if (this is List)\n return this.getOrNull(index)\n if (index < 0)\n return null\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.elementAtOrNull(index: Int): T? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.find(predicate: (T) -> Boolean): T? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the collection is empty.\n */\npublic fun Iterable.first(): T {\n when (this) {\n is List -> return this.first()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n return iterator.next()\n }\n }\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the list is empty.\n */\npublic fun List.first(): T {\n if (isEmpty())\n throw NoSuchElementException(\"List is empty.\")\n return this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun Iterable.first(predicate: (T) -> Boolean): T {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element, or `null` if the collection is empty.\n */\npublic fun Iterable.firstOrNull(): T? {\n when (this) {\n is List -> {\n if (isEmpty())\n return null\n else\n return this[0]\n }\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n return iterator.next()\n }\n }\n}\n\n/**\n * Returns the first element, or `null` if the list is empty.\n */\npublic fun List.firstOrNull(): T? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun Iterable.firstOrNull(predicate: (T) -> Boolean): T? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this list.\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.getOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this list.\n */\npublic fun List.getOrNull(index: Int): T? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns first index of [element], or -1 if the collection does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Iterable.indexOf(element: T): Int {\n if (this is List) return this.indexOf(element)\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the list does not contain element.\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\npublic fun <@kotlin.internal.OnlyInputTypes T> List.indexOf(element: T): Int {\n return indexOf(element)\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the collection does not contain such element.\n */\npublic inline fun Iterable.indexOfFirst(predicate: (T) -> Boolean): Int {\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the list does not contain such element.\n */\npublic inline fun List.indexOfFirst(predicate: (T) -> Boolean): Int {\n var index = 0\n for (item in this) {\n if (predicate(item))\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the collection does not contain such element.\n */\npublic inline fun Iterable.indexOfLast(predicate: (T) -> Boolean): Int {\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the list does not contain such element.\n */\npublic inline fun List.indexOfLast(predicate: (T) -> Boolean): Int {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n if (predicate(iterator.previous())) {\n return iterator.nextIndex()\n }\n }\n return -1\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the collection is empty.\n */\npublic fun Iterable.last(): T {\n when (this) {\n is List -> return this.last()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n }\n }\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the list is empty.\n */\npublic fun List.last(): T {\n if (isEmpty())\n throw NoSuchElementException(\"List is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun Iterable.last(predicate: (T) -> Boolean): T {\n var last: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n last = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return last as T\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun List.last(predicate: (T) -> Boolean): T {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n val element = iterator.previous()\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"List contains no element matching the predicate.\")\n}\n\n/**\n * Returns last index of [element], or -1 if the collection does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Iterable.lastIndexOf(element: T): Int {\n if (this is List) return this.lastIndexOf(element)\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns last index of [element], or -1 if the list does not contain element.\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\npublic fun <@kotlin.internal.OnlyInputTypes T> List.lastIndexOf(element: T): Int {\n return lastIndexOf(element)\n}\n\n/**\n * Returns the last element, or `null` if the collection is empty.\n */\npublic fun Iterable.lastOrNull(): T? {\n when (this) {\n is List -> return if (isEmpty()) null else this[size - 1]\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n }\n }\n}\n\n/**\n * Returns the last element, or `null` if the list is empty.\n */\npublic fun List.lastOrNull(): T? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun Iterable.lastOrNull(predicate: (T) -> Boolean): T? {\n var last: T? = null\n for (element in this) {\n if (predicate(element)) {\n last = element\n }\n }\n return last\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\npublic inline fun List.lastOrNull(predicate: (T) -> Boolean): T? {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n val element = iterator.previous()\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns a random element from this collection.\n * \n * @throws NoSuchElementException if this collection is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Collection.random(): T {\n return random(Random)\n}\n\n/**\n * Returns a random element from this collection using the specified source of randomness.\n * \n * @throws NoSuchElementException if this collection is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun Collection.random(random: Random): T {\n if (isEmpty())\n throw NoSuchElementException(\"Collection is empty.\")\n return elementAt(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this collection, or `null` if this collection is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun Collection.randomOrNull(): T? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this collection using the specified source of randomness, or `null` if this collection is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun Collection.randomOrNull(random: Random): T? {\n if (isEmpty())\n return null\n return elementAt(random.nextInt(size))\n}\n\n/**\n * Returns the single element, or throws an exception if the collection is empty or has more than one element.\n */\npublic fun Iterable.single(): T {\n when (this) {\n is List -> return this.single()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n val single = iterator.next()\n if (iterator.hasNext())\n throw IllegalArgumentException(\"Collection has more than one element.\")\n return single\n }\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the list is empty or has more than one element.\n */\npublic fun List.single(): T {\n return when (size) {\n 0 -> throw NoSuchElementException(\"List is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"List has more than one element.\")\n }\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun Iterable.single(predicate: (T) -> Boolean): T {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Collection contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as T\n}\n\n/**\n * Returns single element, or `null` if the collection is empty or has more than one element.\n */\npublic fun Iterable.singleOrNull(): T? {\n when (this) {\n is List -> return if (size == 1) this[0] else null\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n val single = iterator.next()\n if (iterator.hasNext())\n return null\n return single\n }\n }\n}\n\n/**\n * Returns single element, or `null` if the list is empty or has more than one element.\n */\npublic fun List.singleOrNull(): T? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun Iterable.singleOrNull(predicate: (T) -> Boolean): T? {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun Iterable.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return toList()\n val list: ArrayList\n if (this is Collection<*>) {\n val resultSize = size - n\n if (resultSize <= 0)\n return emptyList()\n if (resultSize == 1)\n return listOf(last())\n list = ArrayList(resultSize)\n if (this is List) {\n if (this is RandomAccess) {\n for (index in n until size)\n list.add(this[index])\n } else {\n for (item in listIterator(n))\n list.add(item)\n }\n return list\n }\n }\n else {\n list = ArrayList()\n }\n var count = 0\n for (item in this) {\n if (count >= n) list.add(item) else ++count\n }\n return list.optimizeReadOnlyList()\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun List.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun List.dropLastWhile(predicate: (T) -> Boolean): List {\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n if (!predicate(iterator.previous())) {\n return take(iterator.nextIndex() + 1)\n }\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun Iterable.dropWhile(predicate: (T) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun Iterable.filter(predicate: (T) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun Iterable.filterIndexed(predicate: (index: Int, T) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\npublic inline fun > Iterable.filterIndexedTo(destination: C, predicate: (index: Int, T) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Returns a list containing all elements that are instances of specified type parameter R.\n */\npublic inline fun Iterable<*>.filterIsInstance(): List<@kotlin.internal.NoInfer R> {\n return filterIsInstanceTo(ArrayList())\n}\n\n/**\n * Appends all elements that are instances of specified type parameter R to the given [destination].\n */\npublic inline fun > Iterable<*>.filterIsInstanceTo(destination: C): C {\n for (element in this) if (element is R) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun Iterable.filterNot(predicate: (T) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements that are not `null`.\n * \n * @sample samples.collections.Collections.Filtering.filterNotNull\n */\npublic fun Iterable.filterNotNull(): List {\n return filterNotNullTo(ArrayList())\n}\n\n/**\n * Appends all elements that are not `null` to the given [destination].\n */\npublic fun , T : Any> Iterable.filterNotNullTo(destination: C): C {\n for (element in this) if (element != null) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\npublic inline fun > Iterable.filterNotTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\npublic inline fun > Iterable.filterTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun List.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return this.subList(indices.start, indices.endInclusive + 1).toList()\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun List.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun Iterable.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (this is Collection) {\n if (n >= size) return toList()\n if (n == 1) return listOf(first())\n }\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list.optimizeReadOnlyList()\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun List.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(last())\n val list = ArrayList(n)\n if (this is RandomAccess) {\n for (index in size - n until size)\n list.add(this[index])\n } else {\n for (item in listIterator(size - n))\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun List.takeLastWhile(predicate: (T) -> Boolean): List {\n if (isEmpty())\n return emptyList()\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n if (!predicate(iterator.previous())) {\n iterator.next()\n val expectedSize = size - iterator.nextIndex()\n if (expectedSize == 0) return emptyList()\n return ArrayList(expectedSize).apply {\n while (iterator.hasNext())\n add(iterator.next())\n }\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun Iterable.takeWhile(predicate: (T) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Reverses elements in the list in-place.\n */\npublic expect fun MutableList.reverse(): Unit\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun Iterable.reversed(): List {\n if (this is Collection && size <= 1) return toList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Sorts elements in the list in-place according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > MutableList.sortBy(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareBy(selector))\n}\n\n/**\n * Sorts elements in the list in-place descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > MutableList.sortByDescending(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareByDescending(selector))\n}\n\n/**\n * Sorts elements in the list in-place descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > MutableList.sortDescending(): Unit {\n sortWith(reverseOrder())\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Iterable.sorted(): List {\n if (this is Collection) {\n if (size <= 1) return this.toList()\n @Suppress(\"UNCHECKED_CAST\")\n return (toTypedArray>() as Array).apply { sort() }.asList()\n }\n return toMutableList().apply { sort() }\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Iterable.sortedBy(crossinline selector: (T) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Iterable.sortedByDescending(crossinline selector: (T) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Iterable.sortedDescending(): List {\n return sortedWith(reverseOrder())\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun Iterable.sortedWith(comparator: Comparator): List {\n if (this is Collection) {\n if (size <= 1) return this.toList()\n @Suppress(\"UNCHECKED_CAST\")\n return (toTypedArray() as Array).apply { sortWith(comparator) }.asList()\n }\n return toMutableList().apply { sortWith(comparator) }\n}\n\n/**\n * Returns an array of Boolean containing all of the elements of this collection.\n */\npublic fun Collection.toBooleanArray(): BooleanArray {\n val result = BooleanArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Byte containing all of the elements of this collection.\n */\npublic fun Collection.toByteArray(): ByteArray {\n val result = ByteArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Char containing all of the elements of this collection.\n */\npublic fun Collection.toCharArray(): CharArray {\n val result = CharArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Double containing all of the elements of this collection.\n */\npublic fun Collection.toDoubleArray(): DoubleArray {\n val result = DoubleArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Float containing all of the elements of this collection.\n */\npublic fun Collection.toFloatArray(): FloatArray {\n val result = FloatArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Int containing all of the elements of this collection.\n */\npublic fun Collection.toIntArray(): IntArray {\n val result = IntArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Long containing all of the elements of this collection.\n */\npublic fun Collection.toLongArray(): LongArray {\n val result = LongArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Short containing all of the elements of this collection.\n */\npublic fun Collection.toShortArray(): ShortArray {\n val result = ShortArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given collection.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associate\n */\npublic inline fun Iterable.associate(transform: (T) -> Pair): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing the elements from the given collection indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associateBy\n */\npublic inline fun Iterable.associateBy(keySelector: (T) -> K): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given collection.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associateByWithValueTransform\n */\npublic inline fun Iterable.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given collection\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Collections.Transformations.associateByTo\n */\npublic inline fun > Iterable.associateByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given collection.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Collections.Transformations.associateByToWithValueTransform\n */\npublic inline fun > Iterable.associateByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given collection.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Collections.Transformations.associateTo\n */\npublic inline fun > Iterable.associateTo(destination: M, transform: (T) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Returns a [Map] where keys are elements from the given collection and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.3\")\npublic inline fun Iterable.associateWith(valueSelector: (K) -> V): Map {\n val result = LinkedHashMap(mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16))\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given collection,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n * \n * @sample samples.collections.Collections.Transformations.associateWithTo\n */\n@SinceKotlin(\"1.3\")\npublic inline fun > Iterable.associateWithTo(destination: M, valueSelector: (K) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > Iterable.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Returns a [HashSet] of all elements.\n */\npublic fun Iterable.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(collectionSizeOrDefault(12))))\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun Iterable.toList(): List {\n if (this is Collection) {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(if (this is List) get(0) else iterator().next())\n else -> this.toMutableList()\n }\n }\n return this.toMutableList().optimizeReadOnlyList()\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this collection.\n */\npublic fun Iterable.toMutableList(): MutableList {\n if (this is Collection)\n return this.toMutableList()\n return toCollection(ArrayList())\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this collection.\n */\npublic fun Collection.toMutableList(): MutableList {\n return ArrayList(this)\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic fun Iterable.toSet(): Set {\n if (this is Collection) {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(if (this is List) this[0] else iterator().next())\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n }\n return toCollection(LinkedHashSet()).optimizeReadOnlySet()\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original collection.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun Iterable.flatMap(transform: (T) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original collection, to the given [destination].\n */\npublic inline fun > Iterable.flatMapTo(destination: C, transform: (T) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups elements of the original collection by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original collection.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun Iterable.groupBy(keySelector: (T) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original collection\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original collection.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun Iterable.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups elements of the original collection by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> Iterable.groupByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original collection\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> Iterable.groupByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Creates a [Grouping] source from a collection to be used later with one of group-and-fold operations\n * using the specified [keySelector] function to extract a key from each element.\n * \n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Iterable.groupingBy(crossinline keySelector: (T) -> K): Grouping {\n return object : Grouping {\n override fun sourceIterator(): Iterator = this@groupingBy.iterator()\n override fun keyOf(element: T): K = keySelector(element)\n }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original collection.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun Iterable.map(transform: (T) -> R): List {\n return mapTo(ArrayList(collectionSizeOrDefault(10)), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original collection.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Iterable.mapIndexed(transform: (index: Int, T) -> R): List {\n return mapIndexedTo(ArrayList(collectionSizeOrDefault(10)), transform)\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element and its index in the original collection.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Iterable.mapIndexedNotNull(transform: (index: Int, T) -> R?): List {\n return mapIndexedNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original collection\n * and appends only the non-null results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Iterable.mapIndexedNotNullTo(destination: C, transform: (index: Int, T) -> R?): C {\n forEachIndexed { index, element -> transform(index, element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original collection\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Iterable.mapIndexedTo(destination: C, transform: (index: Int, T) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(checkIndexOverflow(index++), item))\n return destination\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element in the original collection.\n */\npublic inline fun Iterable.mapNotNull(transform: (T) -> R?): List {\n return mapNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element in the original collection\n * and appends only the non-null results to the given [destination].\n */\npublic inline fun > Iterable.mapNotNullTo(destination: C, transform: (T) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original collection\n * and appends the results to the given [destination].\n */\npublic inline fun > Iterable.mapTo(destination: C, transform: (T) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original collection\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun Iterable.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a list containing only distinct elements from the given collection.\n * \n * The elements in the resulting list are in the same order as they were in the source collection.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun Iterable.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only elements from the given collection\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting list are in the same order as they were in the source collection.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun Iterable.distinctBy(selector: (T) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a set containing all elements that are contained by both this collection and the specified collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun Iterable.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this collection and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic infix fun Iterable.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic fun Iterable.toMutableSet(): MutableSet {\n return when (this) {\n is Collection -> LinkedHashSet(this)\n else -> toCollection(LinkedHashSet())\n }\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original collection.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun Iterable.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun Iterable.all(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return true\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if collection has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun Iterable.any(): Boolean {\n if (this is Collection) return !isEmpty()\n return iterator().hasNext()\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun Iterable.any(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return false\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of elements in this collection.\n */\npublic fun Iterable.count(): Int {\n if (this is Collection) return size\n var count = 0\n for (element in this) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Returns the number of elements in this collection.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun Iterable.count(predicate: (T) -> Boolean): Int {\n if (this is Collection && isEmpty()) return 0\n var count = 0\n for (element in this) if (predicate(element)) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\npublic inline fun Iterable.fold(initial: R, operation: (acc: R, T) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original collection.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun Iterable.foldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(checkIndexOverflow(index++), accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\npublic inline fun List.foldRight(initial: R, operation: (T, acc: R) -> R): R {\n var accumulator = initial\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n accumulator = operation(iterator.previous(), accumulator)\n }\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original list and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun List.foldRightIndexed(initial: R, operation: (index: Int, T, acc: R) -> R): R {\n var accumulator = initial\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n val index = iterator.previousIndex()\n accumulator = operation(index, iterator.previous(), accumulator)\n }\n }\n return accumulator\n}\n\n/**\n * Performs the given [action] on each element.\n */\n@kotlin.internal.HidesMembers\npublic inline fun Iterable.forEach(action: (T) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\npublic inline fun Iterable.forEachIndexed(action: (index: Int, T) -> Unit): Unit {\n var index = 0\n for (item in this) action(checkIndexOverflow(index++), item)\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Iterable.max(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n if (max.isNaN()) return max\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Iterable.max(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n if (max.isNaN()) return max\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\npublic fun > Iterable.max(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > Iterable.maxBy(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxElem = iterator.next()\n if (!iterator.hasNext()) return maxElem\n var maxValue = selector(maxElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n } while (iterator.hasNext())\n return maxElem\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun Iterable.maxWith(comparator: Comparator): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Iterable.min(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n if (min.isNaN()) return min\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\npublic fun Iterable.min(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n if (min.isNaN()) return min\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\npublic fun > Iterable.min(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > Iterable.minBy(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minElem = iterator.next()\n if (!iterator.hasNext()) return minElem\n var minValue = selector(minElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n } while (iterator.hasNext())\n return minElem\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\npublic fun Iterable.minWith(comparator: Comparator): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the collection has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun Iterable.none(): Boolean {\n if (this is Collection) return isEmpty()\n return !iterator().hasNext()\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun Iterable.none(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return true\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Performs the given [action] on each element and returns the collection itself afterwards.\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > C.onEach(action: (T) -> Unit): C {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun Iterable.reduce(operation: (acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty collection can't be reduced.\")\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original collection.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun Iterable.reduceIndexed(operation: (index: Int, acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty collection can't be reduced.\")\n var index = 1\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(checkIndexOverflow(index++), accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the collection is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Iterable.reduceOrNull(operation: (acc: S, T) -> S): S? {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return null\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun List.reduceRight(operation: (T, acc: S) -> S): S {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n throw UnsupportedOperationException(\"Empty list can't be reduced.\")\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n accumulator = operation(iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original list and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun List.reduceRightIndexed(operation: (index: Int, T, acc: S) -> S): S {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n throw UnsupportedOperationException(\"Empty list can't be reduced.\")\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n val index = iterator.previousIndex()\n accumulator = operation(index, iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the list is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun List.reduceRightOrNull(operation: (T, acc: S) -> S): S? {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n return null\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n accumulator = operation(iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Iterable.scan(initial: R, operation: (acc: R, T) -> R): List {\n val estimatedSize = collectionSizeOrDefault(9)\n if (estimatedSize == 0) return listOf(initial)\n val result = ArrayList(estimatedSize + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original collection and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Iterable.scanIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): List {\n val estimatedSize = collectionSizeOrDefault(9)\n if (estimatedSize == 0) return listOf(initial)\n val result = ArrayList(estimatedSize + 1).apply { add(initial) }\n var index = 0\n var accumulator = initial\n for (element in this) {\n accumulator = operation(index++, accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this collection.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and the element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Iterable.scanReduce(operation: (acc: S, T) -> S): List {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return emptyList()\n var accumulator: S = iterator.next()\n val result = ArrayList(collectionSizeOrDefault(10)).apply { add(accumulator) }\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original collection and current accumulator value that starts with the first element of this collection.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Iterable.scanReduceIndexed(operation: (index: Int, acc: S, T) -> S): List {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return emptyList()\n var accumulator: S = iterator.next()\n val result = ArrayList(collectionSizeOrDefault(10)).apply { add(accumulator) }\n var index = 1\n while (iterator.hasNext()) {\n accumulator = operation(index++, accumulator, iterator.next())\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\npublic inline fun Iterable.sumBy(selector: (T) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\npublic inline fun Iterable.sumByDouble(selector: (T) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n */\npublic fun Iterable.requireNoNulls(): Iterable {\n for (element in this) {\n if (element == null) {\n throw IllegalArgumentException(\"null element found in $this.\")\n }\n }\n @Suppress(\"UNCHECKED_CAST\")\n return this as Iterable\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n */\npublic fun List.requireNoNulls(): List {\n for (element in this) {\n if (element == null) {\n throw IllegalArgumentException(\"null element found in $this.\")\n }\n }\n @Suppress(\"UNCHECKED_CAST\")\n return this as List\n}\n\n/**\n * Splits this collection into a list of lists each not exceeding the given [size].\n * \n * The last list in the resulting list may have less elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this collection.\n * \n * @sample samples.collections.Collections.Transformations.chunked\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.chunked(size: Int): List> {\n return windowed(size, size, partialWindows = true)\n}\n\n/**\n * Splits this collection into several lists each not exceeding the given [size]\n * and applies the given [transform] function to an each.\n * \n * @return list of results of the [transform] applied to an each list.\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * The last list may have less elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this collection.\n * \n * @sample samples.text.Strings.chunkedTransform\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.chunked(size: Int, transform: (List) -> R): List {\n return windowed(size, size, partialWindows = true, transform = transform)\n}\n\n/**\n * Returns a list containing all elements of the original collection without the first occurrence of the given [element].\n */\npublic operator fun Iterable.minus(element: T): List {\n val result = ArrayList(collectionSizeOrDefault(10))\n var removed = false\n return this.filterTo(result) { if (!removed && it == element) { removed = true; false } else true }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] array.\n * \n * The [elements] array may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Iterable.minus(elements: Array): List {\n if (elements.isEmpty()) return this.toList()\n val other = elements.toHashSet()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] collection.\n * \n * The [elements] collection may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Iterable.minus(elements: Iterable): List {\n val other = elements.convertToSetForSetOperationWith(this)\n if (other.isEmpty())\n return this.toList()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] sequence.\n * \n * The [elements] sequence may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Iterable.minus(elements: Sequence): List {\n val other = elements.toHashSet()\n if (other.isEmpty())\n return this.toList()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection without the first occurrence of the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.minusElement(element: T): List {\n return minus(element)\n}\n\n/**\n * Splits the original collection into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Iterables.Operations.partition\n */\npublic inline fun Iterable.partition(predicate: (T) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\npublic operator fun Iterable.plus(element: T): List {\n if (this is Collection) return this.plus(element)\n val result = ArrayList()\n result.addAll(this)\n result.add(element)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\npublic operator fun Collection.plus(element: T): List {\n val result = ArrayList(size + 1)\n result.addAll(this)\n result.add(element)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] array.\n */\npublic operator fun Iterable.plus(elements: Array): List {\n if (this is Collection) return this.plus(elements)\n val result = ArrayList()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] array.\n */\npublic operator fun Collection.plus(elements: Array): List {\n val result = ArrayList(this.size + elements.size)\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] collection.\n */\npublic operator fun Iterable.plus(elements: Iterable): List {\n if (this is Collection) return this.plus(elements)\n val result = ArrayList()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] collection.\n */\npublic operator fun Collection.plus(elements: Iterable): List {\n if (elements is Collection) {\n val result = ArrayList(this.size + elements.size)\n result.addAll(this)\n result.addAll(elements)\n return result\n } else {\n val result = ArrayList(this)\n result.addAll(elements)\n return result\n }\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] sequence.\n */\npublic operator fun Iterable.plus(elements: Sequence): List {\n val result = ArrayList()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] sequence.\n */\npublic operator fun Collection.plus(elements: Sequence): List {\n val result = ArrayList(this.size + 10)\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.plusElement(element: T): List {\n return plus(element)\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection.plusElement(element: T): List {\n return plus(element)\n}\n\n/**\n * Returns a list of snapshots of the window of the given [size]\n * sliding along this collection with the given [step], where each\n * snapshot is a list.\n * \n * Several last lists may have less elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this collection.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.takeWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false): List> {\n checkWindowSizeStep(size, step)\n if (this is RandomAccess && this is List) {\n val thisSize = this.size\n val resultCapacity = thisSize / step + if (thisSize % step == 0) 0 else 1\n val result = ArrayList>(resultCapacity)\n var index = 0\n while (index in 0 until thisSize) {\n val windowSize = size.coerceAtMost(thisSize - index)\n if (windowSize < size && !partialWindows) break\n result.add(List(windowSize) { this[it + index] })\n index += step\n }\n return result\n }\n val result = ArrayList>()\n windowedIterator(iterator(), size, step, partialWindows, reuseBuffer = false).forEach {\n result.add(it)\n }\n return result\n}\n\n/**\n * Returns a list of results of applying the given [transform] function to\n * an each list representing a view over the window of the given [size]\n * sliding along this collection with the given [step].\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * Several last lists may have less elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this collection.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.averageWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false, transform: (List) -> R): List {\n checkWindowSizeStep(size, step)\n if (this is RandomAccess && this is List) {\n val thisSize = this.size\n val resultCapacity = thisSize / step + if (thisSize % step == 0) 0 else 1\n val result = ArrayList(resultCapacity)\n val window = MovingSubList(this)\n var index = 0\n while (index in 0 until thisSize) {\n val windowSize = size.coerceAtMost(thisSize - index)\n if (!partialWindows && windowSize < size) break\n window.move(index, index + windowSize)\n result.add(transform(window))\n index += step\n }\n return result\n }\n val result = ArrayList()\n windowedIterator(iterator(), size, step, partialWindows, reuseBuffer = true).forEach {\n result.add(transform(it))\n }\n return result\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Iterable.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` collection and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Iterable.zip(other: Array, transform: (a: T, b: R) -> V): List {\n val arraySize = other.size\n val list = ArrayList(minOf(collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in this) {\n if (i >= arraySize) break\n list.add(transform(element, other[i++]))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] collection with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Iterable.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` collection and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Iterable.zip(other: Iterable, transform: (a: T, b: R) -> V): List {\n val first = iterator()\n val second = other.iterator()\n val list = ArrayList(minOf(collectionSizeOrDefault(10), other.collectionSizeOrDefault(10)))\n while (first.hasNext() && second.hasNext()) {\n list.add(transform(first.next(), second.next()))\n }\n return list\n}\n\n/**\n * Returns a list of pairs of each two adjacent elements in this collection.\n * \n * The returned list is empty if this collection contains less than two elements.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNext\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.zipWithNext(): List> {\n return zipWithNext { a, b -> a to b }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to an each pair of two adjacent elements in this collection.\n * \n * The returned list is empty if this collection contains less than two elements.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNextToFindDeltas\n */\n@SinceKotlin(\"1.2\")\npublic inline fun Iterable.zipWithNext(transform: (a: T, b: T) -> R): List {\n val iterator = iterator()\n if (!iterator.hasNext()) return emptyList()\n val result = mutableListOf()\n var current = iterator.next()\n while (iterator.hasNext()) {\n val next = iterator.next()\n result.add(transform(current, next))\n current = next\n }\n return result\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun Iterable.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n buffer.appendElement(element, transform)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun Iterable.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Returns this collection as an [Iterable].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.asIterable(): Iterable {\n return this\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original collection returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromCollection\n */\npublic fun Iterable.asSequence(): Sequence {\n return Sequence { this.iterator() }\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfByte\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfShort\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfInt\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfLong\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfFloat\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfDouble\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfByte\")\npublic fun Iterable.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfShort\")\npublic fun Iterable.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfInt\")\npublic fun Iterable.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfLong\")\npublic fun Iterable.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfFloat\")\npublic fun Iterable.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfDouble\")\npublic fun Iterable.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\nimport kotlin.comparisons.naturalOrder\nimport kotlin.random.Random\n\n/** Returns the array if it's not `null`, or an empty array otherwise. */\n@kotlin.internal.InlineOnly\npublic actual inline fun Array?.orEmpty(): Array = this ?: emptyArray()\n\n@kotlin.internal.InlineOnly\npublic actual inline fun Collection.toTypedArray(): Array = copyToArray(this)\n\n@JsName(\"copyToArray\")\n@PublishedApi\ninternal fun copyToArray(collection: Collection): Array {\n return if (collection.asDynamic().toArray !== undefined)\n collection.asDynamic().toArray().unsafeCast>()\n else\n copyToArrayImpl(collection).unsafeCast>()\n}\n\n@JsName(\"copyToArrayImpl\")\ninternal actual fun copyToArrayImpl(collection: Collection<*>): Array {\n val array = emptyArray()\n val iterator = collection.iterator()\n while (iterator.hasNext())\n array.asDynamic().push(iterator.next())\n return array\n}\n\n@JsName(\"copyToExistingArrayImpl\")\ninternal actual fun copyToArrayImpl(collection: Collection<*>, array: Array): Array {\n if (array.size < collection.size)\n return copyToArrayImpl(collection).unsafeCast>()\n\n val iterator = collection.iterator()\n var index = 0\n while (iterator.hasNext()) {\n array[index++] = iterator.next().unsafeCast()\n }\n if (index < array.size) {\n array[index] = null.unsafeCast()\n }\n return array\n}\n\n/**\n * Returns an immutable list containing only the specified object [element].\n */\npublic fun listOf(element: T): List = arrayListOf(element)\n\n/**\n * Returns an immutable set containing only the specified object [element].\n */\npublic fun setOf(element: T): Set = hashSetOf(element)\n\n/**\n * Returns an immutable map, mapping only the specified key to the\n * specified value.\n */\npublic fun mapOf(pair: Pair): Map = hashMapOf(pair)\n\n/**\n * Fills the list with the provided [value].\n *\n * Each element in the list gets replaced with the [value].\n */\n@SinceKotlin(\"1.2\")\npublic actual fun MutableList.fill(value: T): Unit {\n for (index in 0..lastIndex) {\n this[index] = value\n }\n}\n\n/**\n * Randomly shuffles elements in this list.\n *\n * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n */\n@SinceKotlin(\"1.2\")\npublic actual fun MutableList.shuffle(): Unit = shuffle(Random)\n\n/**\n * Returns a new list with the elements of this list randomly shuffled.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Iterable.shuffled(): List = toMutableList().apply { shuffle() }\n\n/**\n * Sorts elements in the list in-place according to their natural sort order.\n *\n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic actual fun > MutableList.sort(): Unit {\n collectionsSort(this, naturalOrder())\n}\n\n/**\n * Sorts elements in the list in-place according to the order specified with [comparator].\n *\n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic actual fun MutableList.sortWith(comparator: Comparator): Unit {\n collectionsSort(this, comparator)\n}\n\nprivate fun collectionsSort(list: MutableList, comparator: Comparator) {\n if (list.size <= 1) return\n\n val array = copyToArray(list)\n sortArrayWith(array, comparator)\n\n for (i in 0 until array.size) {\n list[i] = array[i]\n }\n}\n\ninternal actual fun arrayOfNulls(reference: Array, size: Int): Array {\n return arrayOfNulls(size).unsafeCast>()\n}\n\n@SinceKotlin(\"1.3\")\n@PublishedApi\n@JsName(\"arrayCopy\")\ninternal fun arrayCopy(source: Array, destination: Array, destinationOffset: Int, startIndex: Int, endIndex: Int) {\n AbstractList.checkRangeIndexes(startIndex, endIndex, source.size)\n val rangeSize = endIndex - startIndex\n AbstractList.checkRangeIndexes(destinationOffset, destinationOffset + rangeSize, destination.size)\n\n if (js(\"ArrayBuffer\").isView(destination) && js(\"ArrayBuffer\").isView(source)) {\n val subrange = source.asDynamic().subarray(startIndex, endIndex)\n destination.asDynamic().set(subrange, destinationOffset)\n } else {\n if (source !== destination || destinationOffset <= startIndex) {\n for (index in 0 until rangeSize) {\n destination[destinationOffset + index] = source[startIndex + index]\n }\n } else {\n for (index in rangeSize - 1 downTo 0) {\n destination[destinationOffset + index] = source[startIndex + index]\n }\n }\n }\n}\n\n// no singleton map implementation in js, return map as is\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal actual inline fun Map.toSingletonMapOrSelf(): Map = this\n\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal actual inline fun Map.toSingletonMap(): Map = this.toMutableMap()\n\n\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal actual inline fun Array.copyToArrayOfAny(isVarargs: Boolean): Array =\n if (isVarargs)\n // no need to copy vararg array in JS\n this\n else\n this.copyOf()\n\n\n\n@PublishedApi\ninternal actual fun checkIndexOverflow(index: Int): Int {\n if (index < 0) {\n throwIndexOverflow()\n }\n return index\n}\n\n@PublishedApi\ninternal actual fun checkCountOverflow(count: Int): Int {\n if (count < 0) {\n throwCountOverflow()\n }\n return count\n}\n\n\n/**\n * JS map and set implementations do not make use of capacities or load factors.\n */\n@PublishedApi\ninternal actual fun mapCapacity(expectedSize: Int) = expectedSize\n\n/**\n * Checks a collection builder function capacity argument.\n * In JS no validation is made in Map/Set constructor yet.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@PublishedApi\ninternal actual fun checkBuilderCapacity(capacity: Int) {\n require(capacity >= 0) { \"capacity must be non-negative.\" }\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\n\n/**\n * Returns the given iterator itself. This allows to use an instance of iterator in a `for` loop.\n * @sample samples.collections.Iterators.iterator\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Iterator.iterator(): Iterator = this\n\n/**\n * Returns an [Iterator] that wraps each element produced by the original iterator\n * into an [IndexedValue] containing the index of that element and the element itself.\n *\n * @sample samples.collections.Iterators.withIndexIterator\n */\npublic fun Iterator.withIndex(): Iterator> = IndexingIterator(this)\n\n/**\n * Performs the given [operation] on each element of this [Iterator].\n * @sample samples.collections.Iterators.forEachIterator\n */\npublic inline fun Iterator.forEach(operation: (T) -> Unit): Unit {\n for (element in this) operation(element)\n}\n\n/**\n * Iterator transforming original `iterator` into iterator of [IndexedValue], counting index from zero.\n */\ninternal class IndexingIterator(private val iterator: Iterator) : Iterator> {\n private var index = 0\n final override fun hasNext(): Boolean = iterator.hasNext()\n final override fun next(): IndexedValue = IndexedValue(checkIndexOverflow(index++), iterator.next())\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"ComparisonsKt\")\n\npackage kotlin.comparisons\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\n\n/**\n * Returns the greater of two values.\n * If values are equal, returns the first one.\n */\n@SinceKotlin(\"1.1\")\npublic expect fun > maxOf(a: T, b: T): T\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Byte, b: Byte): Byte\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Short, b: Short): Short\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Int, b: Int): Int\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Long, b: Long): Long\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Float, b: Float): Float\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Double, b: Double): Double\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\npublic expect fun > maxOf(a: T, b: T, c: T): T\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Byte, b: Byte, c: Byte): Byte\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Short, b: Short, c: Short): Short\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Int, b: Int, c: Int): Int\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Long, b: Long, c: Long): Long\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Float, b: Float, c: Float): Float\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun maxOf(a: Double, b: Double, c: Double): Double\n\n/**\n * Returns the greater of three values according to the order specified by the given [comparator].\n */\n@SinceKotlin(\"1.1\")\npublic fun maxOf(a: T, b: T, c: T, comparator: Comparator): T {\n return maxOf(a, maxOf(b, c, comparator), comparator)\n}\n\n/**\n * Returns the greater of two values according to the order specified by the given [comparator].\n * If values are equal, returns the first one.\n */\n@SinceKotlin(\"1.1\")\npublic fun maxOf(a: T, b: T, comparator: Comparator): T {\n return if (comparator.compare(a, b) >= 0) a else b\n}\n\n/**\n * Returns the smaller of two values.\n * If values are equal, returns the first one.\n */\n@SinceKotlin(\"1.1\")\npublic expect fun > minOf(a: T, b: T): T\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Byte, b: Byte): Byte\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Short, b: Short): Short\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Int, b: Int): Int\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Long, b: Long): Long\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Float, b: Float): Float\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Double, b: Double): Double\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\npublic expect fun > minOf(a: T, b: T, c: T): T\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Byte, b: Byte, c: Byte): Byte\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Short, b: Short, c: Short): Short\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Int, b: Int, c: Int): Int\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Long, b: Long, c: Long): Long\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Float, b: Float, c: Float): Float\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic expect inline fun minOf(a: Double, b: Double, c: Double): Double\n\n/**\n * Returns the smaller of three values according to the order specified by the given [comparator].\n */\n@SinceKotlin(\"1.1\")\npublic fun minOf(a: T, b: T, c: T, comparator: Comparator): T {\n return minOf(a, minOf(b, c, comparator), comparator)\n}\n\n/**\n * Returns the smaller of two values according to the order specified by the given [comparator].\n * If values are equal, returns the first one.\n */\n@SinceKotlin(\"1.1\")\npublic fun minOf(a: T, b: T, comparator: Comparator): T {\n return if (comparator.compare(a, b) <= 0) a else b\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"MapsKt\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns a [List] containing all key-value pairs.\n */\npublic fun Map.toList(): List> {\n if (size == 0)\n return emptyList()\n val iterator = entries.iterator()\n if (!iterator.hasNext())\n return emptyList()\n val first = iterator.next()\n if (!iterator.hasNext())\n return listOf(first.toPair())\n val result = ArrayList>(size)\n result.add(first.toPair())\n do {\n result.add(iterator.next().toPair())\n } while (iterator.hasNext())\n return result\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each entry of original map.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun Map.flatMap(transform: (Map.Entry) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each entry of original map, to the given [destination].\n */\npublic inline fun > Map.flatMapTo(destination: C, transform: (Map.Entry) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each entry in the original map.\n * \n * @sample samples.collections.Maps.Transformations.mapToList\n */\npublic inline fun Map.map(transform: (Map.Entry) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each entry in the original map.\n */\npublic inline fun Map.mapNotNull(transform: (Map.Entry) -> R?): List {\n return mapNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each entry in the original map\n * and appends only the non-null results to the given [destination].\n */\npublic inline fun > Map.mapNotNullTo(destination: C, transform: (Map.Entry) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each entry of the original map\n * and appends the results to the given [destination].\n */\npublic inline fun > Map.mapTo(destination: C, transform: (Map.Entry) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns `true` if all entries match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun Map.all(predicate: (Map.Entry) -> Boolean): Boolean {\n if (isEmpty()) return true\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if map has at least one entry.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun Map.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if at least one entry matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun Map.any(predicate: (Map.Entry) -> Boolean): Boolean {\n if (isEmpty()) return false\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of entries in this map.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.count(): Int {\n return size\n}\n\n/**\n * Returns the number of entries matching the given [predicate].\n */\npublic inline fun Map.count(predicate: (Map.Entry) -> Boolean): Int {\n if (isEmpty()) return 0\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Performs the given [action] on each entry.\n */\n@kotlin.internal.HidesMembers\npublic inline fun Map.forEach(action: (Map.Entry) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Returns the first entry yielding the largest value of the given function or `null` if there are no entries.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\n@kotlin.internal.InlineOnly\npublic inline fun > Map.maxBy(selector: (Map.Entry) -> R): Map.Entry? {\n return entries.maxBy(selector)\n}\n\n/**\n * Returns the first entry having the largest value according to the provided [comparator] or `null` if there are no entries.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.maxWith(comparator: Comparator>): Map.Entry? {\n return entries.maxWith(comparator)\n}\n\n/**\n * Returns the first entry yielding the smallest value of the given function or `null` if there are no entries.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > Map.minBy(selector: (Map.Entry) -> R): Map.Entry? {\n return entries.minBy(selector)\n}\n\n/**\n * Returns the first entry having the smallest value according to the provided [comparator] or `null` if there are no entries.\n */\npublic fun Map.minWith(comparator: Comparator>): Map.Entry? {\n return entries.minWith(comparator)\n}\n\n/**\n * Returns `true` if the map has no entries.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun Map.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if no entries match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun Map.none(predicate: (Map.Entry) -> Boolean): Boolean {\n if (isEmpty()) return true\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Performs the given [action] on each entry and returns the map itself afterwards.\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > M.onEach(action: (Map.Entry) -> Unit): M {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original map returning its entries when being iterated.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.asIterable(): Iterable> {\n return entries\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original map returning its entries when being iterated.\n */\npublic fun Map.asSequence(): Sequence> {\n return entries.asSequence()\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"SequencesKt\")\n\npackage kotlin.sequences\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\n\n/**\n * Returns `true` if [element] is found in the sequence.\n *\n * The operation is _terminal_.\n */\npublic operator fun <@kotlin.internal.OnlyInputTypes T> Sequence.contains(element: T): Boolean {\n return indexOf(element) >= 0\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic fun Sequence.elementAt(index: Int): T {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"Sequence doesn't contain element at index $index.\") }\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\npublic fun Sequence.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n if (index < 0)\n return defaultValue(index)\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\npublic fun Sequence.elementAtOrNull(index: Int): T? {\n if (index < 0)\n return null\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n *\n * The operation is _terminal_.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Sequence.find(predicate: (T) -> Boolean): T? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n *\n * The operation is _terminal_.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Sequence.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the sequence is empty.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.first(): T {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Sequence is empty.\")\n return iterator.next()\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.first(predicate: (T) -> Boolean): T {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Sequence contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element, or `null` if the sequence is empty.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.firstOrNull(): T? {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n return iterator.next()\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.firstOrNull(predicate: (T) -> Boolean): T? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns first index of [element], or -1 if the sequence does not contain element.\n *\n * The operation is _terminal_.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Sequence.indexOf(element: T): Int {\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the sequence does not contain such element.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.indexOfFirst(predicate: (T) -> Boolean): Int {\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the sequence does not contain such element.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.indexOfLast(predicate: (T) -> Boolean): Int {\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the sequence is empty.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.last(): T {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Sequence is empty.\")\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.last(predicate: (T) -> Boolean): T {\n var last: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n last = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Sequence contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return last as T\n}\n\n/**\n * Returns last index of [element], or -1 if the sequence does not contain element.\n *\n * The operation is _terminal_.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Sequence.lastIndexOf(element: T): Int {\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns the last element, or `null` if the sequence is empty.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.lastOrNull(): T? {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.lastOrNull(predicate: (T) -> Boolean): T? {\n var last: T? = null\n for (element in this) {\n if (predicate(element)) {\n last = element\n }\n }\n return last\n}\n\n/**\n * Returns the single element, or throws an exception if the sequence is empty or has more than one element.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.single(): T {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Sequence is empty.\")\n val single = iterator.next()\n if (iterator.hasNext())\n throw IllegalArgumentException(\"Sequence has more than one element.\")\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.single(predicate: (T) -> Boolean): T {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Sequence contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Sequence contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as T\n}\n\n/**\n * Returns single element, or `null` if the sequence is empty or has more than one element.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.singleOrNull(): T? {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n val single = iterator.next()\n if (iterator.hasNext())\n return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.singleOrNull(predicate: (T) -> Boolean): T? {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a sequence containing all elements except first [n] elements.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun Sequence.drop(n: Int): Sequence {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return when {\n n == 0 -> this\n this is DropTakeSequence -> this.drop(n)\n else -> DropSequence(this, n)\n }\n}\n\n/**\n * Returns a sequence containing all elements except first elements that satisfy the given [predicate].\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun Sequence.dropWhile(predicate: (T) -> Boolean): Sequence {\n return DropWhileSequence(this, predicate)\n}\n\n/**\n * Returns a sequence containing only elements matching the given [predicate].\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic fun Sequence.filter(predicate: (T) -> Boolean): Sequence {\n return FilteringSequence(this, true, predicate)\n}\n\n/**\n * Returns a sequence containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence.filterIndexed(predicate: (index: Int, T) -> Boolean): Sequence {\n // TODO: Rewrite with generalized MapFilterIndexingSequence\n return TransformingSequence(FilteringSequence(IndexingSequence(this), true, { predicate(it.index, it.value) }), { it.value })\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.filterIndexedTo(destination: C, predicate: (index: Int, T) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Returns a sequence containing all elements that are instances of specified type parameter R.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic inline fun Sequence<*>.filterIsInstance(): Sequence<@kotlin.internal.NoInfer R> {\n @Suppress(\"UNCHECKED_CAST\")\n return filter { it is R } as Sequence\n}\n\n/**\n * Appends all elements that are instances of specified type parameter R to the given [destination].\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence<*>.filterIsInstanceTo(destination: C): C {\n for (element in this) if (element is R) destination.add(element)\n return destination\n}\n\n/**\n * Returns a sequence containing all elements not matching the given [predicate].\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic fun Sequence.filterNot(predicate: (T) -> Boolean): Sequence {\n return FilteringSequence(this, false, predicate)\n}\n\n/**\n * Returns a sequence containing all elements that are not `null`.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Filtering.filterNotNull\n */\npublic fun Sequence.filterNotNull(): Sequence {\n @Suppress(\"UNCHECKED_CAST\")\n return filterNot { it == null } as Sequence\n}\n\n/**\n * Appends all elements that are not `null` to the given [destination].\n *\n * The operation is _terminal_.\n */\npublic fun , T : Any> Sequence.filterNotNullTo(destination: C): C {\n for (element in this) if (element != null) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.filterNotTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.filterTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Returns a sequence containing first [n] elements.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun Sequence.take(n: Int): Sequence {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return when {\n n == 0 -> emptySequence()\n this is DropTakeSequence -> this.take(n)\n else -> TakeSequence(this, n)\n }\n}\n\n/**\n * Returns a sequence containing first elements satisfying the given [predicate].\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun Sequence.takeWhile(predicate: (T) -> Boolean): Sequence {\n return TakeWhileSequence(this, predicate)\n}\n\n/**\n * Returns a sequence that yields elements of this sequence sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic fun > Sequence.sorted(): Sequence {\n return object : Sequence {\n override fun iterator(): Iterator {\n val sortedList = this@sorted.toMutableList()\n sortedList.sort()\n return sortedList.iterator()\n }\n }\n}\n\n/**\n * Returns a sequence that yields elements of this sequence sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic inline fun > Sequence.sortedBy(crossinline selector: (T) -> R?): Sequence {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a sequence that yields elements of this sequence sorted descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic inline fun > Sequence.sortedByDescending(crossinline selector: (T) -> R?): Sequence {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a sequence that yields elements of this sequence sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic fun > Sequence.sortedDescending(): Sequence {\n return sortedWith(reverseOrder())\n}\n\n/**\n * Returns a sequence that yields elements of this sequence sorted according to the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic fun Sequence.sortedWith(comparator: Comparator): Sequence {\n return object : Sequence {\n override fun iterator(): Iterator {\n val sortedList = this@sortedWith.toMutableList()\n sortedList.sortWith(comparator)\n return sortedList.iterator()\n }\n }\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given sequence.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.associate\n */\npublic inline fun Sequence.associate(transform: (T) -> Pair): Map {\n return associateTo(LinkedHashMap(), transform)\n}\n\n/**\n * Returns a [Map] containing the elements from the given sequence indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.associateBy\n */\npublic inline fun Sequence.associateBy(keySelector: (T) -> K): Map {\n return associateByTo(LinkedHashMap(), keySelector)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given sequence.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.associateByWithValueTransform\n */\npublic inline fun Sequence.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map {\n return associateByTo(LinkedHashMap(), keySelector, valueTransform)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given sequence\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.associateByTo\n */\npublic inline fun > Sequence.associateByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given sequence.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.associateByToWithValueTransform\n */\npublic inline fun > Sequence.associateByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given sequence.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.associateTo\n */\npublic inline fun > Sequence.associateTo(destination: M, transform: (T) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Returns a [Map] where keys are elements from the given sequence and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.3\")\npublic inline fun Sequence.associateWith(valueSelector: (K) -> V): Map {\n val result = LinkedHashMap()\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given sequence,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.associateWithTo\n */\n@SinceKotlin(\"1.3\")\npublic inline fun > Sequence.associateWithTo(destination: M, valueSelector: (K) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n *\n * The operation is _terminal_.\n */\npublic fun > Sequence.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Returns a [HashSet] of all elements.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.toHashSet(): HashSet {\n return toCollection(HashSet())\n}\n\n/**\n * Returns a [List] containing all elements.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.toList(): List {\n return this.toMutableList().optimizeReadOnlyList()\n}\n\n/**\n * Returns a [MutableList] filled with all elements of this sequence.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.toMutableList(): MutableList {\n return toCollection(ArrayList())\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original sequence.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.toSet(): Set {\n return toCollection(LinkedHashSet()).optimizeReadOnlySet()\n}\n\n/**\n * Returns a single sequence of all elements from results of [transform] function being invoked on each element of original sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic fun Sequence.flatMap(transform: (T) -> Sequence): Sequence {\n return FlatteningSequence(this, transform, { it.iterator() })\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original sequence, to the given [destination].\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.flatMapTo(destination: C, transform: (T) -> Sequence): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups elements of the original sequence by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun Sequence.groupBy(keySelector: (T) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original sequence\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original sequence.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun Sequence.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups elements of the original sequence by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> Sequence.groupByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original sequence\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> Sequence.groupByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Creates a [Grouping] source from a sequence to be used later with one of group-and-fold operations\n * using the specified [keySelector] function to extract a key from each element.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Sequence.groupingBy(crossinline keySelector: (T) -> K): Grouping {\n return object : Grouping {\n override fun sourceIterator(): Iterator = this@groupingBy.iterator()\n override fun keyOf(element: T): K = keySelector(element)\n }\n}\n\n/**\n * Returns a sequence containing the results of applying the given [transform] function\n * to each element in the original sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic fun Sequence.map(transform: (T) -> R): Sequence {\n return TransformingSequence(this, transform)\n}\n\n/**\n * Returns a sequence containing the results of applying the given [transform] function\n * to each element and its index in the original sequence.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence.mapIndexed(transform: (index: Int, T) -> R): Sequence {\n return TransformingIndexedSequence(this, transform)\n}\n\n/**\n * Returns a sequence containing only the non-null results of applying the given [transform] function\n * to each element and its index in the original sequence.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence.mapIndexedNotNull(transform: (index: Int, T) -> R?): Sequence {\n return TransformingIndexedSequence(this, transform).filterNotNull()\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original sequence\n * and appends only the non-null results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.mapIndexedNotNullTo(destination: C, transform: (index: Int, T) -> R?): C {\n forEachIndexed { index, element -> transform(index, element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original sequence\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.mapIndexedTo(destination: C, transform: (index: Int, T) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(checkIndexOverflow(index++), item))\n return destination\n}\n\n/**\n * Returns a sequence containing only the non-null results of applying the given [transform] function\n * to each element in the original sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence.mapNotNull(transform: (T) -> R?): Sequence {\n return TransformingSequence(this, transform).filterNotNull()\n}\n\n/**\n * Applies the given [transform] function to each element in the original sequence\n * and appends only the non-null results to the given [destination].\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.mapNotNullTo(destination: C, transform: (T) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original sequence\n * and appends the results to the given [destination].\n *\n * The operation is _terminal_.\n */\npublic inline fun > Sequence.mapTo(destination: C, transform: (T) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a sequence that wraps each element of the original sequence\n * into an [IndexedValue] containing the index of that element and the element itself.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence.withIndex(): Sequence> {\n return IndexingSequence(this)\n}\n\n/**\n * Returns a sequence containing only distinct elements from the given sequence.\n * \n * The elements in the resulting sequence are in the same order as they were in the source sequence.\n *\n * The operation is _intermediate_ and _stateful_.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun Sequence.distinct(): Sequence {\n return this.distinctBy { it }\n}\n\n/**\n * Returns a sequence containing only elements from the given sequence\n * having distinct keys returned by the given [selector] function.\n * \n * The elements in the resulting sequence are in the same order as they were in the source sequence.\n *\n * The operation is _intermediate_ and _stateful_.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun Sequence.distinctBy(selector: (T) -> K): Sequence {\n return DistinctSequence(this, selector)\n}\n\n/**\n * Returns a mutable set containing all distinct elements from the given sequence.\n * \n * The returned set preserves the element iteration order of the original sequence.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.toMutableSet(): MutableSet {\n val set = LinkedHashSet()\n for (item in this) set.add(item)\n return set\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun Sequence.all(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if sequence has at least one element.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun Sequence.any(): Boolean {\n return iterator().hasNext()\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun Sequence.any(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of elements in this sequence.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.count(): Int {\n var count = 0\n for (element in this) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.count(predicate: (T) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.fold(initial: R, operation: (acc: R, T) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original sequence.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.foldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(checkIndexOverflow(index++), accumulator, element)\n return accumulator\n}\n\n/**\n * Performs the given [action] on each element.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.forEach(action: (T) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.forEachIndexed(action: (index: Int, T) -> Unit): Unit {\n var index = 0\n for (item in this) action(checkIndexOverflow(index++), item)\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.1\")\npublic fun Sequence.max(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n if (max.isNaN()) return max\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.1\")\npublic fun Sequence.max(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n if (max.isNaN()) return max\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n *\n * The operation is _terminal_.\n */\npublic fun > Sequence.max(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > Sequence.maxBy(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxElem = iterator.next()\n if (!iterator.hasNext()) return maxElem\n var maxValue = selector(maxElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n } while (iterator.hasNext())\n return maxElem\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.maxWith(comparator: Comparator): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.1\")\npublic fun Sequence.min(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n if (min.isNaN()) return min\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n *\n * The operation is _terminal_.\n */\n@SinceKotlin(\"1.1\")\npublic fun Sequence.min(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n if (min.isNaN()) return min\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (e.isNaN()) return e\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n *\n * The operation is _terminal_.\n */\npublic fun > Sequence.min(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > Sequence.minBy(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minElem = iterator.next()\n if (!iterator.hasNext()) return minElem\n var minValue = selector(minElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n } while (iterator.hasNext())\n return minElem\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.minWith(comparator: Comparator): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the sequence has no elements.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun Sequence.none(): Boolean {\n return !iterator().hasNext()\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun Sequence.none(predicate: (T) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns a sequence which performs the given [action] on each element of the original sequence as they pass through it.\n *\n * The operation is _intermediate_ and _stateless_.\n */\n@SinceKotlin(\"1.1\")\npublic fun Sequence.onEach(action: (T) -> Unit): Sequence {\n return map {\n action(it)\n it\n }\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun Sequence.reduce(operation: (acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty sequence can't be reduced.\")\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original sequence.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun Sequence.reduceIndexed(operation: (index: Int, acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty sequence can't be reduced.\")\n var index = 1\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(checkIndexOverflow(index++), accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the sequence is empty.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun Sequence.reduceOrNull(operation: (acc: S, T) -> S): S? {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return null\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Returns a sequence containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting sequence.\n * The [initial] value should also be immutable (or should not be mutated)\n * as it may be passed to [operation] function later because of sequence's lazy nature.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun Sequence.scan(initial: R, operation: (acc: R, T) -> R): Sequence {\n return sequence {\n yield(initial)\n var accumulator = initial\n for (element in this@scan) {\n accumulator = operation(accumulator, element)\n yield(accumulator)\n }\n }\n}\n\n/**\n * Returns a sequence containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original sequence and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting sequence.\n * The [initial] value should also be immutable (or should not be mutated)\n * as it may be passed to [operation] function later because of sequence's lazy nature.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun Sequence.scanIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): Sequence {\n return sequence {\n yield(initial)\n var index = 0\n var accumulator = initial\n for (element in this@scanIndexed) {\n accumulator = operation(checkIndexOverflow(index++), accumulator, element)\n yield(accumulator)\n }\n }\n}\n\n/**\n * Returns a sequence containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this sequence.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting sequence.\n * \n * @param [operation] function that takes current accumulator value and the element, and calculates the next accumulator value.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun Sequence.scanReduce(operation: (acc: S, T) -> S): Sequence {\n return sequence {\n val iterator = iterator()\n if (iterator.hasNext()) {\n var accumulator: S = iterator.next()\n yield(accumulator)\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n yield(accumulator)\n }\n }\n }\n}\n\n/**\n * Returns a sequence containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original sequence and current accumulator value that starts with the first element of this sequence.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting sequence.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun Sequence.scanReduceIndexed(operation: (index: Int, acc: S, T) -> S): Sequence {\n return sequence {\n val iterator = iterator()\n if (iterator.hasNext()) {\n var accumulator: S = iterator.next()\n yield(accumulator)\n var index = 1\n while (iterator.hasNext()) {\n accumulator = operation(checkIndexOverflow(index++), accumulator, iterator.next())\n yield(accumulator)\n }\n }\n }\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the sequence.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.sumBy(selector: (T) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the sequence.\n *\n * The operation is _terminal_.\n */\npublic inline fun Sequence.sumByDouble(selector: (T) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic fun Sequence.requireNoNulls(): Sequence {\n return map { it ?: throw IllegalArgumentException(\"null element found in $this.\") }\n}\n\n/**\n * Splits this sequence into a sequence of lists each not exceeding the given [size].\n * \n * The last list in the resulting sequence may have less elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this sequence.\n *\n * The operation is _intermediate_ and _stateful_.\n * \n * @sample samples.collections.Collections.Transformations.chunked\n */\n@SinceKotlin(\"1.2\")\npublic fun Sequence.chunked(size: Int): Sequence> {\n return windowed(size, size, partialWindows = true)\n}\n\n/**\n * Splits this sequence into several lists each not exceeding the given [size]\n * and applies the given [transform] function to an each.\n * \n * @return sequence of results of the [transform] applied to an each list.\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * The last list may have less elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this sequence.\n *\n * The operation is _intermediate_ and _stateful_.\n * \n * @sample samples.text.Strings.chunkedTransform\n */\n@SinceKotlin(\"1.2\")\npublic fun Sequence.chunked(size: Int, transform: (List) -> R): Sequence {\n return windowed(size, size, partialWindows = true, transform = transform)\n}\n\n/**\n * Returns a sequence containing all elements of the original sequence without the first occurrence of the given [element].\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic operator fun Sequence.minus(element: T): Sequence {\n return object: Sequence {\n override fun iterator(): Iterator {\n var removed = false\n return this@minus.filter { if (!removed && it == element) { removed = true; false } else true }.iterator()\n }\n }\n}\n\n/**\n * Returns a sequence containing all elements of original sequence except the elements contained in the given [elements] array.\n * \n * Note that the source sequence and the array being subtracted are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n * \n * The [elements] array may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic operator fun Sequence.minus(elements: Array): Sequence {\n if (elements.isEmpty()) return this\n return object: Sequence {\n override fun iterator(): Iterator {\n val other = elements.toHashSet()\n return this@minus.filterNot { it in other }.iterator()\n }\n }\n}\n\n/**\n * Returns a sequence containing all elements of original sequence except the elements contained in the given [elements] collection.\n * \n * Note that the source sequence and the collection being subtracted are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n * \n * The [elements] collection may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n *\n * The operation is _intermediate_ and _stateful_.\n */\npublic operator fun Sequence.minus(elements: Iterable): Sequence {\n return object: Sequence {\n override fun iterator(): Iterator {\n val other = elements.convertToSetForSetOperation()\n if (other.isEmpty())\n return this@minus.iterator()\n else\n return this@minus.filterNot { it in other }.iterator()\n }\n }\n}\n\n/**\n * Returns a sequence containing all elements of original sequence except the elements contained in the given [elements] sequence.\n * \n * Note that the source sequence and the sequence being subtracted are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n * \n * The operation is _intermediate_ for this sequence and _terminal_ and _stateful_ for the [elements] sequence.\n * \n * The [elements] sequence may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Sequence.minus(elements: Sequence): Sequence {\n return object: Sequence {\n override fun iterator(): Iterator {\n val other = elements.toHashSet()\n if (other.isEmpty())\n return this@minus.iterator()\n else\n return this@minus.filterNot { it in other }.iterator()\n }\n }\n}\n\n/**\n * Returns a sequence containing all elements of the original sequence without the first occurrence of the given [element].\n *\n * The operation is _intermediate_ and _stateless_.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Sequence.minusElement(element: T): Sequence {\n return minus(element)\n}\n\n/**\n * Splits the original sequence into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Sequences.Transformations.partition\n */\npublic inline fun Sequence.partition(predicate: (T) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Returns a sequence containing all elements of the original sequence and then the given [element].\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic operator fun Sequence.plus(element: T): Sequence {\n return sequenceOf(this, sequenceOf(element)).flatten()\n}\n\n/**\n * Returns a sequence containing all elements of original sequence and then all elements of the given [elements] array.\n * \n * Note that the source sequence and the array being added are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic operator fun Sequence.plus(elements: Array): Sequence {\n return this.plus(elements.asList())\n}\n\n/**\n * Returns a sequence containing all elements of original sequence and then all elements of the given [elements] collection.\n * \n * Note that the source sequence and the collection being added are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic operator fun Sequence.plus(elements: Iterable): Sequence {\n return sequenceOf(this, elements.asSequence()).flatten()\n}\n\n/**\n * Returns a sequence containing all elements of original sequence and then all elements of the given [elements] sequence.\n * \n * Note that the source sequence and the sequence being added are iterated only when an `iterator` is requested from\n * the resulting sequence. Changing any of them between successive calls to `iterator` may affect the result.\n *\n * The operation is _intermediate_ and _stateless_.\n */\npublic operator fun Sequence.plus(elements: Sequence): Sequence {\n return sequenceOf(this, elements).flatten()\n}\n\n/**\n * Returns a sequence containing all elements of the original sequence and then the given [element].\n *\n * The operation is _intermediate_ and _stateless_.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Sequence.plusElement(element: T): Sequence {\n return plus(element)\n}\n\n/**\n * Returns a sequence of snapshots of the window of the given [size]\n * sliding along this sequence with the given [step], where each\n * snapshot is a list.\n * \n * Several last lists may have less elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this sequence.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.takeWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun Sequence.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false): Sequence> {\n return windowedSequence(size, step, partialWindows, reuseBuffer = false)\n}\n\n/**\n * Returns a sequence of results of applying the given [transform] function to\n * an each list representing a view over the window of the given [size]\n * sliding along this sequence with the given [step].\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * Several last lists may have less elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this sequence.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.averageWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun Sequence.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false, transform: (List) -> R): Sequence {\n return windowedSequence(size, step, partialWindows, reuseBuffer = true).map(transform)\n}\n\n/**\n * Returns a sequence of values built from the elements of `this` sequence and the [other] sequence with the same index.\n * The resulting sequence ends as soon as the shortest input sequence ends.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Sequences.Transformations.zip\n */\npublic infix fun Sequence.zip(other: Sequence): Sequence> {\n return MergingSequence(this, other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a sequence of values built from the elements of `this` sequence and the [other] sequence with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The resulting sequence ends as soon as the shortest input sequence ends.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Sequences.Transformations.zipWithTransform\n */\npublic fun Sequence.zip(other: Sequence, transform: (a: T, b: R) -> V): Sequence {\n return MergingSequence(this, other, transform)\n}\n\n/**\n * Returns a sequence of pairs of each two adjacent elements in this sequence.\n * \n * The returned sequence is empty if this sequence contains less than two elements.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNext\n */\n@SinceKotlin(\"1.2\")\npublic fun Sequence.zipWithNext(): Sequence> {\n return zipWithNext { a, b -> a to b }\n}\n\n/**\n * Returns a sequence containing the results of applying the given [transform] function\n * to an each pair of two adjacent elements in this sequence.\n * \n * The returned sequence is empty if this sequence contains less than two elements.\n *\n * The operation is _intermediate_ and _stateless_.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNextToFindDeltas\n */\n@SinceKotlin(\"1.2\")\npublic fun Sequence.zipWithNext(transform: (a: T, b: T) -> R): Sequence {\n return sequence result@ {\n val iterator = iterator()\n if (!iterator.hasNext()) return@result\n var current = iterator.next()\n while (iterator.hasNext()) {\n val next = iterator.next()\n yield(transform(current, next))\n current = next\n }\n }\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun Sequence.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n buffer.appendElement(element, transform)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n *\n * The operation is _terminal_.\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun Sequence.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original sequence returning its elements when being iterated.\n */\npublic fun Sequence.asIterable(): Iterable {\n return Iterable { this.iterator() }\n}\n\n/**\n * Returns this sequence as a [Sequence].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Sequence.asSequence(): Sequence {\n return this\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfByte\")\npublic fun Sequence.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfShort\")\npublic fun Sequence.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfInt\")\npublic fun Sequence.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfLong\")\npublic fun Sequence.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfFloat\")\npublic fun Sequence.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"averageOfDouble\")\npublic fun Sequence.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfByte\")\npublic fun Sequence.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfShort\")\npublic fun Sequence.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfInt\")\npublic fun Sequence.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfLong\")\npublic fun Sequence.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfFloat\")\npublic fun Sequence.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfDouble\")\npublic fun Sequence.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"SetsKt\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns a set containing all elements of the original set except the given [element].\n * \n * The returned set preserves the element iteration order of the original set.\n */\npublic operator fun Set.minus(element: T): Set {\n val result = LinkedHashSet(mapCapacity(size))\n var removed = false\n return this.filterTo(result) { if (!removed && it == element) { removed = true; false } else true }\n}\n\n/**\n * Returns a set containing all elements of the original set except the elements contained in the given [elements] array.\n * \n * The returned set preserves the element iteration order of the original set.\n * \n * The [elements] array may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Set.minus(elements: Array): Set {\n val result = LinkedHashSet(this)\n result.removeAll(elements)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set except the elements contained in the given [elements] collection.\n * \n * The returned set preserves the element iteration order of the original set.\n * \n * The [elements] collection may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Set.minus(elements: Iterable): Set {\n val other = elements.convertToSetForSetOperationWith(this)\n if (other.isEmpty())\n return this.toSet()\n if (other is Set)\n return this.filterNotTo(LinkedHashSet()) { it in other }\n val result = LinkedHashSet(this)\n result.removeAll(other)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set except the elements contained in the given [elements] sequence.\n * \n * The returned set preserves the element iteration order of the original set.\n * \n * The [elements] sequence may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Set.minus(elements: Sequence): Set {\n val result = LinkedHashSet(this)\n result.removeAll(elements)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set except the given [element].\n * \n * The returned set preserves the element iteration order of the original set.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Set.minusElement(element: T): Set {\n return minus(element)\n}\n\n/**\n * Returns a set containing all elements of the original set and then the given [element] if it isn't already in this set.\n * \n * The returned set preserves the element iteration order of the original set.\n */\npublic operator fun Set.plus(element: T): Set {\n val result = LinkedHashSet(mapCapacity(size + 1))\n result.addAll(this)\n result.add(element)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set and the given [elements] array,\n * which aren't already in this set.\n * \n * The returned set preserves the element iteration order of the original set.\n */\npublic operator fun Set.plus(elements: Array): Set {\n val result = LinkedHashSet(mapCapacity(this.size + elements.size))\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set and the given [elements] collection,\n * which aren't already in this set.\n * The returned set preserves the element iteration order of the original set.\n */\npublic operator fun Set.plus(elements: Iterable): Set {\n val result = LinkedHashSet(mapCapacity(elements.collectionSizeOrNull()?.let { this.size + it } ?: this.size * 2))\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set and the given [elements] sequence,\n * which aren't already in this set.\n * \n * The returned set preserves the element iteration order of the original set.\n */\npublic operator fun Set.plus(elements: Sequence): Set {\n val result = LinkedHashSet(mapCapacity(this.size * 2))\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set and then the given [element] if it isn't already in this set.\n * \n * The returned set preserves the element iteration order of the original set.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Set.plusElement(element: T): Set {\n return plus(element)\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n\npackage kotlin.text\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\n\n/**\n * Returns a character at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this char sequence.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun CharSequence.elementAt(index: Int): Char\n\n/**\n * Returns a character at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this char sequence.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.elementAtOrElse(index: Int, defaultValue: (Int) -> Char): Char {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns a character at the given [index] or `null` if the [index] is out of bounds of this char sequence.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.elementAtOrNull(index: Int): Char? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns the first character matching the given [predicate], or `null` if no such character was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.find(predicate: (Char) -> Boolean): Char? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last character matching the given [predicate], or `null` if no such character was found.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.findLast(predicate: (Char) -> Boolean): Char? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first character.\n * @throws [NoSuchElementException] if the char sequence is empty.\n */\npublic fun CharSequence.first(): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Char sequence is empty.\")\n return this[0]\n}\n\n/**\n * Returns the first character matching the given [predicate].\n * @throws [NoSuchElementException] if no such character is found.\n */\npublic inline fun CharSequence.first(predicate: (Char) -> Boolean): Char {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Char sequence contains no character matching the predicate.\")\n}\n\n/**\n * Returns the first character, or `null` if the char sequence is empty.\n */\npublic fun CharSequence.firstOrNull(): Char? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first character matching the given [predicate], or `null` if character was not found.\n */\npublic inline fun CharSequence.firstOrNull(predicate: (Char) -> Boolean): Char? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns a character at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this char sequence.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.getOrElse(index: Int, defaultValue: (Int) -> Char): Char {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns a character at the given [index] or `null` if the [index] is out of bounds of this char sequence.\n */\npublic fun CharSequence.getOrNull(index: Int): Char? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns index of the first character matching the given [predicate], or -1 if the char sequence does not contain such character.\n */\npublic inline fun CharSequence.indexOfFirst(predicate: (Char) -> Boolean): Int {\n for (index in indices) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns index of the last character matching the given [predicate], or -1 if the char sequence does not contain such character.\n */\npublic inline fun CharSequence.indexOfLast(predicate: (Char) -> Boolean): Int {\n for (index in indices.reversed()) {\n if (predicate(this[index])) {\n return index\n }\n }\n return -1\n}\n\n/**\n * Returns the last character.\n * @throws [NoSuchElementException] if the char sequence is empty.\n */\npublic fun CharSequence.last(): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Char sequence is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last character matching the given [predicate].\n * @throws [NoSuchElementException] if no such character is found.\n */\npublic inline fun CharSequence.last(predicate: (Char) -> Boolean): Char {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Char sequence contains no character matching the predicate.\")\n}\n\n/**\n * Returns the last character, or `null` if the char sequence is empty.\n */\npublic fun CharSequence.lastOrNull(): Char? {\n return if (isEmpty()) null else this[length - 1]\n}\n\n/**\n * Returns the last character matching the given [predicate], or `null` if no such character was found.\n */\npublic inline fun CharSequence.lastOrNull(predicate: (Char) -> Boolean): Char? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns a random character from this char sequence.\n * \n * @throws NoSuchElementException if this char sequence is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.random(): Char {\n return random(Random)\n}\n\n/**\n * Returns a random character from this char sequence using the specified source of randomness.\n * \n * @throws NoSuchElementException if this char sequence is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun CharSequence.random(random: Random): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Char sequence is empty.\")\n return get(random.nextInt(length))\n}\n\n/**\n * Returns a random character from this char sequence, or `null` if this char sequence is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.randomOrNull(): Char? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random character from this char sequence using the specified source of randomness, or `null` if this char sequence is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun CharSequence.randomOrNull(random: Random): Char? {\n if (isEmpty())\n return null\n return get(random.nextInt(length))\n}\n\n/**\n * Returns the single character, or throws an exception if the char sequence is empty or has more than one character.\n */\npublic fun CharSequence.single(): Char {\n return when (length) {\n 0 -> throw NoSuchElementException(\"Char sequence is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Char sequence has more than one element.\")\n }\n}\n\n/**\n * Returns the single character matching the given [predicate], or throws exception if there is no or more than one matching character.\n */\npublic inline fun CharSequence.single(predicate: (Char) -> Boolean): Char {\n var single: Char? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Char sequence contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Char sequence contains no character matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Char\n}\n\n/**\n * Returns single character, or `null` if the char sequence is empty or has more than one character.\n */\npublic fun CharSequence.singleOrNull(): Char? {\n return if (length == 1) this[0] else null\n}\n\n/**\n * Returns the single character matching the given [predicate], or `null` if character was not found or more than one character was found.\n */\npublic inline fun CharSequence.singleOrNull(predicate: (Char) -> Boolean): Char? {\n var single: Char? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a subsequence of this char sequence with the first [n] characters removed.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.drop\n */\npublic fun CharSequence.drop(n: Int): CharSequence {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return subSequence(n.coerceAtMost(length), length)\n}\n\n/**\n * Returns a string with the first [n] characters removed.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.drop\n */\npublic fun String.drop(n: Int): String {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return substring(n.coerceAtMost(length))\n}\n\n/**\n * Returns a subsequence of this char sequence with the last [n] characters removed.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.drop\n */\npublic fun CharSequence.dropLast(n: Int): CharSequence {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return take((length - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a string with the last [n] characters removed.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.drop\n */\npublic fun String.dropLast(n: Int): String {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return take((length - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a subsequence of this char sequence containing all characters except last characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.drop\n */\npublic inline fun CharSequence.dropLastWhile(predicate: (Char) -> Boolean): CharSequence {\n for (index in lastIndex downTo 0)\n if (!predicate(this[index]))\n return subSequence(0, index + 1)\n return \"\"\n}\n\n/**\n * Returns a string containing all characters except last characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.drop\n */\npublic inline fun String.dropLastWhile(predicate: (Char) -> Boolean): String {\n for (index in lastIndex downTo 0)\n if (!predicate(this[index]))\n return substring(0, index + 1)\n return \"\"\n}\n\n/**\n * Returns a subsequence of this char sequence containing all characters except first characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.drop\n */\npublic inline fun CharSequence.dropWhile(predicate: (Char) -> Boolean): CharSequence {\n for (index in this.indices)\n if (!predicate(this[index]))\n return subSequence(index, length)\n return \"\"\n}\n\n/**\n * Returns a string containing all characters except first characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.drop\n */\npublic inline fun String.dropWhile(predicate: (Char) -> Boolean): String {\n for (index in this.indices)\n if (!predicate(this[index]))\n return substring(index)\n return \"\"\n}\n\n/**\n * Returns a char sequence containing only those characters from the original char sequence that match the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun CharSequence.filter(predicate: (Char) -> Boolean): CharSequence {\n return filterTo(StringBuilder(), predicate)\n}\n\n/**\n * Returns a string containing only those characters from the original string that match the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun String.filter(predicate: (Char) -> Boolean): String {\n return filterTo(StringBuilder(), predicate).toString()\n}\n\n/**\n * Returns a char sequence containing only those characters from the original char sequence that match the given [predicate].\n * @param [predicate] function that takes the index of a character and the character itself\n * and returns the result of predicate evaluation on the character.\n */\npublic inline fun CharSequence.filterIndexed(predicate: (index: Int, Char) -> Boolean): CharSequence {\n return filterIndexedTo(StringBuilder(), predicate)\n}\n\n/**\n * Returns a string containing only those characters from the original string that match the given [predicate].\n * @param [predicate] function that takes the index of a character and the character itself\n * and returns the result of predicate evaluation on the character.\n */\npublic inline fun String.filterIndexed(predicate: (index: Int, Char) -> Boolean): String {\n return filterIndexedTo(StringBuilder(), predicate).toString()\n}\n\n/**\n * Appends all characters matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of a character and the character itself\n * and returns the result of predicate evaluation on the character.\n */\npublic inline fun CharSequence.filterIndexedTo(destination: C, predicate: (index: Int, Char) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.append(element)\n }\n return destination\n}\n\n/**\n * Returns a char sequence containing only those characters from the original char sequence that do not match the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun CharSequence.filterNot(predicate: (Char) -> Boolean): CharSequence {\n return filterNotTo(StringBuilder(), predicate)\n}\n\n/**\n * Returns a string containing only those characters from the original string that do not match the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun String.filterNot(predicate: (Char) -> Boolean): String {\n return filterNotTo(StringBuilder(), predicate).toString()\n}\n\n/**\n * Appends all characters not matching the given [predicate] to the given [destination].\n */\npublic inline fun CharSequence.filterNotTo(destination: C, predicate: (Char) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.append(element)\n return destination\n}\n\n/**\n * Appends all characters matching the given [predicate] to the given [destination].\n */\npublic inline fun CharSequence.filterTo(destination: C, predicate: (Char) -> Boolean): C {\n for (index in 0 until length) {\n val element = get(index)\n if (predicate(element)) destination.append(element)\n }\n return destination\n}\n\n/**\n * Returns a char sequence containing characters of the original char sequence at the specified range of [indices].\n */\npublic fun CharSequence.slice(indices: IntRange): CharSequence {\n if (indices.isEmpty()) return \"\"\n return subSequence(indices)\n}\n\n/**\n * Returns a string containing characters of the original string at the specified range of [indices].\n */\npublic fun String.slice(indices: IntRange): String {\n if (indices.isEmpty()) return \"\"\n return substring(indices)\n}\n\n/**\n * Returns a char sequence containing characters of the original char sequence at specified [indices].\n */\npublic fun CharSequence.slice(indices: Iterable): CharSequence {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return \"\"\n val result = StringBuilder(size)\n for (i in indices) {\n result.append(get(i))\n }\n return result\n}\n\n/**\n * Returns a string containing characters of the original string at specified [indices].\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.slice(indices: Iterable): String {\n return (this as CharSequence).slice(indices).toString()\n}\n\n/**\n * Returns a subsequence of this char sequence containing the first [n] characters from this char sequence, or the entire char sequence if this char sequence is shorter.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.take\n */\npublic fun CharSequence.take(n: Int): CharSequence {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return subSequence(0, n.coerceAtMost(length))\n}\n\n/**\n * Returns a string containing the first [n] characters from this string, or the entire string if this string is shorter.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.take\n */\npublic fun String.take(n: Int): String {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return substring(0, n.coerceAtMost(length))\n}\n\n/**\n * Returns a subsequence of this char sequence containing the last [n] characters from this char sequence, or the entire char sequence if this char sequence is shorter.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.take\n */\npublic fun CharSequence.takeLast(n: Int): CharSequence {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n val length = length\n return subSequence(length - n.coerceAtMost(length), length)\n}\n\n/**\n * Returns a string containing the last [n] characters from this string, or the entire string if this string is shorter.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.take\n */\npublic fun String.takeLast(n: Int): String {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n val length = length\n return substring(length - n.coerceAtMost(length))\n}\n\n/**\n * Returns a subsequence of this char sequence containing last characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.take\n */\npublic inline fun CharSequence.takeLastWhile(predicate: (Char) -> Boolean): CharSequence {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return subSequence(index + 1, length)\n }\n }\n return subSequence(0, length)\n}\n\n/**\n * Returns a string containing last characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.take\n */\npublic inline fun String.takeLastWhile(predicate: (Char) -> Boolean): String {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return substring(index + 1)\n }\n }\n return this\n}\n\n/**\n * Returns a subsequence of this char sequence containing the first characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.take\n */\npublic inline fun CharSequence.takeWhile(predicate: (Char) -> Boolean): CharSequence {\n for (index in 0 until length)\n if (!predicate(get(index))) {\n return subSequence(0, index)\n }\n return subSequence(0, length)\n}\n\n/**\n * Returns a string containing the first characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.take\n */\npublic inline fun String.takeWhile(predicate: (Char) -> Boolean): String {\n for (index in 0 until length)\n if (!predicate(get(index))) {\n return substring(0, index)\n }\n return this\n}\n\n/**\n * Returns a char sequence with characters in reversed order.\n */\npublic fun CharSequence.reversed(): CharSequence {\n return StringBuilder(this).reverse()\n}\n\n/**\n * Returns a string with characters in reversed order.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.reversed(): String {\n return (this as CharSequence).reversed().toString()\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to characters of the given char sequence.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original char sequence.\n * \n * @sample samples.text.Strings.associate\n */\npublic inline fun CharSequence.associate(transform: (Char) -> Pair): Map {\n val capacity = mapCapacity(length).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing the characters from the given char sequence indexed by the key\n * returned from [keySelector] function applied to each character.\n * \n * If any two characters would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original char sequence.\n * \n * @sample samples.text.Strings.associateBy\n */\npublic inline fun CharSequence.associateBy(keySelector: (Char) -> K): Map {\n val capacity = mapCapacity(length).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to characters of the given char sequence.\n * \n * If any two characters would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original char sequence.\n * \n * @sample samples.text.Strings.associateByWithValueTransform\n */\npublic inline fun CharSequence.associateBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map {\n val capacity = mapCapacity(length).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each character of the given char sequence\n * and value is the character itself.\n * \n * If any two characters would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.text.Strings.associateByTo\n */\npublic inline fun > CharSequence.associateByTo(destination: M, keySelector: (Char) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to characters of the given char sequence.\n * \n * If any two characters would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.text.Strings.associateByToWithValueTransform\n */\npublic inline fun > CharSequence.associateByTo(destination: M, keySelector: (Char) -> K, valueTransform: (Char) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each character of the given char sequence.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.text.Strings.associateTo\n */\npublic inline fun > CharSequence.associateTo(destination: M, transform: (Char) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Returns a [Map] where keys are characters from the given char sequence and values are\n * produced by the [valueSelector] function applied to each character.\n * \n * If any two characters are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original char sequence.\n * \n * @sample samples.text.Strings.associateWith\n */\n@SinceKotlin(\"1.3\")\npublic inline fun CharSequence.associateWith(valueSelector: (Char) -> V): Map {\n val result = LinkedHashMap(mapCapacity(length).coerceAtLeast(16))\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each character of the given char sequence,\n * where key is the character itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two characters are equal, the last one overwrites the former value in the map.\n * \n * @sample samples.text.Strings.associateWithTo\n */\n@SinceKotlin(\"1.3\")\npublic inline fun > CharSequence.associateWithTo(destination: M, valueSelector: (Char) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Appends all characters to the given [destination] collection.\n */\npublic fun > CharSequence.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Returns a [HashSet] of all characters.\n */\npublic fun CharSequence.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(length)))\n}\n\n/**\n * Returns a [List] containing all characters.\n */\npublic fun CharSequence.toList(): List {\n return when (length) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a [MutableList] filled with all characters of this char sequence.\n */\npublic fun CharSequence.toMutableList(): MutableList {\n return toCollection(ArrayList(length))\n}\n\n/**\n * Returns a [Set] of all characters.\n * \n * The returned set preserves the element iteration order of the original char sequence.\n */\npublic fun CharSequence.toSet(): Set {\n return when (length) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(length)))\n }\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each character of original char sequence.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun CharSequence.flatMap(transform: (Char) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each character of original char sequence, to the given [destination].\n */\npublic inline fun > CharSequence.flatMapTo(destination: C, transform: (Char) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups characters of the original char sequence by the key returned by the given [keySelector] function\n * applied to each character and returns a map where each group key is associated with a list of corresponding characters.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original char sequence.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun CharSequence.groupBy(keySelector: (Char) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each character of the original char sequence\n * by the key returned by the given [keySelector] function applied to the character\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original char sequence.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun CharSequence.groupBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups characters of the original char sequence by the key returned by the given [keySelector] function\n * applied to each character and puts to the [destination] map each group key associated with a list of corresponding characters.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> CharSequence.groupByTo(destination: M, keySelector: (Char) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each character of the original char sequence\n * by the key returned by the given [keySelector] function applied to the character\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> CharSequence.groupByTo(destination: M, keySelector: (Char) -> K, valueTransform: (Char) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Creates a [Grouping] source from a char sequence to be used later with one of group-and-fold operations\n * using the specified [keySelector] function to extract a key from each character.\n * \n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic inline fun CharSequence.groupingBy(crossinline keySelector: (Char) -> K): Grouping {\n return object : Grouping {\n override fun sourceIterator(): Iterator = this@groupingBy.iterator()\n override fun keyOf(element: Char): K = keySelector(element)\n }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each character in the original char sequence.\n * \n * @sample samples.text.Strings.map\n */\npublic inline fun CharSequence.map(transform: (Char) -> R): List {\n return mapTo(ArrayList(length), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each character and its index in the original char sequence.\n * @param [transform] function that takes the index of a character and the character itself\n * and returns the result of the transform applied to the character.\n */\npublic inline fun CharSequence.mapIndexed(transform: (index: Int, Char) -> R): List {\n return mapIndexedTo(ArrayList(length), transform)\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each character and its index in the original char sequence.\n * @param [transform] function that takes the index of a character and the character itself\n * and returns the result of the transform applied to the character.\n */\npublic inline fun CharSequence.mapIndexedNotNull(transform: (index: Int, Char) -> R?): List {\n return mapIndexedNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each character and its index in the original char sequence\n * and appends only the non-null results to the given [destination].\n * @param [transform] function that takes the index of a character and the character itself\n * and returns the result of the transform applied to the character.\n */\npublic inline fun > CharSequence.mapIndexedNotNullTo(destination: C, transform: (index: Int, Char) -> R?): C {\n forEachIndexed { index, element -> transform(index, element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each character and its index in the original char sequence\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of a character and the character itself\n * and returns the result of the transform applied to the character.\n */\npublic inline fun > CharSequence.mapIndexedTo(destination: C, transform: (index: Int, Char) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each character in the original char sequence.\n */\npublic inline fun CharSequence.mapNotNull(transform: (Char) -> R?): List {\n return mapNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each character in the original char sequence\n * and appends only the non-null results to the given [destination].\n */\npublic inline fun > CharSequence.mapNotNullTo(destination: C, transform: (Char) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each character of the original char sequence\n * and appends the results to the given [destination].\n */\npublic inline fun > CharSequence.mapTo(destination: C, transform: (Char) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each character of the original char sequence\n * into an [IndexedValue] containing the index of that character and the character itself.\n */\npublic fun CharSequence.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns `true` if all characters match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun CharSequence.all(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if char sequence has at least one character.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun CharSequence.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if at least one character matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun CharSequence.any(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the length of this char sequence.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.count(): Int {\n return length\n}\n\n/**\n * Returns the number of characters matching the given [predicate].\n */\npublic inline fun CharSequence.count(predicate: (Char) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each character.\n */\npublic inline fun CharSequence.fold(initial: R, operation: (acc: R, Char) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each character with its index in the original char sequence.\n * @param [operation] function that takes the index of a character, current accumulator value\n * and the character itself, and calculates the next accumulator value.\n */\npublic inline fun CharSequence.foldIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each character and current accumulator value.\n */\npublic inline fun CharSequence.foldRight(initial: R, operation: (Char, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each character with its index in the original char sequence and current accumulator value.\n * @param [operation] function that takes the index of a character, the character itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun CharSequence.foldRightIndexed(initial: R, operation: (index: Int, Char, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Performs the given [action] on each character.\n */\npublic inline fun CharSequence.forEach(action: (Char) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each character, providing sequential index with the character.\n * @param [action] function that takes the index of a character and the character itself\n * and performs the desired action on the character.\n */\npublic inline fun CharSequence.forEachIndexed(action: (index: Int, Char) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Returns the largest character or `null` if there are no characters.\n */\npublic fun CharSequence.max(): Char? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the first character yielding the largest value of the given function or `null` if there are no characters.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\npublic inline fun > CharSequence.maxBy(selector: (Char) -> R): Char? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first character having the largest value according to the provided [comparator] or `null` if there are no characters.\n */\npublic fun CharSequence.maxWith(comparator: Comparator): Char? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the smallest character or `null` if there are no characters.\n */\npublic fun CharSequence.min(): Char? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the first character yielding the smallest value of the given function or `null` if there are no characters.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\npublic inline fun > CharSequence.minBy(selector: (Char) -> R): Char? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first character having the smallest value according to the provided [comparator] or `null` if there are no characters.\n */\npublic fun CharSequence.minWith(comparator: Comparator): Char? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the char sequence has no characters.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun CharSequence.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if no characters match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun CharSequence.none(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Performs the given [action] on each character and returns the char sequence itself afterwards.\n */\n@SinceKotlin(\"1.1\")\npublic inline fun S.onEach(action: (Char) -> Unit): S {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Accumulates value starting with the first character and applying [operation] from left to right to current accumulator value and each character.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun CharSequence.reduce(operation: (acc: Char, Char) -> Char): Char {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty char sequence can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first character and applying [operation] from left to right\n * to current accumulator value and each character with its index in the original char sequence.\n * @param [operation] function that takes the index of a character, current accumulator value\n * and the character itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun CharSequence.reduceIndexed(operation: (index: Int, acc: Char, Char) -> Char): Char {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty char sequence can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first character and applying [operation] from left to right to current accumulator value and each character. Returns null if the char sequence is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun CharSequence.reduceOrNull(operation: (acc: Char, Char) -> Char): Char? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last character and applying [operation] from right to left to each character and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun CharSequence.reduceRight(operation: (Char, acc: Char) -> Char): Char {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty char sequence can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last character and applying [operation] from right to left\n * to each character with its index in the original char sequence and current accumulator value.\n * @param [operation] function that takes the index of a character, the character itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun CharSequence.reduceRightIndexed(operation: (index: Int, Char, acc: Char) -> Char): Char {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty char sequence can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last character and applying [operation] from right to left to each character and current accumulator value. Returns null if the char sequence is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun CharSequence.reduceRightOrNull(operation: (Char, acc: Char) -> Char): Char? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each character and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and a character, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun CharSequence.scan(initial: R, operation: (acc: R, Char) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(length + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each character, its index in the original char sequence and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of a character, current accumulator value\n * and the character itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun CharSequence.scanIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(length + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each character and current accumulator value that starts with the first character of this char sequence.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and a character, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun CharSequence.scanReduce(operation: (acc: Char, Char) -> Char): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(length).apply { add(accumulator) }\n for (index in 1 until length) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each character, its index in the original char sequence and current accumulator value that starts with the first character of this char sequence.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of a character, current accumulator value\n * and the character itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun CharSequence.scanReduceIndexed(operation: (index: Int, acc: Char, Char) -> Char): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(length).apply { add(accumulator) }\n for (index in 1 until length) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each character in the char sequence.\n */\npublic inline fun CharSequence.sumBy(selector: (Char) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each character in the char sequence.\n */\npublic inline fun CharSequence.sumByDouble(selector: (Char) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Splits this char sequence into a list of strings each not exceeding the given [size].\n * \n * The last string in the resulting list may have less characters than the given [size].\n * \n * @param size the number of elements to take in each string, must be positive and can be greater than the number of elements in this char sequence.\n * \n * @sample samples.text.Strings.chunked\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.chunked(size: Int): List {\n return windowed(size, size, partialWindows = true)\n}\n\n/**\n * Splits this char sequence into several char sequences each not exceeding the given [size]\n * and applies the given [transform] function to an each.\n * \n * @return list of results of the [transform] applied to an each char sequence.\n * \n * Note that the char sequence passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * The last char sequence may have less characters than the given [size].\n * \n * @param size the number of elements to take in each char sequence, must be positive and can be greater than the number of elements in this char sequence.\n * \n * @sample samples.text.Strings.chunkedTransform\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.chunked(size: Int, transform: (CharSequence) -> R): List {\n return windowed(size, size, partialWindows = true, transform = transform)\n}\n\n/**\n * Splits this char sequence into a sequence of strings each not exceeding the given [size].\n * \n * The last string in the resulting sequence may have less characters than the given [size].\n * \n * @param size the number of elements to take in each string, must be positive and can be greater than the number of elements in this char sequence.\n * \n * @sample samples.collections.Collections.Transformations.chunked\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.chunkedSequence(size: Int): Sequence {\n return chunkedSequence(size) { it.toString() }\n}\n\n/**\n * Splits this char sequence into several char sequences each not exceeding the given [size]\n * and applies the given [transform] function to an each.\n * \n * @return sequence of results of the [transform] applied to an each char sequence.\n * \n * Note that the char sequence passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * The last char sequence may have less characters than the given [size].\n * \n * @param size the number of elements to take in each char sequence, must be positive and can be greater than the number of elements in this char sequence.\n * \n * @sample samples.text.Strings.chunkedTransformToSequence\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.chunkedSequence(size: Int, transform: (CharSequence) -> R): Sequence {\n return windowedSequence(size, size, partialWindows = true, transform = transform)\n}\n\n/**\n * Splits the original char sequence into pair of char sequences,\n * where *first* char sequence contains characters for which [predicate] yielded `true`,\n * while *second* char sequence contains characters for which [predicate] yielded `false`.\n * \n * @sample samples.text.Strings.partition\n */\npublic inline fun CharSequence.partition(predicate: (Char) -> Boolean): Pair {\n val first = StringBuilder()\n val second = StringBuilder()\n for (element in this) {\n if (predicate(element)) {\n first.append(element)\n } else {\n second.append(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original string into pair of strings,\n * where *first* string contains characters for which [predicate] yielded `true`,\n * while *second* string contains characters for which [predicate] yielded `false`.\n * \n * @sample samples.text.Strings.partition\n */\npublic inline fun String.partition(predicate: (Char) -> Boolean): Pair {\n val first = StringBuilder()\n val second = StringBuilder()\n for (element in this) {\n if (predicate(element)) {\n first.append(element)\n } else {\n second.append(element)\n }\n }\n return Pair(first.toString(), second.toString())\n}\n\n/**\n * Returns a list of snapshots of the window of the given [size]\n * sliding along this char sequence with the given [step], where each\n * snapshot is a string.\n * \n * Several last strings may have less characters than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this char sequence.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.takeWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false): List {\n return windowed(size, step, partialWindows) { it.toString() }\n}\n\n/**\n * Returns a list of results of applying the given [transform] function to\n * an each char sequence representing a view over the window of the given [size]\n * sliding along this char sequence with the given [step].\n * \n * Note that the char sequence passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * Several last char sequences may have less characters than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this char sequence.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.averageWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false, transform: (CharSequence) -> R): List {\n checkWindowSizeStep(size, step)\n val thisSize = this.length\n val resultCapacity = thisSize / step + if (thisSize % step == 0) 0 else 1\n val result = ArrayList(resultCapacity)\n var index = 0\n while (index in 0 until thisSize) {\n val end = index + size\n val coercedEnd = if (end < 0 || end > thisSize) { if (partialWindows) thisSize else break } else end\n result.add(transform(subSequence(index, coercedEnd)))\n index += step\n }\n return result\n}\n\n/**\n * Returns a sequence of snapshots of the window of the given [size]\n * sliding along this char sequence with the given [step], where each\n * snapshot is a string.\n * \n * Several last strings may have less characters than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this char sequence.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.takeWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.windowedSequence(size: Int, step: Int = 1, partialWindows: Boolean = false): Sequence {\n return windowedSequence(size, step, partialWindows) { it.toString() }\n}\n\n/**\n * Returns a sequence of results of applying the given [transform] function to\n * an each char sequence representing a view over the window of the given [size]\n * sliding along this char sequence with the given [step].\n * \n * Note that the char sequence passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * Several last char sequences may have less characters than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this char sequence.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.averageWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.windowedSequence(size: Int, step: Int = 1, partialWindows: Boolean = false, transform: (CharSequence) -> R): Sequence {\n checkWindowSizeStep(size, step)\n val windows = (if (partialWindows) indices else 0 until length - size + 1) step step\n return windows.asSequence().map { index ->\n val end = index + size\n val coercedEnd = if (end < 0 || end > length) length else end\n transform(subSequence(index, coercedEnd))\n }\n}\n\n/**\n * Returns a list of pairs built from the characters of `this` and the [other] char sequences with the same index\n * The returned list has length of the shortest char sequence.\n * \n * @sample samples.text.Strings.zip\n */\npublic infix fun CharSequence.zip(other: CharSequence): List> {\n return zip(other) { c1, c2 -> c1 to c2 }\n}\n\n/**\n * Returns a list of values built from the characters of `this` and the [other] char sequences with the same index\n * using the provided [transform] function applied to each pair of characters.\n * The returned list has length of the shortest char sequence.\n * \n * @sample samples.text.Strings.zipWithTransform\n */\npublic inline fun CharSequence.zip(other: CharSequence, transform: (a: Char, b: Char) -> V): List {\n val length = minOf(this.length, other.length)\n val list = ArrayList(length)\n for (i in 0 until length) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of pairs of each two adjacent characters in this char sequence.\n * \n * The returned list is empty if this char sequence contains less than two characters.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNext\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.zipWithNext(): List> {\n return zipWithNext { a, b -> a to b }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to an each pair of two adjacent characters in this char sequence.\n * \n * The returned list is empty if this char sequence contains less than two characters.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNextToFindDeltas\n */\n@SinceKotlin(\"1.2\")\npublic inline fun CharSequence.zipWithNext(transform: (a: Char, b: Char) -> R): List {\n val size = length - 1\n if (size < 1) return emptyList()\n val result = ArrayList(size)\n for (index in 0 until size) {\n result.add(transform(this[index], this[index + 1]))\n }\n return result\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original char sequence returning its characters when being iterated.\n */\npublic fun CharSequence.asIterable(): Iterable {\n if (this is String && isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original char sequence returning its characters when being iterated.\n */\npublic fun CharSequence.asSequence(): Sequence {\n if (this is String && isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n\npackage kotlin.text\n\nimport kotlin.contracts.contract\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trim(predicate: (Char) -> Boolean): CharSequence {\n var startIndex = 0\n var endIndex = length - 1\n var startFound = false\n\n while (startIndex <= endIndex) {\n val index = if (!startFound) startIndex else endIndex\n val match = predicate(this[index])\n\n if (!startFound) {\n if (!match)\n startFound = true\n else\n startIndex += 1\n } else {\n if (!match)\n break\n else\n endIndex -= 1\n }\n }\n\n return subSequence(startIndex, endIndex + 1)\n}\n\n/**\n * Returns a string having leading and trailing characters matching the [predicate] removed.\n */\npublic inline fun String.trim(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trim(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trimStart(predicate: (Char) -> Boolean): CharSequence {\n for (index in this.indices)\n if (!predicate(this[index]))\n return subSequence(index, length)\n\n return \"\"\n}\n\n/**\n * Returns a string having leading characters matching the [predicate] removed.\n */\npublic inline fun String.trimStart(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trimStart(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having trailing characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trimEnd(predicate: (Char) -> Boolean): CharSequence {\n for (index in this.indices.reversed())\n if (!predicate(this[index]))\n return subSequence(0, index + 1)\n\n return \"\"\n}\n\n/**\n * Returns a string having trailing characters matching the [predicate] removed.\n */\npublic inline fun String.trimEnd(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trimEnd(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing characters from the [chars] array removed.\n */\npublic fun CharSequence.trim(vararg chars: Char): CharSequence = trim { it in chars }\n\n/**\n * Returns a string having leading and trailing characters from the [chars] array removed.\n */\npublic fun String.trim(vararg chars: Char): String = trim { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having leading characters from the [chars] array removed.\n */\npublic fun CharSequence.trimStart(vararg chars: Char): CharSequence = trimStart { it in chars }\n\n/**\n * Returns a string having leading characters from the [chars] array removed.\n */\npublic fun String.trimStart(vararg chars: Char): String = trimStart { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having trailing characters from the [chars] array removed.\n */\npublic fun CharSequence.trimEnd(vararg chars: Char): CharSequence = trimEnd { it in chars }\n\n/**\n * Returns a string having trailing characters from the [chars] array removed.\n */\npublic fun String.trimEnd(vararg chars: Char): String = trimEnd { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing whitespace removed.\n */\npublic fun CharSequence.trim(): CharSequence = trim(Char::isWhitespace)\n\n/**\n * Returns a string having leading and trailing whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trim(): String = (this as CharSequence).trim().toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading whitespace removed.\n */\npublic fun CharSequence.trimStart(): CharSequence = trimStart(Char::isWhitespace)\n\n/**\n * Returns a string having leading whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trimStart(): String = (this as CharSequence).trimStart().toString()\n\n/**\n * Returns a sub sequence of this char sequence having trailing whitespace removed.\n */\npublic fun CharSequence.trimEnd(): CharSequence = trimEnd(Char::isWhitespace)\n\n/**\n * Returns a string having trailing whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trimEnd(): String = (this as CharSequence).trimEnd().toString()\n\n/**\n * Returns a char sequence with content of this char sequence padded at the beginning\n * to the specified [length] with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a char sequence of length at least [length] consisting of `this` char sequence prepended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padStart\n */\npublic fun CharSequence.padStart(length: Int, padChar: Char = ' '): CharSequence {\n if (length < 0)\n throw IllegalArgumentException(\"Desired length $length is less than zero.\")\n if (length <= this.length)\n return this.subSequence(0, this.length)\n\n val sb = StringBuilder(length)\n for (i in 1..(length - this.length))\n sb.append(padChar)\n sb.append(this)\n return sb\n}\n\n/**\n * Pads the string to the specified [length] at the beginning with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a string of length at least [length] consisting of `this` string prepended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padStart\n */\npublic fun String.padStart(length: Int, padChar: Char = ' '): String =\n (this as CharSequence).padStart(length, padChar).toString()\n\n/**\n * Returns a char sequence with content of this char sequence padded at the end\n * to the specified [length] with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a char sequence of length at least [length] consisting of `this` char sequence appended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padEnd\n */\npublic fun CharSequence.padEnd(length: Int, padChar: Char = ' '): CharSequence {\n if (length < 0)\n throw IllegalArgumentException(\"Desired length $length is less than zero.\")\n if (length <= this.length)\n return this.subSequence(0, this.length)\n\n val sb = StringBuilder(length)\n sb.append(this)\n for (i in 1..(length - this.length))\n sb.append(padChar)\n return sb\n}\n\n/**\n * Pads the string to the specified [length] at the end with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a string of length at least [length] consisting of `this` string appended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padEnd\n */\npublic fun String.padEnd(length: Int, padChar: Char = ' '): String =\n (this as CharSequence).padEnd(length, padChar).toString()\n\n/**\n * Returns `true` if this nullable char sequence is either `null` or empty.\n *\n * @sample samples.text.Strings.stringIsNullOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || this.length == 0\n}\n\n/**\n * Returns `true` if this char sequence is empty (contains no characters).\n *\n * @sample samples.text.Strings.stringIsEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isEmpty(): Boolean = length == 0\n\n/**\n * Returns `true` if this char sequence is not empty.\n *\n * @sample samples.text.Strings.stringIsNotEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isNotEmpty(): Boolean = length > 0\n\n// implemented differently in JVM and JS\n//public fun String.isBlank(): Boolean = length() == 0 || all { it.isWhitespace() }\n\n\n/**\n * Returns `true` if this char sequence is not empty and contains some characters except of whitespace characters.\n *\n * @sample samples.text.Strings.stringIsNotBlank\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isNotBlank(): Boolean = !isBlank()\n\n/**\n * Returns `true` if this nullable char sequence is either `null` or empty or consists solely of whitespace characters.\n *\n * @sample samples.text.Strings.stringIsNullOrBlank\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence?.isNullOrBlank(): Boolean {\n contract {\n returns(false) implies (this@isNullOrBlank != null)\n }\n\n return this == null || this.isBlank()\n}\n\n/**\n * Iterator for characters of the given char sequence.\n */\npublic operator fun CharSequence.iterator(): CharIterator = object : CharIterator() {\n private var index = 0\n\n public override fun nextChar(): Char = get(index++)\n\n public override fun hasNext(): Boolean = index < length\n}\n\n/** Returns the string if it is not `null`, or the empty string otherwise. */\n@kotlin.internal.InlineOnly\npublic inline fun String?.orEmpty(): String = this ?: \"\"\n\n/**\n * Returns this char sequence if it's not empty\n * or the result of calling [defaultValue] function if the char sequence is empty.\n *\n * @sample samples.text.Strings.stringIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun C.ifEmpty(defaultValue: () -> R): R where C : CharSequence, C : R =\n if (isEmpty()) defaultValue() else this\n\n/**\n * Returns this char sequence if it is not empty and doesn't consist solely of whitespace characters,\n * or the result of calling [defaultValue] function otherwise.\n *\n * @sample samples.text.Strings.stringIfBlank\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun C.ifBlank(defaultValue: () -> R): R where C : CharSequence, C : R =\n if (isBlank()) defaultValue() else this\n\n/**\n * Returns the range of valid character indices for this char sequence.\n */\npublic val CharSequence.indices: IntRange\n get() = 0..length - 1\n\n/**\n * Returns the index of the last character in the char sequence or -1 if it is empty.\n */\npublic val CharSequence.lastIndex: Int\n get() = this.length - 1\n\n/**\n * Returns `true` if this CharSequence has Unicode surrogate pair at the specified [index].\n */\npublic fun CharSequence.hasSurrogatePairAt(index: Int): Boolean {\n return index in 0..length - 2\n && this[index].isHighSurrogate()\n && this[index + 1].isLowSurrogate()\n}\n\n/**\n * Returns a substring specified by the given [range] of indices.\n */\npublic fun String.substring(range: IntRange): String = substring(range.start, range.endInclusive + 1)\n\n/**\n * Returns a subsequence of this char sequence specified by the given [range] of indices.\n */\npublic fun CharSequence.subSequence(range: IntRange): CharSequence = subSequence(range.start, range.endInclusive + 1)\n\n/**\n * Returns a subsequence of this char sequence.\n *\n * This extension is chosen only for invocation with old-named parameters.\n * Replace parameter names with the same as those of [CharSequence.subSequence].\n */\n@kotlin.internal.InlineOnly\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning\n@Deprecated(\"Use parameters named startIndex and endIndex.\", ReplaceWith(\"subSequence(startIndex = start, endIndex = end)\"))\npublic inline fun String.subSequence(start: Int, end: Int): CharSequence = subSequence(start, end)\n\n/**\n * Returns a substring of chars from a range of this char sequence starting at the [startIndex] and ending right before the [endIndex].\n *\n * @param startIndex the start index (inclusive).\n * @param endIndex the end index (exclusive). If not specified, the length of the char sequence is used.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.substring(startIndex: Int, endIndex: Int = length): String = subSequence(startIndex, endIndex).toString()\n\n/**\n * Returns a substring of chars at indices from the specified [range] of this char sequence.\n */\npublic fun CharSequence.substring(range: IntRange): String = subSequence(range.start, range.endInclusive + 1).toString()\n\n/**\n * Returns a substring before the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBefore(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring before the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBefore(delimiter: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring after the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfter(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + 1, length)\n}\n\n/**\n * Returns a substring after the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfter(delimiter: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + delimiter.length, length)\n}\n\n/**\n * Returns a substring before the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBeforeLast(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring before the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBeforeLast(delimiter: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring after the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfterLast(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + 1, length)\n}\n\n/**\n * Returns a substring after the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfterLast(delimiter: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + delimiter.length, length)\n}\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given range\n * is replaced with the [replacement] char sequence.\n * @param startIndex the index of the first character to be replaced.\n * @param endIndex the index of the first character after the replacement to keep in the string.\n */\n@UseExperimental(ExperimentalStdlibApi::class)\npublic fun CharSequence.replaceRange(startIndex: Int, endIndex: Int, replacement: CharSequence): CharSequence {\n if (endIndex < startIndex)\n throw IndexOutOfBoundsException(\"End index ($endIndex) is less than start index ($startIndex).\")\n val sb = StringBuilder()\n sb.appendRange(this, 0, startIndex)\n sb.append(replacement)\n sb.appendRange(this, endIndex, length)\n return sb\n}\n\n/**\n * Replaces the part of the string at the given range with the [replacement] char sequence.\n * @param startIndex the index of the first character to be replaced.\n * @param endIndex the index of the first character after the replacement to keep in the string.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.replaceRange(startIndex: Int, endIndex: Int, replacement: CharSequence): String =\n (this as CharSequence).replaceRange(startIndex, endIndex, replacement).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given [range]\n * is replaced with the [replacement] char sequence.\n *\n * The end index of the [range] is included in the part to be replaced.\n */\npublic fun CharSequence.replaceRange(range: IntRange, replacement: CharSequence): CharSequence =\n replaceRange(range.start, range.endInclusive + 1, replacement)\n\n/**\n * Replace the part of string at the given [range] with the [replacement] string.\n *\n * The end index of the [range] is included in the part to be replaced.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.replaceRange(range: IntRange, replacement: CharSequence): String =\n (this as CharSequence).replaceRange(range, replacement).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given range is removed.\n *\n * @param startIndex the index of the first character to be removed.\n * @param endIndex the index of the first character after the removed part to keep in the string.\n *\n * [endIndex] is not included in the removed part.\n */\n@UseExperimental(ExperimentalStdlibApi::class)\npublic fun CharSequence.removeRange(startIndex: Int, endIndex: Int): CharSequence {\n if (endIndex < startIndex)\n throw IndexOutOfBoundsException(\"End index ($endIndex) is less than start index ($startIndex).\")\n\n if (endIndex == startIndex)\n return this.subSequence(0, length)\n\n val sb = StringBuilder(length - (endIndex - startIndex))\n sb.appendRange(this, 0, startIndex)\n sb.appendRange(this, endIndex, length)\n return sb\n}\n\n/**\n * Removes the part of a string at a given range.\n * @param startIndex the index of the first character to be removed.\n * @param endIndex the index of the first character after the removed part to keep in the string.\n *\n * [endIndex] is not included in the removed part.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.removeRange(startIndex: Int, endIndex: Int): String =\n (this as CharSequence).removeRange(startIndex, endIndex).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given [range] is removed.\n *\n * The end index of the [range] is included in the removed part.\n */\npublic fun CharSequence.removeRange(range: IntRange): CharSequence = removeRange(range.start, range.endInclusive + 1)\n\n/**\n * Removes the part of a string at the given [range].\n *\n * The end index of the [range] is included in the removed part.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.removeRange(range: IntRange): String =\n (this as CharSequence).removeRange(range).toString()\n\n/**\n * If this char sequence starts with the given [prefix], returns a new char sequence\n * with the prefix removed. Otherwise, returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removePrefix(prefix: CharSequence): CharSequence {\n if (startsWith(prefix)) {\n return subSequence(prefix.length, length)\n }\n return subSequence(0, length)\n}\n\n/**\n * If this string starts with the given [prefix], returns a copy of this string\n * with the prefix removed. Otherwise, returns this string.\n */\npublic fun String.removePrefix(prefix: CharSequence): String {\n if (startsWith(prefix)) {\n return substring(prefix.length)\n }\n return this\n}\n\n/**\n * If this char sequence ends with the given [suffix], returns a new char sequence\n * with the suffix removed. Otherwise, returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSuffix(suffix: CharSequence): CharSequence {\n if (endsWith(suffix)) {\n return subSequence(0, length - suffix.length)\n }\n return subSequence(0, length)\n}\n\n/**\n * If this string ends with the given [suffix], returns a copy of this string\n * with the suffix removed. Otherwise, returns this string.\n */\npublic fun String.removeSuffix(suffix: CharSequence): String {\n if (endsWith(suffix)) {\n return substring(0, length - suffix.length)\n }\n return this\n}\n\n/**\n * When this char sequence starts with the given [prefix] and ends with the given [suffix],\n * returns a new char sequence having both the given [prefix] and [suffix] removed.\n * Otherwise returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSurrounding(prefix: CharSequence, suffix: CharSequence): CharSequence {\n if ((length >= prefix.length + suffix.length) && startsWith(prefix) && endsWith(suffix)) {\n return subSequence(prefix.length, length - suffix.length)\n }\n return subSequence(0, length)\n}\n\n/**\n * Removes from a string both the given [prefix] and [suffix] if and only if\n * it starts with the [prefix] and ends with the [suffix].\n * Otherwise returns this string unchanged.\n */\npublic fun String.removeSurrounding(prefix: CharSequence, suffix: CharSequence): String {\n if ((length >= prefix.length + suffix.length) && startsWith(prefix) && endsWith(suffix)) {\n return substring(prefix.length, length - suffix.length)\n }\n return this\n}\n\n/**\n * When this char sequence starts with and ends with the given [delimiter],\n * returns a new char sequence having this [delimiter] removed both from the start and end.\n * Otherwise returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSurrounding(delimiter: CharSequence): CharSequence = removeSurrounding(delimiter, delimiter)\n\n/**\n * Removes the given [delimiter] string from both the start and the end of this string\n * if and only if it starts with and ends with the [delimiter].\n * Otherwise returns this string unchanged.\n */\npublic fun String.removeSurrounding(delimiter: CharSequence): String = removeSurrounding(delimiter, delimiter)\n\n/**\n * Replace part of string before the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBefore(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string before the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBefore(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string after the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfter(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + 1, length, replacement)\n}\n\n/**\n * Replace part of string after the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfter(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + delimiter.length, length, replacement)\n}\n\n/**\n * Replace part of string after the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfterLast(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + delimiter.length, length, replacement)\n}\n\n/**\n * Replace part of string after the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfterLast(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + 1, length, replacement)\n}\n\n/**\n * Replace part of string before the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBeforeLast(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string before the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBeforeLast(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n\n// public fun String.replace(oldChar: Char, newChar: Char, ignoreCase: Boolean): String // JVM- and JS-specific\n// public fun String.replace(oldValue: String, newValue: String, ignoreCase: Boolean): String // JVM- and JS-specific\n\n/**\n * Returns a new string obtained by replacing each substring of this char sequence that matches the given regular expression\n * with the given [replacement].\n *\n * The [replacement] can consist of any combination of literal text and $-substitutions. To treat the replacement string\n * literally escape it with the [kotlin.text.Regex.Companion.escapeReplacement] method.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replace(regex: Regex, replacement: String): String = regex.replace(this, replacement)\n\n/**\n * Returns a new string obtained by replacing each substring of this char sequence that matches the given regular expression\n * with the result of the given function [transform] that takes [MatchResult] and returns a string to be used as a\n * replacement for that match.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replace(regex: Regex, noinline transform: (MatchResult) -> CharSequence): String =\n regex.replace(this, transform)\n\n/**\n * Replaces the first occurrence of the given regular expression [regex] in this char sequence with specified [replacement] expression.\n *\n * @param replacement A replacement expression that can include substitutions. See [Regex.replaceFirst] for details.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replaceFirst(regex: Regex, replacement: String): String = regex.replaceFirst(this, replacement)\n\n\n/**\n * Returns `true` if this char sequence matches the given regular expression.\n */\n@kotlin.internal.InlineOnly\npublic inline infix fun CharSequence.matches(regex: Regex): Boolean = regex.matches(this)\n\n/**\n * Implementation of [regionMatches] for CharSequences.\n * Invoked when it's already known that arguments are not Strings, so that no additional type checks are performed.\n */\ninternal fun CharSequence.regionMatchesImpl(thisOffset: Int, other: CharSequence, otherOffset: Int, length: Int, ignoreCase: Boolean): Boolean {\n if ((otherOffset < 0) || (thisOffset < 0) || (thisOffset > this.length - length) || (otherOffset > other.length - length)) {\n return false\n }\n\n for (index in 0 until length) {\n if (!this[thisOffset + index].equals(other[otherOffset + index], ignoreCase))\n return false\n }\n return true\n}\n\n/**\n * Returns `true` if this char sequence starts with the specified character.\n */\npublic fun CharSequence.startsWith(char: Char, ignoreCase: Boolean = false): Boolean =\n this.length > 0 && this[0].equals(char, ignoreCase)\n\n/**\n * Returns `true` if this char sequence ends with the specified character.\n */\npublic fun CharSequence.endsWith(char: Char, ignoreCase: Boolean = false): Boolean =\n this.length > 0 && this[lastIndex].equals(char, ignoreCase)\n\n/**\n * Returns `true` if this char sequence starts with the specified prefix.\n */\npublic fun CharSequence.startsWith(prefix: CharSequence, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && prefix is String)\n return this.startsWith(prefix)\n else\n return regionMatchesImpl(0, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if a substring of this char sequence starting at the specified offset [startIndex] starts with the specified prefix.\n */\npublic fun CharSequence.startsWith(prefix: CharSequence, startIndex: Int, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && prefix is String)\n return this.startsWith(prefix, startIndex)\n else\n return regionMatchesImpl(startIndex, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if this char sequence ends with the specified suffix.\n */\npublic fun CharSequence.endsWith(suffix: CharSequence, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && suffix is String)\n return this.endsWith(suffix)\n else\n return regionMatchesImpl(length - suffix.length, suffix, 0, suffix.length, ignoreCase)\n}\n\n\n// common prefix and suffix\n\n/**\n * Returns the longest string `prefix` such that this char sequence and [other] char sequence both start with this prefix,\n * taking care not to split surrogate pairs.\n * If this and [other] have no common prefix, returns the empty string.\n\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @sample samples.text.Strings.commonPrefixWith\n */\npublic fun CharSequence.commonPrefixWith(other: CharSequence, ignoreCase: Boolean = false): String {\n val shortestLength = minOf(this.length, other.length)\n\n var i = 0\n while (i < shortestLength && this[i].equals(other[i], ignoreCase = ignoreCase)) {\n i++\n }\n if (this.hasSurrogatePairAt(i - 1) || other.hasSurrogatePairAt(i - 1)) {\n i--\n }\n return subSequence(0, i).toString()\n}\n\n/**\n * Returns the longest string `suffix` such that this char sequence and [other] char sequence both end with this suffix,\n * taking care not to split surrogate pairs.\n * If this and [other] have no common suffix, returns the empty string.\n\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @sample samples.text.Strings.commonSuffixWith\n */\npublic fun CharSequence.commonSuffixWith(other: CharSequence, ignoreCase: Boolean = false): String {\n val thisLength = this.length\n val otherLength = other.length\n val shortestLength = minOf(thisLength, otherLength)\n\n var i = 0\n while (i < shortestLength && this[thisLength - i - 1].equals(other[otherLength - i - 1], ignoreCase = ignoreCase)) {\n i++\n }\n if (this.hasSurrogatePairAt(thisLength - i - 1) || other.hasSurrogatePairAt(otherLength - i - 1)) {\n i--\n }\n return subSequence(thisLength - i, thisLength).toString()\n}\n\n\n// indexOfAny()\n\n/**\n * Finds the index of the first occurrence of any of the specified [chars] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the first occurrence of matched character from [chars] or -1 if none of [chars] are found.\n *\n */\npublic fun CharSequence.indexOfAny(chars: CharArray, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n if (!ignoreCase && chars.size == 1 && this is String) {\n val char = chars.single()\n return nativeIndexOf(char, startIndex)\n }\n\n for (index in startIndex.coerceAtLeast(0)..lastIndex) {\n val charAtIndex = get(index)\n if (chars.any { it.equals(charAtIndex, ignoreCase) })\n return index\n }\n return -1\n}\n\n/**\n * Finds the index of the last occurrence of any of the specified [chars] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the last occurrence of matched character from [chars] or -1 if none of [chars] are found.\n *\n */\npublic fun CharSequence.lastIndexOfAny(chars: CharArray, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n if (!ignoreCase && chars.size == 1 && this is String) {\n val char = chars.single()\n return nativeLastIndexOf(char, startIndex)\n }\n\n\n for (index in startIndex.coerceAtMost(lastIndex) downTo 0) {\n val charAtIndex = get(index)\n if (chars.any { it.equals(charAtIndex, ignoreCase) })\n return index\n }\n\n return -1\n}\n\n\nprivate fun CharSequence.indexOf(other: CharSequence, startIndex: Int, endIndex: Int, ignoreCase: Boolean, last: Boolean = false): Int {\n val indices = if (!last)\n startIndex.coerceAtLeast(0)..endIndex.coerceAtMost(length)\n else\n startIndex.coerceAtMost(lastIndex) downTo endIndex.coerceAtLeast(0)\n\n if (this is String && other is String) { // smart cast\n for (index in indices) {\n if (other.regionMatches(0, this, index, other.length, ignoreCase))\n return index\n }\n } else {\n for (index in indices) {\n if (other.regionMatchesImpl(0, this, index, other.length, ignoreCase))\n return index\n }\n }\n return -1\n}\n\nprivate fun CharSequence.findAnyOf(strings: Collection, startIndex: Int, ignoreCase: Boolean, last: Boolean): Pair? {\n if (!ignoreCase && strings.size == 1) {\n val string = strings.single()\n val index = if (!last) indexOf(string, startIndex) else lastIndexOf(string, startIndex)\n return if (index < 0) null else index to string\n }\n\n val indices = if (!last) startIndex.coerceAtLeast(0)..length else startIndex.coerceAtMost(lastIndex) downTo 0\n\n if (this is String) {\n for (index in indices) {\n val matchingString = strings.firstOrNull { it.regionMatches(0, this, index, it.length, ignoreCase) }\n if (matchingString != null)\n return index to matchingString\n }\n } else {\n for (index in indices) {\n val matchingString = strings.firstOrNull { it.regionMatchesImpl(0, this, index, it.length, ignoreCase) }\n if (matchingString != null)\n return index to matchingString\n }\n }\n\n return null\n}\n\n/**\n * Finds the first occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return A pair of an index of the first occurrence of matched string from [strings] and the string matched\n * or `null` if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.findAnyOf(strings: Collection, startIndex: Int = 0, ignoreCase: Boolean = false): Pair? =\n findAnyOf(strings, startIndex, ignoreCase, last = false)\n\n/**\n * Finds the last occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return A pair of an index of the last occurrence of matched string from [strings] and the string matched or `null` if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the end toward the beginning of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.findLastAnyOf(strings: Collection, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Pair? =\n findAnyOf(strings, startIndex, ignoreCase, last = true)\n\n/**\n * Finds the index of the first occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the first occurrence of matched string from [strings] or -1 if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.indexOfAny(strings: Collection, startIndex: Int = 0, ignoreCase: Boolean = false): Int =\n findAnyOf(strings, startIndex, ignoreCase, last = false)?.first ?: -1\n\n/**\n * Finds the index of the last occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the last occurrence of matched string from [strings] or -1 if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the end toward the beginning of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.lastIndexOfAny(strings: Collection, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int =\n findAnyOf(strings, startIndex, ignoreCase, last = true)?.first ?: -1\n\n\n// indexOf\n\n/**\n * Returns the index within this string of the first occurrence of the specified character, starting from the specified [startIndex].\n *\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the first occurrence of [char] or -1 if none is found.\n */\npublic fun CharSequence.indexOf(char: Char, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOfAny(charArrayOf(char), startIndex, ignoreCase)\n else\n nativeIndexOf(char, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the first occurrence of the specified [string],\n * starting from the specified [startIndex].\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the first occurrence of [string] or `-1` if none is found.\n * @sample samples.text.Strings.indexOf\n */\npublic fun CharSequence.indexOf(string: String, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOf(string, startIndex, length, ignoreCase)\n else\n nativeIndexOf(string, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the last occurrence of the specified character,\n * starting from the specified [startIndex].\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the last occurrence of [char] or -1 if none is found.\n */\npublic fun CharSequence.lastIndexOf(char: Char, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n lastIndexOfAny(charArrayOf(char), startIndex, ignoreCase)\n else\n nativeLastIndexOf(char, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the last occurrence of the specified [string],\n * starting from the specified [startIndex].\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the last occurrence of [string] or -1 if none is found.\n */\npublic fun CharSequence.lastIndexOf(string: String, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOf(string, startIndex, 0, ignoreCase, last = true)\n else\n nativeLastIndexOf(string, startIndex)\n}\n\n/**\n * Returns `true` if this char sequence contains the specified [other] sequence of characters as a substring.\n *\n * @param ignoreCase `true` to ignore character case when comparing strings. By default `false`.\n */\n@Suppress(\"INAPPLICABLE_OPERATOR_MODIFIER\")\npublic operator fun CharSequence.contains(other: CharSequence, ignoreCase: Boolean = false): Boolean =\n if (other is String)\n indexOf(other, ignoreCase = ignoreCase) >= 0\n else\n indexOf(other, 0, length, ignoreCase) >= 0\n\n\n\n/**\n * Returns `true` if this char sequence contains the specified character [char].\n *\n * @param ignoreCase `true` to ignore character case when comparing characters. By default `false`.\n */\n@Suppress(\"INAPPLICABLE_OPERATOR_MODIFIER\")\npublic operator fun CharSequence.contains(char: Char, ignoreCase: Boolean = false): Boolean =\n indexOf(char, ignoreCase = ignoreCase) >= 0\n\n/**\n * Returns `true` if this char sequence contains at least one match of the specified regular expression [regex].\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharSequence.contains(regex: Regex): Boolean = regex.containsMatchIn(this)\n\n\n// rangesDelimitedBy\n\n\nprivate class DelimitedRangesSequence(\n private val input: CharSequence,\n private val startIndex: Int,\n private val limit: Int,\n private val getNextMatch: CharSequence.(currentIndex: Int) -> Pair?\n) : Sequence {\n\n override fun iterator(): Iterator = object : Iterator {\n var nextState: Int = -1 // -1 for unknown, 0 for done, 1 for continue\n var currentStartIndex: Int = startIndex.coerceIn(0, input.length)\n var nextSearchIndex: Int = currentStartIndex\n var nextItem: IntRange? = null\n var counter: Int = 0\n\n private fun calcNext() {\n if (nextSearchIndex < 0) {\n nextState = 0\n nextItem = null\n } else {\n if (limit > 0 && ++counter >= limit || nextSearchIndex > input.length) {\n nextItem = currentStartIndex..input.lastIndex\n nextSearchIndex = -1\n } else {\n val match = input.getNextMatch(nextSearchIndex)\n if (match == null) {\n nextItem = currentStartIndex..input.lastIndex\n nextSearchIndex = -1\n } else {\n val (index, length) = match\n nextItem = currentStartIndex until index\n currentStartIndex = index + length\n nextSearchIndex = currentStartIndex + if (length == 0) 1 else 0\n }\n }\n nextState = 1\n }\n }\n\n override fun next(): IntRange {\n if (nextState == -1)\n calcNext()\n if (nextState == 0)\n throw NoSuchElementException()\n val result = nextItem as IntRange\n // Clean next to avoid keeping reference on yielded instance\n nextItem = null\n nextState = -1\n return result\n }\n\n override fun hasNext(): Boolean {\n if (nextState == -1)\n calcNext()\n return nextState == 1\n }\n }\n}\n\n/**\n * Returns a sequence of index ranges of substrings in this char sequence around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param startIndex The index to start searching delimiters from.\n * No range having its start value less than [startIndex] is returned.\n * [startIndex] is coerced to be non-negative and not greater than length of this string.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n */\nprivate fun CharSequence.rangesDelimitedBy(delimiters: CharArray, startIndex: Int = 0, ignoreCase: Boolean = false, limit: Int = 0): Sequence {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" })\n\n return DelimitedRangesSequence(this, startIndex, limit, { currentIndex ->\n indexOfAny(delimiters, currentIndex, ignoreCase = ignoreCase).let { if (it < 0) null else it to 1 }\n })\n}\n\n\n/**\n * Returns a sequence of index ranges of substrings in this char sequence around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param startIndex The index to start searching delimiters from.\n * No range having its start value less than [startIndex] is returned.\n * [startIndex] is coerced to be non-negative and not greater than length of this string.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [delimiters]\n * that matches this string at that position.\n */\nprivate fun CharSequence.rangesDelimitedBy(delimiters: Array, startIndex: Int = 0, ignoreCase: Boolean = false, limit: Int = 0): Sequence {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" } )\n val delimitersList = delimiters.asList()\n\n return DelimitedRangesSequence(this, startIndex, limit, { currentIndex -> findAnyOf(delimitersList, currentIndex, ignoreCase = ignoreCase, last = false)?.let { it.first to it.second.length } })\n\n}\n\n\n// split\n\n/**\n * Splits this char sequence to a sequence of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [delimiters]\n * that matches this string at that position.\n */\npublic fun CharSequence.splitToSequence(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): Sequence =\n rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).map { substring(it) }\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and matches at each position the first element in [delimiters]\n * that is equal to a delimiter in this instance at that position.\n */\npublic fun CharSequence.split(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): List {\n if (delimiters.size == 1) {\n val delimiter = delimiters[0]\n if (!delimiter.isEmpty()) {\n return split(delimiter, ignoreCase, limit)\n }\n }\n\n return rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).asIterable().map { substring(it) }\n}\n\n/**\n * Splits this char sequence to a sequence of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\npublic fun CharSequence.splitToSequence(vararg delimiters: Char, ignoreCase: Boolean = false, limit: Int = 0): Sequence =\n rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).map { substring(it) }\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\npublic fun CharSequence.split(vararg delimiters: Char, ignoreCase: Boolean = false, limit: Int = 0): List {\n if (delimiters.size == 1) {\n return split(delimiters[0].toString(), ignoreCase, limit)\n }\n\n return rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).asIterable().map { substring(it) }\n}\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiter].\n * This is specialized version of split which receives single non-empty delimiter and offers better performance\n *\n * @param delimiter String used as delimiter\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\nprivate fun CharSequence.split(delimiter: String, ignoreCase: Boolean, limit: Int): List {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" })\n\n var currentOffset = 0\n var nextIndex = indexOf(delimiter, currentOffset, ignoreCase)\n if (nextIndex == -1 || limit == 1) {\n return listOf(this.toString())\n }\n\n val isLimited = limit > 0\n val result = ArrayList(if (isLimited) limit.coerceAtMost(10) else 10)\n do {\n result.add(substring(currentOffset, nextIndex))\n currentOffset = nextIndex + delimiter.length\n // Do not search for next occurrence if we're reaching limit\n if (isLimited && result.size == limit - 1) break\n nextIndex = indexOf(delimiter, currentOffset, ignoreCase)\n } while (nextIndex != -1)\n\n result.add(substring(currentOffset, length))\n return result\n}\n\n/**\n * Splits this char sequence around matches of the given regular expression.\n *\n * @param limit Non-negative value specifying the maximum number of substrings to return.\n * Zero by default means no limit is set.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.split(regex: Regex, limit: Int = 0): List = regex.split(this, limit)\n\n/**\n * Splits this char sequence to a sequence of lines delimited by any of the following character sequences: CRLF, LF or CR.\n *\n * The lines returned do not include terminating line separators.\n */\npublic fun CharSequence.lineSequence(): Sequence = splitToSequence(\"\\r\\n\", \"\\n\", \"\\r\")\n\n/**\n * Splits this char sequence to a list of lines delimited by any of the following character sequences: CRLF, LF or CR.\n *\n * The lines returned do not include terminating line separators.\n */\npublic fun CharSequence.lines(): List = lineSequence().toList()\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\nimport kotlin.js.RegExp\n\n/**\n * Converts the characters in the specified array to a string.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun String(chars: CharArray): String {\n var result = \"\"\n for (char in chars) {\n result += char\n }\n return result\n}\n\n/**\n * Converts the characters from a portion of the specified array to a string.\n *\n * @throws IndexOutOfBoundsException if either [offset] or [length] are less than zero\n * or `offset + length` is out of [chars] array bounds.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun String(chars: CharArray, offset: Int, length: Int): String {\n if (offset < 0 || length < 0 || chars.size - offset < length)\n throw IndexOutOfBoundsException(\"size: ${chars.size}; offset: $offset; length: $length\")\n var result = \"\"\n for (index in offset until offset + length) {\n result += chars[index]\n }\n return result\n}\n\n/**\n * Concatenates characters in this [CharArray] into a String.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun CharArray.concatToString(): String {\n var result = \"\"\n for (char in this) {\n result += char\n }\n return result\n}\n\n/**\n * Concatenates characters in this [CharArray] or its subrange into a String.\n *\n * @param startIndex the beginning (inclusive) of the subrange of characters, 0 by default.\n * @param endIndex the end (exclusive) of the subrange of characters, size of this array by default.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n@ExperimentalStdlibApi\npublic actual fun CharArray.concatToString(startIndex: Int = 0, endIndex: Int = this.size): String {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, this.size)\n var result = \"\"\n for (index in startIndex until endIndex) {\n result += this[index]\n }\n return result\n}\n\n/**\n * Returns a [CharArray] containing characters of this string.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun String.toCharArray(): CharArray {\n return CharArray(length) { get(it) }\n}\n\n/**\n * Returns a [CharArray] containing characters of this string or its substring.\n *\n * @param startIndex the beginning (inclusive) of the substring, 0 by default.\n * @param endIndex the end (exclusive) of the substring, length of this string by default.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the length of this string.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n@ExperimentalStdlibApi\npublic actual fun String.toCharArray(startIndex: Int = 0, endIndex: Int = this.length): CharArray {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, length)\n return CharArray(endIndex - startIndex) { get(startIndex + it) }\n}\n\n/**\n * Decodes a string from the bytes in UTF-8 encoding in this array.\n *\n * Malformed byte sequences are replaced by the replacement char `\\uFFFD`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun ByteArray.decodeToString(): String {\n return decodeUtf8(this, 0, size, false)\n}\n\n/**\n * Decodes a string from the bytes in UTF-8 encoding in this array or its subrange.\n *\n * @param startIndex the beginning (inclusive) of the subrange to decode, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to decode, size of this array by default.\n * @param throwOnInvalidSequence specifies whether to throw an exception on malformed byte sequence or replace it by the replacement char `\\uFFFD`.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n * @throws CharacterCodingException if the byte array contains malformed UTF-8 byte sequence and [throwOnInvalidSequence] is true.\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n@ExperimentalStdlibApi\npublic actual fun ByteArray.decodeToString(\n startIndex: Int = 0,\n endIndex: Int = this.size,\n throwOnInvalidSequence: Boolean = false\n): String {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, this.size)\n return decodeUtf8(this, startIndex, endIndex, throwOnInvalidSequence)\n}\n\n/**\n * Encodes this string to an array of bytes in UTF-8 encoding.\n *\n * Any malformed char sequence is replaced by the replacement byte sequence.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun String.encodeToByteArray(): ByteArray {\n return encodeUtf8(this, 0, length, false)\n}\n\n/**\n * Encodes this string or its substring to an array of bytes in UTF-8 encoding.\n *\n * @param startIndex the beginning (inclusive) of the substring to encode, 0 by default.\n * @param endIndex the end (exclusive) of the substring to encode, length of this string by default.\n * @param throwOnInvalidSequence specifies whether to throw an exception on malformed char sequence or replace.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the length of this string.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n * @throws CharacterCodingException if this string contains malformed char sequence and [throwOnInvalidSequence] is true.\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n@ExperimentalStdlibApi\npublic actual fun String.encodeToByteArray(\n startIndex: Int = 0,\n endIndex: Int = this.length,\n throwOnInvalidSequence: Boolean = false\n): ByteArray {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, length)\n return encodeUtf8(this, startIndex, endIndex, throwOnInvalidSequence)\n}\n\n/**\n * Returns a copy of this string converted to upper case using the rules of the default locale.\n *\n * @sample samples.text.Strings.toUpperCase\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toUpperCase(): String = asDynamic().toUpperCase()\n\n/**\n * Returns a copy of this string converted to lower case using the rules of the default locale.\n *\n * @sample samples.text.Strings.toLowerCase\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toLowerCase(): String = asDynamic().toLowerCase()\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeIndexOf(str: String, fromIndex: Int): Int = asDynamic().indexOf(str, fromIndex)\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeLastIndexOf(str: String, fromIndex: Int): Int = asDynamic().lastIndexOf(str, fromIndex)\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeStartsWith(s: String, position: Int): Boolean = asDynamic().startsWith(s, position)\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeEndsWith(s: String): Boolean = asDynamic().endsWith(s)\n\n@kotlin.internal.InlineOnly\npublic actual inline fun String.substring(startIndex: Int): String = asDynamic().substring(startIndex)\n\n@kotlin.internal.InlineOnly\npublic actual inline fun String.substring(startIndex: Int, endIndex: Int): String = asDynamic().substring(startIndex, endIndex)\n\n@kotlin.internal.InlineOnly\npublic inline fun String.concat(str: String): String = asDynamic().concat(str)\n\n@kotlin.internal.InlineOnly\npublic inline fun String.match(regex: String): Array? = asDynamic().match(regex)\n\n//native public fun String.trim(): String\n//TODO: String.replace to implement effective trimLeading and trimTrailing\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeReplace(pattern: RegExp, replacement: String): String = asDynamic().replace(pattern, replacement)\n\n@SinceKotlin(\"1.2\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.compareTo(other: String, ignoreCase: Boolean = false): Int {\n if (ignoreCase) {\n val n1 = this.length\n val n2 = other.length\n val min = minOf(n1, n2)\n if (min == 0) return n1 - n2\n var start = 0\n while (true) {\n val end = minOf(start + 16, min)\n var s1 = this.substring(start, end)\n var s2 = other.substring(start, end)\n if (s1 != s2) {\n s1 = s1.toUpperCase()\n s2 = s2.toUpperCase()\n if (s1 != s2) {\n s1 = s1.toLowerCase()\n s2 = s2.toLowerCase()\n if (s1 != s2) {\n return s1.compareTo(s2)\n }\n }\n }\n if (end == min) break\n start = end\n }\n return n1 - n2\n } else {\n return compareTo(other)\n }\n}\n\n\nprivate val STRING_CASE_INSENSITIVE_ORDER = Comparator { a, b -> a.compareTo(b, ignoreCase = true) }\n\n@SinceKotlin(\"1.2\")\npublic actual val String.Companion.CASE_INSENSITIVE_ORDER: Comparator\n get() = STRING_CASE_INSENSITIVE_ORDER\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class UByteArray\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@PublishedApi\ninternal constructor(@PublishedApi internal val storage: ByteArray) : Collection {\n\n /** Creates a new array of the specified [size], with all elements initialized to zero. */\n public constructor(size: Int) : this(ByteArray(size))\n\n /**\n * Returns the array element at the given [index]. This method can be called using the index operator.\n *\n * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n public operator fun get(index: Int): UByte = storage[index].toUByte()\n\n /**\n * Sets the element at the given [index] to the given [value]. This method can be called using the index operator.\n *\n * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n public operator fun set(index: Int, value: UByte) {\n storage[index] = value.toByte()\n }\n\n /** Returns the number of elements in the array. */\n public override val size: Int get() = storage.size\n\n /** Creates an iterator over the elements of the array. */\n public override operator fun iterator(): UByteIterator = Iterator(storage)\n\n private class Iterator(private val array: ByteArray) : UByteIterator() {\n private var index = 0\n override fun hasNext() = index < array.size\n override fun nextUByte() = if (index < array.size) array[index++].toUByte() else throw NoSuchElementException(index.toString())\n }\n\n override fun contains(element: UByte): Boolean {\n // TODO: Eliminate this check after KT-30016 gets fixed.\n // Currently JS BE does not generate special bridge method for this method.\n if ((element as Any?) !is UByte) return false\n\n return storage.contains(element.toByte())\n }\n\n override fun containsAll(elements: Collection): Boolean {\n return (elements as Collection<*>).all { it is UByte && storage.contains(it.toByte()) }\n }\n\n override fun isEmpty(): Boolean = this.storage.size == 0\n}\n\n/**\n * Creates a new array of the specified [size], where each element is calculated by calling the specified\n * [init] function.\n *\n * The function [init] is called for each array element sequentially starting from the first one.\n * It should return the value for an array element given its index.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray(size: Int, init: (Int) -> UByte): UByteArray {\n return UByteArray(ByteArray(size) { index -> init(index).toByte() })\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ubyteArrayOf(vararg elements: UByte): UByteArray = elements\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class UIntArray\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@PublishedApi\ninternal constructor(@PublishedApi internal val storage: IntArray) : Collection {\n\n /** Creates a new array of the specified [size], with all elements initialized to zero. */\n public constructor(size: Int) : this(IntArray(size))\n\n /**\n * Returns the array element at the given [index]. This method can be called using the index operator.\n *\n * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n public operator fun get(index: Int): UInt = storage[index].toUInt()\n\n /**\n * Sets the element at the given [index] to the given [value]. This method can be called using the index operator.\n *\n * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n public operator fun set(index: Int, value: UInt) {\n storage[index] = value.toInt()\n }\n\n /** Returns the number of elements in the array. */\n public override val size: Int get() = storage.size\n\n /** Creates an iterator over the elements of the array. */\n public override operator fun iterator(): UIntIterator = Iterator(storage)\n\n private class Iterator(private val array: IntArray) : UIntIterator() {\n private var index = 0\n override fun hasNext() = index < array.size\n override fun nextUInt() = if (index < array.size) array[index++].toUInt() else throw NoSuchElementException(index.toString())\n }\n\n override fun contains(element: UInt): Boolean {\n // TODO: Eliminate this check after KT-30016 gets fixed.\n // Currently JS BE does not generate special bridge method for this method.\n if ((element as Any?) !is UInt) return false\n\n return storage.contains(element.toInt())\n }\n\n override fun containsAll(elements: Collection): Boolean {\n return (elements as Collection<*>).all { it is UInt && storage.contains(it.toInt()) }\n }\n\n override fun isEmpty(): Boolean = this.storage.size == 0\n}\n\n/**\n * Creates a new array of the specified [size], where each element is calculated by calling the specified\n * [init] function.\n *\n * The function [init] is called for each array element sequentially starting from the first one.\n * It should return the value for an array element given its index.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray(size: Int, init: (Int) -> UInt): UIntArray {\n return UIntArray(IntArray(size) { index -> init(index).toInt() })\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun uintArrayOf(vararg elements: UInt): UIntArray = elements\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class ULongArray\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@PublishedApi\ninternal constructor(@PublishedApi internal val storage: LongArray) : Collection {\n\n /** Creates a new array of the specified [size], with all elements initialized to zero. */\n public constructor(size: Int) : this(LongArray(size))\n\n /**\n * Returns the array element at the given [index]. This method can be called using the index operator.\n *\n * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n public operator fun get(index: Int): ULong = storage[index].toULong()\n\n /**\n * Sets the element at the given [index] to the given [value]. This method can be called using the index operator.\n *\n * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n public operator fun set(index: Int, value: ULong) {\n storage[index] = value.toLong()\n }\n\n /** Returns the number of elements in the array. */\n public override val size: Int get() = storage.size\n\n /** Creates an iterator over the elements of the array. */\n public override operator fun iterator(): ULongIterator = Iterator(storage)\n\n private class Iterator(private val array: LongArray) : ULongIterator() {\n private var index = 0\n override fun hasNext() = index < array.size\n override fun nextULong() = if (index < array.size) array[index++].toULong() else throw NoSuchElementException(index.toString())\n }\n\n override fun contains(element: ULong): Boolean {\n // TODO: Eliminate this check after KT-30016 gets fixed.\n // Currently JS BE does not generate special bridge method for this method.\n if ((element as Any?) !is ULong) return false\n\n return storage.contains(element.toLong())\n }\n\n override fun containsAll(elements: Collection): Boolean {\n return (elements as Collection<*>).all { it is ULong && storage.contains(it.toLong()) }\n }\n\n override fun isEmpty(): Boolean = this.storage.size == 0\n}\n\n/**\n * Creates a new array of the specified [size], where each element is calculated by calling the specified\n * [init] function.\n *\n * The function [init] is called for each array element sequentially starting from the first one.\n * It should return the value for an array element given its index.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray(size: Int, init: (Int) -> ULong): ULongArray {\n return ULongArray(LongArray(size) { index -> init(index).toLong() })\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ulongArrayOf(vararg elements: ULong): ULongArray = elements\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\nimport kotlin.experimental.*\n\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class ULong @PublishedApi internal constructor(@PublishedApi internal val data: Long) : Comparable {\n\n companion object {\n /**\n * A constant holding the minimum value an instance of ULong can have.\n */\n public const val MIN_VALUE: ULong = ULong(0)\n\n /**\n * A constant holding the maximum value an instance of ULong can have.\n */\n public const val MAX_VALUE: ULong = ULong(-1)\n\n /**\n * The number of bytes used to represent an instance of ULong in a binary form.\n */\n public const val SIZE_BYTES: Int = 8\n\n /**\n * The number of bits used to represent an instance of ULong in a binary form.\n */\n public const val SIZE_BITS: Int = 64\n }\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UByte): Int = this.compareTo(other.toULong())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UShort): Int = this.compareTo(other.toULong())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UInt): Int = this.compareTo(other.toULong())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n @Suppress(\"OVERRIDE_BY_INLINE\")\n public override inline operator fun compareTo(other: ULong): Int = ulongCompare(this.data, other.data)\n\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UByte): ULong = this.plus(other.toULong())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UShort): ULong = this.plus(other.toULong())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UInt): ULong = this.plus(other.toULong())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: ULong): ULong = ULong(this.data.plus(other.data))\n\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UByte): ULong = this.minus(other.toULong())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UShort): ULong = this.minus(other.toULong())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UInt): ULong = this.minus(other.toULong())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: ULong): ULong = ULong(this.data.minus(other.data))\n\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UByte): ULong = this.times(other.toULong())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UShort): ULong = this.times(other.toULong())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UInt): ULong = this.times(other.toULong())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: ULong): ULong = ULong(this.data.times(other.data))\n\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UByte): ULong = this.div(other.toULong())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UShort): ULong = this.div(other.toULong())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UInt): ULong = this.div(other.toULong())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: ULong): ULong = ulongDivide(this, other)\n\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UByte): ULong = this.rem(other.toULong())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UShort): ULong = this.rem(other.toULong())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UInt): ULong = this.rem(other.toULong())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: ULong): ULong = ulongRemainder(this, other)\n\n /** Increments this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun inc(): ULong = ULong(data.inc())\n /** Decrements this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun dec(): ULong = ULong(data.dec())\n\n /** Creates a range from this value to the specified [other] value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rangeTo(other: ULong): ULongRange = ULongRange(this, other)\n\n /** Shifts this value left by the [bitCount] number of bits. */\n @kotlin.internal.InlineOnly\n public inline infix fun shl(bitCount: Int): ULong = ULong(data shl bitCount)\n /** Shifts this value right by the [bitCount] number of bits, filling the leftmost bits with zeros. */\n @kotlin.internal.InlineOnly\n public inline infix fun shr(bitCount: Int): ULong = ULong(data ushr bitCount)\n /** Performs a bitwise AND operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun and(other: ULong): ULong = ULong(this.data and other.data)\n /** Performs a bitwise OR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun or(other: ULong): ULong = ULong(this.data or other.data)\n /** Performs a bitwise XOR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun xor(other: ULong): ULong = ULong(this.data xor other.data)\n /** Inverts the bits in this value. */\n @kotlin.internal.InlineOnly\n public inline fun inv(): ULong = ULong(data.inv())\n\n /**\n * Converts this [ULong] value to [Byte].\n *\n * If this value is less than or equals to [Byte.MAX_VALUE], the resulting `Byte` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `Byte` value is represented by the least significant 8 bits of this `ULong` value.\n * Note that the resulting `Byte` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toByte(): Byte = data.toByte()\n /**\n * Converts this [ULong] value to [Short].\n *\n * If this value is less than or equals to [Short.MAX_VALUE], the resulting `Short` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `Short` value is represented by the least significant 16 bits of this `ULong` value.\n * Note that the resulting `Short` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toShort(): Short = data.toShort()\n /**\n * Converts this [ULong] value to [Int].\n *\n * If this value is less than or equals to [Int.MAX_VALUE], the resulting `Int` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `Int` value is represented by the least significant 32 bits of this `ULong` value.\n * Note that the resulting `Int` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toInt(): Int = data.toInt()\n /**\n * Converts this [ULong] value to [Long].\n *\n * If this value is less than or equals to [Long.MAX_VALUE], the resulting `Long` value represents\n * the same numerical value as this `ULong`. Otherwise the result is negative.\n *\n * The resulting `Long` value has the same binary representation as this `ULong` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toLong(): Long = data\n\n /**\n * Converts this [ULong] value to [UByte].\n *\n * If this value is less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `ULong` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUByte(): UByte = data.toUByte()\n /**\n * Converts this [ULong] value to [UShort].\n *\n * If this value is less than or equals to [UShort.MAX_VALUE], the resulting `UShort` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `UShort` value is represented by the least significant 16 bits of this `ULong` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUShort(): UShort = data.toUShort()\n /**\n * Converts this [ULong] value to [UInt].\n *\n * If this value is less than or equals to [UInt.MAX_VALUE], the resulting `UInt` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `UInt` value is represented by the least significant 32 bits of this `ULong` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUInt(): UInt = data.toUInt()\n /** Returns this value. */\n @kotlin.internal.InlineOnly\n public inline fun toULong(): ULong = this\n\n /**\n * Converts this [ULong] value to [Float].\n *\n * The resulting value is the closest `Float` to this `ULong` value.\n * In case when this `ULong` value is exactly between two `Float`s,\n * the one with zero at least significant bit of mantissa is selected.\n */\n @kotlin.internal.InlineOnly\n public inline fun toFloat(): Float = this.toDouble().toFloat()\n /**\n * Converts this [ULong] value to [Double].\n *\n * The resulting value is the closest `Double` to this `ULong` value.\n * In case when this `ULong` value is exactly between two `Double`s,\n * the one with zero at least significant bit of mantissa is selected.\n */\n @kotlin.internal.InlineOnly\n public inline fun toDouble(): Double = ulongToDouble(data)\n\n public override fun toString(): String = ulongToString(data)\n\n}\n\n/**\n * Converts this [Byte] value to [ULong].\n *\n * If this value is positive, the resulting `ULong` value represents the same numerical value as this `Byte`.\n *\n * The least significant 8 bits of the resulting `ULong` value are the same as the bits of this `Byte` value,\n * whereas the most significant 56 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Byte.toULong(): ULong = ULong(this.toLong())\n/**\n * Converts this [Short] value to [ULong].\n *\n * If this value is positive, the resulting `ULong` value represents the same numerical value as this `Short`.\n *\n * The least significant 16 bits of the resulting `ULong` value are the same as the bits of this `Short` value,\n * whereas the most significant 48 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Short.toULong(): ULong = ULong(this.toLong())\n/**\n * Converts this [Int] value to [ULong].\n *\n * If this value is positive, the resulting `ULong` value represents the same numerical value as this `Int`.\n *\n * The least significant 32 bits of the resulting `ULong` value are the same as the bits of this `Int` value,\n * whereas the most significant 32 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Int.toULong(): ULong = ULong(this.toLong())\n/**\n * Converts this [Long] value to [ULong].\n *\n * If this value is positive, the resulting `ULong` value represents the same numerical value as this `Long`.\n *\n * The resulting `ULong` value has the same binary representation as this `Long` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Long.toULong(): ULong = ULong(this)\n\n/**\n * Converts this [Float] value to [ULong].\n *\n * The fractional part, if any, is rounded down towards zero.\n * Returns zero if this `Float` value is negative or `NaN`, [ULong.MAX_VALUE] if it's bigger than `ULong.MAX_VALUE`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Float.toULong(): ULong = doubleToULong(this.toDouble())\n/**\n * Converts this [Double] value to [ULong].\n *\n * The fractional part, if any, is rounded down towards zero.\n * Returns zero if this `Double` value is negative or `NaN`, [ULong.MAX_VALUE] if it's bigger than `ULong.MAX_VALUE`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Double.toULong(): ULong = doubleToULong(this)\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class UShortArray\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@PublishedApi\ninternal constructor(@PublishedApi internal val storage: ShortArray) : Collection {\n\n /** Creates a new array of the specified [size], with all elements initialized to zero. */\n public constructor(size: Int) : this(ShortArray(size))\n\n /**\n * Returns the array element at the given [index]. This method can be called using the index operator.\n *\n * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n public operator fun get(index: Int): UShort = storage[index].toUShort()\n\n /**\n * Sets the element at the given [index] to the given [value]. This method can be called using the index operator.\n *\n * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n public operator fun set(index: Int, value: UShort) {\n storage[index] = value.toShort()\n }\n\n /** Returns the number of elements in the array. */\n public override val size: Int get() = storage.size\n\n /** Creates an iterator over the elements of the array. */\n public override operator fun iterator(): UShortIterator = Iterator(storage)\n\n private class Iterator(private val array: ShortArray) : UShortIterator() {\n private var index = 0\n override fun hasNext() = index < array.size\n override fun nextUShort() = if (index < array.size) array[index++].toUShort() else throw NoSuchElementException(index.toString())\n }\n\n override fun contains(element: UShort): Boolean {\n // TODO: Eliminate this check after KT-30016 gets fixed.\n // Currently JS BE does not generate special bridge method for this method.\n if ((element as Any?) !is UShort) return false\n\n return storage.contains(element.toShort())\n }\n\n override fun containsAll(elements: Collection): Boolean {\n return (elements as Collection<*>).all { it is UShort && storage.contains(it.toShort()) }\n }\n\n override fun isEmpty(): Boolean = this.storage.size == 0\n}\n\n/**\n * Creates a new array of the specified [size], where each element is calculated by calling the specified\n * [init] function.\n *\n * The function [init] is called for each array element sequentially starting from the first one.\n * It should return the value for an array element given its index.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray(size: Int, init: (Int) -> UShort): UShortArray {\n return UShortArray(ShortArray(size) { index -> init(index).toShort() })\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ushortArrayOf(vararg elements: UShort): UShortArray = elements\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"UArraysKt\")\n@file:kotlin.jvm.JvmPackageName(\"kotlin.collections.unsigned\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.component1(): UInt {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.component1(): ULong {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.component1(): UByte {\n return get(0)\n}\n\n/**\n * Returns 1st *element* from the array.\n * \n * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.component1(): UShort {\n return get(0)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.component2(): UInt {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.component2(): ULong {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.component2(): UByte {\n return get(1)\n}\n\n/**\n * Returns 2nd *element* from the array.\n * \n * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.component2(): UShort {\n return get(1)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.component3(): UInt {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.component3(): ULong {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.component3(): UByte {\n return get(2)\n}\n\n/**\n * Returns 3rd *element* from the array.\n * \n * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.component3(): UShort {\n return get(2)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.component4(): UInt {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.component4(): ULong {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.component4(): UByte {\n return get(3)\n}\n\n/**\n * Returns 4th *element* from the array.\n * \n * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.component4(): UShort {\n return get(3)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.component5(): UInt {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.component5(): ULong {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.component5(): UByte {\n return get(4)\n}\n\n/**\n * Returns 5th *element* from the array.\n * \n * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS\n * where the behavior is unspecified.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.component5(): UShort {\n return get(4)\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UIntArray.elementAt(index: Int): UInt\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun ULongArray.elementAt(index: Int): ULong\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UByteArray.elementAt(index: Int): UByte\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UShortArray.elementAt(index: Int): UShort\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.elementAtOrElse(index: Int, defaultValue: (Int) -> UInt): UInt {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.elementAtOrElse(index: Int, defaultValue: (Int) -> ULong): ULong {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.elementAtOrElse(index: Int, defaultValue: (Int) -> UByte): UByte {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.elementAtOrElse(index: Int, defaultValue: (Int) -> UShort): UShort {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.elementAtOrNull(index: Int): UInt? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.elementAtOrNull(index: Int): ULong? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.elementAtOrNull(index: Int): UByte? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.elementAtOrNull(index: Int): UShort? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.find(predicate: (UInt) -> Boolean): UInt? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.find(predicate: (ULong) -> Boolean): ULong? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.find(predicate: (UByte) -> Boolean): UByte? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.find(predicate: (UShort) -> Boolean): UShort? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.findLast(predicate: (UInt) -> Boolean): UInt? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.findLast(predicate: (ULong) -> Boolean): ULong? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.findLast(predicate: (UByte) -> Boolean): UByte? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.findLast(predicate: (UShort) -> Boolean): UShort? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.first(): UInt {\n return storage.first().toUInt()\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.first(): ULong {\n return storage.first().toULong()\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.first(): UByte {\n return storage.first().toUByte()\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.first(): UShort {\n return storage.first().toUShort()\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.first(predicate: (UInt) -> Boolean): UInt {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.first(predicate: (ULong) -> Boolean): ULong {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.first(predicate: (UByte) -> Boolean): UByte {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.first(predicate: (UShort) -> Boolean): UShort {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.firstOrNull(): UInt? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.firstOrNull(): ULong? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.firstOrNull(): UByte? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.firstOrNull(): UShort? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.firstOrNull(predicate: (UInt) -> Boolean): UInt? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.firstOrNull(predicate: (ULong) -> Boolean): ULong? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.firstOrNull(predicate: (UByte) -> Boolean): UByte? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.firstOrNull(predicate: (UShort) -> Boolean): UShort? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.getOrElse(index: Int, defaultValue: (Int) -> UInt): UInt {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.getOrElse(index: Int, defaultValue: (Int) -> ULong): ULong {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.getOrElse(index: Int, defaultValue: (Int) -> UByte): UByte {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.getOrElse(index: Int, defaultValue: (Int) -> UShort): UShort {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.getOrNull(index: Int): UInt? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.getOrNull(index: Int): ULong? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.getOrNull(index: Int): UByte? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.getOrNull(index: Int): UShort? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.indexOf(element: UInt): Int {\n return storage.indexOf(element.toInt())\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.indexOf(element: ULong): Int {\n return storage.indexOf(element.toLong())\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.indexOf(element: UByte): Int {\n return storage.indexOf(element.toByte())\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.indexOf(element: UShort): Int {\n return storage.indexOf(element.toShort())\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.indexOfFirst(predicate: (UInt) -> Boolean): Int {\n return storage.indexOfFirst { predicate(it.toUInt()) }\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.indexOfFirst(predicate: (ULong) -> Boolean): Int {\n return storage.indexOfFirst { predicate(it.toULong()) }\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.indexOfFirst(predicate: (UByte) -> Boolean): Int {\n return storage.indexOfFirst { predicate(it.toUByte()) }\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.indexOfFirst(predicate: (UShort) -> Boolean): Int {\n return storage.indexOfFirst { predicate(it.toUShort()) }\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.indexOfLast(predicate: (UInt) -> Boolean): Int {\n return storage.indexOfLast { predicate(it.toUInt()) }\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.indexOfLast(predicate: (ULong) -> Boolean): Int {\n return storage.indexOfLast { predicate(it.toULong()) }\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.indexOfLast(predicate: (UByte) -> Boolean): Int {\n return storage.indexOfLast { predicate(it.toUByte()) }\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.indexOfLast(predicate: (UShort) -> Boolean): Int {\n return storage.indexOfLast { predicate(it.toUShort()) }\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.last(): UInt {\n return storage.last().toUInt()\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.last(): ULong {\n return storage.last().toULong()\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.last(): UByte {\n return storage.last().toUByte()\n}\n\n/**\n * Returns the last element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.last(): UShort {\n return storage.last().toUShort()\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.last(predicate: (UInt) -> Boolean): UInt {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.last(predicate: (ULong) -> Boolean): ULong {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.last(predicate: (UByte) -> Boolean): UByte {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.last(predicate: (UShort) -> Boolean): UShort {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.lastIndexOf(element: UInt): Int {\n return storage.lastIndexOf(element.toInt())\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.lastIndexOf(element: ULong): Int {\n return storage.lastIndexOf(element.toLong())\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.lastIndexOf(element: UByte): Int {\n return storage.lastIndexOf(element.toByte())\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.lastIndexOf(element: UShort): Int {\n return storage.lastIndexOf(element.toShort())\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.lastOrNull(): UInt? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.lastOrNull(): ULong? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.lastOrNull(): UByte? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.lastOrNull(): UShort? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.lastOrNull(predicate: (UInt) -> Boolean): UInt? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.lastOrNull(predicate: (ULong) -> Boolean): ULong? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.lastOrNull(predicate: (UByte) -> Boolean): UByte? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.lastOrNull(predicate: (UShort) -> Boolean): UShort? {\n for (index in this.indices.reversed()) {\n val element = this[index]\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.random(): UInt {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.random(): ULong {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.random(): UByte {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.random(): UShort {\n return random(Random)\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.random(random: Random): UInt {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.random(random: Random): ULong {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.random(random: Random): UByte {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness.\n * \n * @throws NoSuchElementException if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.random(random: Random): UShort {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.randomOrNull(): UInt? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.randomOrNull(): ULong? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.randomOrNull(): UByte? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.randomOrNull(): UShort? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\npublic fun UIntArray.randomOrNull(random: Random): UInt? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\npublic fun ULongArray.randomOrNull(random: Random): ULong? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\npublic fun UByteArray.randomOrNull(random: Random): UByte? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\npublic fun UShortArray.randomOrNull(random: Random): UShort? {\n if (isEmpty())\n return null\n return get(random.nextInt(size))\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.single(): UInt {\n return storage.single().toUInt()\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.single(): ULong {\n return storage.single().toULong()\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.single(): UByte {\n return storage.single().toUByte()\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.single(): UShort {\n return storage.single().toUShort()\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.single(predicate: (UInt) -> Boolean): UInt {\n var single: UInt? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as UInt\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.single(predicate: (ULong) -> Boolean): ULong {\n var single: ULong? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as ULong\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.single(predicate: (UByte) -> Boolean): UByte {\n var single: UByte? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as UByte\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.single(predicate: (UShort) -> Boolean): UShort {\n var single: UShort? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Array contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Array contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as UShort\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.singleOrNull(): UInt? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.singleOrNull(): ULong? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.singleOrNull(): UByte? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.singleOrNull(): UShort? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.singleOrNull(predicate: (UInt) -> Boolean): UInt? {\n var single: UInt? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.singleOrNull(predicate: (ULong) -> Boolean): ULong? {\n var single: ULong? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.singleOrNull(predicate: (UByte) -> Boolean): UByte? {\n var single: UByte? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.singleOrNull(predicate: (UShort) -> Boolean): UShort? {\n var single: UShort? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return takeLast((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.dropLastWhile(predicate: (UInt) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.dropLastWhile(predicate: (ULong) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.dropLastWhile(predicate: (UByte) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.dropLastWhile(predicate: (UShort) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return take(index + 1)\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.dropWhile(predicate: (UInt) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.dropWhile(predicate: (ULong) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.dropWhile(predicate: (UByte) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.dropWhile(predicate: (UShort) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.filter(predicate: (UInt) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.filter(predicate: (ULong) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.filter(predicate: (UByte) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.filter(predicate: (UShort) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.filterIndexed(predicate: (index: Int, UInt) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.filterIndexed(predicate: (index: Int, ULong) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.filterIndexed(predicate: (index: Int, UByte) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.filterIndexed(predicate: (index: Int, UShort) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.filterIndexedTo(destination: C, predicate: (index: Int, UInt) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.filterIndexedTo(destination: C, predicate: (index: Int, ULong) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.filterIndexedTo(destination: C, predicate: (index: Int, UByte) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.filterIndexedTo(destination: C, predicate: (index: Int, UShort) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.filterNot(predicate: (UInt) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.filterNot(predicate: (ULong) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.filterNot(predicate: (UByte) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.filterNot(predicate: (UShort) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.filterNotTo(destination: C, predicate: (UInt) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.filterNotTo(destination: C, predicate: (ULong) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.filterNotTo(destination: C, predicate: (UByte) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.filterNotTo(destination: C, predicate: (UShort) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.filterTo(destination: C, predicate: (UInt) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.filterTo(destination: C, predicate: (ULong) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.filterTo(destination: C, predicate: (UByte) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.filterTo(destination: C, predicate: (UShort) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return copyOfRange(indices.start, indices.endInclusive + 1).asList()\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sliceArray(indices: Collection): UIntArray {\n return UIntArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sliceArray(indices: Collection): ULongArray {\n return ULongArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sliceArray(indices: Collection): UByteArray {\n return UByteArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sliceArray(indices: Collection): UShortArray {\n return UShortArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sliceArray(indices: IntRange): UIntArray {\n return UIntArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sliceArray(indices: IntRange): ULongArray {\n return ULongArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sliceArray(indices: IntRange): UByteArray {\n return UByteArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sliceArray(indices: IntRange): UShortArray {\n return UShortArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (n >= size) return toList()\n if (n == 1) return listOf(this[0])\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(this[size - 1])\n val list = ArrayList(n)\n for (index in size - n until size)\n list.add(this[index])\n return list\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.takeLastWhile(predicate: (UInt) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.takeLastWhile(predicate: (ULong) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.takeLastWhile(predicate: (UByte) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.takeLastWhile(predicate: (UShort) -> Boolean): List {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return drop(index + 1)\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.takeWhile(predicate: (UInt) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.takeWhile(predicate: (ULong) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.takeWhile(predicate: (UByte) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.takeWhile(predicate: (UShort) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Reverses elements in the array in-place.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reverse(): Unit {\n storage.reverse()\n}\n\n/**\n * Reverses elements in the array in-place.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reverse(): Unit {\n storage.reverse()\n}\n\n/**\n * Reverses elements in the array in-place.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reverse(): Unit {\n storage.reverse()\n}\n\n/**\n * Reverses elements in the array in-place.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reverse(): Unit {\n storage.reverse()\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.reversed(): List {\n if (isEmpty()) return emptyList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reversedArray(): UIntArray {\n return UIntArray(storage.reversedArray())\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reversedArray(): ULongArray {\n return ULongArray(storage.reversedArray())\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reversedArray(): UByteArray {\n return UByteArray(storage.reversedArray())\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reversedArray(): UShortArray {\n return UShortArray(storage.reversedArray())\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Sorts elements in the array in-place descending according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sortDescending(): Unit {\n if (size > 1) {\n sort()\n reverse()\n }\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sorted(): List {\n return copyOf().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sorted(): List {\n return copyOf().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sorted(): List {\n return copyOf().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sorted(): List {\n return copyOf().apply { sort() }.asList()\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sortedArray(): UIntArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sortedArray(): ULongArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sortedArray(): UByteArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sortedArray(): UShortArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sort() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sortedArrayDescending(): UIntArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sortedArrayDescending(): ULongArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sortedArrayDescending(): UByteArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns an array with all elements of this array sorted descending according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sortedArrayDescending(): UShortArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns an array of type [ByteArray], which is a view of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.asByteArray(): ByteArray {\n return storage\n}\n\n/**\n * Returns an array of type [IntArray], which is a view of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.asIntArray(): IntArray {\n return storage\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UIntArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun ULongArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UByteArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UShortArray.asList(): List\n\n/**\n * Returns an array of type [LongArray], which is a view of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.asLongArray(): LongArray {\n return storage\n}\n\n/**\n * Returns an array of type [ShortArray], which is a view of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.asShortArray(): ShortArray {\n return storage\n}\n\n/**\n * Returns an array of type [UByteArray], which is a view of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.asUByteArray(): UByteArray {\n return UByteArray(this)\n}\n\n/**\n * Returns an array of type [UIntArray], which is a view of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.asUIntArray(): UIntArray {\n return UIntArray(this)\n}\n\n/**\n * Returns an array of type [ULongArray], which is a view of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.asULongArray(): ULongArray {\n return ULongArray(this)\n}\n\n/**\n * Returns an array of type [UShortArray], which is a view of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.asUShortArray(): UShortArray {\n return UShortArray(this)\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UIntArray.contentEquals(other: UIntArray): Boolean {\n return storage.contentEquals(other.storage)\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun ULongArray.contentEquals(other: ULongArray): Boolean {\n return storage.contentEquals(other.storage)\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UByteArray.contentEquals(other: UByteArray): Boolean {\n return storage.contentEquals(other.storage)\n}\n\n/**\n * Returns `true` if the two specified arrays are *structurally* equal to one another,\n * i.e. contain the same number of the same elements in the same order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UShortArray.contentEquals(other: UShortArray): Boolean {\n return storage.contentEquals(other.storage)\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.contentHashCode(): Int {\n return storage.contentHashCode()\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.contentHashCode(): Int {\n return storage.contentHashCode()\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.contentHashCode(): Int {\n return storage.contentHashCode()\n}\n\n/**\n * Returns a hash code based on the contents of this array as if it is [List].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.contentHashCode(): Int {\n return storage.contentHashCode()\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.contentToString(): String {\n return joinToString(\", \", \"[\", \"]\")\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.contentToString(): String {\n return joinToString(\", \", \"[\", \"]\")\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.contentToString(): String {\n return joinToString(\", \", \"[\", \"]\")\n}\n\n/**\n * Returns a string representation of the contents of the specified array as if it is [List].\n * \n * @sample samples.collections.Arrays.ContentOperations.contentToString\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.contentToString(): String {\n return joinToString(\", \", \"[\", \"]\")\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.copyInto(destination: UIntArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): UIntArray {\n storage.copyInto(destination.storage, destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.copyInto(destination: ULongArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ULongArray {\n storage.copyInto(destination.storage, destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.copyInto(destination: UByteArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): UByteArray {\n storage.copyInto(destination.storage, destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Copies this array or its subrange into the [destination] array and returns that array.\n * \n * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range.\n * \n * @param destination the array to copy to.\n * @param destinationOffset the position in the [destination] array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default.\n * \n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n * \n * @return the [destination] array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.copyInto(destination: UShortArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): UShortArray {\n storage.copyInto(destination.storage, destinationOffset, startIndex, endIndex)\n return destination\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.copyOf(): UIntArray {\n return UIntArray(storage.copyOf())\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.copyOf(): ULongArray {\n return ULongArray(storage.copyOf())\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.copyOf(): UByteArray {\n return UByteArray(storage.copyOf())\n}\n\n/**\n * Returns new array which is a copy of the original array.\n * \n * @sample samples.collections.Arrays.CopyOfOperations.copyOf\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.copyOf(): UShortArray {\n return UShortArray(storage.copyOf())\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.copyOf(newSize: Int): UIntArray {\n return UIntArray(storage.copyOf(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.copyOf(newSize: Int): ULongArray {\n return ULongArray(storage.copyOf(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.copyOf(newSize: Int): UByteArray {\n return UByteArray(storage.copyOf(newSize))\n}\n\n/**\n * Returns new array which is a copy of the original array, resized to the given [newSize].\n * The copy is either truncated or padded at the end with zero values if necessary.\n * \n * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize].\n * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.copyOf(newSize: Int): UShortArray {\n return UShortArray(storage.copyOf(newSize))\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.copyOfRange(fromIndex: Int, toIndex: Int): UIntArray {\n return UIntArray(storage.copyOfRange(fromIndex, toIndex))\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.copyOfRange(fromIndex: Int, toIndex: Int): ULongArray {\n return ULongArray(storage.copyOfRange(fromIndex, toIndex))\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.copyOfRange(fromIndex: Int, toIndex: Int): UByteArray {\n return UByteArray(storage.copyOfRange(fromIndex, toIndex))\n}\n\n/**\n * Returns a new array which is a copy of the specified range of the original array.\n * \n * @param fromIndex the start of the range (inclusive), must be in `0..array.size`\n * @param toIndex the end of the range (exclusive), must be in `fromIndex..array.size`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.copyOfRange(fromIndex: Int, toIndex: Int): UShortArray {\n return UShortArray(storage.copyOfRange(fromIndex, toIndex))\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.fill(element: UInt, fromIndex: Int = 0, toIndex: Int = size): Unit {\n storage.fill(element.toInt(), fromIndex, toIndex)\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.fill(element: ULong, fromIndex: Int = 0, toIndex: Int = size): Unit {\n storage.fill(element.toLong(), fromIndex, toIndex)\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.fill(element: UByte, fromIndex: Int = 0, toIndex: Int = size): Unit {\n storage.fill(element.toByte(), fromIndex, toIndex)\n}\n\n/**\n * Fills this array or its subrange with the specified [element] value.\n * \n * @param fromIndex the start of the range (inclusive), 0 by default.\n * @param toIndex the end of the range (exclusive), size of this array by default.\n * \n * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.fill(element: UShort, fromIndex: Int = 0, toIndex: Int = size): Unit {\n storage.fill(element.toShort(), fromIndex, toIndex)\n}\n\n/**\n * Returns the range of valid indices for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UIntArray.indices: IntRange\n get() = storage.indices\n\n/**\n * Returns the range of valid indices for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val ULongArray.indices: IntRange\n get() = storage.indices\n\n/**\n * Returns the range of valid indices for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UByteArray.indices: IntRange\n get() = storage.indices\n\n/**\n * Returns the range of valid indices for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UShortArray.indices: IntRange\n get() = storage.indices\n\n/**\n * Returns the last valid index for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UIntArray.lastIndex: Int\n get() = storage.lastIndex\n\n/**\n * Returns the last valid index for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val ULongArray.lastIndex: Int\n get() = storage.lastIndex\n\n/**\n * Returns the last valid index for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UByteArray.lastIndex: Int\n get() = storage.lastIndex\n\n/**\n * Returns the last valid index for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UShortArray.lastIndex: Int\n get() = storage.lastIndex\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.plus(element: UInt): UIntArray {\n return UIntArray(storage + element.toInt())\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.plus(element: ULong): ULongArray {\n return ULongArray(storage + element.toLong())\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.plus(element: UByte): UByteArray {\n return UByteArray(storage + element.toByte())\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.plus(element: UShort): UShortArray {\n return UShortArray(storage + element.toShort())\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun UIntArray.plus(elements: Collection): UIntArray {\n var index = size\n val result = storage.copyOf(size + elements.size)\n for (element in elements) result[index++] = element.toInt()\n return UIntArray(result)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun ULongArray.plus(elements: Collection): ULongArray {\n var index = size\n val result = storage.copyOf(size + elements.size)\n for (element in elements) result[index++] = element.toLong()\n return ULongArray(result)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun UByteArray.plus(elements: Collection): UByteArray {\n var index = size\n val result = storage.copyOf(size + elements.size)\n for (element in elements) result[index++] = element.toByte()\n return UByteArray(result)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun UShortArray.plus(elements: Collection): UShortArray {\n var index = size\n val result = storage.copyOf(size + elements.size)\n for (element in elements) result[index++] = element.toShort()\n return UShortArray(result)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.plus(elements: UIntArray): UIntArray {\n return UIntArray(storage + elements.storage)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.plus(elements: ULongArray): ULongArray {\n return ULongArray(storage + elements.storage)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.plus(elements: UByteArray): UByteArray {\n return UByteArray(storage + elements.storage)\n}\n\n/**\n * Returns an array containing all elements of the original array and then all elements of the given [elements] array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.plus(elements: UShortArray): UShortArray {\n return UShortArray(storage + elements.storage)\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sort(): Unit {\n if (size > 1) sortArray(this)\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sort(): Unit {\n if (size > 1) sortArray(this)\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sort(): Unit {\n if (size > 1) sortArray(this)\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sort(): Unit {\n if (size > 1) sortArray(this)\n}\n\n/**\n * Returns an array of type [ByteArray], which is a copy of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.toByteArray(): ByteArray {\n return storage.copyOf()\n}\n\n/**\n * Returns an array of type [IntArray], which is a copy of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.toIntArray(): IntArray {\n return storage.copyOf()\n}\n\n/**\n * Returns an array of type [LongArray], which is a copy of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.toLongArray(): LongArray {\n return storage.copyOf()\n}\n\n/**\n * Returns an array of type [ShortArray], which is a copy of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.toShortArray(): ShortArray {\n return storage.copyOf()\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.toTypedArray(): Array {\n return Array(size) { index -> this[index] }\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.toTypedArray(): Array {\n return Array(size) { index -> this[index] }\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.toTypedArray(): Array {\n return Array(size) { index -> this[index] }\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.toTypedArray(): Array {\n return Array(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of UByte containing all of the elements of this generic array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.toUByteArray(): UByteArray {\n return UByteArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of type [UByteArray], which is a copy of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.toUByteArray(): UByteArray {\n return UByteArray(this.copyOf())\n}\n\n/**\n * Returns an array of UInt containing all of the elements of this generic array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.toUIntArray(): UIntArray {\n return UIntArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of type [UIntArray], which is a copy of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.toUIntArray(): UIntArray {\n return UIntArray(this.copyOf())\n}\n\n/**\n * Returns an array of ULong containing all of the elements of this generic array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.toULongArray(): ULongArray {\n return ULongArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of type [ULongArray], which is a copy of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.toULongArray(): ULongArray {\n return ULongArray(this.copyOf())\n}\n\n/**\n * Returns an array of UShort containing all of the elements of this generic array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.toUShortArray(): UShortArray {\n return UShortArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of type [UShortArray], which is a copy of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.toUShortArray(): UShortArray {\n return UShortArray(this.copyOf())\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.flatMap(transform: (UInt) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.flatMap(transform: (ULong) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.flatMap(transform: (UByte) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.flatMap(transform: (UShort) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.flatMapTo(destination: C, transform: (UInt) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.flatMapTo(destination: C, transform: (ULong) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.flatMapTo(destination: C, transform: (UByte) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.flatMapTo(destination: C, transform: (UShort) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.groupBy(keySelector: (UInt) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.groupBy(keySelector: (ULong) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.groupBy(keySelector: (UByte) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.groupBy(keySelector: (UShort) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.groupBy(keySelector: (UInt) -> K, valueTransform: (UInt) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.groupBy(keySelector: (ULong) -> K, valueTransform: (ULong) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.groupBy(keySelector: (UByte) -> K, valueTransform: (UByte) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original array.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.groupBy(keySelector: (UShort) -> K, valueTransform: (UShort) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UIntArray.groupByTo(destination: M, keySelector: (UInt) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> ULongArray.groupByTo(destination: M, keySelector: (ULong) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UByteArray.groupByTo(destination: M, keySelector: (UByte) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups elements of the original array by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UShortArray.groupByTo(destination: M, keySelector: (UShort) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UIntArray.groupByTo(destination: M, keySelector: (UInt) -> K, valueTransform: (UInt) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> ULongArray.groupByTo(destination: M, keySelector: (ULong) -> K, valueTransform: (ULong) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UByteArray.groupByTo(destination: M, keySelector: (UByte) -> K, valueTransform: (UByte) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original array\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UShortArray.groupByTo(destination: M, keySelector: (UShort) -> K, valueTransform: (UShort) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.map(transform: (UInt) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.map(transform: (ULong) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.map(transform: (UByte) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original array.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.map(transform: (UShort) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.mapIndexed(transform: (index: Int, UInt) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.mapIndexed(transform: (index: Int, ULong) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.mapIndexed(transform: (index: Int, UByte) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original array.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.mapIndexed(transform: (index: Int, UShort) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.mapIndexedTo(destination: C, transform: (index: Int, UInt) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.mapIndexedTo(destination: C, transform: (index: Int, ULong) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.mapIndexedTo(destination: C, transform: (index: Int, UByte) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original array\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.mapIndexedTo(destination: C, transform: (index: Int, UShort) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(index++, item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.mapTo(destination: C, transform: (UInt) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.mapTo(destination: C, transform: (ULong) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.mapTo(destination: C, transform: (UByte) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original array\n * and appends the results to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.mapTo(destination: C, transform: (UShort) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original array\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.all(predicate: (UInt) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.all(predicate: (ULong) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.all(predicate: (UByte) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.all(predicate: (UShort) -> Boolean): Boolean {\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.any(): Boolean {\n return storage.any()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.any(): Boolean {\n return storage.any()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.any(): Boolean {\n return storage.any()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.any(): Boolean {\n return storage.any()\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.any(predicate: (UInt) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.any(predicate: (ULong) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.any(predicate: (UByte) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.any(predicate: (UShort) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.count(predicate: (UInt) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.count(predicate: (ULong) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.count(predicate: (UByte) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.count(predicate: (UShort) -> Boolean): Int {\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.fold(initial: R, operation: (acc: R, UInt) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.fold(initial: R, operation: (acc: R, ULong) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.fold(initial: R, operation: (acc: R, UByte) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right to current accumulator value and each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.fold(initial: R, operation: (acc: R, UShort) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.foldIndexed(initial: R, operation: (index: Int, acc: R, UInt) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.foldIndexed(initial: R, operation: (index: Int, acc: R, ULong) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.foldIndexed(initial: R, operation: (index: Int, acc: R, UByte) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.foldIndexed(initial: R, operation: (index: Int, acc: R, UShort) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(index++, accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.foldRight(initial: R, operation: (UInt, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.foldRight(initial: R, operation: (ULong, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.foldRight(initial: R, operation: (UByte, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left to each element and current accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.foldRight(initial: R, operation: (UShort, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.foldRightIndexed(initial: R, operation: (index: Int, UInt, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.foldRightIndexed(initial: R, operation: (index: Int, ULong, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.foldRightIndexed(initial: R, operation: (index: Int, UByte, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.foldRightIndexed(initial: R, operation: (index: Int, UShort, acc: R) -> R): R {\n var index = lastIndex\n var accumulator = initial\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Performs the given [action] on each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.forEach(action: (UInt) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.forEach(action: (ULong) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.forEach(action: (UByte) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.forEach(action: (UShort) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.forEachIndexed(action: (index: Int, UInt) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.forEachIndexed(action: (index: Int, ULong) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.forEachIndexed(action: (index: Int, UByte) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the desired action on the element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.forEachIndexed(action: (index: Int, UShort) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.max(): UInt? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.max(): ULong? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.max(): UByte? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.max(): UShort? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (max < e) max = e\n }\n return max\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.maxBy(selector: (UInt) -> R): UInt? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.maxBy(selector: (ULong) -> R): ULong? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.maxBy(selector: (UByte) -> R): UByte? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.maxBy(selector: (UShort) -> R): UShort? {\n if (isEmpty()) return null\n var maxElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return maxElem\n var maxValue = selector(maxElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n }\n return maxElem\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.maxWith(comparator: Comparator): UInt? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.maxWith(comparator: Comparator): ULong? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.maxWith(comparator: Comparator): UByte? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.maxWith(comparator: Comparator): UShort? {\n if (isEmpty()) return null\n var max = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.min(): UInt? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.min(): ULong? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.min(): UByte? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.min(): UShort? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (min > e) min = e\n }\n return min\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.minBy(selector: (UInt) -> R): UInt? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.minBy(selector: (ULong) -> R): ULong? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.minBy(selector: (UByte) -> R): UByte? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minBy\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.minBy(selector: (UShort) -> R): UShort? {\n if (isEmpty()) return null\n var minElem = this[0]\n val lastIndex = this.lastIndex\n if (lastIndex == 0) return minElem\n var minValue = selector(minElem)\n for (i in 1..lastIndex) {\n val e = this[i]\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n }\n return minElem\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.minWith(comparator: Comparator): UInt? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.minWith(comparator: Comparator): ULong? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.minWith(comparator: Comparator): UByte? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.minWith(comparator: Comparator): UShort? {\n if (isEmpty()) return null\n var min = this[0]\n for (i in 1..lastIndex) {\n val e = this[i]\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if the array has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.none(predicate: (UInt) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.none(predicate: (ULong) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.none(predicate: (UByte) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.none(predicate: (UShort) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduce(operation: (acc: UInt, UInt) -> UInt): UInt {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduce(operation: (acc: ULong, ULong) -> ULong): ULong {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduce(operation: (acc: UByte, UByte) -> UByte): UByte {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduce(operation: (acc: UShort, UShort) -> UShort): UShort {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduceIndexed(operation: (index: Int, acc: UInt, UInt) -> UInt): UInt {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduceIndexed(operation: (index: Int, acc: ULong, ULong) -> ULong): ULong {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduceIndexed(operation: (index: Int, acc: UByte, UByte) -> UByte): UByte {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original array.\n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduceIndexed(operation: (index: Int, acc: UShort, UShort) -> UShort): UShort {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(index, accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduceOrNull(operation: (acc: UInt, UInt) -> UInt): UInt? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduceOrNull(operation: (acc: ULong, ULong) -> ULong): ULong? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduceOrNull(operation: (acc: UByte, UByte) -> UByte): UByte? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduceOrNull(operation: (acc: UShort, UShort) -> UShort): UShort? {\n if (isEmpty())\n return null\n var accumulator = this[0]\n for (index in 1..lastIndex) {\n accumulator = operation(accumulator, this[index])\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduceRight(operation: (UInt, acc: UInt) -> UInt): UInt {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduceRight(operation: (ULong, acc: ULong) -> ULong): ULong {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduceRight(operation: (UByte, acc: UByte) -> UByte): UByte {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduceRight(operation: (UShort, acc: UShort) -> UShort): UShort {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduceRightIndexed(operation: (index: Int, UInt, acc: UInt) -> UInt): UInt {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduceRightIndexed(operation: (index: Int, ULong, acc: ULong) -> ULong): ULong {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduceRightIndexed(operation: (index: Int, UByte, acc: UByte) -> UByte): UByte {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left\n * to each element with its index in the original array and current accumulator value.\n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduceRightIndexed(operation: (index: Int, UShort, acc: UShort) -> UShort): UShort {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty array can't be reduced.\")\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(index, get(index), accumulator)\n --index\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduceRightOrNull(operation: (UInt, acc: UInt) -> UInt): UInt? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduceRightOrNull(operation: (ULong, acc: ULong) -> ULong): ULong? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduceRightOrNull(operation: (UByte, acc: UByte) -> UByte): UByte? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with last element and applying [operation] from right to left to each element and current accumulator value. Returns null if the array is empty.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduceRightOrNull(operation: (UShort, acc: UShort) -> UShort): UShort? {\n var index = lastIndex\n if (index < 0) return null\n var accumulator = get(index--)\n while (index >= 0) {\n accumulator = operation(get(index--), accumulator)\n }\n return accumulator\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.scan(initial: R, operation: (acc: R, UInt) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.scan(initial: R, operation: (acc: R, ULong) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.scan(initial: R, operation: (acc: R, UByte) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.scan(initial: R, operation: (acc: R, UShort) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.scanIndexed(initial: R, operation: (index: Int, acc: R, UInt) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.scanIndexed(initial: R, operation: (index: Int, acc: R, ULong) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.scanIndexed(initial: R, operation: (index: Int, acc: R, UByte) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.scanIndexed(initial: R, operation: (index: Int, acc: R, UShort) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(size + 1).apply { add(initial) }\n var accumulator = initial\n for (index in indices) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.scanReduce(operation: (acc: UInt, UInt) -> UInt): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.scanReduce(operation: (acc: ULong, ULong) -> ULong): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.scanReduce(operation: (acc: UByte, UByte) -> UByte): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this array.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.scanReduce(operation: (acc: UShort, UShort) -> UShort): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.scanReduceIndexed(operation: (index: Int, acc: UInt, UInt) -> UInt): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.scanReduceIndexed(operation: (index: Int, acc: ULong, ULong) -> ULong): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.scanReduceIndexed(operation: (index: Int, acc: UByte, UByte) -> UByte): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original array and current accumulator value that starts with the first element of this array.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scanReduce\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.scanReduceIndexed(operation: (index: Int, acc: UShort, UShort) -> UShort): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(size).apply { add(accumulator) }\n for (index in 1 until size) {\n accumulator = operation(index, accumulator, this[index])\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.sumBy(selector: (UInt) -> UInt): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.sumBy(selector: (ULong) -> UInt): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.sumBy(selector: (UByte) -> UInt): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.sumBy(selector: (UShort) -> UInt): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.sumByDouble(selector: (UInt) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.sumByDouble(selector: (ULong) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.sumByDouble(selector: (UByte) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.sumByDouble(selector: (UShort) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UIntArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun ULongArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UByteArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UShortArray.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.zip(other: Array, transform: (a: UInt, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.zip(other: Array, transform: (a: ULong, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.zip(other: Array, transform: (a: UByte, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.zip(other: Array, transform: (a: UShort, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UIntArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun ULongArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UByteArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UShortArray.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.zip(other: Iterable, transform: (a: UInt, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.zip(other: Iterable, transform: (a: ULong, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.zip(other: Iterable, transform: (a: UByte, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.zip(other: Iterable, transform: (a: UShort, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in other) {\n if (i >= arraySize) break\n list.add(transform(this[i++], element))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UIntArray.zip(other: UIntArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun ULongArray.zip(other: ULongArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UByteArray.zip(other: UByteArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UShortArray.zip(other: UShortArray): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.zip(other: UIntArray, transform: (a: UInt, b: UInt) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.zip(other: ULongArray, transform: (a: ULong, b: ULong) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.zip(other: UByteArray, transform: (a: UByte, b: UByte) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of values built from the elements of `this` array and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest array.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.zip(other: UShortArray, transform: (a: UShort, b: UShort) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(size)\n for (i in 0 until size) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.sum(): ULong {\n var sum: ULong = 0uL\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfUByte\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfUShort\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.sum(): UInt {\n return storage.sum().toUInt()\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.sum(): ULong {\n return storage.sum().toULong()\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.sum(): UInt {\n return sumBy { it.toUInt() }\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.sum(): UInt {\n return sumBy { it.toUInt() }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"UCollectionsKt\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns an array of UByte containing all of the elements of this collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Collection.toUByteArray(): UByteArray {\n val result = UByteArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of UInt containing all of the elements of this collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Collection.toUIntArray(): UIntArray {\n val result = UIntArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of ULong containing all of the elements of this collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Collection.toULongArray(): ULongArray {\n val result = ULongArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of UShort containing all of the elements of this collection.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Collection.toUShortArray(): UShortArray {\n val result = UShortArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Iterable.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Iterable.sum(): ULong {\n var sum: ULong = 0uL\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfUByte\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Iterable.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfUShort\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Iterable.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"UComparisonsKt\")\n\npackage kotlin.comparisons\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun maxOf(a: UInt, b: UInt): UInt {\n return if (a >= b) a else b\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun maxOf(a: ULong, b: ULong): ULong {\n return if (a >= b) a else b\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun maxOf(a: UByte, b: UByte): UByte {\n return if (a >= b) a else b\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun maxOf(a: UShort, b: UShort): UShort {\n return if (a >= b) a else b\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun maxOf(a: UInt, b: UInt, c: UInt): UInt {\n return maxOf(a, maxOf(b, c))\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun maxOf(a: ULong, b: ULong, c: ULong): ULong {\n return maxOf(a, maxOf(b, c))\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun maxOf(a: UByte, b: UByte, c: UByte): UByte {\n return maxOf(a, maxOf(b, c))\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun maxOf(a: UShort, b: UShort, c: UShort): UShort {\n return maxOf(a, maxOf(b, c))\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun minOf(a: UInt, b: UInt): UInt {\n return if (a <= b) a else b\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun minOf(a: ULong, b: ULong): ULong {\n return if (a <= b) a else b\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun minOf(a: UByte, b: UByte): UByte {\n return if (a <= b) a else b\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun minOf(a: UShort, b: UShort): UShort {\n return if (a <= b) a else b\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun minOf(a: UInt, b: UInt, c: UInt): UInt {\n return minOf(a, minOf(b, c))\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun minOf(a: ULong, b: ULong, c: ULong): ULong {\n return minOf(a, minOf(b, c))\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun minOf(a: UByte, b: UByte, c: UByte): UByte {\n return minOf(a, minOf(b, c))\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun minOf(a: UShort, b: UShort, c: UShort): UShort {\n return minOf(a, minOf(b, c))\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"URangesKt\")\n\npackage kotlin.ranges\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\n\n/**\n * Returns a random element from this range.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntRange.random(): UInt {\n return random(Random)\n}\n\n/**\n * Returns a random element from this range.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongRange.random(): ULong {\n return random(Random)\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntRange.random(random: Random): UInt {\n try {\n return random.nextUInt(this)\n } catch(e: IllegalArgumentException) {\n throw NoSuchElementException(e.message)\n }\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongRange.random(random: Random): ULong {\n try {\n return random.nextULong(this)\n } catch(e: IllegalArgumentException) {\n throw NoSuchElementException(e.message)\n }\n}\n\n/**\n * Returns a random element from this range, or `null` if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntRange.randomOrNull(): UInt? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this range, or `null` if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongRange.randomOrNull(): ULong? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness, or `null` if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\npublic fun UIntRange.randomOrNull(random: Random): UInt? {\n if (isEmpty())\n return null\n return random.nextUInt(this)\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness, or `null` if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\npublic fun ULongRange.randomOrNull(random: Random): ULong? {\n if (isEmpty())\n return null\n return random.nextULong(this)\n}\n\n/**\n * Returns `true` if this range contains the specified [element].\n * \n * Always returns `false` if the [element] is `null`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntRange.contains(element: UInt?): Boolean {\n return element != null && contains(element)\n}\n\n/**\n * Returns `true` if this range contains the specified [element].\n * \n * Always returns `false` if the [element] is `null`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongRange.contains(element: ULong?): Boolean {\n return element != null && contains(element)\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun UIntRange.contains(value: UByte): Boolean {\n return contains(value.toUInt())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun ULongRange.contains(value: UByte): Boolean {\n return contains(value.toULong())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun ULongRange.contains(value: UInt): Boolean {\n return contains(value.toULong())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun UIntRange.contains(value: ULong): Boolean {\n return (value shr UInt.SIZE_BITS) == 0uL && contains(value.toUInt())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun UIntRange.contains(value: UShort): Boolean {\n return contains(value.toUInt())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun ULongRange.contains(value: UShort): Boolean {\n return contains(value.toULong())\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UByte.downTo(to: UByte): UIntProgression {\n return UIntProgression.fromClosedRange(this.toUInt(), to.toUInt(), -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UInt.downTo(to: UInt): UIntProgression {\n return UIntProgression.fromClosedRange(this, to, -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun ULong.downTo(to: ULong): ULongProgression {\n return ULongProgression.fromClosedRange(this, to, -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UShort.downTo(to: UShort): UIntProgression {\n return UIntProgression.fromClosedRange(this.toUInt(), to.toUInt(), -1)\n}\n\n/**\n * Returns a progression that goes over the same range in the opposite direction with the same step.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntProgression.reversed(): UIntProgression {\n return UIntProgression.fromClosedRange(last, first, -step)\n}\n\n/**\n * Returns a progression that goes over the same range in the opposite direction with the same step.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongProgression.reversed(): ULongProgression {\n return ULongProgression.fromClosedRange(last, first, -step)\n}\n\n/**\n * Returns a progression that goes over the same range with the given step.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UIntProgression.step(step: Int): UIntProgression {\n checkStepIsPositive(step > 0, step)\n return UIntProgression.fromClosedRange(first, last, if (this.step > 0) step else -step)\n}\n\n/**\n * Returns a progression that goes over the same range with the given step.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun ULongProgression.step(step: Long): ULongProgression {\n checkStepIsPositive(step > 0, step)\n return ULongProgression.fromClosedRange(first, last, if (this.step > 0) step else -step)\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UByte.until(to: UByte): UIntRange {\n if (to <= UByte.MIN_VALUE) return UIntRange.EMPTY\n return this.toUInt() .. (to - 1u).toUInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UInt.until(to: UInt): UIntRange {\n if (to <= UInt.MIN_VALUE) return UIntRange.EMPTY\n return this .. (to - 1u).toUInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun ULong.until(to: ULong): ULongRange {\n if (to <= ULong.MIN_VALUE) return ULongRange.EMPTY\n return this .. (to - 1u).toULong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UShort.until(to: UShort): UIntRange {\n if (to <= UShort.MIN_VALUE) return UIntRange.EMPTY\n return this.toUInt() .. (to - 1u).toUInt()\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeastUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UInt.coerceAtLeast(minimumValue: UInt): UInt {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeastUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULong.coerceAtLeast(minimumValue: ULong): ULong {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeastUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByte.coerceAtLeast(minimumValue: UByte): UByte {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeastUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShort.coerceAtLeast(minimumValue: UShort): UShort {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMostUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UInt.coerceAtMost(maximumValue: UInt): UInt {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMostUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULong.coerceAtMost(maximumValue: ULong): ULong {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMostUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByte.coerceAtMost(maximumValue: UByte): UByte {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMostUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShort.coerceAtMost(maximumValue: UShort): UShort {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceInUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UInt.coerceIn(minimumValue: UInt, maximumValue: UInt): UInt {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceInUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULong.coerceIn(minimumValue: ULong, maximumValue: ULong): ULong {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceInUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByte.coerceIn(minimumValue: UByte, maximumValue: UByte): UByte {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceInUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShort.coerceIn(minimumValue: UShort, maximumValue: UShort): UShort {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified [range].\n * \n * @return this value if it's in the [range], or `range.start` if this value is less than `range.start`, or `range.endInclusive` if this value is greater than `range.endInclusive`.\n * \n * @sample samples.comparisons.ComparableOps.coerceInUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UInt.coerceIn(range: ClosedRange): UInt {\n if (range is ClosedFloatingPointRange) {\n return this.coerceIn(range)\n }\n if (range.isEmpty()) throw IllegalArgumentException(\"Cannot coerce value to an empty range: $range.\")\n return when {\n this < range.start -> range.start\n this > range.endInclusive -> range.endInclusive\n else -> this\n }\n}\n\n/**\n * Ensures that this value lies in the specified [range].\n * \n * @return this value if it's in the [range], or `range.start` if this value is less than `range.start`, or `range.endInclusive` if this value is greater than `range.endInclusive`.\n * \n * @sample samples.comparisons.ComparableOps.coerceInUnsigned\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULong.coerceIn(range: ClosedRange): ULong {\n if (range is ClosedFloatingPointRange) {\n return this.coerceIn(range)\n }\n if (range.isEmpty()) throw IllegalArgumentException(\"Cannot coerce value to an empty range: $range.\")\n return when {\n this < range.start -> range.start\n this > range.endInclusive -> range.endInclusive\n else -> this\n }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"USequencesKt\")\n\npackage kotlin.sequences\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Sequence.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Sequence.sum(): ULong {\n var sum: ULong = 0uL\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfUByte\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Sequence.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the sequence.\n *\n * The operation is _terminal_.\n */\n@kotlin.jvm.JvmName(\"sumOfUShort\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Sequence.sum(): UInt {\n var sum: UInt = 0u\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n","/*\n * Copyright 2010-2015 JetBrains s.r.o.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage kotlin.collections\n\nimport kotlin.internal.PlatformDependent\n\n/**\n * Classes that inherit from this interface can be represented as a sequence of elements that can\n * be iterated over.\n * @param T the type of element being iterated over. The iterator is covariant on its element type.\n */\npublic interface Iterable {\n /**\n * Returns an iterator over the elements of this object.\n */\n public operator fun iterator(): Iterator\n}\n\n/**\n * Classes that inherit from this interface can be represented as a sequence of elements that can\n * be iterated over and that supports removing elements during iteration.\n * @param T the type of element being iterated over. The mutable iterator is invariant on its element type.\n */\npublic interface MutableIterable : Iterable {\n /**\n * Returns an iterator over the elements of this sequence that supports removing elements during iteration.\n */\n override fun iterator(): MutableIterator\n}\n\n/**\n * A generic collection of elements. Methods in this interface support only read-only access to the collection;\n * read/write access is supported through the [MutableCollection] interface.\n * @param E the type of elements contained in the collection. The collection is covariant on its element type.\n */\npublic interface Collection : Iterable {\n // Query Operations\n /**\n * Returns the size of the collection.\n */\n public val size: Int\n\n /**\n * Returns `true` if the collection is empty (contains no elements), `false` otherwise.\n */\n public fun isEmpty(): Boolean\n\n /**\n * Checks if the specified element is contained in this collection.\n */\n public operator fun contains(element: @UnsafeVariance E): Boolean\n\n override fun iterator(): Iterator\n\n // Bulk Operations\n /**\n * Checks if all elements in the specified collection are contained in this collection.\n */\n public fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean\n}\n\n/**\n * A generic collection of elements that supports adding and removing elements.\n *\n * @param E the type of elements contained in the collection. The mutable collection is invariant on its element type.\n */\npublic interface MutableCollection : Collection, MutableIterable {\n // Query Operations\n override fun iterator(): MutableIterator\n\n // Modification Operations\n /**\n * Adds the specified element to the collection.\n *\n * @return `true` if the element has been added, `false` if the collection does not support duplicates\n * and the element is already contained in the collection.\n */\n public fun add(element: E): Boolean\n\n /**\n * Removes a single instance of the specified element from this\n * collection, if it is present.\n *\n * @return `true` if the element has been successfully removed; `false` if it was not present in the collection.\n */\n public fun remove(element: E): Boolean\n\n // Bulk Modification Operations\n /**\n * Adds all of the elements of the specified collection to this collection.\n *\n * @return `true` if any of the specified elements was added to the collection, `false` if the collection was not modified.\n */\n public fun addAll(elements: Collection): Boolean\n\n /**\n * Removes all of this collection's elements that are also contained in the specified collection.\n *\n * @return `true` if any of the specified elements was removed from the collection, `false` if the collection was not modified.\n */\n public fun removeAll(elements: Collection): Boolean\n\n /**\n * Retains only the elements in this collection that are contained in the specified collection.\n *\n * @return `true` if any element was removed from the collection, `false` if the collection was not modified.\n */\n public fun retainAll(elements: Collection): Boolean\n\n /**\n * Removes all elements from this collection.\n */\n public fun clear(): Unit\n}\n\n/**\n * A generic ordered collection of elements. Methods in this interface support only read-only access to the list;\n * read/write access is supported through the [MutableList] interface.\n * @param E the type of elements contained in the list. The list is covariant on its element type.\n */\npublic interface List : Collection {\n // Query Operations\n\n override val size: Int\n override fun isEmpty(): Boolean\n override fun contains(element: @UnsafeVariance E): Boolean\n override fun iterator(): Iterator\n\n // Bulk Operations\n override fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean\n\n // Positional Access Operations\n /**\n * Returns the element at the specified index in the list.\n */\n public operator fun get(index: Int): E\n\n // Search Operations\n /**\n * Returns the index of the first occurrence of the specified element in the list, or -1 if the specified\n * element is not contained in the list.\n */\n public fun indexOf(element: @UnsafeVariance E): Int\n\n /**\n * Returns the index of the last occurrence of the specified element in the list, or -1 if the specified\n * element is not contained in the list.\n */\n public fun lastIndexOf(element: @UnsafeVariance E): Int\n\n // List Iterators\n /**\n * Returns a list iterator over the elements in this list (in proper sequence).\n */\n public fun listIterator(): ListIterator\n\n /**\n * Returns a list iterator over the elements in this list (in proper sequence), starting at the specified [index].\n */\n public fun listIterator(index: Int): ListIterator\n\n // View\n /**\n * Returns a view of the portion of this list between the specified [fromIndex] (inclusive) and [toIndex] (exclusive).\n * The returned list is backed by this list, so non-structural changes in the returned list are reflected in this list, and vice-versa.\n *\n * Structural changes in the base list make the behavior of the view undefined.\n */\n public fun subList(fromIndex: Int, toIndex: Int): List\n}\n\n/**\n * A generic ordered collection of elements that supports adding and removing elements.\n * @param E the type of elements contained in the list. The mutable list is invariant on its element type.\n */\npublic interface MutableList : List, MutableCollection {\n // Modification Operations\n /**\n * Adds the specified element to the end of this list.\n *\n * @return `true` because the list is always modified as the result of this operation.\n */\n override fun add(element: E): Boolean\n\n override fun remove(element: E): Boolean\n\n // Bulk Modification Operations\n /**\n * Adds all of the elements of the specified collection to the end of this list.\n *\n * The elements are appended in the order they appear in the [elements] collection.\n *\n * @return `true` if the list was changed as the result of the operation.\n */\n override fun addAll(elements: Collection): Boolean\n\n /**\n * Inserts all of the elements of the specified collection [elements] into this list at the specified [index].\n *\n * @return `true` if the list was changed as the result of the operation.\n */\n public fun addAll(index: Int, elements: Collection): Boolean\n\n override fun removeAll(elements: Collection): Boolean\n override fun retainAll(elements: Collection): Boolean\n override fun clear(): Unit\n\n // Positional Access Operations\n /**\n * Replaces the element at the specified position in this list with the specified element.\n *\n * @return the element previously at the specified position.\n */\n public operator fun set(index: Int, element: E): E\n\n /**\n * Inserts an element into the list at the specified [index].\n */\n public fun add(index: Int, element: E): Unit\n\n /**\n * Removes an element at the specified [index] from the list.\n *\n * @return the element that has been removed.\n */\n public fun removeAt(index: Int): E\n\n // List Iterators\n override fun listIterator(): MutableListIterator\n\n override fun listIterator(index: Int): MutableListIterator\n\n // View\n override fun subList(fromIndex: Int, toIndex: Int): MutableList\n}\n\n/**\n * A generic unordered collection of elements that does not support duplicate elements.\n * Methods in this interface support only read-only access to the set;\n * read/write access is supported through the [MutableSet] interface.\n * @param E the type of elements contained in the set. The set is covariant on its element type.\n */\npublic interface Set : Collection {\n // Query Operations\n\n override val size: Int\n override fun isEmpty(): Boolean\n override fun contains(element: @UnsafeVariance E): Boolean\n override fun iterator(): Iterator\n\n // Bulk Operations\n override fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean\n}\n\n/**\n * A generic unordered collection of elements that does not support duplicate elements, and supports\n * adding and removing elements.\n * @param E the type of elements contained in the set. The mutable set is invariant on its element type.\n */\npublic interface MutableSet : Set, MutableCollection {\n // Query Operations\n override fun iterator(): MutableIterator\n\n // Modification Operations\n\n /**\n * Adds the specified element to the set.\n *\n * @return `true` if the element has been added, `false` if the element is already contained in the set.\n */\n override fun add(element: E): Boolean\n\n override fun remove(element: E): Boolean\n\n // Bulk Modification Operations\n\n override fun addAll(elements: Collection): Boolean\n override fun removeAll(elements: Collection): Boolean\n override fun retainAll(elements: Collection): Boolean\n override fun clear(): Unit\n}\n\n/**\n * A collection that holds pairs of objects (keys and values) and supports efficiently retrieving\n * the value corresponding to each key. Map keys are unique; the map holds only one value for each key.\n * Methods in this interface support only read-only access to the map; read-write access is supported through\n * the [MutableMap] interface.\n * @param K the type of map keys. The map is invariant on its key type, as it\n * can accept key as a parameter (of [containsKey] for example) and return it in [keys] set.\n * @param V the type of map values. The map is covariant on its value type.\n */\npublic interface Map {\n // Query Operations\n /**\n * Returns the number of key/value pairs in the map.\n */\n public val size: Int\n\n /**\n * Returns `true` if the map is empty (contains no elements), `false` otherwise.\n */\n public fun isEmpty(): Boolean\n\n /**\n * Returns `true` if the map contains the specified [key].\n */\n public fun containsKey(key: K): Boolean\n\n /**\n * Returns `true` if the map maps one or more keys to the specified [value].\n */\n public fun containsValue(value: @UnsafeVariance V): Boolean\n\n /**\n * Returns the value corresponding to the given [key], or `null` if such a key is not present in the map.\n */\n public operator fun get(key: K): V?\n\n /**\n * Returns the value corresponding to the given [key], or [defaultValue] if such a key is not present in the map.\n *\n * @since JDK 1.8\n */\n @SinceKotlin(\"1.1\")\n @PlatformDependent\n public fun getOrDefault(key: K, defaultValue: @UnsafeVariance V): V {\n // See default implementation in JDK sources\n return null as V\n }\n\n // Views\n /**\n * Returns a read-only [Set] of all keys in this map.\n */\n public val keys: Set\n\n /**\n * Returns a read-only [Collection] of all values in this map. Note that this collection may contain duplicate values.\n */\n public val values: Collection\n\n /**\n * Returns a read-only [Set] of all key/value pairs in this map.\n */\n public val entries: Set>\n\n /**\n * Represents a key/value pair held by a [Map].\n */\n public interface Entry {\n /**\n * Returns the key of this key/value pair.\n */\n public val key: K\n\n /**\n * Returns the value of this key/value pair.\n */\n public val value: V\n }\n}\n\n/**\n * A modifiable collection that holds pairs of objects (keys and values) and supports efficiently retrieving\n * the value corresponding to each key. Map keys are unique; the map holds only one value for each key.\n * @param K the type of map keys. The map is invariant on its key type.\n * @param V the type of map values. The mutable map is invariant on its value type.\n */\npublic interface MutableMap : Map {\n // Modification Operations\n /**\n * Associates the specified [value] with the specified [key] in the map.\n *\n * @return the previous value associated with the key, or `null` if the key was not present in the map.\n */\n public fun put(key: K, value: V): V?\n\n /**\n * Removes the specified key and its corresponding value from this map.\n *\n * @return the previous value associated with the key, or `null` if the key was not present in the map.\n */\n public fun remove(key: K): V?\n\n /**\n * Removes the entry for the specified key only if it is mapped to the specified value.\n *\n * @return true if entry was removed\n */\n @SinceKotlin(\"1.1\")\n @PlatformDependent\n public fun remove(key: K, value: V): Boolean {\n // See default implementation in JDK sources\n return true\n }\n\n // Bulk Modification Operations\n /**\n * Updates this map with key/value pairs from the specified map [from].\n */\n public fun putAll(from: Map): Unit\n\n /**\n * Removes all elements from this map.\n */\n public fun clear(): Unit\n\n // Views\n /**\n * Returns a [MutableSet] of all keys in this map.\n */\n override val keys: MutableSet\n\n /**\n * Returns a [MutableCollection] of all values in this map. Note that this collection may contain duplicate values.\n */\n override val values: MutableCollection\n\n /**\n * Returns a [MutableSet] of all key/value pairs in this map.\n */\n override val entries: MutableSet>\n\n /**\n * Represents a key/value pair held by a [MutableMap].\n */\n public interface MutableEntry : Map.Entry {\n /**\n * Changes the value associated with the key of this entry.\n *\n * @return the previous value corresponding to the key.\n */\n public fun setValue(newValue: V): V\n }\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.collections\n\n/** An iterator over a sequence of values of type `Byte`. */\npublic abstract class ByteIterator : Iterator {\n override final fun next() = nextByte()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextByte(): Byte\n}\n\n/** An iterator over a sequence of values of type `Char`. */\npublic abstract class CharIterator : Iterator {\n override final fun next() = nextChar()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextChar(): Char\n}\n\n/** An iterator over a sequence of values of type `Short`. */\npublic abstract class ShortIterator : Iterator {\n override final fun next() = nextShort()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextShort(): Short\n}\n\n/** An iterator over a sequence of values of type `Int`. */\npublic abstract class IntIterator : Iterator {\n override final fun next() = nextInt()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextInt(): Int\n}\n\n/** An iterator over a sequence of values of type `Long`. */\npublic abstract class LongIterator : Iterator {\n override final fun next() = nextLong()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextLong(): Long\n}\n\n/** An iterator over a sequence of values of type `Float`. */\npublic abstract class FloatIterator : Iterator {\n override final fun next() = nextFloat()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextFloat(): Float\n}\n\n/** An iterator over a sequence of values of type `Double`. */\npublic abstract class DoubleIterator : Iterator {\n override final fun next() = nextDouble()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextDouble(): Double\n}\n\n/** An iterator over a sequence of values of type `Boolean`. */\npublic abstract class BooleanIterator : Iterator {\n override final fun next() = nextBoolean()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextBoolean(): Boolean\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.ranges\n\n/**\n * An iterator over a progression of values of type `Char`.\n * @property step the number by which the value is incremented on each step.\n */\ninternal class CharProgressionIterator(first: Char, last: Char, val step: Int) : CharIterator() {\n private val finalElement = last.toInt()\n private var hasNext: Boolean = if (step > 0) first <= last else first >= last\n private var next = if (hasNext) first.toInt() else finalElement\n\n override fun hasNext(): Boolean = hasNext\n\n override fun nextChar(): Char {\n val value = next\n if (value == finalElement) {\n if (!hasNext) throw kotlin.NoSuchElementException()\n hasNext = false\n }\n else {\n next += step\n }\n return value.toChar()\n }\n}\n\n/**\n * An iterator over a progression of values of type `Int`.\n * @property step the number by which the value is incremented on each step.\n */\ninternal class IntProgressionIterator(first: Int, last: Int, val step: Int) : IntIterator() {\n private val finalElement = last\n private var hasNext: Boolean = if (step > 0) first <= last else first >= last\n private var next = if (hasNext) first else finalElement\n\n override fun hasNext(): Boolean = hasNext\n\n override fun nextInt(): Int {\n val value = next\n if (value == finalElement) {\n if (!hasNext) throw kotlin.NoSuchElementException()\n hasNext = false\n }\n else {\n next += step\n }\n return value\n }\n}\n\n/**\n * An iterator over a progression of values of type `Long`.\n * @property step the number by which the value is incremented on each step.\n */\ninternal class LongProgressionIterator(first: Long, last: Long, val step: Long) : LongIterator() {\n private val finalElement = last\n private var hasNext: Boolean = if (step > 0) first <= last else first >= last\n private var next = if (hasNext) first else finalElement\n\n override fun hasNext(): Boolean = hasNext\n\n override fun nextLong(): Long {\n val value = next\n if (value == finalElement) {\n if (!hasNext) throw kotlin.NoSuchElementException()\n hasNext = false\n }\n else {\n next += step\n }\n return value\n }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.ranges\n\nimport kotlin.internal.getProgressionLastElement\n\n/**\n * A progression of values of type `Char`.\n */\npublic open class CharProgression\n internal constructor\n (\n start: Char,\n endInclusive: Char,\n step: Int\n ) : Iterable {\n init {\n if (step == 0) throw kotlin.IllegalArgumentException(\"Step must be non-zero.\")\n if (step == Int.MIN_VALUE) throw kotlin.IllegalArgumentException(\"Step must be greater than Int.MIN_VALUE to avoid overflow on negation.\")\n }\n\n /**\n * The first element in the progression.\n */\n public val first: Char = start\n\n /**\n * The last element in the progression.\n */\n public val last: Char = getProgressionLastElement(start.toInt(), endInclusive.toInt(), step).toChar()\n\n /**\n * The step of the progression.\n */\n public val step: Int = step\n\n override fun iterator(): CharIterator = CharProgressionIterator(first, last, step)\n\n /** Checks if the progression is empty. */\n public open fun isEmpty(): Boolean = if (step > 0) first > last else first < last\n\n override fun equals(other: Any?): Boolean =\n other is CharProgression && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last && step == other.step)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (31 * first.toInt() + last.toInt()) + step)\n\n override fun toString(): String = if (step > 0) \"$first..$last step $step\" else \"$first downTo $last step ${-step}\"\n\n companion object {\n /**\n * Creates CharProgression within the specified bounds of a closed range.\n\n * The progression starts with the [rangeStart] value and goes toward the [rangeEnd] value not excluding it, with the specified [step].\n * In order to go backwards the [step] must be negative.\n *\n * [step] must be greater than `Int.MIN_VALUE` and not equal to zero.\n */\n public fun fromClosedRange(rangeStart: Char, rangeEnd: Char, step: Int): CharProgression = CharProgression(rangeStart, rangeEnd, step)\n }\n}\n\n/**\n * A progression of values of type `Int`.\n */\npublic open class IntProgression\n internal constructor\n (\n start: Int,\n endInclusive: Int,\n step: Int\n ) : Iterable {\n init {\n if (step == 0) throw kotlin.IllegalArgumentException(\"Step must be non-zero.\")\n if (step == Int.MIN_VALUE) throw kotlin.IllegalArgumentException(\"Step must be greater than Int.MIN_VALUE to avoid overflow on negation.\")\n }\n\n /**\n * The first element in the progression.\n */\n public val first: Int = start\n\n /**\n * The last element in the progression.\n */\n public val last: Int = getProgressionLastElement(start.toInt(), endInclusive.toInt(), step).toInt()\n\n /**\n * The step of the progression.\n */\n public val step: Int = step\n\n override fun iterator(): IntIterator = IntProgressionIterator(first, last, step)\n\n /** Checks if the progression is empty. */\n public open fun isEmpty(): Boolean = if (step > 0) first > last else first < last\n\n override fun equals(other: Any?): Boolean =\n other is IntProgression && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last && step == other.step)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (31 * first + last) + step)\n\n override fun toString(): String = if (step > 0) \"$first..$last step $step\" else \"$first downTo $last step ${-step}\"\n\n companion object {\n /**\n * Creates IntProgression within the specified bounds of a closed range.\n\n * The progression starts with the [rangeStart] value and goes toward the [rangeEnd] value not excluding it, with the specified [step].\n * In order to go backwards the [step] must be negative.\n *\n * [step] must be greater than `Int.MIN_VALUE` and not equal to zero.\n */\n public fun fromClosedRange(rangeStart: Int, rangeEnd: Int, step: Int): IntProgression = IntProgression(rangeStart, rangeEnd, step)\n }\n}\n\n/**\n * A progression of values of type `Long`.\n */\npublic open class LongProgression\n internal constructor\n (\n start: Long,\n endInclusive: Long,\n step: Long\n ) : Iterable {\n init {\n if (step == 0L) throw kotlin.IllegalArgumentException(\"Step must be non-zero.\")\n if (step == Long.MIN_VALUE) throw kotlin.IllegalArgumentException(\"Step must be greater than Long.MIN_VALUE to avoid overflow on negation.\")\n }\n\n /**\n * The first element in the progression.\n */\n public val first: Long = start\n\n /**\n * The last element in the progression.\n */\n public val last: Long = getProgressionLastElement(start.toLong(), endInclusive.toLong(), step).toLong()\n\n /**\n * The step of the progression.\n */\n public val step: Long = step\n\n override fun iterator(): LongIterator = LongProgressionIterator(first, last, step)\n\n /** Checks if the progression is empty. */\n public open fun isEmpty(): Boolean = if (step > 0) first > last else first < last\n\n override fun equals(other: Any?): Boolean =\n other is LongProgression && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last && step == other.step)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (31 * (first xor (first ushr 32)) + (last xor (last ushr 32))) + (step xor (step ushr 32))).toInt()\n\n override fun toString(): String = if (step > 0) \"$first..$last step $step\" else \"$first downTo $last step ${-step}\"\n\n companion object {\n /**\n * Creates LongProgression within the specified bounds of a closed range.\n\n * The progression starts with the [rangeStart] value and goes toward the [rangeEnd] value not excluding it, with the specified [step].\n * In order to go backwards the [step] must be negative.\n *\n * [step] must be greater than `Long.MIN_VALUE` and not equal to zero.\n */\n public fun fromClosedRange(rangeStart: Long, rangeEnd: Long, step: Long): LongProgression = LongProgression(rangeStart, rangeEnd, step)\n }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.ranges\n\n/**\n * Represents a range of values (for example, numbers or characters).\n * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/ranges.html) for more information.\n */\npublic interface ClosedRange> {\n /**\n * The minimum value in the range.\n */\n public val start: T\n\n /**\n * The maximum value in the range (inclusive).\n */\n public val endInclusive: T\n\n /**\n * Checks whether the specified [value] belongs to the range.\n */\n public operator fun contains(value: T): Boolean = value >= start && value <= endInclusive\n\n /**\n * Checks whether the range is empty.\n */\n public fun isEmpty(): Boolean = start > endInclusive\n}\n","/*\n * Copyright 2010-2015 JetBrains s.r.o.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage kotlin\n\n/**\n * The type with only one value: the `Unit` object. This type corresponds to the `void` type in Java.\n */\npublic object Unit {\n override fun toString() = \"kotlin.Unit\"\n}\n","/*\n * Copyright 2010-2015 JetBrains s.r.o.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage kotlin.annotation\n\nimport kotlin.annotation.AnnotationTarget.*\n\n/**\n * Contains the list of code elements which are the possible annotation targets\n */\npublic enum class AnnotationTarget {\n /** Class, interface or object, annotation class is also included */\n CLASS,\n /** Annotation class only */\n ANNOTATION_CLASS,\n /** Generic type parameter (unsupported yet) */\n TYPE_PARAMETER,\n /** Property */\n PROPERTY,\n /** Field, including property's backing field */\n FIELD,\n /** Local variable */\n LOCAL_VARIABLE,\n /** Value parameter of a function or a constructor */\n VALUE_PARAMETER,\n /** Constructor only (primary or secondary) */\n CONSTRUCTOR,\n /** Function (constructors are not included) */\n FUNCTION,\n /** Property getter only */\n PROPERTY_GETTER,\n /** Property setter only */\n PROPERTY_SETTER,\n /** Type usage */\n TYPE,\n /** Any expression */\n EXPRESSION,\n /** File */\n FILE,\n /** Type alias */\n @SinceKotlin(\"1.1\")\n TYPEALIAS\n}\n\n/**\n * Contains the list of possible annotation's retentions.\n *\n * Determines how an annotation is stored in binary output.\n */\npublic enum class AnnotationRetention {\n /** Annotation isn't stored in binary output */\n SOURCE,\n /** Annotation is stored in binary output, but invisible for reflection */\n BINARY,\n /** Annotation is stored in binary output and visible for reflection (default retention) */\n RUNTIME\n}\n\n/**\n * This meta-annotation indicates the kinds of code elements which are possible targets of an annotation.\n *\n * If the target meta-annotation is not present on an annotation declaration, the annotation is applicable to the following elements:\n * [CLASS], [PROPERTY], [FIELD], [LOCAL_VARIABLE], [VALUE_PARAMETER], [CONSTRUCTOR], [FUNCTION], [PROPERTY_GETTER], [PROPERTY_SETTER].\n *\n * @property allowedTargets list of allowed annotation targets\n */\n@Target(AnnotationTarget.ANNOTATION_CLASS)\n@MustBeDocumented\npublic annotation class Target(vararg val allowedTargets: AnnotationTarget)\n\n/**\n * This meta-annotation determines whether an annotation is stored in binary output and visible for reflection. By default, both are true.\n *\n * @property value necessary annotation retention (RUNTIME, BINARY or SOURCE)\n */\n@Target(AnnotationTarget.ANNOTATION_CLASS)\npublic annotation class Retention(val value: AnnotationRetention = AnnotationRetention.RUNTIME)\n\n/**\n * This meta-annotation determines that an annotation is applicable twice or more on a single code element\n */\n@Target(AnnotationTarget.ANNOTATION_CLASS)\npublic annotation class Repeatable\n\n/**\n * This meta-annotation determines that an annotation is a part of public API and therefore should be included in the generated\n * documentation for the element to which the annotation is applied.\n */\n@Target(AnnotationTarget.ANNOTATION_CLASS)\npublic annotation class MustBeDocumented\n","/*\n * Copyright 2010-2016 JetBrains s.r.o.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage kotlin.internal\n\n/**\n * Specifies that the corresponding type parameter is not used for unsafe operations such as casts or 'is' checks\n * That means it's completely safe to use generic types as argument for such parameter.\n */\n@Target(AnnotationTarget.TYPE_PARAMETER)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class PureReifiable\n\n/**\n * Specifies that the corresponding built-in method exists depending on platform.\n * Current implementation for JVM looks whether method with same JVM descriptor exists in the module JDK.\n * For example MutableMap.remove(K, V) available only if corresponding\n * method 'java/util/Map.remove(Ljava/lang/Object;Ljava/lang/Object;)Z' is defined in JDK (i.e. for major versions >= 8)\n */\n@Target(AnnotationTarget.FUNCTION)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class PlatformDependent\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.internal\n\n// a mod b (in arithmetical sense)\nprivate fun mod(a: Int, b: Int): Int {\n val mod = a % b\n return if (mod >= 0) mod else mod + b\n}\n\nprivate fun mod(a: Long, b: Long): Long {\n val mod = a % b\n return if (mod >= 0) mod else mod + b\n}\n\n// (a - b) mod c\nprivate fun differenceModulo(a: Int, b: Int, c: Int): Int {\n return mod(mod(a, c) - mod(b, c), c)\n}\n\nprivate fun differenceModulo(a: Long, b: Long, c: Long): Long {\n return mod(mod(a, c) - mod(b, c), c)\n}\n\n/**\n * Calculates the final element of a bounded arithmetic progression, i.e. the last element of the progression which is in the range\n * from [start] to [end] in case of a positive [step], or from [end] to [start] in case of a negative\n * [step].\n *\n * No validation on passed parameters is performed. The given parameters should satisfy the condition:\n *\n * - either `step > 0` and `start <= end`,\n * - or `step < 0` and `start >= end`.\n *\n * @param start first element of the progression\n * @param end ending bound for the progression\n * @param step increment, or difference of successive elements in the progression\n * @return the final element of the progression\n * @suppress\n */\n@PublishedApi\ninternal fun getProgressionLastElement(start: Int, end: Int, step: Int): Int = when {\n step > 0 -> if (start >= end) end else end - differenceModulo(end, start, step)\n step < 0 -> if (start <= end) end else end + differenceModulo(start, end, -step)\n else -> throw kotlin.IllegalArgumentException(\"Step is zero.\")\n}\n\n/**\n * Calculates the final element of a bounded arithmetic progression, i.e. the last element of the progression which is in the range\n * from [start] to [end] in case of a positive [step], or from [end] to [start] in case of a negative\n * [step].\n *\n * No validation on passed parameters is performed. The given parameters should satisfy the condition:\n *\n * - either `step > 0` and `start <= end`,\n * - or `step < 0` and `start >= end`.\n *\n * @param start first element of the progression\n * @param end ending bound for the progression\n * @param step increment, or difference of successive elements in the progression\n * @return the final element of the progression\n * @suppress\n */\n@PublishedApi\ninternal fun getProgressionLastElement(start: Long, end: Long, step: Long): Long = when {\n step > 0 -> if (start >= end) end else end - differenceModulo(end, start, step)\n step < 0 -> if (start <= end) end else end + differenceModulo(start, end, -step)\n else -> throw kotlin.IllegalArgumentException(\"Step is zero.\")\n}\n","/*\n * Copyright 2010-2015 JetBrains s.r.o.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage kotlin.reflect\n\n/**\n * Represents a parameter passed to a function or a property getter/setter,\n * including `this` and extension receiver parameters.\n */\npublic interface KParameter : KAnnotatedElement {\n /**\n * 0-based index of this parameter in the parameter list of its containing callable.\n */\n public val index: Int\n\n /**\n * Name of this parameter as it was declared in the source code,\n * or `null` if the parameter has no name or its name is not available at runtime.\n * Examples of nameless parameters include `this` instance for member functions,\n * extension receiver for extension functions or properties, parameters of Java methods\n * compiled without the debug information, and others.\n */\n public val name: String?\n\n /**\n * Type of this parameter. For a `vararg` parameter, this is the type of the corresponding array,\n * not the individual element.\n */\n public val type: KType\n\n /**\n * Kind of this parameter.\n */\n public val kind: Kind\n\n /**\n * Kind represents a particular position of the parameter declaration in the source code,\n * such as an instance, an extension receiver parameter or a value parameter.\n */\n public enum class Kind {\n /** Instance required to make a call to the member, or an outer class instance for an inner class constructor. */\n INSTANCE,\n\n /** Extension receiver of an extension function or property. */\n EXTENSION_RECEIVER,\n\n /** Ordinary named value parameter. */\n VALUE,\n }\n\n /**\n * `true` if this parameter is optional and can be omitted when making a call via [KCallable.callBy], or `false` otherwise.\n *\n * A parameter is optional in any of the two cases:\n * 1. The default value is provided at the declaration of this parameter.\n * 2. The parameter is declared in a member function and one of the corresponding parameters in the super functions is optional.\n */\n public val isOptional: Boolean\n\n /**\n * `true` if this parameter is `vararg`.\n * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/functions.html#variable-number-of-arguments-varargs)\n * for more information.\n */\n @SinceKotlin(\"1.1\")\n public val isVararg: Boolean\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.reflect\n\n/**\n * Represents a type. Type is usually either a class with optional type arguments,\n * or a type parameter of some declaration, plus nullability.\n */\npublic interface KType : KAnnotatedElement {\n /**\n * The declaration of the classifier used in this type.\n * For example, in the type `List` the classifier would be the [KClass] instance for [List].\n *\n * Returns `null` if this type is not denotable in Kotlin, for example if it is an intersection type.\n */\n @SinceKotlin(\"1.1\")\n public val classifier: KClassifier?\n\n /**\n * Type arguments passed for the parameters of the classifier in this type.\n * For example, in the type `Array` the only type argument is `out Number`.\n *\n * In case this type is based on an inner class, the returned list contains the type arguments provided for the innermost class first,\n * then its outer class, and so on.\n * For example, in the type `Outer.Inner` the returned list is `[C, D, A, B]`.\n */\n @SinceKotlin(\"1.1\")\n public val arguments: List\n\n /**\n * `true` if this type was marked nullable in the source code.\n *\n * For Kotlin types, it means that `null` value is allowed to be represented by this type.\n * In practice it means that the type was declared with a question mark at the end.\n * For non-Kotlin types, it means the type or the symbol which was declared with this type\n * is annotated with a runtime-retained nullability annotation such as [javax.annotation.Nullable].\n *\n * Note that even if [isMarkedNullable] is false, values of the type can still be `null`.\n * This may happen if it is a type of the type parameter with a nullable upper bound:\n *\n * ```\n * fun foo(t: T) {\n * // isMarkedNullable == false for t's type, but t can be null here when T = \"Any?\"\n * }\n * ```\n */\n public val isMarkedNullable: Boolean\n}\n\n/**\n * Represents a type projection. Type projection is usually the argument to another type in a type usage.\n * For example, in the type `Array`, `out Number` is the covariant projection of the type represented by the class `Number`.\n *\n * Type projection is either the star projection, or an entity consisting of a specific type plus optional variance.\n *\n * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/generics.html#type-projections)\n * for more information.\n */\n@SinceKotlin(\"1.1\")\npublic data class KTypeProjection constructor(\n /**\n * The use-site variance specified in the projection, or `null` if this is a star projection.\n */\n public val variance: KVariance?,\n /**\n * The type specified in the projection, or `null` if this is a star projection.\n */\n public val type: KType?\n) {\n public companion object {\n /**\n * Star projection, denoted by the `*` character.\n * For example, in the type `KClass<*>`, `*` is the star projection.\n * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/generics.html#star-projections)\n * for more information.\n */\n public val STAR: KTypeProjection = KTypeProjection(null, null)\n\n /**\n * Creates an invariant projection of a given type. Invariant projection is just the type itself,\n * without any use-site variance modifiers applied to it.\n * For example, in the type `Set`, `String` is an invariant projection of the type represented by the class `String`.\n */\n public fun invariant(type: KType): KTypeProjection =\n KTypeProjection(KVariance.INVARIANT, type)\n\n /**\n * Creates a contravariant projection of a given type, denoted by the `in` modifier applied to a type.\n * For example, in the type `MutableList`, `in Number` is a contravariant projection of the type of class `Number`.\n */\n public fun contravariant(type: KType): KTypeProjection =\n KTypeProjection(KVariance.IN, type)\n\n /**\n * Creates a covariant projection of a given type, denoted by the `out` modifier applied to a type.\n * For example, in the type `Array`, `out Number` is a covariant projection of the type of class `Number`.\n */\n public fun covariant(type: KType): KTypeProjection =\n KTypeProjection(KVariance.OUT, type)\n }\n}\n","/*\n * Copyright 2010-2016 JetBrains s.r.o.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage kotlin.reflect\n\n/**\n * Represents variance applied to a type parameter on the declaration site (*declaration-site variance*),\n * or to a type in a projection (*use-site variance*).\n *\n * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/generics.html#variance)\n * for more information.\n *\n * @see [KTypeParameter.variance]\n * @see [KTypeProjection]\n */\n@SinceKotlin(\"1.1\")\nenum class KVariance {\n /**\n * The affected type parameter or type is *invariant*, which means it has no variance applied to it.\n */\n INVARIANT,\n\n /**\n * The affected type parameter or type is *contravariant*. Denoted by the `in` modifier in the source code.\n */\n IN,\n\n /**\n * The affected type parameter or type is *covariant*. Denoted by the `out` modifier in the source code.\n */\n OUT,\n}\n","/*\n * Copyright 2010-2016 JetBrains s.r.o.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage kotlin.reflect\n\n/**\n * Visibility is an aspect of a Kotlin declaration regulating where that declaration is accessible in the source code.\n * Visibility can be changed with one of the following modifiers: `public`, `protected`, `internal`, `private`.\n *\n * Note that some Java visibilities such as package-private and protected (which also gives access to items from the same package)\n * cannot be represented in Kotlin, so there's no [KVisibility] value corresponding to them.\n *\n * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/visibility-modifiers.html)\n * for more information.\n */\n@SinceKotlin(\"1.1\")\nenum class KVisibility {\n /**\n * Visibility of declarations marked with the `public` modifier, or with no modifier at all.\n */\n PUBLIC,\n\n /**\n * Visibility of declarations marked with the `protected` modifier.\n */\n PROTECTED,\n\n /**\n * Visibility of declarations marked with the `internal` modifier.\n */\n INTERNAL,\n\n /**\n * Visibility of declarations marked with the `private` modifier.\n */\n PRIVATE,\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@JsName(\"arrayIterator\")\ninternal fun arrayIterator(array: dynamic, type: String?) = when (type) {\n null -> {\n val arr: Array = array\n object : Iterator {\n var index = 0\n override fun hasNext() = index < arr.size\n override fun next() = if (index < arr.size) arr[index++] else throw NoSuchElementException(\"$index\")\n }\n }\n \"BooleanArray\" -> booleanArrayIterator(array)\n \"ByteArray\" -> byteArrayIterator(array)\n \"ShortArray\" -> shortArrayIterator(array)\n \"CharArray\" -> charArrayIterator(array)\n \"IntArray\" -> intArrayIterator(array)\n \"LongArray\" -> longArrayIterator(array)\n \"FloatArray\" -> floatArrayIterator(array)\n \"DoubleArray\" -> doubleArrayIterator(array)\n else -> throw IllegalStateException(\"Unsupported type argument for arrayIterator: $type\")\n}\n\n@JsName(\"booleanArrayIterator\")\ninternal fun booleanArrayIterator(array: BooleanArray) = object : BooleanIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextBoolean() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"byteArrayIterator\")\ninternal fun byteArrayIterator(array: ByteArray) = object : ByteIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextByte() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"shortArrayIterator\")\ninternal fun shortArrayIterator(array: ShortArray) = object : ShortIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextShort() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"charArrayIterator\")\ninternal fun charArrayIterator(array: CharArray) = object : CharIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextChar() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"intArrayIterator\")\ninternal fun intArrayIterator(array: IntArray) = object : IntIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextInt() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"floatArrayIterator\")\ninternal fun floatArrayIterator(array: FloatArray) = object : FloatIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextFloat() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"doubleArrayIterator\")\ninternal fun doubleArrayIterator(array: DoubleArray) = object : DoubleIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextDouble() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"longArrayIterator\")\ninternal fun longArrayIterator(array: LongArray) = object : LongIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextLong() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"PropertyMetadata\")\ninternal class PropertyMetadata(@JsName(\"callableName\") val name: String)\n\n@JsName(\"noWhenBranchMatched\")\ninternal fun noWhenBranchMatched(): Nothing = throw NoWhenBranchMatchedException()\n\n@JsName(\"subSequence\")\ninternal fun subSequence(c: CharSequence, startIndex: Int, endIndex: Int): CharSequence {\n if (c is String) {\n return c.substring(startIndex, endIndex)\n } else {\n return c.asDynamic().`subSequence_vux9f0$`(startIndex, endIndex)\n }\n}\n\n@JsName(\"captureStack\")\ninternal fun captureStack(baseClass: JsClass, instance: Throwable) {\n if (js(\"Error\").captureStackTrace) {\n js(\"Error\").captureStackTrace(instance, instance::class.js);\n } else {\n instance.asDynamic().stack = js(\"new Error()\").stack;\n }\n}\n\n@JsName(\"newThrowable\")\ninternal fun newThrowable(message: String?, cause: Throwable?): Throwable {\n val throwable = js(\"new Error()\")\n throwable.message = if (jsTypeOf(message) == \"undefined\") {\n if (cause != null) cause.toString() else null\n } else {\n message\n }\n throwable.cause = cause\n throwable.name = \"Throwable\"\n return throwable\n}\n\n@JsName(\"BoxedChar\")\ninternal class BoxedChar(val c: Int) : Comparable {\n override fun equals(other: Any?): Boolean {\n return other is BoxedChar && c == other.c\n }\n\n override fun hashCode(): Int {\n return c\n }\n\n override fun toString(): String {\n return js(\"this.c\").unsafeCast().toString()\n }\n\n override fun compareTo(other: Int): Int {\n return js(\"this.c - other\").unsafeCast()\n }\n\n @JsName(\"valueOf\")\n public fun valueOf(): Int {\n return c\n }\n}\n\n@kotlin.internal.InlineOnly\ninternal inline fun concat(args: Array): T {\n val typed = js(\"Array\")(args.size)\n for (i in args.indices) {\n val arr = args[i]\n if (arr !is Array<*>) {\n typed[i] = js(\"[]\").slice.call(arr)\n } else {\n typed[i] = arr\n }\n }\n return js(\"[]\").concat.apply(js(\"[]\"), typed);\n}\n\n/** Concat regular Array's and TypedArray's into an Array.\n */\n@PublishedApi\n@JsName(\"arrayConcat\")\n@Suppress(\"UNUSED_PARAMETER\")\ninternal fun arrayConcat(a: T, b: T): T {\n return concat(js(\"arguments\"))\n}\n\n/** Concat primitive arrays. Main use: prepare vararg arguments.\n * For compatibility with 1.1.0 the arguments may be a mixture of Array's and TypedArray's.\n *\n * If the first argument is TypedArray (Byte-, Short-, Char-, Int-, Float-, and DoubleArray) returns a TypedArray, otherwise an Array.\n * If the first argument has the $type$ property (Boolean-, Char-, and LongArray) copy its value to result.$type$.\n * If the first argument is a regular Array without the $type$ property default to arrayConcat.\n */\n@PublishedApi\n@JsName(\"primitiveArrayConcat\")\n@Suppress(\"UNUSED_PARAMETER\")\ninternal fun primitiveArrayConcat(a: T, b: T): T {\n val args: Array = js(\"arguments\")\n if (a is Array<*> && a.asDynamic().`$type$` === undefined) {\n return concat(args)\n } else {\n var size = 0\n for (i in args.indices) {\n size += args[i].asDynamic().length as Int\n }\n val result = js(\"new a.constructor(size)\")\n kotlin.copyArrayType(a, result)\n size = 0\n for (i in args.indices) {\n val arr = args[i].asDynamic()\n for (j in 0 until arr.length) {\n result[size++] = arr[j]\n }\n }\n return result\n }\n}\n\n@JsName(\"booleanArrayOf\")\ninternal fun booleanArrayOf() = withType(\"BooleanArray\", js(\"[].slice.call(arguments)\"))\n\n@JsName(\"charArrayOf\") // The arguments have to be slice'd here because of Rhino (see KT-16974)\ninternal fun charArrayOf() = withType(\"CharArray\", js(\"new Uint16Array([].slice.call(arguments))\"))\n\n@JsName(\"longArrayOf\")\ninternal fun longArrayOf() = withType(\"LongArray\", js(\"[].slice.call(arguments)\"))\n\n@JsName(\"withType\")\n@kotlin.internal.InlineOnly\ninternal inline fun withType(type: String, array: dynamic): dynamic {\n array.`$type$` = type\n return array\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\n/**\n * Function corresponding to JavaScript's `typeof` operator\n */\n@kotlin.internal.InlineOnly\n@Suppress(\"UNUSED_PARAMETER\")\npublic inline fun jsTypeOf(a: Any?): String = js(\"typeof a\")\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:Suppress(\"UNUSED_PARAMETER\", \"NOTHING_TO_INLINE\")\n\npackage kotlin\n\n/**\n * Returns an empty array of the specified type [T].\n */\npublic inline fun emptyArray(): Array = js(\"[]\")\n\n@library\npublic fun arrayOf(vararg elements: T): Array = definedExternally\n\n@library\npublic fun doubleArrayOf(vararg elements: Double): DoubleArray = definedExternally\n\n@library\npublic fun floatArrayOf(vararg elements: Float): FloatArray = definedExternally\n\n@library\npublic fun longArrayOf(vararg elements: Long): LongArray = definedExternally\n\n@library\npublic fun intArrayOf(vararg elements: Int): IntArray = definedExternally\n\n@library\npublic fun charArrayOf(vararg elements: Char): CharArray = definedExternally\n\n@library\npublic fun shortArrayOf(vararg elements: Short): ShortArray = definedExternally\n\n@library\npublic fun byteArrayOf(vararg elements: Byte): ByteArray = definedExternally\n\n@library\npublic fun booleanArrayOf(vararg elements: Boolean): BooleanArray = definedExternally\n\n/**\n * Creates a new instance of the [Lazy] that uses the specified initialization function [initializer].\n */\npublic actual fun lazy(initializer: () -> T): Lazy = UnsafeLazyImpl(initializer)\n\n/**\n * Creates a new instance of the [Lazy] that uses the specified initialization function [initializer].\n *\n * The [mode] parameter is ignored. */\npublic actual fun lazy(mode: LazyThreadSafetyMode, initializer: () -> T): Lazy = UnsafeLazyImpl(initializer)\n\n/**\n * Creates a new instance of the [Lazy] that uses the specified initialization function [initializer].\n *\n * The [lock] parameter is ignored.\n */\npublic actual fun lazy(lock: Any?, initializer: () -> T): Lazy = UnsafeLazyImpl(initializer)\n\n\ninternal fun fillFrom(src: dynamic, dst: dynamic): dynamic {\n val srcLen: Int = src.length\n val dstLen: Int = dst.length\n var index: Int = 0\n while (index < srcLen && index < dstLen) dst[index] = src[index++]\n return dst\n}\n\n\ninternal fun arrayCopyResize(source: dynamic, newSize: Int, defaultValue: Any?): dynamic {\n val result = source.slice(0, newSize)\n copyArrayType(source, result)\n var index: Int = source.length\n if (newSize > index) {\n result.length = newSize\n while (index < newSize) result[index++] = defaultValue\n }\n return result\n}\n\ninternal fun arrayPlusCollection(array: dynamic, collection: Collection): dynamic {\n val result = array.slice()\n result.length += collection.size\n copyArrayType(array, result)\n var index: Int = array.length\n for (element in collection) result[index++] = element\n return result\n}\n\ninternal fun fillFromCollection(dst: dynamic, startIndex: Int, collection: Collection): dynamic {\n var index = startIndex\n for (element in collection) dst[index++] = element\n return dst\n}\n\ninternal inline fun copyArrayType(from: dynamic, to: dynamic) {\n if (from.`$type$` !== undefined) {\n to.`$type$` = from.`$type$`\n }\n}\n\ninternal inline fun jsIsType(obj: dynamic, jsClass: dynamic) = js(\"Kotlin\").isType(obj, jsClass)","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines\n\nimport kotlin.coroutines.intrinsics.COROUTINE_SUSPENDED\n\n@SinceKotlin(\"1.3\")\n@JsName(\"CoroutineImpl\")\ninternal abstract class CoroutineImpl(private val resultContinuation: Continuation) : Continuation {\n protected var state = 0\n protected var exceptionState = 0\n protected var result: Any? = null\n protected var exception: Throwable? = null\n protected var finallyPath: Array? = null\n\n public override val context: CoroutineContext = resultContinuation.context\n\n private var intercepted_: Continuation? = null\n\n public fun intercepted(): Continuation =\n intercepted_\n ?: (context[ContinuationInterceptor]?.interceptContinuation(this) ?: this)\n .also { intercepted_ = it }\n\n override fun resumeWith(result: Result) {\n var current = this\n var currentResult: Any? = result.getOrNull()\n var currentException: Throwable? = result.exceptionOrNull()\n\n // This loop unrolls recursion in current.resumeWith(param) to make saner and shorter stack traces on resume\n while (true) {\n with(current) {\n val completion = resultContinuation\n\n // Set result and exception fields in the current continuation\n if (currentException == null) {\n this.result = currentResult\n } else {\n state = exceptionState\n exception = currentException\n }\n\n try {\n val outcome = doResume()\n if (outcome === COROUTINE_SUSPENDED) return\n currentResult = outcome\n currentException = null\n } catch (exception: dynamic) { // Catch all exceptions\n currentResult = null\n currentException = exception.unsafeCast()\n }\n\n releaseIntercepted() // this state machine instance is terminating\n\n if (completion is CoroutineImpl) {\n // unrolling recursion via loop\n current = completion\n } else {\n // top-level completion reached -- invoke and return\n currentException?.let {\n completion.resumeWithException(it)\n } ?: completion.resume(currentResult)\n return\n }\n }\n }\n }\n\n private fun releaseIntercepted() {\n val intercepted = intercepted_\n if (intercepted != null && intercepted !== this) {\n context[ContinuationInterceptor]!!.releaseInterceptedContinuation(intercepted)\n }\n this.intercepted_ = CompletedContinuation // just in case\n }\n\n protected abstract fun doResume(): Any?\n}\n\ninternal object CompletedContinuation : Continuation {\n override val context: CoroutineContext\n get() = error(\"This continuation is already complete\")\n\n override fun resumeWith(result: Result) {\n error(\"This continuation is already complete\")\n }\n\n override fun toString(): String = \"This continuation is already complete\"\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:Suppress(\"UNCHECKED_CAST\", \"RedundantVisibilityModifier\")\n\npackage kotlin\n\nimport kotlin.contracts.*\nimport kotlin.internal.InlineOnly\nimport kotlin.jvm.JvmField\n\n/**\n * A discriminated union that encapsulates a successful outcome with a value of type [T]\n * or a failure with an arbitrary [Throwable] exception.\n */\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@SinceKotlin(\"1.3\")\npublic inline class Result @PublishedApi internal constructor(\n @PublishedApi\n internal val value: Any?\n) : Serializable {\n // discovery\n\n /**\n * Returns `true` if this instance represents a successful outcome.\n * In this case [isFailure] returns `false`.\n */\n public val isSuccess: Boolean get() = value !is Failure\n\n /**\n * Returns `true` if this instance represents a failed outcome.\n * In this case [isSuccess] returns `false`.\n */\n public val isFailure: Boolean get() = value is Failure\n\n // value & exception retrieval\n\n /**\n * Returns the encapsulated value if this instance represents [success][Result.isSuccess] or `null`\n * if it is [failure][Result.isFailure].\n *\n * This function is a shorthand for `getOrElse { null }` (see [getOrElse]) or\n * `fold(onSuccess = { it }, onFailure = { null })` (see [fold]).\n */\n @InlineOnly\n public inline fun getOrNull(): T? =\n when {\n isFailure -> null\n else -> value as T\n }\n\n /**\n * Returns the encapsulated [Throwable] exception if this instance represents [failure][isFailure] or `null`\n * if it is [success][isSuccess].\n *\n * This function is a shorthand for `fold(onSuccess = { null }, onFailure = { it })` (see [fold]).\n */\n public fun exceptionOrNull(): Throwable? =\n when (value) {\n is Failure -> value.exception\n else -> null\n }\n\n /**\n * Returns a string `Success(v)` if this instance represents [success][Result.isSuccess]\n * where `v` is a string representation of the value or a string `Failure(x)` if\n * it is [failure][isFailure] where `x` is a string representation of the exception.\n */\n public override fun toString(): String =\n when (value) {\n is Failure -> value.toString() // \"Failure($exception)\"\n else -> \"Success($value)\"\n }\n\n // companion with constructors\n\n /**\n * Companion object for [Result] class that contains its constructor functions\n * [success] and [failure].\n */\n public companion object {\n /**\n * Returns an instance that encapsulates the given [value] as successful value.\n */\n @InlineOnly\n public inline fun success(value: T): Result =\n Result(value)\n\n /**\n * Returns an instance that encapsulates the given [Throwable] [exception] as failure.\n */\n @InlineOnly\n public inline fun failure(exception: Throwable): Result =\n Result(createFailure(exception))\n }\n\n internal class Failure(\n @JvmField\n val exception: Throwable\n ) : Serializable {\n override fun equals(other: Any?): Boolean = other is Failure && exception == other.exception\n override fun hashCode(): Int = exception.hashCode()\n override fun toString(): String = \"Failure($exception)\"\n }\n}\n\n/**\n * Creates an instance of internal marker [Result.Failure] class to\n * make sure that this class is not exposed in ABI.\n */\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun createFailure(exception: Throwable): Any =\n Result.Failure(exception)\n\n/**\n * Throws exception if the result is failure. This internal function minimizes\n * inlined bytecode for [getOrThrow] and makes sure that in the future we can\n * add some exception-augmenting logic here (if needed).\n */\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun Result<*>.throwOnFailure() {\n if (value is Result.Failure) throw value.exception\n}\n\n/**\n * Calls the specified function [block] and returns its encapsulated result if invocation was successful,\n * catching any [Throwable] exception that was thrown from the [block] function execution and encapsulating it as a failure.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun runCatching(block: () -> R): Result {\n return try {\n Result.success(block())\n } catch (e: Throwable) {\n Result.failure(e)\n }\n}\n\n/**\n * Calls the specified function [block] with `this` value as its receiver and returns its encapsulated result if invocation was successful,\n * catching any [Throwable] exception that was thrown from the [block] function execution and encapsulating it as a failure.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun T.runCatching(block: T.() -> R): Result {\n return try {\n Result.success(block())\n } catch (e: Throwable) {\n Result.failure(e)\n }\n}\n\n// -- extensions ---\n\n/**\n * Returns the encapsulated value if this instance represents [success][Result.isSuccess] or throws the encapsulated [Throwable] exception\n * if it is [failure][Result.isFailure].\n *\n * This function is a shorthand for `getOrElse { throw it }` (see [getOrElse]).\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.getOrThrow(): T {\n throwOnFailure()\n return value as T\n}\n\n/**\n * Returns the encapsulated value if this instance represents [success][Result.isSuccess] or the\n * result of [onFailure] function for the encapsulated [Throwable] exception if it is [failure][Result.isFailure].\n *\n * Note, that this function rethrows any [Throwable] exception thrown by [onFailure] function.\n *\n * This function is a shorthand for `fold(onSuccess = { it }, onFailure = onFailure)` (see [fold]).\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.getOrElse(onFailure: (exception: Throwable) -> R): R {\n contract {\n callsInPlace(onFailure, InvocationKind.AT_MOST_ONCE)\n }\n return when (val exception = exceptionOrNull()) {\n null -> value as T\n else -> onFailure(exception)\n }\n}\n\n/**\n * Returns the encapsulated value if this instance represents [success][Result.isSuccess] or the\n * [defaultValue] if it is [failure][Result.isFailure].\n *\n * This function is a shorthand for `getOrElse { defaultValue }` (see [getOrElse]).\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.getOrDefault(defaultValue: R): R {\n if (isFailure) return defaultValue\n return value as T\n}\n\n/**\n * Returns the result of [onSuccess] for the encapsulated value if this instance represents [success][Result.isSuccess]\n * or the result of [onFailure] function for the encapsulated [Throwable] exception if it is [failure][Result.isFailure].\n *\n * Note, that this function rethrows any [Throwable] exception thrown by [onSuccess] or by [onFailure] function.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.fold(\n onSuccess: (value: T) -> R,\n onFailure: (exception: Throwable) -> R\n): R {\n contract {\n callsInPlace(onSuccess, InvocationKind.AT_MOST_ONCE)\n callsInPlace(onFailure, InvocationKind.AT_MOST_ONCE)\n }\n return when (val exception = exceptionOrNull()) {\n null -> onSuccess(value as T)\n else -> onFailure(exception)\n }\n}\n\n// transformation\n\n/**\n * Returns the encapsulated result of the given [transform] function applied to the encapsulated value\n * if this instance represents [success][Result.isSuccess] or the\n * original encapsulated [Throwable] exception if it is [failure][Result.isFailure].\n *\n * Note, that this function rethrows any [Throwable] exception thrown by [transform] function.\n * See [mapCatching] for an alternative that encapsulates exceptions.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.map(transform: (value: T) -> R): Result {\n contract {\n callsInPlace(transform, InvocationKind.AT_MOST_ONCE)\n }\n return when {\n isSuccess -> Result.success(transform(value as T))\n else -> Result(value)\n }\n}\n\n/**\n * Returns the encapsulated result of the given [transform] function applied to the encapsulated value\n * if this instance represents [success][Result.isSuccess] or the\n * original encapsulated [Throwable] exception if it is [failure][Result.isFailure].\n *\n * This function catches any [Throwable] exception thrown by [transform] function and encapsulates it as a failure.\n * See [map] for an alternative that rethrows exceptions from `transform` function.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.mapCatching(transform: (value: T) -> R): Result {\n return when {\n isSuccess -> runCatching { transform(value as T) }\n else -> Result(value)\n }\n}\n\n/**\n * Returns the encapsulated result of the given [transform] function applied to the encapsulated [Throwable] exception\n * if this instance represents [failure][Result.isFailure] or the\n * original encapsulated value if it is [success][Result.isSuccess].\n *\n * Note, that this function rethrows any [Throwable] exception thrown by [transform] function.\n * See [recoverCatching] for an alternative that encapsulates exceptions.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.recover(transform: (exception: Throwable) -> R): Result {\n contract {\n callsInPlace(transform, InvocationKind.AT_MOST_ONCE)\n }\n return when (val exception = exceptionOrNull()) {\n null -> this\n else -> Result.success(transform(exception))\n }\n}\n\n/**\n * Returns the encapsulated result of the given [transform] function applied to the encapsulated [Throwable] exception\n * if this instance represents [failure][Result.isFailure] or the\n * original encapsulated value if it is [success][Result.isSuccess].\n *\n * This function catches any [Throwable] exception thrown by [transform] function and encapsulates it as a failure.\n * See [recover] for an alternative that rethrows exceptions.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.recoverCatching(transform: (exception: Throwable) -> R): Result {\n val value = value // workaround for inline classes BE bug\n return when (val exception = exceptionOrNull()) {\n null -> this\n else -> runCatching { transform(exception) }\n }\n}\n\n// \"peek\" onto value/exception and pipe\n\n/**\n * Performs the given [action] on the encapsulated [Throwable] exception if this instance represents [failure][Result.isFailure].\n * Returns the original `Result` unchanged.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.onFailure(action: (exception: Throwable) -> Unit): Result {\n contract {\n callsInPlace(action, InvocationKind.AT_MOST_ONCE)\n }\n exceptionOrNull()?.let { action(it) }\n return this\n}\n\n/**\n * Performs the given [action] on the encapsulated value if this instance represents [success][Result.isSuccess].\n * Returns the original `Result` unchanged.\n */\n@InlineOnly\n@SinceKotlin(\"1.3\")\npublic inline fun Result.onSuccess(action: (value: T) -> Unit): Result {\n contract {\n callsInPlace(action, InvocationKind.AT_MOST_ONCE)\n }\n if (isSuccess) action(value as T)\n return this\n}\n\n// -------------------\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines\n\nimport kotlin.coroutines.intrinsics.*\nimport kotlin.internal.InlineOnly\n\n/**\n * Interface representing a continuation after a suspension point that returns a value of type `T`.\n */\n@SinceKotlin(\"1.3\")\npublic interface Continuation {\n /**\n * The context of the coroutine that corresponds to this continuation.\n */\n public val context: CoroutineContext\n\n /**\n * Resumes the execution of the corresponding coroutine passing a successful or failed [result] as the\n * return value of the last suspension point.\n */\n public fun resumeWith(result: Result)\n}\n\n/**\n * Classes and interfaces marked with this annotation are restricted when used as receivers for extension\n * `suspend` functions. These `suspend` extensions can only invoke other member or extension `suspend` functions on this particular\n * receiver and are restricted from calling arbitrary suspension functions.\n */\n@SinceKotlin(\"1.3\")\n@Target(AnnotationTarget.CLASS)\n@Retention(AnnotationRetention.BINARY)\npublic annotation class RestrictsSuspension\n\n/**\n * Resumes the execution of the corresponding coroutine passing [value] as the return value of the last suspension point.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic inline fun Continuation.resume(value: T): Unit =\n resumeWith(Result.success(value))\n\n/**\n * Resumes the execution of the corresponding coroutine so that the [exception] is re-thrown right after the\n * last suspension point.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic inline fun Continuation.resumeWithException(exception: Throwable): Unit =\n resumeWith(Result.failure(exception))\n\n\n/**\n * Creates a [Continuation] instance with the given [context] and implementation of [resumeWith] method.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic inline fun Continuation(\n context: CoroutineContext,\n crossinline resumeWith: (Result) -> Unit\n): Continuation =\n object : Continuation {\n override val context: CoroutineContext\n get() = context\n\n override fun resumeWith(result: Result) =\n resumeWith(result)\n }\n\n/**\n * Creates a coroutine without a receiver and with result type [T].\n * This function creates a new, fresh instance of suspendable computation every time it is invoked.\n *\n * To start executing the created coroutine, invoke `resume(Unit)` on the returned [Continuation] instance.\n * The [completion] continuation is invoked when the coroutine completes with a result or an exception.\n * Subsequent invocation of any resume function on the resulting continuation will produce an [IllegalStateException].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"UNCHECKED_CAST\")\npublic fun (suspend () -> T).createCoroutine(\n completion: Continuation\n): Continuation =\n SafeContinuation(createCoroutineUnintercepted(completion).intercepted(), COROUTINE_SUSPENDED)\n\n/**\n * Creates a coroutine with receiver type [R] and result type [T].\n * This function creates a new, fresh instance of suspendable computation every time it is invoked.\n *\n * To start executing the created coroutine, invoke `resume(Unit)` on the returned [Continuation] instance.\n * The [completion] continuation is invoked when the coroutine completes with a result or an exception.\n * Subsequent invocation of any resume function on the resulting continuation will produce an [IllegalStateException].\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"UNCHECKED_CAST\")\npublic fun (suspend R.() -> T).createCoroutine(\n receiver: R,\n completion: Continuation\n): Continuation =\n SafeContinuation(createCoroutineUnintercepted(receiver, completion).intercepted(), COROUTINE_SUSPENDED)\n\n/**\n * Starts a coroutine without a receiver and with result type [T].\n * This function creates and starts a new, fresh instance of suspendable computation every time it is invoked.\n * The [completion] continuation is invoked when the coroutine completes with a result or an exception.\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"UNCHECKED_CAST\")\npublic fun (suspend () -> T).startCoroutine(\n completion: Continuation\n) {\n createCoroutineUnintercepted(completion).intercepted().resume(Unit)\n}\n\n/**\n * Starts a coroutine with receiver type [R] and result type [T].\n * This function creates and starts a new, fresh instance of suspendable computation every time it is invoked.\n * The [completion] continuation is invoked when the coroutine completes with a result or an exception.\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"UNCHECKED_CAST\")\npublic fun (suspend R.() -> T).startCoroutine(\n receiver: R,\n completion: Continuation\n) {\n createCoroutineUnintercepted(receiver, completion).intercepted().resume(Unit)\n}\n\n/**\n * Obtains the current continuation instance inside suspend functions and suspends\n * the currently running coroutine.\n *\n * In this function both [Continuation.resume] and [Continuation.resumeWithException] can be used either synchronously in\n * the same stack-frame where the suspension function is run or asynchronously later in the same thread or\n * from a different thread of execution. Subsequent invocation of any resume function will produce an [IllegalStateException].\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic suspend inline fun suspendCoroutine(crossinline block: (Continuation) -> Unit): T =\n suspendCoroutineUninterceptedOrReturn { c: Continuation ->\n val safe = SafeContinuation(c.intercepted())\n block(safe)\n safe.getOrThrow()\n }\n\n/**\n * Returns the context of the current coroutine.\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"WRONG_MODIFIER_TARGET\")\n@InlineOnly\npublic suspend inline val coroutineContext: CoroutineContext\n get() {\n throw NotImplementedError(\"Implemented as intrinsic\")\n }\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines.intrinsics\n\nimport kotlin.coroutines.*\nimport kotlin.internal.InlineOnly\n\n/**\n * Starts an unintercepted coroutine without a receiver and with result type [T] and executes it until its first suspension.\n * Returns the result of the coroutine or throws its exception if it does not suspend or [COROUTINE_SUSPENDED] if it suspends.\n * In the latter case, the [completion] continuation is invoked when the coroutine completes with a result or an exception.\n *\n * The coroutine is started directly in the invoker's thread without going through the [ContinuationInterceptor] that might\n * be present in the completion's [CoroutineContext]. It is the invoker's responsibility to ensure that a proper invocation\n * context is established.\n *\n * This function is designed to be used from inside of [suspendCoroutineUninterceptedOrReturn] to resume the execution of the suspended\n * coroutine using a reference to the suspending function.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic actual inline fun (suspend () -> T).startCoroutineUninterceptedOrReturn(\n completion: Continuation\n): Any? = this.asDynamic()(completion, false)\n\n/**\n * Starts an unintercepted coroutine with receiver type [R] and result type [T] and executes it until its first suspension.\n * Returns the result of the coroutine or throws its exception if it does not suspend or [COROUTINE_SUSPENDED] if it suspends.\n * In the latter case, the [completion] continuation is invoked when the coroutine completes with a result or an exception.\n *\n * The coroutine is started directly in the invoker's thread without going through the [ContinuationInterceptor] that might\n * be present in the completion's [CoroutineContext]. It is the invoker's responsibility to ensure that a proper invocation\n * context is established.\n *\n * This function is designed to be used from inside of [suspendCoroutineUninterceptedOrReturn] to resume the execution of the suspended\n * coroutine using a reference to the suspending function.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic actual inline fun (suspend R.() -> T).startCoroutineUninterceptedOrReturn(\n receiver: R,\n completion: Continuation\n): Any? = this.asDynamic()(receiver, completion, false)\n\n\n/**\n * Creates unintercepted coroutine without receiver and with result type [T].\n * This function creates a new, fresh instance of suspendable computation every time it is invoked.\n *\n * To start executing the created coroutine, invoke `resume(Unit)` on the returned [Continuation] instance.\n * The [completion] continuation is invoked when coroutine completes with result or exception.\n *\n * This function returns unintercepted continuation.\n * Invocation of `resume(Unit)` starts coroutine immediately in the invoker's call stack without going through the\n * [ContinuationInterceptor] that might be present in the completion's [CoroutineContext].\n * It is the invoker's responsibility to ensure that a proper invocation context is established.\n * Note that [completion] of this function may get invoked in an arbitrary context.\n *\n * [Continuation.intercepted] can be used to acquire the intercepted continuation.\n * Invocation of `resume(Unit)` on intercepted continuation guarantees that execution of\n * both the coroutine and [completion] happens in the invocation context established by\n * [ContinuationInterceptor].\n *\n * Repeated invocation of any resume function on the resulting continuation corrupts the\n * state machine of the coroutine and may result in arbitrary behaviour or exception.\n */\n@SinceKotlin(\"1.3\")\npublic actual fun (suspend () -> T).createCoroutineUnintercepted(\n completion: Continuation\n): Continuation =\n // Kotlin/JS suspend lambdas have an extra parameter `suspended`\n if (this.asDynamic().length == 2) {\n // When `suspended` is true the continuation is created, but not executed\n this.asDynamic()(completion, true)\n } else {\n createCoroutineFromSuspendFunction(completion) {\n this.asDynamic()(completion)\n }\n }\n\n/**\n * Creates unintercepted coroutine with receiver type [R] and result type [T].\n * This function creates a new, fresh instance of suspendable computation every time it is invoked.\n *\n * To start executing the created coroutine, invoke `resume(Unit)` on the returned [Continuation] instance.\n * The [completion] continuation is invoked when coroutine completes with result or exception.\n *\n * This function returns unintercepted continuation.\n * Invocation of `resume(Unit)` starts coroutine immediately in the invoker's call stack without going through the\n * [ContinuationInterceptor] that might be present in the completion's [CoroutineContext].\n * It is the invoker's responsibility to ensure that a proper invocation context is established.\n * Note that [completion] of this function may get invoked in an arbitrary context.\n *\n * [Continuation.intercepted] can be used to acquire the intercepted continuation.\n * Invocation of `resume(Unit)` on intercepted continuation guarantees that execution of\n * both the coroutine and [completion] happens in the invocation context established by\n * [ContinuationInterceptor].\n *\n * Repeated invocation of any resume function on the resulting continuation corrupts the\n * state machine of the coroutine and may result in arbitrary behaviour or exception.\n */\n@SinceKotlin(\"1.3\")\npublic actual fun (suspend R.() -> T).createCoroutineUnintercepted(\n receiver: R,\n completion: Continuation\n): Continuation =\n // Kotlin/JS suspend lambdas have an extra parameter `suspended`\n if (this.asDynamic().length == 3) {\n // When `suspended` is true the continuation is created, but not executed\n this.asDynamic()(receiver, completion, true)\n } else {\n createCoroutineFromSuspendFunction(completion) {\n this.asDynamic()(receiver, completion)\n }\n }\n\n/**\n * Intercepts this continuation with [ContinuationInterceptor].\n *\n * This function shall be used on the immediate result of [createCoroutineUnintercepted] or [suspendCoroutineUninterceptedOrReturn],\n * in which case it checks for [ContinuationInterceptor] in the continuation's [context][Continuation.context],\n * invokes [ContinuationInterceptor.interceptContinuation], caches and returns the result.\n *\n * If this function is invoked on other [Continuation] instances it returns `this` continuation unchanged.\n */\n@SinceKotlin(\"1.3\")\npublic actual fun Continuation.intercepted(): Continuation =\n (this as? CoroutineImpl)?.intercepted() ?: this\n\n\nprivate inline fun createCoroutineFromSuspendFunction(\n completion: Continuation,\n crossinline block: () -> Any?\n): Continuation {\n @Suppress(\"UNCHECKED_CAST\")\n return object : CoroutineImpl(completion as Continuation) {\n override fun doResume(): Any? {\n exception?.let { throw it }\n return block()\n }\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\n// Mirrors signature from JS IR BE\n// Used for js.translator/testData/box/number/mulInt32.kt\n@library\n@JsName(\"imulEmulated\")\ninternal fun imul(x: Int, y: Int): Int = definedExternally\n\ninternal inline fun isArrayish(o: dynamic) = js(\"Kotlin\").isArrayish(o)","/*\n * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license\n * that can be found in the license/LICENSE.txt file.\n */\n\n\n@file:Suppress(\"UNUSED_PARAMETER\")\n\npackage kotlin.js\n\n@kotlin.internal.InlineOnly\ninternal inline fun jsDeleteProperty(obj: Any, property: Any) {\n js(\"delete obj[property]\")\n}\n\n@kotlin.internal.InlineOnly\ninternal inline fun jsBitwiseOr(lhs: Any?, rhs: Any?): Int =\n js(\"lhs | rhs\").unsafeCast()","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\npackage kotlin.math\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n *\n * If [sign] is `NaN` the sign of the result is undefined.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.withSign(sign: Double): Double {\n val thisSignBit = js(\"Kotlin\").doubleSignBit(this).unsafeCast()\n val newSignBit = js(\"Kotlin\").doubleSignBit(sign).unsafeCast()\n return if (thisSignBit == newSignBit) this else -this\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\n\n/**\n * Returns a bit representation of the specified floating-point value as [Long]\n * according to the IEEE 754 floating-point \"double format\" bit layout.\n */\n@SinceKotlin(\"1.2\")\n@library(\"doubleToBits\")\npublic actual fun Double.toBits(): Long = definedExternally\n\n/**\n * Returns a bit representation of the specified floating-point value as [Long]\n * according to the IEEE 754 floating-point \"double format\" bit layout,\n * preserving `NaN` values exact layout.\n */\n@SinceKotlin(\"1.2\")\n@library(\"doubleToRawBits\")\npublic actual fun Double.toRawBits(): Long = definedExternally\n\n/**\n * Returns the [Double] value corresponding to a given bit representation.\n */\n@SinceKotlin(\"1.2\")\n@kotlin.internal.InlineOnly\npublic actual inline fun Double.Companion.fromBits(bits: Long): Double = js(\"Kotlin\").doubleFromBits(bits).unsafeCast()\n\n/**\n * Returns a bit representation of the specified floating-point value as [Int]\n * according to the IEEE 754 floating-point \"single format\" bit layout.\n *\n * Note that in Kotlin/JS [Float] range is wider than \"single format\" bit layout can represent,\n * so some [Float] values may overflow, underflow or loose their accuracy after conversion to bits and back.\n */\n@SinceKotlin(\"1.2\")\n@library(\"floatToBits\")\npublic actual fun Float.toBits(): Int = definedExternally\n\n/**\n * Returns a bit representation of the specified floating-point value as [Int]\n * according to the IEEE 754 floating-point \"single format\" bit layout,\n * preserving `NaN` values exact layout.\n *\n * Note that in Kotlin/JS [Float] range is wider than \"single format\" bit layout can represent,\n * so some [Float] values may overflow, underflow or loose their accuracy after conversion to bits and back.\n */\n@SinceKotlin(\"1.2\")\n@library(\"floatToRawBits\")\npublic actual fun Float.toRawBits(): Int = definedExternally\n\n/**\n * Returns the [Float] value corresponding to a given bit representation.\n */\n@SinceKotlin(\"1.2\")\n@kotlin.internal.InlineOnly\npublic actual inline fun Float.Companion.fromBits(bits: Int): Float = js(\"Kotlin\").floatFromBits(bits).unsafeCast()\n\n\ninternal inline fun Long(low: Int, high: Int) = js(\"Kotlin\").Long.fromBits(low, high).unsafeCast()\ninternal inline val Long.low: Int get() = this.asDynamic().getLowBits().unsafeCast()\ninternal inline val Long.high: Int get() = this.asDynamic().getHighBits().unsafeCast()","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\n/**\n * Returns a string representation of this [Long] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Long.toString(radix: Int): String = asDynamic().toString(checkRadix(radix))","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.js.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Reverses elements in the list in-place.\n */\npublic actual fun MutableList.reverse(): Unit {\n val midPoint = (size / 2) - 1\n if (midPoint < 0) return\n var reverseIndex = lastIndex\n for (index in 0..midPoint) {\n val tmp = this[index]\n this[index] = this[reverseIndex]\n this[reverseIndex] = tmp\n reverseIndex--\n }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.js.*\n\n/**\n * Returns a character at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this char sequence.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic actual fun CharSequence.elementAt(index: Int): Char {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, length: $length}\") }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.js.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic actual fun UIntArray.elementAt(index: Int): UInt {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic actual fun ULongArray.elementAt(index: Int): ULong {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic actual fun UByteArray.elementAt(index: Int): UByte {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic actual fun UShortArray.elementAt(index: Int): UShort {\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, size: $size}\") }\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic actual fun UIntArray.asList(): List {\n return object : AbstractList(), RandomAccess {\n override val size: Int get() = this@asList.size\n override fun isEmpty(): Boolean = this@asList.isEmpty()\n override fun contains(element: UInt): Boolean = this@asList.contains(element)\n override fun get(index: Int): UInt {\n AbstractList.checkElementIndex(index, size)\n return this@asList[index]\n }\n override fun indexOf(element: UInt): Int {\n if ((element as Any?) !is UInt) return -1\n return this@asList.indexOf(element)\n }\n override fun lastIndexOf(element: UInt): Int {\n if ((element as Any?) !is UInt) return -1\n return this@asList.lastIndexOf(element)\n }\n }\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic actual fun ULongArray.asList(): List {\n return object : AbstractList(), RandomAccess {\n override val size: Int get() = this@asList.size\n override fun isEmpty(): Boolean = this@asList.isEmpty()\n override fun contains(element: ULong): Boolean = this@asList.contains(element)\n override fun get(index: Int): ULong {\n AbstractList.checkElementIndex(index, size)\n return this@asList[index]\n }\n override fun indexOf(element: ULong): Int {\n if ((element as Any?) !is ULong) return -1\n return this@asList.indexOf(element)\n }\n override fun lastIndexOf(element: ULong): Int {\n if ((element as Any?) !is ULong) return -1\n return this@asList.lastIndexOf(element)\n }\n }\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic actual fun UByteArray.asList(): List {\n return object : AbstractList(), RandomAccess {\n override val size: Int get() = this@asList.size\n override fun isEmpty(): Boolean = this@asList.isEmpty()\n override fun contains(element: UByte): Boolean = this@asList.contains(element)\n override fun get(index: Int): UByte {\n AbstractList.checkElementIndex(index, size)\n return this@asList[index]\n }\n override fun indexOf(element: UByte): Int {\n if ((element as Any?) !is UByte) return -1\n return this@asList.indexOf(element)\n }\n override fun lastIndexOf(element: UByte): Int {\n if ((element as Any?) !is UByte) return -1\n return this@asList.lastIndexOf(element)\n }\n }\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic actual fun UShortArray.asList(): List {\n return object : AbstractList(), RandomAccess {\n override val size: Int get() = this@asList.size\n override fun isEmpty(): Boolean = this@asList.isEmpty()\n override fun contains(element: UShort): Boolean = this@asList.contains(element)\n override fun get(index: Int): UShort {\n AbstractList.checkElementIndex(index, size)\n return this@asList[index]\n }\n override fun indexOf(element: UShort): Int {\n if ((element as Any?) !is UShort) return -1\n return this@asList.indexOf(element)\n }\n override fun lastIndexOf(element: UShort): Int {\n if ((element as Any?) !is UShort) return -1\n return this@asList.lastIndexOf(element)\n }\n }\n}\n\n","@file: Suppress(\"DEPRECATION\")\npackage jquery.ui\n\n\n//jquery UI\nimport jquery.JQuery\nimport kotlin.js.Json\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.buttonset(): JQuery = asDynamic().buttonset()\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.dialog(): JQuery = asDynamic().dialog()\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.dialog(params: Json): JQuery = asDynamic().dialog(params)\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.dialog(mode: String, param: String): Any? = asDynamic().dialog(mode, param)\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.dialog(mode: String): JQuery = asDynamic().dialog(mode)\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.dialog(mode: String, param: String, value: Any?): JQuery = asDynamic().dialog(mode, param, value)\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.button(): JQuery = asDynamic().button()\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.accordion(): JQuery = asDynamic().accordion()\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.draggable(params: Json): JQuery = asDynamic().draggable(params)\n\n@Deprecated(\"Use declarations from 'https://bintray.com/kotlin/js-externals/kotlin-js-jquery' package instead.\")\npublic inline fun JQuery.selectable(): JQuery = asDynamic().selectable()\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\nimport kotlin.annotation.AnnotationTarget.*\n\n@Target(CLASS, FUNCTION, PROPERTY, CONSTRUCTOR, VALUE_PARAMETER, PROPERTY_GETTER, PROPERTY_SETTER)\n@Deprecated(\"Use `external` modifier instead\", level = DeprecationLevel.ERROR)\npublic annotation class native(public val name: String = \"\")\n\n@Target(FUNCTION)\n@Deprecated(\"Use inline extension function with body using dynamic\")\npublic annotation class nativeGetter\n\n@Target(FUNCTION)\n@Deprecated(\"Use inline extension function with body using dynamic\")\npublic annotation class nativeSetter\n\n@Target(FUNCTION)\n@Deprecated(\"Use inline extension function with body using dynamic\")\npublic annotation class nativeInvoke\n\n@Target(CLASS, FUNCTION, PROPERTY)\ninternal annotation class library(public val name: String = \"\")\n\n@Target(CLASS)\ninternal annotation class marker\n\n/**\n * Gives a declaration (a function, a property or a class) specific name in JavaScript.\n *\n * This may be useful in the following cases:\n *\n * * There are two functions for which the compiler gives same name in JavaScript, you can\n * mark one with `@JsName(...)` to prevent the compiler from reporting error.\n * * You are writing a JavaScript library in Kotlin. The compiler produces mangled names\n * for functions with parameters, which is unnatural for usual JavaScript developer.\n * You can put `@JsName(...)` on functions you want to be available from JavaScript.\n * * For some reason you want to rename declaration, e.g. there's common term in JavaScript\n * for a concept provided by the declaration, which in uncommon in Kotlin.\n *\n * Example:\n *\n * ``` kotlin\n * class Person(val name: String) {\n * fun hello() {\n * println(\"Hello $name!\")\n * }\n *\n * @JsName(\"helloWithGreeting\")\n * fun hello(greeting: String) {\n * println(\"$greeting $name!\")\n * }\n * }\n * ```\n *\n * @property name the name which compiler uses both for declaration itself and for all references to the declaration.\n * It's required to denote a valid JavaScript identifier.\n *\n */\n@Retention(AnnotationRetention.BINARY)\n@Target(CLASS, FUNCTION, PROPERTY, CONSTRUCTOR, PROPERTY_GETTER, PROPERTY_SETTER)\npublic actual annotation class JsName(actual val name: String)\n\n/**\n * Denotes an `external` declaration that must be imported from native JavaScript library.\n *\n * The compiler produces the code relevant for the target module system, for example, in case of CommonJS,\n * it will import the declaration via the `require(...)` function.\n *\n * The annotation can be used on top-level external declarations (classes, properties, functions) and files.\n * In case of file (which can't be `external`) the following rule applies: all the declarations in\n * the file must be `external`. By applying `@JsModule(...)` on a file you tell the compiler to import a JavaScript object\n * that contain all the declarations from the file.\n *\n * Example:\n *\n * ``` kotlin\n * @JsModule(\"jquery\")\n * external abstract class JQuery() {\n * // some declarations here\n * }\n *\n * @JsModule(\"jquery\")\n * external fun JQuery(element: Element): JQuery\n * ```\n *\n * @property import name of a module to import declaration from.\n * It is not interpreted by the Kotlin compiler, it's passed as is directly to the target module system.\n *\n * @see JsNonModule\n */\n@Retention(AnnotationRetention.BINARY)\n@Target(CLASS, PROPERTY, FUNCTION, FILE)\npublic annotation class JsModule(val import: String)\n\n/**\n * Denotes an `external` declaration that can be used without module system.\n *\n * By default, an `external` declaration is available regardless your target module system.\n * However, by applying [JsModule] annotation you can make a declaration unavailable to *plain* module system.\n * Some JavaScript libraries are distributed both as a standalone downloadable piece of JavaScript and as a module available\n * as an npm package.\n * To tell the Kotlin compiler to accept both cases, you can augment [JsModule] with the `@JsNonModule` annotation.\n *\n * For example:\n *\n * ``` kotlin\n * @JsModule(\"jquery\")\n * @JsNonModule\n * @JsName(\"$\")\n * external abstract class JQuery() {\n * // some declarations here\n * }\n *\n * @JsModule(\"jquery\")\n * @JsNonModule\n * @JsName(\"$\")\n * external fun JQuery(element: Element): JQuery\n * ```\n *\n * @see JsModule\n */\n@Retention(AnnotationRetention.BINARY)\n@Target(CLASS, PROPERTY, FUNCTION, FILE)\npublic annotation class JsNonModule\n\n/**\n * Adds prefix to `external` declarations in a source file.\n *\n * JavaScript does not have concept of packages (namespaces). They are usually emulated by nested objects.\n * The compiler turns references to `external` declarations either to plain unprefixed names (in case of *plain* modules)\n * or to plain imports.\n * However, if a JavaScript library provides its declarations in packages, you won't be satisfied with this.\n * You can tell the compiler to generate additional prefix before references to `external` declarations using the `@JsQualifier(...)`\n * annotation.\n *\n * Note that a file marked with the `@JsQualifier(...)` annotation can't contain non-`external` declarations.\n *\n * Example:\n *\n * ```\n * @file:JsQualifier(\"my.jsPackageName\")\n * package some.kotlinPackage\n *\n * external fun foo(x: Int)\n *\n * external fun bar(): String\n * ```\n *\n * @property value the qualifier to add to the declarations in the generated code.\n * It must be a sequence of valid JavaScript identifiers separated by the `.` character.\n * Examples of valid qualifiers are: `foo`, `bar.Baz`, `_.$0.f`.\n *\n * @see JsModule\n */\n@Retention(AnnotationRetention.BINARY)\n@Target(AnnotationTarget.FILE)\npublic annotation class JsQualifier(val value: String)\n\n/**\n * Marks experimental JS export annotations.\n *\n * Note that behaviour of these annotations will likely be changed in the future.\n *\n * Usages of such annotations will be reported as warnings unless an explicit opt-in with\n * the [OptIn] annotation, e.g. `@OptIn(ExperimentalJsExport::class)`,\n * or with the `-Xopt-in=kotlin.js.ExperimentalJsExport` compiler option is given.\n */\n@Suppress(\"DEPRECATION\")\n@Experimental(level = Experimental.Level.WARNING)\n@RequiresOptIn(level = RequiresOptIn.Level.WARNING)\n@SinceKotlin(\"1.3\")\npublic annotation class ExperimentalJsExport\n\n/**\n * Exports top-level declaration.\n *\n * Used in future IR-based backend.\n * Has no effect in current JS backend.\n */\n@ExperimentalJsExport\n@SinceKotlin(\"1.3\")\n@Retention(AnnotationRetention.BINARY)\n@Target(CLASS, PROPERTY, FUNCTION, FILE)\npublic annotation class JsExport\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.jvm\n\n// these are used in common generated code in stdlib\n\n// TODO: find how to deprecate these ones\n\n@Target(AnnotationTarget.FIELD)\n@Retention(AnnotationRetention.SOURCE)\npublic actual annotation class Volatile\n\n@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)\n@Retention(AnnotationRetention.SOURCE)\npublic actual annotation class Synchronized\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the [MutableCollection] interface.\n *\n * @param E the type of elements contained in the collection. The collection is invariant on its element type.\n */\npublic actual abstract class AbstractMutableCollection protected actual constructor() : AbstractCollection(), MutableCollection {\n\n actual abstract override fun add(element: E): Boolean\n\n actual override fun remove(element: E): Boolean {\n val iterator = iterator()\n while (iterator.hasNext()) {\n if (iterator.next() == element) {\n iterator.remove()\n return true\n }\n }\n return false\n }\n\n actual override fun addAll(elements: Collection): Boolean {\n var modified = false\n for (element in elements) {\n if (add(element)) modified = true\n }\n return modified\n }\n\n actual override fun removeAll(elements: Collection): Boolean = (this as MutableIterable).removeAll { it in elements }\n actual override fun retainAll(elements: Collection): Boolean = (this as MutableIterable).removeAll { it !in elements }\n\n actual override fun clear(): Unit {\n val iterator = this.iterator()\n while (iterator.hasNext()) {\n iterator.next()\n iterator.remove()\n }\n }\n\n @JsName(\"toJSON\")\n open fun toJSON(): Any = this.toArray()\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT AbstractList\n * Copyright 2007 Google Inc.\n*/\n\n\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the [MutableList] interface.\n *\n * @param E the type of elements contained in the list. The list is invariant on its element type.\n */\npublic actual abstract class AbstractMutableList protected actual constructor() : AbstractMutableCollection(), MutableList {\n protected var modCount: Int = 0\n\n abstract override fun add(index: Int, element: E): Unit\n abstract override fun removeAt(index: Int): E\n abstract override fun set(index: Int, element: E): E\n\n /**\n * Adds the specified element to the end of this list.\n *\n * @return `true` because the list is always modified as the result of this operation.\n */\n actual override fun add(element: E): Boolean {\n add(size, element)\n return true\n }\n\n actual override fun addAll(index: Int, elements: Collection): Boolean {\n var _index = index\n var changed = false\n for (e in elements) {\n add(_index++, e)\n changed = true\n }\n return changed\n }\n\n actual override fun clear() {\n removeRange(0, size)\n }\n\n actual override fun removeAll(elements: Collection): Boolean = removeAll { it in elements }\n actual override fun retainAll(elements: Collection): Boolean = removeAll { it !in elements }\n\n\n actual override fun iterator(): MutableIterator = IteratorImpl()\n\n actual override fun contains(element: E): Boolean = indexOf(element) >= 0\n\n actual override fun indexOf(element: E): Int {\n for (index in 0..lastIndex) {\n if (get(index) == element) {\n return index\n }\n }\n return -1\n }\n\n actual override fun lastIndexOf(element: E): Int {\n for (index in lastIndex downTo 0) {\n if (get(index) == element) {\n return index\n }\n }\n return -1\n }\n\n actual override fun listIterator(): MutableListIterator = listIterator(0)\n actual override fun listIterator(index: Int): MutableListIterator = ListIteratorImpl(index)\n\n\n actual override fun subList(fromIndex: Int, toIndex: Int): MutableList = SubList(this, fromIndex, toIndex)\n\n /**\n * Removes the range of elements from this list starting from [fromIndex] and ending with but not including [toIndex].\n */\n protected open fun removeRange(fromIndex: Int, toIndex: Int) {\n val iterator = listIterator(fromIndex)\n repeat(toIndex - fromIndex) {\n iterator.next()\n iterator.remove()\n }\n }\n\n /**\n * Compares this list with another list instance with the ordered structural equality.\n *\n * @return true, if [other] instance is a [List] of the same size, which contains the same elements in the same order.\n */\n override fun equals(other: Any?): Boolean {\n if (other === this) return true\n if (other !is List<*>) return false\n\n return AbstractList.orderedEquals(this, other)\n }\n\n /**\n * Returns the hash code value for this list.\n */\n override fun hashCode(): Int = AbstractList.orderedHashCode(this)\n\n\n private open inner class IteratorImpl : MutableIterator {\n /** the index of the item that will be returned on the next call to [next]`()` */\n protected var index = 0\n /** the index of the item that was returned on the previous call to [next]`()`\n * or [ListIterator.previous]`()` (for `ListIterator`),\n * -1 if no such item exists\n */\n protected var last = -1\n\n override fun hasNext(): Boolean = index < size\n\n override fun next(): E {\n if (!hasNext()) throw NoSuchElementException()\n last = index++\n return get(last)\n }\n\n override fun remove() {\n check(last != -1) { \"Call next() or previous() before removing element from the iterator.\" }\n\n removeAt(last)\n index = last\n last = -1\n }\n }\n\n /**\n * Implementation of `MutableListIterator` for abstract lists.\n */\n private inner class ListIteratorImpl(index: Int) : IteratorImpl(), MutableListIterator {\n\n init {\n AbstractList.checkPositionIndex(index, this@AbstractMutableList.size)\n this.index = index\n }\n\n override fun hasPrevious(): Boolean = index > 0\n\n override fun nextIndex(): Int = index\n\n override fun previous(): E {\n if (!hasPrevious()) throw NoSuchElementException()\n\n last = --index\n return get(last)\n }\n\n override fun previousIndex(): Int = index - 1\n\n override fun add(element: E) {\n add(index, element)\n index++\n last = -1\n }\n\n override fun set(element: E) {\n check(last != -1) { \"Call next() or previous() before updating element value with the iterator.\" }\n this@AbstractMutableList[last] = element\n }\n }\n\n private class SubList(private val list: AbstractMutableList, private val fromIndex: Int, toIndex: Int) : AbstractMutableList(), RandomAccess {\n private var _size: Int = 0\n\n init {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, list.size)\n this._size = toIndex - fromIndex\n }\n\n override fun add(index: Int, element: E) {\n AbstractList.checkPositionIndex(index, _size)\n\n list.add(fromIndex + index, element)\n _size++\n }\n\n override fun get(index: Int): E {\n AbstractList.checkElementIndex(index, _size)\n\n return list[fromIndex + index]\n }\n\n override fun removeAt(index: Int): E {\n AbstractList.checkElementIndex(index, _size)\n\n val result = list.removeAt(fromIndex + index)\n _size--\n return result\n }\n\n override fun set(index: Int, element: E): E {\n AbstractList.checkElementIndex(index, _size)\n\n return list.set(fromIndex + index, element)\n }\n\n override val size: Int get() = _size\n }\n\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT AbstractMap\n * Copyright 2007 Google Inc.\n */\n\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the [MutableMap] interface.\n *\n * The implementor is required to implement [entries] property, which should return mutable set of map entries, and [put] function.\n *\n * @param K the type of map keys. The map is invariant on its key type.\n * @param V the type of map values. The map is invariant on its value type.\n */\npublic actual abstract class AbstractMutableMap protected actual constructor() : AbstractMap(), MutableMap {\n\n /**\n * A mutable [Map.Entry] shared by several [Map] implementations.\n */\n internal open class SimpleEntry(override val key: K, value: V) : MutableMap.MutableEntry {\n constructor(entry: Map.Entry) : this(entry.key, entry.value)\n\n private var _value = value\n\n override val value: V get() = _value\n\n override fun setValue(newValue: V): V {\n val oldValue = this._value\n this._value = newValue\n return oldValue\n }\n\n override fun hashCode(): Int = entryHashCode(this)\n override fun toString(): String = entryToString(this)\n override fun equals(other: Any?): Boolean = entryEquals(this, other)\n\n }\n\n actual override fun clear() {\n entries.clear()\n }\n\n private var _keys: MutableSet? = null\n actual override val keys: MutableSet\n get() {\n if (_keys == null) {\n _keys = object : AbstractMutableSet() {\n override fun add(element: K): Boolean = throw UnsupportedOperationException(\"Add is not supported on keys\")\n override fun clear() {\n this@AbstractMutableMap.clear()\n }\n\n override operator fun contains(element: K): Boolean = containsKey(element)\n\n override operator fun iterator(): MutableIterator {\n val entryIterator = entries.iterator()\n return object : MutableIterator {\n override fun hasNext(): Boolean = entryIterator.hasNext()\n override fun next(): K = entryIterator.next().key\n override fun remove() = entryIterator.remove()\n }\n }\n\n override fun remove(element: K): Boolean {\n if (containsKey(element)) {\n this@AbstractMutableMap.remove(element)\n return true\n }\n return false\n }\n\n override val size: Int get() = this@AbstractMutableMap.size\n }\n }\n return _keys!!\n }\n\n actual abstract override fun put(key: K, value: V): V?\n\n actual override fun putAll(from: Map) {\n for ((key, value) in from) {\n put(key, value)\n }\n }\n\n private var _values: MutableCollection? = null\n actual override val values: MutableCollection\n get() {\n if (_values == null) {\n _values = object : AbstractMutableCollection() {\n override fun add(element: V): Boolean = throw UnsupportedOperationException(\"Add is not supported on values\")\n override fun clear() = this@AbstractMutableMap.clear()\n\n override operator fun contains(element: V): Boolean = containsValue(element)\n\n override operator fun iterator(): MutableIterator {\n val entryIterator = entries.iterator()\n return object : MutableIterator {\n override fun hasNext(): Boolean = entryIterator.hasNext()\n override fun next(): V = entryIterator.next().value\n override fun remove() = entryIterator.remove()\n }\n }\n\n override val size: Int get() = this@AbstractMutableMap.size\n\n // TODO: should we implement them this way? Currently it's unspecified in JVM\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Collection<*>) return false\n return AbstractList.orderedEquals(this, other)\n }\n\n override fun hashCode(): Int = AbstractList.orderedHashCode(this)\n }\n }\n return _values!!\n }\n\n actual override fun remove(key: K): V? {\n val iter = entries.iterator()\n while (iter.hasNext()) {\n val entry = iter.next()\n val k = entry.key\n if (key == k) {\n val value = entry.value\n iter.remove()\n return value\n }\n }\n return null\n }\n\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the [MutableSet] interface.\n *\n * @param E the type of elements contained in the set. The set is invariant on its element type.\n */\npublic actual abstract class AbstractMutableSet protected actual constructor() : AbstractMutableCollection(), MutableSet {\n\n /**\n * Compares this set with another set instance with the unordered structural equality.\n *\n * @return `true`, if [other] instance is a [Set] of the same size, all elements of which are contained in this set.\n */\n override fun equals(other: Any?): Boolean {\n if (other === this) return true\n if (other !is Set<*>) return false\n return AbstractSet.setEquals(this, other)\n }\n\n /**\n * Returns the hash code value for this set.\n */\n override fun hashCode(): Int = AbstractSet.unorderedHashCode(this)\n\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n/**\n * Provides a [MutableList] implementation, which uses a resizable array as its backing storage.\n *\n * This implementation doesn't provide a way to manage capacity, as backing JS array is resizeable itself.\n * There is no speed advantage to pre-allocating array sizes in JavaScript, so this implementation does not include any of the\n * capacity and \"growth increment\" concepts.\n */\npublic actual open class ArrayList internal constructor(private var array: Array) : AbstractMutableList(), MutableList, RandomAccess {\n\n /**\n * Creates an empty [ArrayList].\n */\n public actual constructor() : this(emptyArray()) {}\n\n /**\n * Creates an empty [ArrayList].\n * @param initialCapacity initial capacity (ignored)\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n public actual constructor(initialCapacity: Int = 0) : this(emptyArray()) {}\n\n /**\n * Creates an [ArrayList] filled from the [elements] collection.\n */\n public actual constructor(elements: Collection) : this(elements.toTypedArray()) {}\n\n /** Does nothing in this ArrayList implementation. */\n public actual fun trimToSize() {}\n\n /** Does nothing in this ArrayList implementation. */\n public actual fun ensureCapacity(minCapacity: Int) {}\n\n actual override val size: Int get() = array.size\n @Suppress(\"UNCHECKED_CAST\")\n actual override fun get(index: Int): E = array[rangeCheck(index)] as E\n actual override fun set(index: Int, element: E): E {\n rangeCheck(index)\n @Suppress(\"UNCHECKED_CAST\")\n return array[index].apply { array[index] = element } as E\n }\n\n actual override fun add(element: E): Boolean {\n array.asDynamic().push(element)\n modCount++\n return true\n }\n\n actual override fun add(index: Int, element: E): Unit {\n array.asDynamic().splice(insertionRangeCheck(index), 0, element)\n modCount++\n }\n\n actual override fun addAll(elements: Collection): Boolean {\n if (elements.isEmpty()) return false\n\n array += elements.toTypedArray()\n modCount++\n return true\n }\n\n actual override fun addAll(index: Int, elements: Collection): Boolean {\n insertionRangeCheck(index)\n\n if (index == size) return addAll(elements)\n if (elements.isEmpty()) return false\n when (index) {\n size -> return addAll(elements)\n 0 -> array = elements.toTypedArray() + array\n else -> array = array.copyOfRange(0, index).asDynamic().concat(elements.toTypedArray(), array.copyOfRange(index, size))\n }\n\n modCount++\n return true\n }\n\n actual override fun removeAt(index: Int): E {\n rangeCheck(index)\n modCount++\n return if (index == lastIndex)\n array.asDynamic().pop()\n else\n array.asDynamic().splice(index, 1)[0]\n }\n\n actual override fun remove(element: E): Boolean {\n for (index in array.indices) {\n if (array[index] == element) {\n array.asDynamic().splice(index, 1)\n modCount++\n return true\n }\n }\n return false\n }\n\n override fun removeRange(fromIndex: Int, toIndex: Int) {\n modCount++\n array.asDynamic().splice(fromIndex, toIndex - fromIndex)\n }\n\n actual override fun clear() {\n array = emptyArray()\n modCount++\n }\n\n\n actual override fun indexOf(element: E): Int = array.indexOf(element)\n\n actual override fun lastIndexOf(element: E): Int = array.lastIndexOf(element)\n\n override fun toString() = arrayToString(array)\n override fun toArray(): Array = js(\"[]\").slice.call(array)\n\n\n private fun rangeCheck(index: Int) = index.apply {\n AbstractList.checkElementIndex(index, size)\n }\n\n private fun insertionRangeCheck(index: Int) = index.apply {\n AbstractList.checkPositionIndex(index, size)\n }\n}","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\ninternal fun sortArrayWith(array: Array, comparison: (T, T) -> Int) {\n if (getStableSortingIsSupported()) {\n array.asDynamic().sort(comparison)\n } else {\n mergeSort(array.unsafeCast>(), 0, array.lastIndex, Comparator(comparison))\n }\n}\n\ninternal fun sortArrayWith(array: Array, comparator: Comparator) {\n if (getStableSortingIsSupported()) {\n val comparison = { a: T, b: T -> comparator.compare(a, b) }\n array.asDynamic().sort(comparison)\n } else {\n mergeSort(array.unsafeCast>(), 0, array.lastIndex, comparator)\n }\n}\n\ninternal fun > sortArray(array: Array) {\n if (getStableSortingIsSupported()) {\n val comparison = { a: T, b: T -> a.compareTo(b) }\n array.asDynamic().sort(comparison)\n } else {\n mergeSort(array.unsafeCast>(), 0, array.lastIndex, naturalOrder())\n }\n}\n\nprivate var _stableSortingIsSupported: Boolean? = null\nprivate fun getStableSortingIsSupported(): Boolean {\n _stableSortingIsSupported?.let { return it }\n _stableSortingIsSupported = false\n\n val array = js(\"[]\").unsafeCast>()\n // known implementations may use stable sort for arrays of up to 512 elements\n // so we create slightly more elements to test stability\n for (index in 0 until 600) array.asDynamic().push(index)\n val comparison = { a: Int, b: Int -> (a and 3) - (b and 3) }\n array.asDynamic().sort(comparison)\n for (index in 1 until array.size) {\n val a = array[index - 1]\n val b = array[index]\n if ((a and 3) == (b and 3) && a >= b) return false\n }\n _stableSortingIsSupported = true\n return true\n}\n\n\nprivate fun mergeSort(array: Array, start: Int, endInclusive: Int, comparator: Comparator) {\n val buffer = arrayOfNulls(array.size).unsafeCast>()\n val result = mergeSort(array, buffer, start, endInclusive, comparator)\n if (result !== array) {\n result.forEachIndexed { i, v -> array[i] = v }\n }\n}\n\n// Both start and end are inclusive indices.\nprivate fun mergeSort(array: Array, buffer: Array, start: Int, end: Int, comparator: Comparator): Array {\n if (start == end) {\n return array\n }\n\n val median = (start + end) / 2\n val left = mergeSort(array, buffer, start, median, comparator)\n val right = mergeSort(array, buffer, median + 1, end, comparator)\n\n val target = if (left === buffer) array else buffer\n\n // Merge.\n var leftIndex = start\n var rightIndex = median + 1\n for (i in start..end) {\n when {\n leftIndex <= median && rightIndex <= end -> {\n val leftValue = left[leftIndex]\n val rightValue = right[rightIndex]\n\n if (comparator.compare(leftValue, rightValue) <= 0) {\n target[i] = leftValue\n leftIndex++\n } else {\n target[i] = rightValue\n rightIndex++\n }\n }\n leftIndex <= median -> {\n target[i] = left[leftIndex]\n leftIndex++\n }\n else /* rightIndex <= end */ -> {\n target[i] = right[rightIndex]\n rightIndex++\n Unit // TODO: Fix KT-31506\n }\n }\n }\n\n return target\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n\n@UseExperimental(ExperimentalUnsignedTypes::class)\n@SinceKotlin(\"1.3\")\n@kotlin.js.JsName(\"contentDeepHashCodeImpl\")\ninternal fun Array.contentDeepHashCodeImpl(): Int {\n var result = 1\n for (element in this) {\n val elementHash = when {\n element == null -> 0\n isArrayish(element) -> (element.unsafeCast>()).contentDeepHashCodeImpl()\n\n element is UByteArray -> element.contentHashCode()\n element is UShortArray -> element.contentHashCode()\n element is UIntArray -> element.contentHashCode()\n element is ULongArray -> element.contentHashCode()\n\n else -> element.hashCode()\n }\n\n result = 31 * result + elementHash\n }\n return result\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\ninternal interface EqualityComparator {\n /**\n * Subclasses must override to return a value indicating\n * whether or not two keys or values are equal.\n */\n abstract fun equals(value1: Any?, value2: Any?): Boolean\n\n /**\n * Subclasses must override to return the hash code of a given key.\n */\n abstract fun getHashCode(value: Any?): Int\n\n\n object HashCode : EqualityComparator {\n override fun equals(value1: Any?, value2: Any?): Boolean = value1 == value2\n\n override fun getHashCode(value: Any?): Int = value?.hashCode() ?: 0\n }\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT AbstractHashMap\n * Copyright 2008 Google Inc.\n */\n\npackage kotlin.collections\n\nimport kotlin.collections.MutableMap.MutableEntry\n\n/**\n * Hash table based implementation of the [MutableMap] interface.\n *\n * This implementation makes no guarantees regarding the order of enumeration of [keys], [values] and [entries] collections.\n */\npublic actual open class HashMap : AbstractMutableMap, MutableMap {\n\n private inner class EntrySet : AbstractMutableSet>() {\n\n override fun add(element: MutableEntry): Boolean = throw UnsupportedOperationException(\"Add is not supported on entries\")\n override fun clear() {\n this@HashMap.clear()\n }\n\n override operator fun contains(element: MutableEntry): Boolean = containsEntry(element)\n\n override operator fun iterator(): MutableIterator> = internalMap.iterator()\n\n override fun remove(element: MutableEntry): Boolean {\n if (contains(element)) {\n this@HashMap.remove(element.key)\n return true\n }\n return false\n }\n\n override val size: Int get() = this@HashMap.size\n }\n\n\n /**\n * Internal implementation of the map: either string-based or hashcode-based.\n */\n private val internalMap: InternalMap\n\n private val equality: EqualityComparator\n\n internal constructor(internalMap: InternalMap) : super() {\n this.internalMap = internalMap\n this.equality = internalMap.equality\n }\n\n /**\n * Constructs an empty [HashMap] instance.\n */\n actual constructor() : this(InternalHashCodeMap(EqualityComparator.HashCode))\n\n /**\n * Constructs an empty [HashMap] instance.\n *\n * @param initialCapacity the initial capacity (ignored)\n * @param loadFactor the load factor (ignored)\n *\n * @throws IllegalArgumentException if the initial capacity or load factor are negative\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n actual constructor(initialCapacity: Int, loadFactor: Float = 0.0f) : this() {\n // This implementation of HashMap has no need of load factors or capacities.\n require(initialCapacity >= 0) { \"Negative initial capacity: $initialCapacity\" }\n require(loadFactor >= 0) { \"Non-positive load factor: $loadFactor\" }\n }\n\n actual constructor(initialCapacity: Int) : this(initialCapacity, 0.0f)\n\n\n /**\n * Constructs an instance of [HashMap] filled with the contents of the specified [original] map.\n */\n actual constructor(original: Map) : this() {\n this.putAll(original)\n }\n\n actual override fun clear() {\n internalMap.clear()\n// structureChanged(this)\n }\n\n actual override fun containsKey(key: K): Boolean = internalMap.contains(key)\n\n actual override fun containsValue(value: V): Boolean = internalMap.any { equality.equals(it.value, value) }\n\n private var _entries: MutableSet>? = null\n actual override val entries: MutableSet>\n get() {\n if (_entries == null) {\n _entries = createEntrySet()\n }\n return _entries!!\n }\n\n protected open fun createEntrySet(): MutableSet> = EntrySet()\n\n actual override operator fun get(key: K): V? = internalMap.get(key)\n\n actual override fun put(key: K, value: V): V? = internalMap.put(key, value)\n\n actual override fun remove(key: K): V? = internalMap.remove(key)\n\n actual override val size: Int get() = internalMap.size\n\n}\n\n/**\n * Constructs the specialized implementation of [HashMap] with [String] keys, which stores the keys as properties of\n * JS object without hashing them.\n */\npublic fun stringMapOf(vararg pairs: Pair): HashMap {\n return HashMap(InternalStringMap(EqualityComparator.HashCode)).apply { putAll(pairs) }\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT HashSet\n * Copyright 2008 Google Inc.\n */\n\npackage kotlin.collections\n\n/**\n * The implementation of the [MutableSet] interface, backed by a [HashMap] instance.\n */\npublic actual open class HashSet : AbstractMutableSet, MutableSet {\n\n private val map: HashMap\n\n /**\n * Constructs a new empty [HashSet].\n */\n actual constructor() {\n map = HashMap()\n }\n\n /**\n * Constructs a new [HashSet] filled with the elements of the specified collection.\n */\n actual constructor(elements: Collection) {\n map = HashMap(elements.size)\n addAll(elements)\n }\n\n /**\n * Constructs a new empty [HashSet].\n *\n * @param initialCapacity the initial capacity (ignored)\n * @param loadFactor the load factor (ignored)\n *\n * @throws IllegalArgumentException if the initial capacity or load factor are negative\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n actual constructor(initialCapacity: Int, loadFactor: Float = 0.0f) {\n map = HashMap(initialCapacity, loadFactor)\n }\n\n actual constructor(initialCapacity: Int) : this(initialCapacity, 0.0f)\n\n /**\n * Protected constructor to specify the underlying map. This is used by\n * LinkedHashSet.\n\n * @param map underlying map to use.\n */\n internal constructor(map: HashMap) {\n this.map = map\n }\n\n actual override fun add(element: E): Boolean {\n val old = map.put(element, this)\n return old == null\n }\n\n actual override fun clear() {\n map.clear()\n }\n\n// public override fun clone(): Any {\n// return HashSet(this)\n// }\n\n actual override operator fun contains(element: E): Boolean = map.containsKey(element)\n\n actual override fun isEmpty(): Boolean = map.isEmpty()\n\n actual override fun iterator(): MutableIterator = map.keys.iterator()\n\n actual override fun remove(element: E): Boolean = map.remove(element) != null\n\n actual override val size: Int get() = map.size\n\n}\n\n/**\n * Creates a new instance of the specialized implementation of [HashSet] with the specified [String] elements,\n * which elements the keys as properties of JS object without hashing them.\n */\npublic fun stringSetOf(vararg elements: String): HashSet {\n return HashSet(stringMapOf()).apply { addAll(elements) }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT InternalHashCodeMap\n * Copyright 2008 Google Inc.\n */\n\npackage kotlin.collections\n\nimport kotlin.collections.MutableMap.MutableEntry\nimport kotlin.collections.AbstractMutableMap.SimpleEntry\n\n/**\n * A simple wrapper around JavaScriptObject to provide [java.util.Map]-like semantics for any\n * key type.\n *\n *\n * Implementation notes:\n *\n *\n * A key's hashCode is the index in backingMap which should contain that key. Since several keys may\n * have the same hash, each value in hashCodeMap is actually an array containing all entries whose\n * keys share the same hash.\n */\ninternal class InternalHashCodeMap(override val equality: EqualityComparator) : InternalMap {\n\n private var backingMap: dynamic = createJsMap()\n override var size: Int = 0\n private set\n\n override fun put(key: K, value: V): V? {\n val hashCode = equality.getHashCode(key)\n val chainOrEntry = getChainOrEntryOrNull(hashCode)\n if (chainOrEntry == null) {\n // This is a new chain, put it to the map.\n backingMap[hashCode] = SimpleEntry(key, value)\n } else {\n if (chainOrEntry !is Array<*>) {\n // It is an entry\n val entry: SimpleEntry = chainOrEntry\n if (equality.equals(entry.key, key)) {\n return entry.setValue(value)\n } else {\n backingMap[hashCode] = arrayOf(entry, SimpleEntry(key, value))\n size++\n return null\n }\n } else {\n // Chain already exists, perhaps key also exists.\n val chain: Array> = chainOrEntry\n val entry = chain.findEntryInChain(key)\n if (entry != null) {\n return entry.setValue(value)\n }\n chain.asDynamic().push(SimpleEntry(key, value))\n }\n }\n size++\n// structureChanged(host)\n return null\n }\n\n override fun remove(key: K): V? {\n val hashCode = equality.getHashCode(key)\n val chainOrEntry = getChainOrEntryOrNull(hashCode) ?: return null\n if (chainOrEntry !is Array<*>) {\n val entry: MutableEntry = chainOrEntry\n if (equality.equals(entry.key, key)) {\n jsDeleteProperty(backingMap, hashCode)\n size--\n return entry.value\n } else {\n return null\n }\n } else {\n val chain: Array> = chainOrEntry\n for (index in chain.indices) {\n val entry = chain[index]\n if (equality.equals(key, entry.key)) {\n if (chain.size == 1) {\n chain.asDynamic().length = 0\n // remove the whole array\n jsDeleteProperty(backingMap, hashCode)\n } else {\n // splice out the entry we're removing\n chain.asDynamic().splice(index, 1)\n }\n size--\n// structureChanged(host)\n return entry.value\n }\n }\n }\n return null\n }\n\n override fun clear() {\n backingMap = createJsMap()\n size = 0\n }\n\n override fun contains(key: K): Boolean = getEntry(key) != null\n\n override fun get(key: K): V? = getEntry(key)?.value\n\n private fun getEntry(key: K): MutableEntry? {\n val chainOrEntry = getChainOrEntryOrNull(equality.getHashCode(key)) ?: return null\n if (chainOrEntry !is Array<*>) {\n val entry: MutableEntry = chainOrEntry\n if (equality.equals(entry.key, key)) {\n return entry\n } else {\n return null\n }\n } else {\n val chain: Array> = chainOrEntry\n return chain.findEntryInChain(key)\n }\n }\n\n private fun Array>.findEntryInChain(key: K): MutableEntry? =\n firstOrNull { entry -> equality.equals(entry.key, key) }\n\n override fun iterator(): MutableIterator> {\n\n return object : MutableIterator> {\n var state = -1 // -1 not ready, 0 - ready, 1 - done\n\n val keys: Array = js(\"Object\").keys(backingMap)\n var keyIndex = -1\n\n var chainOrEntry: dynamic = null\n var isChain = false\n var itemIndex = -1\n var lastEntry: MutableEntry? = null\n\n private fun computeNext(): Int {\n if (chainOrEntry != null && isChain) {\n val chainSize: Int = chainOrEntry.unsafeCast>>().size\n if (++itemIndex < chainSize)\n return 0\n }\n\n if (++keyIndex < keys.size) {\n chainOrEntry = backingMap[keys[keyIndex]]\n isChain = chainOrEntry is Array<*>\n itemIndex = 0\n return 0\n } else {\n chainOrEntry = null\n return 1\n }\n }\n\n override fun hasNext(): Boolean {\n if (state == -1)\n state = computeNext()\n return state == 0\n }\n\n override fun next(): MutableEntry {\n if (!hasNext()) throw NoSuchElementException()\n val lastEntry = if (isChain) {\n chainOrEntry.unsafeCast>>()[itemIndex]\n } else {\n chainOrEntry.unsafeCast>()\n }\n this.lastEntry = lastEntry\n state = -1\n return lastEntry\n }\n\n override fun remove() {\n checkNotNull(lastEntry)\n this@InternalHashCodeMap.remove(lastEntry!!.key)\n lastEntry = null\n // the chain being iterated just got modified by InternalHashCodeMap.remove\n itemIndex--\n }\n }\n }\n\n private fun getChainOrEntryOrNull(hashCode: Int): dynamic {\n val chainOrEntry = backingMap[hashCode]\n return if (chainOrEntry === undefined) null else chainOrEntry\n }\n\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n/**\n * The common interface of [InternalStringMap] and [InternalHashCodeMap].\n */\ninternal interface InternalMap : MutableIterable> {\n val equality: EqualityComparator\n val size: Int\n operator fun contains(key: K): Boolean\n operator fun get(key: K): V?\n\n fun put(key: K, value: V): V?\n fun remove(key: K): V?\n fun clear(): Unit\n\n fun createJsMap(): dynamic {\n val result = js(\"Object.create(null)\")\n // force to switch object representation to dictionary mode\n result[\"foo\"] = 1\n jsDeleteProperty(result, \"foo\")\n return result\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT InternalStringMap\n * Copyright 2008 Google Inc.\n */\npackage kotlin.collections\n\nimport kotlin.collections.MutableMap.MutableEntry\n\n/**\n * A simple wrapper around JavaScript Map for key type is string.\n *\n * Though this map is instantiated only with K=String, the K type is not fixed to String statically,\n * because we want to have it erased to Any? in order not to generate type-safe override bridges for\n * [get], [contains], [remove] etc, if they ever are generated.\n */\ninternal class InternalStringMap(override val equality: EqualityComparator) : InternalMap {\n\n private var backingMap: dynamic = createJsMap()\n override var size: Int = 0\n private set\n\n// /**\n// * A mod count to track 'value' replacements in map to ensure that the 'value' that we have in the\n// * iterator entry is guaranteed to be still correct.\n// * This is to optimize for the common scenario where the values are not modified during\n// * iterations where the entries are never stale.\n// */\n// private var valueMod: Int = 0\n\n override operator fun contains(key: K): Boolean {\n if (key !is String) return false\n return backingMap[key] !== undefined\n }\n\n override operator fun get(key: K): V? {\n if (key !is String) return null\n val value = backingMap[key]\n return if (value !== undefined) value.unsafeCast() else null\n }\n\n\n override fun put(key: K, value: V): V? {\n require(key is String)\n val oldValue = backingMap[key]\n backingMap[key] = value\n\n if (oldValue === undefined) {\n size++\n// structureChanged(host)\n return null\n } else {\n// valueMod++\n return oldValue.unsafeCast()\n }\n }\n\n override fun remove(key: K): V? {\n if (key !is String) return null\n val value = backingMap[key]\n if (value !== undefined) {\n jsDeleteProperty(backingMap, key)\n size--\n// structureChanged(host)\n return value.unsafeCast()\n } else {\n// valueMod++\n return null\n }\n }\n\n\n override fun clear() {\n backingMap = createJsMap()\n size = 0\n }\n\n\n override fun iterator(): MutableIterator> {\n return object : MutableIterator> {\n private val keys: Array = js(\"Object\").keys(backingMap)\n private val iterator = keys.iterator()\n private var lastKey: String? = null\n\n override fun hasNext(): Boolean = iterator.hasNext()\n\n override fun next(): MutableEntry {\n val key = iterator.next()\n lastKey = key\n @Suppress(\"UNCHECKED_CAST\")\n return newMapEntry(key as K)\n }\n\n override fun remove() {\n @Suppress(\"UNCHECKED_CAST\")\n this@InternalStringMap.remove(checkNotNull(lastKey) as K)\n }\n }\n }\n\n private fun newMapEntry(key: K): MutableEntry = object : MutableEntry {\n override val key: K get() = key\n override val value: V get() = this@InternalStringMap[key].unsafeCast()\n\n override fun setValue(newValue: V): V = this@InternalStringMap.put(key, newValue).unsafeCast()\n\n override fun hashCode(): Int = AbstractMap.entryHashCode(this)\n override fun toString(): String = AbstractMap.entryToString(this)\n override fun equals(other: Any?): Boolean = AbstractMap.entryEquals(this, other)\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT LinkedHashMap\n * Copyright 2008 Google Inc.\n */\npackage kotlin.collections\n\nimport kotlin.collections.MutableMap.MutableEntry\n\n/**\n * Hash table based implementation of the [MutableMap] interface, which additionally preserves the insertion order\n * of entries during the iteration.\n *\n * The insertion order is preserved by maintaining a doubly-linked list of all of its entries.\n */\npublic actual open class LinkedHashMap : HashMap, MutableMap {\n\n /**\n * The entry we use includes next/prev pointers for a doubly-linked circular\n * list with a head node. This reduces the special cases we have to deal with\n * in the list operations.\n\n * Note that we duplicate the key from the underlying hash map so we can find\n * the eldest entry. The alternative would have been to modify HashMap so more\n * of the code was directly usable here, but this would have added some\n * overhead to HashMap, or to reimplement most of the HashMap code here with\n * small modifications. Paying a small storage cost only if you use\n * LinkedHashMap and minimizing code size seemed like a better tradeoff\n */\n private class ChainEntry(key: K, value: V) : AbstractMutableMap.SimpleEntry(key, value) {\n internal var next: ChainEntry? = null\n internal var prev: ChainEntry? = null\n }\n\n private inner class EntrySet : AbstractMutableSet>() {\n\n private inner class EntryIterator : MutableIterator> {\n // The last entry that was returned from this iterator.\n private var last: ChainEntry? = null\n\n // The next entry to return from this iterator.\n private var next: ChainEntry? = null\n\n init {\n next = head\n// recordLastKnownStructure(map, this)\n }\n\n override fun hasNext(): Boolean {\n return next !== null\n }\n\n override fun next(): MutableEntry {\n// checkStructuralChange(map, this)\n if (!hasNext()) throw NoSuchElementException()\n\n val current = next!!\n last = current\n next = current.next.takeIf { it !== head }\n return current\n }\n\n override fun remove() {\n check(last != null)\n// checkStructuralChange(map, this)\n\n last!!.remove()\n map.remove(last!!.key)\n// recordLastKnownStructure(map, this)\n last = null\n }\n }\n\n override fun add(element: MutableEntry): Boolean = throw UnsupportedOperationException(\"Add is not supported on entries\")\n override fun clear() {\n this@LinkedHashMap.clear()\n }\n\n override operator fun contains(element: MutableEntry): Boolean = containsEntry(element)\n\n override operator fun iterator(): MutableIterator> = EntryIterator()\n\n override fun remove(element: MutableEntry): Boolean {\n if (contains(element)) {\n this@LinkedHashMap.remove(element.key)\n return true\n }\n return false\n }\n\n override val size: Int get() = this@LinkedHashMap.size\n }\n\n\n /*\n * The head of the insert order chain, which is a doubly-linked circular\n * list.\n *\n * The most recently inserted node is at the end of the chain, ie.\n * chain.prev.\n */\n private var head: ChainEntry? = null\n\n /**\n * Add this node to the end of the chain.\n */\n private fun ChainEntry.addToEnd() {\n // This entry is not in the list.\n check(next == null && prev == null)\n\n val _head = head\n if (_head == null) {\n head = this\n next = this\n prev = this\n } else {\n // Chain is valid.\n val _tail = checkNotNull(_head.prev)\n // Update me.\n prev = _tail\n next = _head\n // Update my new siblings: current head and old tail\n _head.prev = this\n _tail.next = this\n }\n }\n\n /**\n * Remove this node from the chain it is a part of.\n */\n private fun ChainEntry.remove() {\n if (this.next === this) {\n // if this is single element, remove head\n head = null\n } else {\n if (head === this) {\n // if this is first element, move head to next\n head = next\n }\n next!!.prev = prev\n prev!!.next = next\n }\n next = null\n prev = null\n }\n\n /*\n * The hashmap that keeps track of our entries and the chain. Note that we\n * duplicate the key here to eliminate changes to HashMap and minimize the\n * code here, at the expense of additional space.\n */\n private val map: HashMap>\n\n /**\n * Constructs an empty [LinkedHashMap] instance.\n */\n actual constructor() : super() {\n map = HashMap>()\n }\n\n internal constructor(backingMap: HashMap) : super() {\n @Suppress(\"UNCHECKED_CAST\") // expected to work due to erasure\n map = backingMap as HashMap>\n }\n\n /**\n * Constructs an empty [LinkedHashMap] instance.\n *\n * @param initialCapacity the initial capacity (ignored)\n * @param loadFactor the load factor (ignored)\n *\n * @throws IllegalArgumentException if the initial capacity or load factor are negative\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n actual constructor(initialCapacity: Int, loadFactor: Float = 0.0f) : super(initialCapacity, loadFactor) {\n map = HashMap>()\n }\n\n actual constructor(initialCapacity: Int) : this(initialCapacity, 0.0f)\n\n /**\n * Constructs an instance of [LinkedHashMap] filled with the contents of the specified [original] map.\n */\n actual constructor(original: Map) {\n map = HashMap>()\n this.putAll(original)\n }\n\n actual override fun clear() {\n map.clear()\n head = null\n }\n\n\n// override fun clone(): Any {\n// return LinkedHashMap(this)\n// }\n\n\n actual override fun containsKey(key: K): Boolean = map.containsKey(key)\n\n actual override fun containsValue(value: V): Boolean {\n var node: ChainEntry = head ?: return false\n do {\n if (node.value == value) {\n return true\n }\n node = node.next!!\n } while (node !== head)\n return false\n }\n\n\n override fun createEntrySet(): MutableSet> = EntrySet()\n\n actual override operator fun get(key: K): V? = map.get(key)?.value\n\n actual override fun put(key: K, value: V): V? {\n val old = map.get(key)\n if (old == null) {\n val newEntry = ChainEntry(key, value)\n map.put(key, newEntry)\n newEntry.addToEnd()\n return null\n } else {\n return old.setValue(value)\n }\n }\n\n actual override fun remove(key: K): V? {\n val entry = map.remove(key)\n if (entry != null) {\n entry.remove()\n return entry.value\n }\n return null\n }\n\n actual override val size: Int get() = map.size\n\n}\n\n/**\n * Constructs the specialized implementation of [LinkedHashMap] with [String] keys, which stores the keys as properties of\n * JS object without hashing them.\n */\npublic fun linkedStringMapOf(vararg pairs: Pair): LinkedHashMap {\n return LinkedHashMap(stringMapOf()).apply { putAll(pairs) }\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT LinkedHashSet\n * Copyright 2008 Google Inc.\n */\n\npackage kotlin.collections\n\n/**\n * The implementation of the [MutableSet] interface, backed by a [LinkedHashMap] instance.\n *\n * This implementation preserves the insertion order of elements during the iteration.\n */\npublic actual open class LinkedHashSet : HashSet, MutableSet {\n\n internal constructor(map: LinkedHashMap) : super(map)\n\n /**\n * Constructs a new empty [LinkedHashSet].\n */\n actual constructor() : super(LinkedHashMap())\n\n /**\n * Constructs a new [LinkedHashSet] filled with the elements of the specified collection.\n */\n actual constructor(elements: Collection) : super(LinkedHashMap()) {\n addAll(elements)\n }\n\n /**\n * Constructs a new empty [LinkedHashSet].\n *\n * @param initialCapacity the initial capacity (ignored)\n * @param loadFactor the load factor (ignored)\n *\n * @throws IllegalArgumentException if the initial capacity or load factor are negative\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n actual constructor(initialCapacity: Int, loadFactor: Float = 0.0f) : super(LinkedHashMap(initialCapacity, loadFactor))\n\n actual constructor(initialCapacity: Int) : this(initialCapacity, 0.0f)\n\n// public override fun clone(): Any {\n// return LinkedHashSet(this)\n// }\n\n}\n\n/**\n * Creates a new instance of the specialized implementation of [LinkedHashSet] with the specified [String] elements,\n * which elements the keys as properties of JS object without hashing them.\n */\npublic fun linkedStringSetOf(vararg elements: String): LinkedHashSet {\n return LinkedHashSet(linkedStringMapOf()).apply { addAll(elements) }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\nimport kotlin.contracts.*\n\n\n@Deprecated(\"Do not use Synchronized annotation in pure Kotlin/JS code\", level = DeprecationLevel.ERROR)\npublic typealias Synchronized = kotlin.jvm.Synchronized\n\n@Deprecated(\"Do not use Volatile annotation in pure Kotlin/JS code\", level = DeprecationLevel.ERROR)\npublic typealias Volatile = kotlin.jvm.Volatile\n\n@kotlin.internal.InlineOnly\npublic actual inline fun synchronized(lock: Any, block: () -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block()\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.io\n\ninternal abstract class BaseOutput {\n open fun println() {\n print(\"\\n\")\n }\n\n open fun println(message: Any?) {\n print(message)\n println()\n }\n\n abstract fun print(message: Any?)\n\n open fun flush() {}\n}\n\n/** JsName used to make the declaration available outside of module to test it */\n@JsName(\"NodeJsOutput\")\ninternal class NodeJsOutput(val outputStream: dynamic) : BaseOutput() {\n override fun print(message: Any?) {\n // TODO: Using local variable because of bug in block decomposition lowering in IR backend\n val messageString = String(message)\n outputStream.write(messageString)\n }\n}\n\n/** JsName used to make the declaration available outside of module to test it */\n@JsName(\"OutputToConsoleLog\")\ninternal class OutputToConsoleLog : BaseOutput() {\n override fun print(message: Any?) {\n console.log(message)\n }\n\n override fun println(message: Any?) {\n console.log(message)\n }\n\n override fun println() {\n console.log(\"\")\n }\n}\n\n/** JsName used to make the declaration available outside of module to test it and use at try.kotl.in */\n@JsName(\"BufferedOutput\")\ninternal open class BufferedOutput : BaseOutput() {\n var buffer = \"\"\n\n override fun print(message: Any?) {\n buffer += String(message)\n }\n\n override fun flush() {\n buffer = \"\"\n }\n}\n\n/** JsName used to make the declaration available outside of module to test it */\n@JsName(\"BufferedOutputToConsoleLog\")\ninternal class BufferedOutputToConsoleLog : BufferedOutput() {\n override fun print(message: Any?) {\n var s = String(message)\n val i = s.nativeLastIndexOf(\"\\n\", 0)\n if (i >= 0) {\n buffer += s.substring(0, i)\n flush()\n s = s.substring(i + 1)\n }\n buffer += s\n }\n\n override fun flush() {\n console.log(buffer)\n buffer = \"\"\n }\n}\n\n/** JsName used to make the declaration available outside of module to test it and use at try.kotl.in */\n@JsName(\"output\")\ninternal var output = run {\n val isNode: Boolean = js(\"typeof process !== 'undefined' && process.versions && !!process.versions.node\")\n if (isNode) NodeJsOutput(js(\"process.stdout\")) else BufferedOutputToConsoleLog()\n}\n\n@kotlin.internal.InlineOnly\nprivate inline fun String(value: Any?): String = js(\"String\")(value)\n\n/** Prints the line separator to the standard output stream. */\npublic actual fun println() {\n output.println()\n}\n\n/** Prints the given [message] and the line separator to the standard output stream. */\npublic actual fun println(message: Any?) {\n output.println(message)\n}\n\n/** Prints the given [message] to the standard output stream. */\npublic actual fun print(message: Any?) {\n output.print(message)\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines\n\nimport kotlin.coroutines.intrinsics.CoroutineSingletons.*\nimport kotlin.coroutines.intrinsics.COROUTINE_SUSPENDED\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal actual class SafeContinuation\ninternal actual constructor(\n private val delegate: Continuation,\n initialResult: Any?\n) : Continuation {\n @PublishedApi\n internal actual constructor(delegate: Continuation) : this(delegate, UNDECIDED)\n\n public actual override val context: CoroutineContext\n get() = delegate.context\n\n private var result: Any? = initialResult\n\n public actual override fun resumeWith(result: Result) {\n val cur = this.result\n when {\n cur === UNDECIDED -> {\n this.result = result.value\n }\n cur === COROUTINE_SUSPENDED -> {\n this.result = RESUMED\n delegate.resumeWith(result)\n }\n else -> throw IllegalStateException(\"Already resumed\")\n }\n }\n\n @PublishedApi\n internal actual fun getOrThrow(): Any? {\n if (result === UNDECIDED) {\n result = COROUTINE_SUSPENDED\n return COROUTINE_SUSPENDED\n }\n val result = this.result\n return when {\n result === RESUMED -> COROUTINE_SUSPENDED // already called continuation, indicate COROUTINE_SUSPENDED upstream\n result is Result.Failure -> throw result.exception\n else -> result // either COROUTINE_SUSPENDED or data\n }\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines.js.internal\n\nimport kotlin.coroutines.Continuation\nimport kotlin.coroutines.EmptyCoroutineContext\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal val EmptyContinuation = Continuation(EmptyCoroutineContext) { result ->\n result.getOrThrow()\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\n/**\n * Exposes the [Date API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) to Kotlin.\n */\n@Suppress(\"NOT_DOCUMENTED\")\npublic external class Date() {\n public constructor(milliseconds: Number)\n\n public constructor(dateString: String)\n\n public constructor(year: Int, month: Int)\n\n public constructor(year: Int, month: Int, day: Int)\n\n public constructor(year: Int, month: Int, day: Int, hour: Int)\n\n public constructor(year: Int, month: Int, day: Int, hour: Int, minute: Int)\n\n public constructor(year: Int, month: Int, day: Int, hour: Int, minute: Int, second: Int)\n\n public constructor(year: Int, month: Int, day: Int, hour: Int, minute: Int, second: Int, millisecond: Number)\n\n public fun getDate(): Int\n\n public fun getDay(): Int\n\n public fun getFullYear(): Int\n\n public fun getHours(): Int\n\n public fun getMilliseconds(): Int\n\n public fun getMinutes(): Int\n\n public fun getMonth(): Int\n\n public fun getSeconds(): Int\n\n public fun getTime(): Double\n\n public fun getTimezoneOffset(): Int\n\n public fun getUTCDate(): Int\n\n public fun getUTCDay(): Int\n\n public fun getUTCFullYear(): Int\n\n public fun getUTCHours(): Int\n\n public fun getUTCMilliseconds(): Int\n\n public fun getUTCMinutes(): Int\n\n public fun getUTCMonth(): Int\n\n public fun getUTCSeconds(): Int\n\n public fun toDateString(): String\n\n public fun toISOString(): String\n\n public fun toJSON(): Json\n\n public fun toLocaleDateString(locales: Array = definedExternally, options: LocaleOptions = definedExternally): String\n\n public fun toLocaleDateString(locales: String, options: LocaleOptions = definedExternally): String\n\n public fun toLocaleString(locales: Array = definedExternally, options: LocaleOptions = definedExternally): String\n\n public fun toLocaleString(locales: String, options: LocaleOptions = definedExternally): String\n\n public fun toLocaleTimeString(locales: Array = definedExternally, options: LocaleOptions = definedExternally): String\n\n public fun toLocaleTimeString(locales: String, options: LocaleOptions = definedExternally): String\n\n public fun toTimeString(): String\n\n public fun toUTCString(): String\n\n public companion object {\n public fun now(): Double\n\n public fun parse(dateString: String): Double\n\n public fun UTC(year: Int, month: Int): Double\n\n public fun UTC(year: Int, month: Int, day: Int): Double\n\n public fun UTC(year: Int, month: Int, day: Int, hour: Int): Double\n\n public fun UTC(year: Int, month: Int, day: Int, hour: Int, minute: Int): Double\n\n public fun UTC(year: Int, month: Int, day: Int, hour: Int, minute: Int, second: Int): Double\n\n public fun UTC(year: Int, month: Int, day: Int, hour: Int, minute: Int, second: Int, millisecond: Number): Double\n }\n\n public interface LocaleOptions {\n public var localeMatcher: String?\n\n public var timeZone: String?\n\n public var hour12: Boolean?\n\n public var formatMatcher: String?\n\n public var weekday: String?\n\n public var era: String?\n\n public var year: String?\n\n public var month: String?\n\n public var day: String?\n\n public var hour: String?\n\n public var minute: String?\n\n public var second: String?\n\n public var timeZoneName: String?\n }\n}\n\npublic inline fun dateLocaleOptions(init: Date.LocaleOptions.() -> Unit): Date.LocaleOptions {\n val result = js(\"new Object()\").unsafeCast()\n init(result)\n return result\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.dom\n\nimport org.w3c.dom.*\n\n/**\n * Creates a new element with the specified [name].\n *\n * The element is initialized with the speicifed [init] function.\n */\npublic fun Document.createElement(name: String, init: Element.() -> Unit): Element = createElement(name).apply(init)\n\n/**\n * Appends a newly created element with the specified [name] to this element.\n *\n * The element is initialized with the speicifed [init] function.\n */\npublic fun Element.appendElement(name: String, init: Element.() -> Unit): Element =\n ownerDocument!!.createElement(name, init).also { appendChild(it) }\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.dom\n\nimport org.w3c.dom.*\n\n/** Returns true if the element has the given CSS class style in its 'class' attribute */\nfun Element.hasClass(cssClass: String): Boolean = className.matches(\"\"\"(^|.*\\s+)$cssClass($|\\s+.*)\"\"\".toRegex())\n\n/**\n * Adds CSS class to element. Has no effect if all specified classes are already in class attribute of the element\n *\n * @return true if at least one class has been added\n */\nfun Element.addClass(vararg cssClasses: String): Boolean {\n val missingClasses = cssClasses.filterNot { hasClass(it) }\n if (missingClasses.isNotEmpty()) {\n val presentClasses = className.trim()\n className = buildString {\n append(presentClasses)\n if (!presentClasses.isEmpty()) {\n append(\" \")\n }\n missingClasses.joinTo(this, \" \")\n }\n return true\n }\n\n return false\n}\n\n/**\n * Removes all [cssClasses] from element. Has no effect if all specified classes are missing in class attribute of the element\n *\n * @return true if at least one class has been removed\n */\nfun Element.removeClass(vararg cssClasses: String): Boolean {\n if (cssClasses.any { hasClass(it) }) {\n val toBeRemoved = cssClasses.toSet()\n className = className.trim().split(\"\\\\s+\".toRegex()).filter { it !in toBeRemoved }.joinToString(\" \")\n return true\n }\n\n return false\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n\npackage kotlin.text\n\n/**\n * Converts the string into a regular expression [Regex] with the default options.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.toRegex(): Regex = Regex(this)\n\n/**\n * Converts the string into a regular expression [Regex] with the specified single [option].\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.toRegex(option: RegexOption): Regex = Regex(this, option)\n\n/**\n * Converts the string into a regular expression [Regex] with the specified set of [options].\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.toRegex(options: Set): Regex = Regex(this, options)\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n\npackage kotlin.text\n\n/**\n * A mutable sequence of characters.\n *\n * String builder can be used to efficiently perform multiple string manipulation operations.\n */\nexpect class StringBuilder : Appendable, CharSequence {\n /** Constructs an empty string builder. */\n constructor()\n\n /** Constructs an empty string builder with the specified initial [capacity]. */\n constructor(capacity: Int)\n\n /** Constructs a string builder that contains the same characters as the specified [content] char sequence. */\n constructor(content: CharSequence)\n\n /** Constructs a string builder that contains the same characters as the specified [content] string. */\n @SinceKotlin(\"1.3\")\n// @ExperimentalStdlibApi\n constructor(content: String)\n\n override val length: Int\n\n override operator fun get(index: Int): Char\n\n override fun subSequence(startIndex: Int, endIndex: Int): CharSequence\n\n override fun append(value: Char): StringBuilder\n override fun append(value: CharSequence?): StringBuilder\n override fun append(value: CharSequence?, startIndex: Int, endIndex: Int): StringBuilder\n\n /**\n * Reverses the contents of this string builder and returns this instance.\n *\n * Surrogate pairs included in this string builder are treated as single characters.\n * Therefore, the order of the high-low surrogates is never reversed.\n *\n * Note that the reverse operation may produce new surrogate pairs that were unpaired low-surrogates and high-surrogates before the operation.\n * For example, reversing `\"\\uDC00\\uD800\"` produces `\"\\uD800\\uDC00\"` which is a valid surrogate pair.\n */\n fun reverse(): StringBuilder\n\n /**\n * Appends the string representation of the specified object [value] to this string builder and returns this instance.\n *\n * The overall effect is exactly as if the [value] were converted to a string by the `value.toString()` method,\n * and then that string was appended to this string builder.\n */\n fun append(value: Any?): StringBuilder\n\n /**\n * Appends the string representation of the specified boolean [value] to this string builder and returns this instance.\n *\n * The overall effect is exactly as if the [value] were converted to a string by the `value.toString()` method,\n * and then that string was appended to this string builder.\n */\n @SinceKotlin(\"1.3\")\n// @ExperimentalStdlibApi\n fun append(value: Boolean): StringBuilder\n\n /**\n * Appends characters in the specified character array [value] to this string builder and returns this instance.\n *\n * Characters are appended in order, starting at the index 0.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n fun append(value: CharArray): StringBuilder\n\n /**\n * Appends the specified string [value] to this string builder and returns this instance.\n */\n @SinceKotlin(\"1.3\")\n// @ExperimentalStdlibApi\n fun append(value: String): StringBuilder\n\n /**\n * Returns the current capacity of this string builder.\n *\n * The capacity is the maximum length this string builder can have before an allocation occurs.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n fun capacity(): Int\n\n /**\n * Ensures that the capacity of this string builder is at least equal to the specified [minimumCapacity].\n *\n * If the current capacity is less than the [minimumCapacity], a new backing storage is allocated with greater capacity.\n * Otherwise, this method takes no action and simply returns.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n fun ensureCapacity(minimumCapacity: Int)\n\n /**\n * Returns the index within this string builder of the first occurrence of the specified [string].\n *\n * Returns `-1` if the specified [string] does not occur in this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n fun indexOf(string: String): Int\n\n /**\n * Returns the index within this string builder of the first occurrence of the specified [string],\n * starting at the specified [startIndex].\n *\n * Returns `-1` if the specified [string] does not occur in this string builder starting at the specified [startIndex].\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n fun indexOf(string: String, startIndex: Int): Int\n\n /**\n * Returns the index within this string builder of the last occurrence of the specified [string].\n * The last occurrence of empty string `\"\"` is considered to be at the index equal to `this.length`.\n *\n * Returns `-1` if the specified [string] does not occur in this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n fun lastIndexOf(string: String): Int\n\n /**\n * Returns the index within this string builder of the last occurrence of the specified [string],\n * starting from the specified [startIndex] toward the beginning.\n *\n * Returns `-1` if the specified [string] does not occur in this string builder starting at the specified [startIndex].\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n fun lastIndexOf(string: String, startIndex: Int): Int\n\n /**\n * Inserts the string representation of the specified boolean [value] into this string builder at the specified [index] and returns this instance.\n *\n * The overall effect is exactly as if the [value] were converted to a string by the `value.toString()` method,\n * and then that string was inserted into this string builder at the specified [index].\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n fun insert(index: Int, value: Boolean): StringBuilder\n\n /**\n * Inserts the specified character [value] into this string builder at the specified [index] and returns this instance.\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n fun insert(index: Int, value: Char): StringBuilder\n\n /**\n * Inserts characters in the specified character array [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in same order as in the [value] character array, starting at [index].\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n fun insert(index: Int, value: CharArray): StringBuilder\n\n /**\n * Inserts characters in the specified character sequence [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in the same order as in the [value] character sequence, starting at [index].\n *\n * @param index the position in this string builder to insert at.\n * @param value the character sequence from which characters are inserted. If [value] is `null`, then the four characters `\"null\"` are inserted.\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n fun insert(index: Int, value: CharSequence?): StringBuilder\n\n /**\n * Inserts the string representation of the specified object [value] into this string builder at the specified [index] and returns this instance.\n *\n * The overall effect is exactly as if the [value] were converted to a string by the `value.toString()` method,\n * and then that string was inserted into this string builder at the specified [index].\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n fun insert(index: Int, value: Any?): StringBuilder\n\n /**\n * Inserts the string [value] into this string builder at the specified [index] and returns this instance.\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n fun insert(index: Int, value: String): StringBuilder\n\n /**\n * Sets the length of this string builder to the specified [newLength].\n *\n * If the [newLength] is less than the current length, it is changed to the specified [newLength].\n * Otherwise, null characters '\\u0000' are appended to this string builder until its length is less than the [newLength].\n *\n * Note that in Kotlin/JS [set] operator function has non-constant execution time complexity.\n * Therefore, increasing length of this string builder and then updating each character by index may slow down your program.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] if [newLength] is less than zero.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n fun setLength(newLength: Int)\n\n /**\n * Returns a new [String] that contains characters in this string builder at [startIndex] (inclusive) and up to the [length] (exclusive).\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n fun substring(startIndex: Int): String\n\n /**\n * Returns a new [String] that contains characters in this string builder at [startIndex] (inclusive) and up to the [endIndex] (exclusive).\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this string builder indices or when `startIndex > endIndex`.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n fun substring(startIndex: Int, endIndex: Int): String\n\n /**\n * Attempts to reduce storage used for this string builder.\n *\n * If the backing storage of this string builder is larger than necessary to hold its current contents,\n * then it may be resized to become more space efficient.\n * Calling this method may, but is not required to, affect the value of the [capacity] property.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n fun trimToSize()\n}\n\n\n/**\n * Clears the content of this string builder making it empty and returns this instance.\n *\n * @sample samples.text.Strings.clearStringBuilder\n */\n@SinceKotlin(\"1.3\")\npublic expect fun StringBuilder.clear(): StringBuilder\n\n/**\n * Sets the character at the specified [index] to the specified [value].\n *\n * @throws IndexOutOfBoundsException if [index] is out of bounds of this string builder.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect operator fun StringBuilder.set(index: Int, value: Char)\n\n/**\n * Replaces characters in the specified range of this string builder with characters in the specified string [value] and returns this instance.\n *\n * @param startIndex the beginning (inclusive) of the range to replace.\n * @param endIndex the end (exclusive) of the range to replace.\n * @param value the string to replace with.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] if [startIndex] is less than zero, greater than the length of this string builder, or `startIndex > endIndex`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun StringBuilder.setRange(startIndex: Int, endIndex: Int, value: String): StringBuilder\n\n/**\n * Removes the character at the specified [index] from this string builder and returns this instance.\n *\n * If the `Char` at the specified [index] is part of a supplementary code point, this method does not remove the entire supplementary character.\n *\n * @param index the index of `Char` to remove.\n *\n * @throws IndexOutOfBoundsException if [index] is out of bounds of this string builder.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun StringBuilder.deleteAt(index: Int): StringBuilder\n\n/**\n * Removes characters in the specified range from this string builder and returns this instance.\n *\n * @param startIndex the beginning (inclusive) of the range to remove.\n * @param endIndex the end (exclusive) of the range to remove.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] is out of range of this string builder indices or when `startIndex > endIndex`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun StringBuilder.deleteRange(startIndex: Int, endIndex: Int): StringBuilder\n\n/**\n * Copies characters from this string builder into the [destination] character array.\n *\n * @param destination the array to copy to.\n * @param destinationOffset the position in the array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the range to copy, 0 by default.\n * @param endIndex the end (exclusive) of the range to copy, length of this string builder by default.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this string builder indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun StringBuilder.toCharArray(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = this.length)\n\n/**\n * Appends characters in a subarray of the specified character array [value] to this string builder and returns this instance.\n *\n * Characters are appended in order, starting at specified [startIndex].\n *\n * @param value the array from which characters are appended.\n * @param startIndex the beginning (inclusive) of the subarray to append.\n * @param endIndex the end (exclusive) of the subarray to append.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] array indices or when `startIndex > endIndex`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun StringBuilder.appendRange(value: CharArray, startIndex: Int, endIndex: Int): StringBuilder\n\n/**\n * Appends a subsequence of the specified character sequence [value] to this string builder and returns this instance.\n *\n * @param value the character sequence from which a subsequence is appended. If [value] is `null`,\n * then characters are appended as if [value] contained the four characters `\"null\"`.\n * @param startIndex the beginning (inclusive) of the subsequence to append.\n * @param endIndex the end (exclusive) of the subsequence to append.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] character sequence indices or when `startIndex > endIndex`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun StringBuilder.appendRange(value: CharSequence?, startIndex: Int, endIndex: Int): StringBuilder\n\n/**\n * Inserts characters in a subarray of the specified character array [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in same order as in the [value] array, starting at [index].\n *\n * @param index the position in this string builder to insert at.\n * @param value the array from which characters are inserted.\n * @param startIndex the beginning (inclusive) of the subarray to insert.\n * @param endIndex the end (exclusive) of the subarray to insert.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun StringBuilder.insertRange(index: Int, value: CharArray, startIndex: Int, endIndex: Int): StringBuilder\n\n/**\n * Inserts characters in a subsequence of the specified character sequence [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in the same order as in the [value] character sequence, starting at [index].\n *\n * @param index the position in this string builder to insert at.\n * @param value the character sequence from which a subsequence is inserted. If [value] is `null`,\n * then characters will be inserted as if [value] contained the four characters `\"null\"`.\n * @param startIndex the beginning (inclusive) of the subsequence to insert.\n * @param endIndex the end (exclusive) of the subsequence to insert.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] character sequence indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun StringBuilder.insertRange(index: Int, value: CharSequence?, startIndex: Int, endIndex: Int): StringBuilder\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\n@Deprecated(\"Use append(value: Any?) instead\", ReplaceWith(\"append(value = obj)\"), DeprecationLevel.WARNING)\n@kotlin.internal.InlineOnly\npublic inline fun StringBuilder.append(obj: Any?): StringBuilder = this.append(obj)\n\n/**\n * Builds new string by populating newly created [StringBuilder] using provided [builderAction]\n * and then converting it to [String].\n */\n@kotlin.internal.InlineOnly\npublic inline fun buildString(builderAction: StringBuilder.() -> Unit): String =\n StringBuilder().apply(builderAction).toString()\n\n/**\n * Builds new string by populating newly created [StringBuilder] initialized with the given [capacity]\n * using provided [builderAction] and then converting it to [String].\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun buildString(capacity: Int, builderAction: StringBuilder.() -> Unit): String =\n StringBuilder(capacity).apply(builderAction).toString()\n\n/**\n * Appends all arguments to the given StringBuilder.\n */\npublic fun StringBuilder.append(vararg value: String?): StringBuilder {\n for (item in value)\n append(item)\n return this\n}\n\n/**\n * Appends all arguments to the given StringBuilder.\n */\npublic fun StringBuilder.append(vararg value: Any?): StringBuilder {\n for (item in value)\n append(item)\n return this\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.dom\n\nimport org.w3c.dom.*\n\n/**\n * Gets a value indicating whether this node is a TEXT_NODE or a CDATA_SECTION_NODE.\n */\npublic val Node.isText: Boolean\n get() = nodeType == Node.TEXT_NODE || nodeType == Node.CDATA_SECTION_NODE\n\n/**\n * Gets a value indicating whether this node is an [Element].\n */\npublic val Node.isElement: Boolean\n get() = nodeType == Node.ELEMENT_NODE\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage org.w3c.dom.events\n\npublic fun EventListener(handler: (Event) -> Unit): EventListener = EventListenerHandler(handler)\n\nprivate class EventListenerHandler(private val handler: (Event) -> Unit) : EventListener {\n public override fun handleEvent(event: Event) {\n handler(event)\n }\n\n public override fun toString(): String = \"EventListenerHandler($handler)\"\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage org.w3c.dom\n\npublic external interface ItemArrayLike {\n val length: Int\n fun item(index: Int): T?\n}\n\n/**\n * Returns the view of this `ItemArrayLike` collection as `List`\n */\npublic fun ItemArrayLike.asList(): List = object : AbstractList() {\n override val size: Int get() = this@asList.length\n\n override fun get(index: Int): T = when (index) {\n in 0..lastIndex -> this@asList.item(index).unsafeCast()\n else -> throw IndexOutOfBoundsException(\"index $index is not in range [0..$lastIndex]\")\n }\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.dom\n\nimport org.w3c.dom.*\n\n/** Removes all the children from this node. */\npublic fun Node.clear() {\n while (hasChildNodes()) {\n removeChild(firstChild!!)\n }\n}\n\n/**\n * Creates text node and append it to the element.\n *\n * @return this element\n */\nfun Element.appendText(text: String): Element {\n appendChild(ownerDocument!!.createTextNode(text))\n return this\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\n/**\n * Reinterprets this value as a value of the [dynamic type](/docs/reference/dynamic-type.html).\n */\n@kotlin.internal.InlineOnly\npublic inline fun Any?.asDynamic(): dynamic = this\n\n/**\n * Reinterprets this value as a value of the specified type [T] without any actual type checking.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Any?.unsafeCast(): @kotlin.internal.NoInfer T = this.asDynamic()\n\n/**\n * Reinterprets this `dynamic` value as a value of the specified type [T] without any actual type checking.\n */\n@kotlin.internal.DynamicExtension\n@JsName(\"unsafeCastDynamic\")\n@kotlin.internal.InlineOnly\npublic inline fun dynamic.unsafeCast(): @kotlin.internal.NoInfer T = this\n\n/**\n * Allows to iterate this `dynamic` object in the following cases:\n * - when it has an `iterator` function,\n * - when it is an array\n * - when it is an instance of [kotlin.collections.Iterable]\n */\n@kotlin.internal.DynamicExtension\npublic operator fun dynamic.iterator(): Iterator {\n val r: Any? = this\n\n return when {\n this[\"iterator\"] != null ->\n this[\"iterator\"]()\n isArrayish(r) ->\n r.unsafeCast>().iterator()\n\n else ->\n (r as Iterable<*>).iterator()\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// a package is omitted to get declarations directly under the module\n\n@JsName(\"throwNPE\")\ninternal fun throwNPE(message: String) {\n throw NullPointerException(message)\n}\n\n@JsName(\"throwCCE\")\ninternal fun throwCCE() {\n throw ClassCastException(\"Illegal cast\")\n}\n\n@JsName(\"throwISE\")\ninternal fun throwISE(message: String) {\n throw IllegalStateException(message)\n}\n\n@JsName(\"throwUPAE\")\ninternal fun throwUPAE(propertyName: String) {\n throw UninitializedPropertyAccessException(\"lateinit property ${propertyName} has not been initialized\")\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\n// NOTE: Do not author your exceptions as they are written in this file, instead use this template:\n/*\npublic open class MyException : Exception {\n constructor() : super()\n constructor(message: String?) : super(message)\n constructor(message: String?, cause: Throwable?) : super(message, cause)\n constructor(cause: Throwable?) : super(cause)\n}\n*/\n\n\n// TODO: remove workarounds for KT-22053 from direct Throwable inheritors\n// TODO: remove primary constructors, make all secondary KT-22055\n\n@Suppress(\"USELESS_ELVIS_RIGHT_IS_NULL\")\npublic actual open class Error actual constructor(message: String?, cause: Throwable?) : Throwable(message, cause ?: null) {\n actual constructor() : this(null, null) {\n Error::class.js.asDynamic().call(this, null, null)\n }\n\n actual constructor(message: String?) : this(message, null) {\n Error::class.js.asDynamic().call(this, message, null)\n }\n\n actual constructor(cause: Throwable?) : this(undefined, cause) {\n Error::class.js.asDynamic().call(this, undefined, cause)\n }\n}\n\n@Suppress(\"USELESS_ELVIS_RIGHT_IS_NULL\")\npublic actual open class Exception actual constructor(message: String?, cause: Throwable?) : Throwable(message, cause ?: null) {\n actual constructor() : this(null, null) {\n Exception::class.js.asDynamic().call(this, null, null)\n }\n\n actual constructor(message: String?) : this(message, null) {\n Exception::class.js.asDynamic().call(this, message, null)\n }\n\n actual constructor(cause: Throwable?) : this(undefined, cause) {\n Exception::class.js.asDynamic().call(this, undefined, cause)\n }\n}\n\npublic actual open class RuntimeException actual constructor(message: String?, cause: Throwable?) : Exception(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\npublic actual open class IllegalArgumentException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\npublic actual open class IllegalStateException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\npublic actual open class IndexOutOfBoundsException actual constructor(message: String?) : RuntimeException(message) {\n actual constructor() : this(null)\n}\n\npublic actual open class ConcurrentModificationException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\npublic actual open class UnsupportedOperationException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\n\npublic actual open class NumberFormatException actual constructor(message: String?) : IllegalArgumentException(message) {\n actual constructor() : this(null)\n}\n\n\npublic actual open class NullPointerException actual constructor(message: String?) : RuntimeException(message) {\n actual constructor() : this(null)\n}\n\npublic actual open class ClassCastException actual constructor(message: String?) : RuntimeException(message) {\n actual constructor() : this(null)\n}\n\npublic actual open class AssertionError private constructor(message: String?, cause: Throwable?) : Error(message, cause) {\n actual constructor() : this(null)\n constructor(message: String?) : this(message, null)\n actual constructor(message: Any?) : this(message.toString(), message as? Throwable)\n}\n\npublic actual open class NoSuchElementException actual constructor(message: String?) : RuntimeException(message) {\n actual constructor() : this(null)\n}\n\n@SinceKotlin(\"1.3\")\npublic actual open class ArithmeticException actual constructor(message: String?) : RuntimeException(message) {\n actual constructor() : this(null)\n}\n\npublic actual open class NoWhenBranchMatchedException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\npublic actual open class UninitializedPropertyAccessException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\npackage kotlin.collections\n\n/**\n * Groups elements from the [Grouping] source by key and counts elements in each group.\n *\n * @return a [Map] associating the key of each group with the count of element in the group.\n */\n@SinceKotlin(\"1.1\")\npublic actual fun Grouping.eachCount(): Map =\n fold(0) { acc, _ -> acc + 1 }\n\n/*\n/**\n * Groups elements from the [Grouping] source by key and sums values provided by the [valueSelector] function for elements in each group.\n *\n * @return a [Map] associating the key of each group with the count of element in the group.\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Grouping.eachSumOf(valueSelector: (T) -> Int): Map =\n fold(0) { acc, e -> acc + valueSelector(e) }\n*/","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"GroupingKt\")\n@file:kotlin.jvm.JvmMultifileClass\n\npackage kotlin.collections\n\n/**\n * Represents a source of elements with a [keyOf] function, which can be applied to each element to get its key.\n *\n * A [Grouping] structure serves as an intermediate step in group-and-fold operations:\n * they group elements by their keys and then fold each group with some aggregating operation.\n *\n * It is created by attaching `keySelector: (T) -> K` function to a source of elements.\n * To get an instance of [Grouping] use one of `groupingBy` extension functions:\n * - [Iterable.groupingBy]\n * - [Sequence.groupingBy]\n * - [Array.groupingBy]\n * - [CharSequence.groupingBy]\n *\n * For the list of group-and-fold operations available, see the [extension functions](#extension-functions) for `Grouping`.\n */\n@SinceKotlin(\"1.1\")\npublic interface Grouping {\n /** Returns an [Iterator] over the elements of the source of this grouping. */\n fun sourceIterator(): Iterator\n /** Extracts the key of an [element]. */\n fun keyOf(element: T): K\n}\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments, and stores the results in a new map.\n *\n * The key for each element is provided by the [Grouping.keyOf] function.\n *\n * @param operation function is invoked on each element with the following parameters:\n * - `key`: the key of the group this element belongs to;\n * - `accumulator`: the current value of the accumulator of the group, can be `null` if it's the first `element` encountered in the group;\n * - `element`: the element from the source being aggregated;\n * - `first`: indicates whether it's the first `element` encountered in the group.\n *\n * @return a [Map] associating the key of each group with the result of aggregation of the group elements.\n * @sample samples.collections.Grouping.aggregateByRadix\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Grouping.aggregate(\n operation: (key: K, accumulator: R?, element: T, first: Boolean) -> R\n): Map {\n return aggregateTo(mutableMapOf(), operation)\n}\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments,\n * and stores the results in the given [destination] map.\n *\n * The key for each element is provided by the [Grouping.keyOf] function.\n *\n * @param operation a function that is invoked on each element with the following parameters:\n * - `key`: the key of the group this element belongs to;\n * - `accumulator`: the current value of the accumulator of the group, can be `null` if it's the first `element` encountered in the group;\n * - `element`: the element from the source being aggregated;\n * - `first`: indicates whether it's the first `element` encountered in the group.\n *\n * If the [destination] map already has a value corresponding to some key,\n * then the elements being aggregated for that key are never considered as `first`.\n *\n * @return the [destination] map associating the key of each group with the result of aggregation of the group elements.\n * @sample samples.collections.Grouping.aggregateByRadixTo\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > Grouping.aggregateTo(\n destination: M,\n operation: (key: K, accumulator: R?, element: T, first: Boolean) -> R\n): M {\n for (e in this.sourceIterator()) {\n val key = keyOf(e)\n val accumulator = destination[key]\n destination[key] = operation(key, accumulator, e, accumulator == null && !destination.containsKey(key))\n }\n return destination\n}\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments, and stores the results in a new map.\n * An initial value of accumulator is provided by [initialValueSelector] function.\n *\n * @param initialValueSelector a function that provides an initial value of accumulator for each group.\n * It's invoked with parameters:\n * - `key`: the key of the group;\n * - `element`: the first element being encountered in that group.\n *\n * @param operation a function that is invoked on each element with the following parameters:\n * - `key`: the key of the group this element belongs to;\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being accumulated.\n *\n * @return a [Map] associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.foldByEvenLengthWithComputedInitialValue\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Grouping.fold(\n initialValueSelector: (key: K, element: T) -> R,\n operation: (key: K, accumulator: R, element: T) -> R\n): Map =\n @Suppress(\"UNCHECKED_CAST\")\n aggregate { key, acc, e, first -> operation(key, if (first) initialValueSelector(key, e) else acc as R, e) }\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments,\n * and stores the results in the given [destination] map.\n * An initial value of accumulator is provided by [initialValueSelector] function.\n *\n * @param initialValueSelector a function that provides an initial value of accumulator for each group.\n * It's invoked with parameters:\n * - `key`: the key of the group;\n * - `element`: the first element being encountered in that group.\n *\n * If the [destination] map already has a value corresponding to some key, that value is used as an initial value of\n * the accumulator for that group and the [initialValueSelector] function is not called for that group.\n *\n * @param operation a function that is invoked on each element with the following parameters:\n * - `key`: the key of the group this element belongs to;\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being accumulated.\n *\n * @return the [destination] map associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.foldByEvenLengthWithComputedInitialValueTo\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > Grouping.foldTo(\n destination: M,\n initialValueSelector: (key: K, element: T) -> R,\n operation: (key: K, accumulator: R, element: T) -> R\n): M =\n @Suppress(\"UNCHECKED_CAST\")\n aggregateTo(destination) { key, acc, e, first -> operation(key, if (first) initialValueSelector(key, e) else acc as R, e) }\n\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments, and stores the results in a new map.\n * An initial value of accumulator is the same [initialValue] for each group.\n *\n * @param operation a function that is invoked on each element with the following parameters:\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being accumulated.\n *\n * @return a [Map] associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.foldByEvenLengthWithConstantInitialValue\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Grouping.fold(\n initialValue: R,\n operation: (accumulator: R, element: T) -> R\n): Map =\n @Suppress(\"UNCHECKED_CAST\")\n aggregate { _, acc, e, first -> operation(if (first) initialValue else acc as R, e) }\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments,\n * and stores the results in the given [destination] map.\n * An initial value of accumulator is the same [initialValue] for each group.\n *\n * If the [destination] map already has a value corresponding to the key of some group,\n * that value is used as an initial value of the accumulator for that group.\n *\n * @param operation a function that is invoked on each element with the following parameters:\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being accumulated.\n *\n * @return the [destination] map associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.foldByEvenLengthWithConstantInitialValueTo\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > Grouping.foldTo(\n destination: M,\n initialValue: R,\n operation: (accumulator: R, element: T) -> R\n): M =\n @Suppress(\"UNCHECKED_CAST\")\n aggregateTo(destination) { _, acc, e, first -> operation(if (first) initialValue else acc as R, e) }\n\n\n/**\n * Groups elements from the [Grouping] source by key and applies the reducing [operation] to the elements of each group\n * sequentially starting from the second element of the group,\n * passing the previously accumulated value and the current element as arguments,\n * and stores the results in a new map.\n * An initial value of accumulator is the first element of the group.\n *\n * @param operation a function that is invoked on each subsequent element of the group with the following parameters:\n * - `key`: the key of the group this element belongs to;\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being accumulated.\n *\n * @return a [Map] associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.reduceByMaxVowels\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Grouping.reduce(\n operation: (key: K, accumulator: S, element: T) -> S\n): Map =\n aggregate { key, acc, e, first ->\n @Suppress(\"UNCHECKED_CAST\")\n if (first) e else operation(key, acc as S, e)\n }\n\n/**\n * Groups elements from the [Grouping] source by key and applies the reducing [operation] to the elements of each group\n * sequentially starting from the second element of the group,\n * passing the previously accumulated value and the current element as arguments,\n * and stores the results in the given [destination] map.\n * An initial value of accumulator is the first element of the group.\n *\n * If the [destination] map already has a value corresponding to the key of some group,\n * that value is used as an initial value of the accumulator for that group and the first element of that group is also\n * subjected to the [operation].\n\n * @param operation a function that is invoked on each subsequent element of the group with the following parameters:\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being folded;\n *\n * @return the [destination] map associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.reduceByMaxVowelsTo\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > Grouping.reduceTo(\n destination: M,\n operation: (key: K, accumulator: S, element: T) -> S\n): M =\n aggregateTo(destination) { key, acc, e, first ->\n @Suppress(\"UNCHECKED_CAST\")\n if (first) e else operation(key, acc as S, e)\n }\n\n\n/**\n * Groups elements from the [Grouping] source by key and counts elements in each group to the given [destination] map.\n *\n * If the [destination] map already has a value corresponding to the key of some group,\n * that value is used as an initial value of the counter for that group.\n *\n * @return the [destination] map associating the key of each group with the count of elements in the group.\n *\n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic fun > Grouping.eachCountTo(destination: M): M =\n foldTo(destination, 0) { acc, _ -> acc + 1 }\n\n/*\n/**\n * Groups elements from the [Grouping] source by key and sums values provided by the [valueSelector] function for elements in each group\n * to the given [destination] map.\n *\n *\n * If the [destination] map already has a value corresponding to the key of some group,\n * that value is used as an initial value of the sum for that group.\n *\n * @return the [destination] map associating the key of each group with the sum of elements in the group.\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > Grouping.eachSumOfTo(destination: M, valueSelector: (T) -> Int): M =\n foldTo(destination, 0) { acc, e -> acc + valueSelector(e)}\n*/\n\n\n/*\n// TODO: sum by long and by double overloads\n\npublic inline fun > Grouping.sumEachByLongTo(destination: M, valueSelector: (T) -> Long): M =\n foldTo(destination, 0L) { acc, e -> acc + valueSelector(e)}\n\npublic inline fun Grouping.sumEachByLong(valueSelector: (T) -> Long): Map =\n fold(0L) { acc, e -> acc + valueSelector(e)}\n\npublic inline fun > Grouping.sumEachByDoubleTo(destination: M, valueSelector: (T) -> Double): M =\n foldTo(destination, 0.0) { acc, e -> acc + valueSelector(e)}\n\npublic inline fun Grouping.sumEachByDouble(valueSelector: (T) -> Double): Map =\n fold(0.0) { acc, e -> acc + valueSelector(e)}\n*/\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\n/**\n * Exposes the JavaScript [Math object](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Math) to Kotlin.\n */\n@Deprecated(\"Use top-level functions from kotlin.math package instead.\", level = DeprecationLevel.WARNING)\npublic external object Math {\n @Deprecated(\"Use kotlin.math.PI instead.\", ReplaceWith(\"PI\", \"kotlin.math.PI\"), level = DeprecationLevel.ERROR)\n public val PI: Double\n @Deprecated(\"Use Random.nextDouble instead\", ReplaceWith(\"kotlin.random.Random.nextDouble()\", \"kotlin.random.Random\"), level = DeprecationLevel.WARNING)\n public fun random(): Double\n @Deprecated(\"Use kotlin.math.abs instead.\", ReplaceWith(\"abs(value)\", \"kotlin.math.abs\"), level = DeprecationLevel.ERROR)\n public fun abs(value: Double): Double\n @Deprecated(\"Use kotlin.math.acos instead.\", ReplaceWith(\"acos(value)\", \"kotlin.math.acos\"), level = DeprecationLevel.ERROR)\n public fun acos(value: Double): Double\n @Deprecated(\"Use kotlin.math.asin instead.\", ReplaceWith(\"asin(value)\", \"kotlin.math.asin\"), level = DeprecationLevel.ERROR)\n public fun asin(value: Double): Double\n @Deprecated(\"Use kotlin.math.atan instead.\", ReplaceWith(\"atan(value)\", \"kotlin.math.atan\"), level = DeprecationLevel.ERROR)\n public fun atan(value: Double): Double\n @Deprecated(\"Use kotlin.math.atan2 instead.\", ReplaceWith(\"atan2(y, x)\", \"kotlin.math.atan2\"), level = DeprecationLevel.ERROR)\n public fun atan2(y: Double, x: Double): Double\n @Deprecated(\"Use kotlin.math.cos instead.\", ReplaceWith(\"cos(value)\", \"kotlin.math.cos\"), level = DeprecationLevel.ERROR)\n public fun cos(value: Double): Double\n @Deprecated(\"Use kotlin.math.sin instead.\", ReplaceWith(\"sin(value)\", \"kotlin.math.sin\"), level = DeprecationLevel.ERROR)\n public fun sin(value: Double): Double\n @Deprecated(\"Use kotlin.math.exp instead.\", ReplaceWith(\"exp(value)\", \"kotlin.math.exp\"), level = DeprecationLevel.ERROR)\n public fun exp(value: Double): Double\n @Deprecated(\"Use maxOf or kotlin.math.max instead\", level = DeprecationLevel.ERROR)\n public fun max(vararg values: Int): Int\n @Deprecated(\"Use maxOf or kotlin.math.max instead\", level = DeprecationLevel.ERROR)\n public fun max(vararg values: Float): Float\n @Deprecated(\"Use maxOf or kotlin.math.max instead\", level = DeprecationLevel.ERROR)\n public fun max(vararg values: Double): Double\n @Deprecated(\"Use minOf or kotlin.math.min instead\", level = DeprecationLevel.ERROR)\n public fun min(vararg values: Int): Int\n @Deprecated(\"Use minOf or kotlin.math.min instead\", level = DeprecationLevel.ERROR)\n public fun min(vararg values: Float): Float\n @Deprecated(\"Use minOf or kotlin.math.min instead\", level = DeprecationLevel.ERROR)\n public fun min(vararg values: Double): Double\n @Deprecated(\"Use kotlin.math.sqrt instead.\", ReplaceWith(\"sqrt(value)\", \"kotlin.math.sqrt\"), level = DeprecationLevel.ERROR)\n public fun sqrt(value: Double): Double\n @Deprecated(\"Use kotlin.math.tan instead.\", ReplaceWith(\"tan(value)\", \"kotlin.math.tan\"), level = DeprecationLevel.ERROR)\n public fun tan(value: Double): Double\n @Deprecated(\"Use kotlin.math.ln instead.\", ReplaceWith(\"ln(value)\", \"kotlin.math.ln\"), level = DeprecationLevel.ERROR)\n public fun log(value: Double): Double\n @Deprecated(\"Use kotlin.math.pow instead.\", ReplaceWith(\"base.pow(exp)\", \"kotlin.math.pow\"), level = DeprecationLevel.ERROR)\n public fun pow(base: Double, exp: Double): Double\n @Deprecated(\"Use kotlin.math.round instead.\", ReplaceWith(\"round(value)\", \"kotlin.math.round\"), level = DeprecationLevel.ERROR)\n public fun round(value: Number): Int\n @Deprecated(\"Use kotlin.math.floor instead.\", ReplaceWith(\"floor(value)\", \"kotlin.math.floor\"), level = DeprecationLevel.ERROR)\n public fun floor(value: Number): Int\n @Deprecated(\"Use kotlin.math.ceil instead.\", ReplaceWith(\"ceil(value)\", \"kotlin.math.ceil\"), level = DeprecationLevel.ERROR)\n public fun ceil(value: Number): Int\n\n @PublishedApi\n internal fun trunc(value: Number): Double\n @PublishedApi\n internal fun sign(value: Number): Double\n\n @PublishedApi\n internal fun sinh(value: Double): Double\n @PublishedApi\n internal fun cosh(value: Double): Double\n @PublishedApi\n internal fun tanh(value: Double): Double\n @PublishedApi\n internal fun asinh(value: Double): Double\n @PublishedApi\n internal fun acosh(value: Double): Double\n @PublishedApi\n internal fun atanh(value: Double): Double\n\n @PublishedApi\n internal fun hypot(x: Double, y: Double): Double\n\n @PublishedApi\n internal fun expm1(value: Double): Double\n\n @PublishedApi\n internal fun log10(value: Double): Double\n @PublishedApi\n internal fun log2(value: Double): Double\n @PublishedApi\n internal fun log1p(value: Double): Double\n\n @PublishedApi\n internal fun clz32(value: Int): Int\n}\n\n/**\n * Returns the smaller of two values.\n */\n@Suppress(\"DEPRECATION\")\n@Deprecated(\"Use minOf or kotlin.math.min instead\", ReplaceWith(\"minOf(a, b)\"), level = DeprecationLevel.ERROR)\npublic fun Math.min(a: Long, b: Long): Long = if (a <= b) a else b\n\n/**\n * Returns the greater of two values.\n */\n@Suppress(\"DEPRECATION\")\n@Deprecated(\"Use maxOf or kotlin.math.max instead\", ReplaceWith(\"maxOf(a, b)\"), level = DeprecationLevel.ERROR)\npublic fun Math.max(a: Long, b: Long): Long = if (a >= b) a else b\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\n/**\n * An interface for indexing access to a collection of key-value pairs, where type of key is [String] and type of value is [Any?][Any].\n */\npublic external interface Json {\n /**\n * Calls to the function will be translated to indexing operation (square brackets) on the receiver with [propertyName] as the argument.\n *\n * E.g. for next code:\n * ```kotlin\n * fun test(j: Json, p: String) = j[\"prop\"] + j.get(p)\n * ```\n *\n * will be generated:\n * ```js\n * function test(j, p) {\n * return j[\"prop\"] + j[p];\n * }\n * ```\n */\n operator fun get(propertyName: String): Any?\n\n /**\n * Calls of the function will be translated to an assignment of [value] to the receiver indexed (with square brackets/index operation) with [propertyName].\n *\n * E.g. for the following code:\n * ```kotlin\n * fun test(j: Json, p: String, newValue: Any) {\n * j[\"prop\"] = 1\n * j.set(p, newValue)\n * }\n * ```\n *\n * will be generated:\n * ```js\n * function test(j, p, newValue) {\n * j[\"prop\"] = 1;\n * j[p] = newValue;\n * }\n * }\n * ```\n */\n operator fun set(propertyName: String, value: Any?): Unit\n}\n\n/**\n * Returns a simple JavaScript object (as [Json]) using provided key-value pairs as names and values of its properties.\n */\npublic fun json(vararg pairs: Pair): Json {\n val res: dynamic = js(\"({})\")\n for ((name, value) in pairs) {\n res[name] = value\n }\n return res\n}\n\n/**\n * Adds key-value pairs from [other] to [this].\n * Returns the original receiver.\n */\npublic fun Json.add(other: Json): Json {\n val keys: Array = js(\"Object\").keys(other)\n for (key in keys) {\n if (other.asDynamic().hasOwnProperty(key)) {\n this[key] = other[key];\n }\n }\n return this\n}\n\n/**\n * Exposes the JavaScript [JSON object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON) to Kotlin.\n */\n@Suppress(\"NOT_DOCUMENTED\")\npublic external object JSON {\n public fun stringify(o: Any?): String\n public fun stringify(o: Any?, replacer: ((key: String, value: Any?) -> Any?)): String\n public fun stringify(o: Any?, replacer: ((key: String, value: Any?) -> Any?)? = definedExternally, space: Int): String\n public fun stringify(o: Any?, replacer: ((key: String, value: Any?) -> Any?)? = definedExternally, space: String): String\n public fun stringify(o: Any?, replacer: Array): String\n public fun stringify(o: Any?, replacer: Array, space: Int): String\n public fun stringify(o: Any?, replacer: Array, space: String): String\n\n public fun parse(text: String): T\n public fun parse(text: String, reviver: ((key: String, value: Any?) -> Any?)): T\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n@file:Suppress(\"DEPRECATION\", \"DEPRECATION_ERROR\")\npackage kotlin.math\n\n\nimport kotlin.internal.InlineOnly\nimport kotlin.js.Math as nativeMath\n\n\n// region ================ Double Math ========================================\n\n/** Computes the sine of the angle [x] given in radians.\n *\n * Special cases:\n * - `sin(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sin(x: Double): Double = nativeMath.sin(x)\n\n/** Computes the cosine of the angle [x] given in radians.\n *\n * Special cases:\n * - `cos(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun cos(x: Double): Double = nativeMath.cos(x)\n\n/** Computes the tangent of the angle [x] given in radians.\n *\n * Special cases:\n * - `tan(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun tan(x: Double): Double = nativeMath.tan(x)\n\n/**\n * Computes the arc sine of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `asin(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun asin(x: Double): Double = nativeMath.asin(x)\n\n/**\n * Computes the arc cosine of the value [x];\n * the returned value is an angle in the range from `0.0` to `PI` radians.\n *\n * Special cases:\n * - `acos(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun acos(x: Double): Double = nativeMath.acos(x)\n\n/**\n * Computes the arc tangent of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `atan(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atan(x: Double): Double = nativeMath.atan(x)\n\n/**\n * Returns the angle `theta` of the polar coordinates `(r, theta)` that correspond\n * to the rectangular coordinates `(x, y)` by computing the arc tangent of the value [y] / [x];\n * the returned value is an angle in the range from `-PI` to `PI` radians.\n *\n * Special cases:\n * - `atan2(0.0, 0.0)` is `0.0`\n * - `atan2(0.0, x)` is `0.0` for `x > 0` and `PI` for `x < 0`\n * - `atan2(-0.0, x)` is `-0.0` for 'x > 0` and `-PI` for `x < 0`\n * - `atan2(y, +Inf)` is `0.0` for `0 < y < +Inf` and `-0.0` for '-Inf < y < 0`\n * - `atan2(y, -Inf)` is `PI` for `0 < y < +Inf` and `-PI` for `-Inf < y < 0`\n * - `atan2(y, 0.0)` is `PI/2` for `y > 0` and `-PI/2` for `y < 0`\n * - `atan2(+Inf, x)` is `PI/2` for finite `x`y\n * - `atan2(-Inf, x)` is `-PI/2` for finite `x`\n * - `atan2(NaN, x)` and `atan2(y, NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atan2(y: Double, x: Double): Double = nativeMath.atan2(y, x)\n\n/**\n * Computes the hyperbolic sine of the value [x].\n *\n * Special cases:\n * - `sinh(NaN)` is `NaN`\n * - `sinh(+Inf)` is `+Inf`\n * - `sinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sinh(x: Double): Double = nativeMath.sinh(x)\n\n/**\n * Computes the hyperbolic cosine of the value [x].\n *\n * Special cases:\n * - `cosh(NaN)` is `NaN`\n * - `cosh(+Inf|-Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun cosh(x: Double): Double = nativeMath.cosh(x)\n\n/**\n * Computes the hyperbolic tangent of the value [x].\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(+Inf)` is `1.0`\n * - `tanh(-Inf)` is `-1.0`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun tanh(x: Double): Double = nativeMath.tanh(x)\n\n/**\n * Computes the inverse hyperbolic sine of the value [x].\n *\n * The returned value is `y` such that `sinh(y) == x`.\n *\n * Special cases:\n * - `asinh(NaN)` is `NaN`\n * - `asinh(+Inf)` is `+Inf`\n * - `asinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun asinh(x: Double): Double = nativeMath.asinh(x)\n\n/**\n * Computes the inverse hyperbolic cosine of the value [x].\n *\n * The returned value is positive `y` such that `cosh(y) == x`.\n *\n * Special cases:\n * - `acosh(NaN)` is `NaN`\n * - `acosh(x)` is `NaN` when `x < 1`\n * - `acosh(+Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun acosh(x: Double): Double = nativeMath.acosh(x)\n\n/**\n * Computes the inverse hyperbolic tangent of the value [x].\n *\n * The returned value is `y` such that `tanh(y) == x`.\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(x)` is `NaN` when `x > 1` or `x < -1`\n * - `tanh(1.0)` is `+Inf`\n * - `tanh(-1.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atanh(x: Double): Double = nativeMath.atanh(x)\n\n/**\n * Computes `sqrt(x^2 + y^2)` without intermediate overflow or underflow.\n *\n * Special cases:\n * - returns `+Inf` if any of arguments is infinite\n * - returns `NaN` if any of arguments is `NaN` and the other is not infinite\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun hypot(x: Double, y: Double): Double = nativeMath.hypot(x, y)\n\n/**\n * Computes the positive square root of the value [x].\n *\n * Special cases:\n * - `sqrt(x)` is `NaN` when `x < 0` or `x` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sqrt(x: Double): Double = nativeMath.sqrt(x)\n\n/**\n * Computes Euler's number `e` raised to the power of the value [x].\n *\n * Special cases:\n * - `exp(NaN)` is `NaN`\n * - `exp(+Inf)` is `+Inf`\n * - `exp(-Inf)` is `0.0`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun exp(x: Double): Double = nativeMath.exp(x)\n\n/**\n * Computes `exp(x) - 1`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `expm1(NaN)` is `NaN`\n * - `expm1(+Inf)` is `+Inf`\n * - `expm1(-Inf)` is `-1.0`\n *\n * @see [exp] function.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun expm1(x: Double): Double = nativeMath.expm1(x)\n\n/**\n * Computes the logarithm of the value [x] to the given [base].\n *\n * Special cases:\n * - `log(x, b)` is `NaN` if either `x` or `b` are `NaN`\n * - `log(x, b)` is `NaN` when `x < 0` or `b <= 0` or `b == 1.0`\n * - `log(+Inf, +Inf)` is `NaN`\n * - `log(+Inf, b)` is `+Inf` for `b > 1` and `-Inf` for `b < 1`\n * - `log(0.0, b)` is `-Inf` for `b > 1` and `+Inf` for `b > 1`\n *\n * See also logarithm functions for common fixed bases: [ln], [log10] and [log2].\n */\n@SinceKotlin(\"1.2\")\npublic actual fun log(x: Double, base: Double): Double {\n if (base <= 0.0 || base == 1.0) return Double.NaN\n return nativeMath.log(x) / nativeMath.log(base)\n}\n\n/**\n * Computes the natural logarithm (base `E`) of the value [x].\n *\n * Special cases:\n * - `ln(NaN)` is `NaN`\n * - `ln(x)` is `NaN` when `x < 0.0`\n * - `ln(+Inf)` is `+Inf`\n * - `ln(0.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ln(x: Double): Double = nativeMath.log(x)\n\n/**\n * Computes the common logarithm (base 10) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log10(x: Double): Double = nativeMath.log10(x)\n\n/**\n * Computes the binary logarithm (base 2) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log2(x: Double): Double = nativeMath.log2(x)\n\n/**\n * Computes `ln(x + 1)`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `ln1p(NaN)` is `NaN`\n * - `ln1p(x)` is `NaN` where `x < -1.0`\n * - `ln1p(-1.0)` is `-Inf`\n * - `ln1p(+Inf)` is `+Inf`\n *\n * @see [ln] function\n * @see [expm1] function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ln1p(x: Double): Double = nativeMath.log1p(x)\n\n/**\n * Rounds the given value [x] to an integer towards positive infinity.\n\n * @return the smallest double value that is greater than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `ceil(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ceil(x: Double): Double = nativeMath.ceil(x).unsafeCast() // TODO: Remove unsafe cast after removing public js.math\n\n/**\n * Rounds the given value [x] to an integer towards negative infinity.\n\n * @return the largest double value that is smaller than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `floor(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun floor(x: Double): Double = nativeMath.floor(x).unsafeCast()\n\n/**\n * Rounds the given value [x] to an integer towards zero.\n *\n * @return the value [x] having its fractional part truncated.\n *\n * Special cases:\n * - `truncate(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun truncate(x: Double): Double = nativeMath.trunc(x)\n\n/**\n * Rounds the given value [x] towards the closest integer with ties rounded towards even integer.\n *\n * Special cases:\n * - `round(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun round(x: Double): Double {\n if (x % 0.5 != 0.0) {\n return nativeMath.round(x).unsafeCast()\n }\n val floor = floor(x)\n return if (floor % 2 == 0.0) floor else ceil(x)\n}\n\n/**\n * Returns the absolute value of the given value [x].\n *\n * Special cases:\n * - `abs(NaN)` is `NaN`\n *\n * @see absoluteValue extension property for [Double]\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun abs(x: Double): Double = nativeMath.abs(x)\n\n/**\n * Returns the sign of the given value [x]:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `sign(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sign(x: Double): Double = nativeMath.sign(x)\n\n\n/**\n * Returns the smaller of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun min(a: Double, b: Double): Double = nativeMath.min(a, b)\n\n/**\n * Returns the greater of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun max(a: Double, b: Double): Double = nativeMath.max(a, b)\n\n// extensions\n\n/**\n * Raises this value to the power [x].\n *\n * Special cases:\n * - `b.pow(0.0)` is `1.0`\n * - `b.pow(1.0) == b`\n * - `b.pow(NaN)` is `NaN`\n * - `NaN.pow(x)` is `NaN` for `x != 0.0`\n * - `b.pow(Inf)` is `NaN` for `abs(b) == 1.0`\n * - `b.pow(x)` is `NaN` for `b < 0` and `x` is finite and not an integer\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Double.pow(x: Double): Double = nativeMath.pow(this, x)\n\n/**\n * Raises this value to the integer power [n].\n *\n * See the other overload of [pow] for details.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Double.pow(n: Int): Double = nativeMath.pow(this, n.toDouble())\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `NaN.absoluteValue` is `NaN`\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Double.absoluteValue: Double get() = nativeMath.abs(this)\n\n/**\n * Returns the sign of this value:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `NaN.sign` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Double.sign: Double get() = nativeMath.sign(this)\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Double.withSign(sign: Int): Double = this.withSign(sign.toDouble())\n\n/**\n * Returns the ulp (unit in the last place) of this value.\n *\n * An ulp is a positive distance between this value and the next nearest [Double] value larger in magnitude.\n *\n * Special Cases:\n * - `NaN.ulp` is `NaN`\n * - `x.ulp` is `+Inf` when `x` is `+Inf` or `-Inf`\n * - `0.0.ulp` is `Double.MIN_VALUE`\n */\n@SinceKotlin(\"1.2\")\npublic actual val Double.ulp: Double get() = when {\n this < 0 -> (-this).ulp\n this.isNaN() || this == Double.POSITIVE_INFINITY -> this\n this == Double.MAX_VALUE -> this - this.nextDown()\n else -> this.nextUp() - this\n}\n\n/**\n * Returns the [Double] value nearest to this value in direction of positive infinity.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.nextUp(): Double = when {\n this.isNaN() || this == Double.POSITIVE_INFINITY -> this\n this == 0.0 -> Double.MIN_VALUE\n else -> Double.fromBits(this.toRawBits() + if (this > 0) 1 else -1)\n}\n\n/**\n * Returns the [Double] value nearest to this value in direction of negative infinity.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.nextDown(): Double = when {\n this.isNaN() || this == Double.NEGATIVE_INFINITY -> this\n this == 0.0 -> -Double.MIN_VALUE\n else -> Double.fromBits(this.toRawBits() + if (this > 0) -1 else 1)\n}\n\n\n/**\n * Returns the [Double] value nearest to this value in direction from this value towards the value [to].\n *\n * Special cases:\n * - `x.nextTowards(y)` is `NaN` if either `x` or `y` are `NaN`\n * - `x.nextTowards(x) == x`\n *\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.nextTowards(to: Double): Double = when {\n this.isNaN() || to.isNaN() -> Double.NaN\n to == this -> to\n to > this -> this.nextUp()\n else /* to < this */ -> this.nextDown()\n}\n\n\n/**\n * Rounds this [Double] value to the nearest integer and converts the result to [Int].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToInt() == Int.MAX_VALUE` when `x > Int.MAX_VALUE`\n * - `x.roundToInt() == Int.MIN_VALUE` when `x < Int.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.roundToInt(): Int = when {\n isNaN() -> throw IllegalArgumentException(\"Cannot round NaN value.\")\n this > Int.MAX_VALUE -> Int.MAX_VALUE\n this < Int.MIN_VALUE -> Int.MIN_VALUE\n else -> nativeMath.round(this).unsafeCast().toInt()\n}\n\n/**\n * Rounds this [Double] value to the nearest integer and converts the result to [Long].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToLong() == Long.MAX_VALUE` when `x > Long.MAX_VALUE`\n * - `x.roundToLong() == Long.MIN_VALUE` when `x < Long.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.roundToLong(): Long = when {\n isNaN() -> throw IllegalArgumentException(\"Cannot round NaN value.\")\n this > Long.MAX_VALUE -> Long.MAX_VALUE\n this < Long.MIN_VALUE -> Long.MIN_VALUE\n else -> nativeMath.round(this).unsafeCast().toLong()\n}\n\n// endregion\n\n\n\n// region ================ Float Math ========================================\n\n/** Computes the sine of the angle [x] given in radians.\n *\n * Special cases:\n * - `sin(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sin(x: Float): Float = nativeMath.sin(x.toDouble()).toFloat()\n\n/** Computes the cosine of the angle [x] given in radians.\n *\n * Special cases:\n * - `cos(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun cos(x: Float): Float = nativeMath.cos(x.toDouble()).toFloat()\n\n/** Computes the tangent of the angle [x] given in radians.\n *\n * Special cases:\n * - `tan(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun tan(x: Float): Float = nativeMath.tan(x.toDouble()).toFloat()\n\n/**\n * Computes the arc sine of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `asin(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun asin(x: Float): Float = nativeMath.asin(x.toDouble()).toFloat()\n\n/**\n * Computes the arc cosine of the value [x];\n * the returned value is an angle in the range from `0.0` to `PI` radians.\n *\n * Special cases:\n * - `acos(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun acos(x: Float): Float = nativeMath.acos(x.toDouble()).toFloat()\n\n/**\n * Computes the arc tangent of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `atan(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atan(x: Float): Float = nativeMath.atan(x.toDouble()).toFloat()\n\n/**\n * Returns the angle `theta` of the polar coordinates `(r, theta)` that correspond\n * to the rectangular coordinates `(x, y)` by computing the arc tangent of the value [y] / [x];\n * the returned value is an angle in the range from `-PI` to `PI` radians.\n *\n * Special cases:\n * - `atan2(0.0, 0.0)` is `0.0`\n * - `atan2(0.0, x)` is `0.0` for `x > 0` and `PI` for `x < 0`\n * - `atan2(-0.0, x)` is `-0.0` for 'x > 0` and `-PI` for `x < 0`\n * - `atan2(y, +Inf)` is `0.0` for `0 < y < +Inf` and `-0.0` for '-Inf < y < 0`\n * - `atan2(y, -Inf)` is `PI` for `0 < y < +Inf` and `-PI` for `-Inf < y < 0`\n * - `atan2(y, 0.0)` is `PI/2` for `y > 0` and `-PI/2` for `y < 0`\n * - `atan2(+Inf, x)` is `PI/2` for finite `x`y\n * - `atan2(-Inf, x)` is `-PI/2` for finite `x`\n * - `atan2(NaN, x)` and `atan2(y, NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atan2(y: Float, x: Float): Float = nativeMath.atan2(y.toDouble(), x.toDouble()).toFloat()\n\n/**\n * Computes the hyperbolic sine of the value [x].\n *\n * Special cases:\n * - `sinh(NaN)` is `NaN`\n * - `sinh(+Inf)` is `+Inf`\n * - `sinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sinh(x: Float): Float = nativeMath.sinh(x.toDouble()).toFloat()\n\n/**\n * Computes the hyperbolic cosine of the value [x].\n *\n * Special cases:\n * - `cosh(NaN)` is `NaN`\n * - `cosh(+Inf|-Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun cosh(x: Float): Float = nativeMath.cosh(x.toDouble()).toFloat()\n\n/**\n * Computes the hyperbolic tangent of the value [x].\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(+Inf)` is `1.0`\n * - `tanh(-Inf)` is `-1.0`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun tanh(x: Float): Float = nativeMath.tanh(x.toDouble()).toFloat()\n\n/**\n * Computes the inverse hyperbolic sine of the value [x].\n *\n * The returned value is `y` such that `sinh(y) == x`.\n *\n * Special cases:\n * - `asinh(NaN)` is `NaN`\n * - `asinh(+Inf)` is `+Inf`\n * - `asinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun asinh(x: Float): Float = nativeMath.asinh(x.toDouble()).toFloat()\n\n/**\n * Computes the inverse hyperbolic cosine of the value [x].\n *\n * The returned value is positive `y` such that `cosh(y) == x`.\n *\n * Special cases:\n * - `acosh(NaN)` is `NaN`\n * - `acosh(x)` is `NaN` when `x < 1`\n * - `acosh(+Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun acosh(x: Float): Float = nativeMath.acosh(x.toDouble()).toFloat()\n\n/**\n * Computes the inverse hyperbolic tangent of the value [x].\n *\n * The returned value is `y` such that `tanh(y) == x`.\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(x)` is `NaN` when `x > 1` or `x < -1`\n * - `tanh(1.0)` is `+Inf`\n * - `tanh(-1.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atanh(x: Float): Float = nativeMath.atanh(x.toDouble()).toFloat()\n\n/**\n * Computes `sqrt(x^2 + y^2)` without intermediate overflow or underflow.\n *\n * Special cases:\n * - returns `+Inf` if any of arguments is infinite\n * - returns `NaN` if any of arguments is `NaN` and the other is not infinite\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun hypot(x: Float, y: Float): Float = nativeMath.hypot(x.toDouble(), y.toDouble()).toFloat()\n\n/**\n * Computes the positive square root of the value [x].\n *\n * Special cases:\n * - `sqrt(x)` is `NaN` when `x < 0` or `x` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sqrt(x: Float): Float = nativeMath.sqrt(x.toDouble()).toFloat()\n\n/**\n * Computes Euler's number `e` raised to the power of the value [x].\n *\n * Special cases:\n * - `exp(NaN)` is `NaN`\n * - `exp(+Inf)` is `+Inf`\n * - `exp(-Inf)` is `0.0`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun exp(x: Float): Float = nativeMath.exp(x.toDouble()).toFloat()\n\n/**\n * Computes `exp(x) - 1`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `expm1(NaN)` is `NaN`\n * - `expm1(+Inf)` is `+Inf`\n * - `expm1(-Inf)` is `-1.0`\n *\n * @see [exp] function.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun expm1(x: Float): Float = nativeMath.expm1(x.toDouble()).toFloat()\n\n/**\n * Computes the logarithm of the value [x] to the given [base].\n *\n * Special cases:\n * - `log(x, b)` is `NaN` if either `x` or `b` are `NaN`\n * - `log(x, b)` is `NaN` when `x < 0` or `b <= 0` or `b == 1.0`\n * - `log(+Inf, +Inf)` is `NaN`\n * - `log(+Inf, b)` is `+Inf` for `b > 1` and `-Inf` for `b < 1`\n * - `log(0.0, b)` is `-Inf` for `b > 1` and `+Inf` for `b > 1`\n *\n * See also logarithm functions for common fixed bases: [ln], [log10] and [log2].\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log(x: Float, base: Float): Float = log(x.toDouble(), base.toDouble()).toFloat()\n\n/**\n * Computes the natural logarithm (base `E`) of the value [x].\n *\n * Special cases:\n * - `ln(NaN)` is `NaN`\n * - `ln(x)` is `NaN` when `x < 0.0`\n * - `ln(+Inf)` is `+Inf`\n * - `ln(0.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ln(x: Float): Float = nativeMath.log(x.toDouble()).toFloat()\n\n/**\n * Computes the common logarithm (base 10) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log10(x: Float): Float = nativeMath.log10(x.toDouble()).toFloat()\n\n/**\n * Computes the binary logarithm (base 2) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log2(x: Float): Float = nativeMath.log2(x.toDouble()).toFloat()\n\n/**\n * Computes `ln(a + 1)`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `ln1p(NaN)` is `NaN`\n * - `ln1p(x)` is `NaN` where `x < -1.0`\n * - `ln1p(-1.0)` is `-Inf`\n * - `ln1p(+Inf)` is `+Inf`\n *\n * @see [ln] function\n * @see [expm1] function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ln1p(x: Float): Float = nativeMath.log1p(x.toDouble()).toFloat()\n\n/**\n * Rounds the given value [x] to an integer towards positive infinity.\n\n * @return the smallest Float value that is greater than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `ceil(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ceil(x: Float): Float = nativeMath.ceil(x.toDouble()).toFloat()\n\n/**\n * Rounds the given value [x] to an integer towards negative infinity.\n\n * @return the largest Float value that is smaller than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `floor(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun floor(x: Float): Float = nativeMath.floor(x.toDouble()).toFloat()\n\n/**\n * Rounds the given value [x] to an integer towards zero.\n *\n * @return the value [x] having its fractional part truncated.\n *\n * Special cases:\n * - `truncate(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun truncate(x: Float): Float = truncate(x.toDouble()).toFloat()\n\n/**\n * Rounds the given value [x] towards the closest integer with ties rounded towards even integer.\n *\n * Special cases:\n * - `round(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun round(x: Float): Float = round(x.toDouble()).toFloat()\n\n\n/**\n * Returns the absolute value of the given value [x].\n *\n * Special cases:\n * - `abs(NaN)` is `NaN`\n *\n * @see absoluteValue extension property for [Float]\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun abs(x: Float): Float = nativeMath.abs(x.toDouble()).toFloat()\n\n/**\n * Returns the sign of the given value [x]:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `sign(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sign(x: Float): Float = nativeMath.sign(x.toDouble()).toFloat()\n\n\n\n/**\n * Returns the smaller of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun min(a: Float, b: Float): Float = nativeMath.min(a, b)\n\n/**\n * Returns the greater of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun max(a: Float, b: Float): Float = nativeMath.max(a, b)\n\n// extensions\n\n\n/**\n * Raises this value to the power [x].\n *\n * Special cases:\n * - `b.pow(0.0)` is `1.0`\n * - `b.pow(1.0) == b`\n * - `b.pow(NaN)` is `NaN`\n * - `NaN.pow(x)` is `NaN` for `x != 0.0`\n * - `b.pow(Inf)` is `NaN` for `abs(b) == 1.0`\n * - `b.pow(x)` is `NaN` for `b < 0` and `x` is finite and not an integer\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.pow(x: Float): Float = nativeMath.pow(this.toDouble(), x.toDouble()).toFloat()\n\n/**\n * Raises this value to the integer power [n].\n *\n * See the other overload of [pow] for details.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.pow(n: Int): Float = nativeMath.pow(this.toDouble(), n.toDouble()).toFloat()\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `NaN.absoluteValue` is `NaN`\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Float.absoluteValue: Float get() = nativeMath.abs(this.toDouble()).toFloat()\n\n/**\n * Returns the sign of this value:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `NaN.sign` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Float.sign: Float get() = nativeMath.sign(this.toDouble()).toFloat()\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n *\n * If [sign] is `NaN` the sign of the result is undefined.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.withSign(sign: Float): Float = this.toDouble().withSign(sign.toDouble()).toFloat()\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.withSign(sign: Int): Float = this.toDouble().withSign(sign.toDouble()).toFloat()\n\n\n/**\n * Rounds this [Float] value to the nearest integer and converts the result to [Int].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToInt() == Int.MAX_VALUE` when `x > Int.MAX_VALUE`\n * - `x.roundToInt() == Int.MIN_VALUE` when `x < Int.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.roundToInt(): Int = toDouble().roundToInt()\n\n/**\n * Rounds this [Float] value to the nearest integer and converts the result to [Long].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToLong() == Long.MAX_VALUE` when `x > Long.MAX_VALUE`\n * - `x.roundToLong() == Long.MIN_VALUE` when `x < Long.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.roundToLong(): Long = toDouble().roundToLong()\n\n\n// endregion\n\n// region ================ Integer Math ========================================\n\n\n/**\n * Returns the absolute value of the given value [n].\n *\n * Special cases:\n * - `abs(Int.MIN_VALUE)` is `Int.MIN_VALUE` due to an overflow\n *\n * @see absoluteValue extension property for [Int]\n */\n// TODO: remove manual 'or' when KT-19290 is fixed\n@SinceKotlin(\"1.2\")\npublic actual fun abs(n: Int): Int = if (n < 0) (-n or 0) else n\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun min(a: Int, b: Int): Int = nativeMath.min(a, b)\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun max(a: Int, b: Int): Int = nativeMath.max(a, b)\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `Int.MIN_VALUE.absoluteValue` is `Int.MIN_VALUE` due to an overflow\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Int.absoluteValue: Int get() = abs(this)\n\n/**\n * Returns the sign of this value:\n * - `-1` if the value is negative,\n * - `0` if the value is zero,\n * - `1` if the value is positive\n */\n@SinceKotlin(\"1.2\")\npublic actual val Int.sign: Int get() = when {\n this < 0 -> -1\n this > 0 -> 1\n else -> 0\n}\n\n\n\n/**\n * Returns the absolute value of the given value [n].\n *\n * Special cases:\n * - `abs(Long.MIN_VALUE)` is `Long.MIN_VALUE` due to an overflow\n *\n * @see absoluteValue extension property for [Long]\n */\n@SinceKotlin(\"1.2\")\npublic actual fun abs(n: Long): Long = if (n < 0) -n else n\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.2\")\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun min(a: Long, b: Long): Long = if (a <= b) a else b\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.2\")\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun max(a: Long, b: Long): Long = if (a >= b) a else b\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `Long.MIN_VALUE.absoluteValue` is `Long.MIN_VALUE` due to an overflow\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Long.absoluteValue: Long get() = abs(this)\n\n/**\n * Returns the sign of this value:\n * - `-1` if the value is negative,\n * - `0` if the value is zero,\n * - `1` if the value is positive\n */\n@SinceKotlin(\"1.2\")\npublic actual val Long.sign: Int get() = when {\n this < 0 -> -1\n this > 0 -> 1\n else -> 0\n}\n\n\n// endregion\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\n/**\n * Returns `true` if the specified number is a\n * Not-a-Number (NaN) value, `false` otherwise.\n */\npublic actual fun Double.isNaN(): Boolean = this != this\n\n/**\n * Returns `true` if the specified number is a\n * Not-a-Number (NaN) value, `false` otherwise.\n */\npublic actual fun Float.isNaN(): Boolean = this != this\n\n/**\n * Returns `true` if this value is infinitely large in magnitude.\n */\npublic actual fun Double.isInfinite(): Boolean = this == Double.POSITIVE_INFINITY || this == Double.NEGATIVE_INFINITY\n\n/**\n * Returns `true` if this value is infinitely large in magnitude.\n */\npublic actual fun Float.isInfinite(): Boolean = this == Float.POSITIVE_INFINITY || this == Float.NEGATIVE_INFINITY\n\n/**\n * Returns `true` if the argument is a finite floating-point value; returns `false` otherwise (for `NaN` and infinity arguments).\n */\npublic actual fun Double.isFinite(): Boolean = !isInfinite() && !isNaN()\n\n/**\n * Returns `true` if the argument is a finite floating-point value; returns `false` otherwise (for `NaN` and infinity arguments).\n */\npublic actual fun Float.isFinite(): Boolean = !isInfinite() && !isNaN()\n\n\n/**\n * Counts the number of set bits in the binary representation of this [Int] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun Int.countOneBits(): Int {\n // Hacker's Delight 5-1 algorithm\n var v = this\n v = (v and 0x55555555) + (v.ushr(1) and 0x55555555)\n v = (v and 0x33333333) + (v.ushr(2) and 0x33333333)\n v = (v and 0x0F0F0F0F) + (v.ushr(4) and 0x0F0F0F0F)\n v = (v and 0x00FF00FF) + (v.ushr(8) and 0x00FF00FF)\n v = (v and 0x0000FFFF) + (v.ushr(16))\n return v\n}\n\n/**\n * Counts the number of consecutive most significant bits that are zero in the binary representation of this [Int] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@Suppress(\"DEPRECATION\")\n@kotlin.internal.InlineOnly\npublic actual inline fun Int.countLeadingZeroBits(): Int = kotlin.js.Math.clz32(this)\n\n/**\n * Counts the number of consecutive least significant bits that are zero in the binary representation of this [Int] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun Int.countTrailingZeroBits(): Int =\n // Hacker's Delight 5-4 algorithm for expressing countTrailingZeroBits with countLeadingZeroBits\n Int.SIZE_BITS - (this or -this).inv().countLeadingZeroBits()\n\n/**\n * Returns a number having a single bit set in the position of the most significant set bit of this [Int] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun Int.takeHighestOneBit(): Int =\n if (this == 0) 0 else 1.shl(Int.SIZE_BITS - 1 - countLeadingZeroBits())\n\n/**\n * Returns a number having a single bit set in the position of the least significant set bit of this [Int] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun Int.takeLowestOneBit(): Int =\n // Hacker's Delight 2-1 algorithm for isolating rightmost 1-bit\n this and -this\n\n/**\n * Rotates the binary representation of this [Int] number left by the specified [bitCount] number of bits.\n * The most significant bits pushed out from the left side reenter the number as the least significant bits on the right side.\n *\n * Rotating the number left by a negative bit count is the same as rotating it right by the negated bit count:\n * `number.rotateLeft(-n) == number.rotateRight(n)`\n *\n * Rotating by a multiple of [Int.SIZE_BITS] (32) returns the same number, or more generally\n * `number.rotateLeft(n) == number.rotateLeft(n % 32)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun Int.rotateLeft(bitCount: Int): Int =\n shl(bitCount) or ushr(Int.SIZE_BITS - bitCount)\n\n\n/**\n * Rotates the binary representation of this [Int] number right by the specified [bitCount] number of bits.\n * The least significant bits pushed out from the right side reenter the number as the most significant bits on the left side.\n *\n * Rotating the number right by a negative bit count is the same as rotating it left by the negated bit count:\n * `number.rotateRight(-n) == number.rotateLeft(n)`\n *\n * Rotating by a multiple of [Int.SIZE_BITS] (32) returns the same number, or more generally\n * `number.rotateRight(n) == number.rotateRight(n % 32)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun Int.rotateRight(bitCount: Int): Int =\n shl(Int.SIZE_BITS - bitCount) or ushr(bitCount)\n\n\n/**\n * Counts the number of set bits in the binary representation of this [Long] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun Long.countOneBits(): Int =\n high.countOneBits() + low.countOneBits()\n\n/**\n * Counts the number of consecutive most significant bits that are zero in the binary representation of this [Long] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun Long.countLeadingZeroBits(): Int =\n when (val high = this.high) {\n 0 -> Int.SIZE_BITS + low.countLeadingZeroBits()\n else -> high.countLeadingZeroBits()\n }\n\n/**\n * Counts the number of consecutive least significant bits that are zero in the binary representation of this [Long] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun Long.countTrailingZeroBits(): Int =\n when (val low = this.low) {\n 0 -> Int.SIZE_BITS + high.countTrailingZeroBits()\n else -> low.countTrailingZeroBits()\n }\n\n/**\n * Returns a number having a single bit set in the position of the most significant set bit of this [Long] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun Long.takeHighestOneBit(): Long =\n when (val high = this.high) {\n 0 -> Long(low.takeHighestOneBit(), 0)\n else -> Long(0, high.takeHighestOneBit())\n }\n\n/**\n * Returns a number having a single bit set in the position of the least significant set bit of this [Long] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun Long.takeLowestOneBit(): Long =\n when (val low = this.low) {\n 0 -> Long(0, high.takeLowestOneBit())\n else -> Long(low.takeLowestOneBit(), 0)\n }\n\n/**\n * Rotates the binary representation of this [Long] number left by the specified [bitCount] number of bits.\n * The most significant bits pushed out from the left side reenter the number as the least significant bits on the right side.\n *\n * Rotating the number left by a negative bit count is the same as rotating it right by the negated bit count:\n * `number.rotateLeft(-n) == number.rotateRight(n)`\n *\n * Rotating by a multiple of [Long.SIZE_BITS] (64) returns the same number, or more generally\n * `number.rotateLeft(n) == number.rotateLeft(n % 64)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun Long.rotateLeft(bitCount: Int): Long {\n if ((bitCount and 31) != 0) {\n val low = this.low\n val high = this.high\n val newLow = low.shl(bitCount) or high.ushr(-bitCount)\n val newHigh = high.shl(bitCount) or low.ushr(-bitCount)\n return if ((bitCount and 32) == 0) Long(newLow, newHigh) else Long(newHigh, newLow)\n } else {\n return if ((bitCount and 32) == 0) this else Long(high, low)\n }\n}\n\n\n/**\n * Rotates the binary representation of this [Long] number right by the specified [bitCount] number of bits.\n * The least significant bits pushed out from the right side reenter the number as the most significant bits on the left side.\n *\n * Rotating the number right by a negative bit count is the same as rotating it left by the negated bit count:\n * `number.rotateRight(-n) == number.rotateLeft(n)`\n *\n * Rotating by a multiple of [Long.SIZE_BITS] (64) returns the same number, or more generally\n * `number.rotateRight(n) == number.rotateRight(n % 64)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic actual inline fun Long.rotateRight(bitCount: Int): Long = rotateLeft(-bitCount)\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\nimport kotlin.internal.LowPriorityInOverloadResolution\n\n/**\n * Exposes the JavaScript [Promise object](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise) to Kotlin.\n */\n@Suppress(\"NOT_DOCUMENTED\")\npublic open external class Promise(executor: (resolve: (T) -> Unit, reject: (Throwable) -> Unit) -> Unit) {\n @LowPriorityInOverloadResolution\n public open fun then(onFulfilled: ((T) -> S)?): Promise\n\n @LowPriorityInOverloadResolution\n public open fun then(onFulfilled: ((T) -> S)?, onRejected: ((Throwable) -> S)?): Promise\n\n public open fun catch(onRejected: (Throwable) -> S): Promise\n\n companion object {\n public fun all(promise: Array>): Promise>\n\n public fun race(promise: Array>): Promise\n\n public fun reject(e: Throwable): Promise\n\n public fun resolve(e: S): Promise\n public fun resolve(e: Promise): Promise\n }\n}\n\n// It's workaround for KT-19672 since we can fix it properly until KT-11265 isn't fixed.\ninline fun Promise>.then(\n noinline onFulfilled: ((T) -> S)?\n): Promise {\n return this.unsafeCast>().then(onFulfilled)\n}\n\ninline fun Promise>.then(\n noinline onFulfilled: ((T) -> S)?,\n noinline onRejected: ((Throwable) -> S)?\n): Promise {\n return this.unsafeCast>().then(onFulfilled, onRejected)\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.random\n\nimport kotlin.math.pow\n\ninternal actual fun defaultPlatformRandom(): Random =\n Random(js(\"(Math.random() * Math.pow(2, 32)) | 0\").unsafeCast())\n\n\nprivate val INV_2_26: Double = 2.0.pow(-26)\nprivate val INV_2_53: Double = 2.0.pow(-53)\ninternal actual fun doubleFromParts(hi26: Int, low27: Int): Double =\n hi26 * INV_2_26 + low27 * INV_2_53","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\nimport getKClass\nimport kotlin.reflect.KClass\nimport kotlin.reflect.js.internal.KClassImpl\n\n/**\n * Represents the constructor of a class. Instances of `JsClass` can be passed to JavaScript APIs that expect a constructor reference.\n */\nexternal interface JsClass {\n /**\n * Returns the unqualified name of the class represented by this instance.\n */\n val name: String\n}\n\n@Deprecated(\"Use class literal and extension property `js` instead.\", replaceWith = ReplaceWith(\"T::class.js\"), level = DeprecationLevel.ERROR)\nexternal fun jsClass(): JsClass\n\n@Deprecated(\"Use class literal and extension property `js` instead.\", replaceWith = ReplaceWith(\"this::class.js\"), level = DeprecationLevel.ERROR)\nval T.jsClass: JsClass\n get() = when (jsTypeOf(this)) {\n \"string\" -> js(\"String\")\n \"number\" -> js(\"Number\")\n \"boolean\" -> js(\"Boolean\")\n else -> js(\"Object\").getPrototypeOf(this).constructor\n }\n\n/**\n * Obtains a constructor reference for the given `KClass`.\n */\nval KClass.js: JsClass\n get() = (this as KClassImpl).jClass\n\n/**\n * Obtains a `KClass` instance for the given constructor reference.\n */\nval JsClass.kotlin: KClass\n get() = getKClass(this)\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.reflect.js.internal\n\nimport kotlin.reflect.*\n\ninternal abstract class KClassImpl(\n internal open val jClass: JsClass\n) : KClass {\n override val annotations: List\n get() = TODO()\n override val constructors: Collection>\n get() = TODO()\n override val isAbstract: Boolean\n get() = TODO()\n override val isCompanion: Boolean\n get() = TODO()\n override val isData: Boolean\n get() = TODO()\n override val isFinal: Boolean\n get() = TODO()\n override val isInner: Boolean\n get() = TODO()\n override val isOpen: Boolean\n get() = TODO()\n override val isSealed: Boolean\n get() = TODO()\n override val members: Collection>\n get() = TODO()\n override val nestedClasses: Collection>\n get() = TODO()\n override val objectInstance: T?\n get() = TODO()\n override val qualifiedName: String?\n get() = TODO()\n override val supertypes: List\n get() = TODO()\n override val typeParameters: List\n get() = TODO()\n override val sealedSubclasses: List>\n get() = TODO()\n override val visibility: KVisibility?\n get() = TODO()\n\n override fun equals(other: Any?): Boolean {\n return other is KClassImpl<*> && jClass == other.jClass\n }\n\n // TODO: use FQN\n override fun hashCode(): Int = simpleName?.hashCode() ?: 0\n\n override fun toString(): String {\n // TODO: use FQN\n return \"class $simpleName\"\n }\n}\n\ninternal class SimpleKClassImpl(jClass: JsClass) : KClassImpl(jClass) {\n override val simpleName: String? = jClass.asDynamic().`$metadata$`?.simpleName.unsafeCast()\n\n override fun isInstance(value: Any?): Boolean {\n return jsIsType(value, jClass)\n }\n}\n\ninternal class PrimitiveKClassImpl(\n jClass: JsClass,\n private val givenSimpleName: String,\n private val isInstanceFunction: (Any?) -> Boolean\n) : KClassImpl(jClass) {\n override fun equals(other: Any?): Boolean {\n if (other !is PrimitiveKClassImpl<*>) return false\n return super.equals(other) && givenSimpleName == other.givenSimpleName\n }\n\n override val simpleName: String? get() = givenSimpleName\n\n override fun isInstance(value: Any?): Boolean {\n return isInstanceFunction(value)\n }\n}\n\ninternal object NothingKClassImpl : KClassImpl(js(\"Object\")) {\n override val simpleName: String = \"Nothing\"\n\n override fun isInstance(value: Any?): Boolean = false\n\n override val jClass: JsClass\n get() = throw UnsupportedOperationException(\"There's no native JS class for Nothing type\")\n\n override fun equals(other: Any?): Boolean = other === this\n\n override fun hashCode(): Int = 0\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// a package is omitted to get declarations directly under the module\n\n// TODO: Remove once JsReflectionAPICallChecker supports more reflection types\n@file:Suppress(\"Unsupported\")\n\nimport kotlin.reflect.*\nimport kotlin.reflect.js.internal.*\n\n@JsName(\"createKType\")\ninternal fun createKType(\n classifier: KClassifier,\n arguments: Array,\n isMarkedNullable: Boolean\n) =\n KTypeImpl(classifier, arguments.asList(), isMarkedNullable)\n\n@JsName(\"createDynamicKType\")\ninternal fun createDynamicKType(): KType = DynamicKType\n\n@JsName(\"markKTypeNullable\")\ninternal fun markKTypeNullable(kType: KType) = KTypeImpl(kType.classifier!!, kType.arguments, true)\n\n@JsName(\"createKTypeParameter\")\ninternal fun createKTypeParameter(\n name: String,\n upperBounds: Array,\n variance: String\n): KTypeParameter {\n val kVariance = when (variance) {\n \"in\" -> KVariance.IN\n \"out\" -> KVariance.OUT\n else -> KVariance.INVARIANT\n }\n\n return KTypeParameterImpl(name, upperBounds.asList(), kVariance, false)\n}\n\n@JsName(\"getStarKTypeProjection\")\ninternal fun getStarKTypeProjection(): KTypeProjection =\n KTypeProjection.STAR\n\n@JsName(\"createCovariantKTypeProjection\")\ninternal fun createCovariantKTypeProjection(type: KType): KTypeProjection =\n KTypeProjection.covariant(type)\n\n@JsName(\"createInvariantKTypeProjection\")\ninternal fun createInvariantKTypeProjection(type: KType): KTypeProjection =\n KTypeProjection.invariant(type)\n\n@JsName(\"createContravariantKTypeProjection\")\ninternal fun createContravariantKTypeProjection(type: KType): KTypeProjection =\n KTypeProjection.contravariant(type)\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.reflect.js.internal\n\nimport kotlin.reflect.*\n\ninternal class KTypeImpl(\n override val classifier: KClassifier,\n override val arguments: List,\n override val isMarkedNullable: Boolean\n) : KType {\n override val annotations: List\n get() = emptyList()\n\n override fun equals(other: Any?): Boolean =\n other is KTypeImpl &&\n classifier == other.classifier && arguments == other.arguments && isMarkedNullable == other.isMarkedNullable\n\n override fun hashCode(): Int =\n (classifier.hashCode() * 31 + arguments.hashCode()) * 31 + isMarkedNullable.hashCode()\n\n override fun toString(): String {\n val kClass = (classifier as? KClass<*>)\n val classifierName = when {\n kClass == null -> classifier.toString()\n kClass.simpleName != null -> kClass.simpleName\n else -> \"(non-denotable type)\"\n }\n\n val args =\n if (arguments.isEmpty()) \"\"\n else arguments.joinToString(\", \", \"<\", \">\") { it.asString() }\n val nullable = if (isMarkedNullable) \"?\" else \"\"\n\n return classifierName + args + nullable\n }\n\n // TODO: this should be the implementation of KTypeProjection.toString, see KT-30071\n private fun KTypeProjection.asString(): String {\n if (variance == null) return \"*\"\n return variance.prefixString() + type.toString()\n }\n}\n\ninternal object DynamicKType : KType {\n override val classifier: KClassifier? = null\n override val arguments: List = emptyList()\n override val isMarkedNullable: Boolean = false\n override val annotations: List = emptyList()\n override fun toString(): String = \"dynamic\"\n}\n\ninternal fun KVariance.prefixString() =\n when (this) {\n KVariance.INVARIANT -> \"\"\n KVariance.IN -> \"in \"\n KVariance.OUT -> \"out \"\n }\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.reflect.js.internal\n\nimport kotlin.reflect.*\n\ninternal data class KTypeParameterImpl(\n override val name: String,\n override val upperBounds: List,\n override val variance: KVariance,\n override val isReified: Boolean\n) : KTypeParameter {\n override fun toString(): String = name\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.reflect.js.internal\n\nimport kotlin.js.JsClass\n\n@JsName(\"PrimitiveClasses\")\ninternal object PrimitiveClasses {\n @JsName(\"anyClass\")\n val anyClass = PrimitiveKClassImpl(js(\"Object\").unsafeCast>(), \"Any\", { it is Any })\n\n @JsName(\"numberClass\")\n val numberClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Number\", { it is Number })\n\n @JsName(\"nothingClass\")\n val nothingClass = NothingKClassImpl\n\n @JsName(\"booleanClass\")\n val booleanClass = PrimitiveKClassImpl(js(\"Boolean\").unsafeCast>(), \"Boolean\", { it is Boolean })\n\n @JsName(\"byteClass\")\n val byteClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Byte\", { it is Byte })\n\n @JsName(\"shortClass\")\n val shortClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Short\", { it is Short })\n\n @JsName(\"intClass\")\n val intClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Int\", { it is Int })\n\n @JsName(\"floatClass\")\n val floatClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Float\", { it is Float })\n\n @JsName(\"doubleClass\")\n val doubleClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Double\", { it is Double })\n\n @JsName(\"arrayClass\")\n val arrayClass = PrimitiveKClassImpl(js(\"Array\").unsafeCast>>(), \"Array\", { it is Array<*> })\n\n @JsName(\"stringClass\")\n val stringClass = PrimitiveKClassImpl(js(\"String\").unsafeCast>(), \"String\", { it is String })\n\n @JsName(\"throwableClass\")\n val throwableClass = PrimitiveKClassImpl(js(\"Error\").unsafeCast>(), \"Throwable\", { it is Throwable })\n\n @JsName(\"booleanArrayClass\")\n val booleanArrayClass = PrimitiveKClassImpl(js(\"Array\").unsafeCast>(), \"BooleanArray\", { it is BooleanArray })\n\n @JsName(\"charArrayClass\")\n val charArrayClass = PrimitiveKClassImpl(js(\"Uint16Array\").unsafeCast>(), \"CharArray\", { it is CharArray })\n\n @JsName(\"byteArrayClass\")\n val byteArrayClass = PrimitiveKClassImpl(js(\"Int8Array\").unsafeCast>(), \"ByteArray\", { it is ByteArray })\n\n @JsName(\"shortArrayClass\")\n val shortArrayClass = PrimitiveKClassImpl(js(\"Int16Array\").unsafeCast>(), \"ShortArray\", { it is ShortArray })\n\n @JsName(\"intArrayClass\")\n val intArrayClass = PrimitiveKClassImpl(js(\"Int32Array\").unsafeCast>(), \"IntArray\", { it is IntArray })\n\n @JsName(\"longArrayClass\")\n val longArrayClass = PrimitiveKClassImpl(js(\"Array\").unsafeCast>(), \"LongArray\", { it is LongArray })\n\n @JsName(\"floatArrayClass\")\n val floatArrayClass = PrimitiveKClassImpl(js(\"Float32Array\").unsafeCast>(), \"FloatArray\", { it is FloatArray })\n\n @JsName(\"doubleArrayClass\")\n val doubleArrayClass = PrimitiveKClassImpl(js(\"Float64Array\").unsafeCast>(), \"DoubleArray\", { it is DoubleArray })\n\n @JsName(\"functionClass\")\n fun functionClass(arity: Int): KClassImpl {\n return functionClasses.get(arity) ?: run {\n val result = PrimitiveKClassImpl(js(\"Function\").unsafeCast>(), \"Function$arity\",\n { jsTypeOf(it) === \"function\" && it.asDynamic().length === arity })\n functionClasses.asDynamic()[arity] = result\n result\n }\n }\n}\n\nprivate val functionClasses = arrayOfNulls>(0)","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// a package is omitted to get declarations directly under the module\n\nimport kotlin.reflect.*\nimport kotlin.reflect.js.internal.*\n\n@JsName(\"getKClass\")\ninternal fun getKClass(jClass: JsClass): KClass = getOrCreateKClass(jClass)\n\n@JsName(\"getKClassFromExpression\")\ninternal fun getKClassFromExpression(e: T): KClass =\n when (jsTypeOf(e)) {\n \"string\" -> PrimitiveClasses.stringClass\n \"number\" -> if (jsBitwiseOr(e, 0).asDynamic() === e) PrimitiveClasses.intClass else PrimitiveClasses.doubleClass\n \"boolean\" -> PrimitiveClasses.booleanClass\n \"function\" -> PrimitiveClasses.functionClass(e.asDynamic().length)\n else -> {\n when {\n e is BooleanArray -> PrimitiveClasses.booleanArrayClass\n e is CharArray -> PrimitiveClasses.charArrayClass\n e is ByteArray -> PrimitiveClasses.byteArrayClass\n e is ShortArray -> PrimitiveClasses.shortArrayClass\n e is IntArray -> PrimitiveClasses.intArrayClass\n e is LongArray -> PrimitiveClasses.longArrayClass\n e is FloatArray -> PrimitiveClasses.floatArrayClass\n e is DoubleArray -> PrimitiveClasses.doubleArrayClass\n e is KClass<*> -> KClass::class\n e is Array<*> -> PrimitiveClasses.arrayClass\n else -> {\n val constructor = js(\"Object\").getPrototypeOf(e).constructor\n when {\n constructor === js(\"Object\") -> PrimitiveClasses.anyClass\n constructor === js(\"Error\") -> PrimitiveClasses.throwableClass\n else -> {\n val jsClass: JsClass = constructor\n getOrCreateKClass(jsClass)\n }\n }\n }\n }\n }\n }.unsafeCast>()\n\nprivate fun getOrCreateKClass(jClass: JsClass): KClass {\n if (jClass === js(\"String\")) return PrimitiveClasses.stringClass.unsafeCast>()\n\n val metadata = jClass.asDynamic().`$metadata$`\n\n return if (metadata != null) {\n if (metadata.`$kClass$` == null) {\n val kClass = SimpleKClassImpl(jClass)\n metadata.`$kClass$` = kClass\n kClass\n } else {\n metadata.`$kClass$`\n }\n } else {\n SimpleKClassImpl(jClass)\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\n/**\n * Exposes the JavaScript [RegExp object](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp) to Kotlin.\n */\n@Suppress(\"NOT_DOCUMENTED\")\npublic external class RegExp(pattern: String, flags: String? = definedExternally) {\n\n public fun test(str: String): Boolean\n\n public fun exec(str: String): RegExpMatch?\n\n public override fun toString(): String\n\n /**\n * The lastIndex is a read/write integer property of regular expressions that specifies the index at which to start the next match.\n */\n public var lastIndex: Int\n\n public val global: Boolean\n public val ignoreCase: Boolean\n public val multiline: Boolean\n}\n\n/**\n * Resets the regular expression so that subsequent [RegExp.test] and [RegExp.exec] calls will match starting with the beginning of the input string.\n */\npublic fun RegExp.reset() {\n lastIndex = 0\n}\n\n// TODO: Inherit from array or introduce asArray() extension\n/**\n * Represents the return value of [RegExp.exec].\n */\n@Suppress(\"NOT_DOCUMENTED\")\npublic external interface RegExpMatch {\n public val index: Int\n public val input: String\n public val length: Int\n}\n\n/**\n * Returns the entire text matched by [RegExp.exec] if the [index] parameter is 0, or the text matched by the capturing parenthesis\n * at the given index.\n */\npublic inline operator fun RegExpMatch.get(index: Int): String? = asDynamic()[index]\n\n/**\n * Converts the result of [RegExp.exec] to an array where the first element contains the entire matched text and each subsequent\n * element is the text matched by each capturing parenthesis.\n */\npublic inline fun RegExpMatch.asArray(): Array = unsafeCast>()\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.sequences\n\ninternal actual class ConstrainedOnceSequence actual constructor(sequence: Sequence) : Sequence {\n private var sequenceRef: Sequence? = sequence\n\n actual override fun iterator(): Iterator {\n val sequence = sequenceRef ?: throw IllegalStateException(\"This sequence can be consumed only once.\")\n sequenceRef = null\n return sequence.iterator()\n }\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\n/**\n * The exception thrown when a character encoding or decoding error occurs.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual open class CharacterCodingException(message: String?) : Exception(message) {\n actual constructor() : this(null)\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\n/**\n * A mutable sequence of characters.\n *\n * String builder can be used to efficiently perform multiple string manipulation operations.\n */\npublic actual class StringBuilder actual constructor(content: String) : Appendable, CharSequence {\n /**\n * Constructs an empty string builder with the specified initial [capacity].\n *\n * In Kotlin/JS implementation of StringBuilder the initial capacity has no effect on the further performance of operations.\n */\n actual constructor(capacity: Int) : this() {\n this.asDynamic()._capacity = capacity\n }\n\n /** Constructs a string builder that contains the same characters as the specified [content] char sequence. */\n actual constructor(content: CharSequence) : this(content.toString()) {}\n\n /** Constructs an empty string builder. */\n actual constructor() : this(\"\")\n\n private var string: String = if (content !== undefined) content else \"\"\n\n actual override val length: Int\n get() = string.asDynamic().length\n\n actual override fun get(index: Int): Char =\n string.getOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, length: $length}\") }\n\n actual override fun subSequence(startIndex: Int, endIndex: Int): CharSequence = string.substring(startIndex, endIndex)\n\n actual override fun append(value: Char): StringBuilder {\n string += value\n return this\n }\n\n actual override fun append(value: CharSequence?): StringBuilder {\n string += value.toString()\n return this\n }\n\n @UseExperimental(ExperimentalStdlibApi::class)\n actual override fun append(value: CharSequence?, startIndex: Int, endIndex: Int): StringBuilder = this.appendRange(value, startIndex, endIndex)\n\n /**\n * Reverses the contents of this string builder and returns this instance.\n *\n * Surrogate pairs included in this string builder are treated as single characters.\n * Therefore, the order of the high-low surrogates is never reversed.\n *\n * Note that the reverse operation may produce new surrogate pairs that were unpaired low-surrogates and high-surrogates before the operation.\n * For example, reversing `\"\\uDC00\\uD800\"` produces `\"\\uD800\\uDC00\"` which is a valid surrogate pair.\n */\n actual fun reverse(): StringBuilder {\n var reversed = \"\"\n var index = string.length - 1\n while (index >= 0) {\n val low = string[index--]\n if (low.isLowSurrogate() && index >= 0) {\n val high = string[index--]\n if (high.isHighSurrogate()) {\n reversed = reversed + high + low\n } else {\n reversed = reversed + low + high\n }\n } else {\n reversed += low\n }\n }\n string = reversed\n return this\n }\n\n /**\n * Appends the string representation of the specified object [value] to this string builder and returns this instance.\n *\n * The overall effect is exactly as if the [value] were converted to a string by the `value.toString()` method,\n * and then that string was appended to this string builder.\n */\n actual fun append(value: Any?): StringBuilder {\n string += value.toString()\n return this\n }\n\n /**\n * Appends the string representation of the specified boolean [value] to this string builder and returns this instance.\n *\n * The overall effect is exactly as if the [value] were converted to a string by the `value.toString()` method,\n * and then that string was appended to this string builder.\n */\n @SinceKotlin(\"1.3\")\n// @ExperimentalStdlibApi\n actual fun append(value: Boolean): StringBuilder {\n string += value\n return this\n }\n\n /**\n * Appends characters in the specified character array [value] to this string builder and returns this instance.\n *\n * Characters are appended in order, starting at the index 0.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n actual fun append(value: CharArray): StringBuilder {\n string += value.concatToString()\n return this\n }\n\n /**\n * Appends the specified string [value] to this string builder and returns this instance.\n */\n @SinceKotlin(\"1.3\")\n// @ExperimentalStdlibApi\n actual fun append(value: String): StringBuilder {\n this.string += value\n return this\n }\n\n /**\n * Returns the current capacity of this string builder.\n *\n * The capacity is the maximum length this string builder can have before an allocation occurs.\n *\n * In Kotlin/JS implementation of StringBuilder the value returned from this method may not indicate the actual size of the backing storage.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n actual fun capacity(): Int = if (this.asDynamic()._capacity !== undefined) maxOf(this.asDynamic()._capacity, length) else length\n\n /**\n * Ensures that the capacity of this string builder is at least equal to the specified [minimumCapacity].\n *\n * If the current capacity is less than the [minimumCapacity], a new backing storage is allocated with greater capacity.\n * Otherwise, this method takes no action and simply returns.\n *\n * In Kotlin/JS implementation of StringBuilder the size of the backing storage is not extended to comply the given [minimumCapacity],\n * thus calling this method has no effect on the further performance of operations.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n actual fun ensureCapacity(minimumCapacity: Int) {\n if (minimumCapacity > capacity()) {\n this.asDynamic()._capacity = minimumCapacity\n }\n }\n\n /**\n * Returns the index within this string builder of the first occurrence of the specified [string].\n *\n * Returns `-1` if the specified [string] does not occur in this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n actual fun indexOf(string: String): Int = this.string.asDynamic().indexOf(string)\n\n /**\n * Returns the index within this string builder of the first occurrence of the specified [string],\n * starting at the specified [startIndex].\n *\n * Returns `-1` if the specified [string] does not occur in this string builder starting at the specified [startIndex].\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n actual fun indexOf(string: String, startIndex: Int): Int = this.string.asDynamic().indexOf(string, startIndex)\n\n /**\n * Returns the index within this string builder of the last occurrence of the specified [string].\n * The last occurrence of empty string `\"\"` is considered to be at the index equal to `this.length`.\n *\n * Returns `-1` if the specified [string] does not occur in this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n actual fun lastIndexOf(string: String): Int = this.string.asDynamic().lastIndexOf(string)\n\n /**\n * Returns the index within this string builder of the last occurrence of the specified [string],\n * starting from the specified [startIndex] toward the beginning.\n *\n * Returns `-1` if the specified [string] does not occur in this string builder starting at the specified [startIndex].\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n actual fun lastIndexOf(string: String, startIndex: Int): Int {\n if (string.isEmpty() && startIndex < 0) return -1\n return this.string.asDynamic().lastIndexOf(string, startIndex)\n }\n\n /**\n * Inserts the string representation of the specified boolean [value] into this string builder at the specified [index] and returns this instance.\n *\n * The overall effect is exactly as if the [value] were converted to a string by the `value.toString()` method,\n * and then that string was inserted into this string builder at the specified [index].\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n actual fun insert(index: Int, value: Boolean): StringBuilder {\n AbstractList.checkPositionIndex(index, length)\n\n string = string.substring(0, index) + value + string.substring(index)\n return this\n }\n\n /**\n * Inserts the specified character [value] into this string builder at the specified [index] and returns this instance.\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n actual fun insert(index: Int, value: Char): StringBuilder {\n AbstractList.checkPositionIndex(index, length)\n\n string = string.substring(0, index) + value + string.substring(index)\n return this\n }\n\n /**\n * Inserts characters in the specified character array [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in same order as in the [value] character array, starting at [index].\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n actual fun insert(index: Int, value: CharArray): StringBuilder {\n AbstractList.checkPositionIndex(index, length)\n\n string = string.substring(0, index) + value.concatToString() + string.substring(index)\n return this\n }\n\n /**\n * Inserts characters in the specified character sequence [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in the same order as in the [value] character sequence, starting at [index].\n *\n * @param index the position in this string builder to insert at.\n * @param value the character sequence from which characters are inserted. If [value] is `null`, then the four characters `\"null\"` are inserted.\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n actual fun insert(index: Int, value: CharSequence?): StringBuilder {\n AbstractList.checkPositionIndex(index, length)\n\n string = string.substring(0, index) + value.toString() + string.substring(index)\n return this\n }\n\n /**\n * Inserts the string representation of the specified object [value] into this string builder at the specified [index] and returns this instance.\n *\n * The overall effect is exactly as if the [value] were converted to a string by the `value.toString()` method,\n * and then that string was inserted into this string builder at the specified [index].\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n actual fun insert(index: Int, value: Any?): StringBuilder {\n AbstractList.checkPositionIndex(index, length)\n\n string = string.substring(0, index) + value.toString() + string.substring(index)\n return this\n }\n\n /**\n * Inserts the string [value] into this string builder at the specified [index] and returns this instance.\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n actual fun insert(index: Int, value: String): StringBuilder {\n AbstractList.checkPositionIndex(index, length)\n\n this.string = this.string.substring(0, index) + value + this.string.substring(index)\n return this\n }\n\n /**\n * Sets the length of this string builder to the specified [newLength].\n *\n * If the [newLength] is less than the current length, it is changed to the specified [newLength].\n * Otherwise, null characters '\\u0000' are appended to this string builder until its length is less than the [newLength].\n *\n * Note that in Kotlin/JS [set] operator function has non-constant execution time complexity.\n * Therefore, increasing length of this string builder and then updating each character by index may slow down your program.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] if [newLength] is less than zero.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n actual fun setLength(newLength: Int) {\n if (newLength < 0) {\n throw IllegalArgumentException(\"Negative new length: $newLength.\")\n }\n\n if (newLength <= length) {\n string = string.substring(0, newLength)\n } else {\n for (i in length until newLength) {\n string += '\\u0000'\n }\n }\n }\n\n /**\n * Returns a new [String] that contains characters in this string builder at [startIndex] (inclusive) and up to the [length] (exclusive).\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n actual fun substring(startIndex: Int): String {\n AbstractList.checkPositionIndex(startIndex, length)\n\n return string.substring(startIndex)\n }\n\n /**\n * Returns a new [String] that contains characters in this string builder at [startIndex] (inclusive) and up to the [endIndex] (exclusive).\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this string builder indices or when `startIndex > endIndex`.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n actual fun substring(startIndex: Int, endIndex: Int): String {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, length)\n\n return string.substring(startIndex, endIndex)\n }\n\n /**\n * Attempts to reduce storage used for this string builder.\n *\n * If the backing storage of this string builder is larger than necessary to hold its current contents,\n * then it may be resized to become more space efficient.\n * Calling this method may, but is not required to, affect the value of the [capacity] property.\n *\n * In Kotlin/JS implementation of StringBuilder the size of the backing storage is always equal to the length of the string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n actual fun trimToSize() {\n if (this.asDynamic()._capacity !== undefined) {\n this.asDynamic()._capacity = length\n }\n }\n\n override fun toString(): String = string\n\n /**\n * Clears the content of this string builder making it empty and returns this instance.\n *\n * @sample samples.text.Strings.clearStringBuilder\n */\n @SinceKotlin(\"1.3\")\n public fun clear(): StringBuilder {\n string = \"\"\n return this\n }\n\n /**\n * Sets the character at the specified [index] to the specified [value].\n *\n * @throws IndexOutOfBoundsException if [index] is out of bounds of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n public operator fun set(index: Int, value: Char) {\n AbstractList.checkElementIndex(index, length)\n\n string = string.substring(0, index) + value + string.substring(index + 1)\n }\n\n /**\n * Replaces characters in the specified range of this string builder with characters in the specified string [value] and returns this instance.\n *\n * @param startIndex the beginning (inclusive) of the range to replace.\n * @param endIndex the end (exclusive) of the range to replace.\n * @param value the string to replace with.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] if [startIndex] is less than zero, greater than the length of this string builder, or `startIndex > endIndex`.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n public fun setRange(startIndex: Int, endIndex: Int, value: String): StringBuilder {\n checkReplaceRange(startIndex, endIndex, length)\n\n this.string = this.string.substring(0, startIndex) + value + this.string.substring(endIndex)\n return this\n }\n\n private fun checkReplaceRange(startIndex: Int, endIndex: Int, length: Int) {\n if (startIndex < 0 || startIndex > length) {\n throw IndexOutOfBoundsException(\"startIndex: $startIndex, length: $length\")\n }\n if (startIndex > endIndex) {\n throw IllegalArgumentException(\"startIndex($startIndex) > endIndex($endIndex)\")\n }\n }\n\n /**\n * Removes the character at the specified [index] from this string builder and returns this instance.\n *\n * If the `Char` at the specified [index] is part of a supplementary code point, this method does not remove the entire supplementary character.\n *\n * @param index the index of `Char` to remove.\n *\n * @throws IndexOutOfBoundsException if [index] is out of bounds of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n public fun deleteAt(index: Int): StringBuilder {\n AbstractList.checkElementIndex(index, length)\n\n string = string.substring(0, index) + string.substring(index + 1)\n return this\n }\n\n /**\n * Removes characters in the specified range from this string builder and returns this instance.\n *\n * @param startIndex the beginning (inclusive) of the range to remove.\n * @param endIndex the end (exclusive) of the range to remove.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] is out of range of this string builder indices or when `startIndex > endIndex`.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n public fun deleteRange(startIndex: Int, endIndex: Int): StringBuilder {\n checkReplaceRange(startIndex, endIndex, length)\n\n string = string.substring(0, startIndex) + string.substring(endIndex)\n return this\n }\n\n /**\n * Copies characters from this string builder into the [destination] character array.\n *\n * @param destination the array to copy to.\n * @param destinationOffset the position in the array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the range to copy, 0 by default.\n * @param endIndex the end (exclusive) of the range to copy, length of this string builder by default.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this string builder indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n public fun toCharArray(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = this.length) {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, length)\n AbstractList.checkBoundsIndexes(destinationOffset, destinationOffset + endIndex - startIndex, destination.size)\n\n var dstIndex = destinationOffset\n for (index in startIndex until endIndex) {\n destination[dstIndex++] = string[index]\n }\n }\n\n /**\n * Appends characters in a subarray of the specified character array [value] to this string builder and returns this instance.\n *\n * Characters are appended in order, starting at specified [startIndex].\n *\n * @param value the array from which characters are appended.\n * @param startIndex the beginning (inclusive) of the subarray to append.\n * @param endIndex the end (exclusive) of the subarray to append.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] array indices or when `startIndex > endIndex`.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n public fun appendRange(value: CharArray, startIndex: Int, endIndex: Int): StringBuilder {\n string += value.concatToString(startIndex, endIndex)\n return this\n }\n\n /**\n * Appends a subsequence of the specified character sequence [value] to this string builder and returns this instance.\n *\n * @param value the character sequence from which a subsequence is appended. If [value] is `null`,\n * then characters are appended as if [value] contained the four characters `\"null\"`.\n * @param startIndex the beginning (inclusive) of the subsequence to append.\n * @param endIndex the end (exclusive) of the subsequence to append.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] character sequence indices or when `startIndex > endIndex`.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n public fun appendRange(value: CharSequence?, startIndex: Int, endIndex: Int): StringBuilder {\n val stringCsq = value.toString()\n AbstractList.checkBoundsIndexes(startIndex, endIndex, stringCsq.length)\n\n string += stringCsq.substring(startIndex, endIndex)\n return this\n }\n\n /**\n * Inserts characters in a subarray of the specified character array [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in same order as in the [value] array, starting at [index].\n *\n * @param index the position in this string builder to insert at.\n * @param value the array from which characters are inserted.\n * @param startIndex the beginning (inclusive) of the subarray to insert.\n * @param endIndex the end (exclusive) of the subarray to insert.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n public fun insertRange(index: Int, value: CharArray, startIndex: Int, endIndex: Int): StringBuilder {\n AbstractList.checkPositionIndex(index, this.length)\n\n string = string.substring(0, index) + value.concatToString(startIndex, endIndex) + string.substring(index)\n return this\n }\n\n /**\n * Inserts characters in a subsequence of the specified character sequence [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in the same order as in the [value] character sequence, starting at [index].\n *\n * @param index the position in this string builder to insert at.\n * @param value the character sequence from which a subsequence is inserted. If [value] is `null`,\n * then characters will be inserted as if [value] contained the four characters `\"null\"`.\n * @param startIndex the beginning (inclusive) of the subsequence to insert.\n * @param endIndex the end (exclusive) of the subsequence to insert.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] character sequence indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.3\")\n @ExperimentalStdlibApi\n public fun insertRange(index: Int, value: CharSequence?, startIndex: Int, endIndex: Int): StringBuilder {\n AbstractList.checkPositionIndex(index, length)\n\n val stringCsq = value.toString()\n AbstractList.checkBoundsIndexes(startIndex, endIndex, stringCsq.length)\n\n string = string.substring(0, index) + stringCsq.substring(startIndex, endIndex) + string.substring(index)\n return this\n }\n}\n\n\n/**\n * Clears the content of this string builder making it empty and returns this instance.\n *\n * @sample samples.text.Strings.clearStringBuilder\n */\n@SinceKotlin(\"1.3\")\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline fun StringBuilder.clear(): StringBuilder = this.clear()\n\n/**\n * Sets the character at the specified [index] to the specified [value].\n *\n * @throws IndexOutOfBoundsException if [index] is out of bounds of this string builder.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline operator fun StringBuilder.set(index: Int, value: Char) = this.set(index, value)\n\n/**\n * Replaces characters in the specified range of this string builder with characters in the specified string [value] and returns this instance.\n *\n * @param startIndex the beginning (inclusive) of the range to replace.\n * @param endIndex the end (exclusive) of the range to replace.\n * @param value the string to replace with.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] if [startIndex] is less than zero, greater than the length of this string builder, or `startIndex > endIndex`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline fun StringBuilder.setRange(startIndex: Int, endIndex: Int, value: String): StringBuilder =\n this.setRange(startIndex, endIndex, value)\n\n/**\n * Removes the character at the specified [index] from this string builder and returns this instance.\n *\n * If the `Char` at the specified [index] is part of a supplementary code point, this method does not remove the entire supplementary character.\n *\n * @param index the index of `Char` to remove.\n *\n * @throws IndexOutOfBoundsException if [index] is out of bounds of this string builder.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline fun StringBuilder.deleteAt(index: Int): StringBuilder = this.deleteAt(index)\n\n/**\n * Removes characters in the specified range from this string builder and returns this instance.\n *\n * @param startIndex the beginning (inclusive) of the range to remove.\n * @param endIndex the end (exclusive) of the range to remove.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] is out of range of this string builder indices or when `startIndex > endIndex`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline fun StringBuilder.deleteRange(startIndex: Int, endIndex: Int): StringBuilder = this.deleteRange(startIndex, endIndex)\n\n/**\n * Copies characters from this string builder into the [destination] character array.\n *\n * @param destination the array to copy to.\n * @param destinationOffset the position in the array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the range to copy, 0 by default.\n * @param endIndex the end (exclusive) of the range to copy, length of this string builder by default.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this string builder indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\", \"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun StringBuilder.toCharArray(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = this.length) =\n this.toCharArray(destination, destinationOffset, startIndex, endIndex)\n\n/**\n * Appends characters in a subarray of the specified character array [value] to this string builder and returns this instance.\n *\n * Characters are appended in order, starting at specified [startIndex].\n *\n * @param value the array from which characters are appended.\n * @param startIndex the beginning (inclusive) of the subarray to append.\n * @param endIndex the end (exclusive) of the subarray to append.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] array indices or when `startIndex > endIndex`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline fun StringBuilder.appendRange(value: CharArray, startIndex: Int, endIndex: Int): StringBuilder =\n this.appendRange(value, startIndex, endIndex)\n\n/**\n * Appends a subsequence of the specified character sequence [value] to this string builder and returns this instance.\n *\n * @param value the character sequence from which a subsequence is appended. If [value] is `null`,\n * then characters are appended as if [value] contained the four characters `\"null\"`.\n * @param startIndex the beginning (inclusive) of the subsequence to append.\n * @param endIndex the end (exclusive) of the subsequence to append.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] character sequence indices or when `startIndex > endIndex`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline fun StringBuilder.appendRange(value: CharSequence?, startIndex: Int, endIndex: Int): StringBuilder =\n this.appendRange(value, startIndex, endIndex)\n\n/**\n * Inserts characters in a subarray of the specified character array [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in same order as in the [value] array, starting at [index].\n *\n * @param index the position in this string builder to insert at.\n * @param value the array from which characters are inserted.\n * @param startIndex the beginning (inclusive) of the subarray to insert.\n * @param endIndex the end (exclusive) of the subarray to insert.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline fun StringBuilder.insertRange(index: Int, value: CharArray, startIndex: Int, endIndex: Int): StringBuilder =\n this.insertRange(index, value, startIndex, endIndex)\n\n/**\n * Inserts characters in a subsequence of the specified character sequence [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in the same order as in the [value] character sequence, starting at [index].\n *\n * @param index the position in this string builder to insert at.\n * @param value the character sequence from which a subsequence is inserted. If [value] is `null`,\n * then characters will be inserted as if [value] contained the four characters `\"null\"`.\n * @param startIndex the beginning (inclusive) of the subsequence to insert.\n * @param endIndex the end (exclusive) of the subsequence to insert.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] character sequence indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline fun StringBuilder.insertRange(index: Int, value: CharSequence?, startIndex: Int, endIndex: Int): StringBuilder =\n this.insertRange(index, value, startIndex, endIndex)\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\n// actually \\s is enough to match all whitespace, but \\xA0 added because of different regexp behavior of Rhino used in Selenium tests\npublic actual fun Char.isWhitespace(): Boolean = toString().matches(\"[\\\\s\\\\xA0]\")\n\n@kotlin.internal.InlineOnly\npublic actual inline fun Char.toLowerCase(): Char = js(\"String.fromCharCode\")(toInt()).toLowerCase().charCodeAt(0).unsafeCast().toChar()\n\n@kotlin.internal.InlineOnly\npublic actual inline fun Char.toUpperCase(): Char = js(\"String.fromCharCode\")(toInt()).toUpperCase().charCodeAt(0).unsafeCast().toChar()\n\n/**\n * Returns `true` if this character is a Unicode high-surrogate code unit (also known as leading-surrogate code unit).\n */\npublic actual fun Char.isHighSurrogate(): Boolean = this in Char.MIN_HIGH_SURROGATE..Char.MAX_HIGH_SURROGATE\n\n/**\n * Returns `true` if this character is a Unicode low-surrogate code unit (also known as trailing-surrogate code unit).\n */\npublic actual fun Char.isLowSurrogate(): Boolean = this in Char.MIN_LOW_SURROGATE..Char.MAX_LOW_SURROGATE\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\n\n/**\n * Returns `true` if the contents of this string is equal to the word \"true\", ignoring case, and `false` otherwise.\n */\npublic actual fun String.toBoolean(): Boolean = toLowerCase() == \"true\"\n\n/**\n * Parses the string as a signed [Byte] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\npublic actual fun String.toByte(): Byte = toByteOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a signed [Byte] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\npublic actual fun String.toByte(radix: Int): Byte = toByteOrNull(radix) ?: numberFormatError(this)\n\n\n/**\n * Parses the string as a [Short] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\npublic actual fun String.toShort(): Short = toShortOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a [Short] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\npublic actual fun String.toShort(radix: Int): Short = toShortOrNull(radix) ?: numberFormatError(this)\n\n/**\n * Parses the string as an [Int] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\npublic actual fun String.toInt(): Int = toIntOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as an [Int] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\npublic actual fun String.toInt(radix: Int): Int = toIntOrNull(radix) ?: numberFormatError(this)\n\n/**\n * Parses the string as a [Long] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\npublic actual fun String.toLong(): Long = toLongOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a [Long] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\npublic actual fun String.toLong(radix: Int): Long = toLongOrNull(radix) ?: numberFormatError(this)\n\n/**\n * Parses the string as a [Double] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\npublic actual fun String.toDouble(): Double = (+(this.asDynamic())).unsafeCast().also {\n if (it.isNaN() && !this.isNaN() || it == 0.0 && this.isBlank())\n numberFormatError(this)\n}\n\n/**\n * Parses the string as a [Float] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toFloat(): Float = toDouble().unsafeCast()\n\n/**\n * Parses the string as a [Double] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\npublic actual fun String.toDoubleOrNull(): Double? = (+(this.asDynamic())).unsafeCast().takeIf {\n !(it.isNaN() && !this.isNaN() || it == 0.0 && this.isBlank())\n}\n\n/**\n * Parses the string as a [Float] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toFloatOrNull(): Float? = toDoubleOrNull().unsafeCast()\n\n/**\n * Returns a string representation of this [Byte] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.2\")\n@kotlin.internal.InlineOnly\npublic actual inline fun Byte.toString(radix: Int): String = this.toInt().toString(radix)\n\n/**\n * Returns a string representation of this [Short] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.2\")\n@kotlin.internal.InlineOnly\npublic actual inline fun Short.toString(radix: Int): String = this.toInt().toString(radix)\n\n/**\n * Returns a string representation of this [Int] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Int.toString(radix: Int): String = asDynamic().toString(checkRadix(radix))\n\nprivate fun String.isNaN(): Boolean = when (this.toLowerCase()) {\n \"nan\", \"+nan\", \"-nan\" -> true\n else -> false\n}\n\n/**\n * Checks whether the given [radix] is valid radix for string to number and number to string conversion.\n */\n@PublishedApi\ninternal actual fun checkRadix(radix: Int): Int {\n if (radix !in 2..36) {\n throw IllegalArgumentException(\"radix $radix was not in valid range 2..36\")\n }\n return radix\n}\n\ninternal actual fun digitOf(char: Char, radix: Int): Int = when {\n char >= '0' && char <= '9' -> char - '0'\n char >= 'A' && char <= 'Z' -> char - 'A' + 10\n char >= 'a' && char <= 'z' -> char - 'a' + 10\n else -> -1\n}.let { if (it >= radix) -1 else it }\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\nimport kotlin.js.RegExp\n\n/**\n * Provides enumeration values to use to set regular expression options.\n */\npublic actual enum class RegexOption(val value: String) {\n /** Enables case-insensitive matching. */\n IGNORE_CASE(\"i\"),\n /** Enables multiline mode.\n *\n * In multiline mode the expressions `^` and `$` match just after or just before,\n * respectively, a line terminator or the end of the input sequence. */\n MULTILINE(\"m\")\n}\n\n\n/**\n * Represents the results from a single capturing group within a [MatchResult] of [Regex].\n *\n * @param value The value of captured group.\n */\npublic actual data class MatchGroup(actual val value: String)\n\n\n/**\n * Represents a compiled regular expression.\n * Provides functions to match strings in text with a pattern, replace the found occurrences and split text around matches.\n *\n * For pattern syntax reference see [MDN RegExp](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#Special_characters_meaning_in_regular_expressions)\n * and [http://www.w3schools.com/jsref/jsref_obj_regexp.asp](https://www.w3schools.com/jsref/jsref_obj_regexp.asp).\n *\n * @constructor Creates a regular expression from the specified [pattern] string and the specified set of [options].\n */\npublic actual class Regex actual constructor(pattern: String, options: Set) {\n\n /** Creates a regular expression from the specified [pattern] string and the specified single [option]. */\n public actual constructor(pattern: String, option: RegexOption) : this(pattern, setOf(option))\n\n /** Creates a regular expression from the specified [pattern] string and the default options. */\n public actual constructor(pattern: String) : this(pattern, emptySet())\n\n\n /** The pattern string of this regular expression. */\n public actual val pattern: String = pattern\n /** The set of options that were used to create this regular expression. */\n public actual val options: Set = options.toSet()\n private val nativePattern: RegExp = RegExp(pattern, options.map { it.value }.joinToString(separator = \"\") + \"g\")\n\n /** Indicates whether the regular expression matches the entire [input]. */\n public actual infix fun matches(input: CharSequence): Boolean {\n nativePattern.reset()\n val match = nativePattern.exec(input.toString())\n return match != null && match.index == 0 && nativePattern.lastIndex == input.length\n }\n\n /** Indicates whether the regular expression can find at least one match in the specified [input]. */\n public actual fun containsMatchIn(input: CharSequence): Boolean {\n nativePattern.reset()\n return nativePattern.test(input.toString())\n }\n\n /** Returns the first match of a regular expression in the [input], beginning at the specified [startIndex].\n *\n * @param startIndex An index to start search with, by default 0. Must be not less than zero and not greater than `input.length()`\n * @return An instance of [MatchResult] if match was found or `null` otherwise.\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n public actual fun find(input: CharSequence, startIndex: Int = 0): MatchResult? = nativePattern.findNext(input.toString(), startIndex)\n\n /**\n * Returns a sequence of all occurrences of a regular expression within the [input] string, beginning at the specified [startIndex].\n *\n * @sample samples.text.Regexps.findAll\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n public actual fun findAll(input: CharSequence, startIndex: Int = 0): Sequence =\n generateSequence({ find(input, startIndex) }, { match -> match.next() })\n\n /**\n * Attempts to match the entire [input] CharSequence against the pattern.\n *\n * @return An instance of [MatchResult] if the entire input matches or `null` otherwise.\n */\n public actual fun matchEntire(input: CharSequence): MatchResult? {\n if (pattern.startsWith('^') && pattern.endsWith('$'))\n return find(input)\n else\n return Regex(\"^${pattern.trimStart('^').trimEnd('$')}$\", options).find(input)\n }\n\n /**\n * Replaces all occurrences of this regular expression in the specified [input] string with specified [replacement] expression.\n *\n * @param replacement A replacement expression that can include substitutions. See [String.prototype.replace](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace) function docs for details.\n */\n public actual fun replace(input: CharSequence, replacement: String): String = input.toString().nativeReplace(nativePattern, replacement)\n\n /**\n * Replaces all occurrences of this regular expression in the specified [input] string with the result of\n * the given function [transform] that takes [MatchResult] and returns a string to be used as a\n * replacement for that match.\n */\n public actual inline fun replace(input: CharSequence, transform: (MatchResult) -> CharSequence): String {\n var match = find(input)\n if (match == null) return input.toString()\n\n var lastStart = 0\n val length = input.length\n val sb = StringBuilder(length)\n do {\n val foundMatch = match!!\n sb.append(input, lastStart, foundMatch.range.start)\n sb.append(transform(foundMatch))\n lastStart = foundMatch.range.endInclusive + 1\n match = foundMatch.next()\n } while (lastStart < length && match != null)\n\n if (lastStart < length) {\n sb.append(input, lastStart, length)\n }\n\n return sb.toString()\n }\n\n /**\n * Replaces the first occurrence of this regular expression in the specified [input] string with specified [replacement] expression.\n *\n * @param replacement A replacement expression that can include substitutions. See [String.prototype.replace](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace) function docs for details.\n */\n public actual fun replaceFirst(input: CharSequence, replacement: String): String {\n val nonGlobalOptions = options.map { it.value }.joinToString(separator = \"\")\n return input.toString().nativeReplace(RegExp(pattern, nonGlobalOptions), replacement)\n }\n\n /**\n * Splits the [input] CharSequence around matches of this regular expression.\n *\n * @param limit Non-negative value specifying the maximum number of substrings the string can be split to.\n * Zero by default means no limit is set.\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n public actual fun split(input: CharSequence, limit: Int = 0): List {\n require(limit >= 0) { \"Limit must be non-negative, but was $limit\" }\n val matches = findAll(input).let { if (limit == 0) it else it.take(limit - 1) }\n val result = mutableListOf()\n var lastStart = 0\n\n for (match in matches) {\n result.add(input.subSequence(lastStart, match.range.start).toString())\n lastStart = match.range.endInclusive + 1\n }\n result.add(input.subSequence(lastStart, input.length).toString())\n return result\n }\n\n\n /**\n * Returns the string representation of this regular expression, namely the [pattern] of this regular expression.\n *\n * Note that another regular expression constructed from the same pattern string may have different [options]\n * and may match strings differently.\n */\n public override fun toString(): String = nativePattern.toString()\n\n actual companion object {\n /**\n * Returns a regular expression that matches the specified [literal] string literally.\n * No characters of that string will have special meaning when searching for an occurrence of the regular expression.\n */\n public actual fun fromLiteral(literal: String): Regex = Regex(escape(literal))\n\n /**\n * Returns a regular expression pattern string that matches the specified [literal] string literally.\n * No characters of that string will have special meaning when searching for an occurrence of the regular expression.\n */\n public actual fun escape(literal: String): String = literal.nativeReplace(patternEscape, \"\\\\$&\")\n\n /**\n * Returns a literal replacement expression for the specified [literal] string.\n * No characters of that string will have special meaning when it is used as a replacement string in [Regex.replace] function.\n */\n public actual fun escapeReplacement(literal: String): String = literal.nativeReplace(replacementEscape, \"$$$$\")\n\n private val patternEscape = RegExp(\"\"\"[-\\\\^$*+?.()|[\\]{}]\"\"\", \"g\")\n private val replacementEscape = RegExp(\"\"\"\\$\"\"\", \"g\")\n }\n}\n\n/** Creates a regular expression from the specified [pattern] string and the specified single [option]. */\n@Deprecated(\"Provided for binary compatibility\", level = DeprecationLevel.HIDDEN)\n@JsName(\"Regex_sb3q2\\$\")\npublic fun Regex_0(pattern: String, option: RegexOption): Regex = Regex(pattern, setOf(option))\n\n/** Creates a regular expression from the specified [pattern] string and the default options. */\n@Deprecated(\"Provided for binary compatibility\", level = DeprecationLevel.HIDDEN)\n@JsName(\"Regex_61zpoe\\$\")\npublic fun Regex_1(pattern: String): Regex = Regex(pattern, emptySet())\n\n\n\n\nprivate fun RegExp.findNext(input: String, from: Int): MatchResult? {\n this.lastIndex = from\n val match = exec(input)\n if (match == null) return null\n val range = match.index..lastIndex - 1\n\n return object : MatchResult {\n override val range: IntRange = range\n override val value: String\n get() = match[0]!!\n\n override val groups: MatchGroupCollection = object : MatchGroupCollection, AbstractCollection() {\n override val size: Int get() = match.length\n override fun iterator(): Iterator = indices.asSequence().map { this[it] }.iterator()\n override fun get(index: Int): MatchGroup? = match[index]?.let { MatchGroup(it) }\n }\n\n\n private var groupValues_: List? = null\n\n override val groupValues: List\n get() {\n if (groupValues_ == null) {\n groupValues_ = object : AbstractList() {\n override val size: Int get() = match.length\n override fun get(index: Int): String = match[index] ?: \"\"\n }\n }\n return groupValues_!!\n }\n\n override fun next(): MatchResult? = this@findNext.findNext(input, if (range.isEmpty()) range.start + 1 else range.endInclusive + 1)\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\nimport kotlin.js.RegExp\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeIndexOf(ch: Char, fromIndex: Int): Int = nativeIndexOf(ch.toString(), fromIndex)\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeLastIndexOf(ch: Char, fromIndex: Int): Int = nativeLastIndexOf(ch.toString(), fromIndex)\n\n/**\n * Returns `true` if this string starts with the specified prefix.\n */\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.startsWith(prefix: String, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase)\n return nativeStartsWith(prefix, 0)\n else\n return regionMatches(0, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if a substring of this string starting at the specified offset [startIndex] starts with the specified prefix.\n */\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.startsWith(prefix: String, startIndex: Int, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase)\n return nativeStartsWith(prefix, startIndex)\n else\n return regionMatches(startIndex, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if this string ends with the specified suffix.\n */\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.endsWith(suffix: String, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase)\n return nativeEndsWith(suffix)\n else\n return regionMatches(length - suffix.length, suffix, 0, suffix.length, ignoreCase)\n}\n\n\npublic fun String.matches(regex: String): Boolean {\n val result = this.match(regex)\n return result != null && result.size != 0\n}\n\npublic actual fun CharSequence.isBlank(): Boolean = length == 0 || (if (this is String) this else this.toString()).matches(\"^[\\\\s\\\\xA0]+$\")\n\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String?.equals(other: String?, ignoreCase: Boolean = false): Boolean =\n if (this == null)\n other == null\n else if (!ignoreCase)\n this == other\n else\n other != null && this.toLowerCase() == other.toLowerCase()\n\n\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun CharSequence.regionMatches(thisOffset: Int, other: CharSequence, otherOffset: Int, length: Int, ignoreCase: Boolean = false): Boolean =\n regionMatchesImpl(thisOffset, other, otherOffset, length, ignoreCase)\n\n\n/**\n * Returns a copy of this string having its first letter uppercased, or the original string,\n * if it's empty or already starts with an upper case letter.\n *\n * @sample samples.text.Strings.capitalize\n */\npublic actual fun String.capitalize(): String {\n return if (isNotEmpty()) substring(0, 1).toUpperCase() + substring(1) else this\n}\n\n/**\n * Returns a copy of this string having its first letter lowercased, or the original string,\n * if it's empty or already starts with a lower case letter.\n *\n * @sample samples.text.Strings.decapitalize\n */\npublic actual fun String.decapitalize(): String {\n return if (isNotEmpty()) substring(0, 1).toLowerCase() + substring(1) else this\n}\n\n/**\n * Returns a string containing this char sequence repeated [n] times.\n * @throws [IllegalArgumentException] when n < 0.\n */\npublic actual fun CharSequence.repeat(n: Int): String {\n require(n >= 0) { \"Count 'n' must be non-negative, but was $n.\" }\n return when (n) {\n 0 -> \"\"\n 1 -> this.toString()\n else -> {\n var result = \"\"\n if (!isEmpty()) {\n var s = this.toString()\n var count = n\n while (true) {\n if ((count and 1) == 1) {\n result += s\n }\n count = count ushr 1\n if (count == 0) {\n break\n }\n s += s\n }\n }\n return result\n }\n }\n}\n\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.replace(oldValue: String, newValue: String, ignoreCase: Boolean = false): String =\n nativeReplace(RegExp(Regex.escape(oldValue), if (ignoreCase) \"gi\" else \"g\"), Regex.escapeReplacement(newValue))\n\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.replace(oldChar: Char, newChar: Char, ignoreCase: Boolean = false): String =\n nativeReplace(RegExp(Regex.escape(oldChar.toString()), if (ignoreCase) \"gi\" else \"g\"), newChar.toString())\n\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.replaceFirst(oldValue: String, newValue: String, ignoreCase: Boolean = false): String =\n nativeReplace(RegExp(Regex.escape(oldValue), if (ignoreCase) \"i\" else \"\"), Regex.escapeReplacement(newValue))\n\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.replaceFirst(oldChar: Char, newChar: Char, ignoreCase: Boolean = false): String =\n nativeReplace(RegExp(Regex.escape(oldChar.toString()), if (ignoreCase) \"i\" else \"\"), newChar.toString())\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\n/** Returns the negative [size] if [throwOnMalformed] is false, throws [CharacterCodingException] otherwise. */\n@UseExperimental(ExperimentalStdlibApi::class)\nprivate fun malformed(size: Int, index: Int, throwOnMalformed: Boolean): Int {\n if (throwOnMalformed) throw CharacterCodingException(\"Malformed sequence starting at ${index - 1}\")\n return -size\n}\n\n/**\n * Returns code point corresponding to UTF-16 surrogate pair,\n * where the first of the pair is the [high] and the second is in the [string] at the [index].\n * Returns zero if the pair is malformed and [throwOnMalformed] is false.\n *\n * @throws CharacterCodingException if the pair is malformed and [throwOnMalformed] is true.\n */\nprivate fun codePointFromSurrogate(string: String, high: Int, index: Int, endIndex: Int, throwOnMalformed: Boolean): Int {\n if (high !in 0xD800..0xDBFF || index >= endIndex) {\n return malformed(0, index, throwOnMalformed)\n }\n val low = string[index].toInt()\n if (low !in 0xDC00..0xDFFF) {\n return malformed(0, index, throwOnMalformed)\n }\n return 0x10000 + ((high and 0x3FF) shl 10) or (low and 0x3FF)\n}\n\n/**\n * Returns code point corresponding to UTF-8 sequence of two bytes,\n * where the first byte of the sequence is the [byte1] and the second byte is in the [bytes] array at the [index].\n * Returns zero if the sequence is malformed and [throwOnMalformed] is false.\n *\n * @throws CharacterCodingException if the sequence of two bytes is malformed and [throwOnMalformed] is true.\n */\nprivate fun codePointFrom2(bytes: ByteArray, byte1: Int, index: Int, endIndex: Int, throwOnMalformed: Boolean): Int {\n if (byte1 and 0x1E == 0 || index >= endIndex) {\n return malformed(0, index, throwOnMalformed)\n }\n val byte2 = bytes[index].toInt()\n if (byte2 and 0xC0 != 0x80) {\n return malformed(0, index, throwOnMalformed)\n }\n return (byte1 shl 6) xor byte2 xor 0xF80\n}\n\n/**\n * Returns code point corresponding to UTF-8 sequence of three bytes,\n * where the first byte of the sequence is the [byte1] and the others are in the [bytes] array starting from the [index].\n * Returns a non-positive value indicating number of bytes from [bytes] included in malformed sequence\n * if the sequence is malformed and [throwOnMalformed] is false.\n *\n * @throws CharacterCodingException if the sequence of three bytes is malformed and [throwOnMalformed] is true.\n */\nprivate fun codePointFrom3(bytes: ByteArray, byte1: Int, index: Int, endIndex: Int, throwOnMalformed: Boolean): Int {\n if (index >= endIndex) {\n return malformed(0, index, throwOnMalformed)\n }\n\n val byte2 = bytes[index].toInt()\n if (byte1 and 0xF == 0) {\n if (byte2 and 0xE0 != 0xA0) {\n // Non-shortest form\n return malformed(0, index, throwOnMalformed)\n }\n } else if (byte1 and 0xF == 0xD) {\n if (byte2 and 0xE0 != 0x80) {\n // Surrogate code point\n return malformed(0, index, throwOnMalformed)\n }\n } else if (byte2 and 0xC0 != 0x80) {\n return malformed(0, index, throwOnMalformed)\n }\n\n if (index + 1 == endIndex) {\n return malformed(1, index, throwOnMalformed)\n }\n val byte3 = bytes[index + 1].toInt()\n if (byte3 and 0xC0 != 0x80) {\n return malformed(1, index, throwOnMalformed)\n }\n\n return (byte1 shl 12) xor (byte2 shl 6) xor byte3 xor -0x1E080\n}\n\n/**\n * Returns code point corresponding to UTF-8 sequence of four bytes,\n * where the first byte of the sequence is the [byte1] and the others are in the [bytes] array starting from the [index].\n * Returns a non-positive value indicating number of bytes from [bytes] included in malformed sequence\n * if the sequence is malformed and [throwOnMalformed] is false.\n *\n * @throws CharacterCodingException if the sequence of four bytes is malformed and [throwOnMalformed] is true.\n */\nprivate fun codePointFrom4(bytes: ByteArray, byte1: Int, index: Int, endIndex: Int, throwOnMalformed: Boolean): Int {\n if (index >= endIndex) {\n malformed(0, index, throwOnMalformed)\n }\n\n val byte2 = bytes[index].toInt()\n if (byte1 and 0xF == 0x0) {\n if (byte2 and 0xF0 <= 0x80) {\n // Non-shortest form\n return malformed(0, index, throwOnMalformed)\n }\n } else if (byte1 and 0xF == 0x4) {\n if (byte2 and 0xF0 != 0x80) {\n // Out of Unicode code points domain (larger than U+10FFFF)\n return malformed(0, index, throwOnMalformed)\n }\n } else if (byte1 and 0xF > 0x4) {\n return malformed(0, index, throwOnMalformed)\n } else if (byte2 and 0xC0 != 0x80) {\n return malformed(0, index, throwOnMalformed)\n }\n\n if (index + 1 == endIndex) {\n return malformed(1, index, throwOnMalformed)\n }\n val byte3 = bytes[index + 1].toInt()\n if (byte3 and 0xC0 != 0x80) {\n return malformed(1, index, throwOnMalformed)\n }\n\n if (index + 2 == endIndex) {\n return malformed(2, index, throwOnMalformed)\n }\n val byte4 = bytes[index + 2].toInt()\n if (byte4 and 0xC0 != 0x80) {\n return malformed(2, index, throwOnMalformed)\n }\n return (byte1 shl 18) xor (byte2 shl 12) xor (byte3 shl 6) xor byte4 xor 0x381F80\n}\n\n/**\n * Maximum number of bytes needed to encode a single char.\n *\n * Code points in `0..0x7F` are encoded in a single byte.\n * Code points in `0x80..0x7FF` are encoded in two bytes.\n * Code points in `0x800..0xD7FF` or in `0xE000..0xFFFF` are encoded in three bytes.\n * Surrogate code points in `0xD800..0xDFFF` are not Unicode scalar values, therefore aren't encoded.\n * Code points in `0x10000..0x10FFFF` are represented by a pair of surrogate `Char`s and are encoded in four bytes.\n */\nprivate const val MAX_BYTES_PER_CHAR = 3\n\n/**\n * The byte sequence a malformed UTF-16 char sequence is replaced by.\n */\nprivate val REPLACEMENT_BYTE_SEQUENCE: ByteArray = byteArrayOf(0xEF.toByte(), 0xBF.toByte(), 0xBD.toByte())\n\n/**\n * Encodes the [string] using UTF-8 and returns the resulting [ByteArray].\n *\n * @param string the string to encode.\n * @param startIndex the start offset (inclusive) of the substring to encode.\n * @param endIndex the end offset (exclusive) of the substring to encode.\n * @param throwOnMalformed whether to throw on malformed char sequence or replace by the [REPLACEMENT_BYTE_SEQUENCE].\n *\n * @throws CharacterCodingException if the char sequence is malformed and [throwOnMalformed] is true.\n */\ninternal fun encodeUtf8(string: String, startIndex: Int, endIndex: Int, throwOnMalformed: Boolean): ByteArray {\n require(startIndex >= 0 && endIndex <= string.length && startIndex <= endIndex)\n\n val bytes = ByteArray((endIndex - startIndex) * MAX_BYTES_PER_CHAR)\n var byteIndex = 0\n var charIndex = startIndex\n\n while (charIndex < endIndex) {\n val code = string[charIndex++].toInt()\n when {\n code < 0x80 ->\n bytes[byteIndex++] = code.toByte()\n code < 0x800 -> {\n bytes[byteIndex++] = ((code shr 6) or 0xC0).toByte()\n bytes[byteIndex++] = ((code and 0x3F) or 0x80).toByte()\n }\n code < 0xD800 || code >= 0xE000 -> {\n bytes[byteIndex++] = ((code shr 12) or 0xE0).toByte()\n bytes[byteIndex++] = (((code shr 6) and 0x3F) or 0x80).toByte()\n bytes[byteIndex++] = ((code and 0x3F) or 0x80).toByte()\n }\n else -> { // Surrogate char value\n val codePoint = codePointFromSurrogate(string, code, charIndex, endIndex, throwOnMalformed)\n if (codePoint <= 0) {\n bytes[byteIndex++] = REPLACEMENT_BYTE_SEQUENCE[0]\n bytes[byteIndex++] = REPLACEMENT_BYTE_SEQUENCE[1]\n bytes[byteIndex++] = REPLACEMENT_BYTE_SEQUENCE[2]\n } else {\n bytes[byteIndex++] = ((codePoint shr 18) or 0xF0).toByte()\n bytes[byteIndex++] = (((codePoint shr 12) and 0x3F) or 0x80).toByte()\n bytes[byteIndex++] = (((codePoint shr 6) and 0x3F) or 0x80).toByte()\n bytes[byteIndex++] = ((codePoint and 0x3F) or 0x80).toByte()\n charIndex++\n }\n }\n }\n }\n\n return if (bytes.size == byteIndex) bytes else bytes.copyOf(byteIndex)\n}\n\n/**\n * The character a malformed UTF-8 byte sequence is replaced by.\n */\nprivate const val REPLACEMENT_CHAR = '\\uFFFD'\n\n/**\n * Decodes the UTF-8 [bytes] array and returns the resulting [String].\n *\n * @param bytes the byte array to decode.\n * @param startIndex the start offset (inclusive) of the array to be decoded.\n * @param endIndex the end offset (exclusive) of the array to be encoded.\n * @param throwOnMalformed whether to throw on malformed byte sequence or replace by the [REPLACEMENT_CHAR].\n *\n * @throws CharacterCodingException if the array is malformed UTF-8 byte sequence and [throwOnMalformed] is true.\n */\ninternal fun decodeUtf8(bytes: ByteArray, startIndex: Int, endIndex: Int, throwOnMalformed: Boolean): String {\n require(startIndex >= 0 && endIndex <= bytes.size && startIndex <= endIndex)\n\n var byteIndex = startIndex\n val stringBuilder = StringBuilder()\n\n while (byteIndex < endIndex) {\n val byte = bytes[byteIndex++].toInt()\n when {\n byte >= 0 ->\n stringBuilder.append(byte.toChar())\n byte shr 5 == -2 -> {\n val code = codePointFrom2(bytes, byte, byteIndex, endIndex, throwOnMalformed)\n if (code <= 0) {\n stringBuilder.append(REPLACEMENT_CHAR)\n byteIndex += -code\n } else {\n stringBuilder.append(code.toChar())\n byteIndex += 1\n }\n }\n byte shr 4 == -2 -> {\n val code = codePointFrom3(bytes, byte, byteIndex, endIndex, throwOnMalformed)\n if (code <= 0) {\n stringBuilder.append(REPLACEMENT_CHAR)\n byteIndex += -code\n } else {\n stringBuilder.append(code.toChar())\n byteIndex += 2\n }\n }\n byte shr 3 == -2 -> {\n val code = codePointFrom4(bytes, byte, byteIndex, endIndex, throwOnMalformed)\n if (code <= 0) {\n stringBuilder.append(REPLACEMENT_CHAR)\n byteIndex += -code\n } else {\n val high = (code - 0x10000) shr 10 or 0xD800\n val low = (code and 0x3FF) or 0xDC00\n stringBuilder.append(high.toChar())\n stringBuilder.append(low.toChar())\n byteIndex += 3\n }\n }\n else -> {\n malformed(0, byteIndex, throwOnMalformed)\n stringBuilder.append(REPLACEMENT_CHAR)\n }\n }\n }\n\n return stringBuilder.toString()\n}","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.time\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic actual enum class DurationUnit(internal val scale: Double) {\n /**\n * Time unit representing one nanosecond, which is 1/1000 of a microsecond.\n */\n NANOSECONDS(1e0),\n /**\n * Time unit representing one microsecond, which is 1/1000 of a millisecond.\n */\n MICROSECONDS(1e3),\n /**\n * Time unit representing one millisecond, which is 1/1000 of a second.\n */\n MILLISECONDS(1e6),\n /**\n * Time unit representing one second.\n */\n SECONDS(1e9),\n /**\n * Time unit representing one minute.\n */\n MINUTES(60e9),\n /**\n * Time unit representing one hour.\n */\n HOURS(3600e9),\n /**\n * Time unit representing one day, which is always equal to 24 hours.\n */\n DAYS(86400e9);\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\ninternal actual fun convertDurationUnit(value: Double, sourceUnit: DurationUnit, targetUnit: DurationUnit): Double {\n val sourceCompareTarget = sourceUnit.scale.compareTo(targetUnit.scale)\n return when {\n sourceCompareTarget > 0 -> value * (sourceUnit.scale / targetUnit.scale)\n sourceCompareTarget < 0 -> value / (targetUnit.scale / sourceUnit.scale)\n else -> value\n }\n}\n\n","/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.time\n\nimport org.w3c.performance.GlobalPerformance\nimport org.w3c.performance.Performance\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\ninternal actual object MonotonicTimeSource : TimeSource {\n\n private val actualSource: TimeSource = run {\n val isNode: Boolean = js(\"typeof process !== 'undefined' && process.versions && !!process.versions.node\")\n\n if (isNode)\n HrTimeSource(js(\"process\").unsafeCast())\n else\n js(\"self\").unsafeCast()?.performance?.let(::PerformanceTimeSource)\n ?: DateNowTimeSource\n\n }\n\n override fun markNow(): TimeMark = actualSource.markNow()\n}\n\ninternal external interface Process {\n fun hrtime(time: Array = definedExternally): Array\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\ninternal class HrTimeSource(val process: Process) : TimeSource {\n\n override fun markNow(): TimeMark = object : TimeMark() {\n val startedAt = process.hrtime()\n override fun elapsedNow(): Duration =\n process.hrtime(startedAt).let { (seconds, nanos) -> seconds.seconds + nanos.nanoseconds }\n }\n\n override fun toString(): String = \"TimeSource(process.hrtime())\"\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\ninternal class PerformanceTimeSource(val performance: Performance) : AbstractDoubleTimeSource(unit = DurationUnit.MILLISECONDS) {\n override fun read(): Double = performance.now()\n override fun toString(): String = \"TimeSource(self.performance.now())\"\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\ninternal object DateNowTimeSource : AbstractDoubleTimeSource(unit = DurationUnit.MILLISECONDS) {\n override fun read(): Double = kotlin.js.Date.now()\n override fun toString(): String = \"TimeSource(Date.now())\"\n}","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.time\n\nimport kotlin.js.json\nimport kotlin.math.*\n\ninternal actual fun formatToExactDecimals(value: Double, decimals: Int): String {\n val rounded = if (decimals == 0) {\n value\n } else {\n val pow = 10.0.pow(decimals)\n @Suppress(\"DEPRECATION\", \"DEPRECATION_ERROR\")\n kotlin.js.Math.round(abs(value) * pow) / pow * sign(value)\n }\n return rounded.asDynamic().toFixed(decimals).unsafeCast()\n}\n\ninternal actual fun formatUpToDecimals(value: Double, decimals: Int): String {\n return value.asDynamic().toLocaleString(\"en-us\", json(\"maximumFractionDigits\" to decimals)).unsafeCast()\n}\n\ninternal actual fun formatScientific(value: Double): String {\n return value.asDynamic().toExponential(2).unsafeCast()\n}","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage org.w3c.dom\n\n@Deprecated(\"Use UnionMessagePortOrWindowProxy instead.\", ReplaceWith(\"UnionMessagePortOrWindowProxy\"))\ntypealias UnionMessagePortOrWindow = UnionMessagePortOrWindowProxy\n\n@Deprecated(\"Use `as` instead.\", ReplaceWith(\"`as`\"))\nvar HTMLLinkElement.as_\n get() = `as`\n set(value) {\n `as` = value\n }\n\n@Deprecated(\"Use `is` instead.\", ReplaceWith(\"`is`\"))\nvar ElementCreationOptions.is_\n get() = `is`\n set(value) {\n `is` = value\n }","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See github.com/kotlin/dukat for details\n\npackage org.khronos.webgl\n\nimport kotlin.js.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\npublic external interface WebGLContextAttributes {\n var alpha: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var depth: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var stencil: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var antialias: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var premultipliedAlpha: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var preserveDrawingBuffer: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var preferLowPowerToHighPerformance: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var failIfMajorPerformanceCaveat: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun WebGLContextAttributes(alpha: Boolean? = true, depth: Boolean? = true, stencil: Boolean? = false, antialias: Boolean? = true, premultipliedAlpha: Boolean? = true, preserveDrawingBuffer: Boolean? = false, preferLowPowerToHighPerformance: Boolean? = false, failIfMajorPerformanceCaveat: Boolean? = false): WebGLContextAttributes {\n val o = js(\"({})\")\n o[\"alpha\"] = alpha\n o[\"depth\"] = depth\n o[\"stencil\"] = stencil\n o[\"antialias\"] = antialias\n o[\"premultipliedAlpha\"] = premultipliedAlpha\n o[\"preserveDrawingBuffer\"] = preserveDrawingBuffer\n o[\"preferLowPowerToHighPerformance\"] = preferLowPowerToHighPerformance\n o[\"failIfMajorPerformanceCaveat\"] = failIfMajorPerformanceCaveat\n return o\n}\n\npublic external abstract class WebGLObject\n\n/**\n * Exposes the JavaScript [WebGLBuffer](https://developer.mozilla.org/en/docs/Web/API/WebGLBuffer) to Kotlin\n */\npublic external abstract class WebGLBuffer : WebGLObject\n\n/**\n * Exposes the JavaScript [WebGLFramebuffer](https://developer.mozilla.org/en/docs/Web/API/WebGLFramebuffer) to Kotlin\n */\npublic external abstract class WebGLFramebuffer : WebGLObject\n\n/**\n * Exposes the JavaScript [WebGLProgram](https://developer.mozilla.org/en/docs/Web/API/WebGLProgram) to Kotlin\n */\npublic external abstract class WebGLProgram : WebGLObject\n\n/**\n * Exposes the JavaScript [WebGLRenderbuffer](https://developer.mozilla.org/en/docs/Web/API/WebGLRenderbuffer) to Kotlin\n */\npublic external abstract class WebGLRenderbuffer : WebGLObject\n\n/**\n * Exposes the JavaScript [WebGLShader](https://developer.mozilla.org/en/docs/Web/API/WebGLShader) to Kotlin\n */\npublic external abstract class WebGLShader : WebGLObject\n\n/**\n * Exposes the JavaScript [WebGLTexture](https://developer.mozilla.org/en/docs/Web/API/WebGLTexture) to Kotlin\n */\npublic external abstract class WebGLTexture : WebGLObject\n\n/**\n * Exposes the JavaScript [WebGLUniformLocation](https://developer.mozilla.org/en/docs/Web/API/WebGLUniformLocation) to Kotlin\n */\npublic external abstract class WebGLUniformLocation\n\n/**\n * Exposes the JavaScript [WebGLActiveInfo](https://developer.mozilla.org/en/docs/Web/API/WebGLActiveInfo) to Kotlin\n */\npublic external abstract class WebGLActiveInfo {\n open val size: Int\n open val type: Int\n open val name: String\n}\n\n/**\n * Exposes the JavaScript [WebGLShaderPrecisionFormat](https://developer.mozilla.org/en/docs/Web/API/WebGLShaderPrecisionFormat) to Kotlin\n */\npublic external abstract class WebGLShaderPrecisionFormat {\n open val rangeMin: Int\n open val rangeMax: Int\n open val precision: Int\n}\n\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface WebGLRenderingContextBase {\n val canvas: HTMLCanvasElement\n val drawingBufferWidth: Int\n val drawingBufferHeight: Int\n fun getContextAttributes(): WebGLContextAttributes?\n fun isContextLost(): Boolean\n fun getSupportedExtensions(): Array?\n fun getExtension(name: String): dynamic\n fun activeTexture(texture: Int)\n fun attachShader(program: WebGLProgram?, shader: WebGLShader?)\n fun bindAttribLocation(program: WebGLProgram?, index: Int, name: String)\n fun bindBuffer(target: Int, buffer: WebGLBuffer?)\n fun bindFramebuffer(target: Int, framebuffer: WebGLFramebuffer?)\n fun bindRenderbuffer(target: Int, renderbuffer: WebGLRenderbuffer?)\n fun bindTexture(target: Int, texture: WebGLTexture?)\n fun blendColor(red: Float, green: Float, blue: Float, alpha: Float)\n fun blendEquation(mode: Int)\n fun blendEquationSeparate(modeRGB: Int, modeAlpha: Int)\n fun blendFunc(sfactor: Int, dfactor: Int)\n fun blendFuncSeparate(srcRGB: Int, dstRGB: Int, srcAlpha: Int, dstAlpha: Int)\n fun bufferData(target: Int, size: Int, usage: Int)\n fun bufferData(target: Int, data: BufferDataSource?, usage: Int)\n fun bufferSubData(target: Int, offset: Int, data: BufferDataSource?)\n fun checkFramebufferStatus(target: Int): Int\n fun clear(mask: Int)\n fun clearColor(red: Float, green: Float, blue: Float, alpha: Float)\n fun clearDepth(depth: Float)\n fun clearStencil(s: Int)\n fun colorMask(red: Boolean, green: Boolean, blue: Boolean, alpha: Boolean)\n fun compileShader(shader: WebGLShader?)\n fun compressedTexImage2D(target: Int, level: Int, internalformat: Int, width: Int, height: Int, border: Int, data: ArrayBufferView)\n fun compressedTexSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, width: Int, height: Int, format: Int, data: ArrayBufferView)\n fun copyTexImage2D(target: Int, level: Int, internalformat: Int, x: Int, y: Int, width: Int, height: Int, border: Int)\n fun copyTexSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, x: Int, y: Int, width: Int, height: Int)\n fun createBuffer(): WebGLBuffer?\n fun createFramebuffer(): WebGLFramebuffer?\n fun createProgram(): WebGLProgram?\n fun createRenderbuffer(): WebGLRenderbuffer?\n fun createShader(type: Int): WebGLShader?\n fun createTexture(): WebGLTexture?\n fun cullFace(mode: Int)\n fun deleteBuffer(buffer: WebGLBuffer?)\n fun deleteFramebuffer(framebuffer: WebGLFramebuffer?)\n fun deleteProgram(program: WebGLProgram?)\n fun deleteRenderbuffer(renderbuffer: WebGLRenderbuffer?)\n fun deleteShader(shader: WebGLShader?)\n fun deleteTexture(texture: WebGLTexture?)\n fun depthFunc(func: Int)\n fun depthMask(flag: Boolean)\n fun depthRange(zNear: Float, zFar: Float)\n fun detachShader(program: WebGLProgram?, shader: WebGLShader?)\n fun disable(cap: Int)\n fun disableVertexAttribArray(index: Int)\n fun drawArrays(mode: Int, first: Int, count: Int)\n fun drawElements(mode: Int, count: Int, type: Int, offset: Int)\n fun enable(cap: Int)\n fun enableVertexAttribArray(index: Int)\n fun finish()\n fun flush()\n fun framebufferRenderbuffer(target: Int, attachment: Int, renderbuffertarget: Int, renderbuffer: WebGLRenderbuffer?)\n fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: WebGLTexture?, level: Int)\n fun frontFace(mode: Int)\n fun generateMipmap(target: Int)\n fun getActiveAttrib(program: WebGLProgram?, index: Int): WebGLActiveInfo?\n fun getActiveUniform(program: WebGLProgram?, index: Int): WebGLActiveInfo?\n fun getAttachedShaders(program: WebGLProgram?): Array?\n fun getAttribLocation(program: WebGLProgram?, name: String): Int\n fun getBufferParameter(target: Int, pname: Int): Any?\n fun getParameter(pname: Int): Any?\n fun getError(): Int\n fun getFramebufferAttachmentParameter(target: Int, attachment: Int, pname: Int): Any?\n fun getProgramParameter(program: WebGLProgram?, pname: Int): Any?\n fun getProgramInfoLog(program: WebGLProgram?): String?\n fun getRenderbufferParameter(target: Int, pname: Int): Any?\n fun getShaderParameter(shader: WebGLShader?, pname: Int): Any?\n fun getShaderPrecisionFormat(shadertype: Int, precisiontype: Int): WebGLShaderPrecisionFormat?\n fun getShaderInfoLog(shader: WebGLShader?): String?\n fun getShaderSource(shader: WebGLShader?): String?\n fun getTexParameter(target: Int, pname: Int): Any?\n fun getUniform(program: WebGLProgram?, location: WebGLUniformLocation?): Any?\n fun getUniformLocation(program: WebGLProgram?, name: String): WebGLUniformLocation?\n fun getVertexAttrib(index: Int, pname: Int): Any?\n fun getVertexAttribOffset(index: Int, pname: Int): Int\n fun hint(target: Int, mode: Int)\n fun isBuffer(buffer: WebGLBuffer?): Boolean\n fun isEnabled(cap: Int): Boolean\n fun isFramebuffer(framebuffer: WebGLFramebuffer?): Boolean\n fun isProgram(program: WebGLProgram?): Boolean\n fun isRenderbuffer(renderbuffer: WebGLRenderbuffer?): Boolean\n fun isShader(shader: WebGLShader?): Boolean\n fun isTexture(texture: WebGLTexture?): Boolean\n fun lineWidth(width: Float)\n fun linkProgram(program: WebGLProgram?)\n fun pixelStorei(pname: Int, param: Int)\n fun polygonOffset(factor: Float, units: Float)\n fun readPixels(x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, pixels: ArrayBufferView?)\n fun renderbufferStorage(target: Int, internalformat: Int, width: Int, height: Int)\n fun sampleCoverage(value: Float, invert: Boolean)\n fun scissor(x: Int, y: Int, width: Int, height: Int)\n fun shaderSource(shader: WebGLShader?, source: String)\n fun stencilFunc(func: Int, ref: Int, mask: Int)\n fun stencilFuncSeparate(face: Int, func: Int, ref: Int, mask: Int)\n fun stencilMask(mask: Int)\n fun stencilMaskSeparate(face: Int, mask: Int)\n fun stencilOp(fail: Int, zfail: Int, zpass: Int)\n fun stencilOpSeparate(face: Int, fail: Int, zfail: Int, zpass: Int)\n fun texImage2D(target: Int, level: Int, internalformat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, pixels: ArrayBufferView?)\n fun texImage2D(target: Int, level: Int, internalformat: Int, format: Int, type: Int, source: TexImageSource?)\n fun texParameterf(target: Int, pname: Int, param: Float)\n fun texParameteri(target: Int, pname: Int, param: Int)\n fun texSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, width: Int, height: Int, format: Int, type: Int, pixels: ArrayBufferView?)\n fun texSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, format: Int, type: Int, source: TexImageSource?)\n fun uniform1f(location: WebGLUniformLocation?, x: Float)\n fun uniform1fv(location: WebGLUniformLocation?, v: Float32Array)\n fun uniform1fv(location: WebGLUniformLocation?, v: Array)\n fun uniform1i(location: WebGLUniformLocation?, x: Int)\n fun uniform1iv(location: WebGLUniformLocation?, v: Int32Array)\n fun uniform1iv(location: WebGLUniformLocation?, v: Array)\n fun uniform2f(location: WebGLUniformLocation?, x: Float, y: Float)\n fun uniform2fv(location: WebGLUniformLocation?, v: Float32Array)\n fun uniform2fv(location: WebGLUniformLocation?, v: Array)\n fun uniform2i(location: WebGLUniformLocation?, x: Int, y: Int)\n fun uniform2iv(location: WebGLUniformLocation?, v: Int32Array)\n fun uniform2iv(location: WebGLUniformLocation?, v: Array)\n fun uniform3f(location: WebGLUniformLocation?, x: Float, y: Float, z: Float)\n fun uniform3fv(location: WebGLUniformLocation?, v: Float32Array)\n fun uniform3fv(location: WebGLUniformLocation?, v: Array)\n fun uniform3i(location: WebGLUniformLocation?, x: Int, y: Int, z: Int)\n fun uniform3iv(location: WebGLUniformLocation?, v: Int32Array)\n fun uniform3iv(location: WebGLUniformLocation?, v: Array)\n fun uniform4f(location: WebGLUniformLocation?, x: Float, y: Float, z: Float, w: Float)\n fun uniform4fv(location: WebGLUniformLocation?, v: Float32Array)\n fun uniform4fv(location: WebGLUniformLocation?, v: Array)\n fun uniform4i(location: WebGLUniformLocation?, x: Int, y: Int, z: Int, w: Int)\n fun uniform4iv(location: WebGLUniformLocation?, v: Int32Array)\n fun uniform4iv(location: WebGLUniformLocation?, v: Array)\n fun uniformMatrix2fv(location: WebGLUniformLocation?, transpose: Boolean, value: Float32Array)\n fun uniformMatrix2fv(location: WebGLUniformLocation?, transpose: Boolean, value: Array)\n fun uniformMatrix3fv(location: WebGLUniformLocation?, transpose: Boolean, value: Float32Array)\n fun uniformMatrix3fv(location: WebGLUniformLocation?, transpose: Boolean, value: Array)\n fun uniformMatrix4fv(location: WebGLUniformLocation?, transpose: Boolean, value: Float32Array)\n fun uniformMatrix4fv(location: WebGLUniformLocation?, transpose: Boolean, value: Array)\n fun useProgram(program: WebGLProgram?)\n fun validateProgram(program: WebGLProgram?)\n fun vertexAttrib1f(index: Int, x: Float)\n fun vertexAttrib1fv(index: Int, values: dynamic)\n fun vertexAttrib2f(index: Int, x: Float, y: Float)\n fun vertexAttrib2fv(index: Int, values: dynamic)\n fun vertexAttrib3f(index: Int, x: Float, y: Float, z: Float)\n fun vertexAttrib3fv(index: Int, values: dynamic)\n fun vertexAttrib4f(index: Int, x: Float, y: Float, z: Float, w: Float)\n fun vertexAttrib4fv(index: Int, values: dynamic)\n fun vertexAttribPointer(index: Int, size: Int, type: Int, normalized: Boolean, stride: Int, offset: Int)\n fun viewport(x: Int, y: Int, width: Int, height: Int)\n\n companion object {\n val DEPTH_BUFFER_BIT: Int\n val STENCIL_BUFFER_BIT: Int\n val COLOR_BUFFER_BIT: Int\n val POINTS: Int\n val LINES: Int\n val LINE_LOOP: Int\n val LINE_STRIP: Int\n val TRIANGLES: Int\n val TRIANGLE_STRIP: Int\n val TRIANGLE_FAN: Int\n val ZERO: Int\n val ONE: Int\n val SRC_COLOR: Int\n val ONE_MINUS_SRC_COLOR: Int\n val SRC_ALPHA: Int\n val ONE_MINUS_SRC_ALPHA: Int\n val DST_ALPHA: Int\n val ONE_MINUS_DST_ALPHA: Int\n val DST_COLOR: Int\n val ONE_MINUS_DST_COLOR: Int\n val SRC_ALPHA_SATURATE: Int\n val FUNC_ADD: Int\n val BLEND_EQUATION: Int\n val BLEND_EQUATION_RGB: Int\n val BLEND_EQUATION_ALPHA: Int\n val FUNC_SUBTRACT: Int\n val FUNC_REVERSE_SUBTRACT: Int\n val BLEND_DST_RGB: Int\n val BLEND_SRC_RGB: Int\n val BLEND_DST_ALPHA: Int\n val BLEND_SRC_ALPHA: Int\n val CONSTANT_COLOR: Int\n val ONE_MINUS_CONSTANT_COLOR: Int\n val CONSTANT_ALPHA: Int\n val ONE_MINUS_CONSTANT_ALPHA: Int\n val BLEND_COLOR: Int\n val ARRAY_BUFFER: Int\n val ELEMENT_ARRAY_BUFFER: Int\n val ARRAY_BUFFER_BINDING: Int\n val ELEMENT_ARRAY_BUFFER_BINDING: Int\n val STREAM_DRAW: Int\n val STATIC_DRAW: Int\n val DYNAMIC_DRAW: Int\n val BUFFER_SIZE: Int\n val BUFFER_USAGE: Int\n val CURRENT_VERTEX_ATTRIB: Int\n val FRONT: Int\n val BACK: Int\n val FRONT_AND_BACK: Int\n val CULL_FACE: Int\n val BLEND: Int\n val DITHER: Int\n val STENCIL_TEST: Int\n val DEPTH_TEST: Int\n val SCISSOR_TEST: Int\n val POLYGON_OFFSET_FILL: Int\n val SAMPLE_ALPHA_TO_COVERAGE: Int\n val SAMPLE_COVERAGE: Int\n val NO_ERROR: Int\n val INVALID_ENUM: Int\n val INVALID_VALUE: Int\n val INVALID_OPERATION: Int\n val OUT_OF_MEMORY: Int\n val CW: Int\n val CCW: Int\n val LINE_WIDTH: Int\n val ALIASED_POINT_SIZE_RANGE: Int\n val ALIASED_LINE_WIDTH_RANGE: Int\n val CULL_FACE_MODE: Int\n val FRONT_FACE: Int\n val DEPTH_RANGE: Int\n val DEPTH_WRITEMASK: Int\n val DEPTH_CLEAR_VALUE: Int\n val DEPTH_FUNC: Int\n val STENCIL_CLEAR_VALUE: Int\n val STENCIL_FUNC: Int\n val STENCIL_FAIL: Int\n val STENCIL_PASS_DEPTH_FAIL: Int\n val STENCIL_PASS_DEPTH_PASS: Int\n val STENCIL_REF: Int\n val STENCIL_VALUE_MASK: Int\n val STENCIL_WRITEMASK: Int\n val STENCIL_BACK_FUNC: Int\n val STENCIL_BACK_FAIL: Int\n val STENCIL_BACK_PASS_DEPTH_FAIL: Int\n val STENCIL_BACK_PASS_DEPTH_PASS: Int\n val STENCIL_BACK_REF: Int\n val STENCIL_BACK_VALUE_MASK: Int\n val STENCIL_BACK_WRITEMASK: Int\n val VIEWPORT: Int\n val SCISSOR_BOX: Int\n val COLOR_CLEAR_VALUE: Int\n val COLOR_WRITEMASK: Int\n val UNPACK_ALIGNMENT: Int\n val PACK_ALIGNMENT: Int\n val MAX_TEXTURE_SIZE: Int\n val MAX_VIEWPORT_DIMS: Int\n val SUBPIXEL_BITS: Int\n val RED_BITS: Int\n val GREEN_BITS: Int\n val BLUE_BITS: Int\n val ALPHA_BITS: Int\n val DEPTH_BITS: Int\n val STENCIL_BITS: Int\n val POLYGON_OFFSET_UNITS: Int\n val POLYGON_OFFSET_FACTOR: Int\n val TEXTURE_BINDING_2D: Int\n val SAMPLE_BUFFERS: Int\n val SAMPLES: Int\n val SAMPLE_COVERAGE_VALUE: Int\n val SAMPLE_COVERAGE_INVERT: Int\n val COMPRESSED_TEXTURE_FORMATS: Int\n val DONT_CARE: Int\n val FASTEST: Int\n val NICEST: Int\n val GENERATE_MIPMAP_HINT: Int\n val BYTE: Int\n val UNSIGNED_BYTE: Int\n val SHORT: Int\n val UNSIGNED_SHORT: Int\n val INT: Int\n val UNSIGNED_INT: Int\n val FLOAT: Int\n val DEPTH_COMPONENT: Int\n val ALPHA: Int\n val RGB: Int\n val RGBA: Int\n val LUMINANCE: Int\n val LUMINANCE_ALPHA: Int\n val UNSIGNED_SHORT_4_4_4_4: Int\n val UNSIGNED_SHORT_5_5_5_1: Int\n val UNSIGNED_SHORT_5_6_5: Int\n val FRAGMENT_SHADER: Int\n val VERTEX_SHADER: Int\n val MAX_VERTEX_ATTRIBS: Int\n val MAX_VERTEX_UNIFORM_VECTORS: Int\n val MAX_VARYING_VECTORS: Int\n val MAX_COMBINED_TEXTURE_IMAGE_UNITS: Int\n val MAX_VERTEX_TEXTURE_IMAGE_UNITS: Int\n val MAX_TEXTURE_IMAGE_UNITS: Int\n val MAX_FRAGMENT_UNIFORM_VECTORS: Int\n val SHADER_TYPE: Int\n val DELETE_STATUS: Int\n val LINK_STATUS: Int\n val VALIDATE_STATUS: Int\n val ATTACHED_SHADERS: Int\n val ACTIVE_UNIFORMS: Int\n val ACTIVE_ATTRIBUTES: Int\n val SHADING_LANGUAGE_VERSION: Int\n val CURRENT_PROGRAM: Int\n val NEVER: Int\n val LESS: Int\n val EQUAL: Int\n val LEQUAL: Int\n val GREATER: Int\n val NOTEQUAL: Int\n val GEQUAL: Int\n val ALWAYS: Int\n val KEEP: Int\n val REPLACE: Int\n val INCR: Int\n val DECR: Int\n val INVERT: Int\n val INCR_WRAP: Int\n val DECR_WRAP: Int\n val VENDOR: Int\n val RENDERER: Int\n val VERSION: Int\n val NEAREST: Int\n val LINEAR: Int\n val NEAREST_MIPMAP_NEAREST: Int\n val LINEAR_MIPMAP_NEAREST: Int\n val NEAREST_MIPMAP_LINEAR: Int\n val LINEAR_MIPMAP_LINEAR: Int\n val TEXTURE_MAG_FILTER: Int\n val TEXTURE_MIN_FILTER: Int\n val TEXTURE_WRAP_S: Int\n val TEXTURE_WRAP_T: Int\n val TEXTURE_2D: Int\n val TEXTURE: Int\n val TEXTURE_CUBE_MAP: Int\n val TEXTURE_BINDING_CUBE_MAP: Int\n val TEXTURE_CUBE_MAP_POSITIVE_X: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_X: Int\n val TEXTURE_CUBE_MAP_POSITIVE_Y: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_Y: Int\n val TEXTURE_CUBE_MAP_POSITIVE_Z: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_Z: Int\n val MAX_CUBE_MAP_TEXTURE_SIZE: Int\n val TEXTURE0: Int\n val TEXTURE1: Int\n val TEXTURE2: Int\n val TEXTURE3: Int\n val TEXTURE4: Int\n val TEXTURE5: Int\n val TEXTURE6: Int\n val TEXTURE7: Int\n val TEXTURE8: Int\n val TEXTURE9: Int\n val TEXTURE10: Int\n val TEXTURE11: Int\n val TEXTURE12: Int\n val TEXTURE13: Int\n val TEXTURE14: Int\n val TEXTURE15: Int\n val TEXTURE16: Int\n val TEXTURE17: Int\n val TEXTURE18: Int\n val TEXTURE19: Int\n val TEXTURE20: Int\n val TEXTURE21: Int\n val TEXTURE22: Int\n val TEXTURE23: Int\n val TEXTURE24: Int\n val TEXTURE25: Int\n val TEXTURE26: Int\n val TEXTURE27: Int\n val TEXTURE28: Int\n val TEXTURE29: Int\n val TEXTURE30: Int\n val TEXTURE31: Int\n val ACTIVE_TEXTURE: Int\n val REPEAT: Int\n val CLAMP_TO_EDGE: Int\n val MIRRORED_REPEAT: Int\n val FLOAT_VEC2: Int\n val FLOAT_VEC3: Int\n val FLOAT_VEC4: Int\n val INT_VEC2: Int\n val INT_VEC3: Int\n val INT_VEC4: Int\n val BOOL: Int\n val BOOL_VEC2: Int\n val BOOL_VEC3: Int\n val BOOL_VEC4: Int\n val FLOAT_MAT2: Int\n val FLOAT_MAT3: Int\n val FLOAT_MAT4: Int\n val SAMPLER_2D: Int\n val SAMPLER_CUBE: Int\n val VERTEX_ATTRIB_ARRAY_ENABLED: Int\n val VERTEX_ATTRIB_ARRAY_SIZE: Int\n val VERTEX_ATTRIB_ARRAY_STRIDE: Int\n val VERTEX_ATTRIB_ARRAY_TYPE: Int\n val VERTEX_ATTRIB_ARRAY_NORMALIZED: Int\n val VERTEX_ATTRIB_ARRAY_POINTER: Int\n val VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: Int\n val IMPLEMENTATION_COLOR_READ_TYPE: Int\n val IMPLEMENTATION_COLOR_READ_FORMAT: Int\n val COMPILE_STATUS: Int\n val LOW_FLOAT: Int\n val MEDIUM_FLOAT: Int\n val HIGH_FLOAT: Int\n val LOW_INT: Int\n val MEDIUM_INT: Int\n val HIGH_INT: Int\n val FRAMEBUFFER: Int\n val RENDERBUFFER: Int\n val RGBA4: Int\n val RGB5_A1: Int\n val RGB565: Int\n val DEPTH_COMPONENT16: Int\n val STENCIL_INDEX: Int\n val STENCIL_INDEX8: Int\n val DEPTH_STENCIL: Int\n val RENDERBUFFER_WIDTH: Int\n val RENDERBUFFER_HEIGHT: Int\n val RENDERBUFFER_INTERNAL_FORMAT: Int\n val RENDERBUFFER_RED_SIZE: Int\n val RENDERBUFFER_GREEN_SIZE: Int\n val RENDERBUFFER_BLUE_SIZE: Int\n val RENDERBUFFER_ALPHA_SIZE: Int\n val RENDERBUFFER_DEPTH_SIZE: Int\n val RENDERBUFFER_STENCIL_SIZE: Int\n val FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: Int\n val FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: Int\n val FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: Int\n val FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: Int\n val COLOR_ATTACHMENT0: Int\n val DEPTH_ATTACHMENT: Int\n val STENCIL_ATTACHMENT: Int\n val DEPTH_STENCIL_ATTACHMENT: Int\n val NONE: Int\n val FRAMEBUFFER_COMPLETE: Int\n val FRAMEBUFFER_INCOMPLETE_ATTACHMENT: Int\n val FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: Int\n val FRAMEBUFFER_INCOMPLETE_DIMENSIONS: Int\n val FRAMEBUFFER_UNSUPPORTED: Int\n val FRAMEBUFFER_BINDING: Int\n val RENDERBUFFER_BINDING: Int\n val MAX_RENDERBUFFER_SIZE: Int\n val INVALID_FRAMEBUFFER_OPERATION: Int\n val UNPACK_FLIP_Y_WEBGL: Int\n val UNPACK_PREMULTIPLY_ALPHA_WEBGL: Int\n val CONTEXT_LOST_WEBGL: Int\n val UNPACK_COLORSPACE_CONVERSION_WEBGL: Int\n val BROWSER_DEFAULT_WEBGL: Int\n }\n}\n\n/**\n * Exposes the JavaScript [WebGLRenderingContext](https://developer.mozilla.org/en/docs/Web/API/WebGLRenderingContext) to Kotlin\n */\npublic external abstract class WebGLRenderingContext : WebGLRenderingContextBase, RenderingContext {\n companion object {\n val DEPTH_BUFFER_BIT: Int\n val STENCIL_BUFFER_BIT: Int\n val COLOR_BUFFER_BIT: Int\n val POINTS: Int\n val LINES: Int\n val LINE_LOOP: Int\n val LINE_STRIP: Int\n val TRIANGLES: Int\n val TRIANGLE_STRIP: Int\n val TRIANGLE_FAN: Int\n val ZERO: Int\n val ONE: Int\n val SRC_COLOR: Int\n val ONE_MINUS_SRC_COLOR: Int\n val SRC_ALPHA: Int\n val ONE_MINUS_SRC_ALPHA: Int\n val DST_ALPHA: Int\n val ONE_MINUS_DST_ALPHA: Int\n val DST_COLOR: Int\n val ONE_MINUS_DST_COLOR: Int\n val SRC_ALPHA_SATURATE: Int\n val FUNC_ADD: Int\n val BLEND_EQUATION: Int\n val BLEND_EQUATION_RGB: Int\n val BLEND_EQUATION_ALPHA: Int\n val FUNC_SUBTRACT: Int\n val FUNC_REVERSE_SUBTRACT: Int\n val BLEND_DST_RGB: Int\n val BLEND_SRC_RGB: Int\n val BLEND_DST_ALPHA: Int\n val BLEND_SRC_ALPHA: Int\n val CONSTANT_COLOR: Int\n val ONE_MINUS_CONSTANT_COLOR: Int\n val CONSTANT_ALPHA: Int\n val ONE_MINUS_CONSTANT_ALPHA: Int\n val BLEND_COLOR: Int\n val ARRAY_BUFFER: Int\n val ELEMENT_ARRAY_BUFFER: Int\n val ARRAY_BUFFER_BINDING: Int\n val ELEMENT_ARRAY_BUFFER_BINDING: Int\n val STREAM_DRAW: Int\n val STATIC_DRAW: Int\n val DYNAMIC_DRAW: Int\n val BUFFER_SIZE: Int\n val BUFFER_USAGE: Int\n val CURRENT_VERTEX_ATTRIB: Int\n val FRONT: Int\n val BACK: Int\n val FRONT_AND_BACK: Int\n val CULL_FACE: Int\n val BLEND: Int\n val DITHER: Int\n val STENCIL_TEST: Int\n val DEPTH_TEST: Int\n val SCISSOR_TEST: Int\n val POLYGON_OFFSET_FILL: Int\n val SAMPLE_ALPHA_TO_COVERAGE: Int\n val SAMPLE_COVERAGE: Int\n val NO_ERROR: Int\n val INVALID_ENUM: Int\n val INVALID_VALUE: Int\n val INVALID_OPERATION: Int\n val OUT_OF_MEMORY: Int\n val CW: Int\n val CCW: Int\n val LINE_WIDTH: Int\n val ALIASED_POINT_SIZE_RANGE: Int\n val ALIASED_LINE_WIDTH_RANGE: Int\n val CULL_FACE_MODE: Int\n val FRONT_FACE: Int\n val DEPTH_RANGE: Int\n val DEPTH_WRITEMASK: Int\n val DEPTH_CLEAR_VALUE: Int\n val DEPTH_FUNC: Int\n val STENCIL_CLEAR_VALUE: Int\n val STENCIL_FUNC: Int\n val STENCIL_FAIL: Int\n val STENCIL_PASS_DEPTH_FAIL: Int\n val STENCIL_PASS_DEPTH_PASS: Int\n val STENCIL_REF: Int\n val STENCIL_VALUE_MASK: Int\n val STENCIL_WRITEMASK: Int\n val STENCIL_BACK_FUNC: Int\n val STENCIL_BACK_FAIL: Int\n val STENCIL_BACK_PASS_DEPTH_FAIL: Int\n val STENCIL_BACK_PASS_DEPTH_PASS: Int\n val STENCIL_BACK_REF: Int\n val STENCIL_BACK_VALUE_MASK: Int\n val STENCIL_BACK_WRITEMASK: Int\n val VIEWPORT: Int\n val SCISSOR_BOX: Int\n val COLOR_CLEAR_VALUE: Int\n val COLOR_WRITEMASK: Int\n val UNPACK_ALIGNMENT: Int\n val PACK_ALIGNMENT: Int\n val MAX_TEXTURE_SIZE: Int\n val MAX_VIEWPORT_DIMS: Int\n val SUBPIXEL_BITS: Int\n val RED_BITS: Int\n val GREEN_BITS: Int\n val BLUE_BITS: Int\n val ALPHA_BITS: Int\n val DEPTH_BITS: Int\n val STENCIL_BITS: Int\n val POLYGON_OFFSET_UNITS: Int\n val POLYGON_OFFSET_FACTOR: Int\n val TEXTURE_BINDING_2D: Int\n val SAMPLE_BUFFERS: Int\n val SAMPLES: Int\n val SAMPLE_COVERAGE_VALUE: Int\n val SAMPLE_COVERAGE_INVERT: Int\n val COMPRESSED_TEXTURE_FORMATS: Int\n val DONT_CARE: Int\n val FASTEST: Int\n val NICEST: Int\n val GENERATE_MIPMAP_HINT: Int\n val BYTE: Int\n val UNSIGNED_BYTE: Int\n val SHORT: Int\n val UNSIGNED_SHORT: Int\n val INT: Int\n val UNSIGNED_INT: Int\n val FLOAT: Int\n val DEPTH_COMPONENT: Int\n val ALPHA: Int\n val RGB: Int\n val RGBA: Int\n val LUMINANCE: Int\n val LUMINANCE_ALPHA: Int\n val UNSIGNED_SHORT_4_4_4_4: Int\n val UNSIGNED_SHORT_5_5_5_1: Int\n val UNSIGNED_SHORT_5_6_5: Int\n val FRAGMENT_SHADER: Int\n val VERTEX_SHADER: Int\n val MAX_VERTEX_ATTRIBS: Int\n val MAX_VERTEX_UNIFORM_VECTORS: Int\n val MAX_VARYING_VECTORS: Int\n val MAX_COMBINED_TEXTURE_IMAGE_UNITS: Int\n val MAX_VERTEX_TEXTURE_IMAGE_UNITS: Int\n val MAX_TEXTURE_IMAGE_UNITS: Int\n val MAX_FRAGMENT_UNIFORM_VECTORS: Int\n val SHADER_TYPE: Int\n val DELETE_STATUS: Int\n val LINK_STATUS: Int\n val VALIDATE_STATUS: Int\n val ATTACHED_SHADERS: Int\n val ACTIVE_UNIFORMS: Int\n val ACTIVE_ATTRIBUTES: Int\n val SHADING_LANGUAGE_VERSION: Int\n val CURRENT_PROGRAM: Int\n val NEVER: Int\n val LESS: Int\n val EQUAL: Int\n val LEQUAL: Int\n val GREATER: Int\n val NOTEQUAL: Int\n val GEQUAL: Int\n val ALWAYS: Int\n val KEEP: Int\n val REPLACE: Int\n val INCR: Int\n val DECR: Int\n val INVERT: Int\n val INCR_WRAP: Int\n val DECR_WRAP: Int\n val VENDOR: Int\n val RENDERER: Int\n val VERSION: Int\n val NEAREST: Int\n val LINEAR: Int\n val NEAREST_MIPMAP_NEAREST: Int\n val LINEAR_MIPMAP_NEAREST: Int\n val NEAREST_MIPMAP_LINEAR: Int\n val LINEAR_MIPMAP_LINEAR: Int\n val TEXTURE_MAG_FILTER: Int\n val TEXTURE_MIN_FILTER: Int\n val TEXTURE_WRAP_S: Int\n val TEXTURE_WRAP_T: Int\n val TEXTURE_2D: Int\n val TEXTURE: Int\n val TEXTURE_CUBE_MAP: Int\n val TEXTURE_BINDING_CUBE_MAP: Int\n val TEXTURE_CUBE_MAP_POSITIVE_X: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_X: Int\n val TEXTURE_CUBE_MAP_POSITIVE_Y: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_Y: Int\n val TEXTURE_CUBE_MAP_POSITIVE_Z: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_Z: Int\n val MAX_CUBE_MAP_TEXTURE_SIZE: Int\n val TEXTURE0: Int\n val TEXTURE1: Int\n val TEXTURE2: Int\n val TEXTURE3: Int\n val TEXTURE4: Int\n val TEXTURE5: Int\n val TEXTURE6: Int\n val TEXTURE7: Int\n val TEXTURE8: Int\n val TEXTURE9: Int\n val TEXTURE10: Int\n val TEXTURE11: Int\n val TEXTURE12: Int\n val TEXTURE13: Int\n val TEXTURE14: Int\n val TEXTURE15: Int\n val TEXTURE16: Int\n val TEXTURE17: Int\n val TEXTURE18: Int\n val TEXTURE19: Int\n val TEXTURE20: Int\n val TEXTURE21: Int\n val TEXTURE22: Int\n val TEXTURE23: Int\n val TEXTURE24: Int\n val TEXTURE25: Int\n val TEXTURE26: Int\n val TEXTURE27: Int\n val TEXTURE28: Int\n val TEXTURE29: Int\n val TEXTURE30: Int\n val TEXTURE31: Int\n val ACTIVE_TEXTURE: Int\n val REPEAT: Int\n val CLAMP_TO_EDGE: Int\n val MIRRORED_REPEAT: Int\n val FLOAT_VEC2: Int\n val FLOAT_VEC3: Int\n val FLOAT_VEC4: Int\n val INT_VEC2: Int\n val INT_VEC3: Int\n val INT_VEC4: Int\n val BOOL: Int\n val BOOL_VEC2: Int\n val BOOL_VEC3: Int\n val BOOL_VEC4: Int\n val FLOAT_MAT2: Int\n val FLOAT_MAT3: Int\n val FLOAT_MAT4: Int\n val SAMPLER_2D: Int\n val SAMPLER_CUBE: Int\n val VERTEX_ATTRIB_ARRAY_ENABLED: Int\n val VERTEX_ATTRIB_ARRAY_SIZE: Int\n val VERTEX_ATTRIB_ARRAY_STRIDE: Int\n val VERTEX_ATTRIB_ARRAY_TYPE: Int\n val VERTEX_ATTRIB_ARRAY_NORMALIZED: Int\n val VERTEX_ATTRIB_ARRAY_POINTER: Int\n val VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: Int\n val IMPLEMENTATION_COLOR_READ_TYPE: Int\n val IMPLEMENTATION_COLOR_READ_FORMAT: Int\n val COMPILE_STATUS: Int\n val LOW_FLOAT: Int\n val MEDIUM_FLOAT: Int\n val HIGH_FLOAT: Int\n val LOW_INT: Int\n val MEDIUM_INT: Int\n val HIGH_INT: Int\n val FRAMEBUFFER: Int\n val RENDERBUFFER: Int\n val RGBA4: Int\n val RGB5_A1: Int\n val RGB565: Int\n val DEPTH_COMPONENT16: Int\n val STENCIL_INDEX: Int\n val STENCIL_INDEX8: Int\n val DEPTH_STENCIL: Int\n val RENDERBUFFER_WIDTH: Int\n val RENDERBUFFER_HEIGHT: Int\n val RENDERBUFFER_INTERNAL_FORMAT: Int\n val RENDERBUFFER_RED_SIZE: Int\n val RENDERBUFFER_GREEN_SIZE: Int\n val RENDERBUFFER_BLUE_SIZE: Int\n val RENDERBUFFER_ALPHA_SIZE: Int\n val RENDERBUFFER_DEPTH_SIZE: Int\n val RENDERBUFFER_STENCIL_SIZE: Int\n val FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: Int\n val FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: Int\n val FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: Int\n val FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: Int\n val COLOR_ATTACHMENT0: Int\n val DEPTH_ATTACHMENT: Int\n val STENCIL_ATTACHMENT: Int\n val DEPTH_STENCIL_ATTACHMENT: Int\n val NONE: Int\n val FRAMEBUFFER_COMPLETE: Int\n val FRAMEBUFFER_INCOMPLETE_ATTACHMENT: Int\n val FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: Int\n val FRAMEBUFFER_INCOMPLETE_DIMENSIONS: Int\n val FRAMEBUFFER_UNSUPPORTED: Int\n val FRAMEBUFFER_BINDING: Int\n val RENDERBUFFER_BINDING: Int\n val MAX_RENDERBUFFER_SIZE: Int\n val INVALID_FRAMEBUFFER_OPERATION: Int\n val UNPACK_FLIP_Y_WEBGL: Int\n val UNPACK_PREMULTIPLY_ALPHA_WEBGL: Int\n val CONTEXT_LOST_WEBGL: Int\n val UNPACK_COLORSPACE_CONVERSION_WEBGL: Int\n val BROWSER_DEFAULT_WEBGL: Int\n }\n}\n\n/**\n * Exposes the JavaScript [WebGLContextEvent](https://developer.mozilla.org/en/docs/Web/API/WebGLContextEvent) to Kotlin\n */\npublic external open class WebGLContextEvent(type: String, eventInit: WebGLContextEventInit = definedExternally) : Event {\n open val statusMessage: String\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface WebGLContextEventInit : EventInit {\n var statusMessage: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun WebGLContextEventInit(statusMessage: String? = \"\", bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): WebGLContextEventInit {\n val o = js(\"({})\")\n o[\"statusMessage\"] = statusMessage\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [ArrayBuffer](https://developer.mozilla.org/en/docs/Web/API/ArrayBuffer) to Kotlin\n */\npublic external open class ArrayBuffer(length: Int) : BufferDataSource {\n open val byteLength: Int\n fun slice(begin: Int, end: Int = definedExternally): ArrayBuffer\n\n companion object {\n fun isView(value: Any?): Boolean\n }\n}\n\n/**\n * Exposes the JavaScript [ArrayBufferView](https://developer.mozilla.org/en/docs/Web/API/ArrayBufferView) to Kotlin\n */\npublic external interface ArrayBufferView : BufferDataSource {\n val buffer: ArrayBuffer\n val byteOffset: Int\n val byteLength: Int\n}\n\n/**\n * Exposes the JavaScript [Int8Array](https://developer.mozilla.org/en/docs/Web/API/Int8Array) to Kotlin\n */\npublic external open class Int8Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Int8Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Int8Array, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Int8Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Int8Array.get(index: Int): Byte = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Int8Array.set(index: Int, value: Byte) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [Uint8Array](https://developer.mozilla.org/en/docs/Web/API/Uint8Array) to Kotlin\n */\npublic external open class Uint8Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Uint8Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Uint8Array, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Uint8Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Uint8Array.get(index: Int): Byte = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Uint8Array.set(index: Int, value: Byte) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [Uint8ClampedArray](https://developer.mozilla.org/en/docs/Web/API/Uint8ClampedArray) to Kotlin\n */\npublic external open class Uint8ClampedArray : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Uint8ClampedArray)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Uint8ClampedArray, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Uint8ClampedArray\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Uint8ClampedArray.get(index: Int): Byte = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Uint8ClampedArray.set(index: Int, value: Byte) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [Int16Array](https://developer.mozilla.org/en/docs/Web/API/Int16Array) to Kotlin\n */\npublic external open class Int16Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Int16Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Int16Array, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Int16Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Int16Array.get(index: Int): Short = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Int16Array.set(index: Int, value: Short) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [Uint16Array](https://developer.mozilla.org/en/docs/Web/API/Uint16Array) to Kotlin\n */\npublic external open class Uint16Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Uint16Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Uint16Array, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Uint16Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Uint16Array.get(index: Int): Short = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Uint16Array.set(index: Int, value: Short) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [Int32Array](https://developer.mozilla.org/en/docs/Web/API/Int32Array) to Kotlin\n */\npublic external open class Int32Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Int32Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Int32Array, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Int32Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Int32Array.get(index: Int): Int = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Int32Array.set(index: Int, value: Int) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [Uint32Array](https://developer.mozilla.org/en/docs/Web/API/Uint32Array) to Kotlin\n */\npublic external open class Uint32Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Uint32Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Uint32Array, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Uint32Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Uint32Array.get(index: Int): Int = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Uint32Array.set(index: Int, value: Int) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [Float32Array](https://developer.mozilla.org/en/docs/Web/API/Float32Array) to Kotlin\n */\npublic external open class Float32Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Float32Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Float32Array, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Float32Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Float32Array.get(index: Int): Float = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Float32Array.set(index: Int, value: Float) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [Float64Array](https://developer.mozilla.org/en/docs/Web/API/Float64Array) to Kotlin\n */\npublic external open class Float64Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Float64Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Float64Array, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Float64Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Float64Array.get(index: Int): Double = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Float64Array.set(index: Int, value: Double) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [DataView](https://developer.mozilla.org/en/docs/Web/API/DataView) to Kotlin\n */\npublic external open class DataView(buffer: ArrayBuffer, byteOffset: Int = definedExternally, byteLength: Int = definedExternally) : ArrayBufferView {\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun getInt8(byteOffset: Int): Byte\n fun getUint8(byteOffset: Int): Byte\n fun getInt16(byteOffset: Int, littleEndian: Boolean = definedExternally): Short\n fun getUint16(byteOffset: Int, littleEndian: Boolean = definedExternally): Short\n fun getInt32(byteOffset: Int, littleEndian: Boolean = definedExternally): Int\n fun getUint32(byteOffset: Int, littleEndian: Boolean = definedExternally): Int\n fun getFloat32(byteOffset: Int, littleEndian: Boolean = definedExternally): Float\n fun getFloat64(byteOffset: Int, littleEndian: Boolean = definedExternally): Double\n fun setInt8(byteOffset: Int, value: Byte)\n fun setUint8(byteOffset: Int, value: Byte)\n fun setInt16(byteOffset: Int, value: Short, littleEndian: Boolean = definedExternally)\n fun setUint16(byteOffset: Int, value: Short, littleEndian: Boolean = definedExternally)\n fun setInt32(byteOffset: Int, value: Int, littleEndian: Boolean = definedExternally)\n fun setUint32(byteOffset: Int, value: Int, littleEndian: Boolean = definedExternally)\n fun setFloat32(byteOffset: Int, value: Float, littleEndian: Boolean = definedExternally)\n fun setFloat64(byteOffset: Int, value: Double, littleEndian: Boolean = definedExternally)\n}\n\npublic external interface BufferDataSource\n\npublic external interface TexImageSource","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See github.com/kotlin/dukat for details\n\npackage org.w3c.dom.clipboard\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\npublic external interface ClipboardEventInit : EventInit {\n var clipboardData: DataTransfer? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ClipboardEventInit(clipboardData: DataTransfer? = null, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): ClipboardEventInit {\n val o = js(\"({})\")\n o[\"clipboardData\"] = clipboardData\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [ClipboardEvent](https://developer.mozilla.org/en/docs/Web/API/ClipboardEvent) to Kotlin\n */\npublic external open class ClipboardEvent(type: String, eventInitDict: ClipboardEventInit = definedExternally) : Event {\n open val clipboardData: DataTransfer?\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [Clipboard](https://developer.mozilla.org/en/docs/Web/API/Clipboard) to Kotlin\n */\npublic external abstract class Clipboard : EventTarget {\n fun read(): Promise\n fun readText(): Promise\n fun write(data: DataTransfer): Promise\n fun writeText(data: String): Promise\n}\n\npublic external interface ClipboardPermissionDescriptor {\n var allowWithoutGesture: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ClipboardPermissionDescriptor(allowWithoutGesture: Boolean? = false): ClipboardPermissionDescriptor {\n val o = js(\"({})\")\n o[\"allowWithoutGesture\"] = allowWithoutGesture\n return o\n}","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See github.com/kotlin/dukat for details\n\npackage org.w3c.dom.css\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\npublic external abstract class MediaList : ItemArrayLike {\n open var mediaText: String\n fun appendMedium(medium: String)\n fun deleteMedium(medium: String)\n override fun item(index: Int): String?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun MediaList.get(index: Int): String? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [StyleSheet](https://developer.mozilla.org/en/docs/Web/API/StyleSheet) to Kotlin\n */\npublic external abstract class StyleSheet {\n open val type: String\n open val href: String?\n open val ownerNode: UnionElementOrProcessingInstruction?\n open val parentStyleSheet: StyleSheet?\n open val title: String?\n open val media: MediaList\n open var disabled: Boolean\n}\n\n/**\n * Exposes the JavaScript [CSSStyleSheet](https://developer.mozilla.org/en/docs/Web/API/CSSStyleSheet) to Kotlin\n */\npublic external abstract class CSSStyleSheet : StyleSheet {\n open val ownerRule: CSSRule?\n open val cssRules: CSSRuleList\n fun insertRule(rule: String, index: Int): Int\n fun deleteRule(index: Int)\n}\n\n/**\n * Exposes the JavaScript [StyleSheetList](https://developer.mozilla.org/en/docs/Web/API/StyleSheetList) to Kotlin\n */\npublic external abstract class StyleSheetList : ItemArrayLike {\n override fun item(index: Int): StyleSheet?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun StyleSheetList.get(index: Int): StyleSheet? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [LinkStyle](https://developer.mozilla.org/en/docs/Web/API/LinkStyle) to Kotlin\n */\npublic external interface LinkStyle {\n val sheet: StyleSheet?\n get() = definedExternally\n}\n\n/**\n * Exposes the JavaScript [CSSRuleList](https://developer.mozilla.org/en/docs/Web/API/CSSRuleList) to Kotlin\n */\npublic external abstract class CSSRuleList : ItemArrayLike {\n override fun item(index: Int): CSSRule?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun CSSRuleList.get(index: Int): CSSRule? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [CSSRule](https://developer.mozilla.org/en/docs/Web/API/CSSRule) to Kotlin\n */\npublic external abstract class CSSRule {\n open val type: Short\n open var cssText: String\n open val parentRule: CSSRule?\n open val parentStyleSheet: CSSStyleSheet?\n\n companion object {\n val STYLE_RULE: Short\n val CHARSET_RULE: Short\n val IMPORT_RULE: Short\n val MEDIA_RULE: Short\n val FONT_FACE_RULE: Short\n val PAGE_RULE: Short\n val MARGIN_RULE: Short\n val NAMESPACE_RULE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [CSSStyleRule](https://developer.mozilla.org/en/docs/Web/API/CSSStyleRule) to Kotlin\n */\npublic external abstract class CSSStyleRule : CSSRule {\n open var selectorText: String\n open val style: CSSStyleDeclaration\n\n companion object {\n val STYLE_RULE: Short\n val CHARSET_RULE: Short\n val IMPORT_RULE: Short\n val MEDIA_RULE: Short\n val FONT_FACE_RULE: Short\n val PAGE_RULE: Short\n val MARGIN_RULE: Short\n val NAMESPACE_RULE: Short\n }\n}\n\npublic external abstract class CSSImportRule : CSSRule {\n open val href: String\n open val media: MediaList\n open val styleSheet: CSSStyleSheet\n\n companion object {\n val STYLE_RULE: Short\n val CHARSET_RULE: Short\n val IMPORT_RULE: Short\n val MEDIA_RULE: Short\n val FONT_FACE_RULE: Short\n val PAGE_RULE: Short\n val MARGIN_RULE: Short\n val NAMESPACE_RULE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [CSSGroupingRule](https://developer.mozilla.org/en/docs/Web/API/CSSGroupingRule) to Kotlin\n */\npublic external abstract class CSSGroupingRule : CSSRule {\n open val cssRules: CSSRuleList\n fun insertRule(rule: String, index: Int): Int\n fun deleteRule(index: Int)\n\n companion object {\n val STYLE_RULE: Short\n val CHARSET_RULE: Short\n val IMPORT_RULE: Short\n val MEDIA_RULE: Short\n val FONT_FACE_RULE: Short\n val PAGE_RULE: Short\n val MARGIN_RULE: Short\n val NAMESPACE_RULE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [CSSMediaRule](https://developer.mozilla.org/en/docs/Web/API/CSSMediaRule) to Kotlin\n */\npublic external abstract class CSSMediaRule : CSSGroupingRule {\n open val media: MediaList\n\n companion object {\n val STYLE_RULE: Short\n val CHARSET_RULE: Short\n val IMPORT_RULE: Short\n val MEDIA_RULE: Short\n val FONT_FACE_RULE: Short\n val PAGE_RULE: Short\n val MARGIN_RULE: Short\n val NAMESPACE_RULE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [CSSPageRule](https://developer.mozilla.org/en/docs/Web/API/CSSPageRule) to Kotlin\n */\npublic external abstract class CSSPageRule : CSSGroupingRule {\n open var selectorText: String\n open val style: CSSStyleDeclaration\n\n companion object {\n val STYLE_RULE: Short\n val CHARSET_RULE: Short\n val IMPORT_RULE: Short\n val MEDIA_RULE: Short\n val FONT_FACE_RULE: Short\n val PAGE_RULE: Short\n val MARGIN_RULE: Short\n val NAMESPACE_RULE: Short\n }\n}\n\npublic external abstract class CSSMarginRule : CSSRule {\n open val name: String\n open val style: CSSStyleDeclaration\n\n companion object {\n val STYLE_RULE: Short\n val CHARSET_RULE: Short\n val IMPORT_RULE: Short\n val MEDIA_RULE: Short\n val FONT_FACE_RULE: Short\n val PAGE_RULE: Short\n val MARGIN_RULE: Short\n val NAMESPACE_RULE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [CSSNamespaceRule](https://developer.mozilla.org/en/docs/Web/API/CSSNamespaceRule) to Kotlin\n */\npublic external abstract class CSSNamespaceRule : CSSRule {\n open val namespaceURI: String\n open val prefix: String\n\n companion object {\n val STYLE_RULE: Short\n val CHARSET_RULE: Short\n val IMPORT_RULE: Short\n val MEDIA_RULE: Short\n val FONT_FACE_RULE: Short\n val PAGE_RULE: Short\n val MARGIN_RULE: Short\n val NAMESPACE_RULE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [CSSStyleDeclaration](https://developer.mozilla.org/en/docs/Web/API/CSSStyleDeclaration) to Kotlin\n */\npublic external abstract class CSSStyleDeclaration : ItemArrayLike {\n open var cssText: String\n open val parentRule: CSSRule?\n open var cssFloat: String\n open var alignContent: String\n open var alignItems: String\n open var alignSelf: String\n open var animation: String\n open var animationDelay: String\n open var animationDirection: String\n open var animationDuration: String\n open var animationFillMode: String\n open var animationIterationCount: String\n open var animationName: String\n open var animationPlayState: String\n open var animationTimingFunction: String\n open var backfaceVisibility: String\n open var background: String\n open var backgroundAttachment: String\n open var backgroundClip: String\n open var backgroundColor: String\n open var backgroundImage: String\n open var backgroundOrigin: String\n open var backgroundPosition: String\n open var backgroundRepeat: String\n open var backgroundSize: String\n open var border: String\n open var borderBottom: String\n open var borderBottomColor: String\n open var borderBottomLeftRadius: String\n open var borderBottomRightRadius: String\n open var borderBottomStyle: String\n open var borderBottomWidth: String\n open var borderCollapse: String\n open var borderColor: String\n open var borderImage: String\n open var borderImageOutset: String\n open var borderImageRepeat: String\n open var borderImageSlice: String\n open var borderImageSource: String\n open var borderImageWidth: String\n open var borderLeft: String\n open var borderLeftColor: String\n open var borderLeftStyle: String\n open var borderLeftWidth: String\n open var borderRadius: String\n open var borderRight: String\n open var borderRightColor: String\n open var borderRightStyle: String\n open var borderRightWidth: String\n open var borderSpacing: String\n open var borderStyle: String\n open var borderTop: String\n open var borderTopColor: String\n open var borderTopLeftRadius: String\n open var borderTopRightRadius: String\n open var borderTopStyle: String\n open var borderTopWidth: String\n open var borderWidth: String\n open var bottom: String\n open var boxDecorationBreak: String\n open var boxShadow: String\n open var boxSizing: String\n open var breakAfter: String\n open var breakBefore: String\n open var breakInside: String\n open var captionSide: String\n open var clear: String\n open var clip: String\n open var color: String\n open var columnCount: String\n open var columnFill: String\n open var columnGap: String\n open var columnRule: String\n open var columnRuleColor: String\n open var columnRuleStyle: String\n open var columnRuleWidth: String\n open var columnSpan: String\n open var columnWidth: String\n open var columns: String\n open var content: String\n open var counterIncrement: String\n open var counterReset: String\n open var cursor: String\n open var direction: String\n open var display: String\n open var emptyCells: String\n open var filter: String\n open var flex: String\n open var flexBasis: String\n open var flexDirection: String\n open var flexFlow: String\n open var flexGrow: String\n open var flexShrink: String\n open var flexWrap: String\n open var font: String\n open var fontFamily: String\n open var fontFeatureSettings: String\n open var fontKerning: String\n open var fontLanguageOverride: String\n open var fontSize: String\n open var fontSizeAdjust: String\n open var fontStretch: String\n open var fontStyle: String\n open var fontSynthesis: String\n open var fontVariant: String\n open var fontVariantAlternates: String\n open var fontVariantCaps: String\n open var fontVariantEastAsian: String\n open var fontVariantLigatures: String\n open var fontVariantNumeric: String\n open var fontVariantPosition: String\n open var fontWeight: String\n open var hangingPunctuation: String\n open var height: String\n open var hyphens: String\n open var imageOrientation: String\n open var imageRendering: String\n open var imageResolution: String\n open var imeMode: String\n open var justifyContent: String\n open var left: String\n open var letterSpacing: String\n open var lineBreak: String\n open var lineHeight: String\n open var listStyle: String\n open var listStyleImage: String\n open var listStylePosition: String\n open var listStyleType: String\n open var margin: String\n open var marginBottom: String\n open var marginLeft: String\n open var marginRight: String\n open var marginTop: String\n open var mark: String\n open var markAfter: String\n open var markBefore: String\n open var marks: String\n open var marqueeDirection: String\n open var marqueePlayCount: String\n open var marqueeSpeed: String\n open var marqueeStyle: String\n open var mask: String\n open var maskType: String\n open var maxHeight: String\n open var maxWidth: String\n open var minHeight: String\n open var minWidth: String\n open var navDown: String\n open var navIndex: String\n open var navLeft: String\n open var navRight: String\n open var navUp: String\n open var objectFit: String\n open var objectPosition: String\n open var opacity: String\n open var order: String\n open var orphans: String\n open var outline: String\n open var outlineColor: String\n open var outlineOffset: String\n open var outlineStyle: String\n open var outlineWidth: String\n open var overflowWrap: String\n open var overflowX: String\n open var overflowY: String\n open var padding: String\n open var paddingBottom: String\n open var paddingLeft: String\n open var paddingRight: String\n open var paddingTop: String\n open var pageBreakAfter: String\n open var pageBreakBefore: String\n open var pageBreakInside: String\n open var perspective: String\n open var perspectiveOrigin: String\n open var phonemes: String\n open var position: String\n open var quotes: String\n open var resize: String\n open var rest: String\n open var restAfter: String\n open var restBefore: String\n open var right: String\n open var tabSize: String\n open var tableLayout: String\n open var textAlign: String\n open var textAlignLast: String\n open var textCombineUpright: String\n open var textDecoration: String\n open var textDecorationColor: String\n open var textDecorationLine: String\n open var textDecorationStyle: String\n open var textIndent: String\n open var textJustify: String\n open var textOrientation: String\n open var textOverflow: String\n open var textShadow: String\n open var textTransform: String\n open var textUnderlinePosition: String\n open var top: String\n open var transform: String\n open var transformOrigin: String\n open var transformStyle: String\n open var transition: String\n open var transitionDelay: String\n open var transitionDuration: String\n open var transitionProperty: String\n open var transitionTimingFunction: String\n open var unicodeBidi: String\n open var verticalAlign: String\n open var visibility: String\n open var voiceBalance: String\n open var voiceDuration: String\n open var voicePitch: String\n open var voicePitchRange: String\n open var voiceRate: String\n open var voiceStress: String\n open var voiceVolume: String\n open var whiteSpace: String\n open var widows: String\n open var width: String\n open var wordBreak: String\n open var wordSpacing: String\n open var wordWrap: String\n open var writingMode: String\n open var zIndex: String\n open var _dashed_attribute: String\n open var _camel_cased_attribute: String\n open var _webkit_cased_attribute: String\n fun getPropertyValue(property: String): String\n fun getPropertyPriority(property: String): String\n fun setProperty(property: String, value: String, priority: String = definedExternally)\n fun setPropertyValue(property: String, value: String)\n fun setPropertyPriority(property: String, priority: String)\n fun removeProperty(property: String): String\n override fun item(index: Int): String\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun CSSStyleDeclaration.get(index: Int): String? = asDynamic()[index]\n\npublic external interface ElementCSSInlineStyle {\n val style: CSSStyleDeclaration\n}\n\n/**\n * Exposes the JavaScript [CSS](https://developer.mozilla.org/en/docs/Web/API/CSS) to Kotlin\n */\npublic external abstract class CSS {\n companion object {\n fun escape(ident: String): String\n }\n}\n\npublic external interface UnionElementOrProcessingInstruction","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See github.com/kotlin/dukat for details\n\npackage org.w3c.dom.events\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\n/**\n * Exposes the JavaScript [UIEvent](https://developer.mozilla.org/en/docs/Web/API/UIEvent) to Kotlin\n */\npublic external open class UIEvent(type: String, eventInitDict: UIEventInit = definedExternally) : Event {\n open val view: Window?\n open val detail: Int\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface UIEventInit : EventInit {\n var view: Window? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var detail: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun UIEventInit(view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): UIEventInit {\n val o = js(\"({})\")\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [FocusEvent](https://developer.mozilla.org/en/docs/Web/API/FocusEvent) to Kotlin\n */\npublic external open class FocusEvent(type: String, eventInitDict: FocusEventInit = definedExternally) : UIEvent {\n open val relatedTarget: EventTarget?\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface FocusEventInit : UIEventInit {\n var relatedTarget: EventTarget? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun FocusEventInit(relatedTarget: EventTarget? = null, view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): FocusEventInit {\n val o = js(\"({})\")\n o[\"relatedTarget\"] = relatedTarget\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [MouseEvent](https://developer.mozilla.org/en/docs/Web/API/MouseEvent) to Kotlin\n */\npublic external open class MouseEvent(type: String, eventInitDict: MouseEventInit = definedExternally) : UIEvent, UnionElementOrMouseEvent {\n open val screenX: Int\n open val screenY: Int\n open val clientX: Int\n open val clientY: Int\n open val ctrlKey: Boolean\n open val shiftKey: Boolean\n open val altKey: Boolean\n open val metaKey: Boolean\n open val button: Short\n open val buttons: Short\n open val relatedTarget: EventTarget?\n open val region: String?\n open val pageX: Double\n open val pageY: Double\n open val x: Double\n open val y: Double\n open val offsetX: Double\n open val offsetY: Double\n fun getModifierState(keyArg: String): Boolean\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface MouseEventInit : EventModifierInit {\n var screenX: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var screenY: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var clientX: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var clientY: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var button: Short? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var buttons: Short? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var relatedTarget: EventTarget? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var region: String? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MouseEventInit(screenX: Int? = 0, screenY: Int? = 0, clientX: Int? = 0, clientY: Int? = 0, button: Short? = 0, buttons: Short? = 0, relatedTarget: EventTarget? = null, region: String? = null, ctrlKey: Boolean? = false, shiftKey: Boolean? = false, altKey: Boolean? = false, metaKey: Boolean? = false, modifierAltGraph: Boolean? = false, modifierCapsLock: Boolean? = false, modifierFn: Boolean? = false, modifierFnLock: Boolean? = false, modifierHyper: Boolean? = false, modifierNumLock: Boolean? = false, modifierScrollLock: Boolean? = false, modifierSuper: Boolean? = false, modifierSymbol: Boolean? = false, modifierSymbolLock: Boolean? = false, view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): MouseEventInit {\n val o = js(\"({})\")\n o[\"screenX\"] = screenX\n o[\"screenY\"] = screenY\n o[\"clientX\"] = clientX\n o[\"clientY\"] = clientY\n o[\"button\"] = button\n o[\"buttons\"] = buttons\n o[\"relatedTarget\"] = relatedTarget\n o[\"region\"] = region\n o[\"ctrlKey\"] = ctrlKey\n o[\"shiftKey\"] = shiftKey\n o[\"altKey\"] = altKey\n o[\"metaKey\"] = metaKey\n o[\"modifierAltGraph\"] = modifierAltGraph\n o[\"modifierCapsLock\"] = modifierCapsLock\n o[\"modifierFn\"] = modifierFn\n o[\"modifierFnLock\"] = modifierFnLock\n o[\"modifierHyper\"] = modifierHyper\n o[\"modifierNumLock\"] = modifierNumLock\n o[\"modifierScrollLock\"] = modifierScrollLock\n o[\"modifierSuper\"] = modifierSuper\n o[\"modifierSymbol\"] = modifierSymbol\n o[\"modifierSymbolLock\"] = modifierSymbolLock\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\npublic external interface EventModifierInit : UIEventInit {\n var ctrlKey: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var shiftKey: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var altKey: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var metaKey: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierAltGraph: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierCapsLock: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierFn: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierFnLock: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierHyper: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierNumLock: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierScrollLock: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierSuper: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierSymbol: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var modifierSymbolLock: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun EventModifierInit(ctrlKey: Boolean? = false, shiftKey: Boolean? = false, altKey: Boolean? = false, metaKey: Boolean? = false, modifierAltGraph: Boolean? = false, modifierCapsLock: Boolean? = false, modifierFn: Boolean? = false, modifierFnLock: Boolean? = false, modifierHyper: Boolean? = false, modifierNumLock: Boolean? = false, modifierScrollLock: Boolean? = false, modifierSuper: Boolean? = false, modifierSymbol: Boolean? = false, modifierSymbolLock: Boolean? = false, view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): EventModifierInit {\n val o = js(\"({})\")\n o[\"ctrlKey\"] = ctrlKey\n o[\"shiftKey\"] = shiftKey\n o[\"altKey\"] = altKey\n o[\"metaKey\"] = metaKey\n o[\"modifierAltGraph\"] = modifierAltGraph\n o[\"modifierCapsLock\"] = modifierCapsLock\n o[\"modifierFn\"] = modifierFn\n o[\"modifierFnLock\"] = modifierFnLock\n o[\"modifierHyper\"] = modifierHyper\n o[\"modifierNumLock\"] = modifierNumLock\n o[\"modifierScrollLock\"] = modifierScrollLock\n o[\"modifierSuper\"] = modifierSuper\n o[\"modifierSymbol\"] = modifierSymbol\n o[\"modifierSymbolLock\"] = modifierSymbolLock\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [WheelEvent](https://developer.mozilla.org/en/docs/Web/API/WheelEvent) to Kotlin\n */\npublic external open class WheelEvent(type: String, eventInitDict: WheelEventInit = definedExternally) : MouseEvent {\n open val deltaX: Double\n open val deltaY: Double\n open val deltaZ: Double\n open val deltaMode: Int\n\n companion object {\n val DOM_DELTA_PIXEL: Int\n val DOM_DELTA_LINE: Int\n val DOM_DELTA_PAGE: Int\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface WheelEventInit : MouseEventInit {\n var deltaX: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var deltaY: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var deltaZ: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var deltaMode: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun WheelEventInit(deltaX: Double? = 0.0, deltaY: Double? = 0.0, deltaZ: Double? = 0.0, deltaMode: Int? = 0, screenX: Int? = 0, screenY: Int? = 0, clientX: Int? = 0, clientY: Int? = 0, button: Short? = 0, buttons: Short? = 0, relatedTarget: EventTarget? = null, region: String? = null, ctrlKey: Boolean? = false, shiftKey: Boolean? = false, altKey: Boolean? = false, metaKey: Boolean? = false, modifierAltGraph: Boolean? = false, modifierCapsLock: Boolean? = false, modifierFn: Boolean? = false, modifierFnLock: Boolean? = false, modifierHyper: Boolean? = false, modifierNumLock: Boolean? = false, modifierScrollLock: Boolean? = false, modifierSuper: Boolean? = false, modifierSymbol: Boolean? = false, modifierSymbolLock: Boolean? = false, view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): WheelEventInit {\n val o = js(\"({})\")\n o[\"deltaX\"] = deltaX\n o[\"deltaY\"] = deltaY\n o[\"deltaZ\"] = deltaZ\n o[\"deltaMode\"] = deltaMode\n o[\"screenX\"] = screenX\n o[\"screenY\"] = screenY\n o[\"clientX\"] = clientX\n o[\"clientY\"] = clientY\n o[\"button\"] = button\n o[\"buttons\"] = buttons\n o[\"relatedTarget\"] = relatedTarget\n o[\"region\"] = region\n o[\"ctrlKey\"] = ctrlKey\n o[\"shiftKey\"] = shiftKey\n o[\"altKey\"] = altKey\n o[\"metaKey\"] = metaKey\n o[\"modifierAltGraph\"] = modifierAltGraph\n o[\"modifierCapsLock\"] = modifierCapsLock\n o[\"modifierFn\"] = modifierFn\n o[\"modifierFnLock\"] = modifierFnLock\n o[\"modifierHyper\"] = modifierHyper\n o[\"modifierNumLock\"] = modifierNumLock\n o[\"modifierScrollLock\"] = modifierScrollLock\n o[\"modifierSuper\"] = modifierSuper\n o[\"modifierSymbol\"] = modifierSymbol\n o[\"modifierSymbolLock\"] = modifierSymbolLock\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [InputEvent](https://developer.mozilla.org/en/docs/Web/API/InputEvent) to Kotlin\n */\npublic external open class InputEvent(type: String, eventInitDict: InputEventInit = definedExternally) : UIEvent {\n open val data: String\n open val isComposing: Boolean\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface InputEventInit : UIEventInit {\n var data: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var isComposing: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun InputEventInit(data: String? = \"\", isComposing: Boolean? = false, view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): InputEventInit {\n val o = js(\"({})\")\n o[\"data\"] = data\n o[\"isComposing\"] = isComposing\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [KeyboardEvent](https://developer.mozilla.org/en/docs/Web/API/KeyboardEvent) to Kotlin\n */\npublic external open class KeyboardEvent(type: String, eventInitDict: KeyboardEventInit = definedExternally) : UIEvent {\n open val key: String\n open val code: String\n open val location: Int\n open val ctrlKey: Boolean\n open val shiftKey: Boolean\n open val altKey: Boolean\n open val metaKey: Boolean\n open val repeat: Boolean\n open val isComposing: Boolean\n open val charCode: Int\n open val keyCode: Int\n open val which: Int\n fun getModifierState(keyArg: String): Boolean\n\n companion object {\n val DOM_KEY_LOCATION_STANDARD: Int\n val DOM_KEY_LOCATION_LEFT: Int\n val DOM_KEY_LOCATION_RIGHT: Int\n val DOM_KEY_LOCATION_NUMPAD: Int\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface KeyboardEventInit : EventModifierInit {\n var key: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var code: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var location: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var repeat: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var isComposing: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun KeyboardEventInit(key: String? = \"\", code: String? = \"\", location: Int? = 0, repeat: Boolean? = false, isComposing: Boolean? = false, ctrlKey: Boolean? = false, shiftKey: Boolean? = false, altKey: Boolean? = false, metaKey: Boolean? = false, modifierAltGraph: Boolean? = false, modifierCapsLock: Boolean? = false, modifierFn: Boolean? = false, modifierFnLock: Boolean? = false, modifierHyper: Boolean? = false, modifierNumLock: Boolean? = false, modifierScrollLock: Boolean? = false, modifierSuper: Boolean? = false, modifierSymbol: Boolean? = false, modifierSymbolLock: Boolean? = false, view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): KeyboardEventInit {\n val o = js(\"({})\")\n o[\"key\"] = key\n o[\"code\"] = code\n o[\"location\"] = location\n o[\"repeat\"] = repeat\n o[\"isComposing\"] = isComposing\n o[\"ctrlKey\"] = ctrlKey\n o[\"shiftKey\"] = shiftKey\n o[\"altKey\"] = altKey\n o[\"metaKey\"] = metaKey\n o[\"modifierAltGraph\"] = modifierAltGraph\n o[\"modifierCapsLock\"] = modifierCapsLock\n o[\"modifierFn\"] = modifierFn\n o[\"modifierFnLock\"] = modifierFnLock\n o[\"modifierHyper\"] = modifierHyper\n o[\"modifierNumLock\"] = modifierNumLock\n o[\"modifierScrollLock\"] = modifierScrollLock\n o[\"modifierSuper\"] = modifierSuper\n o[\"modifierSymbol\"] = modifierSymbol\n o[\"modifierSymbolLock\"] = modifierSymbolLock\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [CompositionEvent](https://developer.mozilla.org/en/docs/Web/API/CompositionEvent) to Kotlin\n */\npublic external open class CompositionEvent(type: String, eventInitDict: CompositionEventInit = definedExternally) : UIEvent {\n open val data: String\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface CompositionEventInit : UIEventInit {\n var data: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun CompositionEventInit(data: String? = \"\", view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): CompositionEventInit {\n val o = js(\"({})\")\n o[\"data\"] = data\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [Event](https://developer.mozilla.org/en/docs/Web/API/Event) to Kotlin\n */\npublic external open class Event(type: String, eventInitDict: EventInit = definedExternally) {\n open val type: String\n open val target: EventTarget?\n open val currentTarget: EventTarget?\n open val eventPhase: Short\n open val bubbles: Boolean\n open val cancelable: Boolean\n open val defaultPrevented: Boolean\n open val composed: Boolean\n open val isTrusted: Boolean\n open val timeStamp: Number\n fun composedPath(): Array\n fun stopPropagation()\n fun stopImmediatePropagation()\n fun preventDefault()\n fun initEvent(type: String, bubbles: Boolean, cancelable: Boolean)\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [EventTarget](https://developer.mozilla.org/en/docs/Web/API/EventTarget) to Kotlin\n */\npublic external abstract class EventTarget {\n fun addEventListener(type: String, callback: EventListener?, options: dynamic = definedExternally)\n fun addEventListener(type: String, callback: ((Event) -> Unit)?, options: dynamic = definedExternally)\n fun removeEventListener(type: String, callback: EventListener?, options: dynamic = definedExternally)\n fun removeEventListener(type: String, callback: ((Event) -> Unit)?, options: dynamic = definedExternally)\n fun dispatchEvent(event: Event): Boolean\n}\n\n/**\n * Exposes the JavaScript [EventListener](https://developer.mozilla.org/en/docs/Web/API/EventListener) to Kotlin\n */\npublic external interface EventListener {\n fun handleEvent(event: Event)\n}","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See github.com/kotlin/dukat for details\n\npackage org.w3c.dom\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\npublic external abstract class HTMLAllCollection {\n open val length: Int\n fun item(nameOrIndex: String = definedExternally): UnionElementOrHTMLCollection?\n fun namedItem(name: String): UnionElementOrHTMLCollection?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun HTMLAllCollection.get(index: Int): Element? = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun HTMLAllCollection.get(name: String): UnionElementOrHTMLCollection? = asDynamic()[name]\n\n/**\n * Exposes the JavaScript [HTMLFormControlsCollection](https://developer.mozilla.org/en/docs/Web/API/HTMLFormControlsCollection) to Kotlin\n */\npublic external abstract class HTMLFormControlsCollection : HTMLCollection\n\n/**\n * Exposes the JavaScript [RadioNodeList](https://developer.mozilla.org/en/docs/Web/API/RadioNodeList) to Kotlin\n */\npublic external abstract class RadioNodeList : NodeList, UnionElementOrRadioNodeList {\n open var value: String\n}\n\n/**\n * Exposes the JavaScript [HTMLOptionsCollection](https://developer.mozilla.org/en/docs/Web/API/HTMLOptionsCollection) to Kotlin\n */\npublic external abstract class HTMLOptionsCollection : HTMLCollection {\n override var length: Int\n open var selectedIndex: Int\n fun add(element: UnionHTMLOptGroupElementOrHTMLOptionElement, before: dynamic = definedExternally)\n fun remove(index: Int)\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun HTMLOptionsCollection.set(index: Int, option: HTMLOptionElement?) { asDynamic()[index] = option }\n\n/**\n * Exposes the JavaScript [HTMLElement](https://developer.mozilla.org/en/docs/Web/API/HTMLElement) to Kotlin\n */\npublic external abstract class HTMLElement : Element, GlobalEventHandlers, DocumentAndElementEventHandlers, ElementContentEditable, ElementCSSInlineStyle {\n open var title: String\n open var lang: String\n open var translate: Boolean\n open var dir: String\n open val dataset: DOMStringMap\n open var hidden: Boolean\n open var tabIndex: Int\n open var accessKey: String\n open val accessKeyLabel: String\n open var draggable: Boolean\n open val dropzone: DOMTokenList\n open var contextMenu: HTMLMenuElement?\n open var spellcheck: Boolean\n open var innerText: String\n open val offsetParent: Element?\n open val offsetTop: Int\n open val offsetLeft: Int\n open val offsetWidth: Int\n open val offsetHeight: Int\n fun click()\n fun focus()\n fun blur()\n fun forceSpellCheck()\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLUnknownElement](https://developer.mozilla.org/en/docs/Web/API/HTMLUnknownElement) to Kotlin\n */\npublic external abstract class HTMLUnknownElement : HTMLElement {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [DOMStringMap](https://developer.mozilla.org/en/docs/Web/API/DOMStringMap) to Kotlin\n */\npublic external abstract class DOMStringMap\n\n@kotlin.internal.InlineOnly\npublic inline operator fun DOMStringMap.get(name: String): String? = asDynamic()[name]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun DOMStringMap.set(name: String, value: String) { asDynamic()[name] = value }\n\n/**\n * Exposes the JavaScript [HTMLHtmlElement](https://developer.mozilla.org/en/docs/Web/API/HTMLHtmlElement) to Kotlin\n */\npublic external abstract class HTMLHtmlElement : HTMLElement {\n open var version: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLHeadElement](https://developer.mozilla.org/en/docs/Web/API/HTMLHeadElement) to Kotlin\n */\npublic external abstract class HTMLHeadElement : HTMLElement {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLTitleElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTitleElement) to Kotlin\n */\npublic external abstract class HTMLTitleElement : HTMLElement {\n open var text: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLBaseElement](https://developer.mozilla.org/en/docs/Web/API/HTMLBaseElement) to Kotlin\n */\npublic external abstract class HTMLBaseElement : HTMLElement {\n open var href: String\n open var target: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLLinkElement](https://developer.mozilla.org/en/docs/Web/API/HTMLLinkElement) to Kotlin\n */\npublic external abstract class HTMLLinkElement : HTMLElement, LinkStyle {\n open var href: String\n open var crossOrigin: String?\n open var rel: String\n open var `as`: RequestDestination\n open val relList: DOMTokenList\n open var media: String\n open var nonce: String\n open var hreflang: String\n open var type: String\n open val sizes: DOMTokenList\n open var referrerPolicy: String\n open var charset: String\n open var rev: String\n open var target: String\n open var scope: String\n open var workerType: WorkerType\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLMetaElement](https://developer.mozilla.org/en/docs/Web/API/HTMLMetaElement) to Kotlin\n */\npublic external abstract class HTMLMetaElement : HTMLElement {\n open var name: String\n open var httpEquiv: String\n open var content: String\n open var scheme: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLStyleElement](https://developer.mozilla.org/en/docs/Web/API/HTMLStyleElement) to Kotlin\n */\npublic external abstract class HTMLStyleElement : HTMLElement, LinkStyle {\n open var media: String\n open var nonce: String\n open var type: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLBodyElement](https://developer.mozilla.org/en/docs/Web/API/HTMLBodyElement) to Kotlin\n */\npublic external abstract class HTMLBodyElement : HTMLElement, WindowEventHandlers {\n open var text: String\n open var link: String\n open var vLink: String\n open var aLink: String\n open var bgColor: String\n open var background: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLHeadingElement](https://developer.mozilla.org/en/docs/Web/API/HTMLHeadingElement) to Kotlin\n */\npublic external abstract class HTMLHeadingElement : HTMLElement {\n open var align: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLParagraphElement](https://developer.mozilla.org/en/docs/Web/API/HTMLParagraphElement) to Kotlin\n */\npublic external abstract class HTMLParagraphElement : HTMLElement {\n open var align: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLHRElement](https://developer.mozilla.org/en/docs/Web/API/HTMLHRElement) to Kotlin\n */\npublic external abstract class HTMLHRElement : HTMLElement {\n open var align: String\n open var color: String\n open var noShade: Boolean\n open var size: String\n open var width: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLPreElement](https://developer.mozilla.org/en/docs/Web/API/HTMLPreElement) to Kotlin\n */\npublic external abstract class HTMLPreElement : HTMLElement {\n open var width: Int\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLQuoteElement](https://developer.mozilla.org/en/docs/Web/API/HTMLQuoteElement) to Kotlin\n */\npublic external abstract class HTMLQuoteElement : HTMLElement {\n open var cite: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLOListElement](https://developer.mozilla.org/en/docs/Web/API/HTMLOListElement) to Kotlin\n */\npublic external abstract class HTMLOListElement : HTMLElement {\n open var reversed: Boolean\n open var start: Int\n open var type: String\n open var compact: Boolean\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLUListElement](https://developer.mozilla.org/en/docs/Web/API/HTMLUListElement) to Kotlin\n */\npublic external abstract class HTMLUListElement : HTMLElement {\n open var compact: Boolean\n open var type: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLLIElement](https://developer.mozilla.org/en/docs/Web/API/HTMLLIElement) to Kotlin\n */\npublic external abstract class HTMLLIElement : HTMLElement {\n open var value: Int\n open var type: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLDListElement](https://developer.mozilla.org/en/docs/Web/API/HTMLDListElement) to Kotlin\n */\npublic external abstract class HTMLDListElement : HTMLElement {\n open var compact: Boolean\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLDivElement](https://developer.mozilla.org/en/docs/Web/API/HTMLDivElement) to Kotlin\n */\npublic external abstract class HTMLDivElement : HTMLElement {\n open var align: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLAnchorElement](https://developer.mozilla.org/en/docs/Web/API/HTMLAnchorElement) to Kotlin\n */\npublic external abstract class HTMLAnchorElement : HTMLElement, HTMLHyperlinkElementUtils {\n open var target: String\n open var download: String\n open var ping: String\n open var rel: String\n open val relList: DOMTokenList\n open var hreflang: String\n open var type: String\n open var text: String\n open var referrerPolicy: String\n open var coords: String\n open var charset: String\n open var name: String\n open var rev: String\n open var shape: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLDataElement](https://developer.mozilla.org/en/docs/Web/API/HTMLDataElement) to Kotlin\n */\npublic external abstract class HTMLDataElement : HTMLElement {\n open var value: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLTimeElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTimeElement) to Kotlin\n */\npublic external abstract class HTMLTimeElement : HTMLElement {\n open var dateTime: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLSpanElement](https://developer.mozilla.org/en/docs/Web/API/HTMLSpanElement) to Kotlin\n */\npublic external abstract class HTMLSpanElement : HTMLElement {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLBRElement](https://developer.mozilla.org/en/docs/Web/API/HTMLBRElement) to Kotlin\n */\npublic external abstract class HTMLBRElement : HTMLElement {\n open var clear: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLHyperlinkElementUtils](https://developer.mozilla.org/en/docs/Web/API/HTMLHyperlinkElementUtils) to Kotlin\n */\npublic external interface HTMLHyperlinkElementUtils {\n var href: String\n val origin: String\n var protocol: String\n var username: String\n var password: String\n var host: String\n var hostname: String\n var port: String\n var pathname: String\n var search: String\n var hash: String\n}\n\n/**\n * Exposes the JavaScript [HTMLModElement](https://developer.mozilla.org/en/docs/Web/API/HTMLModElement) to Kotlin\n */\npublic external abstract class HTMLModElement : HTMLElement {\n open var cite: String\n open var dateTime: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLPictureElement](https://developer.mozilla.org/en/docs/Web/API/HTMLPictureElement) to Kotlin\n */\npublic external abstract class HTMLPictureElement : HTMLElement {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLSourceElement](https://developer.mozilla.org/en/docs/Web/API/HTMLSourceElement) to Kotlin\n */\npublic external abstract class HTMLSourceElement : HTMLElement {\n open var src: String\n open var type: String\n open var srcset: String\n open var sizes: String\n open var media: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLImageElement](https://developer.mozilla.org/en/docs/Web/API/HTMLImageElement) to Kotlin\n */\npublic external abstract class HTMLImageElement : HTMLElement, HTMLOrSVGImageElement, TexImageSource {\n open var alt: String\n open var src: String\n open var srcset: String\n open var sizes: String\n open var crossOrigin: String?\n open var useMap: String\n open var isMap: Boolean\n open var width: Int\n open var height: Int\n open val naturalWidth: Int\n open val naturalHeight: Int\n open val complete: Boolean\n open val currentSrc: String\n open var referrerPolicy: String\n open var name: String\n open var lowsrc: String\n open var align: String\n open var hspace: Int\n open var vspace: Int\n open var longDesc: String\n open var border: String\n open val x: Int\n open val y: Int\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLIFrameElement](https://developer.mozilla.org/en/docs/Web/API/HTMLIFrameElement) to Kotlin\n */\npublic external abstract class HTMLIFrameElement : HTMLElement {\n open var src: String\n open var srcdoc: String\n open var name: String\n open val sandbox: DOMTokenList\n open var allowFullscreen: Boolean\n open var allowUserMedia: Boolean\n open var width: String\n open var height: String\n open var referrerPolicy: String\n open val contentDocument: Document?\n open val contentWindow: Window?\n open var align: String\n open var scrolling: String\n open var frameBorder: String\n open var longDesc: String\n open var marginHeight: String\n open var marginWidth: String\n fun getSVGDocument(): Document?\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLEmbedElement](https://developer.mozilla.org/en/docs/Web/API/HTMLEmbedElement) to Kotlin\n */\npublic external abstract class HTMLEmbedElement : HTMLElement {\n open var src: String\n open var type: String\n open var width: String\n open var height: String\n open var align: String\n open var name: String\n fun getSVGDocument(): Document?\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLObjectElement](https://developer.mozilla.org/en/docs/Web/API/HTMLObjectElement) to Kotlin\n */\npublic external abstract class HTMLObjectElement : HTMLElement {\n open var data: String\n open var type: String\n open var typeMustMatch: Boolean\n open var name: String\n open var useMap: String\n open val form: HTMLFormElement?\n open var width: String\n open var height: String\n open val contentDocument: Document?\n open val contentWindow: Window?\n open val willValidate: Boolean\n open val validity: ValidityState\n open val validationMessage: String\n open var align: String\n open var archive: String\n open var code: String\n open var declare: Boolean\n open var hspace: Int\n open var standby: String\n open var vspace: Int\n open var codeBase: String\n open var codeType: String\n open var border: String\n fun getSVGDocument(): Document?\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n fun setCustomValidity(error: String)\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLParamElement](https://developer.mozilla.org/en/docs/Web/API/HTMLParamElement) to Kotlin\n */\npublic external abstract class HTMLParamElement : HTMLElement {\n open var name: String\n open var value: String\n open var type: String\n open var valueType: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLVideoElement](https://developer.mozilla.org/en/docs/Web/API/HTMLVideoElement) to Kotlin\n */\npublic external abstract class HTMLVideoElement : HTMLMediaElement, CanvasImageSource, TexImageSource {\n open var width: Int\n open var height: Int\n open val videoWidth: Int\n open val videoHeight: Int\n open var poster: String\n open var playsInline: Boolean\n\n companion object {\n val NETWORK_EMPTY: Short\n val NETWORK_IDLE: Short\n val NETWORK_LOADING: Short\n val NETWORK_NO_SOURCE: Short\n val HAVE_NOTHING: Short\n val HAVE_METADATA: Short\n val HAVE_CURRENT_DATA: Short\n val HAVE_FUTURE_DATA: Short\n val HAVE_ENOUGH_DATA: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLAudioElement](https://developer.mozilla.org/en/docs/Web/API/HTMLAudioElement) to Kotlin\n */\npublic external abstract class HTMLAudioElement : HTMLMediaElement {\n companion object {\n val NETWORK_EMPTY: Short\n val NETWORK_IDLE: Short\n val NETWORK_LOADING: Short\n val NETWORK_NO_SOURCE: Short\n val HAVE_NOTHING: Short\n val HAVE_METADATA: Short\n val HAVE_CURRENT_DATA: Short\n val HAVE_FUTURE_DATA: Short\n val HAVE_ENOUGH_DATA: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLTrackElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTrackElement) to Kotlin\n */\npublic external abstract class HTMLTrackElement : HTMLElement {\n open var kind: String\n open var src: String\n open var srclang: String\n open var label: String\n open var default: Boolean\n open val readyState: Short\n open val track: TextTrack\n\n companion object {\n val NONE: Short\n val LOADING: Short\n val LOADED: Short\n val ERROR: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLMediaElement](https://developer.mozilla.org/en/docs/Web/API/HTMLMediaElement) to Kotlin\n */\npublic external abstract class HTMLMediaElement : HTMLElement {\n open val error: MediaError?\n open var src: String\n open var srcObject: dynamic\n open val currentSrc: String\n open var crossOrigin: String?\n open val networkState: Short\n open var preload: String\n open val buffered: TimeRanges\n open val readyState: Short\n open val seeking: Boolean\n open var currentTime: Double\n open val duration: Double\n open val paused: Boolean\n open var defaultPlaybackRate: Double\n open var playbackRate: Double\n open val played: TimeRanges\n open val seekable: TimeRanges\n open val ended: Boolean\n open var autoplay: Boolean\n open var loop: Boolean\n open var controls: Boolean\n open var volume: Double\n open var muted: Boolean\n open var defaultMuted: Boolean\n open val audioTracks: AudioTrackList\n open val videoTracks: VideoTrackList\n open val textTracks: TextTrackList\n fun load()\n fun canPlayType(type: String): CanPlayTypeResult\n fun fastSeek(time: Double)\n fun getStartDate(): dynamic\n fun play(): Promise\n fun pause()\n fun addTextTrack(kind: TextTrackKind, label: String = definedExternally, language: String = definedExternally): TextTrack\n\n companion object {\n val NETWORK_EMPTY: Short\n val NETWORK_IDLE: Short\n val NETWORK_LOADING: Short\n val NETWORK_NO_SOURCE: Short\n val HAVE_NOTHING: Short\n val HAVE_METADATA: Short\n val HAVE_CURRENT_DATA: Short\n val HAVE_FUTURE_DATA: Short\n val HAVE_ENOUGH_DATA: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [MediaError](https://developer.mozilla.org/en/docs/Web/API/MediaError) to Kotlin\n */\npublic external abstract class MediaError {\n open val code: Short\n\n companion object {\n val MEDIA_ERR_ABORTED: Short\n val MEDIA_ERR_NETWORK: Short\n val MEDIA_ERR_DECODE: Short\n val MEDIA_ERR_SRC_NOT_SUPPORTED: Short\n }\n}\n\n/**\n * Exposes the JavaScript [AudioTrackList](https://developer.mozilla.org/en/docs/Web/API/AudioTrackList) to Kotlin\n */\npublic external abstract class AudioTrackList : EventTarget {\n open val length: Int\n open var onchange: ((Event) -> dynamic)?\n open var onaddtrack: ((TrackEvent) -> dynamic)?\n open var onremovetrack: ((TrackEvent) -> dynamic)?\n fun getTrackById(id: String): AudioTrack?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun AudioTrackList.get(index: Int): AudioTrack? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [AudioTrack](https://developer.mozilla.org/en/docs/Web/API/AudioTrack) to Kotlin\n */\npublic external abstract class AudioTrack : UnionAudioTrackOrTextTrackOrVideoTrack {\n open val id: String\n open val kind: String\n open val label: String\n open val language: String\n open var enabled: Boolean\n}\n\n/**\n * Exposes the JavaScript [VideoTrackList](https://developer.mozilla.org/en/docs/Web/API/VideoTrackList) to Kotlin\n */\npublic external abstract class VideoTrackList : EventTarget {\n open val length: Int\n open val selectedIndex: Int\n open var onchange: ((Event) -> dynamic)?\n open var onaddtrack: ((TrackEvent) -> dynamic)?\n open var onremovetrack: ((TrackEvent) -> dynamic)?\n fun getTrackById(id: String): VideoTrack?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun VideoTrackList.get(index: Int): VideoTrack? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [VideoTrack](https://developer.mozilla.org/en/docs/Web/API/VideoTrack) to Kotlin\n */\npublic external abstract class VideoTrack : UnionAudioTrackOrTextTrackOrVideoTrack {\n open val id: String\n open val kind: String\n open val label: String\n open val language: String\n open var selected: Boolean\n}\n\npublic external abstract class TextTrackList : EventTarget {\n open val length: Int\n open var onchange: ((Event) -> dynamic)?\n open var onaddtrack: ((TrackEvent) -> dynamic)?\n open var onremovetrack: ((TrackEvent) -> dynamic)?\n fun getTrackById(id: String): TextTrack?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun TextTrackList.get(index: Int): TextTrack? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [TextTrack](https://developer.mozilla.org/en/docs/Web/API/TextTrack) to Kotlin\n */\npublic external abstract class TextTrack : EventTarget, UnionAudioTrackOrTextTrackOrVideoTrack {\n open val kind: TextTrackKind\n open val label: String\n open val language: String\n open val id: String\n open val inBandMetadataTrackDispatchType: String\n open var mode: TextTrackMode\n open val cues: TextTrackCueList?\n open val activeCues: TextTrackCueList?\n open var oncuechange: ((Event) -> dynamic)?\n fun addCue(cue: TextTrackCue)\n fun removeCue(cue: TextTrackCue)\n}\n\npublic external abstract class TextTrackCueList {\n open val length: Int\n fun getCueById(id: String): TextTrackCue?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun TextTrackCueList.get(index: Int): TextTrackCue? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [TextTrackCue](https://developer.mozilla.org/en/docs/Web/API/TextTrackCue) to Kotlin\n */\npublic external abstract class TextTrackCue : EventTarget {\n open val track: TextTrack?\n open var id: String\n open var startTime: Double\n open var endTime: Double\n open var pauseOnExit: Boolean\n open var onenter: ((Event) -> dynamic)?\n open var onexit: ((Event) -> dynamic)?\n}\n\n/**\n * Exposes the JavaScript [TimeRanges](https://developer.mozilla.org/en/docs/Web/API/TimeRanges) to Kotlin\n */\npublic external abstract class TimeRanges {\n open val length: Int\n fun start(index: Int): Double\n fun end(index: Int): Double\n}\n\n/**\n * Exposes the JavaScript [TrackEvent](https://developer.mozilla.org/en/docs/Web/API/TrackEvent) to Kotlin\n */\npublic external open class TrackEvent(type: String, eventInitDict: TrackEventInit = definedExternally) : Event {\n open val track: UnionAudioTrackOrTextTrackOrVideoTrack?\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface TrackEventInit : EventInit {\n var track: UnionAudioTrackOrTextTrackOrVideoTrack? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun TrackEventInit(track: UnionAudioTrackOrTextTrackOrVideoTrack? = null, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): TrackEventInit {\n val o = js(\"({})\")\n o[\"track\"] = track\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [HTMLMapElement](https://developer.mozilla.org/en/docs/Web/API/HTMLMapElement) to Kotlin\n */\npublic external abstract class HTMLMapElement : HTMLElement {\n open var name: String\n open val areas: HTMLCollection\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLAreaElement](https://developer.mozilla.org/en/docs/Web/API/HTMLAreaElement) to Kotlin\n */\npublic external abstract class HTMLAreaElement : HTMLElement, HTMLHyperlinkElementUtils {\n open var alt: String\n open var coords: String\n open var shape: String\n open var target: String\n open var download: String\n open var ping: String\n open var rel: String\n open val relList: DOMTokenList\n open var referrerPolicy: String\n open var noHref: Boolean\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLTableElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTableElement) to Kotlin\n */\npublic external abstract class HTMLTableElement : HTMLElement {\n open var caption: HTMLTableCaptionElement?\n open var tHead: HTMLTableSectionElement?\n open var tFoot: HTMLTableSectionElement?\n open val tBodies: HTMLCollection\n open val rows: HTMLCollection\n open var align: String\n open var border: String\n open var frame: String\n open var rules: String\n open var summary: String\n open var width: String\n open var bgColor: String\n open var cellPadding: String\n open var cellSpacing: String\n fun createCaption(): HTMLTableCaptionElement\n fun deleteCaption()\n fun createTHead(): HTMLTableSectionElement\n fun deleteTHead()\n fun createTFoot(): HTMLTableSectionElement\n fun deleteTFoot()\n fun createTBody(): HTMLTableSectionElement\n fun insertRow(index: Int = definedExternally): HTMLTableRowElement\n fun deleteRow(index: Int)\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLTableCaptionElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTableCaptionElement) to Kotlin\n */\npublic external abstract class HTMLTableCaptionElement : HTMLElement {\n open var align: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLTableColElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTableColElement) to Kotlin\n */\npublic external abstract class HTMLTableColElement : HTMLElement {\n open var span: Int\n open var align: String\n open var ch: String\n open var chOff: String\n open var vAlign: String\n open var width: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLTableSectionElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTableSectionElement) to Kotlin\n */\npublic external abstract class HTMLTableSectionElement : HTMLElement {\n open val rows: HTMLCollection\n open var align: String\n open var ch: String\n open var chOff: String\n open var vAlign: String\n fun insertRow(index: Int = definedExternally): HTMLElement\n fun deleteRow(index: Int)\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLTableRowElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTableRowElement) to Kotlin\n */\npublic external abstract class HTMLTableRowElement : HTMLElement {\n open val rowIndex: Int\n open val sectionRowIndex: Int\n open val cells: HTMLCollection\n open var align: String\n open var ch: String\n open var chOff: String\n open var vAlign: String\n open var bgColor: String\n fun insertCell(index: Int = definedExternally): HTMLElement\n fun deleteCell(index: Int)\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLTableCellElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTableCellElement) to Kotlin\n */\npublic external abstract class HTMLTableCellElement : HTMLElement {\n open var colSpan: Int\n open var rowSpan: Int\n open var headers: String\n open val cellIndex: Int\n open var scope: String\n open var abbr: String\n open var align: String\n open var axis: String\n open var height: String\n open var width: String\n open var ch: String\n open var chOff: String\n open var noWrap: Boolean\n open var vAlign: String\n open var bgColor: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLFormElement](https://developer.mozilla.org/en/docs/Web/API/HTMLFormElement) to Kotlin\n */\npublic external abstract class HTMLFormElement : HTMLElement {\n open var acceptCharset: String\n open var action: String\n open var autocomplete: String\n open var enctype: String\n open var encoding: String\n open var method: String\n open var name: String\n open var noValidate: Boolean\n open var target: String\n open val elements: HTMLFormControlsCollection\n open val length: Int\n fun submit()\n fun reset()\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun HTMLFormElement.get(index: Int): Element? = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun HTMLFormElement.get(name: String): UnionElementOrRadioNodeList? = asDynamic()[name]\n\n/**\n * Exposes the JavaScript [HTMLLabelElement](https://developer.mozilla.org/en/docs/Web/API/HTMLLabelElement) to Kotlin\n */\npublic external abstract class HTMLLabelElement : HTMLElement {\n open val form: HTMLFormElement?\n open var htmlFor: String\n open val control: HTMLElement?\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLInputElement](https://developer.mozilla.org/en/docs/Web/API/HTMLInputElement) to Kotlin\n */\npublic external abstract class HTMLInputElement : HTMLElement {\n open var accept: String\n open var alt: String\n open var autocomplete: String\n open var autofocus: Boolean\n open var defaultChecked: Boolean\n open var checked: Boolean\n open var dirName: String\n open var disabled: Boolean\n open val form: HTMLFormElement?\n open val files: FileList?\n open var formAction: String\n open var formEnctype: String\n open var formMethod: String\n open var formNoValidate: Boolean\n open var formTarget: String\n open var height: Int\n open var indeterminate: Boolean\n open var inputMode: String\n open val list: HTMLElement?\n open var max: String\n open var maxLength: Int\n open var min: String\n open var minLength: Int\n open var multiple: Boolean\n open var name: String\n open var pattern: String\n open var placeholder: String\n open var readOnly: Boolean\n open var required: Boolean\n open var size: Int\n open var src: String\n open var step: String\n open var type: String\n open var defaultValue: String\n open var value: String\n open var valueAsDate: dynamic\n open var valueAsNumber: Double\n open var width: Int\n open val willValidate: Boolean\n open val validity: ValidityState\n open val validationMessage: String\n open val labels: NodeList\n open var selectionStart: Int?\n open var selectionEnd: Int?\n open var selectionDirection: String?\n open var align: String\n open var useMap: String\n fun stepUp(n: Int = definedExternally)\n fun stepDown(n: Int = definedExternally)\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n fun setCustomValidity(error: String)\n fun select()\n fun setRangeText(replacement: String)\n fun setRangeText(replacement: String, start: Int, end: Int, selectionMode: SelectionMode = definedExternally)\n fun setSelectionRange(start: Int, end: Int, direction: String = definedExternally)\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLButtonElement](https://developer.mozilla.org/en/docs/Web/API/HTMLButtonElement) to Kotlin\n */\npublic external abstract class HTMLButtonElement : HTMLElement {\n open var autofocus: Boolean\n open var disabled: Boolean\n open val form: HTMLFormElement?\n open var formAction: String\n open var formEnctype: String\n open var formMethod: String\n open var formNoValidate: Boolean\n open var formTarget: String\n open var name: String\n open var type: String\n open var value: String\n open var menu: HTMLMenuElement?\n open val willValidate: Boolean\n open val validity: ValidityState\n open val validationMessage: String\n open val labels: NodeList\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n fun setCustomValidity(error: String)\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLSelectElement](https://developer.mozilla.org/en/docs/Web/API/HTMLSelectElement) to Kotlin\n */\npublic external abstract class HTMLSelectElement : HTMLElement, ItemArrayLike {\n open var autocomplete: String\n open var autofocus: Boolean\n open var disabled: Boolean\n open val form: HTMLFormElement?\n open var multiple: Boolean\n open var name: String\n open var required: Boolean\n open var size: Int\n open val type: String\n open val options: HTMLOptionsCollection\n override var length: Int\n open val selectedOptions: HTMLCollection\n open var selectedIndex: Int\n open var value: String\n open val willValidate: Boolean\n open val validity: ValidityState\n open val validationMessage: String\n open val labels: NodeList\n fun namedItem(name: String): HTMLOptionElement?\n fun add(element: UnionHTMLOptGroupElementOrHTMLOptionElement, before: dynamic = definedExternally)\n fun remove(index: Int)\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n fun setCustomValidity(error: String)\n override fun item(index: Int): Element?\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun HTMLSelectElement.get(index: Int): Element? = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun HTMLSelectElement.set(index: Int, option: HTMLOptionElement?) { asDynamic()[index] = option }\n\n/**\n * Exposes the JavaScript [HTMLDataListElement](https://developer.mozilla.org/en/docs/Web/API/HTMLDataListElement) to Kotlin\n */\npublic external abstract class HTMLDataListElement : HTMLElement {\n open val options: HTMLCollection\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLOptGroupElement](https://developer.mozilla.org/en/docs/Web/API/HTMLOptGroupElement) to Kotlin\n */\npublic external abstract class HTMLOptGroupElement : HTMLElement, UnionHTMLOptGroupElementOrHTMLOptionElement {\n open var disabled: Boolean\n open var label: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLOptionElement](https://developer.mozilla.org/en/docs/Web/API/HTMLOptionElement) to Kotlin\n */\npublic external abstract class HTMLOptionElement : HTMLElement, UnionHTMLOptGroupElementOrHTMLOptionElement {\n open var disabled: Boolean\n open val form: HTMLFormElement?\n open var label: String\n open var defaultSelected: Boolean\n open var selected: Boolean\n open var value: String\n open var text: String\n open val index: Int\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLTextAreaElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTextAreaElement) to Kotlin\n */\npublic external abstract class HTMLTextAreaElement : HTMLElement {\n open var autocomplete: String\n open var autofocus: Boolean\n open var cols: Int\n open var dirName: String\n open var disabled: Boolean\n open val form: HTMLFormElement?\n open var inputMode: String\n open var maxLength: Int\n open var minLength: Int\n open var name: String\n open var placeholder: String\n open var readOnly: Boolean\n open var required: Boolean\n open var rows: Int\n open var wrap: String\n open val type: String\n open var defaultValue: String\n open var value: String\n open val textLength: Int\n open val willValidate: Boolean\n open val validity: ValidityState\n open val validationMessage: String\n open val labels: NodeList\n open var selectionStart: Int?\n open var selectionEnd: Int?\n open var selectionDirection: String?\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n fun setCustomValidity(error: String)\n fun select()\n fun setRangeText(replacement: String)\n fun setRangeText(replacement: String, start: Int, end: Int, selectionMode: SelectionMode = definedExternally)\n fun setSelectionRange(start: Int, end: Int, direction: String = definedExternally)\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLKeygenElement](https://developer.mozilla.org/en/docs/Web/API/HTMLKeygenElement) to Kotlin\n */\npublic external abstract class HTMLKeygenElement : HTMLElement {\n open var autofocus: Boolean\n open var challenge: String\n open var disabled: Boolean\n open val form: HTMLFormElement?\n open var keytype: String\n open var name: String\n open val type: String\n open val willValidate: Boolean\n open val validity: ValidityState\n open val validationMessage: String\n open val labels: NodeList\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n fun setCustomValidity(error: String)\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLOutputElement](https://developer.mozilla.org/en/docs/Web/API/HTMLOutputElement) to Kotlin\n */\npublic external abstract class HTMLOutputElement : HTMLElement {\n open val htmlFor: DOMTokenList\n open val form: HTMLFormElement?\n open var name: String\n open val type: String\n open var defaultValue: String\n open var value: String\n open val willValidate: Boolean\n open val validity: ValidityState\n open val validationMessage: String\n open val labels: NodeList\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n fun setCustomValidity(error: String)\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLProgressElement](https://developer.mozilla.org/en/docs/Web/API/HTMLProgressElement) to Kotlin\n */\npublic external abstract class HTMLProgressElement : HTMLElement {\n open var value: Double\n open var max: Double\n open val position: Double\n open val labels: NodeList\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLMeterElement](https://developer.mozilla.org/en/docs/Web/API/HTMLMeterElement) to Kotlin\n */\npublic external abstract class HTMLMeterElement : HTMLElement {\n open var value: Double\n open var min: Double\n open var max: Double\n open var low: Double\n open var high: Double\n open var optimum: Double\n open val labels: NodeList\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLFieldSetElement](https://developer.mozilla.org/en/docs/Web/API/HTMLFieldSetElement) to Kotlin\n */\npublic external abstract class HTMLFieldSetElement : HTMLElement {\n open var disabled: Boolean\n open val form: HTMLFormElement?\n open var name: String\n open val type: String\n open val elements: HTMLCollection\n open val willValidate: Boolean\n open val validity: ValidityState\n open val validationMessage: String\n fun checkValidity(): Boolean\n fun reportValidity(): Boolean\n fun setCustomValidity(error: String)\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLLegendElement](https://developer.mozilla.org/en/docs/Web/API/HTMLLegendElement) to Kotlin\n */\npublic external abstract class HTMLLegendElement : HTMLElement {\n open val form: HTMLFormElement?\n open var align: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [ValidityState](https://developer.mozilla.org/en/docs/Web/API/ValidityState) to Kotlin\n */\npublic external abstract class ValidityState {\n open val valueMissing: Boolean\n open val typeMismatch: Boolean\n open val patternMismatch: Boolean\n open val tooLong: Boolean\n open val tooShort: Boolean\n open val rangeUnderflow: Boolean\n open val rangeOverflow: Boolean\n open val stepMismatch: Boolean\n open val badInput: Boolean\n open val customError: Boolean\n open val valid: Boolean\n}\n\n/**\n * Exposes the JavaScript [HTMLDetailsElement](https://developer.mozilla.org/en/docs/Web/API/HTMLDetailsElement) to Kotlin\n */\npublic external abstract class HTMLDetailsElement : HTMLElement {\n open var open: Boolean\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external abstract class HTMLMenuElement : HTMLElement {\n open var type: String\n open var label: String\n open var compact: Boolean\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external abstract class HTMLMenuItemElement : HTMLElement {\n open var type: String\n open var label: String\n open var icon: String\n open var disabled: Boolean\n open var checked: Boolean\n open var radiogroup: String\n open var default: Boolean\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external open class RelatedEvent(type: String, eventInitDict: RelatedEventInit = definedExternally) : Event {\n open val relatedTarget: EventTarget?\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface RelatedEventInit : EventInit {\n var relatedTarget: EventTarget? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun RelatedEventInit(relatedTarget: EventTarget? = null, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): RelatedEventInit {\n val o = js(\"({})\")\n o[\"relatedTarget\"] = relatedTarget\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [HTMLDialogElement](https://developer.mozilla.org/en/docs/Web/API/HTMLDialogElement) to Kotlin\n */\npublic external abstract class HTMLDialogElement : HTMLElement {\n open var open: Boolean\n open var returnValue: String\n fun show(anchor: UnionElementOrMouseEvent = definedExternally)\n fun showModal(anchor: UnionElementOrMouseEvent = definedExternally)\n fun close(returnValue: String = definedExternally)\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLScriptElement](https://developer.mozilla.org/en/docs/Web/API/HTMLScriptElement) to Kotlin\n */\npublic external abstract class HTMLScriptElement : HTMLElement, HTMLOrSVGScriptElement {\n open var src: String\n open var type: String\n open var charset: String\n open var async: Boolean\n open var defer: Boolean\n open var crossOrigin: String?\n open var text: String\n open var nonce: String\n open var event: String\n open var htmlFor: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLTemplateElement](https://developer.mozilla.org/en/docs/Web/API/HTMLTemplateElement) to Kotlin\n */\npublic external abstract class HTMLTemplateElement : HTMLElement {\n open val content: DocumentFragment\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLSlotElement](https://developer.mozilla.org/en/docs/Web/API/HTMLSlotElement) to Kotlin\n */\npublic external abstract class HTMLSlotElement : HTMLElement {\n open var name: String\n fun assignedNodes(options: AssignedNodesOptions = definedExternally): Array\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external interface AssignedNodesOptions {\n var flatten: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun AssignedNodesOptions(flatten: Boolean? = false): AssignedNodesOptions {\n val o = js(\"({})\")\n o[\"flatten\"] = flatten\n return o\n}\n\n/**\n * Exposes the JavaScript [HTMLCanvasElement](https://developer.mozilla.org/en/docs/Web/API/HTMLCanvasElement) to Kotlin\n */\npublic external abstract class HTMLCanvasElement : HTMLElement, CanvasImageSource, TexImageSource {\n open var width: Int\n open var height: Int\n fun getContext(contextId: String, vararg arguments: Any?): RenderingContext?\n fun toDataURL(type: String = definedExternally, quality: Any? = definedExternally): String\n fun toBlob(_callback: (Blob?) -> Unit, type: String = definedExternally, quality: Any? = definedExternally)\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external interface CanvasRenderingContext2DSettings {\n var alpha: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun CanvasRenderingContext2DSettings(alpha: Boolean? = true): CanvasRenderingContext2DSettings {\n val o = js(\"({})\")\n o[\"alpha\"] = alpha\n return o\n}\n\n/**\n * Exposes the JavaScript [CanvasRenderingContext2D](https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D) to Kotlin\n */\npublic external abstract class CanvasRenderingContext2D : CanvasState, CanvasTransform, CanvasCompositing, CanvasImageSmoothing, CanvasFillStrokeStyles, CanvasShadowStyles, CanvasFilters, CanvasRect, CanvasDrawPath, CanvasUserInterface, CanvasText, CanvasDrawImage, CanvasHitRegion, CanvasImageData, CanvasPathDrawingStyles, CanvasTextDrawingStyles, CanvasPath, RenderingContext {\n open val canvas: HTMLCanvasElement\n}\n\npublic external interface CanvasState {\n fun save()\n fun restore()\n}\n\npublic external interface CanvasTransform {\n fun scale(x: Double, y: Double)\n fun rotate(angle: Double)\n fun translate(x: Double, y: Double)\n fun transform(a: Double, b: Double, c: Double, d: Double, e: Double, f: Double)\n fun getTransform(): DOMMatrix\n fun setTransform(a: Double, b: Double, c: Double, d: Double, e: Double, f: Double)\n fun setTransform(transform: dynamic = definedExternally)\n fun resetTransform()\n}\n\npublic external interface CanvasCompositing {\n var globalAlpha: Double\n var globalCompositeOperation: String\n}\n\npublic external interface CanvasImageSmoothing {\n var imageSmoothingEnabled: Boolean\n var imageSmoothingQuality: ImageSmoothingQuality\n}\n\npublic external interface CanvasFillStrokeStyles {\n var strokeStyle: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var fillStyle: dynamic\n get() = definedExternally\n set(value) = definedExternally\n fun createLinearGradient(x0: Double, y0: Double, x1: Double, y1: Double): CanvasGradient\n fun createRadialGradient(x0: Double, y0: Double, r0: Double, x1: Double, y1: Double, r1: Double): CanvasGradient\n fun createPattern(image: CanvasImageSource, repetition: String): CanvasPattern?\n}\n\npublic external interface CanvasShadowStyles {\n var shadowOffsetX: Double\n var shadowOffsetY: Double\n var shadowBlur: Double\n var shadowColor: String\n}\n\npublic external interface CanvasFilters {\n var filter: String\n}\n\npublic external interface CanvasRect {\n fun clearRect(x: Double, y: Double, w: Double, h: Double)\n fun fillRect(x: Double, y: Double, w: Double, h: Double)\n fun strokeRect(x: Double, y: Double, w: Double, h: Double)\n}\n\npublic external interface CanvasDrawPath {\n fun beginPath()\n fun fill(fillRule: CanvasFillRule = definedExternally)\n fun fill(path: Path2D, fillRule: CanvasFillRule = definedExternally)\n fun stroke()\n fun stroke(path: Path2D)\n fun clip(fillRule: CanvasFillRule = definedExternally)\n fun clip(path: Path2D, fillRule: CanvasFillRule = definedExternally)\n fun resetClip()\n fun isPointInPath(x: Double, y: Double, fillRule: CanvasFillRule = definedExternally): Boolean\n fun isPointInPath(path: Path2D, x: Double, y: Double, fillRule: CanvasFillRule = definedExternally): Boolean\n fun isPointInStroke(x: Double, y: Double): Boolean\n fun isPointInStroke(path: Path2D, x: Double, y: Double): Boolean\n}\n\npublic external interface CanvasUserInterface {\n fun drawFocusIfNeeded(element: Element)\n fun drawFocusIfNeeded(path: Path2D, element: Element)\n fun scrollPathIntoView()\n fun scrollPathIntoView(path: Path2D)\n}\n\npublic external interface CanvasText {\n fun fillText(text: String, x: Double, y: Double, maxWidth: Double = definedExternally)\n fun strokeText(text: String, x: Double, y: Double, maxWidth: Double = definedExternally)\n fun measureText(text: String): TextMetrics\n}\n\npublic external interface CanvasDrawImage {\n fun drawImage(image: CanvasImageSource, dx: Double, dy: Double)\n fun drawImage(image: CanvasImageSource, dx: Double, dy: Double, dw: Double, dh: Double)\n fun drawImage(image: CanvasImageSource, sx: Double, sy: Double, sw: Double, sh: Double, dx: Double, dy: Double, dw: Double, dh: Double)\n}\n\npublic external interface CanvasHitRegion {\n fun addHitRegion(options: HitRegionOptions = definedExternally)\n fun removeHitRegion(id: String)\n fun clearHitRegions()\n}\n\npublic external interface CanvasImageData {\n fun createImageData(sw: Double, sh: Double): ImageData\n fun createImageData(imagedata: ImageData): ImageData\n fun getImageData(sx: Double, sy: Double, sw: Double, sh: Double): ImageData\n fun putImageData(imagedata: ImageData, dx: Double, dy: Double)\n fun putImageData(imagedata: ImageData, dx: Double, dy: Double, dirtyX: Double, dirtyY: Double, dirtyWidth: Double, dirtyHeight: Double)\n}\n\npublic external interface CanvasPathDrawingStyles {\n var lineWidth: Double\n var lineCap: CanvasLineCap\n var lineJoin: CanvasLineJoin\n var miterLimit: Double\n var lineDashOffset: Double\n fun setLineDash(segments: Array)\n fun getLineDash(): Array\n}\n\npublic external interface CanvasTextDrawingStyles {\n var font: String\n var textAlign: CanvasTextAlign\n var textBaseline: CanvasTextBaseline\n var direction: CanvasDirection\n}\n\npublic external interface CanvasPath {\n fun closePath()\n fun moveTo(x: Double, y: Double)\n fun lineTo(x: Double, y: Double)\n fun quadraticCurveTo(cpx: Double, cpy: Double, x: Double, y: Double)\n fun bezierCurveTo(cp1x: Double, cp1y: Double, cp2x: Double, cp2y: Double, x: Double, y: Double)\n fun arcTo(x1: Double, y1: Double, x2: Double, y2: Double, radius: Double)\n fun arcTo(x1: Double, y1: Double, x2: Double, y2: Double, radiusX: Double, radiusY: Double, rotation: Double)\n fun rect(x: Double, y: Double, w: Double, h: Double)\n fun arc(x: Double, y: Double, radius: Double, startAngle: Double, endAngle: Double, anticlockwise: Boolean = definedExternally)\n fun ellipse(x: Double, y: Double, radiusX: Double, radiusY: Double, rotation: Double, startAngle: Double, endAngle: Double, anticlockwise: Boolean = definedExternally)\n}\n\n/**\n * Exposes the JavaScript [CanvasGradient](https://developer.mozilla.org/en/docs/Web/API/CanvasGradient) to Kotlin\n */\npublic external abstract class CanvasGradient {\n fun addColorStop(offset: Double, color: String)\n}\n\n/**\n * Exposes the JavaScript [CanvasPattern](https://developer.mozilla.org/en/docs/Web/API/CanvasPattern) to Kotlin\n */\npublic external abstract class CanvasPattern {\n fun setTransform(transform: dynamic = definedExternally)\n}\n\n/**\n * Exposes the JavaScript [TextMetrics](https://developer.mozilla.org/en/docs/Web/API/TextMetrics) to Kotlin\n */\npublic external abstract class TextMetrics {\n open val width: Double\n open val actualBoundingBoxLeft: Double\n open val actualBoundingBoxRight: Double\n open val fontBoundingBoxAscent: Double\n open val fontBoundingBoxDescent: Double\n open val actualBoundingBoxAscent: Double\n open val actualBoundingBoxDescent: Double\n open val emHeightAscent: Double\n open val emHeightDescent: Double\n open val hangingBaseline: Double\n open val alphabeticBaseline: Double\n open val ideographicBaseline: Double\n}\n\npublic external interface HitRegionOptions {\n var path: Path2D? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var fillRule: CanvasFillRule? /* = CanvasFillRule.NONZERO */\n get() = definedExternally\n set(value) = definedExternally\n var id: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var parentID: String? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var cursor: String? /* = \"inherit\" */\n get() = definedExternally\n set(value) = definedExternally\n var control: Element? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var label: String? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var role: String? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun HitRegionOptions(path: Path2D? = null, fillRule: CanvasFillRule? = CanvasFillRule.NONZERO, id: String? = \"\", parentID: String? = null, cursor: String? = \"inherit\", control: Element? = null, label: String? = null, role: String? = null): HitRegionOptions {\n val o = js(\"({})\")\n o[\"path\"] = path\n o[\"fillRule\"] = fillRule\n o[\"id\"] = id\n o[\"parentID\"] = parentID\n o[\"cursor\"] = cursor\n o[\"control\"] = control\n o[\"label\"] = label\n o[\"role\"] = role\n return o\n}\n\n/**\n * Exposes the JavaScript [ImageData](https://developer.mozilla.org/en/docs/Web/API/ImageData) to Kotlin\n */\npublic external open class ImageData : ImageBitmapSource, TexImageSource {\n constructor(sw: Int, sh: Int)\n constructor(data: Uint8ClampedArray, sw: Int, sh: Int = definedExternally)\n open val width: Int\n open val height: Int\n open val data: Uint8ClampedArray\n}\n\n/**\n * Exposes the JavaScript [Path2D](https://developer.mozilla.org/en/docs/Web/API/Path2D) to Kotlin\n */\npublic external open class Path2D() : CanvasPath {\n constructor(path: Path2D)\n constructor(paths: Array, fillRule: CanvasFillRule = definedExternally)\n constructor(d: String)\n fun addPath(path: Path2D, transform: dynamic = definedExternally)\n override fun closePath()\n override fun moveTo(x: Double, y: Double)\n override fun lineTo(x: Double, y: Double)\n override fun quadraticCurveTo(cpx: Double, cpy: Double, x: Double, y: Double)\n override fun bezierCurveTo(cp1x: Double, cp1y: Double, cp2x: Double, cp2y: Double, x: Double, y: Double)\n override fun arcTo(x1: Double, y1: Double, x2: Double, y2: Double, radius: Double)\n override fun arcTo(x1: Double, y1: Double, x2: Double, y2: Double, radiusX: Double, radiusY: Double, rotation: Double)\n override fun rect(x: Double, y: Double, w: Double, h: Double)\n override fun arc(x: Double, y: Double, radius: Double, startAngle: Double, endAngle: Double, anticlockwise: Boolean /* = definedExternally */)\n override fun ellipse(x: Double, y: Double, radiusX: Double, radiusY: Double, rotation: Double, startAngle: Double, endAngle: Double, anticlockwise: Boolean /* = definedExternally */)\n}\n\n/**\n * Exposes the JavaScript [ImageBitmapRenderingContext](https://developer.mozilla.org/en/docs/Web/API/ImageBitmapRenderingContext) to Kotlin\n */\npublic external abstract class ImageBitmapRenderingContext {\n open val canvas: HTMLCanvasElement\n fun transferFromImageBitmap(bitmap: ImageBitmap?)\n}\n\npublic external interface ImageBitmapRenderingContextSettings {\n var alpha: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ImageBitmapRenderingContextSettings(alpha: Boolean? = true): ImageBitmapRenderingContextSettings {\n val o = js(\"({})\")\n o[\"alpha\"] = alpha\n return o\n}\n\n/**\n * Exposes the JavaScript [CustomElementRegistry](https://developer.mozilla.org/en/docs/Web/API/CustomElementRegistry) to Kotlin\n */\npublic external abstract class CustomElementRegistry {\n fun define(name: String, constructor: () -> dynamic, options: ElementDefinitionOptions = definedExternally)\n fun get(name: String): Any?\n fun whenDefined(name: String): Promise\n}\n\npublic external interface ElementDefinitionOptions {\n var extends: String?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ElementDefinitionOptions(extends: String? = undefined): ElementDefinitionOptions {\n val o = js(\"({})\")\n o[\"extends\"] = extends\n return o\n}\n\npublic external interface ElementContentEditable {\n var contentEditable: String\n val isContentEditable: Boolean\n}\n\n/**\n * Exposes the JavaScript [DataTransfer](https://developer.mozilla.org/en/docs/Web/API/DataTransfer) to Kotlin\n */\npublic external abstract class DataTransfer {\n open var dropEffect: String\n open var effectAllowed: String\n open val items: DataTransferItemList\n open val types: Array\n open val files: FileList\n fun setDragImage(image: Element, x: Int, y: Int)\n fun getData(format: String): String\n fun setData(format: String, data: String)\n fun clearData(format: String = definedExternally)\n}\n\n/**\n * Exposes the JavaScript [DataTransferItemList](https://developer.mozilla.org/en/docs/Web/API/DataTransferItemList) to Kotlin\n */\npublic external abstract class DataTransferItemList {\n open val length: Int\n fun add(data: String, type: String): DataTransferItem?\n fun add(data: File): DataTransferItem?\n fun remove(index: Int)\n fun clear()\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun DataTransferItemList.get(index: Int): DataTransferItem? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [DataTransferItem](https://developer.mozilla.org/en/docs/Web/API/DataTransferItem) to Kotlin\n */\npublic external abstract class DataTransferItem {\n open val kind: String\n open val type: String\n fun getAsString(_callback: ((String) -> Unit)?)\n fun getAsFile(): File?\n}\n\n/**\n * Exposes the JavaScript [DragEvent](https://developer.mozilla.org/en/docs/Web/API/DragEvent) to Kotlin\n */\npublic external open class DragEvent(type: String, eventInitDict: DragEventInit = definedExternally) : MouseEvent {\n open val dataTransfer: DataTransfer?\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface DragEventInit : MouseEventInit {\n var dataTransfer: DataTransfer? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun DragEventInit(dataTransfer: DataTransfer? = null, screenX: Int? = 0, screenY: Int? = 0, clientX: Int? = 0, clientY: Int? = 0, button: Short? = 0, buttons: Short? = 0, relatedTarget: EventTarget? = null, region: String? = null, ctrlKey: Boolean? = false, shiftKey: Boolean? = false, altKey: Boolean? = false, metaKey: Boolean? = false, modifierAltGraph: Boolean? = false, modifierCapsLock: Boolean? = false, modifierFn: Boolean? = false, modifierFnLock: Boolean? = false, modifierHyper: Boolean? = false, modifierNumLock: Boolean? = false, modifierScrollLock: Boolean? = false, modifierSuper: Boolean? = false, modifierSymbol: Boolean? = false, modifierSymbolLock: Boolean? = false, view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): DragEventInit {\n val o = js(\"({})\")\n o[\"dataTransfer\"] = dataTransfer\n o[\"screenX\"] = screenX\n o[\"screenY\"] = screenY\n o[\"clientX\"] = clientX\n o[\"clientY\"] = clientY\n o[\"button\"] = button\n o[\"buttons\"] = buttons\n o[\"relatedTarget\"] = relatedTarget\n o[\"region\"] = region\n o[\"ctrlKey\"] = ctrlKey\n o[\"shiftKey\"] = shiftKey\n o[\"altKey\"] = altKey\n o[\"metaKey\"] = metaKey\n o[\"modifierAltGraph\"] = modifierAltGraph\n o[\"modifierCapsLock\"] = modifierCapsLock\n o[\"modifierFn\"] = modifierFn\n o[\"modifierFnLock\"] = modifierFnLock\n o[\"modifierHyper\"] = modifierHyper\n o[\"modifierNumLock\"] = modifierNumLock\n o[\"modifierScrollLock\"] = modifierScrollLock\n o[\"modifierSuper\"] = modifierSuper\n o[\"modifierSymbol\"] = modifierSymbol\n o[\"modifierSymbolLock\"] = modifierSymbolLock\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [Window](https://developer.mozilla.org/en/docs/Web/API/Window) to Kotlin\n */\npublic external abstract class Window : EventTarget, GlobalEventHandlers, WindowEventHandlers, WindowOrWorkerGlobalScope, WindowSessionStorage, WindowLocalStorage, GlobalPerformance, UnionMessagePortOrWindowProxy {\n open val window: Window\n open val self: Window\n open val document: Document\n open var name: String\n open val location: Location\n open val history: History\n open val customElements: CustomElementRegistry\n open val locationbar: BarProp\n open val menubar: BarProp\n open val personalbar: BarProp\n open val scrollbars: BarProp\n open val statusbar: BarProp\n open val toolbar: BarProp\n open var status: String\n open val closed: Boolean\n open val frames: Window\n open val length: Int\n open val top: Window\n open var opener: Any?\n open val parent: Window\n open val frameElement: Element?\n open val navigator: Navigator\n open val applicationCache: ApplicationCache\n open val external: External\n open val screen: Screen\n open val innerWidth: Int\n open val innerHeight: Int\n open val scrollX: Double\n open val pageXOffset: Double\n open val scrollY: Double\n open val pageYOffset: Double\n open val screenX: Int\n open val screenY: Int\n open val outerWidth: Int\n open val outerHeight: Int\n open val devicePixelRatio: Double\n fun close()\n fun stop()\n fun focus()\n fun blur()\n fun open(url: String = definedExternally, target: String = definedExternally, features: String = definedExternally): Window?\n fun alert()\n fun alert(message: String)\n fun confirm(message: String = definedExternally): Boolean\n fun prompt(message: String = definedExternally, default: String = definedExternally): String?\n fun print()\n fun requestAnimationFrame(callback: (Double) -> Unit): Int\n fun cancelAnimationFrame(handle: Int)\n fun postMessage(message: Any?, targetOrigin: String, transfer: Array = definedExternally)\n fun captureEvents()\n fun releaseEvents()\n fun matchMedia(query: String): MediaQueryList\n fun moveTo(x: Int, y: Int)\n fun moveBy(x: Int, y: Int)\n fun resizeTo(x: Int, y: Int)\n fun resizeBy(x: Int, y: Int)\n fun scroll(options: ScrollToOptions = definedExternally)\n fun scroll(x: Double, y: Double)\n fun scrollTo(options: ScrollToOptions = definedExternally)\n fun scrollTo(x: Double, y: Double)\n fun scrollBy(options: ScrollToOptions = definedExternally)\n fun scrollBy(x: Double, y: Double)\n fun getComputedStyle(elt: Element, pseudoElt: String? = definedExternally): CSSStyleDeclaration\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Window.get(name: String): dynamic = asDynamic()[name]\n\npublic external abstract class BarProp {\n open val visible: Boolean\n}\n\n/**\n * Exposes the JavaScript [History](https://developer.mozilla.org/en/docs/Web/API/History) to Kotlin\n */\npublic external abstract class History {\n open val length: Int\n open var scrollRestoration: ScrollRestoration\n open val state: Any?\n fun go(delta: Int = definedExternally)\n fun back()\n fun forward()\n fun pushState(data: Any?, title: String, url: String? = definedExternally)\n fun replaceState(data: Any?, title: String, url: String? = definedExternally)\n}\n\n/**\n * Exposes the JavaScript [Location](https://developer.mozilla.org/en/docs/Web/API/Location) to Kotlin\n */\npublic external abstract class Location {\n open var href: String\n open val origin: String\n open var protocol: String\n open var host: String\n open var hostname: String\n open var port: String\n open var pathname: String\n open var search: String\n open var hash: String\n open val ancestorOrigins: Array\n fun assign(url: String)\n fun replace(url: String)\n fun reload()\n}\n\n/**\n * Exposes the JavaScript [PopStateEvent](https://developer.mozilla.org/en/docs/Web/API/PopStateEvent) to Kotlin\n */\npublic external open class PopStateEvent(type: String, eventInitDict: PopStateEventInit = definedExternally) : Event {\n open val state: Any?\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface PopStateEventInit : EventInit {\n var state: Any? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun PopStateEventInit(state: Any? = null, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): PopStateEventInit {\n val o = js(\"({})\")\n o[\"state\"] = state\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [HashChangeEvent](https://developer.mozilla.org/en/docs/Web/API/HashChangeEvent) to Kotlin\n */\npublic external open class HashChangeEvent(type: String, eventInitDict: HashChangeEventInit = definedExternally) : Event {\n open val oldURL: String\n open val newURL: String\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface HashChangeEventInit : EventInit {\n var oldURL: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var newURL: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun HashChangeEventInit(oldURL: String? = \"\", newURL: String? = \"\", bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): HashChangeEventInit {\n val o = js(\"({})\")\n o[\"oldURL\"] = oldURL\n o[\"newURL\"] = newURL\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [PageTransitionEvent](https://developer.mozilla.org/en/docs/Web/API/PageTransitionEvent) to Kotlin\n */\npublic external open class PageTransitionEvent(type: String, eventInitDict: PageTransitionEventInit = definedExternally) : Event {\n open val persisted: Boolean\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface PageTransitionEventInit : EventInit {\n var persisted: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun PageTransitionEventInit(persisted: Boolean? = false, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): PageTransitionEventInit {\n val o = js(\"({})\")\n o[\"persisted\"] = persisted\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [BeforeUnloadEvent](https://developer.mozilla.org/en/docs/Web/API/BeforeUnloadEvent) to Kotlin\n */\npublic external open class BeforeUnloadEvent : Event {\n var returnValue: String\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external abstract class ApplicationCache : EventTarget {\n open val status: Short\n open var onchecking: ((Event) -> dynamic)?\n open var onerror: ((Event) -> dynamic)?\n open var onnoupdate: ((Event) -> dynamic)?\n open var ondownloading: ((Event) -> dynamic)?\n open var onprogress: ((ProgressEvent) -> dynamic)?\n open var onupdateready: ((Event) -> dynamic)?\n open var oncached: ((Event) -> dynamic)?\n open var onobsolete: ((Event) -> dynamic)?\n fun update()\n fun abort()\n fun swapCache()\n\n companion object {\n val UNCACHED: Short\n val IDLE: Short\n val CHECKING: Short\n val DOWNLOADING: Short\n val UPDATEREADY: Short\n val OBSOLETE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [NavigatorOnLine](https://developer.mozilla.org/en/docs/Web/API/NavigatorOnLine) to Kotlin\n */\npublic external interface NavigatorOnLine {\n val onLine: Boolean\n}\n\n/**\n * Exposes the JavaScript [ErrorEvent](https://developer.mozilla.org/en/docs/Web/API/ErrorEvent) to Kotlin\n */\npublic external open class ErrorEvent(type: String, eventInitDict: ErrorEventInit = definedExternally) : Event {\n open val message: String\n open val filename: String\n open val lineno: Int\n open val colno: Int\n open val error: Any?\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface ErrorEventInit : EventInit {\n var message: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var filename: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var lineno: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var colno: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var error: Any? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ErrorEventInit(message: String? = \"\", filename: String? = \"\", lineno: Int? = 0, colno: Int? = 0, error: Any? = null, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): ErrorEventInit {\n val o = js(\"({})\")\n o[\"message\"] = message\n o[\"filename\"] = filename\n o[\"lineno\"] = lineno\n o[\"colno\"] = colno\n o[\"error\"] = error\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [PromiseRejectionEvent](https://developer.mozilla.org/en/docs/Web/API/PromiseRejectionEvent) to Kotlin\n */\npublic external open class PromiseRejectionEvent(type: String, eventInitDict: PromiseRejectionEventInit) : Event {\n open val promise: Promise\n open val reason: Any?\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface PromiseRejectionEventInit : EventInit {\n var promise: Promise?\n get() = definedExternally\n set(value) = definedExternally\n var reason: Any?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun PromiseRejectionEventInit(promise: Promise?, reason: Any? = undefined, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): PromiseRejectionEventInit {\n val o = js(\"({})\")\n o[\"promise\"] = promise\n o[\"reason\"] = reason\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [GlobalEventHandlers](https://developer.mozilla.org/en/docs/Web/API/GlobalEventHandlers) to Kotlin\n */\npublic external interface GlobalEventHandlers {\n var onabort: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onblur: ((FocusEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var oncancel: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var oncanplay: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var oncanplaythrough: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onchange: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onclick: ((MouseEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onclose: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var oncontextmenu: ((MouseEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var oncuechange: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var ondblclick: ((MouseEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var ondrag: ((DragEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var ondragend: ((DragEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var ondragenter: ((DragEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var ondragexit: ((DragEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var ondragleave: ((DragEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var ondragover: ((DragEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var ondragstart: ((DragEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var ondrop: ((DragEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var ondurationchange: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onemptied: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onended: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onerror: ((dynamic, String, Int, Int, Any?) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onfocus: ((FocusEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var oninput: ((InputEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var oninvalid: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onkeydown: ((KeyboardEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onkeypress: ((KeyboardEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onkeyup: ((KeyboardEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onload: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onloadeddata: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onloadedmetadata: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onloadend: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onloadstart: ((ProgressEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onmousedown: ((MouseEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onmouseenter: ((MouseEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onmouseleave: ((MouseEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onmousemove: ((MouseEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onmouseout: ((MouseEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onmouseover: ((MouseEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onmouseup: ((MouseEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onwheel: ((WheelEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onpause: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onplay: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onplaying: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onprogress: ((ProgressEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onratechange: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onreset: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onresize: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onscroll: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onseeked: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onseeking: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onselect: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onshow: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onstalled: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onsubmit: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onsuspend: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var ontimeupdate: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var ontoggle: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onvolumechange: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onwaiting: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var ongotpointercapture: ((PointerEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onlostpointercapture: ((PointerEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onpointerdown: ((PointerEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onpointermove: ((PointerEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onpointerup: ((PointerEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onpointercancel: ((PointerEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onpointerover: ((PointerEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onpointerout: ((PointerEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onpointerenter: ((PointerEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onpointerleave: ((PointerEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n/**\n * Exposes the JavaScript [WindowEventHandlers](https://developer.mozilla.org/en/docs/Web/API/WindowEventHandlers) to Kotlin\n */\npublic external interface WindowEventHandlers {\n var onafterprint: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onbeforeprint: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onbeforeunload: ((BeforeUnloadEvent) -> String?)?\n get() = definedExternally\n set(value) = definedExternally\n var onhashchange: ((HashChangeEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onlanguagechange: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onmessage: ((MessageEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onoffline: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var ononline: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onpagehide: ((PageTransitionEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onpageshow: ((PageTransitionEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onpopstate: ((PopStateEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onrejectionhandled: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onstorage: ((StorageEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onunhandledrejection: ((PromiseRejectionEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onunload: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n}\n\npublic external interface DocumentAndElementEventHandlers {\n var oncopy: ((ClipboardEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var oncut: ((ClipboardEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n var onpaste: ((ClipboardEvent) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n/**\n * Exposes the JavaScript [WindowOrWorkerGlobalScope](https://developer.mozilla.org/en/docs/Web/API/WindowOrWorkerGlobalScope) to Kotlin\n */\npublic external interface WindowOrWorkerGlobalScope {\n val origin: String\n val caches: CacheStorage\n fun btoa(data: String): String\n fun atob(data: String): String\n fun setTimeout(handler: dynamic, timeout: Int = definedExternally, vararg arguments: Any?): Int\n fun clearTimeout(handle: Int = definedExternally)\n fun setInterval(handler: dynamic, timeout: Int = definedExternally, vararg arguments: Any?): Int\n fun clearInterval(handle: Int = definedExternally)\n fun createImageBitmap(image: ImageBitmapSource, options: ImageBitmapOptions = definedExternally): Promise\n fun createImageBitmap(image: ImageBitmapSource, sx: Int, sy: Int, sw: Int, sh: Int, options: ImageBitmapOptions = definedExternally): Promise\n fun fetch(input: dynamic, init: RequestInit = definedExternally): Promise\n}\n\n/**\n * Exposes the JavaScript [Navigator](https://developer.mozilla.org/en/docs/Web/API/Navigator) to Kotlin\n */\npublic external abstract class Navigator : NavigatorID, NavigatorLanguage, NavigatorOnLine, NavigatorContentUtils, NavigatorCookies, NavigatorPlugins, NavigatorConcurrentHardware {\n open val clipboard: Clipboard\n open val mediaDevices: MediaDevices\n open val maxTouchPoints: Int\n open val serviceWorker: ServiceWorkerContainer\n fun getUserMedia(constraints: MediaStreamConstraints, successCallback: (MediaStream) -> Unit, errorCallback: (dynamic) -> Unit)\n fun vibrate(pattern: dynamic): Boolean\n}\n\n/**\n * Exposes the JavaScript [NavigatorID](https://developer.mozilla.org/en/docs/Web/API/NavigatorID) to Kotlin\n */\npublic external interface NavigatorID {\n val appCodeName: String\n val appName: String\n val appVersion: String\n val platform: String\n val product: String\n val productSub: String\n val userAgent: String\n val vendor: String\n val vendorSub: String\n val oscpu: String\n fun taintEnabled(): Boolean\n}\n\n/**\n * Exposes the JavaScript [NavigatorLanguage](https://developer.mozilla.org/en/docs/Web/API/NavigatorLanguage) to Kotlin\n */\npublic external interface NavigatorLanguage {\n val language: String\n val languages: Array\n}\n\npublic external interface NavigatorContentUtils {\n fun registerProtocolHandler(scheme: String, url: String, title: String)\n fun registerContentHandler(mimeType: String, url: String, title: String)\n fun isProtocolHandlerRegistered(scheme: String, url: String): String\n fun isContentHandlerRegistered(mimeType: String, url: String): String\n fun unregisterProtocolHandler(scheme: String, url: String)\n fun unregisterContentHandler(mimeType: String, url: String)\n}\n\npublic external interface NavigatorCookies {\n val cookieEnabled: Boolean\n}\n\n/**\n * Exposes the JavaScript [NavigatorPlugins](https://developer.mozilla.org/en/docs/Web/API/NavigatorPlugins) to Kotlin\n */\npublic external interface NavigatorPlugins {\n val plugins: PluginArray\n val mimeTypes: MimeTypeArray\n fun javaEnabled(): Boolean\n}\n\n/**\n * Exposes the JavaScript [PluginArray](https://developer.mozilla.org/en/docs/Web/API/PluginArray) to Kotlin\n */\npublic external abstract class PluginArray : ItemArrayLike {\n fun refresh(reload: Boolean = definedExternally)\n override fun item(index: Int): Plugin?\n fun namedItem(name: String): Plugin?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun PluginArray.get(index: Int): Plugin? = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun PluginArray.get(name: String): Plugin? = asDynamic()[name]\n\n/**\n * Exposes the JavaScript [MimeTypeArray](https://developer.mozilla.org/en/docs/Web/API/MimeTypeArray) to Kotlin\n */\npublic external abstract class MimeTypeArray : ItemArrayLike {\n override fun item(index: Int): MimeType?\n fun namedItem(name: String): MimeType?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun MimeTypeArray.get(index: Int): MimeType? = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun MimeTypeArray.get(name: String): MimeType? = asDynamic()[name]\n\n/**\n * Exposes the JavaScript [Plugin](https://developer.mozilla.org/en/docs/Web/API/Plugin) to Kotlin\n */\npublic external abstract class Plugin : ItemArrayLike {\n open val name: String\n open val description: String\n open val filename: String\n override fun item(index: Int): MimeType?\n fun namedItem(name: String): MimeType?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Plugin.get(index: Int): MimeType? = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Plugin.get(name: String): MimeType? = asDynamic()[name]\n\n/**\n * Exposes the JavaScript [MimeType](https://developer.mozilla.org/en/docs/Web/API/MimeType) to Kotlin\n */\npublic external abstract class MimeType {\n open val type: String\n open val description: String\n open val suffixes: String\n open val enabledPlugin: Plugin\n}\n\n/**\n * Exposes the JavaScript [ImageBitmap](https://developer.mozilla.org/en/docs/Web/API/ImageBitmap) to Kotlin\n */\npublic external abstract class ImageBitmap : CanvasImageSource, TexImageSource {\n open val width: Int\n open val height: Int\n fun close()\n}\n\npublic external interface ImageBitmapOptions {\n var imageOrientation: ImageOrientation? /* = ImageOrientation.NONE */\n get() = definedExternally\n set(value) = definedExternally\n var premultiplyAlpha: PremultiplyAlpha? /* = PremultiplyAlpha.DEFAULT */\n get() = definedExternally\n set(value) = definedExternally\n var colorSpaceConversion: ColorSpaceConversion? /* = ColorSpaceConversion.DEFAULT */\n get() = definedExternally\n set(value) = definedExternally\n var resizeWidth: Int?\n get() = definedExternally\n set(value) = definedExternally\n var resizeHeight: Int?\n get() = definedExternally\n set(value) = definedExternally\n var resizeQuality: ResizeQuality? /* = ResizeQuality.LOW */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ImageBitmapOptions(imageOrientation: ImageOrientation? = ImageOrientation.NONE, premultiplyAlpha: PremultiplyAlpha? = PremultiplyAlpha.DEFAULT, colorSpaceConversion: ColorSpaceConversion? = ColorSpaceConversion.DEFAULT, resizeWidth: Int? = undefined, resizeHeight: Int? = undefined, resizeQuality: ResizeQuality? = ResizeQuality.LOW): ImageBitmapOptions {\n val o = js(\"({})\")\n o[\"imageOrientation\"] = imageOrientation\n o[\"premultiplyAlpha\"] = premultiplyAlpha\n o[\"colorSpaceConversion\"] = colorSpaceConversion\n o[\"resizeWidth\"] = resizeWidth\n o[\"resizeHeight\"] = resizeHeight\n o[\"resizeQuality\"] = resizeQuality\n return o\n}\n\n/**\n * Exposes the JavaScript [MessageEvent](https://developer.mozilla.org/en/docs/Web/API/MessageEvent) to Kotlin\n */\npublic external open class MessageEvent(type: String, eventInitDict: MessageEventInit = definedExternally) : Event {\n open val data: Any?\n open val origin: String\n open val lastEventId: String\n open val source: UnionMessagePortOrWindowProxy?\n open val ports: Array\n fun initMessageEvent(type: String, bubbles: Boolean, cancelable: Boolean, data: Any?, origin: String, lastEventId: String, source: UnionMessagePortOrWindowProxy?, ports: Array)\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface MessageEventInit : EventInit {\n var data: Any? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var origin: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var lastEventId: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var source: UnionMessagePortOrWindowProxy? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var ports: Array? /* = arrayOf() */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MessageEventInit(data: Any? = null, origin: String? = \"\", lastEventId: String? = \"\", source: UnionMessagePortOrWindowProxy? = null, ports: Array? = arrayOf(), bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): MessageEventInit {\n val o = js(\"({})\")\n o[\"data\"] = data\n o[\"origin\"] = origin\n o[\"lastEventId\"] = lastEventId\n o[\"source\"] = source\n o[\"ports\"] = ports\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [EventSource](https://developer.mozilla.org/en/docs/Web/API/EventSource) to Kotlin\n */\npublic external open class EventSource(url: String, eventSourceInitDict: EventSourceInit = definedExternally) : EventTarget {\n open val url: String\n open val withCredentials: Boolean\n open val readyState: Short\n var onopen: ((Event) -> dynamic)?\n var onmessage: ((MessageEvent) -> dynamic)?\n var onerror: ((Event) -> dynamic)?\n fun close()\n\n companion object {\n val CONNECTING: Short\n val OPEN: Short\n val CLOSED: Short\n }\n}\n\npublic external interface EventSourceInit {\n var withCredentials: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun EventSourceInit(withCredentials: Boolean? = false): EventSourceInit {\n val o = js(\"({})\")\n o[\"withCredentials\"] = withCredentials\n return o\n}\n\n/**\n * Exposes the JavaScript [WebSocket](https://developer.mozilla.org/en/docs/Web/API/WebSocket) to Kotlin\n */\npublic external open class WebSocket(url: String, protocols: dynamic = definedExternally) : EventTarget {\n open val url: String\n open val readyState: Short\n open val bufferedAmount: Number\n var onopen: ((Event) -> dynamic)?\n var onerror: ((Event) -> dynamic)?\n var onclose: ((Event) -> dynamic)?\n open val extensions: String\n open val protocol: String\n var onmessage: ((MessageEvent) -> dynamic)?\n var binaryType: BinaryType\n fun close(code: Short = definedExternally, reason: String = definedExternally)\n fun send(data: String)\n fun send(data: Blob)\n fun send(data: ArrayBuffer)\n fun send(data: ArrayBufferView)\n\n companion object {\n val CONNECTING: Short\n val OPEN: Short\n val CLOSING: Short\n val CLOSED: Short\n }\n}\n\n/**\n * Exposes the JavaScript [CloseEvent](https://developer.mozilla.org/en/docs/Web/API/CloseEvent) to Kotlin\n */\npublic external open class CloseEvent(type: String, eventInitDict: CloseEventInit = definedExternally) : Event {\n open val wasClean: Boolean\n open val code: Short\n open val reason: String\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface CloseEventInit : EventInit {\n var wasClean: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var code: Short? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var reason: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun CloseEventInit(wasClean: Boolean? = false, code: Short? = 0, reason: String? = \"\", bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): CloseEventInit {\n val o = js(\"({})\")\n o[\"wasClean\"] = wasClean\n o[\"code\"] = code\n o[\"reason\"] = reason\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [MessageChannel](https://developer.mozilla.org/en/docs/Web/API/MessageChannel) to Kotlin\n */\npublic external open class MessageChannel {\n open val port1: MessagePort\n open val port2: MessagePort\n}\n\n/**\n * Exposes the JavaScript [MessagePort](https://developer.mozilla.org/en/docs/Web/API/MessagePort) to Kotlin\n */\npublic external abstract class MessagePort : EventTarget, UnionMessagePortOrWindowProxy, UnionMessagePortOrServiceWorker, UnionClientOrMessagePortOrServiceWorker {\n open var onmessage: ((MessageEvent) -> dynamic)?\n fun postMessage(message: Any?, transfer: Array = definedExternally)\n fun start()\n fun close()\n}\n\n/**\n * Exposes the JavaScript [BroadcastChannel](https://developer.mozilla.org/en/docs/Web/API/BroadcastChannel) to Kotlin\n */\npublic external open class BroadcastChannel(name: String) : EventTarget {\n open val name: String\n var onmessage: ((MessageEvent) -> dynamic)?\n fun postMessage(message: Any?)\n fun close()\n}\n\n/**\n * Exposes the JavaScript [WorkerGlobalScope](https://developer.mozilla.org/en/docs/Web/API/WorkerGlobalScope) to Kotlin\n */\npublic external abstract class WorkerGlobalScope : EventTarget, WindowOrWorkerGlobalScope, GlobalPerformance {\n open val self: WorkerGlobalScope\n open val location: WorkerLocation\n open val navigator: WorkerNavigator\n open var onerror: ((dynamic, String, Int, Int, Any?) -> dynamic)?\n open var onlanguagechange: ((Event) -> dynamic)?\n open var onoffline: ((Event) -> dynamic)?\n open var ononline: ((Event) -> dynamic)?\n open var onrejectionhandled: ((Event) -> dynamic)?\n open var onunhandledrejection: ((PromiseRejectionEvent) -> dynamic)?\n fun importScripts(vararg urls: String)\n}\n\n/**\n * Exposes the JavaScript [DedicatedWorkerGlobalScope](https://developer.mozilla.org/en/docs/Web/API/DedicatedWorkerGlobalScope) to Kotlin\n */\npublic external abstract class DedicatedWorkerGlobalScope : WorkerGlobalScope {\n open var onmessage: ((MessageEvent) -> dynamic)?\n fun postMessage(message: Any?, transfer: Array = definedExternally)\n fun close()\n}\n\n/**\n * Exposes the JavaScript [SharedWorkerGlobalScope](https://developer.mozilla.org/en/docs/Web/API/SharedWorkerGlobalScope) to Kotlin\n */\npublic external abstract class SharedWorkerGlobalScope : WorkerGlobalScope {\n open val name: String\n open val applicationCache: ApplicationCache\n open var onconnect: ((Event) -> dynamic)?\n fun close()\n}\n\n/**\n * Exposes the JavaScript [AbstractWorker](https://developer.mozilla.org/en/docs/Web/API/AbstractWorker) to Kotlin\n */\npublic external interface AbstractWorker {\n var onerror: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n/**\n * Exposes the JavaScript [Worker](https://developer.mozilla.org/en/docs/Web/API/Worker) to Kotlin\n */\npublic external open class Worker(scriptURL: String, options: WorkerOptions = definedExternally) : EventTarget, AbstractWorker {\n var onmessage: ((MessageEvent) -> dynamic)?\n override var onerror: ((Event) -> dynamic)?\n fun terminate()\n fun postMessage(message: Any?, transfer: Array = definedExternally)\n}\n\npublic external interface WorkerOptions {\n var type: WorkerType? /* = WorkerType.CLASSIC */\n get() = definedExternally\n set(value) = definedExternally\n var credentials: RequestCredentials? /* = RequestCredentials.OMIT */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun WorkerOptions(type: WorkerType? = WorkerType.CLASSIC, credentials: RequestCredentials? = RequestCredentials.OMIT): WorkerOptions {\n val o = js(\"({})\")\n o[\"type\"] = type\n o[\"credentials\"] = credentials\n return o\n}\n\n/**\n * Exposes the JavaScript [SharedWorker](https://developer.mozilla.org/en/docs/Web/API/SharedWorker) to Kotlin\n */\npublic external open class SharedWorker(scriptURL: String, name: String = definedExternally, options: WorkerOptions = definedExternally) : EventTarget, AbstractWorker {\n open val port: MessagePort\n override var onerror: ((Event) -> dynamic)?\n}\n\n/**\n * Exposes the JavaScript [NavigatorConcurrentHardware](https://developer.mozilla.org/en/docs/Web/API/NavigatorConcurrentHardware) to Kotlin\n */\npublic external interface NavigatorConcurrentHardware {\n val hardwareConcurrency: Number\n}\n\n/**\n * Exposes the JavaScript [WorkerNavigator](https://developer.mozilla.org/en/docs/Web/API/WorkerNavigator) to Kotlin\n */\npublic external abstract class WorkerNavigator : NavigatorID, NavigatorLanguage, NavigatorOnLine, NavigatorConcurrentHardware {\n open val serviceWorker: ServiceWorkerContainer\n}\n\n/**\n * Exposes the JavaScript [WorkerLocation](https://developer.mozilla.org/en/docs/Web/API/WorkerLocation) to Kotlin\n */\npublic external abstract class WorkerLocation {\n open val href: String\n open val origin: String\n open val protocol: String\n open val host: String\n open val hostname: String\n open val port: String\n open val pathname: String\n open val search: String\n open val hash: String\n}\n\n/**\n * Exposes the JavaScript [Storage](https://developer.mozilla.org/en/docs/Web/API/Storage) to Kotlin\n */\npublic external abstract class Storage {\n open val length: Int\n fun key(index: Int): String?\n fun removeItem(key: String)\n fun clear()\n fun getItem(key: String): String?\n fun setItem(key: String, value: String)\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Storage.get(key: String): String? = asDynamic()[key]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Storage.set(key: String, value: String) { asDynamic()[key] = value }\n\n/**\n * Exposes the JavaScript [WindowSessionStorage](https://developer.mozilla.org/en/docs/Web/API/WindowSessionStorage) to Kotlin\n */\npublic external interface WindowSessionStorage {\n val sessionStorage: Storage\n}\n\n/**\n * Exposes the JavaScript [WindowLocalStorage](https://developer.mozilla.org/en/docs/Web/API/WindowLocalStorage) to Kotlin\n */\npublic external interface WindowLocalStorage {\n val localStorage: Storage\n}\n\n/**\n * Exposes the JavaScript [StorageEvent](https://developer.mozilla.org/en/docs/Web/API/StorageEvent) to Kotlin\n */\npublic external open class StorageEvent(type: String, eventInitDict: StorageEventInit = definedExternally) : Event {\n open val key: String?\n open val oldValue: String?\n open val newValue: String?\n open val url: String\n open val storageArea: Storage?\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface StorageEventInit : EventInit {\n var key: String? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var oldValue: String? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var newValue: String? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var url: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var storageArea: Storage? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun StorageEventInit(key: String? = null, oldValue: String? = null, newValue: String? = null, url: String? = \"\", storageArea: Storage? = null, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): StorageEventInit {\n val o = js(\"({})\")\n o[\"key\"] = key\n o[\"oldValue\"] = oldValue\n o[\"newValue\"] = newValue\n o[\"url\"] = url\n o[\"storageArea\"] = storageArea\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\npublic external abstract class HTMLAppletElement : HTMLElement {\n open var align: String\n open var alt: String\n open var archive: String\n open var code: String\n open var codeBase: String\n open var height: String\n open var hspace: Int\n open var name: String\n open var _object: String\n open var vspace: Int\n open var width: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLMarqueeElement](https://developer.mozilla.org/en/docs/Web/API/HTMLMarqueeElement) to Kotlin\n */\npublic external abstract class HTMLMarqueeElement : HTMLElement {\n open var behavior: String\n open var bgColor: String\n open var direction: String\n open var height: String\n open var hspace: Int\n open var loop: Int\n open var scrollAmount: Int\n open var scrollDelay: Int\n open var trueSpeed: Boolean\n open var vspace: Int\n open var width: String\n open var onbounce: ((Event) -> dynamic)?\n open var onfinish: ((Event) -> dynamic)?\n open var onstart: ((Event) -> dynamic)?\n fun start()\n fun stop()\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLFrameSetElement](https://developer.mozilla.org/en/docs/Web/API/HTMLFrameSetElement) to Kotlin\n */\npublic external abstract class HTMLFrameSetElement : HTMLElement, WindowEventHandlers {\n open var cols: String\n open var rows: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external abstract class HTMLFrameElement : HTMLElement {\n open var name: String\n open var scrolling: String\n open var src: String\n open var frameBorder: String\n open var longDesc: String\n open var noResize: Boolean\n open val contentDocument: Document?\n open val contentWindow: Window?\n open var marginHeight: String\n open var marginWidth: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external abstract class HTMLDirectoryElement : HTMLElement {\n open var compact: Boolean\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [HTMLFontElement](https://developer.mozilla.org/en/docs/Web/API/HTMLFontElement) to Kotlin\n */\npublic external abstract class HTMLFontElement : HTMLElement {\n open var color: String\n open var face: String\n open var size: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external interface External {\n fun AddSearchProvider()\n fun IsSearchProviderInstalled()\n}\n\npublic external interface EventInit {\n var bubbles: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var cancelable: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var composed: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun EventInit(bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): EventInit {\n val o = js(\"({})\")\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [CustomEvent](https://developer.mozilla.org/en/docs/Web/API/CustomEvent) to Kotlin\n */\npublic external open class CustomEvent(type: String, eventInitDict: CustomEventInit = definedExternally) : Event {\n open val detail: Any?\n fun initCustomEvent(type: String, bubbles: Boolean, cancelable: Boolean, detail: Any?)\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface CustomEventInit : EventInit {\n var detail: Any? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun CustomEventInit(detail: Any? = null, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): CustomEventInit {\n val o = js(\"({})\")\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\npublic external interface EventListenerOptions {\n var capture: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun EventListenerOptions(capture: Boolean? = false): EventListenerOptions {\n val o = js(\"({})\")\n o[\"capture\"] = capture\n return o\n}\n\npublic external interface AddEventListenerOptions : EventListenerOptions {\n var passive: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var once: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun AddEventListenerOptions(passive: Boolean? = false, once: Boolean? = false, capture: Boolean? = false): AddEventListenerOptions {\n val o = js(\"({})\")\n o[\"passive\"] = passive\n o[\"once\"] = once\n o[\"capture\"] = capture\n return o\n}\n\npublic external interface NonElementParentNode {\n fun getElementById(elementId: String): Element?\n}\n\n/**\n * Exposes the JavaScript [DocumentOrShadowRoot](https://developer.mozilla.org/en/docs/Web/API/DocumentOrShadowRoot) to Kotlin\n */\npublic external interface DocumentOrShadowRoot {\n val fullscreenElement: Element?\n get() = definedExternally\n}\n\n/**\n * Exposes the JavaScript [ParentNode](https://developer.mozilla.org/en/docs/Web/API/ParentNode) to Kotlin\n */\npublic external interface ParentNode {\n val children: HTMLCollection\n val firstElementChild: Element?\n get() = definedExternally\n val lastElementChild: Element?\n get() = definedExternally\n val childElementCount: Int\n fun prepend(vararg nodes: dynamic)\n fun append(vararg nodes: dynamic)\n fun querySelector(selectors: String): Element?\n fun querySelectorAll(selectors: String): NodeList\n}\n\n/**\n * Exposes the JavaScript [NonDocumentTypeChildNode](https://developer.mozilla.org/en/docs/Web/API/NonDocumentTypeChildNode) to Kotlin\n */\npublic external interface NonDocumentTypeChildNode {\n val previousElementSibling: Element?\n get() = definedExternally\n val nextElementSibling: Element?\n get() = definedExternally\n}\n\n/**\n * Exposes the JavaScript [ChildNode](https://developer.mozilla.org/en/docs/Web/API/ChildNode) to Kotlin\n */\npublic external interface ChildNode {\n fun before(vararg nodes: dynamic)\n fun after(vararg nodes: dynamic)\n fun replaceWith(vararg nodes: dynamic)\n fun remove()\n}\n\n/**\n * Exposes the JavaScript [Slotable](https://developer.mozilla.org/en/docs/Web/API/Slotable) to Kotlin\n */\npublic external interface Slotable {\n val assignedSlot: HTMLSlotElement?\n get() = definedExternally\n}\n\n/**\n * Exposes the JavaScript [NodeList](https://developer.mozilla.org/en/docs/Web/API/NodeList) to Kotlin\n */\npublic external abstract class NodeList : ItemArrayLike {\n override fun item(index: Int): Node?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun NodeList.get(index: Int): Node? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [HTMLCollection](https://developer.mozilla.org/en/docs/Web/API/HTMLCollection) to Kotlin\n */\npublic external abstract class HTMLCollection : ItemArrayLike, UnionElementOrHTMLCollection {\n override fun item(index: Int): Element?\n fun namedItem(name: String): Element?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun HTMLCollection.get(index: Int): Element? = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun HTMLCollection.get(name: String): Element? = asDynamic()[name]\n\n/**\n * Exposes the JavaScript [MutationObserver](https://developer.mozilla.org/en/docs/Web/API/MutationObserver) to Kotlin\n */\npublic external open class MutationObserver(callback: (Array, MutationObserver) -> Unit) {\n fun observe(target: Node, options: MutationObserverInit = definedExternally)\n fun disconnect()\n fun takeRecords(): Array\n}\n\n/**\n * Exposes the JavaScript [MutationObserverInit](https://developer.mozilla.org/en/docs/Web/API/MutationObserverInit) to Kotlin\n */\npublic external interface MutationObserverInit {\n var childList: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var attributes: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var characterData: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var subtree: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var attributeOldValue: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var characterDataOldValue: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var attributeFilter: Array?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MutationObserverInit(childList: Boolean? = false, attributes: Boolean? = undefined, characterData: Boolean? = undefined, subtree: Boolean? = false, attributeOldValue: Boolean? = undefined, characterDataOldValue: Boolean? = undefined, attributeFilter: Array? = undefined): MutationObserverInit {\n val o = js(\"({})\")\n o[\"childList\"] = childList\n o[\"attributes\"] = attributes\n o[\"characterData\"] = characterData\n o[\"subtree\"] = subtree\n o[\"attributeOldValue\"] = attributeOldValue\n o[\"characterDataOldValue\"] = characterDataOldValue\n o[\"attributeFilter\"] = attributeFilter\n return o\n}\n\n/**\n * Exposes the JavaScript [MutationRecord](https://developer.mozilla.org/en/docs/Web/API/MutationRecord) to Kotlin\n */\npublic external abstract class MutationRecord {\n open val type: String\n open val target: Node\n open val addedNodes: NodeList\n open val removedNodes: NodeList\n open val previousSibling: Node?\n open val nextSibling: Node?\n open val attributeName: String?\n open val attributeNamespace: String?\n open val oldValue: String?\n}\n\n/**\n * Exposes the JavaScript [Node](https://developer.mozilla.org/en/docs/Web/API/Node) to Kotlin\n */\npublic external abstract class Node : EventTarget {\n open val nodeType: Short\n open val nodeName: String\n open val baseURI: String\n open val isConnected: Boolean\n open val ownerDocument: Document?\n open val parentNode: Node?\n open val parentElement: Element?\n open val childNodes: NodeList\n open val firstChild: Node?\n open val lastChild: Node?\n open val previousSibling: Node?\n open val nextSibling: Node?\n open var nodeValue: String?\n open var textContent: String?\n fun getRootNode(options: GetRootNodeOptions = definedExternally): Node\n fun hasChildNodes(): Boolean\n fun normalize()\n fun cloneNode(deep: Boolean = definedExternally): Node\n fun isEqualNode(otherNode: Node?): Boolean\n fun isSameNode(otherNode: Node?): Boolean\n fun compareDocumentPosition(other: Node): Short\n fun contains(other: Node?): Boolean\n fun lookupPrefix(namespace: String?): String?\n fun lookupNamespaceURI(prefix: String?): String?\n fun isDefaultNamespace(namespace: String?): Boolean\n fun insertBefore(node: Node, child: Node?): Node\n fun appendChild(node: Node): Node\n fun replaceChild(node: Node, child: Node): Node\n fun removeChild(child: Node): Node\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external interface GetRootNodeOptions {\n var composed: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun GetRootNodeOptions(composed: Boolean? = false): GetRootNodeOptions {\n val o = js(\"({})\")\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [Document](https://developer.mozilla.org/en/docs/Web/API/Document) to Kotlin\n */\npublic external open class Document : Node, GlobalEventHandlers, DocumentAndElementEventHandlers, NonElementParentNode, DocumentOrShadowRoot, ParentNode, GeometryUtils {\n open val implementation: DOMImplementation\n open val URL: String\n open val documentURI: String\n open val origin: String\n open val compatMode: String\n open val characterSet: String\n open val charset: String\n open val inputEncoding: String\n open val contentType: String\n open val doctype: DocumentType?\n open val documentElement: Element?\n open val location: Location?\n var domain: String\n open val referrer: String\n var cookie: String\n open val lastModified: String\n open val readyState: DocumentReadyState\n var title: String\n var dir: String\n var body: HTMLElement?\n open val head: HTMLHeadElement?\n open val images: HTMLCollection\n open val embeds: HTMLCollection\n open val plugins: HTMLCollection\n open val links: HTMLCollection\n open val forms: HTMLCollection\n open val scripts: HTMLCollection\n open val currentScript: HTMLOrSVGScriptElement?\n open val defaultView: Window?\n open val activeElement: Element?\n var designMode: String\n var onreadystatechange: ((Event) -> dynamic)?\n var fgColor: String\n var linkColor: String\n var vlinkColor: String\n var alinkColor: String\n var bgColor: String\n open val anchors: HTMLCollection\n open val applets: HTMLCollection\n open val all: HTMLAllCollection\n open val scrollingElement: Element?\n open val styleSheets: StyleSheetList\n open val rootElement: SVGSVGElement?\n open val fullscreenEnabled: Boolean\n open val fullscreen: Boolean\n var onfullscreenchange: ((Event) -> dynamic)?\n var onfullscreenerror: ((Event) -> dynamic)?\n override var onabort: ((Event) -> dynamic)?\n override var onblur: ((FocusEvent) -> dynamic)?\n override var oncancel: ((Event) -> dynamic)?\n override var oncanplay: ((Event) -> dynamic)?\n override var oncanplaythrough: ((Event) -> dynamic)?\n override var onchange: ((Event) -> dynamic)?\n override var onclick: ((MouseEvent) -> dynamic)?\n override var onclose: ((Event) -> dynamic)?\n override var oncontextmenu: ((MouseEvent) -> dynamic)?\n override var oncuechange: ((Event) -> dynamic)?\n override var ondblclick: ((MouseEvent) -> dynamic)?\n override var ondrag: ((DragEvent) -> dynamic)?\n override var ondragend: ((DragEvent) -> dynamic)?\n override var ondragenter: ((DragEvent) -> dynamic)?\n override var ondragexit: ((DragEvent) -> dynamic)?\n override var ondragleave: ((DragEvent) -> dynamic)?\n override var ondragover: ((DragEvent) -> dynamic)?\n override var ondragstart: ((DragEvent) -> dynamic)?\n override var ondrop: ((DragEvent) -> dynamic)?\n override var ondurationchange: ((Event) -> dynamic)?\n override var onemptied: ((Event) -> dynamic)?\n override var onended: ((Event) -> dynamic)?\n override var onerror: ((dynamic, String, Int, Int, Any?) -> dynamic)?\n override var onfocus: ((FocusEvent) -> dynamic)?\n override var oninput: ((InputEvent) -> dynamic)?\n override var oninvalid: ((Event) -> dynamic)?\n override var onkeydown: ((KeyboardEvent) -> dynamic)?\n override var onkeypress: ((KeyboardEvent) -> dynamic)?\n override var onkeyup: ((KeyboardEvent) -> dynamic)?\n override var onload: ((Event) -> dynamic)?\n override var onloadeddata: ((Event) -> dynamic)?\n override var onloadedmetadata: ((Event) -> dynamic)?\n override var onloadend: ((Event) -> dynamic)?\n override var onloadstart: ((ProgressEvent) -> dynamic)?\n override var onmousedown: ((MouseEvent) -> dynamic)?\n override var onmouseenter: ((MouseEvent) -> dynamic)?\n override var onmouseleave: ((MouseEvent) -> dynamic)?\n override var onmousemove: ((MouseEvent) -> dynamic)?\n override var onmouseout: ((MouseEvent) -> dynamic)?\n override var onmouseover: ((MouseEvent) -> dynamic)?\n override var onmouseup: ((MouseEvent) -> dynamic)?\n override var onwheel: ((WheelEvent) -> dynamic)?\n override var onpause: ((Event) -> dynamic)?\n override var onplay: ((Event) -> dynamic)?\n override var onplaying: ((Event) -> dynamic)?\n override var onprogress: ((ProgressEvent) -> dynamic)?\n override var onratechange: ((Event) -> dynamic)?\n override var onreset: ((Event) -> dynamic)?\n override var onresize: ((Event) -> dynamic)?\n override var onscroll: ((Event) -> dynamic)?\n override var onseeked: ((Event) -> dynamic)?\n override var onseeking: ((Event) -> dynamic)?\n override var onselect: ((Event) -> dynamic)?\n override var onshow: ((Event) -> dynamic)?\n override var onstalled: ((Event) -> dynamic)?\n override var onsubmit: ((Event) -> dynamic)?\n override var onsuspend: ((Event) -> dynamic)?\n override var ontimeupdate: ((Event) -> dynamic)?\n override var ontoggle: ((Event) -> dynamic)?\n override var onvolumechange: ((Event) -> dynamic)?\n override var onwaiting: ((Event) -> dynamic)?\n override var ongotpointercapture: ((PointerEvent) -> dynamic)?\n override var onlostpointercapture: ((PointerEvent) -> dynamic)?\n override var onpointerdown: ((PointerEvent) -> dynamic)?\n override var onpointermove: ((PointerEvent) -> dynamic)?\n override var onpointerup: ((PointerEvent) -> dynamic)?\n override var onpointercancel: ((PointerEvent) -> dynamic)?\n override var onpointerover: ((PointerEvent) -> dynamic)?\n override var onpointerout: ((PointerEvent) -> dynamic)?\n override var onpointerenter: ((PointerEvent) -> dynamic)?\n override var onpointerleave: ((PointerEvent) -> dynamic)?\n override var oncopy: ((ClipboardEvent) -> dynamic)?\n override var oncut: ((ClipboardEvent) -> dynamic)?\n override var onpaste: ((ClipboardEvent) -> dynamic)?\n override val fullscreenElement: Element?\n override val children: HTMLCollection\n override val firstElementChild: Element?\n override val lastElementChild: Element?\n override val childElementCount: Int\n fun getElementsByTagName(qualifiedName: String): HTMLCollection\n fun getElementsByTagNameNS(namespace: String?, localName: String): HTMLCollection\n fun getElementsByClassName(classNames: String): HTMLCollection\n fun createElement(localName: String, options: ElementCreationOptions = definedExternally): Element\n fun createElementNS(namespace: String?, qualifiedName: String, options: ElementCreationOptions = definedExternally): Element\n fun createDocumentFragment(): DocumentFragment\n fun createTextNode(data: String): Text\n fun createCDATASection(data: String): CDATASection\n fun createComment(data: String): Comment\n fun createProcessingInstruction(target: String, data: String): ProcessingInstruction\n fun importNode(node: Node, deep: Boolean = definedExternally): Node\n fun adoptNode(node: Node): Node\n fun createAttribute(localName: String): Attr\n fun createAttributeNS(namespace: String?, qualifiedName: String): Attr\n fun createEvent(`interface`: String): Event\n fun createRange(): Range\n fun createNodeIterator(root: Node, whatToShow: Int = definedExternally, filter: NodeFilter? = definedExternally): NodeIterator\n fun createNodeIterator(root: Node, whatToShow: Int = definedExternally, filter: ((Node) -> Short)? = definedExternally): NodeIterator\n fun createTreeWalker(root: Node, whatToShow: Int = definedExternally, filter: NodeFilter? = definedExternally): TreeWalker\n fun createTreeWalker(root: Node, whatToShow: Int = definedExternally, filter: ((Node) -> Short)? = definedExternally): TreeWalker\n fun getElementsByName(elementName: String): NodeList\n fun open(type: String = definedExternally, replace: String = definedExternally): Document\n fun open(url: String, name: String, features: String): Window\n fun close()\n fun write(vararg text: String)\n fun writeln(vararg text: String)\n fun hasFocus(): Boolean\n fun execCommand(commandId: String, showUI: Boolean = definedExternally, value: String = definedExternally): Boolean\n fun queryCommandEnabled(commandId: String): Boolean\n fun queryCommandIndeterm(commandId: String): Boolean\n fun queryCommandState(commandId: String): Boolean\n fun queryCommandSupported(commandId: String): Boolean\n fun queryCommandValue(commandId: String): String\n fun clear()\n fun captureEvents()\n fun releaseEvents()\n fun elementFromPoint(x: Double, y: Double): Element?\n fun elementsFromPoint(x: Double, y: Double): Array\n fun caretPositionFromPoint(x: Double, y: Double): CaretPosition?\n fun createTouch(view: Window, target: EventTarget, identifier: Int, pageX: Int, pageY: Int, screenX: Int, screenY: Int): Touch\n fun createTouchList(vararg touches: Touch): TouchList\n fun exitFullscreen(): Promise\n override fun getElementById(elementId: String): Element?\n override fun prepend(vararg nodes: dynamic)\n override fun append(vararg nodes: dynamic)\n override fun querySelector(selectors: String): Element?\n override fun querySelectorAll(selectors: String): NodeList\n override fun getBoxQuads(options: BoxQuadOptions /* = definedExternally */): Array\n override fun convertQuadFromNode(quad: dynamic, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertRectFromNode(rect: DOMRectReadOnly, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertPointFromNode(point: DOMPointInit, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Document.get(name: String): dynamic = asDynamic()[name]\n\n/**\n * Exposes the JavaScript [XMLDocument](https://developer.mozilla.org/en/docs/Web/API/XMLDocument) to Kotlin\n */\npublic external open class XMLDocument : Document {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external interface ElementCreationOptions {\n var `is`: String?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ElementCreationOptions(`is`: String? = undefined): ElementCreationOptions {\n val o = js(\"({})\")\n o[\"is\"] = `is`\n return o\n}\n\n/**\n * Exposes the JavaScript [DOMImplementation](https://developer.mozilla.org/en/docs/Web/API/DOMImplementation) to Kotlin\n */\npublic external abstract class DOMImplementation {\n fun createDocumentType(qualifiedName: String, publicId: String, systemId: String): DocumentType\n fun createDocument(namespace: String?, qualifiedName: String, doctype: DocumentType? = definedExternally): XMLDocument\n fun createHTMLDocument(title: String = definedExternally): Document\n fun hasFeature(): Boolean\n}\n\n/**\n * Exposes the JavaScript [DocumentType](https://developer.mozilla.org/en/docs/Web/API/DocumentType) to Kotlin\n */\npublic external abstract class DocumentType : Node, ChildNode {\n open val name: String\n open val publicId: String\n open val systemId: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [DocumentFragment](https://developer.mozilla.org/en/docs/Web/API/DocumentFragment) to Kotlin\n */\npublic external open class DocumentFragment : Node, NonElementParentNode, ParentNode {\n override val children: HTMLCollection\n override val firstElementChild: Element?\n override val lastElementChild: Element?\n override val childElementCount: Int\n override fun getElementById(elementId: String): Element?\n override fun prepend(vararg nodes: dynamic)\n override fun append(vararg nodes: dynamic)\n override fun querySelector(selectors: String): Element?\n override fun querySelectorAll(selectors: String): NodeList\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [ShadowRoot](https://developer.mozilla.org/en/docs/Web/API/ShadowRoot) to Kotlin\n */\npublic external open class ShadowRoot : DocumentFragment, DocumentOrShadowRoot {\n open val mode: ShadowRootMode\n open val host: Element\n override val fullscreenElement: Element?\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [Element](https://developer.mozilla.org/en/docs/Web/API/Element) to Kotlin\n */\npublic external abstract class Element : Node, ParentNode, NonDocumentTypeChildNode, ChildNode, Slotable, GeometryUtils, UnionElementOrHTMLCollection, UnionElementOrRadioNodeList, UnionElementOrMouseEvent, UnionElementOrProcessingInstruction {\n open val namespaceURI: String?\n open val prefix: String?\n open val localName: String\n open val tagName: String\n open var id: String\n open var className: String\n open val classList: DOMTokenList\n open var slot: String\n open val attributes: NamedNodeMap\n open val shadowRoot: ShadowRoot?\n open var scrollTop: Double\n open var scrollLeft: Double\n open val scrollWidth: Int\n open val scrollHeight: Int\n open val clientTop: Int\n open val clientLeft: Int\n open val clientWidth: Int\n open val clientHeight: Int\n open var innerHTML: String\n open var outerHTML: String\n fun hasAttributes(): Boolean\n fun getAttributeNames(): Array\n fun getAttribute(qualifiedName: String): String?\n fun getAttributeNS(namespace: String?, localName: String): String?\n fun setAttribute(qualifiedName: String, value: String)\n fun setAttributeNS(namespace: String?, qualifiedName: String, value: String)\n fun removeAttribute(qualifiedName: String)\n fun removeAttributeNS(namespace: String?, localName: String)\n fun hasAttribute(qualifiedName: String): Boolean\n fun hasAttributeNS(namespace: String?, localName: String): Boolean\n fun getAttributeNode(qualifiedName: String): Attr?\n fun getAttributeNodeNS(namespace: String?, localName: String): Attr?\n fun setAttributeNode(attr: Attr): Attr?\n fun setAttributeNodeNS(attr: Attr): Attr?\n fun removeAttributeNode(attr: Attr): Attr\n fun attachShadow(init: ShadowRootInit): ShadowRoot\n fun closest(selectors: String): Element?\n fun matches(selectors: String): Boolean\n fun webkitMatchesSelector(selectors: String): Boolean\n fun getElementsByTagName(qualifiedName: String): HTMLCollection\n fun getElementsByTagNameNS(namespace: String?, localName: String): HTMLCollection\n fun getElementsByClassName(classNames: String): HTMLCollection\n fun insertAdjacentElement(where: String, element: Element): Element?\n fun insertAdjacentText(where: String, data: String)\n fun getClientRects(): Array\n fun getBoundingClientRect(): DOMRect\n fun scrollIntoView()\n fun scrollIntoView(arg: dynamic)\n fun scroll(options: ScrollToOptions = definedExternally)\n fun scroll(x: Double, y: Double)\n fun scrollTo(options: ScrollToOptions = definedExternally)\n fun scrollTo(x: Double, y: Double)\n fun scrollBy(options: ScrollToOptions = definedExternally)\n fun scrollBy(x: Double, y: Double)\n fun insertAdjacentHTML(position: String, text: String)\n fun setPointerCapture(pointerId: Int)\n fun releasePointerCapture(pointerId: Int)\n fun hasPointerCapture(pointerId: Int): Boolean\n fun requestFullscreen(): Promise\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external interface ShadowRootInit {\n var mode: ShadowRootMode?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ShadowRootInit(mode: ShadowRootMode?): ShadowRootInit {\n val o = js(\"({})\")\n o[\"mode\"] = mode\n return o\n}\n\n/**\n * Exposes the JavaScript [NamedNodeMap](https://developer.mozilla.org/en/docs/Web/API/NamedNodeMap) to Kotlin\n */\npublic external abstract class NamedNodeMap : ItemArrayLike {\n fun getNamedItemNS(namespace: String?, localName: String): Attr?\n fun setNamedItem(attr: Attr): Attr?\n fun setNamedItemNS(attr: Attr): Attr?\n fun removeNamedItem(qualifiedName: String): Attr\n fun removeNamedItemNS(namespace: String?, localName: String): Attr\n override fun item(index: Int): Attr?\n fun getNamedItem(qualifiedName: String): Attr?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun NamedNodeMap.get(index: Int): Attr? = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun NamedNodeMap.get(qualifiedName: String): Attr? = asDynamic()[qualifiedName]\n\n/**\n * Exposes the JavaScript [Attr](https://developer.mozilla.org/en/docs/Web/API/Attr) to Kotlin\n */\npublic external abstract class Attr : Node {\n open val namespaceURI: String?\n open val prefix: String?\n open val localName: String\n open val name: String\n open var value: String\n open val ownerElement: Element?\n open val specified: Boolean\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [CharacterData](https://developer.mozilla.org/en/docs/Web/API/CharacterData) to Kotlin\n */\npublic external abstract class CharacterData : Node, NonDocumentTypeChildNode, ChildNode {\n open var data: String\n open val length: Int\n fun substringData(offset: Int, count: Int): String\n fun appendData(data: String)\n fun insertData(offset: Int, data: String)\n fun deleteData(offset: Int, count: Int)\n fun replaceData(offset: Int, count: Int, data: String)\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [Text](https://developer.mozilla.org/en/docs/Web/API/Text) to Kotlin\n */\npublic external open class Text(data: String = definedExternally) : CharacterData, Slotable, GeometryUtils {\n open val wholeText: String\n override val assignedSlot: HTMLSlotElement?\n override val previousElementSibling: Element?\n override val nextElementSibling: Element?\n fun splitText(offset: Int): Text\n override fun getBoxQuads(options: BoxQuadOptions /* = definedExternally */): Array\n override fun convertQuadFromNode(quad: dynamic, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertRectFromNode(rect: DOMRectReadOnly, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertPointFromNode(point: DOMPointInit, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint\n override fun before(vararg nodes: dynamic)\n override fun after(vararg nodes: dynamic)\n override fun replaceWith(vararg nodes: dynamic)\n override fun remove()\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [CDATASection](https://developer.mozilla.org/en/docs/Web/API/CDATASection) to Kotlin\n */\npublic external open class CDATASection : Text {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [ProcessingInstruction](https://developer.mozilla.org/en/docs/Web/API/ProcessingInstruction) to Kotlin\n */\npublic external abstract class ProcessingInstruction : CharacterData, LinkStyle, UnionElementOrProcessingInstruction {\n open val target: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [Comment](https://developer.mozilla.org/en/docs/Web/API/Comment) to Kotlin\n */\npublic external open class Comment(data: String = definedExternally) : CharacterData {\n override val previousElementSibling: Element?\n override val nextElementSibling: Element?\n override fun before(vararg nodes: dynamic)\n override fun after(vararg nodes: dynamic)\n override fun replaceWith(vararg nodes: dynamic)\n override fun remove()\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [Range](https://developer.mozilla.org/en/docs/Web/API/Range) to Kotlin\n */\npublic external open class Range {\n open val startContainer: Node\n open val startOffset: Int\n open val endContainer: Node\n open val endOffset: Int\n open val collapsed: Boolean\n open val commonAncestorContainer: Node\n fun setStart(node: Node, offset: Int)\n fun setEnd(node: Node, offset: Int)\n fun setStartBefore(node: Node)\n fun setStartAfter(node: Node)\n fun setEndBefore(node: Node)\n fun setEndAfter(node: Node)\n fun collapse(toStart: Boolean = definedExternally)\n fun selectNode(node: Node)\n fun selectNodeContents(node: Node)\n fun compareBoundaryPoints(how: Short, sourceRange: Range): Short\n fun deleteContents()\n fun extractContents(): DocumentFragment\n fun cloneContents(): DocumentFragment\n fun insertNode(node: Node)\n fun surroundContents(newParent: Node)\n fun cloneRange(): Range\n fun detach()\n fun isPointInRange(node: Node, offset: Int): Boolean\n fun comparePoint(node: Node, offset: Int): Short\n fun intersectsNode(node: Node): Boolean\n fun getClientRects(): Array\n fun getBoundingClientRect(): DOMRect\n fun createContextualFragment(fragment: String): DocumentFragment\n\n companion object {\n val START_TO_START: Short\n val START_TO_END: Short\n val END_TO_END: Short\n val END_TO_START: Short\n }\n}\n\n/**\n * Exposes the JavaScript [NodeIterator](https://developer.mozilla.org/en/docs/Web/API/NodeIterator) to Kotlin\n */\npublic external abstract class NodeIterator {\n open val root: Node\n open val referenceNode: Node\n open val pointerBeforeReferenceNode: Boolean\n open val whatToShow: Int\n open val filter: NodeFilter?\n fun nextNode(): Node?\n fun previousNode(): Node?\n fun detach()\n}\n\n/**\n * Exposes the JavaScript [TreeWalker](https://developer.mozilla.org/en/docs/Web/API/TreeWalker) to Kotlin\n */\npublic external abstract class TreeWalker {\n open val root: Node\n open val whatToShow: Int\n open val filter: NodeFilter?\n open var currentNode: Node\n fun parentNode(): Node?\n fun firstChild(): Node?\n fun lastChild(): Node?\n fun previousSibling(): Node?\n fun nextSibling(): Node?\n fun previousNode(): Node?\n fun nextNode(): Node?\n}\n\n/**\n * Exposes the JavaScript [NodeFilter](https://developer.mozilla.org/en/docs/Web/API/NodeFilter) to Kotlin\n */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface NodeFilter {\n fun acceptNode(node: Node): Short\n\n companion object {\n val FILTER_ACCEPT: Short\n val FILTER_REJECT: Short\n val FILTER_SKIP: Short\n val SHOW_ALL: Int\n val SHOW_ELEMENT: Int\n val SHOW_ATTRIBUTE: Int\n val SHOW_TEXT: Int\n val SHOW_CDATA_SECTION: Int\n val SHOW_ENTITY_REFERENCE: Int\n val SHOW_ENTITY: Int\n val SHOW_PROCESSING_INSTRUCTION: Int\n val SHOW_COMMENT: Int\n val SHOW_DOCUMENT: Int\n val SHOW_DOCUMENT_TYPE: Int\n val SHOW_DOCUMENT_FRAGMENT: Int\n val SHOW_NOTATION: Int\n }\n}\n\n/**\n * Exposes the JavaScript [DOMTokenList](https://developer.mozilla.org/en/docs/Web/API/DOMTokenList) to Kotlin\n */\npublic external abstract class DOMTokenList : ItemArrayLike {\n open var value: String\n fun contains(token: String): Boolean\n fun add(vararg tokens: String)\n fun remove(vararg tokens: String)\n fun toggle(token: String, force: Boolean = definedExternally): Boolean\n fun replace(token: String, newToken: String)\n fun supports(token: String): Boolean\n override fun item(index: Int): String?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun DOMTokenList.get(index: Int): String? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [DOMPointReadOnly](https://developer.mozilla.org/en/docs/Web/API/DOMPointReadOnly) to Kotlin\n */\npublic external open class DOMPointReadOnly(x: Double, y: Double, z: Double, w: Double) {\n open val x: Double\n open val y: Double\n open val z: Double\n open val w: Double\n fun matrixTransform(matrix: DOMMatrixReadOnly): DOMPoint\n}\n\n/**\n * Exposes the JavaScript [DOMPoint](https://developer.mozilla.org/en/docs/Web/API/DOMPoint) to Kotlin\n */\npublic external open class DOMPoint : DOMPointReadOnly {\n constructor(point: DOMPointInit)\n constructor(x: Double = definedExternally, y: Double = definedExternally, z: Double = definedExternally, w: Double = definedExternally)\n override var x: Double\n override var y: Double\n override var z: Double\n override var w: Double\n}\n\n/**\n * Exposes the JavaScript [DOMPointInit](https://developer.mozilla.org/en/docs/Web/API/DOMPointInit) to Kotlin\n */\npublic external interface DOMPointInit {\n var x: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var y: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var z: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var w: Double? /* = 1.0 */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun DOMPointInit(x: Double? = 0.0, y: Double? = 0.0, z: Double? = 0.0, w: Double? = 1.0): DOMPointInit {\n val o = js(\"({})\")\n o[\"x\"] = x\n o[\"y\"] = y\n o[\"z\"] = z\n o[\"w\"] = w\n return o\n}\n\n/**\n * Exposes the JavaScript [DOMRect](https://developer.mozilla.org/en/docs/Web/API/DOMRect) to Kotlin\n */\npublic external open class DOMRect(x: Double = definedExternally, y: Double = definedExternally, width: Double = definedExternally, height: Double = definedExternally) : DOMRectReadOnly {\n override var x: Double\n override var y: Double\n override var width: Double\n override var height: Double\n}\n\n/**\n * Exposes the JavaScript [DOMRectReadOnly](https://developer.mozilla.org/en/docs/Web/API/DOMRectReadOnly) to Kotlin\n */\npublic external open class DOMRectReadOnly(x: Double, y: Double, width: Double, height: Double) {\n open val x: Double\n open val y: Double\n open val width: Double\n open val height: Double\n open val top: Double\n open val right: Double\n open val bottom: Double\n open val left: Double\n}\n\npublic external interface DOMRectInit {\n var x: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var y: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var width: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n var height: Double? /* = 0.0 */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun DOMRectInit(x: Double? = 0.0, y: Double? = 0.0, width: Double? = 0.0, height: Double? = 0.0): DOMRectInit {\n val o = js(\"({})\")\n o[\"x\"] = x\n o[\"y\"] = y\n o[\"width\"] = width\n o[\"height\"] = height\n return o\n}\n\npublic external interface DOMRectList : ItemArrayLike {\n override fun item(index: Int): DOMRect?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun DOMRectList.get(index: Int): DOMRect? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [DOMQuad](https://developer.mozilla.org/en/docs/Web/API/DOMQuad) to Kotlin\n */\npublic external open class DOMQuad {\n constructor(p1: DOMPointInit = definedExternally, p2: DOMPointInit = definedExternally, p3: DOMPointInit = definedExternally, p4: DOMPointInit = definedExternally)\n constructor(rect: DOMRectInit)\n open val p1: DOMPoint\n open val p2: DOMPoint\n open val p3: DOMPoint\n open val p4: DOMPoint\n open val bounds: DOMRectReadOnly\n}\n\n/**\n * Exposes the JavaScript [DOMMatrixReadOnly](https://developer.mozilla.org/en/docs/Web/API/DOMMatrixReadOnly) to Kotlin\n */\npublic external open class DOMMatrixReadOnly(numberSequence: Array) {\n open val a: Double\n open val b: Double\n open val c: Double\n open val d: Double\n open val e: Double\n open val f: Double\n open val m11: Double\n open val m12: Double\n open val m13: Double\n open val m14: Double\n open val m21: Double\n open val m22: Double\n open val m23: Double\n open val m24: Double\n open val m31: Double\n open val m32: Double\n open val m33: Double\n open val m34: Double\n open val m41: Double\n open val m42: Double\n open val m43: Double\n open val m44: Double\n open val is2D: Boolean\n open val isIdentity: Boolean\n fun translate(tx: Double, ty: Double, tz: Double = definedExternally): DOMMatrix\n fun scale(scale: Double, originX: Double = definedExternally, originY: Double = definedExternally): DOMMatrix\n fun scale3d(scale: Double, originX: Double = definedExternally, originY: Double = definedExternally, originZ: Double = definedExternally): DOMMatrix\n fun scaleNonUniform(scaleX: Double, scaleY: Double = definedExternally, scaleZ: Double = definedExternally, originX: Double = definedExternally, originY: Double = definedExternally, originZ: Double = definedExternally): DOMMatrix\n fun rotate(angle: Double, originX: Double = definedExternally, originY: Double = definedExternally): DOMMatrix\n fun rotateFromVector(x: Double, y: Double): DOMMatrix\n fun rotateAxisAngle(x: Double, y: Double, z: Double, angle: Double): DOMMatrix\n fun skewX(sx: Double): DOMMatrix\n fun skewY(sy: Double): DOMMatrix\n fun multiply(other: DOMMatrix): DOMMatrix\n fun flipX(): DOMMatrix\n fun flipY(): DOMMatrix\n fun inverse(): DOMMatrix\n fun transformPoint(point: DOMPointInit = definedExternally): DOMPoint\n fun toFloat32Array(): Float32Array\n fun toFloat64Array(): Float64Array\n}\n\n/**\n * Exposes the JavaScript [DOMMatrix](https://developer.mozilla.org/en/docs/Web/API/DOMMatrix) to Kotlin\n */\npublic external open class DOMMatrix() : DOMMatrixReadOnly {\n constructor(transformList: String)\n constructor(other: DOMMatrixReadOnly)\n constructor(array32: Float32Array)\n constructor(array64: Float64Array)\n constructor(numberSequence: Array)\n override var a: Double\n override var b: Double\n override var c: Double\n override var d: Double\n override var e: Double\n override var f: Double\n override var m11: Double\n override var m12: Double\n override var m13: Double\n override var m14: Double\n override var m21: Double\n override var m22: Double\n override var m23: Double\n override var m24: Double\n override var m31: Double\n override var m32: Double\n override var m33: Double\n override var m34: Double\n override var m41: Double\n override var m42: Double\n override var m43: Double\n override var m44: Double\n fun multiplySelf(other: DOMMatrix): DOMMatrix\n fun preMultiplySelf(other: DOMMatrix): DOMMatrix\n fun translateSelf(tx: Double, ty: Double, tz: Double = definedExternally): DOMMatrix\n fun scaleSelf(scale: Double, originX: Double = definedExternally, originY: Double = definedExternally): DOMMatrix\n fun scale3dSelf(scale: Double, originX: Double = definedExternally, originY: Double = definedExternally, originZ: Double = definedExternally): DOMMatrix\n fun scaleNonUniformSelf(scaleX: Double, scaleY: Double = definedExternally, scaleZ: Double = definedExternally, originX: Double = definedExternally, originY: Double = definedExternally, originZ: Double = definedExternally): DOMMatrix\n fun rotateSelf(angle: Double, originX: Double = definedExternally, originY: Double = definedExternally): DOMMatrix\n fun rotateFromVectorSelf(x: Double, y: Double): DOMMatrix\n fun rotateAxisAngleSelf(x: Double, y: Double, z: Double, angle: Double): DOMMatrix\n fun skewXSelf(sx: Double): DOMMatrix\n fun skewYSelf(sy: Double): DOMMatrix\n fun invertSelf(): DOMMatrix\n fun setMatrixValue(transformList: String): DOMMatrix\n}\n\npublic external interface ScrollOptions {\n var behavior: ScrollBehavior? /* = ScrollBehavior.AUTO */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ScrollOptions(behavior: ScrollBehavior? = ScrollBehavior.AUTO): ScrollOptions {\n val o = js(\"({})\")\n o[\"behavior\"] = behavior\n return o\n}\n\n/**\n * Exposes the JavaScript [ScrollToOptions](https://developer.mozilla.org/en/docs/Web/API/ScrollToOptions) to Kotlin\n */\npublic external interface ScrollToOptions : ScrollOptions {\n var left: Double?\n get() = definedExternally\n set(value) = definedExternally\n var top: Double?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ScrollToOptions(left: Double? = undefined, top: Double? = undefined, behavior: ScrollBehavior? = ScrollBehavior.AUTO): ScrollToOptions {\n val o = js(\"({})\")\n o[\"left\"] = left\n o[\"top\"] = top\n o[\"behavior\"] = behavior\n return o\n}\n\n/**\n * Exposes the JavaScript [MediaQueryList](https://developer.mozilla.org/en/docs/Web/API/MediaQueryList) to Kotlin\n */\npublic external abstract class MediaQueryList : EventTarget {\n open val media: String\n open val matches: Boolean\n open var onchange: ((Event) -> dynamic)?\n fun addListener(listener: EventListener?)\n fun addListener(listener: ((Event) -> Unit)?)\n fun removeListener(listener: EventListener?)\n fun removeListener(listener: ((Event) -> Unit)?)\n}\n\n/**\n * Exposes the JavaScript [MediaQueryListEvent](https://developer.mozilla.org/en/docs/Web/API/MediaQueryListEvent) to Kotlin\n */\npublic external open class MediaQueryListEvent(type: String, eventInitDict: MediaQueryListEventInit = definedExternally) : Event {\n open val media: String\n open val matches: Boolean\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface MediaQueryListEventInit : EventInit {\n var media: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var matches: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MediaQueryListEventInit(media: String? = \"\", matches: Boolean? = false, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): MediaQueryListEventInit {\n val o = js(\"({})\")\n o[\"media\"] = media\n o[\"matches\"] = matches\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [Screen](https://developer.mozilla.org/en/docs/Web/API/Screen) to Kotlin\n */\npublic external abstract class Screen {\n open val availWidth: Int\n open val availHeight: Int\n open val width: Int\n open val height: Int\n open val colorDepth: Int\n open val pixelDepth: Int\n}\n\n/**\n * Exposes the JavaScript [CaretPosition](https://developer.mozilla.org/en/docs/Web/API/CaretPosition) to Kotlin\n */\npublic external abstract class CaretPosition {\n open val offsetNode: Node\n open val offset: Int\n fun getClientRect(): DOMRect?\n}\n\npublic external interface ScrollIntoViewOptions : ScrollOptions {\n var block: ScrollLogicalPosition? /* = ScrollLogicalPosition.CENTER */\n get() = definedExternally\n set(value) = definedExternally\n var inline: ScrollLogicalPosition? /* = ScrollLogicalPosition.CENTER */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ScrollIntoViewOptions(block: ScrollLogicalPosition? = ScrollLogicalPosition.CENTER, inline: ScrollLogicalPosition? = ScrollLogicalPosition.CENTER, behavior: ScrollBehavior? = ScrollBehavior.AUTO): ScrollIntoViewOptions {\n val o = js(\"({})\")\n o[\"block\"] = block\n o[\"inline\"] = inline\n o[\"behavior\"] = behavior\n return o\n}\n\npublic external interface BoxQuadOptions {\n var box: CSSBoxType? /* = CSSBoxType.BORDER */\n get() = definedExternally\n set(value) = definedExternally\n var relativeTo: dynamic\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun BoxQuadOptions(box: CSSBoxType? = CSSBoxType.BORDER, relativeTo: dynamic = undefined): BoxQuadOptions {\n val o = js(\"({})\")\n o[\"box\"] = box\n o[\"relativeTo\"] = relativeTo\n return o\n}\n\npublic external interface ConvertCoordinateOptions {\n var fromBox: CSSBoxType? /* = CSSBoxType.BORDER */\n get() = definedExternally\n set(value) = definedExternally\n var toBox: CSSBoxType? /* = CSSBoxType.BORDER */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ConvertCoordinateOptions(fromBox: CSSBoxType? = CSSBoxType.BORDER, toBox: CSSBoxType? = CSSBoxType.BORDER): ConvertCoordinateOptions {\n val o = js(\"({})\")\n o[\"fromBox\"] = fromBox\n o[\"toBox\"] = toBox\n return o\n}\n\n/**\n * Exposes the JavaScript [GeometryUtils](https://developer.mozilla.org/en/docs/Web/API/GeometryUtils) to Kotlin\n */\npublic external interface GeometryUtils {\n fun getBoxQuads(options: BoxQuadOptions = definedExternally): Array\n fun convertQuadFromNode(quad: dynamic, from: dynamic, options: ConvertCoordinateOptions = definedExternally): DOMQuad\n fun convertRectFromNode(rect: DOMRectReadOnly, from: dynamic, options: ConvertCoordinateOptions = definedExternally): DOMQuad\n fun convertPointFromNode(point: DOMPointInit, from: dynamic, options: ConvertCoordinateOptions = definedExternally): DOMPoint\n}\n\n/**\n * Exposes the JavaScript [Touch](https://developer.mozilla.org/en/docs/Web/API/Touch) to Kotlin\n */\npublic external abstract class Touch {\n open val identifier: Int\n open val target: EventTarget\n open val screenX: Int\n open val screenY: Int\n open val clientX: Int\n open val clientY: Int\n open val pageX: Int\n open val pageY: Int\n open val region: String?\n}\n\npublic external abstract class TouchList : ItemArrayLike {\n override fun item(index: Int): Touch?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun TouchList.get(index: Int): Touch? = asDynamic()[index]\n\npublic external open class TouchEvent : UIEvent {\n open val touches: TouchList\n open val targetTouches: TouchList\n open val changedTouches: TouchList\n open val altKey: Boolean\n open val metaKey: Boolean\n open val ctrlKey: Boolean\n open val shiftKey: Boolean\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [Image](https://developer.mozilla.org/en/docs/Web/API/Image) to Kotlin\n */\npublic external open class Image(width: Int = definedExternally, height: Int = definedExternally) : HTMLImageElement {\n override var onabort: ((Event) -> dynamic)?\n override var onblur: ((FocusEvent) -> dynamic)?\n override var oncancel: ((Event) -> dynamic)?\n override var oncanplay: ((Event) -> dynamic)?\n override var oncanplaythrough: ((Event) -> dynamic)?\n override var onchange: ((Event) -> dynamic)?\n override var onclick: ((MouseEvent) -> dynamic)?\n override var onclose: ((Event) -> dynamic)?\n override var oncontextmenu: ((MouseEvent) -> dynamic)?\n override var oncuechange: ((Event) -> dynamic)?\n override var ondblclick: ((MouseEvent) -> dynamic)?\n override var ondrag: ((DragEvent) -> dynamic)?\n override var ondragend: ((DragEvent) -> dynamic)?\n override var ondragenter: ((DragEvent) -> dynamic)?\n override var ondragexit: ((DragEvent) -> dynamic)?\n override var ondragleave: ((DragEvent) -> dynamic)?\n override var ondragover: ((DragEvent) -> dynamic)?\n override var ondragstart: ((DragEvent) -> dynamic)?\n override var ondrop: ((DragEvent) -> dynamic)?\n override var ondurationchange: ((Event) -> dynamic)?\n override var onemptied: ((Event) -> dynamic)?\n override var onended: ((Event) -> dynamic)?\n override var onerror: ((dynamic, String, Int, Int, Any?) -> dynamic)?\n override var onfocus: ((FocusEvent) -> dynamic)?\n override var oninput: ((InputEvent) -> dynamic)?\n override var oninvalid: ((Event) -> dynamic)?\n override var onkeydown: ((KeyboardEvent) -> dynamic)?\n override var onkeypress: ((KeyboardEvent) -> dynamic)?\n override var onkeyup: ((KeyboardEvent) -> dynamic)?\n override var onload: ((Event) -> dynamic)?\n override var onloadeddata: ((Event) -> dynamic)?\n override var onloadedmetadata: ((Event) -> dynamic)?\n override var onloadend: ((Event) -> dynamic)?\n override var onloadstart: ((ProgressEvent) -> dynamic)?\n override var onmousedown: ((MouseEvent) -> dynamic)?\n override var onmouseenter: ((MouseEvent) -> dynamic)?\n override var onmouseleave: ((MouseEvent) -> dynamic)?\n override var onmousemove: ((MouseEvent) -> dynamic)?\n override var onmouseout: ((MouseEvent) -> dynamic)?\n override var onmouseover: ((MouseEvent) -> dynamic)?\n override var onmouseup: ((MouseEvent) -> dynamic)?\n override var onwheel: ((WheelEvent) -> dynamic)?\n override var onpause: ((Event) -> dynamic)?\n override var onplay: ((Event) -> dynamic)?\n override var onplaying: ((Event) -> dynamic)?\n override var onprogress: ((ProgressEvent) -> dynamic)?\n override var onratechange: ((Event) -> dynamic)?\n override var onreset: ((Event) -> dynamic)?\n override var onresize: ((Event) -> dynamic)?\n override var onscroll: ((Event) -> dynamic)?\n override var onseeked: ((Event) -> dynamic)?\n override var onseeking: ((Event) -> dynamic)?\n override var onselect: ((Event) -> dynamic)?\n override var onshow: ((Event) -> dynamic)?\n override var onstalled: ((Event) -> dynamic)?\n override var onsubmit: ((Event) -> dynamic)?\n override var onsuspend: ((Event) -> dynamic)?\n override var ontimeupdate: ((Event) -> dynamic)?\n override var ontoggle: ((Event) -> dynamic)?\n override var onvolumechange: ((Event) -> dynamic)?\n override var onwaiting: ((Event) -> dynamic)?\n override var ongotpointercapture: ((PointerEvent) -> dynamic)?\n override var onlostpointercapture: ((PointerEvent) -> dynamic)?\n override var onpointerdown: ((PointerEvent) -> dynamic)?\n override var onpointermove: ((PointerEvent) -> dynamic)?\n override var onpointerup: ((PointerEvent) -> dynamic)?\n override var onpointercancel: ((PointerEvent) -> dynamic)?\n override var onpointerover: ((PointerEvent) -> dynamic)?\n override var onpointerout: ((PointerEvent) -> dynamic)?\n override var onpointerenter: ((PointerEvent) -> dynamic)?\n override var onpointerleave: ((PointerEvent) -> dynamic)?\n override var oncopy: ((ClipboardEvent) -> dynamic)?\n override var oncut: ((ClipboardEvent) -> dynamic)?\n override var onpaste: ((ClipboardEvent) -> dynamic)?\n override var contentEditable: String\n override val isContentEditable: Boolean\n override val style: CSSStyleDeclaration\n override val children: HTMLCollection\n override val firstElementChild: Element?\n override val lastElementChild: Element?\n override val childElementCount: Int\n override val previousElementSibling: Element?\n override val nextElementSibling: Element?\n override val assignedSlot: HTMLSlotElement?\n override fun prepend(vararg nodes: dynamic)\n override fun append(vararg nodes: dynamic)\n override fun querySelector(selectors: String): Element?\n override fun querySelectorAll(selectors: String): NodeList\n override fun before(vararg nodes: dynamic)\n override fun after(vararg nodes: dynamic)\n override fun replaceWith(vararg nodes: dynamic)\n override fun remove()\n override fun getBoxQuads(options: BoxQuadOptions /* = definedExternally */): Array\n override fun convertQuadFromNode(quad: dynamic, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertRectFromNode(rect: DOMRectReadOnly, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertPointFromNode(point: DOMPointInit, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external open class Audio(src: String = definedExternally) : HTMLAudioElement {\n override var onabort: ((Event) -> dynamic)?\n override var onblur: ((FocusEvent) -> dynamic)?\n override var oncancel: ((Event) -> dynamic)?\n override var oncanplay: ((Event) -> dynamic)?\n override var oncanplaythrough: ((Event) -> dynamic)?\n override var onchange: ((Event) -> dynamic)?\n override var onclick: ((MouseEvent) -> dynamic)?\n override var onclose: ((Event) -> dynamic)?\n override var oncontextmenu: ((MouseEvent) -> dynamic)?\n override var oncuechange: ((Event) -> dynamic)?\n override var ondblclick: ((MouseEvent) -> dynamic)?\n override var ondrag: ((DragEvent) -> dynamic)?\n override var ondragend: ((DragEvent) -> dynamic)?\n override var ondragenter: ((DragEvent) -> dynamic)?\n override var ondragexit: ((DragEvent) -> dynamic)?\n override var ondragleave: ((DragEvent) -> dynamic)?\n override var ondragover: ((DragEvent) -> dynamic)?\n override var ondragstart: ((DragEvent) -> dynamic)?\n override var ondrop: ((DragEvent) -> dynamic)?\n override var ondurationchange: ((Event) -> dynamic)?\n override var onemptied: ((Event) -> dynamic)?\n override var onended: ((Event) -> dynamic)?\n override var onerror: ((dynamic, String, Int, Int, Any?) -> dynamic)?\n override var onfocus: ((FocusEvent) -> dynamic)?\n override var oninput: ((InputEvent) -> dynamic)?\n override var oninvalid: ((Event) -> dynamic)?\n override var onkeydown: ((KeyboardEvent) -> dynamic)?\n override var onkeypress: ((KeyboardEvent) -> dynamic)?\n override var onkeyup: ((KeyboardEvent) -> dynamic)?\n override var onload: ((Event) -> dynamic)?\n override var onloadeddata: ((Event) -> dynamic)?\n override var onloadedmetadata: ((Event) -> dynamic)?\n override var onloadend: ((Event) -> dynamic)?\n override var onloadstart: ((ProgressEvent) -> dynamic)?\n override var onmousedown: ((MouseEvent) -> dynamic)?\n override var onmouseenter: ((MouseEvent) -> dynamic)?\n override var onmouseleave: ((MouseEvent) -> dynamic)?\n override var onmousemove: ((MouseEvent) -> dynamic)?\n override var onmouseout: ((MouseEvent) -> dynamic)?\n override var onmouseover: ((MouseEvent) -> dynamic)?\n override var onmouseup: ((MouseEvent) -> dynamic)?\n override var onwheel: ((WheelEvent) -> dynamic)?\n override var onpause: ((Event) -> dynamic)?\n override var onplay: ((Event) -> dynamic)?\n override var onplaying: ((Event) -> dynamic)?\n override var onprogress: ((ProgressEvent) -> dynamic)?\n override var onratechange: ((Event) -> dynamic)?\n override var onreset: ((Event) -> dynamic)?\n override var onresize: ((Event) -> dynamic)?\n override var onscroll: ((Event) -> dynamic)?\n override var onseeked: ((Event) -> dynamic)?\n override var onseeking: ((Event) -> dynamic)?\n override var onselect: ((Event) -> dynamic)?\n override var onshow: ((Event) -> dynamic)?\n override var onstalled: ((Event) -> dynamic)?\n override var onsubmit: ((Event) -> dynamic)?\n override var onsuspend: ((Event) -> dynamic)?\n override var ontimeupdate: ((Event) -> dynamic)?\n override var ontoggle: ((Event) -> dynamic)?\n override var onvolumechange: ((Event) -> dynamic)?\n override var onwaiting: ((Event) -> dynamic)?\n override var ongotpointercapture: ((PointerEvent) -> dynamic)?\n override var onlostpointercapture: ((PointerEvent) -> dynamic)?\n override var onpointerdown: ((PointerEvent) -> dynamic)?\n override var onpointermove: ((PointerEvent) -> dynamic)?\n override var onpointerup: ((PointerEvent) -> dynamic)?\n override var onpointercancel: ((PointerEvent) -> dynamic)?\n override var onpointerover: ((PointerEvent) -> dynamic)?\n override var onpointerout: ((PointerEvent) -> dynamic)?\n override var onpointerenter: ((PointerEvent) -> dynamic)?\n override var onpointerleave: ((PointerEvent) -> dynamic)?\n override var oncopy: ((ClipboardEvent) -> dynamic)?\n override var oncut: ((ClipboardEvent) -> dynamic)?\n override var onpaste: ((ClipboardEvent) -> dynamic)?\n override var contentEditable: String\n override val isContentEditable: Boolean\n override val style: CSSStyleDeclaration\n override val children: HTMLCollection\n override val firstElementChild: Element?\n override val lastElementChild: Element?\n override val childElementCount: Int\n override val previousElementSibling: Element?\n override val nextElementSibling: Element?\n override val assignedSlot: HTMLSlotElement?\n override fun prepend(vararg nodes: dynamic)\n override fun append(vararg nodes: dynamic)\n override fun querySelector(selectors: String): Element?\n override fun querySelectorAll(selectors: String): NodeList\n override fun before(vararg nodes: dynamic)\n override fun after(vararg nodes: dynamic)\n override fun replaceWith(vararg nodes: dynamic)\n override fun remove()\n override fun getBoxQuads(options: BoxQuadOptions /* = definedExternally */): Array\n override fun convertQuadFromNode(quad: dynamic, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertRectFromNode(rect: DOMRectReadOnly, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertPointFromNode(point: DOMPointInit, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint\n\n companion object {\n val NETWORK_EMPTY: Short\n val NETWORK_IDLE: Short\n val NETWORK_LOADING: Short\n val NETWORK_NO_SOURCE: Short\n val HAVE_NOTHING: Short\n val HAVE_METADATA: Short\n val HAVE_CURRENT_DATA: Short\n val HAVE_FUTURE_DATA: Short\n val HAVE_ENOUGH_DATA: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [Option](https://developer.mozilla.org/en/docs/Web/API/Option) to Kotlin\n */\npublic external open class Option(text: String = definedExternally, value: String = definedExternally, defaultSelected: Boolean = definedExternally, selected: Boolean = definedExternally) : HTMLOptionElement {\n override var onabort: ((Event) -> dynamic)?\n override var onblur: ((FocusEvent) -> dynamic)?\n override var oncancel: ((Event) -> dynamic)?\n override var oncanplay: ((Event) -> dynamic)?\n override var oncanplaythrough: ((Event) -> dynamic)?\n override var onchange: ((Event) -> dynamic)?\n override var onclick: ((MouseEvent) -> dynamic)?\n override var onclose: ((Event) -> dynamic)?\n override var oncontextmenu: ((MouseEvent) -> dynamic)?\n override var oncuechange: ((Event) -> dynamic)?\n override var ondblclick: ((MouseEvent) -> dynamic)?\n override var ondrag: ((DragEvent) -> dynamic)?\n override var ondragend: ((DragEvent) -> dynamic)?\n override var ondragenter: ((DragEvent) -> dynamic)?\n override var ondragexit: ((DragEvent) -> dynamic)?\n override var ondragleave: ((DragEvent) -> dynamic)?\n override var ondragover: ((DragEvent) -> dynamic)?\n override var ondragstart: ((DragEvent) -> dynamic)?\n override var ondrop: ((DragEvent) -> dynamic)?\n override var ondurationchange: ((Event) -> dynamic)?\n override var onemptied: ((Event) -> dynamic)?\n override var onended: ((Event) -> dynamic)?\n override var onerror: ((dynamic, String, Int, Int, Any?) -> dynamic)?\n override var onfocus: ((FocusEvent) -> dynamic)?\n override var oninput: ((InputEvent) -> dynamic)?\n override var oninvalid: ((Event) -> dynamic)?\n override var onkeydown: ((KeyboardEvent) -> dynamic)?\n override var onkeypress: ((KeyboardEvent) -> dynamic)?\n override var onkeyup: ((KeyboardEvent) -> dynamic)?\n override var onload: ((Event) -> dynamic)?\n override var onloadeddata: ((Event) -> dynamic)?\n override var onloadedmetadata: ((Event) -> dynamic)?\n override var onloadend: ((Event) -> dynamic)?\n override var onloadstart: ((ProgressEvent) -> dynamic)?\n override var onmousedown: ((MouseEvent) -> dynamic)?\n override var onmouseenter: ((MouseEvent) -> dynamic)?\n override var onmouseleave: ((MouseEvent) -> dynamic)?\n override var onmousemove: ((MouseEvent) -> dynamic)?\n override var onmouseout: ((MouseEvent) -> dynamic)?\n override var onmouseover: ((MouseEvent) -> dynamic)?\n override var onmouseup: ((MouseEvent) -> dynamic)?\n override var onwheel: ((WheelEvent) -> dynamic)?\n override var onpause: ((Event) -> dynamic)?\n override var onplay: ((Event) -> dynamic)?\n override var onplaying: ((Event) -> dynamic)?\n override var onprogress: ((ProgressEvent) -> dynamic)?\n override var onratechange: ((Event) -> dynamic)?\n override var onreset: ((Event) -> dynamic)?\n override var onresize: ((Event) -> dynamic)?\n override var onscroll: ((Event) -> dynamic)?\n override var onseeked: ((Event) -> dynamic)?\n override var onseeking: ((Event) -> dynamic)?\n override var onselect: ((Event) -> dynamic)?\n override var onshow: ((Event) -> dynamic)?\n override var onstalled: ((Event) -> dynamic)?\n override var onsubmit: ((Event) -> dynamic)?\n override var onsuspend: ((Event) -> dynamic)?\n override var ontimeupdate: ((Event) -> dynamic)?\n override var ontoggle: ((Event) -> dynamic)?\n override var onvolumechange: ((Event) -> dynamic)?\n override var onwaiting: ((Event) -> dynamic)?\n override var ongotpointercapture: ((PointerEvent) -> dynamic)?\n override var onlostpointercapture: ((PointerEvent) -> dynamic)?\n override var onpointerdown: ((PointerEvent) -> dynamic)?\n override var onpointermove: ((PointerEvent) -> dynamic)?\n override var onpointerup: ((PointerEvent) -> dynamic)?\n override var onpointercancel: ((PointerEvent) -> dynamic)?\n override var onpointerover: ((PointerEvent) -> dynamic)?\n override var onpointerout: ((PointerEvent) -> dynamic)?\n override var onpointerenter: ((PointerEvent) -> dynamic)?\n override var onpointerleave: ((PointerEvent) -> dynamic)?\n override var oncopy: ((ClipboardEvent) -> dynamic)?\n override var oncut: ((ClipboardEvent) -> dynamic)?\n override var onpaste: ((ClipboardEvent) -> dynamic)?\n override var contentEditable: String\n override val isContentEditable: Boolean\n override val style: CSSStyleDeclaration\n override val children: HTMLCollection\n override val firstElementChild: Element?\n override val lastElementChild: Element?\n override val childElementCount: Int\n override val previousElementSibling: Element?\n override val nextElementSibling: Element?\n override val assignedSlot: HTMLSlotElement?\n override fun prepend(vararg nodes: dynamic)\n override fun append(vararg nodes: dynamic)\n override fun querySelector(selectors: String): Element?\n override fun querySelectorAll(selectors: String): NodeList\n override fun before(vararg nodes: dynamic)\n override fun after(vararg nodes: dynamic)\n override fun replaceWith(vararg nodes: dynamic)\n override fun remove()\n override fun getBoxQuads(options: BoxQuadOptions /* = definedExternally */): Array\n override fun convertQuadFromNode(quad: dynamic, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertRectFromNode(rect: DOMRectReadOnly, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad\n override fun convertPointFromNode(point: DOMPointInit, from: dynamic, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external interface UnionElementOrHTMLCollection\n\npublic external interface UnionElementOrRadioNodeList\n\npublic external interface UnionHTMLOptGroupElementOrHTMLOptionElement\n\npublic external interface UnionAudioTrackOrTextTrackOrVideoTrack\n\npublic external interface UnionElementOrMouseEvent\n\npublic external interface RenderingContext\n\npublic external interface HTMLOrSVGImageElement : CanvasImageSource\n\npublic external interface CanvasImageSource : ImageBitmapSource\n\npublic external interface ImageBitmapSource\n\npublic external interface UnionMessagePortOrWindowProxy\n\npublic external interface HTMLOrSVGScriptElement\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface DocumentReadyState {\n companion object\n}\n\npublic inline val DocumentReadyState.Companion.LOADING: DocumentReadyState get() = \"loading\".asDynamic().unsafeCast()\n\npublic inline val DocumentReadyState.Companion.INTERACTIVE: DocumentReadyState get() = \"interactive\".asDynamic().unsafeCast()\n\npublic inline val DocumentReadyState.Companion.COMPLETE: DocumentReadyState get() = \"complete\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface CanPlayTypeResult {\n companion object\n}\n\npublic inline val CanPlayTypeResult.Companion.EMPTY: CanPlayTypeResult get() = \"\".asDynamic().unsafeCast()\n\npublic inline val CanPlayTypeResult.Companion.MAYBE: CanPlayTypeResult get() = \"maybe\".asDynamic().unsafeCast()\n\npublic inline val CanPlayTypeResult.Companion.PROBABLY: CanPlayTypeResult get() = \"probably\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface TextTrackMode {\n companion object\n}\n\npublic inline val TextTrackMode.Companion.DISABLED: TextTrackMode get() = \"disabled\".asDynamic().unsafeCast()\n\npublic inline val TextTrackMode.Companion.HIDDEN: TextTrackMode get() = \"hidden\".asDynamic().unsafeCast()\n\npublic inline val TextTrackMode.Companion.SHOWING: TextTrackMode get() = \"showing\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface TextTrackKind {\n companion object\n}\n\npublic inline val TextTrackKind.Companion.SUBTITLES: TextTrackKind get() = \"subtitles\".asDynamic().unsafeCast()\n\npublic inline val TextTrackKind.Companion.CAPTIONS: TextTrackKind get() = \"captions\".asDynamic().unsafeCast()\n\npublic inline val TextTrackKind.Companion.DESCRIPTIONS: TextTrackKind get() = \"descriptions\".asDynamic().unsafeCast()\n\npublic inline val TextTrackKind.Companion.CHAPTERS: TextTrackKind get() = \"chapters\".asDynamic().unsafeCast()\n\npublic inline val TextTrackKind.Companion.METADATA: TextTrackKind get() = \"metadata\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface SelectionMode {\n companion object\n}\n\npublic inline val SelectionMode.Companion.SELECT: SelectionMode get() = \"select\".asDynamic().unsafeCast()\n\npublic inline val SelectionMode.Companion.START: SelectionMode get() = \"start\".asDynamic().unsafeCast()\n\npublic inline val SelectionMode.Companion.END: SelectionMode get() = \"end\".asDynamic().unsafeCast()\n\npublic inline val SelectionMode.Companion.PRESERVE: SelectionMode get() = \"preserve\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface CanvasFillRule {\n companion object\n}\n\npublic inline val CanvasFillRule.Companion.NONZERO: CanvasFillRule get() = \"nonzero\".asDynamic().unsafeCast()\n\npublic inline val CanvasFillRule.Companion.EVENODD: CanvasFillRule get() = \"evenodd\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface ImageSmoothingQuality {\n companion object\n}\n\npublic inline val ImageSmoothingQuality.Companion.LOW: ImageSmoothingQuality get() = \"low\".asDynamic().unsafeCast()\n\npublic inline val ImageSmoothingQuality.Companion.MEDIUM: ImageSmoothingQuality get() = \"medium\".asDynamic().unsafeCast()\n\npublic inline val ImageSmoothingQuality.Companion.HIGH: ImageSmoothingQuality get() = \"high\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface CanvasLineCap {\n companion object\n}\n\npublic inline val CanvasLineCap.Companion.BUTT: CanvasLineCap get() = \"butt\".asDynamic().unsafeCast()\n\npublic inline val CanvasLineCap.Companion.ROUND: CanvasLineCap get() = \"round\".asDynamic().unsafeCast()\n\npublic inline val CanvasLineCap.Companion.SQUARE: CanvasLineCap get() = \"square\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface CanvasLineJoin {\n companion object\n}\n\npublic inline val CanvasLineJoin.Companion.ROUND: CanvasLineJoin get() = \"round\".asDynamic().unsafeCast()\n\npublic inline val CanvasLineJoin.Companion.BEVEL: CanvasLineJoin get() = \"bevel\".asDynamic().unsafeCast()\n\npublic inline val CanvasLineJoin.Companion.MITER: CanvasLineJoin get() = \"miter\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface CanvasTextAlign {\n companion object\n}\n\npublic inline val CanvasTextAlign.Companion.START: CanvasTextAlign get() = \"start\".asDynamic().unsafeCast()\n\npublic inline val CanvasTextAlign.Companion.END: CanvasTextAlign get() = \"end\".asDynamic().unsafeCast()\n\npublic inline val CanvasTextAlign.Companion.LEFT: CanvasTextAlign get() = \"left\".asDynamic().unsafeCast()\n\npublic inline val CanvasTextAlign.Companion.RIGHT: CanvasTextAlign get() = \"right\".asDynamic().unsafeCast()\n\npublic inline val CanvasTextAlign.Companion.CENTER: CanvasTextAlign get() = \"center\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface CanvasTextBaseline {\n companion object\n}\n\npublic inline val CanvasTextBaseline.Companion.TOP: CanvasTextBaseline get() = \"top\".asDynamic().unsafeCast()\n\npublic inline val CanvasTextBaseline.Companion.HANGING: CanvasTextBaseline get() = \"hanging\".asDynamic().unsafeCast()\n\npublic inline val CanvasTextBaseline.Companion.MIDDLE: CanvasTextBaseline get() = \"middle\".asDynamic().unsafeCast()\n\npublic inline val CanvasTextBaseline.Companion.ALPHABETIC: CanvasTextBaseline get() = \"alphabetic\".asDynamic().unsafeCast()\n\npublic inline val CanvasTextBaseline.Companion.IDEOGRAPHIC: CanvasTextBaseline get() = \"ideographic\".asDynamic().unsafeCast()\n\npublic inline val CanvasTextBaseline.Companion.BOTTOM: CanvasTextBaseline get() = \"bottom\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface CanvasDirection {\n companion object\n}\n\npublic inline val CanvasDirection.Companion.LTR: CanvasDirection get() = \"ltr\".asDynamic().unsafeCast()\n\npublic inline val CanvasDirection.Companion.RTL: CanvasDirection get() = \"rtl\".asDynamic().unsafeCast()\n\npublic inline val CanvasDirection.Companion.INHERIT: CanvasDirection get() = \"inherit\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface ScrollRestoration {\n companion object\n}\n\npublic inline val ScrollRestoration.Companion.AUTO: ScrollRestoration get() = \"auto\".asDynamic().unsafeCast()\n\npublic inline val ScrollRestoration.Companion.MANUAL: ScrollRestoration get() = \"manual\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface ImageOrientation {\n companion object\n}\n\npublic inline val ImageOrientation.Companion.NONE: ImageOrientation get() = \"none\".asDynamic().unsafeCast()\n\npublic inline val ImageOrientation.Companion.FLIPY: ImageOrientation get() = \"flipY\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface PremultiplyAlpha {\n companion object\n}\n\npublic inline val PremultiplyAlpha.Companion.NONE: PremultiplyAlpha get() = \"none\".asDynamic().unsafeCast()\n\npublic inline val PremultiplyAlpha.Companion.PREMULTIPLY: PremultiplyAlpha get() = \"premultiply\".asDynamic().unsafeCast()\n\npublic inline val PremultiplyAlpha.Companion.DEFAULT: PremultiplyAlpha get() = \"default\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface ColorSpaceConversion {\n companion object\n}\n\npublic inline val ColorSpaceConversion.Companion.NONE: ColorSpaceConversion get() = \"none\".asDynamic().unsafeCast()\n\npublic inline val ColorSpaceConversion.Companion.DEFAULT: ColorSpaceConversion get() = \"default\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface ResizeQuality {\n companion object\n}\n\npublic inline val ResizeQuality.Companion.PIXELATED: ResizeQuality get() = \"pixelated\".asDynamic().unsafeCast()\n\npublic inline val ResizeQuality.Companion.LOW: ResizeQuality get() = \"low\".asDynamic().unsafeCast()\n\npublic inline val ResizeQuality.Companion.MEDIUM: ResizeQuality get() = \"medium\".asDynamic().unsafeCast()\n\npublic inline val ResizeQuality.Companion.HIGH: ResizeQuality get() = \"high\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface BinaryType {\n companion object\n}\n\npublic inline val BinaryType.Companion.BLOB: BinaryType get() = \"blob\".asDynamic().unsafeCast()\n\npublic inline val BinaryType.Companion.ARRAYBUFFER: BinaryType get() = \"arraybuffer\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface WorkerType {\n companion object\n}\n\npublic inline val WorkerType.Companion.CLASSIC: WorkerType get() = \"classic\".asDynamic().unsafeCast()\n\npublic inline val WorkerType.Companion.MODULE: WorkerType get() = \"module\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface ShadowRootMode {\n companion object\n}\n\npublic inline val ShadowRootMode.Companion.OPEN: ShadowRootMode get() = \"open\".asDynamic().unsafeCast()\n\npublic inline val ShadowRootMode.Companion.CLOSED: ShadowRootMode get() = \"closed\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface ScrollBehavior {\n companion object\n}\n\npublic inline val ScrollBehavior.Companion.AUTO: ScrollBehavior get() = \"auto\".asDynamic().unsafeCast()\n\npublic inline val ScrollBehavior.Companion.INSTANT: ScrollBehavior get() = \"instant\".asDynamic().unsafeCast()\n\npublic inline val ScrollBehavior.Companion.SMOOTH: ScrollBehavior get() = \"smooth\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface ScrollLogicalPosition {\n companion object\n}\n\npublic inline val ScrollLogicalPosition.Companion.START: ScrollLogicalPosition get() = \"start\".asDynamic().unsafeCast()\n\npublic inline val ScrollLogicalPosition.Companion.CENTER: ScrollLogicalPosition get() = \"center\".asDynamic().unsafeCast()\n\npublic inline val ScrollLogicalPosition.Companion.END: ScrollLogicalPosition get() = \"end\".asDynamic().unsafeCast()\n\npublic inline val ScrollLogicalPosition.Companion.NEAREST: ScrollLogicalPosition get() = \"nearest\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface CSSBoxType {\n companion object\n}\n\npublic inline val CSSBoxType.Companion.MARGIN: CSSBoxType get() = \"margin\".asDynamic().unsafeCast()\n\npublic inline val CSSBoxType.Companion.BORDER: CSSBoxType get() = \"border\".asDynamic().unsafeCast()\n\npublic inline val CSSBoxType.Companion.PADDING: CSSBoxType get() = \"padding\".asDynamic().unsafeCast()\n\npublic inline val CSSBoxType.Companion.CONTENT: CSSBoxType get() = \"content\".asDynamic().unsafeCast()","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See github.com/kotlin/dukat for details\n\npackage org.w3c.fetch\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\n/**\n * Exposes the JavaScript [Headers](https://developer.mozilla.org/en/docs/Web/API/Headers) to Kotlin\n */\npublic external open class Headers(init: dynamic = definedExternally) {\n fun append(name: String, value: String)\n fun delete(name: String)\n fun get(name: String): String?\n fun has(name: String): Boolean\n fun set(name: String, value: String)\n}\n\n/**\n * Exposes the JavaScript [Body](https://developer.mozilla.org/en/docs/Web/API/Body) to Kotlin\n */\npublic external interface Body {\n val bodyUsed: Boolean\n fun arrayBuffer(): Promise\n fun blob(): Promise\n fun formData(): Promise\n fun json(): Promise\n fun text(): Promise\n}\n\n/**\n * Exposes the JavaScript [Request](https://developer.mozilla.org/en/docs/Web/API/Request) to Kotlin\n */\npublic external open class Request(input: dynamic, init: RequestInit = definedExternally) : Body {\n open val method: String\n open val url: String\n open val headers: Headers\n open val type: RequestType\n open val destination: RequestDestination\n open val referrer: String\n open val referrerPolicy: dynamic\n open val mode: RequestMode\n open val credentials: RequestCredentials\n open val cache: RequestCache\n open val redirect: RequestRedirect\n open val integrity: String\n open val keepalive: Boolean\n override val bodyUsed: Boolean\n fun clone(): Request\n override fun arrayBuffer(): Promise\n override fun blob(): Promise\n override fun formData(): Promise\n override fun json(): Promise\n override fun text(): Promise\n}\n\npublic external interface RequestInit {\n var method: String?\n get() = definedExternally\n set(value) = definedExternally\n var headers: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var body: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var referrer: String?\n get() = definedExternally\n set(value) = definedExternally\n var referrerPolicy: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var mode: RequestMode?\n get() = definedExternally\n set(value) = definedExternally\n var credentials: RequestCredentials?\n get() = definedExternally\n set(value) = definedExternally\n var cache: RequestCache?\n get() = definedExternally\n set(value) = definedExternally\n var redirect: RequestRedirect?\n get() = definedExternally\n set(value) = definedExternally\n var integrity: String?\n get() = definedExternally\n set(value) = definedExternally\n var keepalive: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var window: Any?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun RequestInit(method: String? = undefined, headers: dynamic = undefined, body: dynamic = undefined, referrer: String? = undefined, referrerPolicy: dynamic = undefined, mode: RequestMode? = undefined, credentials: RequestCredentials? = undefined, cache: RequestCache? = undefined, redirect: RequestRedirect? = undefined, integrity: String? = undefined, keepalive: Boolean? = undefined, window: Any? = undefined): RequestInit {\n val o = js(\"({})\")\n o[\"method\"] = method\n o[\"headers\"] = headers\n o[\"body\"] = body\n o[\"referrer\"] = referrer\n o[\"referrerPolicy\"] = referrerPolicy\n o[\"mode\"] = mode\n o[\"credentials\"] = credentials\n o[\"cache\"] = cache\n o[\"redirect\"] = redirect\n o[\"integrity\"] = integrity\n o[\"keepalive\"] = keepalive\n o[\"window\"] = window\n return o\n}\n\n/**\n * Exposes the JavaScript [Response](https://developer.mozilla.org/en/docs/Web/API/Response) to Kotlin\n */\npublic external open class Response(body: dynamic = definedExternally, init: ResponseInit = definedExternally) : Body {\n open val type: ResponseType\n open val url: String\n open val redirected: Boolean\n open val status: Short\n open val ok: Boolean\n open val statusText: String\n open val headers: Headers\n open val body: dynamic\n open val trailer: Promise\n override val bodyUsed: Boolean\n fun clone(): Response\n override fun arrayBuffer(): Promise\n override fun blob(): Promise\n override fun formData(): Promise\n override fun json(): Promise\n override fun text(): Promise\n\n companion object {\n fun error(): Response\n fun redirect(url: String, status: Short = definedExternally): Response\n }\n}\n\npublic external interface ResponseInit {\n var status: Short? /* = 200 */\n get() = definedExternally\n set(value) = definedExternally\n var statusText: String? /* = \"OK\" */\n get() = definedExternally\n set(value) = definedExternally\n var headers: dynamic\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ResponseInit(status: Short? = 200, statusText: String? = \"OK\", headers: dynamic = undefined): ResponseInit {\n val o = js(\"({})\")\n o[\"status\"] = status\n o[\"statusText\"] = statusText\n o[\"headers\"] = headers\n return o\n}\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface RequestType {\n companion object\n}\n\npublic inline val RequestType.Companion.EMPTY: RequestType get() = \"\".asDynamic().unsafeCast()\n\npublic inline val RequestType.Companion.AUDIO: RequestType get() = \"audio\".asDynamic().unsafeCast()\n\npublic inline val RequestType.Companion.FONT: RequestType get() = \"font\".asDynamic().unsafeCast()\n\npublic inline val RequestType.Companion.IMAGE: RequestType get() = \"image\".asDynamic().unsafeCast()\n\npublic inline val RequestType.Companion.SCRIPT: RequestType get() = \"script\".asDynamic().unsafeCast()\n\npublic inline val RequestType.Companion.STYLE: RequestType get() = \"style\".asDynamic().unsafeCast()\n\npublic inline val RequestType.Companion.TRACK: RequestType get() = \"track\".asDynamic().unsafeCast()\n\npublic inline val RequestType.Companion.VIDEO: RequestType get() = \"video\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface RequestDestination {\n companion object\n}\n\npublic inline val RequestDestination.Companion.EMPTY: RequestDestination get() = \"\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.DOCUMENT: RequestDestination get() = \"document\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.EMBED: RequestDestination get() = \"embed\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.FONT: RequestDestination get() = \"font\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.IMAGE: RequestDestination get() = \"image\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.MANIFEST: RequestDestination get() = \"manifest\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.MEDIA: RequestDestination get() = \"media\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.OBJECT: RequestDestination get() = \"object\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.REPORT: RequestDestination get() = \"report\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.SCRIPT: RequestDestination get() = \"script\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.SERVICEWORKER: RequestDestination get() = \"serviceworker\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.SHAREDWORKER: RequestDestination get() = \"sharedworker\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.STYLE: RequestDestination get() = \"style\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.WORKER: RequestDestination get() = \"worker\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.XSLT: RequestDestination get() = \"xslt\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface RequestMode {\n companion object\n}\n\npublic inline val RequestMode.Companion.NAVIGATE: RequestMode get() = \"navigate\".asDynamic().unsafeCast()\n\npublic inline val RequestMode.Companion.SAME_ORIGIN: RequestMode get() = \"same-origin\".asDynamic().unsafeCast()\n\npublic inline val RequestMode.Companion.NO_CORS: RequestMode get() = \"no-cors\".asDynamic().unsafeCast()\n\npublic inline val RequestMode.Companion.CORS: RequestMode get() = \"cors\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface RequestCredentials {\n companion object\n}\n\npublic inline val RequestCredentials.Companion.OMIT: RequestCredentials get() = \"omit\".asDynamic().unsafeCast()\n\npublic inline val RequestCredentials.Companion.SAME_ORIGIN: RequestCredentials get() = \"same-origin\".asDynamic().unsafeCast()\n\npublic inline val RequestCredentials.Companion.INCLUDE: RequestCredentials get() = \"include\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface RequestCache {\n companion object\n}\n\npublic inline val RequestCache.Companion.DEFAULT: RequestCache get() = \"default\".asDynamic().unsafeCast()\n\npublic inline val RequestCache.Companion.NO_STORE: RequestCache get() = \"no-store\".asDynamic().unsafeCast()\n\npublic inline val RequestCache.Companion.RELOAD: RequestCache get() = \"reload\".asDynamic().unsafeCast()\n\npublic inline val RequestCache.Companion.NO_CACHE: RequestCache get() = \"no-cache\".asDynamic().unsafeCast()\n\npublic inline val RequestCache.Companion.FORCE_CACHE: RequestCache get() = \"force-cache\".asDynamic().unsafeCast()\n\npublic inline val RequestCache.Companion.ONLY_IF_CACHED: RequestCache get() = \"only-if-cached\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface RequestRedirect {\n companion object\n}\n\npublic inline val RequestRedirect.Companion.FOLLOW: RequestRedirect get() = \"follow\".asDynamic().unsafeCast()\n\npublic inline val RequestRedirect.Companion.ERROR: RequestRedirect get() = \"error\".asDynamic().unsafeCast()\n\npublic inline val RequestRedirect.Companion.MANUAL: RequestRedirect get() = \"manual\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface ResponseType {\n companion object\n}\n\npublic inline val ResponseType.Companion.BASIC: ResponseType get() = \"basic\".asDynamic().unsafeCast()\n\npublic inline val ResponseType.Companion.CORS: ResponseType get() = \"cors\".asDynamic().unsafeCast()\n\npublic inline val ResponseType.Companion.DEFAULT: ResponseType get() = \"default\".asDynamic().unsafeCast()\n\npublic inline val ResponseType.Companion.ERROR: ResponseType get() = \"error\".asDynamic().unsafeCast()\n\npublic inline val ResponseType.Companion.OPAQUE: ResponseType get() = \"opaque\".asDynamic().unsafeCast()\n\npublic inline val ResponseType.Companion.OPAQUEREDIRECT: ResponseType get() = \"opaqueredirect\".asDynamic().unsafeCast()","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See github.com/kotlin/dukat for details\n\npackage org.w3c.dom.mediacapture\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\n/**\n * Exposes the JavaScript [MediaStream](https://developer.mozilla.org/en/docs/Web/API/MediaStream) to Kotlin\n */\npublic external open class MediaStream() : EventTarget {\n constructor(stream: MediaStream)\n constructor(tracks: Array)\n open val id: String\n open val active: Boolean\n var onaddtrack: ((MediaStreamTrackEvent) -> dynamic)?\n var onremovetrack: ((MediaStreamTrackEvent) -> dynamic)?\n fun getAudioTracks(): Array\n fun getVideoTracks(): Array\n fun getTracks(): Array\n fun getTrackById(trackId: String): MediaStreamTrack?\n fun addTrack(track: MediaStreamTrack)\n fun removeTrack(track: MediaStreamTrack)\n fun clone(): MediaStream\n}\n\n/**\n * Exposes the JavaScript [MediaStreamTrack](https://developer.mozilla.org/en/docs/Web/API/MediaStreamTrack) to Kotlin\n */\npublic external abstract class MediaStreamTrack : EventTarget {\n open val kind: String\n open val id: String\n open val label: String\n open var enabled: Boolean\n open val muted: Boolean\n open var onmute: ((Event) -> dynamic)?\n open var onunmute: ((Event) -> dynamic)?\n open val readyState: MediaStreamTrackState\n open var onended: ((Event) -> dynamic)?\n open var onoverconstrained: ((Event) -> dynamic)?\n fun clone(): MediaStreamTrack\n fun stop()\n fun getCapabilities(): MediaTrackCapabilities\n fun getConstraints(): MediaTrackConstraints\n fun getSettings(): MediaTrackSettings\n fun applyConstraints(constraints: MediaTrackConstraints = definedExternally): Promise\n}\n\n/**\n * Exposes the JavaScript [MediaTrackSupportedConstraints](https://developer.mozilla.org/en/docs/Web/API/MediaTrackSupportedConstraints) to Kotlin\n */\npublic external interface MediaTrackSupportedConstraints {\n var width: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var height: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var aspectRatio: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var frameRate: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var facingMode: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var resizeMode: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var volume: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var sampleRate: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var sampleSize: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var echoCancellation: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var autoGainControl: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var noiseSuppression: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var latency: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var channelCount: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var deviceId: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var groupId: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MediaTrackSupportedConstraints(width: Boolean? = true, height: Boolean? = true, aspectRatio: Boolean? = true, frameRate: Boolean? = true, facingMode: Boolean? = true, resizeMode: Boolean? = true, volume: Boolean? = true, sampleRate: Boolean? = true, sampleSize: Boolean? = true, echoCancellation: Boolean? = true, autoGainControl: Boolean? = true, noiseSuppression: Boolean? = true, latency: Boolean? = true, channelCount: Boolean? = true, deviceId: Boolean? = true, groupId: Boolean? = true): MediaTrackSupportedConstraints {\n val o = js(\"({})\")\n o[\"width\"] = width\n o[\"height\"] = height\n o[\"aspectRatio\"] = aspectRatio\n o[\"frameRate\"] = frameRate\n o[\"facingMode\"] = facingMode\n o[\"resizeMode\"] = resizeMode\n o[\"volume\"] = volume\n o[\"sampleRate\"] = sampleRate\n o[\"sampleSize\"] = sampleSize\n o[\"echoCancellation\"] = echoCancellation\n o[\"autoGainControl\"] = autoGainControl\n o[\"noiseSuppression\"] = noiseSuppression\n o[\"latency\"] = latency\n o[\"channelCount\"] = channelCount\n o[\"deviceId\"] = deviceId\n o[\"groupId\"] = groupId\n return o\n}\n\npublic external interface MediaTrackCapabilities {\n var width: ULongRange?\n get() = definedExternally\n set(value) = definedExternally\n var height: ULongRange?\n get() = definedExternally\n set(value) = definedExternally\n var aspectRatio: DoubleRange?\n get() = definedExternally\n set(value) = definedExternally\n var frameRate: DoubleRange?\n get() = definedExternally\n set(value) = definedExternally\n var facingMode: Array?\n get() = definedExternally\n set(value) = definedExternally\n var resizeMode: Array?\n get() = definedExternally\n set(value) = definedExternally\n var volume: DoubleRange?\n get() = definedExternally\n set(value) = definedExternally\n var sampleRate: ULongRange?\n get() = definedExternally\n set(value) = definedExternally\n var sampleSize: ULongRange?\n get() = definedExternally\n set(value) = definedExternally\n var echoCancellation: Array?\n get() = definedExternally\n set(value) = definedExternally\n var autoGainControl: Array?\n get() = definedExternally\n set(value) = definedExternally\n var noiseSuppression: Array?\n get() = definedExternally\n set(value) = definedExternally\n var latency: DoubleRange?\n get() = definedExternally\n set(value) = definedExternally\n var channelCount: ULongRange?\n get() = definedExternally\n set(value) = definedExternally\n var deviceId: String?\n get() = definedExternally\n set(value) = definedExternally\n var groupId: String?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MediaTrackCapabilities(width: ULongRange? = undefined, height: ULongRange? = undefined, aspectRatio: DoubleRange? = undefined, frameRate: DoubleRange? = undefined, facingMode: Array? = undefined, resizeMode: Array? = undefined, volume: DoubleRange? = undefined, sampleRate: ULongRange? = undefined, sampleSize: ULongRange? = undefined, echoCancellation: Array? = undefined, autoGainControl: Array? = undefined, noiseSuppression: Array? = undefined, latency: DoubleRange? = undefined, channelCount: ULongRange? = undefined, deviceId: String? = undefined, groupId: String? = undefined): MediaTrackCapabilities {\n val o = js(\"({})\")\n o[\"width\"] = width\n o[\"height\"] = height\n o[\"aspectRatio\"] = aspectRatio\n o[\"frameRate\"] = frameRate\n o[\"facingMode\"] = facingMode\n o[\"resizeMode\"] = resizeMode\n o[\"volume\"] = volume\n o[\"sampleRate\"] = sampleRate\n o[\"sampleSize\"] = sampleSize\n o[\"echoCancellation\"] = echoCancellation\n o[\"autoGainControl\"] = autoGainControl\n o[\"noiseSuppression\"] = noiseSuppression\n o[\"latency\"] = latency\n o[\"channelCount\"] = channelCount\n o[\"deviceId\"] = deviceId\n o[\"groupId\"] = groupId\n return o\n}\n\n/**\n * Exposes the JavaScript [MediaTrackConstraints](https://developer.mozilla.org/en/docs/Web/API/MediaTrackConstraints) to Kotlin\n */\npublic external interface MediaTrackConstraints : MediaTrackConstraintSet {\n var advanced: Array?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MediaTrackConstraints(advanced: Array? = undefined, width: dynamic = undefined, height: dynamic = undefined, aspectRatio: dynamic = undefined, frameRate: dynamic = undefined, facingMode: dynamic = undefined, resizeMode: dynamic = undefined, volume: dynamic = undefined, sampleRate: dynamic = undefined, sampleSize: dynamic = undefined, echoCancellation: dynamic = undefined, autoGainControl: dynamic = undefined, noiseSuppression: dynamic = undefined, latency: dynamic = undefined, channelCount: dynamic = undefined, deviceId: dynamic = undefined, groupId: dynamic = undefined): MediaTrackConstraints {\n val o = js(\"({})\")\n o[\"advanced\"] = advanced\n o[\"width\"] = width\n o[\"height\"] = height\n o[\"aspectRatio\"] = aspectRatio\n o[\"frameRate\"] = frameRate\n o[\"facingMode\"] = facingMode\n o[\"resizeMode\"] = resizeMode\n o[\"volume\"] = volume\n o[\"sampleRate\"] = sampleRate\n o[\"sampleSize\"] = sampleSize\n o[\"echoCancellation\"] = echoCancellation\n o[\"autoGainControl\"] = autoGainControl\n o[\"noiseSuppression\"] = noiseSuppression\n o[\"latency\"] = latency\n o[\"channelCount\"] = channelCount\n o[\"deviceId\"] = deviceId\n o[\"groupId\"] = groupId\n return o\n}\n\npublic external interface MediaTrackConstraintSet {\n var width: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var height: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var aspectRatio: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var frameRate: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var facingMode: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var resizeMode: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var volume: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var sampleRate: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var sampleSize: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var echoCancellation: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var autoGainControl: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var noiseSuppression: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var latency: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var channelCount: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var deviceId: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var groupId: dynamic\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MediaTrackConstraintSet(width: dynamic = undefined, height: dynamic = undefined, aspectRatio: dynamic = undefined, frameRate: dynamic = undefined, facingMode: dynamic = undefined, resizeMode: dynamic = undefined, volume: dynamic = undefined, sampleRate: dynamic = undefined, sampleSize: dynamic = undefined, echoCancellation: dynamic = undefined, autoGainControl: dynamic = undefined, noiseSuppression: dynamic = undefined, latency: dynamic = undefined, channelCount: dynamic = undefined, deviceId: dynamic = undefined, groupId: dynamic = undefined): MediaTrackConstraintSet {\n val o = js(\"({})\")\n o[\"width\"] = width\n o[\"height\"] = height\n o[\"aspectRatio\"] = aspectRatio\n o[\"frameRate\"] = frameRate\n o[\"facingMode\"] = facingMode\n o[\"resizeMode\"] = resizeMode\n o[\"volume\"] = volume\n o[\"sampleRate\"] = sampleRate\n o[\"sampleSize\"] = sampleSize\n o[\"echoCancellation\"] = echoCancellation\n o[\"autoGainControl\"] = autoGainControl\n o[\"noiseSuppression\"] = noiseSuppression\n o[\"latency\"] = latency\n o[\"channelCount\"] = channelCount\n o[\"deviceId\"] = deviceId\n o[\"groupId\"] = groupId\n return o\n}\n\n/**\n * Exposes the JavaScript [MediaTrackSettings](https://developer.mozilla.org/en/docs/Web/API/MediaTrackSettings) to Kotlin\n */\npublic external interface MediaTrackSettings {\n var width: Int?\n get() = definedExternally\n set(value) = definedExternally\n var height: Int?\n get() = definedExternally\n set(value) = definedExternally\n var aspectRatio: Double?\n get() = definedExternally\n set(value) = definedExternally\n var frameRate: Double?\n get() = definedExternally\n set(value) = definedExternally\n var facingMode: String?\n get() = definedExternally\n set(value) = definedExternally\n var resizeMode: String?\n get() = definedExternally\n set(value) = definedExternally\n var volume: Double?\n get() = definedExternally\n set(value) = definedExternally\n var sampleRate: Int?\n get() = definedExternally\n set(value) = definedExternally\n var sampleSize: Int?\n get() = definedExternally\n set(value) = definedExternally\n var echoCancellation: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var autoGainControl: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var noiseSuppression: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var latency: Double?\n get() = definedExternally\n set(value) = definedExternally\n var channelCount: Int?\n get() = definedExternally\n set(value) = definedExternally\n var deviceId: String?\n get() = definedExternally\n set(value) = definedExternally\n var groupId: String?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MediaTrackSettings(width: Int? = undefined, height: Int? = undefined, aspectRatio: Double? = undefined, frameRate: Double? = undefined, facingMode: String? = undefined, resizeMode: String? = undefined, volume: Double? = undefined, sampleRate: Int? = undefined, sampleSize: Int? = undefined, echoCancellation: Boolean? = undefined, autoGainControl: Boolean? = undefined, noiseSuppression: Boolean? = undefined, latency: Double? = undefined, channelCount: Int? = undefined, deviceId: String? = undefined, groupId: String? = undefined): MediaTrackSettings {\n val o = js(\"({})\")\n o[\"width\"] = width\n o[\"height\"] = height\n o[\"aspectRatio\"] = aspectRatio\n o[\"frameRate\"] = frameRate\n o[\"facingMode\"] = facingMode\n o[\"resizeMode\"] = resizeMode\n o[\"volume\"] = volume\n o[\"sampleRate\"] = sampleRate\n o[\"sampleSize\"] = sampleSize\n o[\"echoCancellation\"] = echoCancellation\n o[\"autoGainControl\"] = autoGainControl\n o[\"noiseSuppression\"] = noiseSuppression\n o[\"latency\"] = latency\n o[\"channelCount\"] = channelCount\n o[\"deviceId\"] = deviceId\n o[\"groupId\"] = groupId\n return o\n}\n\n/**\n * Exposes the JavaScript [MediaStreamTrackEvent](https://developer.mozilla.org/en/docs/Web/API/MediaStreamTrackEvent) to Kotlin\n */\npublic external open class MediaStreamTrackEvent(type: String, eventInitDict: MediaStreamTrackEventInit) : Event {\n open val track: MediaStreamTrack\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface MediaStreamTrackEventInit : EventInit {\n var track: MediaStreamTrack?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MediaStreamTrackEventInit(track: MediaStreamTrack?, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): MediaStreamTrackEventInit {\n val o = js(\"({})\")\n o[\"track\"] = track\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\npublic external open class OverconstrainedErrorEvent(type: String, eventInitDict: OverconstrainedErrorEventInit) : Event {\n open val error: dynamic\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface OverconstrainedErrorEventInit : EventInit {\n var error: dynamic /* = null */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun OverconstrainedErrorEventInit(error: dynamic = null, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): OverconstrainedErrorEventInit {\n val o = js(\"({})\")\n o[\"error\"] = error\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [MediaDevices](https://developer.mozilla.org/en/docs/Web/API/MediaDevices) to Kotlin\n */\npublic external abstract class MediaDevices : EventTarget {\n open var ondevicechange: ((Event) -> dynamic)?\n fun enumerateDevices(): Promise>\n fun getSupportedConstraints(): MediaTrackSupportedConstraints\n fun getUserMedia(constraints: MediaStreamConstraints = definedExternally): Promise\n}\n\n/**\n * Exposes the JavaScript [MediaDeviceInfo](https://developer.mozilla.org/en/docs/Web/API/MediaDeviceInfo) to Kotlin\n */\npublic external abstract class MediaDeviceInfo {\n open val deviceId: String\n open val kind: MediaDeviceKind\n open val label: String\n open val groupId: String\n fun toJSON(): dynamic\n}\n\npublic external abstract class InputDeviceInfo : MediaDeviceInfo {\n fun getCapabilities(): MediaTrackCapabilities\n}\n\n/**\n * Exposes the JavaScript [MediaStreamConstraints](https://developer.mozilla.org/en/docs/Web/API/MediaStreamConstraints) to Kotlin\n */\npublic external interface MediaStreamConstraints {\n var video: dynamic /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var audio: dynamic /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun MediaStreamConstraints(video: dynamic = false, audio: dynamic = false): MediaStreamConstraints {\n val o = js(\"({})\")\n o[\"video\"] = video\n o[\"audio\"] = audio\n return o\n}\n\npublic external interface ConstrainablePattern {\n var onoverconstrained: ((Event) -> dynamic)?\n get() = definedExternally\n set(value) = definedExternally\n fun getCapabilities(): Capabilities\n fun getConstraints(): Constraints\n fun getSettings(): Settings\n fun applyConstraints(constraints: Constraints = definedExternally): Promise\n}\n\n/**\n * Exposes the JavaScript [DoubleRange](https://developer.mozilla.org/en/docs/Web/API/DoubleRange) to Kotlin\n */\npublic external interface DoubleRange {\n var max: Double?\n get() = definedExternally\n set(value) = definedExternally\n var min: Double?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun DoubleRange(max: Double? = undefined, min: Double? = undefined): DoubleRange {\n val o = js(\"({})\")\n o[\"max\"] = max\n o[\"min\"] = min\n return o\n}\n\npublic external interface ConstrainDoubleRange : DoubleRange {\n var exact: Double?\n get() = definedExternally\n set(value) = definedExternally\n var ideal: Double?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ConstrainDoubleRange(exact: Double? = undefined, ideal: Double? = undefined, max: Double? = undefined, min: Double? = undefined): ConstrainDoubleRange {\n val o = js(\"({})\")\n o[\"exact\"] = exact\n o[\"ideal\"] = ideal\n o[\"max\"] = max\n o[\"min\"] = min\n return o\n}\n\npublic external interface ULongRange {\n var max: Int?\n get() = definedExternally\n set(value) = definedExternally\n var min: Int?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ULongRange(max: Int? = undefined, min: Int? = undefined): ULongRange {\n val o = js(\"({})\")\n o[\"max\"] = max\n o[\"min\"] = min\n return o\n}\n\npublic external interface ConstrainULongRange : ULongRange {\n var exact: Int?\n get() = definedExternally\n set(value) = definedExternally\n var ideal: Int?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ConstrainULongRange(exact: Int? = undefined, ideal: Int? = undefined, max: Int? = undefined, min: Int? = undefined): ConstrainULongRange {\n val o = js(\"({})\")\n o[\"exact\"] = exact\n o[\"ideal\"] = ideal\n o[\"max\"] = max\n o[\"min\"] = min\n return o\n}\n\n/**\n * Exposes the JavaScript [ConstrainBooleanParameters](https://developer.mozilla.org/en/docs/Web/API/ConstrainBooleanParameters) to Kotlin\n */\npublic external interface ConstrainBooleanParameters {\n var exact: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var ideal: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ConstrainBooleanParameters(exact: Boolean? = undefined, ideal: Boolean? = undefined): ConstrainBooleanParameters {\n val o = js(\"({})\")\n o[\"exact\"] = exact\n o[\"ideal\"] = ideal\n return o\n}\n\n/**\n * Exposes the JavaScript [ConstrainDOMStringParameters](https://developer.mozilla.org/en/docs/Web/API/ConstrainDOMStringParameters) to Kotlin\n */\npublic external interface ConstrainDOMStringParameters {\n var exact: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var ideal: dynamic\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ConstrainDOMStringParameters(exact: dynamic = undefined, ideal: dynamic = undefined): ConstrainDOMStringParameters {\n val o = js(\"({})\")\n o[\"exact\"] = exact\n o[\"ideal\"] = ideal\n return o\n}\n\npublic external interface Capabilities\n\n@kotlin.internal.InlineOnly\npublic inline fun Capabilities(): Capabilities {\n val o = js(\"({})\")\n return o\n}\n\npublic external interface Settings\n\n@kotlin.internal.InlineOnly\npublic inline fun Settings(): Settings {\n val o = js(\"({})\")\n return o\n}\n\npublic external interface ConstraintSet\n\n@kotlin.internal.InlineOnly\npublic inline fun ConstraintSet(): ConstraintSet {\n val o = js(\"({})\")\n return o\n}\n\npublic external interface Constraints : ConstraintSet {\n var advanced: Array?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun Constraints(advanced: Array? = undefined): Constraints {\n val o = js(\"({})\")\n o[\"advanced\"] = advanced\n return o\n}\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface MediaStreamTrackState {\n companion object\n}\n\npublic inline val MediaStreamTrackState.Companion.LIVE: MediaStreamTrackState get() = \"live\".asDynamic().unsafeCast()\n\npublic inline val MediaStreamTrackState.Companion.ENDED: MediaStreamTrackState get() = \"ended\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface VideoFacingModeEnum {\n companion object\n}\n\npublic inline val VideoFacingModeEnum.Companion.USER: VideoFacingModeEnum get() = \"user\".asDynamic().unsafeCast()\n\npublic inline val VideoFacingModeEnum.Companion.ENVIRONMENT: VideoFacingModeEnum get() = \"environment\".asDynamic().unsafeCast()\n\npublic inline val VideoFacingModeEnum.Companion.LEFT: VideoFacingModeEnum get() = \"left\".asDynamic().unsafeCast()\n\npublic inline val VideoFacingModeEnum.Companion.RIGHT: VideoFacingModeEnum get() = \"right\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface VideoResizeModeEnum {\n companion object\n}\n\npublic inline val VideoResizeModeEnum.Companion.NONE: VideoResizeModeEnum get() = \"none\".asDynamic().unsafeCast()\n\npublic inline val VideoResizeModeEnum.Companion.CROP_AND_SCALE: VideoResizeModeEnum get() = \"crop-and-scale\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface MediaDeviceKind {\n companion object\n}\n\npublic inline val MediaDeviceKind.Companion.AUDIOINPUT: MediaDeviceKind get() = \"audioinput\".asDynamic().unsafeCast()\n\npublic inline val MediaDeviceKind.Companion.AUDIOOUTPUT: MediaDeviceKind get() = \"audiooutput\".asDynamic().unsafeCast()\n\npublic inline val MediaDeviceKind.Companion.VIDEOINPUT: MediaDeviceKind get() = \"videoinput\".asDynamic().unsafeCast()","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See github.com/kotlin/dukat for details\n\npackage org.w3c.dom.pointerevents\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\npublic external interface PointerEventInit : MouseEventInit {\n var pointerId: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var width: Double? /* = 1.0 */\n get() = definedExternally\n set(value) = definedExternally\n var height: Double? /* = 1.0 */\n get() = definedExternally\n set(value) = definedExternally\n var pressure: Float? /* = 0f */\n get() = definedExternally\n set(value) = definedExternally\n var tangentialPressure: Float? /* = 0f */\n get() = definedExternally\n set(value) = definedExternally\n var tiltX: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var tiltY: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var twist: Int? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var pointerType: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var isPrimary: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun PointerEventInit(pointerId: Int? = 0, width: Double? = 1.0, height: Double? = 1.0, pressure: Float? = 0f, tangentialPressure: Float? = 0f, tiltX: Int? = 0, tiltY: Int? = 0, twist: Int? = 0, pointerType: String? = \"\", isPrimary: Boolean? = false, screenX: Int? = 0, screenY: Int? = 0, clientX: Int? = 0, clientY: Int? = 0, button: Short? = 0, buttons: Short? = 0, relatedTarget: EventTarget? = null, region: String? = null, ctrlKey: Boolean? = false, shiftKey: Boolean? = false, altKey: Boolean? = false, metaKey: Boolean? = false, modifierAltGraph: Boolean? = false, modifierCapsLock: Boolean? = false, modifierFn: Boolean? = false, modifierFnLock: Boolean? = false, modifierHyper: Boolean? = false, modifierNumLock: Boolean? = false, modifierScrollLock: Boolean? = false, modifierSuper: Boolean? = false, modifierSymbol: Boolean? = false, modifierSymbolLock: Boolean? = false, view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): PointerEventInit {\n val o = js(\"({})\")\n o[\"pointerId\"] = pointerId\n o[\"width\"] = width\n o[\"height\"] = height\n o[\"pressure\"] = pressure\n o[\"tangentialPressure\"] = tangentialPressure\n o[\"tiltX\"] = tiltX\n o[\"tiltY\"] = tiltY\n o[\"twist\"] = twist\n o[\"pointerType\"] = pointerType\n o[\"isPrimary\"] = isPrimary\n o[\"screenX\"] = screenX\n o[\"screenY\"] = screenY\n o[\"clientX\"] = clientX\n o[\"clientY\"] = clientY\n o[\"button\"] = button\n o[\"buttons\"] = buttons\n o[\"relatedTarget\"] = relatedTarget\n o[\"region\"] = region\n o[\"ctrlKey\"] = ctrlKey\n o[\"shiftKey\"] = shiftKey\n o[\"altKey\"] = altKey\n o[\"metaKey\"] = metaKey\n o[\"modifierAltGraph\"] = modifierAltGraph\n o[\"modifierCapsLock\"] = modifierCapsLock\n o[\"modifierFn\"] = modifierFn\n o[\"modifierFnLock\"] = modifierFnLock\n o[\"modifierHyper\"] = modifierHyper\n o[\"modifierNumLock\"] = modifierNumLock\n o[\"modifierScrollLock\"] = modifierScrollLock\n o[\"modifierSuper\"] = modifierSuper\n o[\"modifierSymbol\"] = modifierSymbol\n o[\"modifierSymbolLock\"] = modifierSymbolLock\n o[\"view\"] = view\n o[\"detail\"] = detail\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [PointerEvent](https://developer.mozilla.org/en/docs/Web/API/PointerEvent) to Kotlin\n */\npublic external open class PointerEvent(type: String, eventInitDict: PointerEventInit = definedExternally) : MouseEvent {\n open val pointerId: Int\n open val width: Double\n open val height: Double\n open val pressure: Float\n open val tangentialPressure: Float\n open val tiltX: Int\n open val tiltY: Int\n open val twist: Int\n open val pointerType: String\n open val isPrimary: Boolean\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See github.com/kotlin/dukat for details\n\npackage org.w3c.dom.svg\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\n/**\n * Exposes the JavaScript [SVGElement](https://developer.mozilla.org/en/docs/Web/API/SVGElement) to Kotlin\n */\npublic external abstract class SVGElement : Element, ElementCSSInlineStyle, GlobalEventHandlers, SVGElementInstance {\n open val dataset: DOMStringMap\n open val ownerSVGElement: SVGSVGElement?\n open val viewportElement: SVGElement?\n open var tabIndex: Int\n fun focus()\n fun blur()\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external interface SVGBoundingBoxOptions {\n var fill: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var stroke: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var markers: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var clipped: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun SVGBoundingBoxOptions(fill: Boolean? = true, stroke: Boolean? = false, markers: Boolean? = false, clipped: Boolean? = false): SVGBoundingBoxOptions {\n val o = js(\"({})\")\n o[\"fill\"] = fill\n o[\"stroke\"] = stroke\n o[\"markers\"] = markers\n o[\"clipped\"] = clipped\n return o\n}\n\n/**\n * Exposes the JavaScript [SVGGraphicsElement](https://developer.mozilla.org/en/docs/Web/API/SVGGraphicsElement) to Kotlin\n */\npublic external abstract class SVGGraphicsElement : SVGElement, SVGTests {\n open val transform: SVGAnimatedTransformList\n fun getBBox(options: SVGBoundingBoxOptions = definedExternally): DOMRect\n fun getCTM(): DOMMatrix?\n fun getScreenCTM(): DOMMatrix?\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGGeometryElement](https://developer.mozilla.org/en/docs/Web/API/SVGGeometryElement) to Kotlin\n */\npublic external abstract class SVGGeometryElement : SVGGraphicsElement {\n open val pathLength: SVGAnimatedNumber\n fun isPointInFill(point: DOMPoint): Boolean\n fun isPointInStroke(point: DOMPoint): Boolean\n fun getTotalLength(): Float\n fun getPointAtLength(distance: Float): DOMPoint\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGNumber](https://developer.mozilla.org/en/docs/Web/API/SVGNumber) to Kotlin\n */\npublic external abstract class SVGNumber {\n open var value: Float\n}\n\n/**\n * Exposes the JavaScript [SVGLength](https://developer.mozilla.org/en/docs/Web/API/SVGLength) to Kotlin\n */\npublic external abstract class SVGLength {\n open val unitType: Short\n open var value: Float\n open var valueInSpecifiedUnits: Float\n open var valueAsString: String\n fun newValueSpecifiedUnits(unitType: Short, valueInSpecifiedUnits: Float)\n fun convertToSpecifiedUnits(unitType: Short)\n\n companion object {\n val SVG_LENGTHTYPE_UNKNOWN: Short\n val SVG_LENGTHTYPE_NUMBER: Short\n val SVG_LENGTHTYPE_PERCENTAGE: Short\n val SVG_LENGTHTYPE_EMS: Short\n val SVG_LENGTHTYPE_EXS: Short\n val SVG_LENGTHTYPE_PX: Short\n val SVG_LENGTHTYPE_CM: Short\n val SVG_LENGTHTYPE_MM: Short\n val SVG_LENGTHTYPE_IN: Short\n val SVG_LENGTHTYPE_PT: Short\n val SVG_LENGTHTYPE_PC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGAngle](https://developer.mozilla.org/en/docs/Web/API/SVGAngle) to Kotlin\n */\npublic external abstract class SVGAngle {\n open val unitType: Short\n open var value: Float\n open var valueInSpecifiedUnits: Float\n open var valueAsString: String\n fun newValueSpecifiedUnits(unitType: Short, valueInSpecifiedUnits: Float)\n fun convertToSpecifiedUnits(unitType: Short)\n\n companion object {\n val SVG_ANGLETYPE_UNKNOWN: Short\n val SVG_ANGLETYPE_UNSPECIFIED: Short\n val SVG_ANGLETYPE_DEG: Short\n val SVG_ANGLETYPE_RAD: Short\n val SVG_ANGLETYPE_GRAD: Short\n }\n}\n\npublic external abstract class SVGNameList {\n open val length: Int\n open val numberOfItems: Int\n fun clear()\n fun initialize(newItem: dynamic): dynamic\n fun insertItemBefore(newItem: dynamic, index: Int): dynamic\n fun replaceItem(newItem: dynamic, index: Int): dynamic\n fun removeItem(index: Int): dynamic\n fun appendItem(newItem: dynamic): dynamic\n fun getItem(index: Int): dynamic\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun SVGNameList.get(index: Int): dynamic = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun SVGNameList.set(index: Int, newItem: dynamic) { asDynamic()[index] = newItem }\n\n/**\n * Exposes the JavaScript [SVGNumberList](https://developer.mozilla.org/en/docs/Web/API/SVGNumberList) to Kotlin\n */\npublic external abstract class SVGNumberList {\n open val length: Int\n open val numberOfItems: Int\n fun clear()\n fun initialize(newItem: SVGNumber): SVGNumber\n fun insertItemBefore(newItem: SVGNumber, index: Int): SVGNumber\n fun replaceItem(newItem: SVGNumber, index: Int): SVGNumber\n fun removeItem(index: Int): SVGNumber\n fun appendItem(newItem: SVGNumber): SVGNumber\n fun getItem(index: Int): SVGNumber\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun SVGNumberList.get(index: Int): SVGNumber? = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun SVGNumberList.set(index: Int, newItem: SVGNumber) { asDynamic()[index] = newItem }\n\n/**\n * Exposes the JavaScript [SVGLengthList](https://developer.mozilla.org/en/docs/Web/API/SVGLengthList) to Kotlin\n */\npublic external abstract class SVGLengthList {\n open val length: Int\n open val numberOfItems: Int\n fun clear()\n fun initialize(newItem: SVGLength): SVGLength\n fun insertItemBefore(newItem: SVGLength, index: Int): SVGLength\n fun replaceItem(newItem: SVGLength, index: Int): SVGLength\n fun removeItem(index: Int): SVGLength\n fun appendItem(newItem: SVGLength): SVGLength\n fun getItem(index: Int): SVGLength\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun SVGLengthList.get(index: Int): SVGLength? = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun SVGLengthList.set(index: Int, newItem: SVGLength) { asDynamic()[index] = newItem }\n\n/**\n * Exposes the JavaScript [SVGAnimatedBoolean](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedBoolean) to Kotlin\n */\npublic external abstract class SVGAnimatedBoolean {\n open var baseVal: Boolean\n open val animVal: Boolean\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedEnumeration](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedEnumeration) to Kotlin\n */\npublic external abstract class SVGAnimatedEnumeration {\n open var baseVal: Short\n open val animVal: Short\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedInteger](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedInteger) to Kotlin\n */\npublic external abstract class SVGAnimatedInteger {\n open var baseVal: Int\n open val animVal: Int\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedNumber](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedNumber) to Kotlin\n */\npublic external abstract class SVGAnimatedNumber {\n open var baseVal: Float\n open val animVal: Float\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedLength](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedLength) to Kotlin\n */\npublic external abstract class SVGAnimatedLength {\n open val baseVal: SVGLength\n open val animVal: SVGLength\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedAngle](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedAngle) to Kotlin\n */\npublic external abstract class SVGAnimatedAngle {\n open val baseVal: SVGAngle\n open val animVal: SVGAngle\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedString](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedString) to Kotlin\n */\npublic external abstract class SVGAnimatedString {\n open var baseVal: String\n open val animVal: String\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedRect](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedRect) to Kotlin\n */\npublic external abstract class SVGAnimatedRect {\n open val baseVal: DOMRect\n open val animVal: DOMRectReadOnly\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedNumberList](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedNumberList) to Kotlin\n */\npublic external abstract class SVGAnimatedNumberList {\n open val baseVal: SVGNumberList\n open val animVal: SVGNumberList\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedLengthList](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedLengthList) to Kotlin\n */\npublic external abstract class SVGAnimatedLengthList {\n open val baseVal: SVGLengthList\n open val animVal: SVGLengthList\n}\n\n/**\n * Exposes the JavaScript [SVGStringList](https://developer.mozilla.org/en/docs/Web/API/SVGStringList) to Kotlin\n */\npublic external abstract class SVGStringList {\n open val length: Int\n open val numberOfItems: Int\n fun clear()\n fun initialize(newItem: String): String\n fun insertItemBefore(newItem: String, index: Int): String\n fun replaceItem(newItem: String, index: Int): String\n fun removeItem(index: Int): String\n fun appendItem(newItem: String): String\n fun getItem(index: Int): String\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun SVGStringList.get(index: Int): String? = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun SVGStringList.set(index: Int, newItem: String) { asDynamic()[index] = newItem }\n\n/**\n * Exposes the JavaScript [SVGUnitTypes](https://developer.mozilla.org/en/docs/Web/API/SVGUnitTypes) to Kotlin\n */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface SVGUnitTypes {\n companion object {\n val SVG_UNIT_TYPE_UNKNOWN: Short\n val SVG_UNIT_TYPE_USERSPACEONUSE: Short\n val SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGTests](https://developer.mozilla.org/en/docs/Web/API/SVGTests) to Kotlin\n */\npublic external interface SVGTests {\n val requiredExtensions: SVGStringList\n val systemLanguage: SVGStringList\n}\n\npublic external interface SVGFitToViewBox {\n val viewBox: SVGAnimatedRect\n val preserveAspectRatio: SVGAnimatedPreserveAspectRatio\n}\n\n/**\n * Exposes the JavaScript [SVGZoomAndPan](https://developer.mozilla.org/en/docs/Web/API/SVGZoomAndPan) to Kotlin\n */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface SVGZoomAndPan {\n var zoomAndPan: Short\n\n companion object {\n val SVG_ZOOMANDPAN_UNKNOWN: Short\n val SVG_ZOOMANDPAN_DISABLE: Short\n val SVG_ZOOMANDPAN_MAGNIFY: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGURIReference](https://developer.mozilla.org/en/docs/Web/API/SVGURIReference) to Kotlin\n */\npublic external interface SVGURIReference {\n val href: SVGAnimatedString\n}\n\n/**\n * Exposes the JavaScript [SVGSVGElement](https://developer.mozilla.org/en/docs/Web/API/SVGSVGElement) to Kotlin\n */\npublic external abstract class SVGSVGElement : SVGGraphicsElement, SVGFitToViewBox, SVGZoomAndPan, WindowEventHandlers {\n open val x: SVGAnimatedLength\n open val y: SVGAnimatedLength\n open val width: SVGAnimatedLength\n open val height: SVGAnimatedLength\n open var currentScale: Float\n open val currentTranslate: DOMPointReadOnly\n fun getIntersectionList(rect: DOMRectReadOnly, referenceElement: SVGElement?): NodeList\n fun getEnclosureList(rect: DOMRectReadOnly, referenceElement: SVGElement?): NodeList\n fun checkIntersection(element: SVGElement, rect: DOMRectReadOnly): Boolean\n fun checkEnclosure(element: SVGElement, rect: DOMRectReadOnly): Boolean\n fun deselectAll()\n fun createSVGNumber(): SVGNumber\n fun createSVGLength(): SVGLength\n fun createSVGAngle(): SVGAngle\n fun createSVGPoint(): DOMPoint\n fun createSVGMatrix(): DOMMatrix\n fun createSVGRect(): DOMRect\n fun createSVGTransform(): SVGTransform\n fun createSVGTransformFromMatrix(matrix: DOMMatrixReadOnly): SVGTransform\n fun getElementById(elementId: String): Element\n fun suspendRedraw(maxWaitMilliseconds: Int): Int\n fun unsuspendRedraw(suspendHandleID: Int)\n fun unsuspendRedrawAll()\n fun forceRedraw()\n\n companion object {\n val SVG_ZOOMANDPAN_UNKNOWN: Short\n val SVG_ZOOMANDPAN_DISABLE: Short\n val SVG_ZOOMANDPAN_MAGNIFY: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGGElement](https://developer.mozilla.org/en/docs/Web/API/SVGGElement) to Kotlin\n */\npublic external abstract class SVGGElement : SVGGraphicsElement {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external abstract class SVGUnknownElement : SVGGraphicsElement {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGDefsElement](https://developer.mozilla.org/en/docs/Web/API/SVGDefsElement) to Kotlin\n */\npublic external abstract class SVGDefsElement : SVGGraphicsElement {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGDescElement](https://developer.mozilla.org/en/docs/Web/API/SVGDescElement) to Kotlin\n */\npublic external abstract class SVGDescElement : SVGElement {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGMetadataElement](https://developer.mozilla.org/en/docs/Web/API/SVGMetadataElement) to Kotlin\n */\npublic external abstract class SVGMetadataElement : SVGElement {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGTitleElement](https://developer.mozilla.org/en/docs/Web/API/SVGTitleElement) to Kotlin\n */\npublic external abstract class SVGTitleElement : SVGElement {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGSymbolElement](https://developer.mozilla.org/en/docs/Web/API/SVGSymbolElement) to Kotlin\n */\npublic external abstract class SVGSymbolElement : SVGGraphicsElement, SVGFitToViewBox {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGUseElement](https://developer.mozilla.org/en/docs/Web/API/SVGUseElement) to Kotlin\n */\npublic external abstract class SVGUseElement : SVGGraphicsElement, SVGURIReference {\n open val x: SVGAnimatedLength\n open val y: SVGAnimatedLength\n open val width: SVGAnimatedLength\n open val height: SVGAnimatedLength\n open val instanceRoot: SVGElement?\n open val animatedInstanceRoot: SVGElement?\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external open class SVGUseElementShadowRoot : ShadowRoot {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external interface SVGElementInstance {\n val correspondingElement: SVGElement?\n get() = definedExternally\n val correspondingUseElement: SVGUseElement?\n get() = definedExternally\n}\n\npublic external open class ShadowAnimation(source: dynamic, newTarget: dynamic) {\n open val sourceAnimation: dynamic\n}\n\n/**\n * Exposes the JavaScript [SVGSwitchElement](https://developer.mozilla.org/en/docs/Web/API/SVGSwitchElement) to Kotlin\n */\npublic external abstract class SVGSwitchElement : SVGGraphicsElement {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external interface GetSVGDocument {\n fun getSVGDocument(): Document\n}\n\n/**\n * Exposes the JavaScript [SVGStyleElement](https://developer.mozilla.org/en/docs/Web/API/SVGStyleElement) to Kotlin\n */\npublic external abstract class SVGStyleElement : SVGElement, LinkStyle {\n open var type: String\n open var media: String\n open var title: String\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGTransform](https://developer.mozilla.org/en/docs/Web/API/SVGTransform) to Kotlin\n */\npublic external abstract class SVGTransform {\n open val type: Short\n open val matrix: DOMMatrix\n open val angle: Float\n fun setMatrix(matrix: DOMMatrixReadOnly)\n fun setTranslate(tx: Float, ty: Float)\n fun setScale(sx: Float, sy: Float)\n fun setRotate(angle: Float, cx: Float, cy: Float)\n fun setSkewX(angle: Float)\n fun setSkewY(angle: Float)\n\n companion object {\n val SVG_TRANSFORM_UNKNOWN: Short\n val SVG_TRANSFORM_MATRIX: Short\n val SVG_TRANSFORM_TRANSLATE: Short\n val SVG_TRANSFORM_SCALE: Short\n val SVG_TRANSFORM_ROTATE: Short\n val SVG_TRANSFORM_SKEWX: Short\n val SVG_TRANSFORM_SKEWY: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGTransformList](https://developer.mozilla.org/en/docs/Web/API/SVGTransformList) to Kotlin\n */\npublic external abstract class SVGTransformList {\n open val length: Int\n open val numberOfItems: Int\n fun clear()\n fun initialize(newItem: SVGTransform): SVGTransform\n fun insertItemBefore(newItem: SVGTransform, index: Int): SVGTransform\n fun replaceItem(newItem: SVGTransform, index: Int): SVGTransform\n fun removeItem(index: Int): SVGTransform\n fun appendItem(newItem: SVGTransform): SVGTransform\n fun createSVGTransformFromMatrix(matrix: DOMMatrixReadOnly): SVGTransform\n fun consolidate(): SVGTransform?\n fun getItem(index: Int): SVGTransform\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun SVGTransformList.get(index: Int): SVGTransform? = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun SVGTransformList.set(index: Int, newItem: SVGTransform) { asDynamic()[index] = newItem }\n\n/**\n * Exposes the JavaScript [SVGAnimatedTransformList](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedTransformList) to Kotlin\n */\npublic external abstract class SVGAnimatedTransformList {\n open val baseVal: SVGTransformList\n open val animVal: SVGTransformList\n}\n\n/**\n * Exposes the JavaScript [SVGPreserveAspectRatio](https://developer.mozilla.org/en/docs/Web/API/SVGPreserveAspectRatio) to Kotlin\n */\npublic external abstract class SVGPreserveAspectRatio {\n open var align: Short\n open var meetOrSlice: Short\n\n companion object {\n val SVG_PRESERVEASPECTRATIO_UNKNOWN: Short\n val SVG_PRESERVEASPECTRATIO_NONE: Short\n val SVG_PRESERVEASPECTRATIO_XMINYMIN: Short\n val SVG_PRESERVEASPECTRATIO_XMIDYMIN: Short\n val SVG_PRESERVEASPECTRATIO_XMAXYMIN: Short\n val SVG_PRESERVEASPECTRATIO_XMINYMID: Short\n val SVG_PRESERVEASPECTRATIO_XMIDYMID: Short\n val SVG_PRESERVEASPECTRATIO_XMAXYMID: Short\n val SVG_PRESERVEASPECTRATIO_XMINYMAX: Short\n val SVG_PRESERVEASPECTRATIO_XMIDYMAX: Short\n val SVG_PRESERVEASPECTRATIO_XMAXYMAX: Short\n val SVG_MEETORSLICE_UNKNOWN: Short\n val SVG_MEETORSLICE_MEET: Short\n val SVG_MEETORSLICE_SLICE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedPreserveAspectRatio](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedPreserveAspectRatio) to Kotlin\n */\npublic external abstract class SVGAnimatedPreserveAspectRatio {\n open val baseVal: SVGPreserveAspectRatio\n open val animVal: SVGPreserveAspectRatio\n}\n\n/**\n * Exposes the JavaScript [SVGPathElement](https://developer.mozilla.org/en/docs/Web/API/SVGPathElement) to Kotlin\n */\npublic external abstract class SVGPathElement : SVGGeometryElement {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGRectElement](https://developer.mozilla.org/en/docs/Web/API/SVGRectElement) to Kotlin\n */\npublic external abstract class SVGRectElement : SVGGeometryElement {\n open val x: SVGAnimatedLength\n open val y: SVGAnimatedLength\n open val width: SVGAnimatedLength\n open val height: SVGAnimatedLength\n open val rx: SVGAnimatedLength\n open val ry: SVGAnimatedLength\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGCircleElement](https://developer.mozilla.org/en/docs/Web/API/SVGCircleElement) to Kotlin\n */\npublic external abstract class SVGCircleElement : SVGGeometryElement {\n open val cx: SVGAnimatedLength\n open val cy: SVGAnimatedLength\n open val r: SVGAnimatedLength\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGEllipseElement](https://developer.mozilla.org/en/docs/Web/API/SVGEllipseElement) to Kotlin\n */\npublic external abstract class SVGEllipseElement : SVGGeometryElement {\n open val cx: SVGAnimatedLength\n open val cy: SVGAnimatedLength\n open val rx: SVGAnimatedLength\n open val ry: SVGAnimatedLength\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGLineElement](https://developer.mozilla.org/en/docs/Web/API/SVGLineElement) to Kotlin\n */\npublic external abstract class SVGLineElement : SVGGeometryElement {\n open val x1: SVGAnimatedLength\n open val y1: SVGAnimatedLength\n open val x2: SVGAnimatedLength\n open val y2: SVGAnimatedLength\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGMeshElement](https://developer.mozilla.org/en/docs/Web/API/SVGMeshElement) to Kotlin\n */\npublic external abstract class SVGMeshElement : SVGGeometryElement, SVGURIReference {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGAnimatedPoints](https://developer.mozilla.org/en/docs/Web/API/SVGAnimatedPoints) to Kotlin\n */\npublic external interface SVGAnimatedPoints {\n val points: SVGPointList\n val animatedPoints: SVGPointList\n}\n\npublic external abstract class SVGPointList {\n open val length: Int\n open val numberOfItems: Int\n fun clear()\n fun initialize(newItem: DOMPoint): DOMPoint\n fun insertItemBefore(newItem: DOMPoint, index: Int): DOMPoint\n fun replaceItem(newItem: DOMPoint, index: Int): DOMPoint\n fun removeItem(index: Int): DOMPoint\n fun appendItem(newItem: DOMPoint): DOMPoint\n fun getItem(index: Int): DOMPoint\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun SVGPointList.get(index: Int): DOMPoint? = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun SVGPointList.set(index: Int, newItem: DOMPoint) { asDynamic()[index] = newItem }\n\n/**\n * Exposes the JavaScript [SVGPolylineElement](https://developer.mozilla.org/en/docs/Web/API/SVGPolylineElement) to Kotlin\n */\npublic external abstract class SVGPolylineElement : SVGGeometryElement, SVGAnimatedPoints {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGPolygonElement](https://developer.mozilla.org/en/docs/Web/API/SVGPolygonElement) to Kotlin\n */\npublic external abstract class SVGPolygonElement : SVGGeometryElement, SVGAnimatedPoints {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGTextContentElement](https://developer.mozilla.org/en/docs/Web/API/SVGTextContentElement) to Kotlin\n */\npublic external abstract class SVGTextContentElement : SVGGraphicsElement {\n open val textLength: SVGAnimatedLength\n open val lengthAdjust: SVGAnimatedEnumeration\n fun getNumberOfChars(): Int\n fun getComputedTextLength(): Float\n fun getSubStringLength(charnum: Int, nchars: Int): Float\n fun getStartPositionOfChar(charnum: Int): DOMPoint\n fun getEndPositionOfChar(charnum: Int): DOMPoint\n fun getExtentOfChar(charnum: Int): DOMRect\n fun getRotationOfChar(charnum: Int): Float\n fun getCharNumAtPosition(point: DOMPoint): Int\n fun selectSubString(charnum: Int, nchars: Int)\n\n companion object {\n val LENGTHADJUST_UNKNOWN: Short\n val LENGTHADJUST_SPACING: Short\n val LENGTHADJUST_SPACINGANDGLYPHS: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGTextPositioningElement](https://developer.mozilla.org/en/docs/Web/API/SVGTextPositioningElement) to Kotlin\n */\npublic external abstract class SVGTextPositioningElement : SVGTextContentElement {\n open val x: SVGAnimatedLengthList\n open val y: SVGAnimatedLengthList\n open val dx: SVGAnimatedLengthList\n open val dy: SVGAnimatedLengthList\n open val rotate: SVGAnimatedNumberList\n\n companion object {\n val LENGTHADJUST_UNKNOWN: Short\n val LENGTHADJUST_SPACING: Short\n val LENGTHADJUST_SPACINGANDGLYPHS: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGTextElement](https://developer.mozilla.org/en/docs/Web/API/SVGTextElement) to Kotlin\n */\npublic external abstract class SVGTextElement : SVGTextPositioningElement {\n companion object {\n val LENGTHADJUST_UNKNOWN: Short\n val LENGTHADJUST_SPACING: Short\n val LENGTHADJUST_SPACINGANDGLYPHS: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGTSpanElement](https://developer.mozilla.org/en/docs/Web/API/SVGTSpanElement) to Kotlin\n */\npublic external abstract class SVGTSpanElement : SVGTextPositioningElement {\n companion object {\n val LENGTHADJUST_UNKNOWN: Short\n val LENGTHADJUST_SPACING: Short\n val LENGTHADJUST_SPACINGANDGLYPHS: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGTextPathElement](https://developer.mozilla.org/en/docs/Web/API/SVGTextPathElement) to Kotlin\n */\npublic external abstract class SVGTextPathElement : SVGTextContentElement, SVGURIReference {\n open val startOffset: SVGAnimatedLength\n open val method: SVGAnimatedEnumeration\n open val spacing: SVGAnimatedEnumeration\n\n companion object {\n val TEXTPATH_METHODTYPE_UNKNOWN: Short\n val TEXTPATH_METHODTYPE_ALIGN: Short\n val TEXTPATH_METHODTYPE_STRETCH: Short\n val TEXTPATH_SPACINGTYPE_UNKNOWN: Short\n val TEXTPATH_SPACINGTYPE_AUTO: Short\n val TEXTPATH_SPACINGTYPE_EXACT: Short\n val LENGTHADJUST_UNKNOWN: Short\n val LENGTHADJUST_SPACING: Short\n val LENGTHADJUST_SPACINGANDGLYPHS: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGImageElement](https://developer.mozilla.org/en/docs/Web/API/SVGImageElement) to Kotlin\n */\npublic external abstract class SVGImageElement : SVGGraphicsElement, SVGURIReference, HTMLOrSVGImageElement {\n open val x: SVGAnimatedLength\n open val y: SVGAnimatedLength\n open val width: SVGAnimatedLength\n open val height: SVGAnimatedLength\n open val preserveAspectRatio: SVGAnimatedPreserveAspectRatio\n open var crossOrigin: String?\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGForeignObjectElement](https://developer.mozilla.org/en/docs/Web/API/SVGForeignObjectElement) to Kotlin\n */\npublic external abstract class SVGForeignObjectElement : SVGGraphicsElement {\n open val x: SVGAnimatedLength\n open val y: SVGAnimatedLength\n open val width: SVGAnimatedLength\n open val height: SVGAnimatedLength\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external abstract class SVGMarkerElement : SVGElement, SVGFitToViewBox {\n open val refX: SVGAnimatedLength\n open val refY: SVGAnimatedLength\n open val markerUnits: SVGAnimatedEnumeration\n open val markerWidth: SVGAnimatedLength\n open val markerHeight: SVGAnimatedLength\n open val orientType: SVGAnimatedEnumeration\n open val orientAngle: SVGAnimatedAngle\n open var orient: String\n fun setOrientToAuto()\n fun setOrientToAngle(angle: SVGAngle)\n\n companion object {\n val SVG_MARKERUNITS_UNKNOWN: Short\n val SVG_MARKERUNITS_USERSPACEONUSE: Short\n val SVG_MARKERUNITS_STROKEWIDTH: Short\n val SVG_MARKER_ORIENT_UNKNOWN: Short\n val SVG_MARKER_ORIENT_AUTO: Short\n val SVG_MARKER_ORIENT_ANGLE: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGSolidcolorElement](https://developer.mozilla.org/en/docs/Web/API/SVGSolidcolorElement) to Kotlin\n */\npublic external abstract class SVGSolidcolorElement : SVGElement {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGGradientElement](https://developer.mozilla.org/en/docs/Web/API/SVGGradientElement) to Kotlin\n */\npublic external abstract class SVGGradientElement : SVGElement, SVGURIReference, SVGUnitTypes {\n open val gradientUnits: SVGAnimatedEnumeration\n open val gradientTransform: SVGAnimatedTransformList\n open val spreadMethod: SVGAnimatedEnumeration\n\n companion object {\n val SVG_SPREADMETHOD_UNKNOWN: Short\n val SVG_SPREADMETHOD_PAD: Short\n val SVG_SPREADMETHOD_REFLECT: Short\n val SVG_SPREADMETHOD_REPEAT: Short\n val SVG_UNIT_TYPE_UNKNOWN: Short\n val SVG_UNIT_TYPE_USERSPACEONUSE: Short\n val SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGLinearGradientElement](https://developer.mozilla.org/en/docs/Web/API/SVGLinearGradientElement) to Kotlin\n */\npublic external abstract class SVGLinearGradientElement : SVGGradientElement {\n open val x1: SVGAnimatedLength\n open val y1: SVGAnimatedLength\n open val x2: SVGAnimatedLength\n open val y2: SVGAnimatedLength\n\n companion object {\n val SVG_SPREADMETHOD_UNKNOWN: Short\n val SVG_SPREADMETHOD_PAD: Short\n val SVG_SPREADMETHOD_REFLECT: Short\n val SVG_SPREADMETHOD_REPEAT: Short\n val SVG_UNIT_TYPE_UNKNOWN: Short\n val SVG_UNIT_TYPE_USERSPACEONUSE: Short\n val SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGRadialGradientElement](https://developer.mozilla.org/en/docs/Web/API/SVGRadialGradientElement) to Kotlin\n */\npublic external abstract class SVGRadialGradientElement : SVGGradientElement {\n open val cx: SVGAnimatedLength\n open val cy: SVGAnimatedLength\n open val r: SVGAnimatedLength\n open val fx: SVGAnimatedLength\n open val fy: SVGAnimatedLength\n open val fr: SVGAnimatedLength\n\n companion object {\n val SVG_SPREADMETHOD_UNKNOWN: Short\n val SVG_SPREADMETHOD_PAD: Short\n val SVG_SPREADMETHOD_REFLECT: Short\n val SVG_SPREADMETHOD_REPEAT: Short\n val SVG_UNIT_TYPE_UNKNOWN: Short\n val SVG_UNIT_TYPE_USERSPACEONUSE: Short\n val SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external abstract class SVGMeshGradientElement : SVGGradientElement {\n companion object {\n val SVG_SPREADMETHOD_UNKNOWN: Short\n val SVG_SPREADMETHOD_PAD: Short\n val SVG_SPREADMETHOD_REFLECT: Short\n val SVG_SPREADMETHOD_REPEAT: Short\n val SVG_UNIT_TYPE_UNKNOWN: Short\n val SVG_UNIT_TYPE_USERSPACEONUSE: Short\n val SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external abstract class SVGMeshrowElement : SVGElement {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external abstract class SVGMeshpatchElement : SVGElement {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGStopElement](https://developer.mozilla.org/en/docs/Web/API/SVGStopElement) to Kotlin\n */\npublic external abstract class SVGStopElement : SVGElement {\n open val offset: SVGAnimatedNumber\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGPatternElement](https://developer.mozilla.org/en/docs/Web/API/SVGPatternElement) to Kotlin\n */\npublic external abstract class SVGPatternElement : SVGElement, SVGFitToViewBox, SVGURIReference, SVGUnitTypes {\n open val patternUnits: SVGAnimatedEnumeration\n open val patternContentUnits: SVGAnimatedEnumeration\n open val patternTransform: SVGAnimatedTransformList\n open val x: SVGAnimatedLength\n open val y: SVGAnimatedLength\n open val width: SVGAnimatedLength\n open val height: SVGAnimatedLength\n\n companion object {\n val SVG_UNIT_TYPE_UNKNOWN: Short\n val SVG_UNIT_TYPE_USERSPACEONUSE: Short\n val SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external abstract class SVGHatchElement : SVGElement {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\npublic external abstract class SVGHatchpathElement : SVGElement {\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGCursorElement](https://developer.mozilla.org/en/docs/Web/API/SVGCursorElement) to Kotlin\n */\npublic external abstract class SVGCursorElement : SVGElement, SVGURIReference {\n open val x: SVGAnimatedLength\n open val y: SVGAnimatedLength\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGScriptElement](https://developer.mozilla.org/en/docs/Web/API/SVGScriptElement) to Kotlin\n */\npublic external abstract class SVGScriptElement : SVGElement, SVGURIReference, HTMLOrSVGScriptElement {\n open var type: String\n open var crossOrigin: String?\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGAElement](https://developer.mozilla.org/en/docs/Web/API/SVGAElement) to Kotlin\n */\npublic external abstract class SVGAElement : SVGGraphicsElement, SVGURIReference {\n open val target: SVGAnimatedString\n open val download: SVGAnimatedString\n open val rel: SVGAnimatedString\n open val relList: SVGAnimatedString\n open val hreflang: SVGAnimatedString\n open val type: SVGAnimatedString\n\n companion object {\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}\n\n/**\n * Exposes the JavaScript [SVGViewElement](https://developer.mozilla.org/en/docs/Web/API/SVGViewElement) to Kotlin\n */\npublic external abstract class SVGViewElement : SVGElement, SVGFitToViewBox, SVGZoomAndPan {\n companion object {\n val SVG_ZOOMANDPAN_UNKNOWN: Short\n val SVG_ZOOMANDPAN_DISABLE: Short\n val SVG_ZOOMANDPAN_MAGNIFY: Short\n val ELEMENT_NODE: Short\n val ATTRIBUTE_NODE: Short\n val TEXT_NODE: Short\n val CDATA_SECTION_NODE: Short\n val ENTITY_REFERENCE_NODE: Short\n val ENTITY_NODE: Short\n val PROCESSING_INSTRUCTION_NODE: Short\n val COMMENT_NODE: Short\n val DOCUMENT_NODE: Short\n val DOCUMENT_TYPE_NODE: Short\n val DOCUMENT_FRAGMENT_NODE: Short\n val NOTATION_NODE: Short\n val DOCUMENT_POSITION_DISCONNECTED: Short\n val DOCUMENT_POSITION_PRECEDING: Short\n val DOCUMENT_POSITION_FOLLOWING: Short\n val DOCUMENT_POSITION_CONTAINS: Short\n val DOCUMENT_POSITION_CONTAINED_BY: Short\n val DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: Short\n }\n}","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See github.com/kotlin/dukat for details\n\npackage org.w3c.files\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\n/**\n * Exposes the JavaScript [Blob](https://developer.mozilla.org/en/docs/Web/API/Blob) to Kotlin\n */\npublic external open class Blob(blobParts: Array = definedExternally, options: BlobPropertyBag = definedExternally) : ImageBitmapSource {\n open val size: Number\n open val type: String\n open val isClosed: Boolean\n fun slice(start: Int = definedExternally, end: Int = definedExternally, contentType: String = definedExternally): Blob\n fun close()\n}\n\npublic external interface BlobPropertyBag {\n var type: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun BlobPropertyBag(type: String? = \"\"): BlobPropertyBag {\n val o = js(\"({})\")\n o[\"type\"] = type\n return o\n}\n\n/**\n * Exposes the JavaScript [File](https://developer.mozilla.org/en/docs/Web/API/File) to Kotlin\n */\npublic external open class File(fileBits: Array, fileName: String, options: FilePropertyBag = definedExternally) : Blob {\n open val name: String\n open val lastModified: Int\n}\n\npublic external interface FilePropertyBag : BlobPropertyBag {\n var lastModified: Int?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun FilePropertyBag(lastModified: Int? = undefined, type: String? = \"\"): FilePropertyBag {\n val o = js(\"({})\")\n o[\"lastModified\"] = lastModified\n o[\"type\"] = type\n return o\n}\n\n/**\n * Exposes the JavaScript [FileList](https://developer.mozilla.org/en/docs/Web/API/FileList) to Kotlin\n */\npublic external abstract class FileList : ItemArrayLike {\n override fun item(index: Int): File?\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun FileList.get(index: Int): File? = asDynamic()[index]\n\n/**\n * Exposes the JavaScript [FileReader](https://developer.mozilla.org/en/docs/Web/API/FileReader) to Kotlin\n */\npublic external open class FileReader : EventTarget {\n open val readyState: Short\n open val result: dynamic\n open val error: dynamic\n var onloadstart: ((ProgressEvent) -> dynamic)?\n var onprogress: ((ProgressEvent) -> dynamic)?\n var onload: ((Event) -> dynamic)?\n var onabort: ((Event) -> dynamic)?\n var onerror: ((Event) -> dynamic)?\n var onloadend: ((Event) -> dynamic)?\n fun readAsArrayBuffer(blob: Blob)\n fun readAsBinaryString(blob: Blob)\n fun readAsText(blob: Blob, label: String = definedExternally)\n fun readAsDataURL(blob: Blob)\n fun abort()\n\n companion object {\n val EMPTY: Short\n val LOADING: Short\n val DONE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [FileReaderSync](https://developer.mozilla.org/en/docs/Web/API/FileReaderSync) to Kotlin\n */\npublic external open class FileReaderSync {\n fun readAsArrayBuffer(blob: Blob): ArrayBuffer\n fun readAsBinaryString(blob: Blob): String\n fun readAsText(blob: Blob, label: String = definedExternally): String\n fun readAsDataURL(blob: Blob): String\n}","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See github.com/kotlin/dukat for details\n\npackage org.w3c.notifications\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\n/**\n * Exposes the JavaScript [Notification](https://developer.mozilla.org/en/docs/Web/API/Notification) to Kotlin\n */\npublic external open class Notification(title: String, options: NotificationOptions = definedExternally) : EventTarget {\n var onclick: ((MouseEvent) -> dynamic)?\n var onerror: ((Event) -> dynamic)?\n open val title: String\n open val dir: NotificationDirection\n open val lang: String\n open val body: String\n open val tag: String\n open val image: String\n open val icon: String\n open val badge: String\n open val sound: String\n open val vibrate: Array\n open val timestamp: Number\n open val renotify: Boolean\n open val silent: Boolean\n open val noscreen: Boolean\n open val requireInteraction: Boolean\n open val sticky: Boolean\n open val data: Any?\n open val actions: Array\n fun close()\n\n companion object {\n val permission: NotificationPermission\n val maxActions: Int\n fun requestPermission(deprecatedCallback: (NotificationPermission) -> Unit = definedExternally): Promise\n }\n}\n\npublic external interface NotificationOptions {\n var dir: NotificationDirection? /* = NotificationDirection.AUTO */\n get() = definedExternally\n set(value) = definedExternally\n var lang: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var body: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var tag: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n var image: String?\n get() = definedExternally\n set(value) = definedExternally\n var icon: String?\n get() = definedExternally\n set(value) = definedExternally\n var badge: String?\n get() = definedExternally\n set(value) = definedExternally\n var sound: String?\n get() = definedExternally\n set(value) = definedExternally\n var vibrate: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var timestamp: Number?\n get() = definedExternally\n set(value) = definedExternally\n var renotify: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var silent: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var noscreen: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var requireInteraction: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var sticky: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var data: Any? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var actions: Array? /* = arrayOf() */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun NotificationOptions(dir: NotificationDirection? = NotificationDirection.AUTO, lang: String? = \"\", body: String? = \"\", tag: String? = \"\", image: String? = undefined, icon: String? = undefined, badge: String? = undefined, sound: String? = undefined, vibrate: dynamic = undefined, timestamp: Number? = undefined, renotify: Boolean? = false, silent: Boolean? = false, noscreen: Boolean? = false, requireInteraction: Boolean? = false, sticky: Boolean? = false, data: Any? = null, actions: Array? = arrayOf()): NotificationOptions {\n val o = js(\"({})\")\n o[\"dir\"] = dir\n o[\"lang\"] = lang\n o[\"body\"] = body\n o[\"tag\"] = tag\n o[\"image\"] = image\n o[\"icon\"] = icon\n o[\"badge\"] = badge\n o[\"sound\"] = sound\n o[\"vibrate\"] = vibrate\n o[\"timestamp\"] = timestamp\n o[\"renotify\"] = renotify\n o[\"silent\"] = silent\n o[\"noscreen\"] = noscreen\n o[\"requireInteraction\"] = requireInteraction\n o[\"sticky\"] = sticky\n o[\"data\"] = data\n o[\"actions\"] = actions\n return o\n}\n\npublic external interface NotificationAction {\n var action: String?\n get() = definedExternally\n set(value) = definedExternally\n var title: String?\n get() = definedExternally\n set(value) = definedExternally\n var icon: String?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun NotificationAction(action: String?, title: String?, icon: String? = undefined): NotificationAction {\n val o = js(\"({})\")\n o[\"action\"] = action\n o[\"title\"] = title\n o[\"icon\"] = icon\n return o\n}\n\npublic external interface GetNotificationOptions {\n var tag: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun GetNotificationOptions(tag: String? = \"\"): GetNotificationOptions {\n val o = js(\"({})\")\n o[\"tag\"] = tag\n return o\n}\n\n/**\n * Exposes the JavaScript [NotificationEvent](https://developer.mozilla.org/en/docs/Web/API/NotificationEvent) to Kotlin\n */\npublic external open class NotificationEvent(type: String, eventInitDict: NotificationEventInit) : ExtendableEvent {\n open val notification: Notification\n open val action: String\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface NotificationEventInit : ExtendableEventInit {\n var notification: Notification?\n get() = definedExternally\n set(value) = definedExternally\n var action: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun NotificationEventInit(notification: Notification?, action: String? = \"\", bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): NotificationEventInit {\n val o = js(\"({})\")\n o[\"notification\"] = notification\n o[\"action\"] = action\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface NotificationPermission {\n companion object\n}\n\npublic inline val NotificationPermission.Companion.DEFAULT: NotificationPermission get() = \"default\".asDynamic().unsafeCast()\n\npublic inline val NotificationPermission.Companion.DENIED: NotificationPermission get() = \"denied\".asDynamic().unsafeCast()\n\npublic inline val NotificationPermission.Companion.GRANTED: NotificationPermission get() = \"granted\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface NotificationDirection {\n companion object\n}\n\npublic inline val NotificationDirection.Companion.AUTO: NotificationDirection get() = \"auto\".asDynamic().unsafeCast()\n\npublic inline val NotificationDirection.Companion.LTR: NotificationDirection get() = \"ltr\".asDynamic().unsafeCast()\n\npublic inline val NotificationDirection.Companion.RTL: NotificationDirection get() = \"rtl\".asDynamic().unsafeCast()","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See github.com/kotlin/dukat for details\n\npackage org.w3c.workers\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.xhr.*\n\n/**\n * Exposes the JavaScript [ServiceWorker](https://developer.mozilla.org/en/docs/Web/API/ServiceWorker) to Kotlin\n */\npublic external abstract class ServiceWorker : EventTarget, AbstractWorker, UnionMessagePortOrServiceWorker, UnionClientOrMessagePortOrServiceWorker {\n open val scriptURL: String\n open val state: ServiceWorkerState\n open var onstatechange: ((Event) -> dynamic)?\n fun postMessage(message: Any?, transfer: Array = definedExternally)\n}\n\n/**\n * Exposes the JavaScript [ServiceWorkerRegistration](https://developer.mozilla.org/en/docs/Web/API/ServiceWorkerRegistration) to Kotlin\n */\npublic external abstract class ServiceWorkerRegistration : EventTarget {\n open val installing: ServiceWorker?\n open val waiting: ServiceWorker?\n open val active: ServiceWorker?\n open val scope: String\n open var onupdatefound: ((Event) -> dynamic)?\n open val APISpace: dynamic\n fun update(): Promise\n fun unregister(): Promise\n fun showNotification(title: String, options: NotificationOptions = definedExternally): Promise\n fun getNotifications(filter: GetNotificationOptions = definedExternally): Promise>\n fun methodName(): Promise\n}\n\n/**\n * Exposes the JavaScript [ServiceWorkerContainer](https://developer.mozilla.org/en/docs/Web/API/ServiceWorkerContainer) to Kotlin\n */\npublic external abstract class ServiceWorkerContainer : EventTarget {\n open val controller: ServiceWorker?\n open val ready: Promise\n open var oncontrollerchange: ((Event) -> dynamic)?\n open var onmessage: ((MessageEvent) -> dynamic)?\n fun register(scriptURL: String, options: RegistrationOptions = definedExternally): Promise\n fun getRegistration(clientURL: String = definedExternally): Promise\n fun getRegistrations(): Promise>\n fun startMessages()\n}\n\npublic external interface RegistrationOptions {\n var scope: String?\n get() = definedExternally\n set(value) = definedExternally\n var type: WorkerType? /* = WorkerType.CLASSIC */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun RegistrationOptions(scope: String? = undefined, type: WorkerType? = WorkerType.CLASSIC): RegistrationOptions {\n val o = js(\"({})\")\n o[\"scope\"] = scope\n o[\"type\"] = type\n return o\n}\n\n/**\n * Exposes the JavaScript [ServiceWorkerMessageEvent](https://developer.mozilla.org/en/docs/Web/API/ServiceWorkerMessageEvent) to Kotlin\n */\npublic external open class ServiceWorkerMessageEvent(type: String, eventInitDict: ServiceWorkerMessageEventInit = definedExternally) : Event {\n open val data: Any?\n open val origin: String\n open val lastEventId: String\n open val source: UnionMessagePortOrServiceWorker?\n open val ports: Array?\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface ServiceWorkerMessageEventInit : EventInit {\n var data: Any?\n get() = definedExternally\n set(value) = definedExternally\n var origin: String?\n get() = definedExternally\n set(value) = definedExternally\n var lastEventId: String?\n get() = definedExternally\n set(value) = definedExternally\n var source: UnionMessagePortOrServiceWorker?\n get() = definedExternally\n set(value) = definedExternally\n var ports: Array?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ServiceWorkerMessageEventInit(data: Any? = undefined, origin: String? = undefined, lastEventId: String? = undefined, source: UnionMessagePortOrServiceWorker? = undefined, ports: Array? = undefined, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): ServiceWorkerMessageEventInit {\n val o = js(\"({})\")\n o[\"data\"] = data\n o[\"origin\"] = origin\n o[\"lastEventId\"] = lastEventId\n o[\"source\"] = source\n o[\"ports\"] = ports\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [ServiceWorkerGlobalScope](https://developer.mozilla.org/en/docs/Web/API/ServiceWorkerGlobalScope) to Kotlin\n */\npublic external abstract class ServiceWorkerGlobalScope : WorkerGlobalScope {\n open val clients: Clients\n open val registration: ServiceWorkerRegistration\n open var oninstall: ((Event) -> dynamic)?\n open var onactivate: ((Event) -> dynamic)?\n open var onfetch: ((FetchEvent) -> dynamic)?\n open var onforeignfetch: ((Event) -> dynamic)?\n open var onmessage: ((MessageEvent) -> dynamic)?\n open var onnotificationclick: ((NotificationEvent) -> dynamic)?\n open var onnotificationclose: ((NotificationEvent) -> dynamic)?\n open var onfunctionalevent: ((Event) -> dynamic)?\n fun skipWaiting(): Promise\n}\n\n/**\n * Exposes the JavaScript [Client](https://developer.mozilla.org/en/docs/Web/API/Client) to Kotlin\n */\npublic external abstract class Client : UnionClientOrMessagePortOrServiceWorker {\n open val url: String\n open val frameType: FrameType\n open val id: String\n fun postMessage(message: Any?, transfer: Array = definedExternally)\n}\n\n/**\n * Exposes the JavaScript [WindowClient](https://developer.mozilla.org/en/docs/Web/API/WindowClient) to Kotlin\n */\npublic external abstract class WindowClient : Client {\n open val visibilityState: dynamic\n open val focused: Boolean\n fun focus(): Promise\n fun navigate(url: String): Promise\n}\n\n/**\n * Exposes the JavaScript [Clients](https://developer.mozilla.org/en/docs/Web/API/Clients) to Kotlin\n */\npublic external abstract class Clients {\n fun get(id: String): Promise\n fun matchAll(options: ClientQueryOptions = definedExternally): Promise>\n fun openWindow(url: String): Promise\n fun claim(): Promise\n}\n\npublic external interface ClientQueryOptions {\n var includeUncontrolled: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var type: ClientType? /* = ClientType.WINDOW */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ClientQueryOptions(includeUncontrolled: Boolean? = false, type: ClientType? = ClientType.WINDOW): ClientQueryOptions {\n val o = js(\"({})\")\n o[\"includeUncontrolled\"] = includeUncontrolled\n o[\"type\"] = type\n return o\n}\n\n/**\n * Exposes the JavaScript [ExtendableEvent](https://developer.mozilla.org/en/docs/Web/API/ExtendableEvent) to Kotlin\n */\npublic external open class ExtendableEvent(type: String, eventInitDict: ExtendableEventInit = definedExternally) : Event {\n fun waitUntil(f: Promise)\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface ExtendableEventInit : EventInit\n\n@kotlin.internal.InlineOnly\npublic inline fun ExtendableEventInit(bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): ExtendableEventInit {\n val o = js(\"({})\")\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [InstallEvent](https://developer.mozilla.org/en/docs/Web/API/InstallEvent) to Kotlin\n */\npublic external open class InstallEvent(type: String, eventInitDict: ExtendableEventInit = definedExternally) : ExtendableEvent {\n fun registerForeignFetch(options: ForeignFetchOptions)\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface ForeignFetchOptions {\n var scopes: Array?\n get() = definedExternally\n set(value) = definedExternally\n var origins: Array?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ForeignFetchOptions(scopes: Array?, origins: Array?): ForeignFetchOptions {\n val o = js(\"({})\")\n o[\"scopes\"] = scopes\n o[\"origins\"] = origins\n return o\n}\n\n/**\n * Exposes the JavaScript [FetchEvent](https://developer.mozilla.org/en/docs/Web/API/FetchEvent) to Kotlin\n */\npublic external open class FetchEvent(type: String, eventInitDict: FetchEventInit) : ExtendableEvent {\n open val request: Request\n open val clientId: String?\n open val isReload: Boolean\n fun respondWith(r: Promise)\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface FetchEventInit : ExtendableEventInit {\n var request: Request?\n get() = definedExternally\n set(value) = definedExternally\n var clientId: String? /* = null */\n get() = definedExternally\n set(value) = definedExternally\n var isReload: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun FetchEventInit(request: Request?, clientId: String? = null, isReload: Boolean? = false, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): FetchEventInit {\n val o = js(\"({})\")\n o[\"request\"] = request\n o[\"clientId\"] = clientId\n o[\"isReload\"] = isReload\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\npublic external open class ForeignFetchEvent(type: String, eventInitDict: ForeignFetchEventInit) : ExtendableEvent {\n open val request: Request\n open val origin: String\n fun respondWith(r: Promise)\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface ForeignFetchEventInit : ExtendableEventInit {\n var request: Request?\n get() = definedExternally\n set(value) = definedExternally\n var origin: String? /* = \"null\" */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ForeignFetchEventInit(request: Request?, origin: String? = \"null\", bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): ForeignFetchEventInit {\n val o = js(\"({})\")\n o[\"request\"] = request\n o[\"origin\"] = origin\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\npublic external interface ForeignFetchResponse {\n var response: Response?\n get() = definedExternally\n set(value) = definedExternally\n var origin: String?\n get() = definedExternally\n set(value) = definedExternally\n var headers: Array?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ForeignFetchResponse(response: Response?, origin: String? = undefined, headers: Array? = undefined): ForeignFetchResponse {\n val o = js(\"({})\")\n o[\"response\"] = response\n o[\"origin\"] = origin\n o[\"headers\"] = headers\n return o\n}\n\n/**\n * Exposes the JavaScript [ExtendableMessageEvent](https://developer.mozilla.org/en/docs/Web/API/ExtendableMessageEvent) to Kotlin\n */\npublic external open class ExtendableMessageEvent(type: String, eventInitDict: ExtendableMessageEventInit = definedExternally) : ExtendableEvent {\n open val data: Any?\n open val origin: String\n open val lastEventId: String\n open val source: UnionClientOrMessagePortOrServiceWorker?\n open val ports: Array?\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface ExtendableMessageEventInit : ExtendableEventInit {\n var data: Any?\n get() = definedExternally\n set(value) = definedExternally\n var origin: String?\n get() = definedExternally\n set(value) = definedExternally\n var lastEventId: String?\n get() = definedExternally\n set(value) = definedExternally\n var source: UnionClientOrMessagePortOrServiceWorker?\n get() = definedExternally\n set(value) = definedExternally\n var ports: Array?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ExtendableMessageEventInit(data: Any? = undefined, origin: String? = undefined, lastEventId: String? = undefined, source: UnionClientOrMessagePortOrServiceWorker? = undefined, ports: Array? = undefined, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): ExtendableMessageEventInit {\n val o = js(\"({})\")\n o[\"data\"] = data\n o[\"origin\"] = origin\n o[\"lastEventId\"] = lastEventId\n o[\"source\"] = source\n o[\"ports\"] = ports\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [Cache](https://developer.mozilla.org/en/docs/Web/API/Cache) to Kotlin\n */\npublic external abstract class Cache {\n fun match(request: dynamic, options: CacheQueryOptions = definedExternally): Promise\n fun matchAll(request: dynamic = definedExternally, options: CacheQueryOptions = definedExternally): Promise>\n fun add(request: dynamic): Promise\n fun addAll(requests: Array): Promise\n fun put(request: dynamic, response: Response): Promise\n fun delete(request: dynamic, options: CacheQueryOptions = definedExternally): Promise\n fun keys(request: dynamic = definedExternally, options: CacheQueryOptions = definedExternally): Promise>\n}\n\npublic external interface CacheQueryOptions {\n var ignoreSearch: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var ignoreMethod: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var ignoreVary: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var cacheName: String?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun CacheQueryOptions(ignoreSearch: Boolean? = false, ignoreMethod: Boolean? = false, ignoreVary: Boolean? = false, cacheName: String? = undefined): CacheQueryOptions {\n val o = js(\"({})\")\n o[\"ignoreSearch\"] = ignoreSearch\n o[\"ignoreMethod\"] = ignoreMethod\n o[\"ignoreVary\"] = ignoreVary\n o[\"cacheName\"] = cacheName\n return o\n}\n\npublic external interface CacheBatchOperation {\n var type: String?\n get() = definedExternally\n set(value) = definedExternally\n var request: Request?\n get() = definedExternally\n set(value) = definedExternally\n var response: Response?\n get() = definedExternally\n set(value) = definedExternally\n var options: CacheQueryOptions?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun CacheBatchOperation(type: String? = undefined, request: Request? = undefined, response: Response? = undefined, options: CacheQueryOptions? = undefined): CacheBatchOperation {\n val o = js(\"({})\")\n o[\"type\"] = type\n o[\"request\"] = request\n o[\"response\"] = response\n o[\"options\"] = options\n return o\n}\n\n/**\n * Exposes the JavaScript [CacheStorage](https://developer.mozilla.org/en/docs/Web/API/CacheStorage) to Kotlin\n */\npublic external abstract class CacheStorage {\n fun match(request: dynamic, options: CacheQueryOptions = definedExternally): Promise\n fun has(cacheName: String): Promise\n fun open(cacheName: String): Promise\n fun delete(cacheName: String): Promise\n fun keys(): Promise>\n}\n\npublic external open class FunctionalEvent : ExtendableEvent {\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface UnionMessagePortOrServiceWorker\n\npublic external interface UnionClientOrMessagePortOrServiceWorker\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface ServiceWorkerState {\n companion object\n}\n\npublic inline val ServiceWorkerState.Companion.INSTALLING: ServiceWorkerState get() = \"installing\".asDynamic().unsafeCast()\n\npublic inline val ServiceWorkerState.Companion.INSTALLED: ServiceWorkerState get() = \"installed\".asDynamic().unsafeCast()\n\npublic inline val ServiceWorkerState.Companion.ACTIVATING: ServiceWorkerState get() = \"activating\".asDynamic().unsafeCast()\n\npublic inline val ServiceWorkerState.Companion.ACTIVATED: ServiceWorkerState get() = \"activated\".asDynamic().unsafeCast()\n\npublic inline val ServiceWorkerState.Companion.REDUNDANT: ServiceWorkerState get() = \"redundant\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface FrameType {\n companion object\n}\n\npublic inline val FrameType.Companion.AUXILIARY: FrameType get() = \"auxiliary\".asDynamic().unsafeCast()\n\npublic inline val FrameType.Companion.TOP_LEVEL: FrameType get() = \"top-level\".asDynamic().unsafeCast()\n\npublic inline val FrameType.Companion.NESTED: FrameType get() = \"nested\".asDynamic().unsafeCast()\n\npublic inline val FrameType.Companion.NONE: FrameType get() = \"none\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface ClientType {\n companion object\n}\n\npublic inline val ClientType.Companion.WINDOW: ClientType get() = \"window\".asDynamic().unsafeCast()\n\npublic inline val ClientType.Companion.WORKER: ClientType get() = \"worker\".asDynamic().unsafeCast()\n\npublic inline val ClientType.Companion.SHAREDWORKER: ClientType get() = \"sharedworker\".asDynamic().unsafeCast()\n\npublic inline val ClientType.Companion.ALL: ClientType get() = \"all\".asDynamic().unsafeCast()","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See github.com/kotlin/dukat for details\n\npackage org.w3c.xhr\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\n\n/**\n * Exposes the JavaScript [XMLHttpRequestEventTarget](https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequestEventTarget) to Kotlin\n */\npublic external abstract class XMLHttpRequestEventTarget : EventTarget {\n open var onloadstart: ((ProgressEvent) -> dynamic)?\n open var onprogress: ((ProgressEvent) -> dynamic)?\n open var onabort: ((Event) -> dynamic)?\n open var onerror: ((Event) -> dynamic)?\n open var onload: ((Event) -> dynamic)?\n open var ontimeout: ((Event) -> dynamic)?\n open var onloadend: ((Event) -> dynamic)?\n}\n\npublic external abstract class XMLHttpRequestUpload : XMLHttpRequestEventTarget\n\n/**\n * Exposes the JavaScript [XMLHttpRequest](https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest) to Kotlin\n */\npublic external open class XMLHttpRequest : XMLHttpRequestEventTarget {\n var onreadystatechange: ((Event) -> dynamic)?\n open val readyState: Short\n var timeout: Int\n var withCredentials: Boolean\n open val upload: XMLHttpRequestUpload\n open val responseURL: String\n open val status: Short\n open val statusText: String\n var responseType: XMLHttpRequestResponseType\n open val response: Any?\n open val responseText: String\n open val responseXML: Document?\n fun open(method: String, url: String)\n fun open(method: String, url: String, async: Boolean, username: String? = definedExternally, password: String? = definedExternally)\n fun setRequestHeader(name: String, value: String)\n fun send(body: dynamic = definedExternally)\n fun abort()\n fun getResponseHeader(name: String): String?\n fun getAllResponseHeaders(): String\n fun overrideMimeType(mime: String)\n\n companion object {\n val UNSENT: Short\n val OPENED: Short\n val HEADERS_RECEIVED: Short\n val LOADING: Short\n val DONE: Short\n }\n}\n\n/**\n * Exposes the JavaScript [FormData](https://developer.mozilla.org/en/docs/Web/API/FormData) to Kotlin\n */\npublic external open class FormData(form: HTMLFormElement = definedExternally) {\n fun append(name: String, value: String)\n fun append(name: String, value: Blob, filename: String = definedExternally)\n fun delete(name: String)\n fun get(name: String): dynamic\n fun getAll(name: String): Array\n fun has(name: String): Boolean\n fun set(name: String, value: String)\n fun set(name: String, value: Blob, filename: String = definedExternally)\n}\n\n/**\n * Exposes the JavaScript [ProgressEvent](https://developer.mozilla.org/en/docs/Web/API/ProgressEvent) to Kotlin\n */\npublic external open class ProgressEvent(type: String, eventInitDict: ProgressEventInit = definedExternally) : Event {\n open val lengthComputable: Boolean\n open val loaded: Number\n open val total: Number\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface ProgressEventInit : EventInit {\n var lengthComputable: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var loaded: Number? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n var total: Number? /* = 0 */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ProgressEventInit(lengthComputable: Boolean? = false, loaded: Number? = 0, total: Number? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): ProgressEventInit {\n val o = js(\"({})\")\n o[\"lengthComputable\"] = lengthComputable\n o[\"loaded\"] = loaded\n o[\"total\"] = total\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface XMLHttpRequestResponseType {\n companion object\n}\n\npublic inline val XMLHttpRequestResponseType.Companion.EMPTY: XMLHttpRequestResponseType get() = \"\".asDynamic().unsafeCast()\n\npublic inline val XMLHttpRequestResponseType.Companion.ARRAYBUFFER: XMLHttpRequestResponseType get() = \"arraybuffer\".asDynamic().unsafeCast()\n\npublic inline val XMLHttpRequestResponseType.Companion.BLOB: XMLHttpRequestResponseType get() = \"blob\".asDynamic().unsafeCast()\n\npublic inline val XMLHttpRequestResponseType.Companion.DOCUMENT: XMLHttpRequestResponseType get() = \"document\".asDynamic().unsafeCast()\n\npublic inline val XMLHttpRequestResponseType.Companion.JSON: XMLHttpRequestResponseType get() = \"json\".asDynamic().unsafeCast()\n\npublic inline val XMLHttpRequestResponseType.Companion.TEXT: XMLHttpRequestResponseType get() = \"text\".asDynamic().unsafeCast()","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\nimport kotlin.annotation.AnnotationRetention.BINARY\nimport kotlin.annotation.AnnotationRetention.SOURCE\nimport kotlin.annotation.AnnotationTarget.*\nimport kotlin.internal.RequireKotlin\nimport kotlin.internal.RequireKotlinVersionKind\nimport kotlin.reflect.KClass\n\n/**\n * Signals that the annotated annotation class is a marker of an experimental API.\n *\n * Any declaration annotated with that marker is considered an experimental declaration\n * and its call sites should accept the experimental aspect of it either by using [UseExperimental],\n * or by being annotated with that marker themselves, effectively causing further propagation of that experimental aspect.\n *\n * This class is deprecated in favor of a more general approach provided by [RequiresOptIn]/[OptIn].\n */\n@Target(ANNOTATION_CLASS)\n@Retention(BINARY)\n@SinceKotlin(\"1.2\")\n@RequireKotlin(\"1.2.50\", versionKind = RequireKotlinVersionKind.COMPILER_VERSION)\n@Deprecated(\"Please use RequiresOptIn instead.\")\npublic annotation class Experimental(val level: Level = Level.ERROR) {\n /**\n * Severity of the diagnostic that should be reported on usages of experimental API which did not explicitly accept the experimental aspect\n * of that API either by using [UseExperimental] or by being annotated with the corresponding marker annotation.\n */\n public enum class Level {\n /** Specifies that a warning should be reported on incorrect usages of this experimental API. */\n WARNING,\n /** Specifies that an error should be reported on incorrect usages of this experimental API. */\n ERROR,\n }\n}\n\n/**\n * Allows to use experimental API denoted by the given markers in the annotated file, declaration, or expression.\n * If a declaration is annotated with [UseExperimental], its usages are **not** required to opt-in to that experimental API.\n *\n * This class is deprecated in favor of a more general approach provided by [RequiresOptIn]/[OptIn].\n */\n@Target(\n CLASS, PROPERTY, LOCAL_VARIABLE, VALUE_PARAMETER, CONSTRUCTOR, FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, EXPRESSION, FILE, TYPEALIAS\n)\n@Retention(SOURCE)\n@SinceKotlin(\"1.2\")\n@RequireKotlin(\"1.2.50\", versionKind = RequireKotlinVersionKind.COMPILER_VERSION)\n@Deprecated(\"Please use OptIn instead.\", ReplaceWith(\"OptIn(*markerClass)\", \"kotlin.OptIn\"))\npublic annotation class UseExperimental(\n vararg val markerClass: KClass\n)\n\n\n@Target(CLASS, PROPERTY, CONSTRUCTOR, FUNCTION, TYPEALIAS)\n@Retention(BINARY)\ninternal annotation class WasExperimental(\n vararg val markerClass: KClass\n)\n","package kotlin\n\nimport kotlin.annotation.AnnotationTarget.*\n\n/**\n * This annotation marks the standard library API that is considered experimental and is not subject to the\n * [general compatibility guarantees](https://kotlinlang.org/docs/reference/evolution/components-stability.html) given for the standard library:\n * the behavior of such API may be changed or the API may be removed completely in any further release.\n *\n * > Beware using the annotated API especially if you're developing a library, since your library might become binary incompatible\n * with the future versions of the standard library.\n *\n * Any usage of a declaration annotated with `@ExperimentalStdlibApi` must be accepted either by\n * annotating that usage with the [OptIn] annotation, e.g. `@OptIn(ExperimentalStdlibApi::class)`,\n * or by using the compiler argument `-Xopt-in=kotlin.ExperimentalStdlibApi`.\n */\n@Suppress(\"DEPRECATION\")\n@Experimental(level = Experimental.Level.ERROR)\n@RequiresOptIn(level = RequiresOptIn.Level.ERROR)\n@Retention(AnnotationRetention.BINARY)\n@Target(\n CLASS,\n ANNOTATION_CLASS,\n PROPERTY,\n FIELD,\n LOCAL_VARIABLE,\n VALUE_PARAMETER,\n CONSTRUCTOR,\n FUNCTION,\n PROPERTY_GETTER,\n PROPERTY_SETTER,\n TYPEALIAS\n)\n@MustBeDocumented\n@ExperimentalStdlibApi\n@SinceKotlin(\"1.3\") // TODO: Remove experimental status from itself and advance SinceKotlin to 1.4\npublic annotation class ExperimentalStdlibApi\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\nimport kotlin.annotation.AnnotationTarget.*\nimport kotlin.experimental.ExperimentalTypeInference\n\n/**\n * Allows to infer generic type arguments of a function from the calls in the annotated function parameter of that function.\n *\n * When this annotation is placed on a generic function parameter of a function,\n * it enables to infer the type arguments of that generic function from the lambda body passed to that parameter.\n *\n * The calls that affect inference are either members of the receiver type of an annotated function parameter or\n * extensions for that type. The extensions must be themselves annotated with `@BuilderInference`.\n *\n * Example: we declare\n * ```\n * fun sequence(@BuilderInference block: suspend SequenceScope.() -> Unit): Sequence\n * ```\n * and use it like\n * ```\n * val result = sequence { yield(\"result\") }\n * ```\n * Here the type argument of the resulting sequence is inferred to `String` from\n * the argument of the [SequenceScope.yield] function, that is called inside the lambda passed to [sequence].\n *\n * Note: this annotation is experimental, see [ExperimentalTypeInference] on how to opt-in for it.\n */\n@Target(VALUE_PARAMETER, FUNCTION, PROPERTY)\n@Retention(AnnotationRetention.BINARY)\n@SinceKotlin(\"1.3\")\n@ExperimentalTypeInference\npublic annotation class BuilderInference\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\nimport kotlin.annotation.AnnotationTarget.*\nimport kotlin.internal.RequireKotlin\nimport kotlin.internal.RequireKotlinVersionKind\n\n/**\n * The experimental multiplatform support API marker.\n *\n * Any usage of a declaration annotated with `@ExperimentalMultiplatform` must be accepted either by\n * annotating that usage with the [OptIn] annotation, e.g. `@OptIn(ExperimentalMultiplatform::class)`,\n * or by using the compiler argument `-Xopt-in=kotlin.ExperimentalMultiplatform`.\n */\n@Suppress(\"DEPRECATION\")\n@Experimental\n@RequiresOptIn\n@MustBeDocumented\n@Target(\n CLASS,\n ANNOTATION_CLASS,\n PROPERTY,\n FIELD,\n LOCAL_VARIABLE,\n VALUE_PARAMETER,\n CONSTRUCTOR,\n FUNCTION,\n PROPERTY_GETTER,\n PROPERTY_SETTER,\n TYPEALIAS\n)\n@Retention(AnnotationRetention.BINARY)\n@RequireKotlin(\"1.2.50\", versionKind = RequireKotlinVersionKind.COMPILER_VERSION)\npublic annotation class ExperimentalMultiplatform\n\n/**\n * Marks an expected annotation class that it isn't required to have actual counterparts in all platforms.\n *\n * This annotation is only applicable to `expect` annotation classes in multi-platform projects and marks that class as \"optional\".\n * Optional expected class is allowed to have no corresponding actual class on the platform. Optional annotations can only be used\n * to annotate something, not as types in signatures. If an optional annotation has no corresponding actual class on a platform,\n * the annotation entries where it's used are simply erased when compiling code on that platform.\n *\n * Note: this annotation is experimental, see [ExperimentalMultiplatform] on how to opt-in for it.\n */\n@Target(ANNOTATION_CLASS)\n@Retention(AnnotationRetention.BINARY)\n@ExperimentalMultiplatform\n@RequireKotlin(\"1.2.50\", versionKind = RequireKotlinVersionKind.COMPILER_VERSION)\npublic annotation class OptionalExpectation\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\nimport kotlin.annotation.AnnotationRetention.BINARY\nimport kotlin.annotation.AnnotationRetention.SOURCE\nimport kotlin.annotation.AnnotationTarget.*\nimport kotlin.internal.RequireKotlin\nimport kotlin.internal.RequireKotlinVersionKind\nimport kotlin.reflect.KClass\n\n/**\n * Signals that the annotated annotation class is a marker of an API that requires an explicit opt-in.\n *\n * Call sites of any declaration annotated with that marker should opt in to the API either by using [OptIn],\n * or by being annotated with that marker themselves, effectively causing further propagation of the opt-in requirement.\n *\n * This class requires opt-in itself and can only be used with the compiler argument `-Xopt-in=kotlin.RequiresOptIn`.\n *\n * @property message message to be reported on usages of API without an explicit opt-in, or empty string for the default message.\n * The default message is: \"This declaration is experimental and its usage should be marked with 'Marker'\n * or '@OptIn(Marker::class)'\", where `Marker` is the opt-in requirement marker.\n * @property level specifies how usages of API without an explicit opt-in are reported in code.\n */\n@Target(ANNOTATION_CLASS)\n@Retention(BINARY)\n@SinceKotlin(\"1.3\")\n@RequireKotlin(\"1.3.70\", versionKind = RequireKotlinVersionKind.COMPILER_VERSION)\npublic annotation class RequiresOptIn(\n val message: String = \"\",\n val level: Level = Level.ERROR\n) {\n /**\n * Severity of the diagnostic that should be reported on usages which did not explicitly opted into\n * the API either by using [OptIn] or by being annotated with the corresponding marker annotation.\n */\n public enum class Level {\n /** Specifies that a warning should be reported on incorrect usages of this API. */\n WARNING,\n\n /** Specifies that an error should be reported on incorrect usages of this API. */\n ERROR,\n }\n}\n\n/**\n * Allows to use the API denoted by the given markers in the annotated file, declaration, or expression.\n * If a declaration is annotated with [OptIn], its usages are **not** required to opt in to that API.\n *\n * This class requires opt-in itself and can only be used with the compiler argument `-Xopt-in=kotlin.RequiresOptIn`.\n */\n@Target(\n CLASS, PROPERTY, LOCAL_VARIABLE, VALUE_PARAMETER, CONSTRUCTOR, FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, EXPRESSION, FILE, TYPEALIAS\n)\n@Retention(SOURCE)\n@SinceKotlin(\"1.3\")\n@RequireKotlin(\"1.3.70\", versionKind = RequireKotlinVersionKind.COMPILER_VERSION)\npublic annotation class OptIn(\n vararg val markerClass: KClass\n)\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\npackage kotlin.collections\n\nimport kotlin.js.JsName\n\n/**\n * Provides a skeletal implementation of the read-only [Collection] interface.\n *\n * @param E the type of elements contained in the collection. The collection is covariant on its element type.\n */\n@SinceKotlin(\"1.1\")\npublic abstract class AbstractCollection protected constructor() : Collection {\n abstract override val size: Int\n abstract override fun iterator(): Iterator\n\n override fun contains(element: @UnsafeVariance E): Boolean = any { it == element }\n\n override fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean =\n elements.all { contains(it) } // use when js will support bound refs: elements.all(this::contains)\n\n override fun isEmpty(): Boolean = size == 0\n\n override fun toString(): String = joinToString(\", \", \"[\", \"]\") {\n if (it === this) \"(this Collection)\" else it.toString()\n }\n\n /**\n * Returns new array of type `Array` with the elements of this collection.\n */\n @JsName(\"toArray\")\n protected open fun toArray(): Array = copyToArrayImpl(this)\n\n /**\n * Fills the provided [array] or creates new array of the same type\n * and fills it with the elements of this collection.\n */\n protected open fun toArray(array: Array): Array = copyToArrayImpl(this, array)\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n\nprivate enum class State {\n Ready,\n NotReady,\n Done,\n Failed\n}\n\n/**\n * A base class to simplify implementing iterators so that implementations only have to implement [computeNext]\n * to implement the iterator, calling [done] when the iteration is complete.\n */\npublic abstract class AbstractIterator : Iterator {\n private var state = State.NotReady\n private var nextValue: T? = null\n\n override fun hasNext(): Boolean {\n require(state != State.Failed)\n return when (state) {\n State.Done -> false\n State.Ready -> true\n else -> tryToComputeNext()\n }\n }\n\n override fun next(): T {\n if (!hasNext()) throw NoSuchElementException()\n state = State.NotReady\n @Suppress(\"UNCHECKED_CAST\")\n return nextValue as T\n }\n\n private fun tryToComputeNext(): Boolean {\n state = State.Failed\n computeNext()\n return state == State.Ready\n }\n\n /**\n * Computes the next item in the iterator.\n *\n * This callback method should call one of these two methods:\n *\n * * [setNext] with the next value of the iteration\n * * [done] to indicate there are no more elements\n *\n * Failure to call either method will result in the iteration terminating with a failed state\n */\n abstract protected fun computeNext(): Unit\n\n /**\n * Sets the next value in the iteration, called from the [computeNext] function\n */\n protected fun setNext(value: T): Unit {\n nextValue = value\n state = State.Ready\n }\n\n /**\n * Sets the state to done so that the iteration terminates.\n */\n protected fun done() {\n state = State.Done\n }\n}\n\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT AbstractList\n * Copyright 2007 Google Inc.\n*/\n\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the read-only [List] interface.\n *\n * This class is intended to help implementing read-only lists so it doesn't support concurrent modification tracking.\n *\n * @param E the type of elements contained in the list. The list is covariant on its element type.\n */\n@SinceKotlin(\"1.1\")\npublic abstract class AbstractList protected constructor() : AbstractCollection(), List {\n abstract override val size: Int\n abstract override fun get(index: Int): E\n\n override fun iterator(): Iterator = IteratorImpl()\n\n override fun indexOf(element: @UnsafeVariance E): Int = indexOfFirst { it == element }\n\n override fun lastIndexOf(element: @UnsafeVariance E): Int = indexOfLast { it == element }\n\n override fun listIterator(): ListIterator = ListIteratorImpl(0)\n\n override fun listIterator(index: Int): ListIterator = ListIteratorImpl(index)\n\n override fun subList(fromIndex: Int, toIndex: Int): List = SubList(this, fromIndex, toIndex)\n\n private class SubList(private val list: AbstractList, private val fromIndex: Int, toIndex: Int) : AbstractList(), RandomAccess {\n private var _size: Int = 0\n\n init {\n checkRangeIndexes(fromIndex, toIndex, list.size)\n this._size = toIndex - fromIndex\n }\n\n override fun get(index: Int): E {\n checkElementIndex(index, _size)\n\n return list[fromIndex + index]\n }\n\n override val size: Int get() = _size\n }\n\n /**\n * Compares this list with other list instance with the ordered structural equality.\n *\n * @return true, if [other] instance is a [List] of the same size, which contains the same elements in the same order.\n */\n override fun equals(other: Any?): Boolean {\n if (other === this) return true\n if (other !is List<*>) return false\n\n return orderedEquals(this, other)\n }\n\n /**\n * Returns the hash code value for this list.\n */\n override fun hashCode(): Int = orderedHashCode(this)\n\n private open inner class IteratorImpl : Iterator {\n /** the index of the item that will be returned on the next call to [next]`()` */\n protected var index = 0\n\n override fun hasNext(): Boolean = index < size\n\n override fun next(): E {\n if (!hasNext()) throw NoSuchElementException()\n return get(index++)\n }\n }\n\n /**\n * Implementation of [ListIterator] for abstract lists.\n */\n private open inner class ListIteratorImpl(index: Int) : IteratorImpl(), ListIterator {\n\n init {\n checkPositionIndex(index, this@AbstractList.size)\n this.index = index\n }\n\n override fun hasPrevious(): Boolean = index > 0\n\n override fun nextIndex(): Int = index\n\n override fun previous(): E {\n if (!hasPrevious()) throw NoSuchElementException()\n return get(--index)\n }\n\n override fun previousIndex(): Int = index - 1\n }\n\n internal companion object {\n internal fun checkElementIndex(index: Int, size: Int) {\n if (index < 0 || index >= size) {\n throw IndexOutOfBoundsException(\"index: $index, size: $size\")\n }\n }\n\n internal fun checkPositionIndex(index: Int, size: Int) {\n if (index < 0 || index > size) {\n throw IndexOutOfBoundsException(\"index: $index, size: $size\")\n }\n }\n\n internal fun checkRangeIndexes(fromIndex: Int, toIndex: Int, size: Int) {\n if (fromIndex < 0 || toIndex > size) {\n throw IndexOutOfBoundsException(\"fromIndex: $fromIndex, toIndex: $toIndex, size: $size\")\n }\n if (fromIndex > toIndex) {\n throw IllegalArgumentException(\"fromIndex: $fromIndex > toIndex: $toIndex\")\n }\n }\n\n internal fun checkBoundsIndexes(startIndex: Int, endIndex: Int, size: Int) {\n if (startIndex < 0 || endIndex > size) {\n throw IndexOutOfBoundsException(\"startIndex: $startIndex, endIndex: $endIndex, size: $size\")\n }\n if (startIndex > endIndex) {\n throw IllegalArgumentException(\"startIndex: $startIndex > endIndex: $endIndex\")\n }\n }\n\n internal fun orderedHashCode(c: Collection<*>): Int {\n var hashCode = 1\n for (e in c) {\n hashCode = 31 * hashCode + (e?.hashCode() ?: 0)\n }\n return hashCode\n }\n\n internal fun orderedEquals(c: Collection<*>, other: Collection<*>): Boolean {\n if (c.size != other.size) return false\n\n val otherIterator = other.iterator()\n for (elem in c) {\n val elemOther = otherIterator.next()\n if (elem != elemOther) {\n return false\n }\n }\n return true\n }\n }\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n/*\n * Based on GWT AbstractMap\n * Copyright 2007 Google Inc.\n */\n\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the read-only [Map] interface.\n *\n * The implementor is required to implement [entries] property, which should return read-only set of map entries.\n *\n * @param K the type of map keys. The map is invariant on its key type.\n * @param V the type of map values. The map is covariant on its value type.\n */\n@SinceKotlin(\"1.1\")\npublic abstract class AbstractMap protected constructor() : Map {\n\n override fun containsKey(key: K): Boolean {\n return implFindEntry(key) != null\n }\n\n override fun containsValue(value: @UnsafeVariance V): Boolean = entries.any { it.value == value }\n\n internal fun containsEntry(entry: Map.Entry<*, *>?): Boolean {\n // since entry comes from @UnsafeVariance parameters it can be virtually anything\n if (entry !is Map.Entry<*, *>) return false\n val key = entry.key\n val value = entry.value\n val ourValue = get(key)\n\n if (value != ourValue) {\n return false\n }\n\n // Perhaps it was null and we don't contain the key?\n if (ourValue == null && !containsKey(key)) {\n return false\n }\n\n return true\n }\n\n\n /**\n * Compares this map with other instance with the ordered structural equality.\n *\n * @return true, if [other] instance is a [Map] of the same size, all entries of which are contained in the [entries] set of this map.\n */\n override fun equals(other: Any?): Boolean {\n if (other === this) return true\n if (other !is Map<*, *>) return false\n if (size != other.size) return false\n\n return other.entries.all { containsEntry(it) }\n }\n\n override operator fun get(key: K): V? = implFindEntry(key)?.value\n\n\n /**\n * Returns the hash code value for this map.\n *\n * It is the same as the hashCode of [entries] set.\n */\n override fun hashCode(): Int = entries.hashCode()\n\n override fun isEmpty(): Boolean = size == 0\n override val size: Int get() = entries.size\n\n /**\n * Returns a read-only [Set] of all keys in this map.\n *\n * Accessing this property first time creates a keys view from [entries].\n * All subsequent accesses just return the created instance.\n */\n override val keys: Set\n get() {\n if (_keys == null) {\n _keys = object : AbstractSet() {\n override operator fun contains(element: K): Boolean = containsKey(element)\n\n override operator fun iterator(): Iterator {\n val entryIterator = entries.iterator()\n return object : Iterator {\n override fun hasNext(): Boolean = entryIterator.hasNext()\n override fun next(): K = entryIterator.next().key\n }\n }\n\n override val size: Int get() = this@AbstractMap.size\n }\n }\n return _keys!!\n }\n\n @kotlin.jvm.Volatile\n private var _keys: Set? = null\n\n\n override fun toString(): String = entries.joinToString(\", \", \"{\", \"}\") { toString(it) }\n\n private fun toString(entry: Map.Entry): String = toString(entry.key) + \"=\" + toString(entry.value)\n\n private fun toString(o: Any?): String = if (o === this) \"(this Map)\" else o.toString()\n\n /**\n * Returns a read-only [Collection] of all values in this map.\n *\n * Accessing this property first time creates a values view from [entries].\n * All subsequent accesses just return the created instance.\n */\n override val values: Collection\n get() {\n if (_values == null) {\n _values = object : AbstractCollection() {\n override operator fun contains(element: @UnsafeVariance V): Boolean = containsValue(element)\n\n override operator fun iterator(): Iterator {\n val entryIterator = entries.iterator()\n return object : Iterator {\n override fun hasNext(): Boolean = entryIterator.hasNext()\n override fun next(): V = entryIterator.next().value\n }\n }\n\n override val size: Int get() = this@AbstractMap.size\n }\n }\n return _values!!\n }\n\n @kotlin.jvm.Volatile\n private var _values: Collection? = null\n\n private fun implFindEntry(key: K): Map.Entry? = entries.firstOrNull { it.key == key }\n\n internal companion object {\n\n internal fun entryHashCode(e: Map.Entry<*, *>): Int = with(e) { (key?.hashCode() ?: 0) xor (value?.hashCode() ?: 0) }\n internal fun entryToString(e: Map.Entry<*, *>): String = with(e) { \"$key=$value\" }\n internal fun entryEquals(e: Map.Entry<*, *>, other: Any?): Boolean {\n if (other !is Map.Entry<*, *>) return false\n return e.key == other.key && e.value == other.value\n }\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the read-only [Set] interface.\n *\n * This class is intended to help implementing read-only sets so it doesn't support concurrent modification tracking.\n *\n * @param E the type of elements contained in the set. The set is covariant on its element type.\n */\n@SinceKotlin(\"1.1\")\npublic abstract class AbstractSet protected constructor() : AbstractCollection(), Set {\n\n /**\n * Compares this set with other set instance with the unordered structural equality.\n *\n * @return true, if [other] instance is a [Set] of the same size, all elements of which are contained in this set.\n */\n override fun equals(other: Any?): Boolean {\n if (other === this) return true\n if (other !is Set<*>) return false\n return setEquals(this, other)\n }\n\n /**\n * Returns the hash code value for this set.\n */\n override fun hashCode(): Int = unorderedHashCode(this)\n\n internal companion object {\n internal fun unorderedHashCode(c: Collection<*>): Int {\n var hashCode = 0\n for (element in c) {\n hashCode += (element?.hashCode() ?: 0)\n }\n return hashCode\n }\n\n internal fun setEquals(c: Set<*>, other: Set<*>): Boolean {\n if (c.size != other.size) return false\n return c.containsAll(other)\n }\n }\n\n}","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\nimport kotlin.native.concurrent.SharedImmutable\n\n@SharedImmutable\nprivate val emptyElementData = emptyArray()\nprivate const val maxArraySize = Int.MAX_VALUE - 8\nprivate const val defaultMinCapacity = 10\n\n/**\n * Resizable-array implementation of the deque data structure.\n *\n * The name deque is short for \"double ended queue\" and is usually pronounced \"deck\".\n *\n * The collection provide methods for convenient access to the both ends.\n * It also implements [MutableList] interface and supports efficient get/set operations by index.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic class ArrayDeque : AbstractMutableList {\n private var head: Int = 0\n private var elementData: Array\n\n override var size: Int = 0\n private set\n\n /**\n * Constructs an empty deque with specified [initialCapacity], or throws [IllegalArgumentException] if [initialCapacity] is negative.\n */\n public constructor(initialCapacity: Int) {\n elementData = when {\n initialCapacity == 0 -> emptyElementData\n initialCapacity > 0 -> arrayOfNulls(initialCapacity)\n else -> throw IllegalArgumentException(\"Illegal Capacity: $initialCapacity\")\n }\n }\n\n /**\n * Constructs an empty deque.\n */\n public constructor() {\n elementData = emptyElementData\n }\n\n /**\n * Constructs a deque that contains the same elements as the specified [elements] collection in the same order.\n */\n public constructor(elements: Collection) {\n elementData = elements.toTypedArray()\n size = elementData.size\n if (elementData.isEmpty()) elementData = emptyElementData\n }\n\n /**\n * Ensures that the capacity of this deque is at least equal to the specified [minCapacity].\n *\n * If the current capacity is less than the [minCapacity], a new backing storage is allocated with greater capacity.\n * Otherwise, this method takes no action and simply returns.\n */\n private fun ensureCapacity(minCapacity: Int) {\n if (minCapacity < 0) throw IllegalStateException(\"Deque is too big.\") // overflow\n if (minCapacity <= elementData.size) return\n if (elementData === emptyElementData) {\n elementData = arrayOfNulls(minCapacity.coerceAtLeast(defaultMinCapacity))\n return\n }\n\n val newCapacity = newCapacity(elementData.size, minCapacity)\n copyElements(newCapacity)\n }\n\n // made internal for testing\n internal fun newCapacity(oldCapacity: Int, minCapacity: Int): Int {\n // overflow-conscious\n var newCapacity = oldCapacity + (oldCapacity shr 1)\n if (newCapacity - minCapacity < 0)\n newCapacity = minCapacity\n if (newCapacity - maxArraySize > 0)\n newCapacity = if (minCapacity > maxArraySize) Int.MAX_VALUE else maxArraySize\n return newCapacity\n }\n\n /**\n * Creates a new array with the specified [newCapacity] size and copies elements in the [elementData] array to it.\n */\n private fun copyElements(newCapacity: Int) {\n val newElements = arrayOfNulls(newCapacity)\n elementData.copyInto(newElements, 0, head, elementData.size)\n elementData.copyInto(newElements, elementData.size - head, 0, head)\n head = 0\n elementData = newElements\n }\n\n @kotlin.internal.InlineOnly\n private inline fun internalGet(internalIndex: Int): E {\n @Suppress(\"UNCHECKED_CAST\")\n return elementData[internalIndex] as E\n }\n\n private fun positiveMod(index: Int): Int = if (index >= elementData.size) index - elementData.size else index\n\n private fun negativeMod(index: Int): Int = if (index < 0) index + elementData.size else index\n\n @kotlin.internal.InlineOnly\n private inline fun internalIndex(index: Int): Int = positiveMod(head + index)\n\n private fun incremented(index: Int): Int = if (index == elementData.lastIndex) 0 else index + 1\n\n private fun decremented(index: Int): Int = if (index == 0) elementData.lastIndex else index - 1\n\n override fun isEmpty(): Boolean = size == 0\n\n /**\n * Returns the first element, or throws [NoSuchElementException] if this deque is empty.\n */\n public fun first(): E = if (isEmpty()) throw NoSuchElementException(\"ArrayDeque is empty.\") else internalGet(head)\n\n /**\n * Returns the first element, or `null` if this deque is empty.\n */\n public fun firstOrNull(): E? = if (isEmpty()) null else internalGet(head)\n\n /**\n * Returns the last element, or throws [NoSuchElementException] if this deque is empty.\n */\n public fun last(): E = if (isEmpty()) throw NoSuchElementException(\"ArrayDeque is empty.\") else internalGet(internalIndex(lastIndex))\n\n /**\n * Returns the last element, or `null` if this deque is empty.\n */\n public fun lastOrNull(): E? = if (isEmpty()) null else internalGet(internalIndex(lastIndex))\n\n /**\n * Prepends the specified [element] to this deque.\n */\n public fun addFirst(element: E) {\n ensureCapacity(size + 1)\n\n head = decremented(head)\n elementData[head] = element\n size += 1\n }\n\n /**\n * Appends the specified [element] to this deque.\n */\n public fun addLast(element: E) {\n ensureCapacity(size + 1)\n\n elementData[internalIndex(size)] = element\n size += 1\n }\n\n /**\n * Removes the first element from this deque and returns that removed element, or throws [NoSuchElementException] if this deque is empty.\n */\n public fun removeFirst(): E {\n if (isEmpty()) throw NoSuchElementException(\"ArrayDeque is empty.\")\n\n val element = internalGet(head)\n elementData[head] = null\n head = incremented(head)\n size -= 1\n return element\n }\n\n /**\n * Removes the first element from this deque and returns that removed element, or returns `null` if this deque is empty.\n */\n public fun removeFirstOrNull(): E? = if (isEmpty()) null else removeFirst()\n\n /**\n * Removes the last element from this deque and returns that removed element, or throws [NoSuchElementException] if this deque is empty.\n */\n public fun removeLast(): E {\n if (isEmpty()) throw NoSuchElementException(\"ArrayDeque is empty.\")\n\n val internalLastIndex = internalIndex(lastIndex)\n val element = internalGet(internalLastIndex)\n elementData[internalLastIndex] = null\n size -= 1\n return element\n }\n\n /**\n * Removes the last element from this deque and returns that removed element, or returns `null` if this deque is empty.\n */\n public fun removeLastOrNull(): E? = if (isEmpty()) null else removeLast()\n\n // MutableList, MutableCollection\n public override fun add(element: E): Boolean {\n addLast(element)\n return true\n }\n\n public override fun add(index: Int, element: E) {\n AbstractList.checkPositionIndex(index, size)\n\n if (index == size) {\n addLast(element)\n return\n } else if (index == 0) {\n addFirst(element)\n return\n }\n\n ensureCapacity(size + 1)\n\n // Elements in circular array lay in 2 ways:\n // 1. `head` is less than `tail`: [#, #, e1, e2, e3, #]\n // 2. `head` is greater than `tail`: [e3, #, #, #, e1, e2]\n // where head is the index of the first element in the circular array,\n // and tail is the index following the last element.\n //\n // At this point the insertion index is not equal to head or tail.\n // Also the circular array can store at least one more element.\n //\n // Depending on where the given element must be inserted the preceding or the succeeding\n // elements will be shifted to make room for the element to be inserted.\n //\n // In case the preceding elements are shifted:\n // * if the insertion index is greater than the head (regardless of circular array form)\n // -> shift the preceding elements\n // * otherwise, the circular array has (2) form and the insertion index is less than tail\n // -> shift all elements in the back of the array\n // -> shift preceding elements in the front of the array\n // In case the succeeding elements are shifted:\n // * if the insertion index is less than the tail (regardless of circular array form)\n // -> shift the succeeding elements\n // * otherwise, the circular array has (2) form and the insertion index is greater than head\n // -> shift all elements in the front of the array\n // -> shift succeeding elements in the back of the array\n\n val internalIndex = internalIndex(index)\n\n if (index < (size + 1) shr 1) {\n // closer to the first element -> shift preceding elements\n val decrementedInternalIndex = decremented(internalIndex)\n val decrementedHead = decremented(head)\n\n if (decrementedInternalIndex >= head) {\n elementData[decrementedHead] = elementData[head] // head can be zero\n elementData.copyInto(elementData, head, head + 1, decrementedInternalIndex + 1)\n } else { // head > tail\n elementData.copyInto(elementData, head - 1, head, elementData.size) // head can't be zero\n elementData[elementData.size - 1] = elementData[0]\n elementData.copyInto(elementData, 0, 1, decrementedInternalIndex + 1)\n }\n\n elementData[decrementedInternalIndex] = element\n head = decrementedHead\n } else {\n // closer to the last element -> shift succeeding elements\n val tail = internalIndex(size)\n\n if (internalIndex < tail) {\n elementData.copyInto(elementData, internalIndex + 1, internalIndex, tail)\n } else { // head > tail\n elementData.copyInto(elementData, 1, 0, tail)\n elementData[0] = elementData[elementData.size - 1]\n elementData.copyInto(elementData, internalIndex + 1, internalIndex, elementData.size - 1)\n }\n\n elementData[internalIndex] = element\n }\n size += 1\n }\n\n private fun copyCollectionElements(internalIndex: Int, elements: Collection) {\n val iterator = elements.iterator()\n\n for (index in internalIndex until elementData.size) {\n if (!iterator.hasNext()) break\n elementData[index] = iterator.next()\n }\n for (index in 0 until head) {\n if (!iterator.hasNext()) break\n elementData[index] = iterator.next()\n }\n\n size += elements.size\n }\n\n public override fun addAll(elements: Collection): Boolean {\n if (elements.isEmpty()) return false\n ensureCapacity(this.size + elements.size)\n copyCollectionElements(internalIndex(size), elements)\n return true\n }\n\n public override fun addAll(index: Int, elements: Collection): Boolean {\n AbstractList.checkPositionIndex(index, size)\n\n if (elements.isEmpty()) {\n return false\n } else if (index == size) {\n return addAll(elements)\n }\n\n ensureCapacity(this.size + elements.size)\n\n val tail = internalIndex(size)\n val internalIndex = internalIndex(index)\n val elementsSize = elements.size\n\n if (index < (size + 1) shr 1) {\n // closer to the first element -> shift preceding elements\n\n var shiftedHead = head - elementsSize\n\n if (internalIndex >= head) {\n if (shiftedHead >= 0) {\n elementData.copyInto(elementData, shiftedHead, head, internalIndex)\n } else { // head < tail, insertion leads to head >= tail\n shiftedHead += elementData.size\n val elementsToShift = internalIndex - head\n val shiftToBack = elementData.size - shiftedHead\n\n if (shiftToBack >= elementsToShift) {\n elementData.copyInto(elementData, shiftedHead, head, internalIndex)\n } else {\n elementData.copyInto(elementData, shiftedHead, head, head + shiftToBack)\n elementData.copyInto(elementData, 0, head + shiftToBack, internalIndex)\n }\n }\n } else { // head > tail, internalIndex < tail\n elementData.copyInto(elementData, shiftedHead, head, elementData.size)\n if (elementsSize >= internalIndex) {\n elementData.copyInto(elementData, elementData.size - elementsSize, 0, internalIndex)\n } else {\n elementData.copyInto(elementData, elementData.size - elementsSize, 0, elementsSize)\n elementData.copyInto(elementData, 0, elementsSize, internalIndex)\n }\n }\n head = shiftedHead\n copyCollectionElements(negativeMod(internalIndex - elementsSize), elements)\n } else {\n // closer to the last element -> shift succeeding elements\n\n val shiftedInternalIndex = internalIndex + elementsSize\n\n if (internalIndex < tail) {\n if (tail + elementsSize <= elementData.size) {\n elementData.copyInto(elementData, shiftedInternalIndex, internalIndex, tail)\n } else { // head < tail, insertion leads to head >= tail\n if (shiftedInternalIndex >= elementData.size) {\n elementData.copyInto(elementData, shiftedInternalIndex - elementData.size, internalIndex, tail)\n } else {\n val shiftToFront = tail + elementsSize - elementData.size\n elementData.copyInto(elementData, 0, tail - shiftToFront, tail)\n elementData.copyInto(elementData, shiftedInternalIndex, internalIndex, tail - shiftToFront)\n }\n }\n } else { // head > tail, internalIndex > head\n elementData.copyInto(elementData, elementsSize, 0, tail)\n if (shiftedInternalIndex >= elementData.size) {\n elementData.copyInto(elementData, shiftedInternalIndex - elementData.size, internalIndex, elementData.size)\n } else {\n elementData.copyInto(elementData, 0, elementData.size - elementsSize, elementData.size)\n elementData.copyInto(elementData, shiftedInternalIndex, internalIndex, elementData.size - elementsSize)\n }\n }\n copyCollectionElements(internalIndex, elements)\n }\n\n return true\n }\n\n public override fun get(index: Int): E {\n AbstractList.checkElementIndex(index, size)\n\n return internalGet(internalIndex(index))\n }\n\n public override fun set(index: Int, element: E): E {\n AbstractList.checkElementIndex(index, size)\n\n val internalIndex = internalIndex(index)\n val oldElement = internalGet(internalIndex)\n elementData[internalIndex] = element\n\n return oldElement\n }\n\n public override fun contains(element: E): Boolean = indexOf(element) != -1\n\n public override fun indexOf(element: E): Int {\n val tail = internalIndex(size)\n\n if (head < tail) {\n for (index in head until tail) {\n if (element == elementData[index]) return index - head\n }\n } else if (head >= tail) {\n for (index in head until elementData.size) {\n if (element == elementData[index]) return index - head\n }\n for (index in 0 until tail) {\n if (element == elementData[index]) return index + elementData.size - head\n }\n }\n\n return -1\n }\n\n public override fun lastIndexOf(element: E): Int {\n val tail = internalIndex(size)\n\n if (head < tail) {\n for (index in tail - 1 downTo head) {\n if (element == elementData[index]) return index - head\n }\n } else if (head > tail) {\n for (index in tail - 1 downTo 0) {\n if (element == elementData[index]) return index + elementData.size - head\n }\n for (index in elementData.lastIndex downTo head) {\n if (element == elementData[index]) return index - head\n }\n }\n\n return -1\n }\n\n public override fun remove(element: E): Boolean {\n val index = indexOf(element)\n if (index == -1) return false\n removeAt(index)\n return true\n }\n\n public override fun removeAt(index: Int): E {\n AbstractList.checkElementIndex(index, size)\n\n if (index == lastIndex) {\n return removeLast()\n } else if (index == 0) {\n return removeFirst()\n }\n\n val internalIndex = internalIndex(index)\n val element = internalGet(internalIndex)\n\n if (index < size shr 1) {\n // closer to the first element -> shift preceding elements\n if (internalIndex >= head) {\n elementData.copyInto(elementData, head + 1, head, internalIndex)\n } else { // head > tail, internalIndex < head\n elementData.copyInto(elementData, 1, 0, internalIndex)\n elementData[0] = elementData[elementData.size - 1]\n elementData.copyInto(elementData, head + 1, head, elementData.size - 1)\n }\n\n elementData[head] = null\n head = incremented(head)\n } else {\n // closer to the last element -> shift succeeding elements\n val internalLastIndex = internalIndex(lastIndex)\n\n if (internalIndex <= internalLastIndex) {\n elementData.copyInto(elementData, internalIndex, internalIndex + 1, internalLastIndex + 1)\n } else { // head > tail, internalIndex > head\n elementData.copyInto(elementData, internalIndex, internalIndex + 1, elementData.size)\n elementData[elementData.size - 1] = elementData[0]\n elementData.copyInto(elementData, 0, 1, internalLastIndex + 1)\n }\n\n elementData[internalLastIndex] = null\n }\n size -= 1\n\n return element\n }\n\n public override fun removeAll(elements: Collection): Boolean = filterInPlace { !elements.contains(it) }\n\n public override fun retainAll(elements: Collection): Boolean = filterInPlace { elements.contains(it) }\n\n private inline fun filterInPlace(predicate: (E) -> Boolean): Boolean {\n if (this.isEmpty() || elementData.isEmpty())\n return false\n\n val tail = internalIndex(size)\n var newTail = head\n var modified = false\n\n if (head < tail) {\n for (index in head until tail) {\n val element = elementData[index]\n\n @Suppress(\"UNCHECKED_CAST\")\n if (predicate(element as E))\n elementData[newTail++] = element\n else\n modified = true\n }\n\n elementData.fill(null, newTail, tail)\n\n } else {\n for (index in head until elementData.size) {\n val element = elementData[index]\n elementData[index] = null\n\n @Suppress(\"UNCHECKED_CAST\")\n if (predicate(element as E))\n elementData[newTail++] = element\n else\n modified = true\n }\n\n newTail = positiveMod(newTail)\n\n for (index in 0 until tail) {\n val element = elementData[index]\n elementData[index] = null\n\n @Suppress(\"UNCHECKED_CAST\")\n if (predicate(element as E)) {\n elementData[newTail] = element\n newTail = incremented(newTail)\n } else {\n modified = true\n }\n }\n }\n if (modified)\n size = negativeMod(newTail - head)\n\n return modified\n }\n\n public override fun clear() {\n val tail = internalIndex(size)\n if (head < tail) {\n elementData.fill(null, head, tail)\n } else if (isNotEmpty()) {\n elementData.fill(null, head, elementData.size)\n elementData.fill(null, 0, tail)\n }\n head = 0\n size = 0\n }\n\n // For testing only\n internal fun internalStructure(structure: (head: Int, elements: Array) -> Unit) {\n val tail = internalIndex(size)\n\n if (isEmpty()) {\n structure(head, emptyArray())\n return\n }\n\n val elements = arrayOfNulls(size)\n if (head < tail) {\n elementData.copyInto(elements, startIndex = head, endIndex = tail)\n structure(head, elements)\n } else {\n elementData.copyInto(elements, startIndex = head)\n elementData.copyInto(elements, elementData.size - head, startIndex = 0, endIndex = tail)\n structure(head - elementData.size, elements)\n }\n }\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"ArraysKt\")\n\n\npackage kotlin.collections\n\nimport kotlin.contracts.*\n\n\n/**\n * Returns a single list of all elements from all arrays in the given array.\n * @sample samples.collections.Arrays.Transformations.flattenArray\n */\npublic fun Array>.flatten(): List {\n val result = ArrayList(sumBy { it.size })\n for (element in this) {\n result.addAll(element)\n }\n return result\n}\n\n/**\n * Returns a pair of lists, where\n * *first* list is built from the first values of each pair from this array,\n * *second* list is built from the second values of each pair from this array.\n * @sample samples.collections.Arrays.Transformations.unzipArray\n */\npublic fun Array>.unzip(): Pair, List> {\n val listT = ArrayList(size)\n val listR = ArrayList(size)\n for (pair in this) {\n listT.add(pair.first)\n listR.add(pair.second)\n }\n return listT to listR\n}\n\n/**\n * Returns `true` if this nullable array is either null or empty.\n * @sample samples.collections.Arrays.Usage.arrayIsNullOrEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Array<*>?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || this.isEmpty()\n}\n\n/**\n * Returns this array if it's not empty\n * or the result of calling [defaultValue] function if the array is empty.\n *\n * @sample samples.collections.Arrays.Usage.arrayIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Suppress(\"UPPER_BOUND_CANNOT_BE_ARRAY\")\npublic inline fun C.ifEmpty(defaultValue: () -> R): R where C : Array<*>, C : R =\n if (isEmpty()) defaultValue() else this\n\n\n@UseExperimental(ExperimentalUnsignedTypes::class)\n@SinceKotlin(\"1.3\")\n@PublishedApi\n@kotlin.jvm.JvmName(\"contentDeepEquals\")\n@kotlin.js.JsName(\"contentDeepEqualsImpl\")\ninternal fun Array.contentDeepEqualsImpl(other: Array): Boolean {\n if (this === other) return true\n if (this.size != other.size) return false\n\n for (i in indices) {\n val v1 = this[i]\n val v2 = other[i]\n\n if (v1 === v2) {\n continue\n } else if (v1 == null || v2 == null) {\n return false\n }\n\n when {\n v1 is Array<*> && v2 is Array<*> -> if (!v1.contentDeepEquals(v2)) return false\n v1 is ByteArray && v2 is ByteArray -> if (!v1.contentEquals(v2)) return false\n v1 is ShortArray && v2 is ShortArray -> if (!v1.contentEquals(v2)) return false\n v1 is IntArray && v2 is IntArray -> if (!v1.contentEquals(v2)) return false\n v1 is LongArray && v2 is LongArray -> if (!v1.contentEquals(v2)) return false\n v1 is FloatArray && v2 is FloatArray -> if (!v1.contentEquals(v2)) return false\n v1 is DoubleArray && v2 is DoubleArray -> if (!v1.contentEquals(v2)) return false\n v1 is CharArray && v2 is CharArray -> if (!v1.contentEquals(v2)) return false\n v1 is BooleanArray && v2 is BooleanArray -> if (!v1.contentEquals(v2)) return false\n\n v1 is UByteArray && v2 is UByteArray -> if (!v1.contentEquals(v2)) return false\n v1 is UShortArray && v2 is UShortArray -> if (!v1.contentEquals(v2)) return false\n v1 is UIntArray && v2 is UIntArray -> if (!v1.contentEquals(v2)) return false\n v1 is ULongArray && v2 is ULongArray -> if (!v1.contentEquals(v2)) return false\n\n else -> if (v1 != v2) return false\n }\n\n }\n return true\n}\n\n@SinceKotlin(\"1.3\")\n@PublishedApi\n@kotlin.jvm.JvmName(\"contentDeepToString\")\n@kotlin.js.JsName(\"contentDeepToStringImpl\")\ninternal fun Array.contentDeepToStringImpl(): String {\n val length = size.coerceAtMost((Int.MAX_VALUE - 2) / 5) * 5 + 2 // in order not to overflow Int.MAX_VALUE\n return buildString(length) {\n contentDeepToStringInternal(this, mutableListOf())\n }\n}\n\n@UseExperimental(ExperimentalUnsignedTypes::class)\nprivate fun Array.contentDeepToStringInternal(result: StringBuilder, processed: MutableList>) {\n if (this in processed) {\n result.append(\"[...]\")\n return\n }\n processed.add(this)\n result.append('[')\n\n for (i in indices) {\n if (i != 0) {\n result.append(\", \")\n }\n val element = this[i]\n when (element) {\n null -> result.append(\"null\")\n is Array<*> -> element.contentDeepToStringInternal(result, processed)\n is ByteArray -> result.append(element.contentToString())\n is ShortArray -> result.append(element.contentToString())\n is IntArray -> result.append(element.contentToString())\n is LongArray -> result.append(element.contentToString())\n is FloatArray -> result.append(element.contentToString())\n is DoubleArray -> result.append(element.contentToString())\n is CharArray -> result.append(element.contentToString())\n is BooleanArray -> result.append(element.contentToString())\n\n is UByteArray -> result.append(element.contentToString())\n is UShortArray -> result.append(element.contentToString())\n is UIntArray -> result.append(element.contentToString())\n is ULongArray -> result.append(element.contentToString())\n\n else -> result.append(element.toString())\n }\n }\n\n result.append(']')\n processed.removeAt(processed.lastIndex)\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n/**\n * Data class representing a value from a collection or sequence, along with its index in that collection or sequence.\n *\n * @property value the underlying value.\n * @property index the index of the value in the collection or sequence.\n */\npublic data class IndexedValue(public val index: Int, public val value: T)\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"MapAccessorsKt\")\n\npackage kotlin.collections\n\nimport kotlin.reflect.KProperty\nimport kotlin.internal.Exact\n\n/**\n * Returns the value of the property for the given object from this read-only map.\n * @param thisRef the object for which the value is requested (not used).\n * @param property the metadata for the property, used to get the name of property and lookup the value corresponding to this name in the map.\n * @return the property value.\n *\n * @throws NoSuchElementException when the map doesn't contain value for the property name and doesn't provide an implicit default (see [withDefault]).\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Map.getValue(thisRef: Any?, property: KProperty<*>): V1 =\n @Suppress(\"UNCHECKED_CAST\") (getOrImplicitDefault(property.name) as V1)\n\n/**\n * Returns the value of the property for the given object from this mutable map.\n * @param thisRef the object for which the value is requested (not used).\n * @param property the metadata for the property, used to get the name of property and lookup the value corresponding to this name in the map.\n * @return the property value.\n *\n * @throws NoSuchElementException when the map doesn't contain value for the property name and doesn't provide an implicit default (see [withDefault]).\n */\n@kotlin.jvm.JvmName(\"getVar\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.getValue(thisRef: Any?, property: KProperty<*>): V1 =\n @Suppress(\"UNCHECKED_CAST\") (getOrImplicitDefault(property.name) as V1)\n\n@Deprecated(\"Use getValue() with two type parameters instead\", level = DeprecationLevel.ERROR)\n@kotlin.jvm.JvmName(\"getVarContravariant\")\n@kotlin.internal.LowPriorityInOverloadResolution\n@kotlin.internal.InlineOnly\npublic inline fun MutableMap.getValue(thisRef: Any?, property: KProperty<*>): V =\n @Suppress(\"UNCHECKED_CAST\") (getOrImplicitDefault(property.name) as V)\n\n/**\n * Stores the value of the property for the given object in this mutable map.\n * @param thisRef the object for which the value is requested (not used).\n * @param property the metadata for the property, used to get the name of property and store the value associated with that name in the map.\n * @param value the value to set.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.setValue(thisRef: Any?, property: KProperty<*>, value: V) {\n this.put(property.name, value)\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"MapsKt\")\n\npackage kotlin.collections\n\n/**\n * Returns the value for the given key, or the implicit default value for this map.\n * By default no implicit value is provided for maps and a [NoSuchElementException] is thrown.\n * To create a map with implicit default value use [withDefault] method.\n *\n * @throws NoSuchElementException when the map doesn't contain a value for the specified key and no implicit default was provided for that map.\n */\n@kotlin.jvm.JvmName(\"getOrImplicitDefaultNullable\")\n@PublishedApi\ninternal fun Map.getOrImplicitDefault(key: K): V {\n if (this is MapWithDefault)\n return this.getOrImplicitDefault(key)\n\n return getOrElseNullable(key, { throw NoSuchElementException(\"Key $key is missing in the map.\") })\n}\n\n/**\n * Returns a wrapper of this read-only map, having the implicit default value provided with the specified function [defaultValue].\n *\n * This implicit default value is used when the original map doesn't contain a value for the key specified\n * and a value is obtained with [Map.getValue] function, for example when properties are delegated to the map.\n *\n * When this map already has an implicit default value provided with a former call to [withDefault], it is being replaced by this call.\n */\npublic fun Map.withDefault(defaultValue: (key: K) -> V): Map =\n when (this) {\n is MapWithDefault -> this.map.withDefault(defaultValue)\n else -> MapWithDefaultImpl(this, defaultValue)\n }\n\n/**\n * Returns a wrapper of this mutable map, having the implicit default value provided with the specified function [defaultValue].\n *\n * This implicit default value is used when the original map doesn't contain a value for the key specified\n * and a value is obtained with [Map.getValue] function, for example when properties are delegated to the map.\n *\n * When this map already has an implicit default value provided with a former call to [withDefault], it is being replaced by this call.\n */\n@kotlin.jvm.JvmName(\"withDefaultMutable\")\npublic fun MutableMap.withDefault(defaultValue: (key: K) -> V): MutableMap =\n when (this) {\n is MutableMapWithDefault -> this.map.withDefault(defaultValue)\n else -> MutableMapWithDefaultImpl(this, defaultValue)\n }\n\n\nprivate interface MapWithDefault : Map {\n public val map: Map\n public fun getOrImplicitDefault(key: K): V\n}\n\nprivate interface MutableMapWithDefault : MutableMap, MapWithDefault {\n public override val map: MutableMap\n}\n\n\nprivate class MapWithDefaultImpl(public override val map: Map, private val default: (key: K) -> V) : MapWithDefault {\n override fun equals(other: Any?): Boolean = map.equals(other)\n override fun hashCode(): Int = map.hashCode()\n override fun toString(): String = map.toString()\n override val size: Int get() = map.size\n override fun isEmpty(): Boolean = map.isEmpty()\n override fun containsKey(key: K): Boolean = map.containsKey(key)\n override fun containsValue(value: @UnsafeVariance V): Boolean = map.containsValue(value)\n override fun get(key: K): V? = map.get(key)\n override val keys: Set get() = map.keys\n override val values: Collection get() = map.values\n override val entries: Set> get() = map.entries\n\n override fun getOrImplicitDefault(key: K): V = map.getOrElseNullable(key, { default(key) })\n}\n\nprivate class MutableMapWithDefaultImpl(public override val map: MutableMap, private val default: (key: K) -> V) : MutableMapWithDefault {\n override fun equals(other: Any?): Boolean = map.equals(other)\n override fun hashCode(): Int = map.hashCode()\n override fun toString(): String = map.toString()\n override val size: Int get() = map.size\n override fun isEmpty(): Boolean = map.isEmpty()\n override fun containsKey(key: K): Boolean = map.containsKey(key)\n override fun containsValue(value: @UnsafeVariance V): Boolean = map.containsValue(value)\n override fun get(key: K): V? = map.get(key)\n override val keys: MutableSet get() = map.keys\n override val values: MutableCollection get() = map.values\n override val entries: MutableSet> get() = map.entries\n\n override fun put(key: K, value: V): V? = map.put(key, value)\n override fun remove(key: K): V? = map.remove(key)\n override fun putAll(from: Map) = map.putAll(from)\n override fun clear() = map.clear()\n\n override fun getOrImplicitDefault(key: K): V = map.getOrElseNullable(key, { default(key) })\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\nimport kotlin.random.Random\n\n/**\n * Removes a single instance of the specified element from this\n * collection, if it is present.\n *\n * Allows to overcome type-safety restriction of `remove` that requires to pass an element of type `E`.\n *\n * @return `true` if the element has been successfully removed; `false` if it was not present in the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> MutableCollection.remove(element: T): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableCollection).remove(element)\n\n/**\n * Removes all of this collection's elements that are also contained in the specified collection.\n\n * Allows to overcome type-safety restriction of `removeAll` that requires to pass a collection of type `Collection`.\n *\n * @return `true` if any of the specified elements was removed from the collection, `false` if the collection was not modified.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> MutableCollection.removeAll(elements: Collection): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableCollection).removeAll(elements)\n\n/**\n * Retains only the elements in this collection that are contained in the specified collection.\n *\n * Allows to overcome type-safety restriction of `retainAll` that requires to pass a collection of type `Collection`.\n *\n * @return `true` if any element was removed from the collection, `false` if the collection was not modified.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> MutableCollection.retainAll(elements: Collection): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableCollection).retainAll(elements)\n\n/**\n * Adds the specified [element] to this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.plusAssign(element: T) {\n this.add(element)\n}\n\n/**\n * Adds all elements of the given [elements] collection to this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.plusAssign(elements: Iterable) {\n this.addAll(elements)\n}\n\n/**\n * Adds all elements of the given [elements] array to this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.plusAssign(elements: Array) {\n this.addAll(elements)\n}\n\n/**\n * Adds all elements of the given [elements] sequence to this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.plusAssign(elements: Sequence) {\n this.addAll(elements)\n}\n\n/**\n * Removes a single instance of the specified [element] from this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.minusAssign(element: T) {\n this.remove(element)\n}\n\n/**\n * Removes all elements contained in the given [elements] collection from this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.minusAssign(elements: Iterable) {\n this.removeAll(elements)\n}\n\n/**\n * Removes all elements contained in the given [elements] array from this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.minusAssign(elements: Array) {\n this.removeAll(elements)\n}\n\n/**\n * Removes all elements contained in the given [elements] sequence from this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.minusAssign(elements: Sequence) {\n this.removeAll(elements)\n}\n\n/**\n * Adds all elements of the given [elements] collection to this [MutableCollection].\n */\npublic fun MutableCollection.addAll(elements: Iterable): Boolean {\n when (elements) {\n is Collection -> return addAll(elements)\n else -> {\n var result: Boolean = false\n for (item in elements)\n if (add(item)) result = true\n return result\n }\n }\n}\n\n/**\n * Adds all elements of the given [elements] sequence to this [MutableCollection].\n */\npublic fun MutableCollection.addAll(elements: Sequence): Boolean {\n var result: Boolean = false\n for (item in elements) {\n if (add(item)) result = true\n }\n return result\n}\n\n/**\n * Adds all elements of the given [elements] array to this [MutableCollection].\n */\npublic fun MutableCollection.addAll(elements: Array): Boolean {\n return addAll(elements.asList())\n}\n\n/**\n * Removes all elements from this [MutableCollection] that are also contained in the given [elements] collection.\n */\npublic fun MutableCollection.removeAll(elements: Iterable): Boolean {\n return removeAll(elements.convertToSetForSetOperationWith(this))\n}\n\n/**\n * Removes all elements from this [MutableCollection] that are also contained in the given [elements] sequence.\n */\npublic fun MutableCollection.removeAll(elements: Sequence): Boolean {\n val set = elements.toHashSet()\n return set.isNotEmpty() && removeAll(set)\n}\n\n/**\n * Removes all elements from this [MutableCollection] that are also contained in the given [elements] array.\n */\npublic fun MutableCollection.removeAll(elements: Array): Boolean {\n return elements.isNotEmpty() && removeAll(elements.toHashSet())\n}\n\n/**\n * Retains only elements of this [MutableCollection] that are contained in the given [elements] collection.\n */\npublic fun MutableCollection.retainAll(elements: Iterable): Boolean {\n return retainAll(elements.convertToSetForSetOperationWith(this))\n}\n\n/**\n * Retains only elements of this [MutableCollection] that are contained in the given [elements] array.\n */\npublic fun MutableCollection.retainAll(elements: Array): Boolean {\n if (elements.isNotEmpty())\n return retainAll(elements.toHashSet())\n else\n return retainNothing()\n}\n\n/**\n * Retains only elements of this [MutableCollection] that are contained in the given [elements] sequence.\n */\npublic fun MutableCollection.retainAll(elements: Sequence): Boolean {\n val set = elements.toHashSet()\n if (set.isNotEmpty())\n return retainAll(set)\n else\n return retainNothing()\n}\n\nprivate fun MutableCollection<*>.retainNothing(): Boolean {\n val result = isNotEmpty()\n clear()\n return result\n}\n\n\n/**\n * Removes all elements from this [MutableIterable] that match the given [predicate].\n *\n * @return `true` if any element was removed from this collection, or `false` when no elements were removed and collection was not modified.\n */\npublic fun MutableIterable.removeAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, true)\n\n/**\n * Retains only elements of this [MutableIterable] that match the given [predicate].\n *\n * @return `true` if any element was removed from this collection, or `false` when all elements were retained and collection was not modified.\n */\npublic fun MutableIterable.retainAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, false)\n\nprivate fun MutableIterable.filterInPlace(predicate: (T) -> Boolean, predicateResultToRemove: Boolean): Boolean {\n var result = false\n with(iterator()) {\n while (hasNext())\n if (predicate(next()) == predicateResultToRemove) {\n remove()\n result = true\n }\n }\n return result\n}\n\n\n/**\n * Returns a new list with the elements of this list randomly shuffled\n * using the specified [random] instance as the source of randomness.\n */\n@SinceKotlin(\"1.3\")\npublic fun Iterable.shuffled(random: Random): List = toMutableList().apply { shuffle(random) }\n\n\n/**\n * Removes the element at the specified [index] from this list.\n * In Kotlin one should use the [MutableList.removeAt] function instead.\n */\n@Deprecated(\"Use removeAt(index) instead.\", ReplaceWith(\"removeAt(index)\"), level = DeprecationLevel.ERROR)\n@kotlin.internal.InlineOnly\npublic inline fun MutableList.remove(index: Int): T = removeAt(index)\n\n/**\n * Removes the first element from this mutable list and returns that removed element, or throws [NoSuchElementException] if this list is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun MutableList.removeFirst(): T = if (isEmpty()) throw NoSuchElementException(\"List is empty.\") else removeAt(0)\n\n/**\n * Removes the first element from this mutable list and returns that removed element, or returns `null` if this list is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun MutableList.removeFirstOrNull(): T? = if (isEmpty()) null else removeAt(0)\n\n/**\n * Removes the last element from this mutable list and returns that removed element, or throws [NoSuchElementException] if this list is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun MutableList.removeLast(): T = if (isEmpty()) throw NoSuchElementException(\"List is empty.\") else removeAt(lastIndex)\n\n/**\n * Removes the last element from this mutable list and returns that removed element, or returns `null` if this list is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun MutableList.removeLastOrNull(): T? = if (isEmpty()) null else removeAt(lastIndex)\n\n/**\n * Removes all elements from this [MutableList] that match the given [predicate].\n *\n * @return `true` if any element was removed from this collection, or `false` when no elements were removed and collection was not modified.\n */\npublic fun MutableList.removeAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, true)\n\n/**\n * Retains only elements of this [MutableList] that match the given [predicate].\n *\n * @return `true` if any element was removed from this collection, or `false` when all elements were retained and collection was not modified.\n */\npublic fun MutableList.retainAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, false)\n\nprivate fun MutableList.filterInPlace(predicate: (T) -> Boolean, predicateResultToRemove: Boolean): Boolean {\n if (this !is RandomAccess)\n return (this as MutableIterable).filterInPlace(predicate, predicateResultToRemove)\n\n var writeIndex: Int = 0\n for (readIndex in 0..lastIndex) {\n val element = this[readIndex]\n if (predicate(element) == predicateResultToRemove)\n continue\n\n if (writeIndex != readIndex)\n this[writeIndex] = element\n\n writeIndex++\n }\n if (writeIndex < size) {\n for (removeIndex in lastIndex downTo writeIndex)\n removeAt(removeIndex)\n\n return true\n } else {\n return false\n }\n}\n\n/**\n * Randomly shuffles elements in this mutable list using the specified [random] instance as the source of randomness.\n *\n * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n */\n@SinceKotlin(\"1.3\")\npublic fun MutableList.shuffle(random: Random): Unit {\n for (i in lastIndex downTo 1) {\n val j = random.nextInt(i + 1)\n val copy = this[i]\n this[i] = this[j]\n this[j] = copy\n }\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\nprivate open class ReversedListReadOnly(private val delegate: List) : AbstractList() {\n override val size: Int get() = delegate.size\n override fun get(index: Int): T = delegate[reverseElementIndex(index)]\n}\n\nprivate class ReversedList(private val delegate: MutableList) : AbstractMutableList() {\n override val size: Int get() = delegate.size\n override fun get(index: Int): T = delegate[reverseElementIndex(index)]\n\n override fun clear() = delegate.clear()\n override fun removeAt(index: Int): T = delegate.removeAt(reverseElementIndex(index))\n\n override fun set(index: Int, element: T): T = delegate.set(reverseElementIndex(index), element)\n override fun add(index: Int, element: T) {\n delegate.add(reversePositionIndex(index), element)\n }\n}\n\nprivate fun List<*>.reverseElementIndex(index: Int) =\n if (index in 0..lastIndex) lastIndex - index else throw IndexOutOfBoundsException(\"Element index $index must be in range [${0..lastIndex}].\")\n\nprivate fun List<*>.reversePositionIndex(index: Int) =\n if (index in 0..size) size - index else throw IndexOutOfBoundsException(\"Position index $index must be in range [${0..size}].\")\n\n\n/**\n * Returns a reversed read-only view of the original List.\n * All changes made in the original list will be reflected in the reversed one.\n * @sample samples.collections.ReversedViews.asReversedList\n */\npublic fun List.asReversed(): List = ReversedListReadOnly(this)\n\n/**\n * Returns a reversed mutable view of the original mutable List.\n * All changes made in the original list will be reflected in the reversed one and vice versa.\n * @sample samples.collections.ReversedViews.asReversedMutableList\n */\n@kotlin.jvm.JvmName(\"asReversedMutable\")\npublic fun MutableList.asReversed(): MutableList = ReversedList(this)\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"SequencesKt\")\n@file:UseExperimental(ExperimentalTypeInference::class)\n\npackage kotlin.sequences\n\nimport kotlin.coroutines.*\nimport kotlin.coroutines.intrinsics.*\nimport kotlin.experimental.ExperimentalTypeInference\n\n/**\n * Builds a [Sequence] lazily yielding values one by one.\n *\n * @see kotlin.sequences.generateSequence\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n * @sample samples.collections.Sequences.Building.buildFibonacciSequence\n */\n@SinceKotlin(\"1.3\")\npublic fun sequence(@BuilderInference block: suspend SequenceScope.() -> Unit): Sequence = Sequence { iterator(block) }\n\n@SinceKotlin(\"1.3\")\n@Deprecated(\"Use 'sequence { }' function instead.\", ReplaceWith(\"sequence(builderAction)\"), level = DeprecationLevel.ERROR)\n@kotlin.internal.InlineOnly\npublic inline fun buildSequence(@BuilderInference noinline builderAction: suspend SequenceScope.() -> Unit): Sequence = Sequence { iterator(builderAction) }\n\n/**\n * Builds an [Iterator] lazily yielding values one by one.\n *\n * @sample samples.collections.Sequences.Building.buildIterator\n * @sample samples.collections.Iterables.Building.iterable\n */\n@SinceKotlin(\"1.3\")\npublic fun iterator(@BuilderInference block: suspend SequenceScope.() -> Unit): Iterator {\n val iterator = SequenceBuilderIterator()\n iterator.nextStep = block.createCoroutineUnintercepted(receiver = iterator, completion = iterator)\n return iterator\n}\n\n@SinceKotlin(\"1.3\")\n@Deprecated(\"Use 'iterator { }' function instead.\", ReplaceWith(\"iterator(builderAction)\"), level = DeprecationLevel.ERROR)\n@kotlin.internal.InlineOnly\npublic inline fun buildIterator(@BuilderInference noinline builderAction: suspend SequenceScope.() -> Unit): Iterator = iterator(builderAction)\n\n/**\n * The scope for yielding values of a [Sequence] or an [Iterator], provides [yield] and [yieldAll] suspension functions.\n *\n * @see sequence\n * @see iterator\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n * @sample samples.collections.Sequences.Building.buildFibonacciSequence\n */\n@RestrictsSuspension\n@SinceKotlin(\"1.3\")\npublic abstract class SequenceScope internal constructor() {\n /**\n * Yields a value to the [Iterator] being built and suspends\n * until the next value is requested.\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n * @sample samples.collections.Sequences.Building.buildFibonacciSequence\n */\n public abstract suspend fun yield(value: T)\n\n /**\n * Yields all values from the `iterator` to the [Iterator] being built\n * and suspends until all these values are iterated and the next one is requested.\n *\n * The sequence of values returned by the given iterator can be potentially infinite.\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n */\n public abstract suspend fun yieldAll(iterator: Iterator)\n\n /**\n * Yields a collections of values to the [Iterator] being built\n * and suspends until all these values are iterated and the next one is requested.\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n */\n public suspend fun yieldAll(elements: Iterable) {\n if (elements is Collection && elements.isEmpty()) return\n return yieldAll(elements.iterator())\n }\n\n /**\n * Yields potentially infinite sequence of values to the [Iterator] being built\n * and suspends until all these values are iterated and the next one is requested.\n *\n * The sequence can be potentially infinite.\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n */\n public suspend fun yieldAll(sequence: Sequence) = yieldAll(sequence.iterator())\n}\n\n@Deprecated(\"Use SequenceScope class instead.\", ReplaceWith(\"SequenceScope\"), level = DeprecationLevel.ERROR)\npublic typealias SequenceBuilder = SequenceScope\n\nprivate typealias State = Int\n\nprivate const val State_NotReady: State = 0\nprivate const val State_ManyNotReady: State = 1\nprivate const val State_ManyReady: State = 2\nprivate const val State_Ready: State = 3\nprivate const val State_Done: State = 4\nprivate const val State_Failed: State = 5\n\nprivate class SequenceBuilderIterator : SequenceScope(), Iterator, Continuation {\n private var state = State_NotReady\n private var nextValue: T? = null\n private var nextIterator: Iterator? = null\n var nextStep: Continuation? = null\n\n override fun hasNext(): Boolean {\n while (true) {\n when (state) {\n State_NotReady -> {}\n State_ManyNotReady ->\n if (nextIterator!!.hasNext()) {\n state = State_ManyReady\n return true\n } else {\n nextIterator = null\n }\n State_Done -> return false\n State_Ready, State_ManyReady -> return true\n else -> throw exceptionalState()\n }\n\n state = State_Failed\n val step = nextStep!!\n nextStep = null\n step.resume(Unit)\n }\n }\n\n override fun next(): T {\n when (state) {\n State_NotReady, State_ManyNotReady -> return nextNotReady()\n State_ManyReady -> {\n state = State_ManyNotReady\n return nextIterator!!.next()\n }\n State_Ready -> {\n state = State_NotReady\n @Suppress(\"UNCHECKED_CAST\")\n val result = nextValue as T\n nextValue = null\n return result\n }\n else -> throw exceptionalState()\n }\n }\n\n private fun nextNotReady(): T {\n if (!hasNext()) throw NoSuchElementException() else return next()\n }\n\n private fun exceptionalState(): Throwable = when (state) {\n State_Done -> NoSuchElementException()\n State_Failed -> IllegalStateException(\"Iterator has failed.\")\n else -> IllegalStateException(\"Unexpected state of the iterator: $state\")\n }\n\n\n override suspend fun yield(value: T) {\n nextValue = value\n state = State_Ready\n return suspendCoroutineUninterceptedOrReturn { c ->\n nextStep = c\n COROUTINE_SUSPENDED\n }\n }\n\n override suspend fun yieldAll(iterator: Iterator) {\n if (!iterator.hasNext()) return\n nextIterator = iterator\n state = State_ManyReady\n return suspendCoroutineUninterceptedOrReturn { c ->\n nextStep = c\n COROUTINE_SUSPENDED\n }\n }\n\n // Completion continuation implementation\n override fun resumeWith(result: Result) {\n result.getOrThrow() // just rethrow exception if it is there\n state = State_Done\n }\n\n override val context: CoroutineContext\n get() = EmptyCoroutineContext\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\ninternal fun checkWindowSizeStep(size: Int, step: Int) {\n require(size > 0 && step > 0) {\n if (size != step)\n \"Both size $size and step $step must be greater than zero.\"\n else\n \"size $size must be greater than zero.\"\n }\n}\n\ninternal fun Sequence.windowedSequence(size: Int, step: Int, partialWindows: Boolean, reuseBuffer: Boolean): Sequence> {\n checkWindowSizeStep(size, step)\n return Sequence { windowedIterator(iterator(), size, step, partialWindows, reuseBuffer) }\n}\n\ninternal fun windowedIterator(iterator: Iterator, size: Int, step: Int, partialWindows: Boolean, reuseBuffer: Boolean): Iterator> {\n if (!iterator.hasNext()) return EmptyIterator\n return iterator> {\n val bufferInitialCapacity = size.coerceAtMost(1024)\n val gap = step - size\n if (gap >= 0) {\n var buffer = ArrayList(bufferInitialCapacity)\n var skip = 0\n for (e in iterator) {\n if (skip > 0) { skip -= 1; continue }\n buffer.add(e)\n if (buffer.size == size) {\n yield(buffer)\n if (reuseBuffer) buffer.clear() else buffer = ArrayList(size)\n skip = gap\n }\n }\n if (buffer.isNotEmpty()) {\n if (partialWindows || buffer.size == size) yield(buffer)\n }\n } else {\n var buffer = RingBuffer(bufferInitialCapacity)\n for (e in iterator) {\n buffer.add(e)\n if (buffer.isFull()) {\n if (buffer.size < size) { buffer = buffer.expanded(maxCapacity = size); continue }\n\n yield(if (reuseBuffer) buffer else ArrayList(buffer))\n buffer.removeFirst(step)\n }\n }\n if (partialWindows) {\n while (buffer.size > step) {\n yield(if (reuseBuffer) buffer else ArrayList(buffer))\n buffer.removeFirst(step)\n }\n if (buffer.isNotEmpty()) yield(buffer)\n }\n }\n }\n}\n\ninternal class MovingSubList(private val list: List) : AbstractList(), RandomAccess {\n private var fromIndex: Int = 0\n private var _size: Int = 0\n\n fun move(fromIndex: Int, toIndex: Int) {\n checkRangeIndexes(fromIndex, toIndex, list.size)\n this.fromIndex = fromIndex\n this._size = toIndex - fromIndex\n }\n\n override fun get(index: Int): E {\n checkElementIndex(index, _size)\n\n return list[fromIndex + index]\n }\n\n override val size: Int get() = _size\n}\n\n\n/**\n * Provides ring buffer implementation.\n *\n * Buffer overflow is not allowed so [add] doesn't overwrite tail but raises an exception.\n */\nprivate class RingBuffer(private val buffer: Array, filledSize: Int) : AbstractList(), RandomAccess {\n init {\n require(filledSize >= 0) { \"ring buffer filled size should not be negative but it is $filledSize\" }\n require(filledSize <= buffer.size) { \"ring buffer filled size: $filledSize cannot be larger than the buffer size: ${buffer.size}\" }\n }\n\n constructor(capacity: Int) : this(arrayOfNulls(capacity), 0)\n\n private val capacity = buffer.size\n private var startIndex: Int = 0\n\n override var size: Int = filledSize\n private set\n\n override fun get(index: Int): T {\n checkElementIndex(index, size)\n @Suppress(\"UNCHECKED_CAST\")\n return buffer[startIndex.forward(index)] as T\n }\n\n fun isFull() = size == capacity\n\n override fun iterator(): Iterator = object : AbstractIterator() {\n private var count = size\n private var index = startIndex\n\n override fun computeNext() {\n if (count == 0) {\n done()\n } else {\n @Suppress(\"UNCHECKED_CAST\")\n setNext(buffer[index] as T)\n index = index.forward(1)\n count--\n }\n }\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n override fun toArray(array: Array): Array {\n val result: Array =\n if (array.size < this.size) array.copyOf(this.size) else array as Array\n\n val size = this.size\n\n var widx = 0\n var idx = startIndex\n\n while (widx < size && idx < capacity) {\n result[widx] = buffer[idx] as T\n widx++\n idx++\n }\n\n idx = 0\n while (widx < size) {\n result[widx] = buffer[idx] as T\n widx++\n idx++\n }\n if (result.size > this.size) result[this.size] = null\n\n return result as Array\n }\n\n override fun toArray(): Array {\n return toArray(arrayOfNulls(size))\n }\n\n /**\n * Creates a new ring buffer with the capacity equal to the minimum of [maxCapacity] and 1.5 * [capacity].\n * The returned ring buffer contains the same elements as this ring buffer.\n */\n fun expanded(maxCapacity: Int): RingBuffer {\n val newCapacity = (capacity + (capacity shr 1) + 1).coerceAtMost(maxCapacity)\n val newBuffer = if (startIndex == 0) buffer.copyOf(newCapacity) else toArray(arrayOfNulls(newCapacity))\n return RingBuffer(newBuffer, size)\n }\n\n /**\n * Add [element] to the buffer or fail with [IllegalStateException] if no free space available in the buffer\n */\n fun add(element: T) {\n if (isFull()) {\n throw IllegalStateException(\"ring buffer is full\")\n }\n\n buffer[startIndex.forward(size)] = element\n size++\n }\n\n /**\n * Removes [n] first elements from the buffer or fails with [IllegalArgumentException] if not enough elements in the buffer to remove\n */\n fun removeFirst(n: Int) {\n require(n >= 0) { \"n shouldn't be negative but it is $n\" }\n require(n <= size) { \"n shouldn't be greater than the buffer size: n = $n, size = $size\" }\n\n if (n > 0) {\n val start = startIndex\n val end = start.forward(n)\n\n if (start > end) {\n buffer.fill(null, start, capacity)\n buffer.fill(null, 0, end)\n } else {\n buffer.fill(null, start, end)\n }\n\n startIndex = end\n size -= n\n }\n }\n\n\n @Suppress(\"NOTHING_TO_INLINE\")\n private inline fun Int.forward(n: Int): Int = (this + n) % capacity\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.collections\n\n// UByteArray =============================================================================\n@ExperimentalUnsignedTypes\nprivate fun partition(\n array: UByteArray, left: Int, right: Int): Int {\n var i = left\n var j = right\n val pivot = array[(left + right) / 2]\n while (i <= j) {\n while (array[i] < pivot)\n i++\n while (array[j] > pivot)\n j--\n if (i <= j) {\n val tmp = array[i]\n array[i] = array[j]\n array[j] = tmp\n i++\n j--\n }\n }\n return i\n}\n\n@ExperimentalUnsignedTypes\nprivate fun quickSort(\n array: UByteArray, left: Int, right: Int) {\n val index = partition(array, left, right)\n if (left < index - 1)\n quickSort(array, left, index - 1)\n if (index < right)\n quickSort(array, index, right)\n}\n\n// UShortArray =============================================================================\n@ExperimentalUnsignedTypes\nprivate fun partition(\n array: UShortArray, left: Int, right: Int): Int {\n var i = left\n var j = right\n val pivot = array[(left + right) / 2]\n while (i <= j) {\n while (array[i] < pivot)\n i++\n while (array[j] > pivot)\n j--\n if (i <= j) {\n val tmp = array[i]\n array[i] = array[j]\n array[j] = tmp\n i++\n j--\n }\n }\n return i\n}\n\n@ExperimentalUnsignedTypes\nprivate fun quickSort(\n array: UShortArray, left: Int, right: Int) {\n val index = partition(array, left, right)\n if (left < index - 1)\n quickSort(array, left, index - 1)\n if (index < right)\n quickSort(array, index, right)\n}\n\n// UIntArray =============================================================================\n@ExperimentalUnsignedTypes\nprivate fun partition(\n array: UIntArray, left: Int, right: Int): Int {\n var i = left\n var j = right\n val pivot = array[(left + right) / 2]\n while (i <= j) {\n while (array[i] < pivot)\n i++\n while (array[j] > pivot)\n j--\n if (i <= j) {\n val tmp = array[i]\n array[i] = array[j]\n array[j] = tmp\n i++\n j--\n }\n }\n return i\n}\n\n@ExperimentalUnsignedTypes\nprivate fun quickSort(\n array: UIntArray, left: Int, right: Int) {\n val index = partition(array, left, right)\n if (left < index - 1)\n quickSort(array, left, index - 1)\n if (index < right)\n quickSort(array, index, right)\n}\n\n// ULongArray =============================================================================\n@ExperimentalUnsignedTypes\nprivate fun partition(\n array: ULongArray, left: Int, right: Int): Int {\n var i = left\n var j = right\n val pivot = array[(left + right) / 2]\n while (i <= j) {\n while (array[i] < pivot)\n i++\n while (array[j] > pivot)\n j--\n if (i <= j) {\n val tmp = array[i]\n array[i] = array[j]\n array[j] = tmp\n i++\n j--\n }\n }\n return i\n}\n\n@ExperimentalUnsignedTypes\nprivate fun quickSort(\n array: ULongArray, left: Int, right: Int) {\n val index = partition(array, left, right)\n if (left < index - 1)\n quickSort(array, left, index - 1)\n if (index < right)\n quickSort(array, index, right)\n}\n\n\n// Interfaces =============================================================================\n/**\n * Sorts the given array using qsort algorithm.\n */\n@ExperimentalUnsignedTypes\ninternal fun sortArray(array: UByteArray) = quickSort(array, 0, array.size - 1)\n@ExperimentalUnsignedTypes\ninternal fun sortArray(array: UShortArray) = quickSort(array, 0, array.size - 1)\n@ExperimentalUnsignedTypes\ninternal fun sortArray(array: UIntArray) = quickSort(array, 0, array.size - 1)\n@ExperimentalUnsignedTypes\ninternal fun sortArray(array: ULongArray) = quickSort(array, 0, array.size - 1)","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.contracts\n\nimport kotlin.internal.ContractsDsl\nimport kotlin.internal.InlineOnly\n\n/**\n * This marker distinguishes the experimental contract declaration API and is used to opt-in for that feature\n * when declaring contracts of user functions.\n *\n * Any usage of a declaration annotated with `@ExperimentalContracts` must be accepted either by\n * annotating that usage with the [OptIn] annotation, e.g. `@OptIn(ExperimentalContracts::class)`,\n * or by using the compiler argument `-Xopt-in=kotlin.contracts.ExperimentalContracts`.\n */\n@Suppress(\"DEPRECATION\")\n@Retention(AnnotationRetention.BINARY)\n@SinceKotlin(\"1.3\")\n@Experimental\n@RequiresOptIn\n@MustBeDocumented\npublic annotation class ExperimentalContracts\n\n/**\n * Provides a scope, where the functions of the contract DSL, such as [returns], [callsInPlace], etc.,\n * can be used to describe the contract of a function.\n *\n * This type is used as a receiver type of the lambda function passed to the [contract] function.\n *\n * @see contract\n */\n@ContractsDsl\n@ExperimentalContracts\n@SinceKotlin(\"1.3\")\npublic interface ContractBuilder {\n /**\n * Describes a situation when a function returns normally, without any exceptions thrown.\n *\n * Use [SimpleEffect.implies] function to describe a conditional effect that happens in such case.\n *\n */\n // @sample samples.contracts.returnsContract\n @ContractsDsl public fun returns(): Returns\n\n /**\n * Describes a situation when a function returns normally with the specified return [value].\n *\n * The possible values of [value] are limited to `true`, `false` or `null`.\n *\n * Use [SimpleEffect.implies] function to describe a conditional effect that happens in such case.\n *\n */\n // @sample samples.contracts.returnsTrueContract\n // @sample samples.contracts.returnsFalseContract\n // @sample samples.contracts.returnsNullContract\n @ContractsDsl public fun returns(value: Any?): Returns\n\n /**\n * Describes a situation when a function returns normally with any value that is not `null`.\n *\n * Use [SimpleEffect.implies] function to describe a conditional effect that happens in such case.\n *\n */\n // @sample samples.contracts.returnsNotNullContract\n @ContractsDsl public fun returnsNotNull(): ReturnsNotNull\n\n /**\n * Specifies that the function parameter [lambda] is invoked in place.\n *\n * This contract specifies that:\n * 1. the function [lambda] can only be invoked during the call of the owner function,\n * and it won't be invoked after that owner function call is completed;\n * 2. _(optionally)_ the function [lambda] is invoked the amount of times specified by the [kind] parameter,\n * see the [InvocationKind] enum for possible values.\n *\n * A function declaring the `callsInPlace` effect must be _inline_.\n *\n */\n /* @sample samples.contracts.callsInPlaceAtMostOnceContract\n * @sample samples.contracts.callsInPlaceAtLeastOnceContract\n * @sample samples.contracts.callsInPlaceExactlyOnceContract\n * @sample samples.contracts.callsInPlaceUnknownContract\n */\n @ContractsDsl public fun callsInPlace(lambda: Function, kind: InvocationKind = InvocationKind.UNKNOWN): CallsInPlace\n}\n\n/**\n * Specifies how many times a function invokes its function parameter in place.\n *\n * See [ContractBuilder.callsInPlace] for the details of the call-in-place function contract.\n */\n@ContractsDsl\n@ExperimentalContracts\n@SinceKotlin(\"1.3\")\npublic enum class InvocationKind {\n /**\n * A function parameter will be invoked one time or not invoked at all.\n */\n // @sample samples.contracts.callsInPlaceAtMostOnceContract\n @ContractsDsl AT_MOST_ONCE,\n\n /**\n * A function parameter will be invoked one or more times.\n *\n */\n // @sample samples.contracts.callsInPlaceAtLeastOnceContract\n @ContractsDsl AT_LEAST_ONCE,\n\n /**\n * A function parameter will be invoked exactly one time.\n *\n */\n // @sample samples.contracts.callsInPlaceExactlyOnceContract\n @ContractsDsl EXACTLY_ONCE,\n\n /**\n * A function parameter is called in place, but it's unknown how many times it can be called.\n *\n */\n // @sample samples.contracts.callsInPlaceUnknownContract\n @ContractsDsl UNKNOWN\n}\n\n/**\n * Specifies the contract of a function.\n *\n * The contract description must be at the beginning of a function and have at least one effect.\n *\n * Only the top-level functions can have a contract for now.\n *\n * @param builder the lambda where the contract of a function is described with the help of the [ContractBuilder] members.\n *\n */\n/* @sample samples.contracts.returnsContract\n* @sample samples.contracts.returnsTrueContract\n* @sample samples.contracts.returnsFalseContract\n* @sample samples.contracts.returnsNullContract\n* @sample samples.contracts.returnsNotNullContract\n* @sample samples.contracts.callsInPlaceAtMostOnceContract\n* @sample samples.contracts.callsInPlaceAtLeastOnceContract\n* @sample samples.contracts.callsInPlaceExactlyOnceContract\n* @sample samples.contracts.callsInPlaceUnknownContract\n*/\n@ContractsDsl\n@ExperimentalContracts\n@InlineOnly\n@SinceKotlin(\"1.3\")\n@Suppress(\"UNUSED_PARAMETER\")\npublic inline fun contract(builder: ContractBuilder.() -> Unit) { }\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines\n\n/**\n * Marks coroutine context element that intercepts coroutine continuations.\n * The coroutines framework uses [ContinuationInterceptor.Key] to retrieve the interceptor and\n * intercepts all coroutine continuations with [interceptContinuation] invocations.\n *\n * [ContinuationInterceptor] behaves like a [polymorphic element][AbstractCoroutineContextKey], meaning that\n * its implementation delegates [get][CoroutineContext.Element.get] and [minusKey][CoroutineContext.Element.minusKey]\n * to [getPolymorphicElement] and [minusPolymorphicKey] respectively.\n * [ContinuationInterceptor] subtypes can be extracted from the coroutine context using either [ContinuationInterceptor.Key]\n * or subtype key if it extends [AbstractCoroutineContextKey].\n */\n@SinceKotlin(\"1.3\")\npublic interface ContinuationInterceptor : CoroutineContext.Element {\n /**\n * The key that defines *the* context interceptor.\n */\n companion object Key : CoroutineContext.Key\n\n /**\n * Returns continuation that wraps the original [continuation], thus intercepting all resumptions.\n * This function is invoked by coroutines framework when needed and the resulting continuations are\n * cached internally per each instance of the original [continuation].\n *\n * This function may simply return original [continuation] if it does not want to intercept this particular continuation.\n *\n * When the original [continuation] completes, coroutine framework invokes [releaseInterceptedContinuation]\n * with the resulting continuation if it was intercepted, that is if `interceptContinuation` had previously\n * returned a different continuation instance.\n */\n public fun interceptContinuation(continuation: Continuation): Continuation\n\n /**\n * Invoked for the continuation instance returned by [interceptContinuation] when the original\n * continuation completes and will not be used anymore. This function is invoked only if [interceptContinuation]\n * had returned a different continuation instance from the one it was invoked with.\n *\n * Default implementation does nothing.\n *\n * @param continuation Continuation instance returned by this interceptor's [interceptContinuation] invocation.\n */\n public fun releaseInterceptedContinuation(continuation: Continuation<*>) {\n /* do nothing by default */\n }\n\n public override operator fun get(key: CoroutineContext.Key): E? {\n // getPolymorphicKey specialized for ContinuationInterceptor key\n @OptIn(ExperimentalStdlibApi::class)\n if (key is AbstractCoroutineContextKey<*, *>) {\n @Suppress(\"UNCHECKED_CAST\")\n return if (key.isSubKey(this.key)) key.tryCast(this) as? E else null\n }\n @Suppress(\"UNCHECKED_CAST\")\n return if (ContinuationInterceptor === key) this as E else null\n }\n\n\n public override fun minusKey(key: CoroutineContext.Key<*>): CoroutineContext {\n // minusPolymorphicKey specialized for ContinuationInterceptor key\n @OptIn(ExperimentalStdlibApi::class)\n if (key is AbstractCoroutineContextKey<*, *>) {\n return if (key.isSubKey(this.key) && key.tryCast(this) != null) EmptyCoroutineContext else this\n }\n return if (ContinuationInterceptor === key) EmptyCoroutineContext else this\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines\n\n/**\n * Persistent context for the coroutine. It is an indexed set of [Element] instances.\n * An indexed set is a mix between a set and a map.\n * Every element in this set has a unique [Key].\n */\n@SinceKotlin(\"1.3\")\npublic interface CoroutineContext {\n /**\n * Returns the element with the given [key] from this context or `null`.\n */\n public operator fun get(key: Key): E?\n\n /**\n * Accumulates entries of this context starting with [initial] value and applying [operation]\n * from left to right to current accumulator value and each element of this context.\n */\n public fun fold(initial: R, operation: (R, Element) -> R): R\n\n /**\n * Returns a context containing elements from this context and elements from other [context].\n * The elements from this context with the same key as in the other one are dropped.\n */\n public operator fun plus(context: CoroutineContext): CoroutineContext =\n if (context === EmptyCoroutineContext) this else // fast path -- avoid lambda creation\n context.fold(this) { acc, element ->\n val removed = acc.minusKey(element.key)\n if (removed === EmptyCoroutineContext) element else {\n // make sure interceptor is always last in the context (and thus is fast to get when present)\n val interceptor = removed[ContinuationInterceptor]\n if (interceptor == null) CombinedContext(removed, element) else {\n val left = removed.minusKey(ContinuationInterceptor)\n if (left === EmptyCoroutineContext) CombinedContext(element, interceptor) else\n CombinedContext(CombinedContext(left, element), interceptor)\n }\n }\n }\n\n /**\n * Returns a context containing elements from this context, but without an element with\n * the specified [key].\n */\n public fun minusKey(key: Key<*>): CoroutineContext\n\n /**\n * Key for the elements of [CoroutineContext]. [E] is a type of element with this key.\n */\n public interface Key\n\n /**\n * An element of the [CoroutineContext]. An element of the coroutine context is a singleton context by itself.\n */\n public interface Element : CoroutineContext {\n /**\n * A key of this coroutine context element.\n */\n public val key: Key<*>\n\n public override operator fun get(key: Key): E? =\n @Suppress(\"UNCHECKED_CAST\")\n if (this.key == key) this as E else null\n\n public override fun fold(initial: R, operation: (R, Element) -> R): R =\n operation(initial, this)\n\n public override fun minusKey(key: Key<*>): CoroutineContext =\n if (this.key == key) EmptyCoroutineContext else this\n }\n}\n","/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.coroutines\n\nimport kotlin.coroutines.CoroutineContext.Element\nimport kotlin.coroutines.CoroutineContext.Key\n\n/**\n * Base class for [CoroutineContext.Element] implementations.\n */\n@SinceKotlin(\"1.3\")\npublic abstract class AbstractCoroutineContextElement(public override val key: Key<*>) : Element\n\n/**\n * Base class for [CoroutineContext.Key] associated with polymorphic [CoroutineContext.Element] implementation.\n * Polymorphic element implementation implies delegating its [get][Element.get] and [minusKey][Element.minusKey]\n * to [getPolymorphicElement] and [minusPolymorphicKey] respectively.\n *\n * Polymorphic elements can be extracted from the coroutine context using both element key and its supertype key.\n * Example of polymorphic elements:\n * ```\n * open class BaseElement : CoroutineContext.Element {\n * companion object Key : CoroutineContext.Key\n * override val key: CoroutineContext.Key<*> get() = Key\n * // It is important to use getPolymorphicKey and minusPolymorphicKey\n * override fun get(key: CoroutineContext.Key): E? = getPolymorphicElement(key)\n * override fun minusKey(key: CoroutineContext.Key<*>): CoroutineContext = minusPolymorphicKey(key)\n * }\n *\n * class DerivedElement : BaseElement() {\n * companion object Key : AbstractCoroutineContextKey(BaseElement, { it as? DerivedElement })\n * }\n * // Now it is possible to query both `BaseElement` and `DerivedElement`\n * someContext[BaseElement] // Returns BaseElement?, non-null both for BaseElement and DerivedElement instances\n * someContext[DerivedElement] // Returns DerivedElement?, non-null only for DerivedElement instance\n * ```\n * @param B base class of a polymorphic element\n * @param baseKey an instance of base key\n * @param E element type associated with the current key\n * @param safeCast a function that can safely cast abstract [CoroutineContext.Element] to the concrete [E] type\n * and return the element if it is a subtype of [E] or `null` otherwise.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic abstract class AbstractCoroutineContextKey(\n baseKey: Key,\n private val safeCast: (element: Element) -> E?\n) : Key {\n private val topmostKey: Key<*> = if (baseKey is AbstractCoroutineContextKey<*, *>) baseKey.topmostKey else baseKey\n\n internal fun tryCast(element: Element): E? = safeCast(element)\n internal fun isSubKey(key: Key<*>): Boolean = key === this || topmostKey === key\n}\n\n/**\n * Returns the current element is it is associated with the given [key] in a polymorphic manner or `null` otherwise.\n * This method returns non-null value if either [Element.key] is equal to the given [key] or if the [key] is associated\n * with [Element.key] via [AbstractCoroutineContextKey].\n * See [AbstractCoroutineContextKey] for the example of usage.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun Element.getPolymorphicElement(key: Key): E? {\n if (key is AbstractCoroutineContextKey<*, *>) {\n @Suppress(\"UNCHECKED_CAST\")\n return if (key.isSubKey(this.key)) key.tryCast(this) as? E else null\n }\n @Suppress(\"UNCHECKED_CAST\")\n return if (this.key === key) this as E else null\n}\n\n/**\n * Returns empty coroutine context if the element is associated with the given [key] in a polymorphic manner\n * or `null` otherwise.\n * This method returns empty context if either [Element.key] is equal to the given [key] or if the [key] is associated\n * with [Element.key] via [AbstractCoroutineContextKey].\n * See [AbstractCoroutineContextKey] for the example of usage.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun Element.minusPolymorphicKey(key: Key<*>): CoroutineContext {\n if (key is AbstractCoroutineContextKey<*, *>) {\n return if (key.isSubKey(this.key) && key.tryCast(this) != null) EmptyCoroutineContext else this\n }\n return if (this.key === key) EmptyCoroutineContext else this\n}\n\n/**\n * An empty coroutine context.\n */\n@SinceKotlin(\"1.3\")\npublic object EmptyCoroutineContext : CoroutineContext, Serializable {\n private const val serialVersionUID: Long = 0\n private fun readResolve(): Any = EmptyCoroutineContext\n\n public override fun get(key: Key): E? = null\n public override fun fold(initial: R, operation: (R, Element) -> R): R = initial\n public override fun plus(context: CoroutineContext): CoroutineContext = context\n public override fun minusKey(key: Key<*>): CoroutineContext = this\n public override fun hashCode(): Int = 0\n public override fun toString(): String = \"EmptyCoroutineContext\"\n}\n\n//--------------------- internal impl ---------------------\n\n// this class is not exposed, but is hidden inside implementations\n// this is a left-biased list, so that `plus` works naturally\n@SinceKotlin(\"1.3\")\ninternal class CombinedContext(\n private val left: CoroutineContext,\n private val element: Element\n) : CoroutineContext, Serializable {\n\n override fun get(key: Key): E? {\n var cur = this\n while (true) {\n cur.element[key]?.let { return it }\n val next = cur.left\n if (next is CombinedContext) {\n cur = next\n } else {\n return next[key]\n }\n }\n }\n\n public override fun fold(initial: R, operation: (R, Element) -> R): R =\n operation(left.fold(initial, operation), element)\n\n public override fun minusKey(key: Key<*>): CoroutineContext {\n element[key]?.let { return left }\n val newLeft = left.minusKey(key)\n return when {\n newLeft === left -> this\n newLeft === EmptyCoroutineContext -> element\n else -> CombinedContext(newLeft, element)\n }\n }\n\n private fun size(): Int {\n var cur = this\n var size = 2\n while (true) {\n cur = cur.left as? CombinedContext ?: return size\n size++\n }\n }\n\n private fun contains(element: Element): Boolean =\n get(element.key) == element\n\n private fun containsAll(context: CombinedContext): Boolean {\n var cur = context\n while (true) {\n if (!contains(cur.element)) return false\n val next = cur.left\n if (next is CombinedContext) {\n cur = next\n } else {\n return contains(next as Element)\n }\n }\n }\n\n override fun equals(other: Any?): Boolean =\n this === other || other is CombinedContext && other.size() == size() && other.containsAll(this)\n\n override fun hashCode(): Int = left.hashCode() + element.hashCode()\n\n override fun toString(): String =\n \"[\" + fold(\"\") { acc, element ->\n if (acc.isEmpty()) element.toString() else \"$acc, $element\"\n } + \"]\"\n\n private fun writeReplace(): Any {\n val n = size()\n val elements = arrayOfNulls(n)\n var index = 0\n fold(Unit) { _, element -> elements[index++] = element }\n check(index == n)\n @Suppress(\"UNCHECKED_CAST\")\n return Serialized(elements as Array)\n }\n\n private class Serialized(val elements: Array) : Serializable {\n companion object {\n private const val serialVersionUID: Long = 0L\n }\n\n private fun readResolve(): Any = elements.fold(EmptyCoroutineContext, CoroutineContext::plus)\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"IntrinsicsKt\")\n@file:kotlin.jvm.JvmMultifileClass\n\npackage kotlin.coroutines.intrinsics\n\nimport kotlin.coroutines.*\nimport kotlin.internal.InlineOnly\n\n/**\n * Obtains the current continuation instance inside suspend functions and either suspends\n * currently running coroutine or returns result immediately without suspension.\n *\n * If the [block] returns the special [COROUTINE_SUSPENDED] value, it means that suspend function did suspend the execution and will\n * not return any result immediately. In this case, the [Continuation] provided to the [block] shall be\n * resumed by invoking [Continuation.resumeWith] at some moment in the\n * future when the result becomes available to resume the computation.\n *\n * Otherwise, the return value of the [block] must have a type assignable to [T] and represents the result of this suspend function.\n * It means that the execution was not suspended and the [Continuation] provided to the [block] shall not be invoked.\n * As the result type of the [block] is declared as `Any?` and cannot be correctly type-checked,\n * its proper return type remains on the conscience of the suspend function's author.\n *\n * Invocation of [Continuation.resumeWith] resumes coroutine directly in the invoker's thread without going through the\n * [ContinuationInterceptor] that might be present in the coroutine's [CoroutineContext].\n * It is the invoker's responsibility to ensure that a proper invocation context is established.\n * [Continuation.intercepted] can be used to acquire the intercepted continuation.\n *\n * Note that it is not recommended to call either [Continuation.resume] nor [Continuation.resumeWithException] functions synchronously\n * in the same stackframe where suspension function is run. Use [suspendCoroutine] as a safer way to obtain current\n * continuation instance.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\n@Suppress(\"UNUSED_PARAMETER\", \"RedundantSuspendModifier\")\npublic suspend inline fun suspendCoroutineUninterceptedOrReturn(crossinline block: (Continuation) -> Any?): T =\n throw NotImplementedError(\"Implementation of suspendCoroutineUninterceptedOrReturn is intrinsic\")\n\n/**\n * This value is used as a return value of [suspendCoroutineUninterceptedOrReturn] `block` argument to state that\n * the execution was suspended and will not return any result immediately.\n *\n * **Note: this value should not be used in general code.** Using it outside of the context of\n * `suspendCoroutineUninterceptedOrReturn` function return value (including, but not limited to,\n * storing this value in other properties, returning it from other functions, etc)\n * can lead to unspecified behavior of the code.\n */\n// It is implemented as property with getter to avoid ProGuard problem with multifile IntrinsicsKt class\n@SinceKotlin(\"1.3\")\npublic val COROUTINE_SUSPENDED: Any get() = CoroutineSingletons.COROUTINE_SUSPENDED\n\n// Using enum here ensures two important properties:\n// 1. It makes SafeContinuation serializable with all kinds of serialization frameworks (since all of them natively support enums)\n// 2. It improves debugging experience, since you clearly see toString() value of those objects and what package they come from\n@SinceKotlin(\"1.3\")\n@PublishedApi // This class is Published API via serialized representation of SafeContinuation, don't rename/move\ninternal enum class CoroutineSingletons { COROUTINE_SUSPENDED, UNDECIDED, RESUMED }\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.experimental\n\n/** Performs a bitwise AND operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Byte.and(other: Byte): Byte = (this.toInt() and other.toInt()).toByte()\n\n/** Performs a bitwise OR operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Byte.or(other: Byte): Byte = (this.toInt() or other.toInt()).toByte()\n\n/** Performs a bitwise XOR operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Byte.xor(other: Byte): Byte = (this.toInt() xor other.toInt()).toByte()\n\n/** Inverts the bits in this value. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun Byte.inv(): Byte = (this.toInt().inv()).toByte()\n\n\n/** Performs a bitwise AND operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Short.and(other: Short): Short = (this.toInt() and other.toInt()).toShort()\n\n/** Performs a bitwise OR operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Short.or(other: Short): Short = (this.toInt() or other.toInt()).toShort()\n\n/** Performs a bitwise XOR operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Short.xor(other: Short): Short = (this.toInt() xor other.toInt()).toShort()\n\n/** Inverts the bits in this value. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun Short.inv(): Short = (this.toInt().inv()).toShort()\n\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.experimental\n\n/**\n * The experimental marker for type inference augmenting annotations.\n *\n * Any usage of a declaration annotated with `@ExperimentalTypeInference` must be accepted either by\n * annotating that usage with the [OptIn] annotation, e.g. `@OptIn(ExperimentalTypeInference::class)`,\n * or by using the compiler argument `-Xopt-in=kotlin.experimental.ExperimentalTypeInference`.\n */\n@Suppress(\"DEPRECATION\")\n@Experimental(level = Experimental.Level.ERROR)\n@RequiresOptIn(level = RequiresOptIn.Level.ERROR)\n@MustBeDocumented\n@Retention(AnnotationRetention.BINARY)\n@Target(AnnotationTarget.ANNOTATION_CLASS)\n@SinceKotlin(\"1.3\")\npublic annotation class ExperimentalTypeInference\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.internal\n\n/**\n * Specifies that the corresponding type should be ignored during type inference.\n */\n@Target(AnnotationTarget.TYPE)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class NoInfer\n\n/**\n * Specifies that the constraint built for the type during type inference should be an equality one.\n */\n@Target(AnnotationTarget.TYPE)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class Exact\n\n/**\n * Specifies that a corresponding member has the lowest priority in overload resolution.\n */\n@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class LowPriorityInOverloadResolution\n\n/**\n * Specifies that the corresponding member has the highest priority in overload resolution. Effectively this means that\n * an extension annotated with this annotation will win in overload resolution over a member with the same signature.\n */\n@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class HidesMembers\n\n/**\n * The value of this type parameter should be mentioned in input types (argument types, receiver type or expected type).\n */\n@Target(AnnotationTarget.TYPE_PARAMETER)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class OnlyInputTypes\n\n/**\n * Specifies that this function should not be called directly without inlining\n */\n@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class InlineOnly\n\n/**\n * Specifies that this declaration can have dynamic receiver type.\n */\n@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY)\n@Retention(AnnotationRetention.BINARY)\ninternal annotation class DynamicExtension\n\n/**\n * The value of this parameter should be a property reference expression (`this::foo`), referencing a `lateinit` property,\n * the backing field of which is accessible at the point where the corresponding argument is passed.\n */\n@Target(AnnotationTarget.VALUE_PARAMETER)\n@Retention(AnnotationRetention.BINARY)\n@SinceKotlin(\"1.2\")\ninternal annotation class AccessibleLateinitPropertyLiteral\n\n/**\n * Specifies that this declaration is only completely supported since the specified version.\n *\n * The Kotlin compiler of an earlier version is going to report a diagnostic on usages of this declaration.\n * The diagnostic message can be specified with [message], or via [errorCode] (takes less space, but might not be immediately clear\n * to the user). The diagnostic severity can be specified with [level]: WARNING/ERROR mean that either a warning or an error\n * is going to be reported, HIDDEN means that the declaration is going to be removed from resolution completely.\n *\n * [versionKind] specifies which version should be compared with the [version] value, when compiling the usage of the annotated declaration.\n * Note that prior to 1.2, only [RequireKotlinVersionKind.LANGUAGE_VERSION] was supported, so the Kotlin compiler before 1.2 is going to\n * treat any [RequireKotlin] as if it requires the language version. Since 1.2, the Kotlin compiler supports\n * [RequireKotlinVersionKind.LANGUAGE_VERSION], [RequireKotlinVersionKind.COMPILER_VERSION] and [RequireKotlinVersionKind.API_VERSION].\n * If the actual value of [versionKind] is something different (e.g. a new version kind, added in future versions of Kotlin),\n * Kotlin 1.2 is going to ignore this [RequireKotlin] altogether, where as Kotlin before 1.2 is going to treat this as a requirement\n * on the language version.\n *\n * This annotation is erased at compile time; its arguments are stored in a more compact form in the Kotlin metadata.\n */\n@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.TYPEALIAS)\n@Retention(AnnotationRetention.SOURCE)\n@Repeatable\n@SinceKotlin(\"1.2\")\ninternal annotation class RequireKotlin(\n val version: String,\n val message: String = \"\",\n val level: DeprecationLevel = DeprecationLevel.ERROR,\n val versionKind: RequireKotlinVersionKind = RequireKotlinVersionKind.LANGUAGE_VERSION,\n val errorCode: Int = -1\n)\n\n/**\n * The kind of the version that is required by [RequireKotlin].\n */\n@SinceKotlin(\"1.2\")\ninternal enum class RequireKotlinVersionKind {\n LANGUAGE_VERSION,\n COMPILER_VERSION,\n API_VERSION,\n}\n\n/**\n * Specifies that this declaration is a part of special DSL, used for constructing function's contract.\n */\n@Retention(AnnotationRetention.BINARY)\n@SinceKotlin(\"1.2\")\ninternal annotation class ContractsDsl\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.properties\n\nimport kotlin.reflect.KProperty\n\n/**\n * Standard property delegates.\n */\npublic object Delegates {\n /**\n * Returns a property delegate for a read/write property with a non-`null` value that is initialized not during\n * object construction time but at a later time. Trying to read the property before the initial value has been\n * assigned results in an exception.\n *\n * @sample samples.properties.Delegates.notNullDelegate\n */\n public fun notNull(): ReadWriteProperty = NotNullVar()\n\n /**\n * Returns a property delegate for a read/write property that calls a specified callback function when changed.\n * @param initialValue the initial value of the property.\n * @param onChange the callback which is called after the change of the property is made. The value of the property\n * has already been changed when this callback is invoked.\n *\n * @sample samples.properties.Delegates.observableDelegate\n */\n public inline fun observable(initialValue: T, crossinline onChange: (property: KProperty<*>, oldValue: T, newValue: T) -> Unit):\n ReadWriteProperty =\n object : ObservableProperty(initialValue) {\n override fun afterChange(property: KProperty<*>, oldValue: T, newValue: T) = onChange(property, oldValue, newValue)\n }\n\n /**\n * Returns a property delegate for a read/write property that calls a specified callback function when changed,\n * allowing the callback to veto the modification.\n * @param initialValue the initial value of the property.\n * @param onChange the callback which is called before a change to the property value is attempted.\n * The value of the property hasn't been changed yet, when this callback is invoked.\n * If the callback returns `true` the value of the property is being set to the new value,\n * and if the callback returns `false` the new value is discarded and the property remains its old value.\n *\n * @sample samples.properties.Delegates.vetoableDelegate\n * @sample samples.properties.Delegates.throwVetoableDelegate\n */\n public inline fun vetoable(initialValue: T, crossinline onChange: (property: KProperty<*>, oldValue: T, newValue: T) -> Boolean):\n ReadWriteProperty =\n object : ObservableProperty(initialValue) {\n override fun beforeChange(property: KProperty<*>, oldValue: T, newValue: T): Boolean = onChange(property, oldValue, newValue)\n }\n\n}\n\n\nprivate class NotNullVar() : ReadWriteProperty {\n private var value: T? = null\n\n public override fun getValue(thisRef: Any?, property: KProperty<*>): T {\n return value ?: throw IllegalStateException(\"Property ${property.name} should be initialized before get.\")\n }\n\n public override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) {\n this.value = value\n }\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.properties\n\nimport kotlin.reflect.KProperty\n\n/**\n * Implements the core logic of a property delegate for a read/write property that calls callback functions when changed.\n * @param initialValue the initial value of the property.\n */\npublic abstract class ObservableProperty(initialValue: T) : ReadWriteProperty {\n private var value = initialValue\n\n /**\n * The callback which is called before a change to the property value is attempted.\n * The value of the property hasn't been changed yet, when this callback is invoked.\n * If the callback returns `true` the value of the property is being set to the new value,\n * and if the callback returns `false` the new value is discarded and the property remains its old value.\n */\n protected open fun beforeChange(property: KProperty<*>, oldValue: T, newValue: T): Boolean = true\n\n /**\n * The callback which is called after the change of the property is made. The value of the property\n * has already been changed when this callback is invoked.\n */\n protected open fun afterChange(property: KProperty<*>, oldValue: T, newValue: T): Unit {}\n\n public override fun getValue(thisRef: Any?, property: KProperty<*>): T {\n return value\n }\n\n public override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) {\n val oldValue = this.value\n if (!beforeChange(property, oldValue, value)) {\n return\n }\n this.value = value\n afterChange(property, oldValue, value)\n }\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.random\n\nimport kotlin.math.nextDown\n\n/**\n * An abstract class that is implemented by random number generator algorithms.\n *\n * The companion object [Random.Default] is the default instance of [Random].\n *\n * To get a seeded instance of random generator use [Random] function.\n *\n * @sample samples.random.Randoms.defaultRandom\n */\n@SinceKotlin(\"1.3\")\npublic abstract class Random {\n\n /**\n * Gets the next random [bitCount] number of bits.\n *\n * Generates an `Int` whose lower [bitCount] bits are filled with random values and the remaining upper bits are zero.\n *\n * @param bitCount number of bits to generate, must be in range 0..32, otherwise the behavior is unspecified.\n */\n public abstract fun nextBits(bitCount: Int): Int\n\n /**\n * Gets the next random `Int` from the random number generator.\n *\n * Generates an `Int` random value uniformly distributed between `Int.MIN_VALUE` and `Int.MAX_VALUE` (inclusive).\n */\n public open fun nextInt(): Int = nextBits(32)\n\n /**\n * Gets the next random non-negative `Int` from the random number generator less than the specified [until] bound.\n *\n * Generates an `Int` random value uniformly distributed between `0` (inclusive) and the specified [until] bound (exclusive).\n *\n * @param until must be positive.\n *\n * @throws IllegalArgumentException if [until] is negative or zero.\n */\n public open fun nextInt(until: Int): Int = nextInt(0, until)\n\n /**\n * Gets the next random `Int` from the random number generator in the specified range.\n *\n * Generates an `Int` random value uniformly distributed between the specified [from] (inclusive) and [until] (exclusive) bounds.\n *\n * @throws IllegalArgumentException if [from] is greater than or equal to [until].\n */\n public open fun nextInt(from: Int, until: Int): Int {\n checkRangeBounds(from, until)\n val n = until - from\n if (n > 0 || n == Int.MIN_VALUE) {\n val rnd = if (n and -n == n) {\n val bitCount = fastLog2(n)\n nextBits(bitCount)\n } else {\n var v: Int\n do {\n val bits = nextInt().ushr(1)\n v = bits % n\n } while (bits - v + (n - 1) < 0)\n v\n }\n return from + rnd\n } else {\n while (true) {\n val rnd = nextInt()\n if (rnd in from until until) return rnd\n }\n }\n }\n\n /**\n * Gets the next random `Long` from the random number generator.\n *\n * Generates a `Long` random value uniformly distributed between `Long.MIN_VALUE` and `Long.MAX_VALUE` (inclusive).\n */\n public open fun nextLong(): Long = nextInt().toLong().shl(32) + nextInt()\n\n /**\n * Gets the next random non-negative `Long` from the random number generator less than the specified [until] bound.\n *\n * Generates a `Long` random value uniformly distributed between `0` (inclusive) and the specified [until] bound (exclusive).\n *\n * @param until must be positive.\n *\n * @throws IllegalArgumentException if [until] is negative or zero.\n */\n public open fun nextLong(until: Long): Long = nextLong(0, until)\n\n /**\n * Gets the next random `Long` from the random number generator in the specified range.\n *\n * Generates a `Long` random value uniformly distributed between the specified [from] (inclusive) and [until] (exclusive) bounds.\n *\n * @throws IllegalArgumentException if [from] is greater than or equal to [until].\n */\n public open fun nextLong(from: Long, until: Long): Long {\n checkRangeBounds(from, until)\n val n = until - from\n if (n > 0) {\n val rnd: Long\n if (n and -n == n) {\n val nLow = n.toInt()\n val nHigh = (n ushr 32).toInt()\n rnd = when {\n nLow != 0 -> {\n val bitCount = fastLog2(nLow)\n // toUInt().toLong()\n nextBits(bitCount).toLong() and 0xFFFF_FFFF\n }\n nHigh == 1 ->\n // toUInt().toLong()\n nextInt().toLong() and 0xFFFF_FFFF\n else -> {\n val bitCount = fastLog2(nHigh)\n nextBits(bitCount).toLong().shl(32) + nextInt()\n }\n }\n } else {\n var v: Long\n do {\n val bits = nextLong().ushr(1)\n v = bits % n\n } while (bits - v + (n - 1) < 0)\n rnd = v\n }\n return from + rnd\n } else {\n while (true) {\n val rnd = nextLong()\n if (rnd in from until until) return rnd\n }\n }\n }\n\n /**\n * Gets the next random [Boolean] value.\n */\n public open fun nextBoolean(): Boolean = nextBits(1) != 0\n\n /**\n * Gets the next random [Double] value uniformly distributed between 0 (inclusive) and 1 (exclusive).\n */\n public open fun nextDouble(): Double = doubleFromParts(nextBits(26), nextBits(27))\n\n /**\n * Gets the next random non-negative `Double` from the random number generator less than the specified [until] bound.\n *\n * Generates a `Double` random value uniformly distributed between 0 (inclusive) and [until] (exclusive).\n *\n * @throws IllegalArgumentException if [until] is negative or zero.\n */\n public open fun nextDouble(until: Double): Double = nextDouble(0.0, until)\n\n /**\n * Gets the next random `Double` from the random number generator in the specified range.\n *\n * Generates a `Double` random value uniformly distributed between the specified [from] (inclusive) and [until] (exclusive) bounds.\n *\n * [from] and [until] must be finite otherwise the behavior is unspecified.\n *\n * @throws IllegalArgumentException if [from] is greater than or equal to [until].\n */\n public open fun nextDouble(from: Double, until: Double): Double {\n checkRangeBounds(from, until)\n val size = until - from\n val r = if (size.isInfinite() && from.isFinite() && until.isFinite()) {\n val r1 = nextDouble() * (until / 2 - from / 2)\n from + r1 + r1\n } else {\n from + nextDouble() * size\n }\n return if (r >= until) until.nextDown() else r\n }\n\n /**\n * Gets the next random [Float] value uniformly distributed between 0 (inclusive) and 1 (exclusive).\n */\n public open fun nextFloat(): Float = nextBits(24) / (1 shl 24).toFloat()\n\n /**\n * Fills a subrange of the specified byte [array] starting from [fromIndex] inclusive and ending [toIndex] exclusive\n * with random bytes.\n *\n * @return [array] with the subrange filled with random bytes.\n */\n public open fun nextBytes(array: ByteArray, fromIndex: Int = 0, toIndex: Int = array.size): ByteArray {\n require(fromIndex in 0..array.size && toIndex in 0..array.size) { \"fromIndex ($fromIndex) or toIndex ($toIndex) are out of range: 0..${array.size}.\" }\n require(fromIndex <= toIndex) { \"fromIndex ($fromIndex) must be not greater than toIndex ($toIndex).\" }\n\n val steps = (toIndex - fromIndex) / 4\n\n var position = fromIndex\n repeat(steps) {\n val v = nextInt()\n array[position] = v.toByte()\n array[position + 1] = v.ushr(8).toByte()\n array[position + 2] = v.ushr(16).toByte()\n array[position + 3] = v.ushr(24).toByte()\n position += 4\n }\n\n val remainder = toIndex - position\n val vr = nextBits(remainder * 8)\n for (i in 0 until remainder) {\n array[position + i] = vr.ushr(i * 8).toByte()\n }\n\n return array\n }\n\n /**\n * Fills the specified byte [array] with random bytes and returns it.\n *\n * @return [array] filled with random bytes.\n */\n public open fun nextBytes(array: ByteArray): ByteArray = nextBytes(array, 0, array.size)\n\n /**\n * Creates a byte array of the specified [size], filled with random bytes.\n */\n public open fun nextBytes(size: Int): ByteArray = nextBytes(ByteArray(size))\n\n\n /**\n * The default random number generator.\n *\n * On JVM this generator is thread-safe, its methods can be invoked from multiple threads.\n *\n * @sample samples.random.Randoms.defaultRandom\n */\n companion object Default : Random() {\n\n private val defaultRandom: Random = defaultPlatformRandom()\n\n override fun nextBits(bitCount: Int): Int = defaultRandom.nextBits(bitCount)\n override fun nextInt(): Int = defaultRandom.nextInt()\n override fun nextInt(until: Int): Int = defaultRandom.nextInt(until)\n override fun nextInt(from: Int, until: Int): Int = defaultRandom.nextInt(from, until)\n\n override fun nextLong(): Long = defaultRandom.nextLong()\n override fun nextLong(until: Long): Long = defaultRandom.nextLong(until)\n override fun nextLong(from: Long, until: Long): Long = defaultRandom.nextLong(from, until)\n\n override fun nextBoolean(): Boolean = defaultRandom.nextBoolean()\n\n override fun nextDouble(): Double = defaultRandom.nextDouble()\n override fun nextDouble(until: Double): Double = defaultRandom.nextDouble(until)\n override fun nextDouble(from: Double, until: Double): Double = defaultRandom.nextDouble(from, until)\n\n override fun nextFloat(): Float = defaultRandom.nextFloat()\n\n override fun nextBytes(array: ByteArray): ByteArray = defaultRandom.nextBytes(array)\n override fun nextBytes(size: Int): ByteArray = defaultRandom.nextBytes(size)\n override fun nextBytes(array: ByteArray, fromIndex: Int, toIndex: Int): ByteArray = defaultRandom.nextBytes(array, fromIndex, toIndex)\n\n @Deprecated(\"Use Default companion object instead\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"DEPRECATION_ERROR\")\n @kotlin.jvm.JvmField\n public val Companion: Random.Companion = Random.Companion\n }\n\n @Deprecated(\"Use Default companion object instead\", level = DeprecationLevel.HIDDEN)\n public object Companion : Random() {\n override fun nextBits(bitCount: Int): Int = Default.nextBits(bitCount)\n }\n}\n\n/**\n * Returns a repeatable random number generator seeded with the given [seed] `Int` value.\n *\n * Two generators with the same seed produce the same sequence of values within the same version of Kotlin runtime.\n *\n * *Note:* Future versions of Kotlin may change the algorithm of this seeded number generator so that it will return\n * a sequence of values different from the current one for a given seed.\n *\n * @sample samples.random.Randoms.seededRandom\n */\n@SinceKotlin(\"1.3\")\npublic fun Random(seed: Int): Random = XorWowRandom(seed, seed.shr(31))\n\n/**\n * Returns a repeatable random number generator seeded with the given [seed] `Long` value.\n *\n * Two generators with the same seed produce the same sequence of values within the same version of Kotlin runtime.\n *\n * *Note:* Future versions of Kotlin may change the algorithm of this seeded number generator so that it will return\n * a sequence of values different from the current one for a given seed.\n *\n * @sample samples.random.Randoms.seededRandom\n */\n@SinceKotlin(\"1.3\")\npublic fun Random(seed: Long): Random = XorWowRandom(seed.toInt(), seed.shr(32).toInt())\n\n\n\n/**\n * Gets the next random `Int` from the random number generator in the specified [range].\n *\n * Generates an `Int` random value uniformly distributed in the specified [range]:\n * from `range.start` inclusive to `range.endInclusive` inclusive.\n *\n * @throws IllegalArgumentException if [range] is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun Random.nextInt(range: IntRange): Int = when {\n range.isEmpty() -> throw IllegalArgumentException(\"Cannot get random in empty range: $range\")\n range.last < Int.MAX_VALUE -> nextInt(range.first, range.last + 1)\n range.first > Int.MIN_VALUE -> nextInt(range.first - 1, range.last) + 1\n else -> nextInt()\n}\n\n/**\n * Gets the next random `Long` from the random number generator in the specified [range].\n *\n * Generates a `Long` random value uniformly distributed in the specified [range]:\n * from `range.start` inclusive to `range.endInclusive` inclusive.\n *\n * @throws IllegalArgumentException if [range] is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun Random.nextLong(range: LongRange): Long = when {\n range.isEmpty() -> throw IllegalArgumentException(\"Cannot get random in empty range: $range\")\n range.last < Long.MAX_VALUE -> nextLong(range.first, range.last + 1)\n range.first > Long.MIN_VALUE -> nextLong(range.first - 1, range.last) + 1\n else -> nextLong()\n}\n\n\ninternal expect fun defaultPlatformRandom(): Random\ninternal expect fun doubleFromParts(hi26: Int, low27: Int): Double\n\n@UseExperimental(ExperimentalStdlibApi::class)\ninternal fun fastLog2(value: Int): Int = 31 - value.countLeadingZeroBits()\n\n/** Takes upper [bitCount] bits (0..32) from this number. */\ninternal fun Int.takeUpperBits(bitCount: Int): Int =\n this.ushr(32 - bitCount) and (-bitCount).shr(31)\n\ninternal fun checkRangeBounds(from: Int, until: Int) = require(until > from) { boundsErrorMessage(from, until) }\ninternal fun checkRangeBounds(from: Long, until: Long) = require(until > from) { boundsErrorMessage(from, until) }\ninternal fun checkRangeBounds(from: Double, until: Double) = require(until > from) { boundsErrorMessage(from, until) }\n\ninternal fun boundsErrorMessage(from: Any, until: Any) = \"Random range is empty: [$from, $until).\"\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.random\n\n\n/**\n * Gets the next random [UInt] from the random number generator.\n *\n * Generates a [UInt] random value uniformly distributed between [UInt.MIN_VALUE] and [UInt.MAX_VALUE] (inclusive).\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextUInt(): UInt = nextInt().toUInt()\n\n/**\n * Gets the next random [UInt] from the random number generator less than the specified [until] bound.\n *\n * Generates a [UInt] random value uniformly distributed between `0` (inclusive) and the specified [until] bound (exclusive).\n *\n * @throws IllegalArgumentException if [until] is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextUInt(until: UInt): UInt = nextUInt(0u, until)\n\n/**\n * Gets the next random [UInt] from the random number generator in the specified range.\n *\n * Generates a [UInt] random value uniformly distributed between the specified [from] (inclusive) and [until] (exclusive) bounds.\n *\n * @throws IllegalArgumentException if [from] is greater than or equal to [until].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextUInt(from: UInt, until: UInt): UInt {\n checkUIntRangeBounds(from, until)\n\n val signedFrom = from.toInt() xor Int.MIN_VALUE\n val signedUntil = until.toInt() xor Int.MIN_VALUE\n\n val signedResult = nextInt(signedFrom, signedUntil) xor Int.MIN_VALUE\n return signedResult.toUInt()\n}\n\n/**\n * Gets the next random [UInt] from the random number generator in the specified [range].\n *\n * Generates a [UInt] random value uniformly distributed in the specified [range]:\n * from `range.start` inclusive to `range.endInclusive` inclusive.\n *\n * @throws IllegalArgumentException if [range] is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextUInt(range: UIntRange): UInt = when {\n range.isEmpty() -> throw IllegalArgumentException(\"Cannot get random in empty range: $range\")\n range.last < UInt.MAX_VALUE -> nextUInt(range.first, range.last + 1u)\n range.first > UInt.MIN_VALUE -> nextUInt(range.first - 1u, range.last) + 1u\n else -> nextUInt()\n}\n\n/**\n * Gets the next random [ULong] from the random number generator.\n *\n * Generates a [ULong] random value uniformly distributed between [ULong.MIN_VALUE] and [ULong.MAX_VALUE] (inclusive).\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextULong(): ULong = nextLong().toULong()\n\n/**\n * Gets the next random [ULong] from the random number generator less than the specified [until] bound.\n *\n * Generates a [ULong] random value uniformly distributed between `0` (inclusive) and the specified [until] bound (exclusive).\n *\n * @throws IllegalArgumentException if [until] is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextULong(until: ULong): ULong = nextULong(0uL, until)\n\n/**\n * Gets the next random [ULong] from the random number generator in the specified range.\n *\n * Generates a [ULong] random value uniformly distributed between the specified [from] (inclusive) and [until] (exclusive) bounds.\n *\n * @throws IllegalArgumentException if [from] is greater than or equal to [until].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextULong(from: ULong, until: ULong): ULong {\n checkULongRangeBounds(from, until)\n\n val signedFrom = from.toLong() xor Long.MIN_VALUE\n val signedUntil = until.toLong() xor Long.MIN_VALUE\n\n val signedResult = nextLong(signedFrom, signedUntil) xor Long.MIN_VALUE\n return signedResult.toULong()\n}\n\n/**\n * Gets the next random [ULong] from the random number generator in the specified [range].\n *\n * Generates a [ULong] random value uniformly distributed in the specified [range]:\n * from `range.start` inclusive to `range.endInclusive` inclusive.\n *\n * @throws IllegalArgumentException if [range] is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextULong(range: ULongRange): ULong = when {\n range.isEmpty() -> throw IllegalArgumentException(\"Cannot get random in empty range: $range\")\n range.last < ULong.MAX_VALUE -> nextULong(range.first, range.last + 1u)\n range.first > ULong.MIN_VALUE -> nextULong(range.first - 1u, range.last) + 1u\n else -> nextULong()\n}\n\n/**\n * Fills the specified unsigned byte [array] with random bytes and returns it.\n *\n * @return [array] filled with random bytes.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextUBytes(array: UByteArray): UByteArray {\n nextBytes(array.asByteArray())\n return array\n}\n\n/**\n * Creates an unsigned byte array of the specified [size], filled with random bytes.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextUBytes(size: Int): UByteArray = nextBytes(size).asUByteArray()\n\n/**\n * Fills a subrange of the specified `UByte` [array] starting from [fromIndex] inclusive and ending [toIndex] exclusive with random UBytes.\n *\n * @return [array] with the subrange filled with random bytes.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Random.nextUBytes(array: UByteArray, fromIndex: Int = 0, toIndex: Int = array.size): UByteArray {\n nextBytes(array.asByteArray(), fromIndex, toIndex)\n return array\n}\n\n\n@ExperimentalUnsignedTypes\ninternal fun checkUIntRangeBounds(from: UInt, until: UInt) = require(until > from) { boundsErrorMessage(from, until) }\n@ExperimentalUnsignedTypes\ninternal fun checkULongRangeBounds(from: ULong, until: ULong) = require(until > from) { boundsErrorMessage(from, until) }\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.random\n\n/**\n * Random number generator, using Marsaglia's \"xorwow\" algorithm\n *\n * Cycles after 2^192 - 2^32 repetitions.\n *\n * For more details, see Marsaglia, George (July 2003). \"Xorshift RNGs\". Journal of Statistical Software. 8 (14). doi:10.18637/jss.v008.i14\n *\n * Available at https://www.jstatsoft.org/v08/i14/paper\n *\n */\ninternal class XorWowRandom\ninternal constructor(\n private var x: Int,\n private var y: Int,\n private var z: Int,\n private var w: Int,\n private var v: Int,\n private var addend: Int\n) : Random() {\n\n internal constructor(seed1: Int, seed2: Int) :\n this(seed1, seed2, 0, 0, seed1.inv(), (seed1 shl 10) xor (seed2 ushr 4))\n\n init {\n require((x or y or z or w or v) != 0) { \"Initial state must have at least one non-zero element.\" }\n\n // some trivial seeds can produce several values with zeroes in upper bits, so we discard first 64\n repeat(64) { nextInt() }\n }\n\n override fun nextInt(): Int {\n // Equivalent to the xorxow algorithm\n // From Marsaglia, G. 2003. Xorshift RNGs. J. Statis. Soft. 8, 14, p. 5\n var t = x\n t = t xor (t ushr 2)\n x = y\n y = z\n z = w\n val v0 = v\n w = v0\n t = (t xor (t shl 1)) xor v0 xor (v0 shl 4)\n v = t\n addend += 362437\n return t + addend\n }\n\n override fun nextBits(bitCount: Int): Int =\n nextInt().takeUpperBits(bitCount)\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"RangesKt\")\n\npackage kotlin.ranges\n\n/**\n * Represents a range of [Comparable] values.\n */\nprivate open class ComparableRange>(\n override val start: T,\n override val endInclusive: T\n) : ClosedRange {\n\n override fun equals(other: Any?): Boolean {\n return other is ComparableRange<*> && (isEmpty() && other.isEmpty() ||\n start == other.start && endInclusive == other.endInclusive)\n }\n\n override fun hashCode(): Int {\n return if (isEmpty()) -1 else 31 * start.hashCode() + endInclusive.hashCode()\n }\n\n override fun toString(): String = \"$start..$endInclusive\"\n}\n\n/**\n * Creates a range from this [Comparable] value to the specified [that] value.\n *\n * This value needs to be smaller than [that] value, otherwise the returned range will be empty.\n * @sample samples.ranges.Ranges.rangeFromComparable\n */\npublic operator fun > T.rangeTo(that: T): ClosedRange = ComparableRange(this, that)\n\n\n/**\n * Represents a range of floating point numbers.\n * Extends [ClosedRange] interface providing custom operation [lessThanOrEquals] for comparing values of range domain type.\n *\n * This interface is implemented by floating point ranges returned by [Float.rangeTo] and [Double.rangeTo] operators to\n * achieve IEEE-754 comparison order instead of total order of floating point numbers.\n */\n@SinceKotlin(\"1.1\")\npublic interface ClosedFloatingPointRange> : ClosedRange {\n override fun contains(value: T): Boolean = lessThanOrEquals(start, value) && lessThanOrEquals(value, endInclusive)\n override fun isEmpty(): Boolean = !lessThanOrEquals(start, endInclusive)\n\n /**\n * Compares two values of range domain type and returns true if first is less than or equal to second.\n */\n fun lessThanOrEquals(a: T, b: T): Boolean\n}\n\n\n/**\n * A closed range of values of type `Double`.\n *\n * Numbers are compared with the ends of this range according to IEEE-754.\n */\nprivate class ClosedDoubleRange(\n start: Double,\n endInclusive: Double\n) : ClosedFloatingPointRange {\n private val _start = start\n private val _endInclusive = endInclusive\n override val start: Double get() = _start\n override val endInclusive: Double get() = _endInclusive\n\n override fun lessThanOrEquals(a: Double, b: Double): Boolean = a <= b\n\n override fun contains(value: Double): Boolean = value >= _start && value <= _endInclusive\n override fun isEmpty(): Boolean = !(_start <= _endInclusive)\n\n override fun equals(other: Any?): Boolean {\n return other is ClosedDoubleRange && (isEmpty() && other.isEmpty() ||\n _start == other._start && _endInclusive == other._endInclusive)\n }\n\n override fun hashCode(): Int {\n return if (isEmpty()) -1 else 31 * _start.hashCode() + _endInclusive.hashCode()\n }\n\n override fun toString(): String = \"$_start..$_endInclusive\"\n}\n\n/**\n * Creates a range from this [Double] value to the specified [that] value.\n *\n * Numbers are compared with the ends of this range according to IEEE-754.\n * @sample samples.ranges.Ranges.rangeFromDouble\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Double.rangeTo(that: Double): ClosedFloatingPointRange = ClosedDoubleRange(this, that)\n\n\n/**\n * A closed range of values of type `Float`.\n *\n * Numbers are compared with the ends of this range according to IEEE-754.\n */\nprivate class ClosedFloatRange(\n start: Float,\n endInclusive: Float\n) : ClosedFloatingPointRange {\n private val _start = start\n private val _endInclusive = endInclusive\n override val start: Float get() = _start\n override val endInclusive: Float get() = _endInclusive\n\n override fun lessThanOrEquals(a: Float, b: Float): Boolean = a <= b\n\n override fun contains(value: Float): Boolean = value >= _start && value <= _endInclusive\n override fun isEmpty(): Boolean = !(_start <= _endInclusive)\n\n override fun equals(other: Any?): Boolean {\n return other is ClosedFloatRange && (isEmpty() && other.isEmpty() ||\n _start == other._start && _endInclusive == other._endInclusive)\n }\n\n override fun hashCode(): Int {\n return if (isEmpty()) -1 else 31 * _start.hashCode() + _endInclusive.hashCode()\n }\n\n override fun toString(): String = \"$_start..$_endInclusive\"\n}\n\n/**\n * Creates a range from this [Float] value to the specified [that] value.\n *\n * Numbers are compared with the ends of this range according to IEEE-754.\n * @sample samples.ranges.Ranges.rangeFromFloat\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Float.rangeTo(that: Float): ClosedFloatingPointRange = ClosedFloatRange(this, that)\n\n\n/**\n * Returns `true` if this iterable range contains the specified [element].\n *\n * Always returns `false` if the [element] is `null`.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline operator fun R.contains(element: T?): Boolean where T : Any, R : Iterable, R : ClosedRange =\n element != null && contains(element)\n\n\ninternal fun checkStepIsPositive(isPositive: Boolean, step: Number) {\n if (!isPositive) throw IllegalArgumentException(\"Step must be positive, was: $step.\")\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"KClasses\")\n@file:Suppress(\"UNCHECKED_CAST\")\n\npackage kotlin.reflect\n\nimport kotlin.internal.LowPriorityInOverloadResolution\n\n/**\n * Casts the given [value] to the class represented by this [KClass] object.\n * Throws an exception if the value is `null` or if it is not an instance of this class.\n *\n * This is an experimental function that behaves as a similar function from kotlin.reflect.full on JVM.\n *\n * @see [KClass.isInstance]\n * @see [KClass.safeCast]\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@LowPriorityInOverloadResolution\nfun KClass.cast(value: Any?): T {\n if (!isInstance(value)) throw ClassCastException(\"Value cannot be cast to $qualifiedName\")\n return value as T\n}\n\n/**\n * Casts the given [value] to the class represented by this [KClass] object.\n * Returns `null` if the value is `null` or if it is not an instance of this class.\n *\n * This is an experimental function that behaves as a similar function from kotlin.reflect.full on JVM.\n *\n * @see [KClass.isInstance]\n * @see [KClass.cast]\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@LowPriorityInOverloadResolution\nfun KClass.safeCast(value: Any?): T? {\n return if (isInstance(value)) value as T else null\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.reflect\n\n/**\n * Returns a runtime representation of the given reified type [T] as an instance of [KType].\n */\n@Suppress(\"unused\") // KT-12448\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic inline fun typeOf(): KType =\n throw UnsupportedOperationException(\"This function is implemented as an intrinsic on all supported platforms.\")\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n\npackage kotlin.text\n\n/**\n * An object to which char sequences and values can be appended.\n */\nexpect interface Appendable {\n /**\n * Appends the specified character [value] to this Appendable and returns this instance.\n *\n * @param value the character to append.\n */\n fun append(value: Char): Appendable\n\n /**\n * Appends the specified character sequence [value] to this Appendable and returns this instance.\n *\n * @param value the character sequence to append. If [value] is `null`, then the four characters `\"null\"` are appended to this Appendable.\n */\n fun append(value: CharSequence?): Appendable\n\n /**\n * Appends a subsequence of the specified character sequence [value] to this Appendable and returns this instance.\n *\n * @param value the character sequence from which a subsequence is appended. If [value] is `null`,\n * then characters are appended as if [value] contained the four characters `\"null\"`.\n * @param startIndex the beginning (inclusive) of the subsequence to append.\n * @param endIndex the end (exclusive) of the subsequence to append.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] character sequence indices or when `startIndex > endIndex`.\n */\n fun append(value: CharSequence?, startIndex: Int, endIndex: Int): Appendable\n}\n\n/**\n * Appends a subsequence of the specified character sequence [value] to this Appendable and returns this instance.\n *\n * @param value the character sequence from which a subsequence is appended. If [value] is `null`,\n * then characters are appended as if [value] contained the four characters `\"null\"`.\n * @param startIndex the beginning (inclusive) of the subsequence to append.\n * @param endIndex the end (exclusive) of the subsequence to append.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] character sequence indices or when `startIndex > endIndex`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun T.appendRange(value: CharSequence?, startIndex: Int, endIndex: Int): T {\n @Suppress(\"UNCHECKED_CAST\")\n return append(value, startIndex, endIndex) as T\n}\n\n/**\n * Appends all arguments to the given [Appendable].\n */\npublic fun T.append(vararg value: CharSequence?): T {\n for (item in value)\n append(item)\n return this\n}\n\n\ninternal fun Appendable.appendElement(element: T, transform: ((T) -> CharSequence)?) {\n when {\n transform != null -> append(transform(element))\n element is CharSequence? -> append(element)\n element is Char -> append(element)\n else -> append(element.toString())\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CharsKt\")\n\npackage kotlin.text\n\n/**\n * Concatenates this Char and a String.\n *\n * @sample samples.text.Chars.plus\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Char.plus(other: String): String = this.toString() + other\n\n/**\n * Returns `true` if this character is equal to the [other] character, optionally ignoring character case.\n *\n * @param ignoreCase `true` to ignore character case when comparing characters. By default `false`.\n *\n * Two characters are considered the same ignoring case if at least one of the following is `true`:\n * - The two characters are the same (as compared by the == operator)\n * - Applying the method [toUpperCase] to each character produces the same result\n * - Applying the method [toLowerCase] to each character produces the same result\n *\n * @sample samples.text.Chars.equals\n */\npublic fun Char.equals(other: Char, ignoreCase: Boolean = false): Boolean {\n if (this == other) return true\n if (!ignoreCase) return false\n\n if (this.toUpperCase() == other.toUpperCase()) return true\n if (this.toLowerCase() == other.toLowerCase()) return true\n return false\n}\n\n/**\n * Returns `true` if this character is a Unicode surrogate code unit.\n */\npublic fun Char.isSurrogate(): Boolean = this in Char.MIN_SURROGATE..Char.MAX_SURROGATE\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n\npackage kotlin.text\n\n/**\n * Trims leading whitespace characters followed by [marginPrefix] from every line of a source string and removes\n * the first and the last lines if they are blank (notice difference blank vs empty).\n *\n * Doesn't affect a line if it doesn't contain [marginPrefix] except the first and the last blank lines.\n *\n * Doesn't preserve the original line endings.\n *\n * @param marginPrefix non-blank string, which is used as a margin delimiter. Default is `|` (pipe character).\n *\n * @sample samples.text.Strings.trimMargin\n * @see trimIndent\n * @see kotlin.text.isWhitespace\n */\npublic fun String.trimMargin(marginPrefix: String = \"|\"): String =\n replaceIndentByMargin(\"\", marginPrefix)\n\n/**\n * Detects indent by [marginPrefix] as it does [trimMargin] and replace it with [newIndent].\n *\n * @param marginPrefix non-blank string, which is used as a margin delimiter. Default is `|` (pipe character).\n */\npublic fun String.replaceIndentByMargin(newIndent: String = \"\", marginPrefix: String = \"|\"): String {\n require(marginPrefix.isNotBlank()) { \"marginPrefix must be non-blank string.\" }\n val lines = lines()\n\n return lines.reindent(length + newIndent.length * lines.size, getIndentFunction(newIndent), { line ->\n val firstNonWhitespaceIndex = line.indexOfFirst { !it.isWhitespace() }\n\n when {\n firstNonWhitespaceIndex == -1 -> null\n line.startsWith(marginPrefix, firstNonWhitespaceIndex) -> line.substring(firstNonWhitespaceIndex + marginPrefix.length)\n else -> null\n }\n })\n}\n\n/**\n * Detects a common minimal indent of all the input lines, removes it from every line and also removes the first and the last\n * lines if they are blank (notice difference blank vs empty).\n *\n * Note that blank lines do not affect the detected indent level.\n *\n * In case if there are non-blank lines with no leading whitespace characters (no indent at all) then the\n * common indent is 0, and therefore this function doesn't change the indentation.\n *\n * Doesn't preserve the original line endings.\n *\n * @sample samples.text.Strings.trimIndent\n * @see trimMargin\n * @see kotlin.text.isBlank\n */\npublic fun String.trimIndent(): String = replaceIndent(\"\")\n\n/**\n * Detects a common minimal indent like it does [trimIndent] and replaces it with the specified [newIndent].\n */\npublic fun String.replaceIndent(newIndent: String = \"\"): String {\n val lines = lines()\n\n val minCommonIndent = lines\n .filter(String::isNotBlank)\n .map(String::indentWidth)\n .min() ?: 0\n\n return lines.reindent(length + newIndent.length * lines.size, getIndentFunction(newIndent), { line -> line.drop(minCommonIndent) })\n}\n\n/**\n * Prepends [indent] to every line of the original string.\n *\n * Doesn't preserve the original line endings.\n */\npublic fun String.prependIndent(indent: String = \" \"): String =\n lineSequence()\n .map {\n when {\n it.isBlank() -> {\n when {\n it.length < indent.length -> indent\n else -> it\n }\n }\n else -> indent + it\n }\n }\n .joinToString(\"\\n\")\n\nprivate fun String.indentWidth(): Int = indexOfFirst { !it.isWhitespace() }.let { if (it == -1) length else it }\n\nprivate fun getIndentFunction(indent: String) = when {\n indent.isEmpty() -> { line: String -> line }\n else -> { line: String -> indent + line }\n}\n\nprivate inline fun List.reindent(\n resultSizeEstimate: Int,\n indentAddFunction: (String) -> String,\n indentCutFunction: (String) -> String?\n): String {\n val lastIndex = lastIndex\n return mapIndexedNotNull { index, value ->\n if ((index == 0 || index == lastIndex) && value.isBlank())\n null\n else\n indentCutFunction(value)?.let(indentAddFunction) ?: value\n }\n .joinTo(StringBuilder(resultSizeEstimate), \"\\n\")\n .toString()\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\n/**\n * Defines names for Unicode symbols used in proper Typography.\n */\npublic object Typography {\n /** The character " \u2013 quotation mark */\n public const val quote: Char = '\\u0022'\n /** The character $ \u2013 dollar sign */\n public const val dollar: Char = '\\u0024'\n /** The character & \u2013 ampersand */\n public const val amp: Char = '\\u0026'\n /** The character < \u2013 less-than sign */\n public const val less: Char = '\\u003C'\n /** The character > \u2013 greater-than sign */\n public const val greater: Char = '\\u003E'\n /** The non-breaking space character */\n public const val nbsp: Char = '\\u00A0'\n /** The character × */\n public const val times: Char = '\\u00D7'\n /** The character ¢ */\n public const val cent: Char = '\\u00A2'\n /** The character £ */\n public const val pound: Char = '\\u00A3'\n /** The character § */\n public const val section: Char = '\\u00A7'\n /** The character © */\n public const val copyright: Char = '\\u00A9'\n /** The character « */\n public const val leftGuillemete: Char = '\\u00AB'\n /** The character » */\n public const val rightGuillemete: Char = '\\u00BB'\n /** The character ® */\n public const val registered: Char = '\\u00AE'\n /** The character ° */\n public const val degree: Char = '\\u00B0'\n /** The character ± */\n public const val plusMinus: Char = '\\u00B1'\n /** The character ¶ */\n public const val paragraph: Char = '\\u00B6'\n /** The character · */\n public const val middleDot: Char = '\\u00B7'\n /** The character ½ */\n public const val half: Char = '\\u00BD'\n /** The character – */\n public const val ndash: Char = '\\u2013'\n /** The character — */\n public const val mdash: Char = '\\u2014'\n /** The character ‘ */\n public const val leftSingleQuote: Char = '\\u2018'\n /** The character ’ */\n public const val rightSingleQuote: Char = '\\u2019'\n /** The character ‚ */\n public const val lowSingleQuote: Char = '\\u201A'\n /** The character “ */\n public const val leftDoubleQuote: Char = '\\u201C'\n /** The character ” */\n public const val rightDoubleQuote: Char = '\\u201D'\n /** The character „ */\n public const val lowDoubleQuote: Char = '\\u201E'\n /** The character † */\n public const val dagger: Char = '\\u2020'\n /** The character ‡ */\n public const val doubleDagger: Char = '\\u2021'\n /** The character • */\n public const val bullet: Char = '\\u2022'\n /** The character … */\n public const val ellipsis: Char = '\\u2026'\n /** The character ′ */\n public const val prime: Char = '\\u2032'\n /** The character ″ */\n public const val doublePrime: Char = '\\u2033'\n /** The character € */\n public const val euro: Char = '\\u20AC'\n /** The character ™ */\n public const val tm: Char = '\\u2122'\n /** The character ≈ */\n public const val almostEqual: Char = '\\u2248'\n /** The character ≠ */\n public const val notEqual: Char = '\\u2260'\n /** The character ≤ */\n public const val lessOrEqual: Char = '\\u2264'\n /** The character ≥ */\n public const val greaterOrEqual: Char = '\\u2265'\n}","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\n/**\n * Represents a collection of captured groups in a single match of a regular expression.\n *\n * This collection has size of `groupCount + 1` where `groupCount` is the count of groups in the regular expression.\n * Groups are indexed from 1 to `groupCount` and group with the index 0 corresponds to the entire match.\n *\n * An element of the collection at the particular index can be `null`,\n * if the corresponding group in the regular expression is optional and\n * there was no match captured by that group.\n */\npublic interface MatchGroupCollection : Collection {\n\n /** Returns a group with the specified [index].\n *\n * @return An instance of [MatchGroup] if the group with the specified [index] was matched or `null` otherwise.\n *\n * Groups are indexed from 1 to the count of groups in the regular expression. A group with the index 0\n * corresponds to the entire match.\n */\n public operator fun get(index: Int): MatchGroup?\n}\n\n/**\n * Extends [MatchGroupCollection] by introducing a way to get matched groups by name, when regex supports it.\n */\n@SinceKotlin(\"1.1\")\npublic interface MatchNamedGroupCollection : MatchGroupCollection {\n /**\n * Returns a named group with the specified [name].\n * @return An instance of [MatchGroup] if the group with the specified [name] was matched or `null` otherwise.\n * @throws IllegalArgumentException if there is no group with the specified [name] defined in the regex pattern.\n * @throws UnsupportedOperationException if getting named groups isn't supported on the current platform.\n */\n public operator fun get(name: String): MatchGroup?\n}\n\n/**\n * Represents the results from a single regular expression match.\n */\npublic interface MatchResult {\n /** The range of indices in the original string where match was captured. */\n public val range: IntRange\n /** The substring from the input string captured by this match. */\n public val value: String\n /**\n * A collection of groups matched by the regular expression.\n *\n * This collection has size of `groupCount + 1` where `groupCount` is the count of groups in the regular expression.\n * Groups are indexed from 1 to `groupCount` and group with the index 0 corresponds to the entire match.\n */\n public val groups: MatchGroupCollection\n /**\n * A list of matched indexed group values.\n *\n * This list has size of `groupCount + 1` where `groupCount` is the count of groups in the regular expression.\n * Groups are indexed from 1 to `groupCount` and group with the index 0 corresponds to the entire match.\n *\n * If the group in the regular expression is optional and there were no match captured by that group,\n * corresponding item in [groupValues] is an empty string.\n *\n * @sample samples.text.Regexps.matchDestructuringToGroupValues\n */\n public val groupValues: List\n\n /**\n * An instance of [MatchResult.Destructured] wrapper providing components for destructuring assignment of group values.\n *\n * component1 corresponds to the value of the first group, component2 \u2014 of the second, and so on.\n *\n * @sample samples.text.Regexps.matchDestructuringToGroupValues\n */\n public val destructured: Destructured get() = Destructured(this)\n\n /** Returns a new [MatchResult] with the results for the next match, starting at the position\n * at which the last match ended (at the character after the last matched character).\n */\n public fun next(): MatchResult?\n\n /**\n * Provides components for destructuring assignment of group values.\n *\n * [component1] corresponds to the value of the first group, [component2] \u2014 of the second, and so on.\n *\n * If the group in the regular expression is optional and there were no match captured by that group,\n * corresponding component value is an empty string.\n *\n * @sample samples.text.Regexps.matchDestructuringToGroupValues\n */\n public class Destructured internal constructor(public val match: MatchResult) {\n @kotlin.internal.InlineOnly\n public operator inline fun component1(): String = match.groupValues[1]\n @kotlin.internal.InlineOnly\n public operator inline fun component2(): String = match.groupValues[2]\n @kotlin.internal.InlineOnly\n public operator inline fun component3(): String = match.groupValues[3]\n @kotlin.internal.InlineOnly\n public operator inline fun component4(): String = match.groupValues[4]\n @kotlin.internal.InlineOnly\n public operator inline fun component5(): String = match.groupValues[5]\n @kotlin.internal.InlineOnly\n public operator inline fun component6(): String = match.groupValues[6]\n @kotlin.internal.InlineOnly\n public operator inline fun component7(): String = match.groupValues[7]\n @kotlin.internal.InlineOnly\n public operator inline fun component8(): String = match.groupValues[8]\n @kotlin.internal.InlineOnly\n public operator inline fun component9(): String = match.groupValues[9]\n @kotlin.internal.InlineOnly\n public operator inline fun component10(): String = match.groupValues[10]\n\n /**\n * Returns destructured group values as a list of strings.\n * First value in the returned list corresponds to the value of the first group, and so on.\n *\n * @sample samples.text.Regexps.matchDestructuringToGroupValues\n */\n public fun toList(): List = match.groupValues.subList(1, match.groupValues.size)\n }\n}","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.time\n\nimport kotlin.math.abs\n\n@UseExperimental(ExperimentalTime::class)\nprivate inline val storageUnit get() = DurationUnit.NANOSECONDS\n\n/**\n * Represents the amount of time one instant of time is away from another instant.\n *\n * A negative duration is possible in a situation when the second instant is earlier than the first one.\n * An infinite duration value [Duration.INFINITE] can be used to represent infinite timeouts.\n *\n * To construct a duration use either the extension function [toDuration],\n * or the extension properties [hours], [minutes], [seconds], and so on,\n * available on [Int], [Long], and [Double] numeric types.\n *\n * To get the value of this duration expressed in a particular [duration units][DurationUnit]\n * use the functions [toInt], [toLong], and [toDouble]\n * or the properties [inHours], [inMinutes], [inSeconds], [inNanoseconds], and so on.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\npublic inline class Duration internal constructor(internal val value: Double) : Comparable {\n// TODO: backend fails on init block, wait for KT-28055\n\n// init {\n// require(_value.isNaN().not())\n// }\n\n companion object {\n /** The duration equal to exactly 0 seconds. */\n public val ZERO: Duration = Duration(0.0)\n\n /** The duration whose value is positive infinity. It is useful for representing timeouts that should never expire. */\n public val INFINITE: Duration = Duration(Double.POSITIVE_INFINITY)\n\n /** Converts the given time duration [value] expressed in the specified [sourceUnit] into the specified [targetUnit]. */\n public fun convert(value: Double, sourceUnit: DurationUnit, targetUnit: DurationUnit): Double =\n convertDurationUnit(value, sourceUnit, targetUnit)\n }\n\n // arithmetic operators\n\n /** Returns the negative of this value. */\n public operator fun unaryMinus(): Duration = Duration(-value)\n\n /** Returns a duration whose value is the sum of this and [other] duration values. */\n public operator fun plus(other: Duration): Duration = Duration(value + other.value)\n\n /** Returns a duration whose value is the difference between this and [other] duration values. */\n public operator fun minus(other: Duration): Duration = Duration(value - other.value)\n\n /** Returns a duration whose value is this duration value multiplied by the given [scale] number. */\n public operator fun times(scale: Int): Duration = Duration(value * scale)\n\n /** Returns a duration whose value is this duration value multiplied by the given [scale] number. */\n public operator fun times(scale: Double): Duration = Duration(value * scale)\n\n /** Returns a duration whose value is this duration value divided by the given [scale] number. */\n public operator fun div(scale: Int): Duration = Duration(value / scale)\n\n /** Returns a duration whose value is this duration value divided by the given [scale] number. */\n public operator fun div(scale: Double): Duration = Duration(value / scale)\n\n /** Returns a number that is the ratio of this and [other] duration values. */\n public operator fun div(other: Duration): Double = this.value / other.value\n\n /** Returns true, if the duration value is less than zero. */\n public fun isNegative(): Boolean = value < 0\n\n /** Returns true, if the duration value is greater than zero. */\n public fun isPositive(): Boolean = value > 0\n\n /** Returns true, if the duration value is infinite. */\n public fun isInfinite(): Boolean = value.isInfinite()\n\n /** Returns true, if the duration value is finite. */\n public fun isFinite(): Boolean = value.isFinite()\n\n /** Returns the absolute value of this value. The returned value is always non-negative. */\n public val absoluteValue: Duration get() = if (isNegative()) -this else this\n\n override fun compareTo(other: Duration): Int = this.value.compareTo(other.value)\n\n\n // splitting to components\n\n /**\n * Splits this duration into days, hours, minutes, seconds, and nanoseconds and executes the given [action] with these components.\n * The result of [action] is returned as the result of this function.\n *\n * - `nanoseconds` represents the whole number of nanoseconds in this duration, and its absolute value is less than 1_000_000_000;\n * - `seconds` represents the whole number of seconds in this duration, and its absolute value is less than 60;\n * - `minutes` represents the whole number of minutes in this duration, and its absolute value is less than 60;\n * - `hours` represents the whole number of hours in this duration, and its absolute value is less than 24;\n * - `days` represents the whole number of days in this duration.\n * If the value doesn't fit in [Int] range, i.e. it's greater than [Int.MAX_VALUE] or less than [Int.MIN_VALUE],\n * it is coerced into that range.\n */\n public inline fun toComponents(action: (days: Int, hours: Int, minutes: Int, seconds: Int, nanoseconds: Int) -> T): T =\n action(inDays.toInt(), hoursComponent, minutesComponent, secondsComponent, nanosecondsComponent)\n\n /**\n * Splits this duration into hours, minutes, seconds, and nanoseconds and executes the given [action] with these components.\n * The result of [action] is returned as the result of this function.\n *\n * - `nanoseconds` represents the whole number of nanoseconds in this duration, and its absolute value is less than 1_000_000_000;\n * - `seconds` represents the whole number of seconds in this duration, and its absolute value is less than 60;\n * - `minutes` represents the whole number of minutes in this duration, and its absolute value is less than 60;\n * - `hours` represents the whole number of hours in this duration.\n * If the value doesn't fit in [Int] range, i.e. it's greater than [Int.MAX_VALUE] or less than [Int.MIN_VALUE],\n * it is coerced into that range.\n */\n public inline fun toComponents(action: (hours: Int, minutes: Int, seconds: Int, nanoseconds: Int) -> T): T =\n action(inHours.toInt(), minutesComponent, secondsComponent, nanosecondsComponent)\n\n /**\n * Splits this duration into minutes, seconds, and nanoseconds and executes the given [action] with these components.\n * The result of [action] is returned as the result of this function.\n *\n * - `nanoseconds` represents the whole number of nanoseconds in this duration, and its absolute value is less than 1_000_000_000;\n * - `seconds` represents the whole number of seconds in this duration, and its absolute value is less than 60;\n * - `minutes` represents the whole number of minutes in this duration.\n * If the value doesn't fit in [Int] range, i.e. it's greater than [Int.MAX_VALUE] or less than [Int.MIN_VALUE],\n * it is coerced into that range.\n */\n public inline fun toComponents(action: (minutes: Int, seconds: Int, nanoseconds: Int) -> T): T =\n action(inMinutes.toInt(), secondsComponent, nanosecondsComponent)\n\n /**\n * Splits this duration into seconds, and nanoseconds and executes the given [action] with these components.\n * The result of [action] is returned as the result of this function.\n *\n * - `nanoseconds` represents the whole number of nanoseconds in this duration, and its absolute value is less than 1_000_000_000;\n * - `seconds` represents the whole number of seconds in this duration.\n * If the value doesn't fit in [Long] range, i.e. it's greater than [Long.MAX_VALUE] or less than [Long.MIN_VALUE],\n * it is coerced into that range.\n */\n public inline fun toComponents(action: (seconds: Long, nanoseconds: Int) -> T): T =\n action(inSeconds.toLong(), nanosecondsComponent)\n\n @PublishedApi\n internal val hoursComponent: Int get() = (inHours % 24).toInt()\n @PublishedApi\n internal val minutesComponent: Int get() = (inMinutes % 60).toInt()\n @PublishedApi\n internal val secondsComponent: Int get() = (inSeconds % 60).toInt()\n @PublishedApi\n internal val nanosecondsComponent: Int get() = (inNanoseconds % 1e9).toInt()\n\n\n // conversion to units\n\n /** Returns the value of this duration expressed as a [Double] number of the specified [unit]. */\n public fun toDouble(unit: DurationUnit): Double = convertDurationUnit(value, storageUnit, unit)\n\n /**\n * Returns the value of this duration expressed as a [Long] number of the specified [unit].\n *\n * If the value doesn't fit in the range of [Long] type, it is coerced into that range, see the conversion [Double.toLong] for details.\n */\n public fun toLong(unit: DurationUnit): Long = toDouble(unit).toLong()\n\n /**\n * Returns the value of this duration expressed as an [Int] number of the specified [unit].\n *\n * If the value doesn't fit in the range of [Int] type, it is coerced into that range, see the conversion [Double.toInt] for details.\n */\n public fun toInt(unit: DurationUnit): Int = toDouble(unit).toInt()\n\n /** The value of this duration expressed as a [Double] number of days. */\n public val inDays: Double get() = toDouble(DurationUnit.DAYS)\n\n /** The value of this duration expressed as a [Double] number of hours. */\n public val inHours: Double get() = toDouble(DurationUnit.HOURS)\n\n /** The value of this duration expressed as a [Double] number of minutes. */\n public val inMinutes: Double get() = toDouble(DurationUnit.MINUTES)\n\n /** The value of this duration expressed as a [Double] number of seconds. */\n public val inSeconds: Double get() = toDouble(DurationUnit.SECONDS)\n\n /** The value of this duration expressed as a [Double] number of milliseconds. */\n public val inMilliseconds: Double get() = toDouble(DurationUnit.MILLISECONDS)\n\n /** The value of this duration expressed as a [Double] number of microseconds. */\n public val inMicroseconds: Double get() = toDouble(DurationUnit.MICROSECONDS)\n\n /** The value of this duration expressed as a [Double] number of nanoseconds. */\n public val inNanoseconds: Double get() = toDouble(DurationUnit.NANOSECONDS)\n\n // shortcuts\n\n /**\n * Returns the value of this duration expressed as a [Long] number of nanoseconds.\n *\n * If the value doesn't fit in the range of [Long] type, it is coerced into that range, see the conversion [Double.toLong] for details.\n *\n * The range of durations that can be expressed as a `Long` number of nanoseconds is approximately \u00b1292 years.\n */\n public fun toLongNanoseconds(): Long = toLong(DurationUnit.NANOSECONDS)\n\n /**\n * Returns the value of this duration expressed as a [Long] number of milliseconds.\n *\n * The value is coerced to the range of [Long] type, if it doesn't fit in that range, see the conversion [Double.toLong] for details.\n *\n * The range of durations that can be expressed as a `Long` number of milliseconds is approximately \u00b1292 million years.\n */\n public fun toLongMilliseconds(): Long = toLong(DurationUnit.MILLISECONDS)\n\n /**\n * Returns a string representation of this duration value expressed in the unit which yields the most compact and readable number value.\n *\n * Special cases:\n * - zero duration is formatted as `\"0s\"`\n * - the infinite duration is formatted as `\"Infinity\"` without unit\n * - very small durations (less than 1e-15 s) are expressed in seconds and formatted in scientific notation\n * - very big durations (more than 1e+7 days) are expressed in days and formatted in scientific notation\n *\n * @return the value of duration in the automatically determined unit followed by that unit abbreviated name: `d`, `h`, `m`, `s`, `ms`, `us`, or `ns`.\n *\n * @sample samples.time.Durations.toStringDefault\n */\n override fun toString(): String = when {\n isInfinite() -> value.toString()\n value == 0.0 -> \"0s\"\n else -> {\n val absNs = absoluteValue.inNanoseconds\n var scientific = false\n var maxDecimals = 0\n val unit = when {\n absNs < 1e-6 -> DurationUnit.SECONDS.also { scientific = true }\n absNs < 1 -> DurationUnit.NANOSECONDS.also { maxDecimals = 7 }\n absNs < 1e3 -> DurationUnit.NANOSECONDS\n absNs < 1e6 -> DurationUnit.MICROSECONDS\n absNs < 1e9 -> DurationUnit.MILLISECONDS\n absNs < 1000e9 -> DurationUnit.SECONDS\n absNs < 60_000e9 -> DurationUnit.MINUTES\n absNs < 3600_000e9 -> DurationUnit.HOURS\n absNs < 86400e9 * 1e7 -> DurationUnit.DAYS\n else -> DurationUnit.DAYS.also { scientific = true }\n }\n val value = toDouble(unit)\n when {\n scientific -> formatScientific(value)\n maxDecimals > 0 -> formatUpToDecimals(value, maxDecimals)\n else -> formatToExactDecimals(value, precision(abs(value)))\n } + unit.shortName()\n }\n }\n\n private fun precision(value: Double): Int = when {\n value < 1 -> 3\n value < 10 -> 2\n value < 100 -> 1\n else -> 0\n }\n\n /**\n * Returns a string representation of this duration value expressed in the given [unit]\n * and formatted with the specified [decimals] number of digits after decimal point.\n *\n * Special cases:\n * - the infinite duration is formatted as `\"Infinity\"` without unit\n *\n * @return the value of duration in the specified [unit] followed by that unit abbreviated name: `d`, `h`, `m`, `s`, `ms`, `us`, or `ns`.\n *\n * @throws IllegalArgumentException if [decimals] is less than zero.\n *\n * @sample samples.time.Durations.toStringDecimals\n */\n public fun toString(unit: DurationUnit, decimals: Int = 0): String {\n require(decimals >= 0) { \"decimals must be not negative, but was $decimals\" }\n if (isInfinite()) return value.toString()\n val number = toDouble(unit)\n return when {\n abs(number) < 1e14 -> formatToExactDecimals(number, decimals.coerceAtMost(12))\n else -> formatScientific(number)\n } + unit.shortName()\n }\n\n\n /**\n * Returns an ISO-8601 based string representation of this duration.\n *\n * The returned value is presented in the format `PThHmMs.fS`, where `h`, `m`, `s` are the integer components of this duration (see [toComponents])\n * and `f` is a fractional part of second. Depending on the roundness of the value the fractional part can be formatted with either\n * 0, 3, 6, or 9 decimal digits.\n *\n * If the hours component absolute value of this duration is greater than [Int.MAX_VALUE], it is replaced with [Int.MAX_VALUE],\n * so the infinite duration is formatted as `\"PT2147483647H\".\n *\n * Negative durations are indicated with the sign `-` in the beginning of the returned string, for example, `\"-PT5M30S\"`.\n *\n * @sample samples.time.Durations.toIsoString\n */\n @UseExperimental(ExperimentalStdlibApi::class)\n public fun toIsoString(): String = buildString {\n if (isNegative()) append('-')\n append(\"PT\")\n absoluteValue.toComponents { hours, minutes, seconds, nanoseconds ->\n val hasHours = hours != 0\n val hasSeconds = seconds != 0 || nanoseconds != 0\n val hasMinutes = minutes != 0 || (hasSeconds && hasHours)\n if (hasHours) {\n append(hours).append('H')\n }\n if (hasMinutes) {\n append(minutes).append('M')\n }\n if (hasSeconds || (!hasHours && !hasMinutes)) {\n append(seconds)\n if (nanoseconds != 0) {\n append('.')\n val nss = nanoseconds.toString().padStart(9, '0')\n when {\n nanoseconds % 1_000_000 == 0 -> appendRange(nss, 0, 3)\n nanoseconds % 1_000 == 0 -> appendRange(nss, 0, 6)\n else -> append(nss)\n }\n }\n append('S')\n }\n }\n }\n\n}\n\n// constructing from number of units\n// extension functions\n\n/** Returns a [Duration] equal to this [Int] number of the specified [unit]. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic fun Int.toDuration(unit: DurationUnit): Duration = toDouble().toDuration(unit)\n\n/** Returns a [Duration] equal to this [Long] number of the specified [unit]. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic fun Long.toDuration(unit: DurationUnit): Duration = toDouble().toDuration(unit)\n\n/** Returns a [Duration] equal to this [Double] number of the specified [unit]. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic fun Double.toDuration(unit: DurationUnit): Duration = Duration(convertDurationUnit(this, unit, storageUnit))\n\n// constructing from number of units\n// extension properties\n\n/** Returns a [Duration] equal to this [Int] number of nanoseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Int.nanoseconds get() = toDuration(DurationUnit.NANOSECONDS)\n\n/** Returns a [Duration] equal to this [Long] number of nanoseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Long.nanoseconds get() = toDuration(DurationUnit.NANOSECONDS)\n\n/** Returns a [Duration] equal to this [Double] number of nanoseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Double.nanoseconds get() = toDuration(DurationUnit.NANOSECONDS)\n\n/** Returns a [Duration] equal to this [Int] number of microseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Int.microseconds get() = toDuration(DurationUnit.MICROSECONDS)\n\n/** Returns a [Duration] equal to this [Long] number of microseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Long.microseconds get() = toDuration(DurationUnit.MICROSECONDS)\n\n/** Returns a [Duration] equal to this [Double] number of microseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Double.microseconds get() = toDuration(DurationUnit.MICROSECONDS)\n\n/** Returns a [Duration] equal to this [Int] number of milliseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Int.milliseconds get() = toDuration(DurationUnit.MILLISECONDS)\n\n/** Returns a [Duration] equal to this [Long] number of milliseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Long.milliseconds get() = toDuration(DurationUnit.MILLISECONDS)\n\n/** Returns a [Duration] equal to this [Double] number of milliseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Double.milliseconds get() = toDuration(DurationUnit.MILLISECONDS)\n\n/** Returns a [Duration] equal to this [Int] number of seconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Int.seconds get() = toDuration(DurationUnit.SECONDS)\n\n/** Returns a [Duration] equal to this [Long] number of seconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Long.seconds get() = toDuration(DurationUnit.SECONDS)\n\n/** Returns a [Duration] equal to this [Double] number of seconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Double.seconds get() = toDuration(DurationUnit.SECONDS)\n\n/** Returns a [Duration] equal to this [Int] number of minutes. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Int.minutes get() = toDuration(DurationUnit.MINUTES)\n\n/** Returns a [Duration] equal to this [Long] number of minutes. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Long.minutes get() = toDuration(DurationUnit.MINUTES)\n\n/** Returns a [Duration] equal to this [Double] number of minutes. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Double.minutes get() = toDuration(DurationUnit.MINUTES)\n\n/** Returns a [Duration] equal to this [Int] number of hours. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Int.hours get() = toDuration(DurationUnit.HOURS)\n\n/** Returns a [Duration] equal to this [Long] number of hours. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Long.hours get() = toDuration(DurationUnit.HOURS)\n\n/** Returns a [Duration] equal to this [Double] number of hours. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Double.hours get() = toDuration(DurationUnit.HOURS)\n\n/** Returns a [Duration] equal to this [Int] number of days. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Int.days get() = toDuration(DurationUnit.DAYS)\n\n/** Returns a [Duration] equal to this [Long] number of days. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Long.days get() = toDuration(DurationUnit.DAYS)\n\n/** Returns a [Duration] equal to this [Double] number of days. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Double.days get() = toDuration(DurationUnit.DAYS)\n\n\n/** Returns a duration whose value is the specified [duration] value multiplied by this number. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@kotlin.internal.InlineOnly\npublic inline operator fun Int.times(duration: Duration): Duration = duration * this\n\n/** Returns a duration whose value is the specified [duration] value multiplied by this number. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@kotlin.internal.InlineOnly\npublic inline operator fun Double.times(duration: Duration): Duration = duration * this\n\n\ninternal expect fun formatToExactDecimals(value: Double, decimals: Int): String\ninternal expect fun formatUpToDecimals(value: Double, decimals: Int): String\ninternal expect fun formatScientific(value: Double): String","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass()\n@file:kotlin.jvm.JvmName(\"DurationUnitKt\")\n\npackage kotlin.time\n\n\n/**\n * The list of possible time measurement units, in which a duration can be expressed.\n *\n * The smallest time unit is [NANOSECONDS] and the largest is [DAYS], which corresponds to exactly 24 [HOURS].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic expect enum class DurationUnit {\n /**\n * Time unit representing one nanosecond, which is 1/1000 of a microsecond.\n */\n NANOSECONDS,\n /**\n * Time unit representing one microsecond, which is 1/1000 of a millisecond.\n */\n MICROSECONDS,\n /**\n * Time unit representing one millisecond, which is 1/1000 of a second.\n */\n MILLISECONDS,\n /**\n * Time unit representing one second.\n */\n SECONDS,\n /**\n * Time unit representing one minute.\n */\n MINUTES,\n /**\n * Time unit representing one hour.\n */\n HOURS,\n /**\n * Time unit representing one day, which is always equal to 24 hours.\n */\n DAYS;\n}\n\n/** Converts the given time duration [value] expressed in the specified [sourceUnit] into the specified [targetUnit]. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\ninternal expect fun convertDurationUnit(value: Double, sourceUnit: DurationUnit, targetUnit: DurationUnit): Double\n\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\ninternal fun DurationUnit.shortName(): String = when (this) {\n DurationUnit.NANOSECONDS -> \"ns\"\n DurationUnit.MICROSECONDS -> \"us\"\n DurationUnit.MILLISECONDS -> \"ms\"\n DurationUnit.SECONDS -> \"s\"\n DurationUnit.MINUTES -> \"m\"\n DurationUnit.HOURS -> \"h\"\n DurationUnit.DAYS -> \"d\"\n}","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.time\n\nimport kotlin.annotation.AnnotationTarget.*\n\n/**\n * This annotation marks the experimental preview of the standard library API for measuring time and working with durations.\n *\n * > Note that this API is in a preview state and has a very high chance of being changed in the future.\n * Do not use it if you develop a library since your library will become binary incompatible\n * with the future versions of the standard library.\n *\n * Any usage of a declaration annotated with `@ExperimentalTime` must be accepted either by\n * annotating that usage with the [OptIn] annotation, e.g. `@OptIn(ExperimentalTime::class)`,\n * or by using the compiler argument `-Xopt-in=kotlin.time.ExperimentalTime`.\n */\n@Suppress(\"DEPRECATION\")\n@Experimental(level = Experimental.Level.ERROR)\n@RequiresOptIn(level = RequiresOptIn.Level.ERROR)\n@MustBeDocumented\n@Retention(AnnotationRetention.BINARY)\n@Target(\n CLASS,\n ANNOTATION_CLASS,\n PROPERTY,\n FIELD,\n LOCAL_VARIABLE,\n VALUE_PARAMETER,\n CONSTRUCTOR,\n FUNCTION,\n PROPERTY_GETTER,\n PROPERTY_SETTER,\n TYPEALIAS\n)\n@SinceKotlin(\"1.3\")\npublic annotation class ExperimentalTime\n","/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.time\n\n/**\n * A source of time for measuring time intervals.\n *\n * The only operation provided by the time source is [markNow]. It returns a [TimeMark], which can be used to query the elapsed time later.\n *\n * @see [measureTime]\n * @see [measureTimedValue]\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic interface TimeSource {\n /**\n * Marks a point in time on this time source.\n *\n * The returned [TimeMark] instance encapsulates the captured time point and allows querying\n * the duration of time interval [elapsed][TimeMark.elapsedNow] from that point.\n */\n public fun markNow(): TimeMark\n\n /**\n * The most precise time source available in the platform.\n *\n * This time source returns its readings from a source of monotonic time when it is available in a target platform,\n * and resorts to a non-monotonic time source otherwise.\n */\n public object Monotonic : TimeSource by MonotonicTimeSource {\n override fun toString(): String = MonotonicTimeSource.toString()\n }\n\n\n public companion object {\n\n }\n}\n\n/**\n * Represents a time point notched on a particular [TimeSource]. Remains bound to the time source it was taken from\n * and allows querying for the duration of time elapsed from that point (see the function [elapsedNow]).\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic abstract class TimeMark {\n /**\n * Returns the amount of time passed from this mark measured with the time source from which this mark was taken.\n *\n * Note that the value returned by this function can change on subsequent invocations.\n */\n public abstract fun elapsedNow(): Duration\n\n /**\n * Returns a time mark on the same time source that is ahead of this time mark by the specified [duration].\n *\n * The returned time mark is more _late_ when the [duration] is positive, and more _early_ when the [duration] is negative.\n */\n public open operator fun plus(duration: Duration): TimeMark = AdjustedTimeMark(this, duration)\n\n /**\n * Returns a time mark on the same time source that is behind this time mark by the specified [duration].\n *\n * The returned time mark is more _early_ when the [duration] is positive, and more _late_ when the [duration] is negative.\n */\n public open operator fun minus(duration: Duration): TimeMark = plus(-duration)\n\n\n /**\n * Returns true if this time mark has passed according to the time source from which this mark was taken.\n *\n * Note that the value returned by this function can change on subsequent invocations.\n * If the time source is monotonic, it can change only from `false` to `true`, namely, when the time mark becomes behind the current point of the time source.\n */\n public fun hasPassedNow(): Boolean = !elapsedNow().isNegative()\n\n /**\n * Returns false if this time mark has not passed according to the time source from which this mark was taken.\n *\n * Note that the value returned by this function can change on subsequent invocations.\n * If the time source is monotonic, it can change only from `true` to `false`, namely, when the time mark becomes behind the current point of the time source.\n */\n public fun hasNotPassedNow(): Boolean = elapsedNow().isNegative()\n}\n\n\n@ExperimentalTime\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Deprecated(\n \"Subtracting one TimeMark from another is not a well defined operation because these time marks could have been obtained from the different time sources.\",\n level = DeprecationLevel.ERROR\n)\npublic inline operator fun TimeMark.minus(other: TimeMark): Duration = throw Error(\"Operation is disallowed.\")\n\n@ExperimentalTime\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Deprecated(\n \"Comparing one TimeMark to another is not a well defined operation because these time marks could have been obtained from the different time sources.\",\n level = DeprecationLevel.ERROR\n)\npublic inline operator fun TimeMark.compareTo(other: TimeMark): Int = throw Error(\"Operation is disallowed.\")\n\n\n@ExperimentalTime\nprivate class AdjustedTimeMark(val mark: TimeMark, val adjustment: Duration) : TimeMark() {\n override fun elapsedNow(): Duration = mark.elapsedNow() - adjustment\n\n override fun plus(duration: Duration): TimeMark = AdjustedTimeMark(mark, adjustment + duration)\n}\n\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@Deprecated(\"Use TimeSource interface instead.\", ReplaceWith(\"TimeSource\", \"kotlin.time.TimeSource\"))\npublic typealias Clock = TimeSource\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@Deprecated(\"Use TimeMark class instead.\", ReplaceWith(\"TimeMark\", \"kotlin.time.TimeMark\"))\npublic typealias ClockMark = TimeMark\n","/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.time\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\ninternal expect object MonotonicTimeSource : TimeSource\n\n/**\n * An abstract class used to implement time sources that return their readings as [Long] values in the specified [unit].\n *\n * @property unit The unit in which this time source's readings are expressed.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic abstract class AbstractLongTimeSource(protected val unit: DurationUnit) : TimeSource {\n /**\n * This protected method should be overridden to return the current reading of the time source expressed as a [Long] number\n * in the unit specified by the [unit] property.\n */\n protected abstract fun read(): Long\n\n private class LongTimeMark(private val startedAt: Long, private val timeSource: AbstractLongTimeSource, private val offset: Duration) : TimeMark() {\n override fun elapsedNow(): Duration = (timeSource.read() - startedAt).toDuration(timeSource.unit) - offset\n override fun plus(duration: Duration): TimeMark = LongTimeMark(startedAt, timeSource, offset + duration)\n }\n\n override fun markNow(): TimeMark = LongTimeMark(read(), this, Duration.ZERO)\n}\n\n/**\n * An abstract class used to implement time sources that return their readings as [Double] values in the specified [unit].\n *\n * @property unit The unit in which this time source's readings are expressed.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic abstract class AbstractDoubleTimeSource(protected val unit: DurationUnit) : TimeSource {\n /**\n * This protected method should be overridden to return the current reading of the time source expressed as a [Double] number\n * in the unit specified by the [unit] property.\n */\n protected abstract fun read(): Double\n\n private class DoubleTimeMark(private val startedAt: Double, private val timeSource: AbstractDoubleTimeSource, private val offset: Duration) : TimeMark() {\n override fun elapsedNow(): Duration = (timeSource.read() - startedAt).toDuration(timeSource.unit) - offset\n override fun plus(duration: Duration): TimeMark = DoubleTimeMark(startedAt, timeSource, offset + duration)\n }\n\n override fun markNow(): TimeMark = DoubleTimeMark(read(), this, Duration.ZERO)\n}\n\n/**\n * A time source that has programmatically updatable readings. It is useful as a predictable source of time in tests.\n *\n * The current reading value can be advanced by the specified duration amount with the operator [plusAssign]:\n *\n * ```\n * val timeSource = TestTimeSource()\n * timeSource += 10.seconds\n * ```\n *\n * Implementation note: the current reading value is stored as a [Long] number of nanoseconds,\n * thus it's capable to represent a time range of approximately \u00b1292 years.\n * Should the reading value overflow as the result of [plusAssign] operation, an [IllegalStateException] is thrown.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic class TestTimeSource : AbstractLongTimeSource(unit = DurationUnit.NANOSECONDS) {\n private var reading: Long = 0L\n\n override fun read(): Long = reading\n\n /**\n * Advances the current reading value of this time source by the specified [duration].\n *\n * [duration] value is rounded down towards zero when converting it to a [Long] number of nanoseconds.\n * For example, if the duration being added is `0.6.nanoseconds`, the reading doesn't advance because\n * the duration value is rounded to zero nanoseconds.\n *\n * @throws IllegalStateException when the reading value overflows as the result of this operation.\n */\n public operator fun plusAssign(duration: Duration) {\n val delta = duration.toDouble(unit)\n val longDelta = delta.toLong()\n reading = if (longDelta != Long.MIN_VALUE && longDelta != Long.MAX_VALUE) {\n // when delta fits in long, add it as long\n val newReading = reading + longDelta\n if (reading xor longDelta >= 0 && reading xor newReading < 0) overflow(duration)\n newReading\n } else {\n // when delta is greater than long, add it as double\n val newReading = reading + delta\n if (newReading > Long.MAX_VALUE || newReading < Long.MIN_VALUE) overflow(duration)\n newReading.toLong()\n }\n }\n\n private fun overflow(duration: Duration) {\n throw IllegalStateException(\"TestTimeSource will overflow if its reading ${reading}ns is advanced by $duration.\")\n }\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@Deprecated(\"Use TimeSource.Monotonic instead.\", ReplaceWith(\"TimeSource.Monotonic\", \"kotlin.time.TimeSource\"))\npublic typealias MonoClock = TimeSource.Monotonic\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@Deprecated(\"Use AbstractLongTimeSource instead.\", ReplaceWith(\"AbstractLongTimeSource\", \"kotlin.time.AbstractLongTimeSource\"))\npublic typealias AbstractLongClock = AbstractLongTimeSource\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@Deprecated(\"Use AbstractDoubleTimeSource instead.\", ReplaceWith(\"AbstractDoubleTimeSource\", \"kotlin.time.AbstractDoubleTimeSource\"))\npublic typealias AbstractDoubleClock = AbstractDoubleTimeSource\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@Deprecated(\"Use TestTimeSource instead.\", ReplaceWith(\"TestTimeSource\", \"kotlin.time.TestTimeSource\"))\npublic typealias TestClock = TestTimeSource\n","/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.time\n\nimport kotlin.contracts.*\n\n/**\n * Executes the given function [block] and returns the duration of elapsed time interval.\n *\n * The elapsed time is measured with [TimeSource.Monotonic].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic inline fun measureTime(block: () -> Unit): Duration {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return TimeSource.Monotonic.measureTime(block)\n}\n\n\n/**\n * Executes the given function [block] and returns the duration of elapsed time interval.\n *\n * The elapsed time is measured with the specified `this` [TimeSource] instance.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic inline fun TimeSource.measureTime(block: () -> Unit): Duration {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n val mark = markNow()\n block()\n return mark.elapsedNow()\n}\n\n\n/**\n * Data class representing a result of executing an action, along with the duration of elapsed time interval.\n *\n * @property value the result of the action.\n * @property duration the time elapsed to execute the action.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic data class TimedValue(val value: T, val duration: Duration)\n\n/**\n * Executes the given function [block] and returns an instance of [TimedValue] class, containing both\n * the result of the function execution and the duration of elapsed time interval.\n *\n * The elapsed time is measured with [TimeSource.Monotonic].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic inline fun measureTimedValue(block: () -> T): TimedValue {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n return TimeSource.Monotonic.measureTimedValue(block)\n}\n\n/**\n * Executes the given [block] and returns an instance of [TimedValue] class, containing both\n * the result of function execution and the duration of elapsed time interval.\n *\n * The elapsed time is measured with the specified `this` [TimeSource] instance.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic inline fun TimeSource.measureTimedValue(block: () -> T): TimedValue {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n val mark = markNow()\n val result = block()\n return TimedValue(result, mark.elapsedNow())\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\nimport kotlin.internal.InlineOnly\n\n\n/**\n * Returns a hash code value for the object or zero if the object is `null`.\n *\n * @see Any.hashCode\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\npublic inline fun Any?.hashCode(): Int = this?.hashCode() ?: 0\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\n\n/**\n * Represents a version of the Kotlin standard library.\n *\n * [major], [minor] and [patch] are integer components of a version,\n * they must be non-negative and not greater than 255 ([MAX_COMPONENT_VALUE]).\n *\n * @constructor Creates a version from all three components.\n */\n@SinceKotlin(\"1.1\")\npublic class KotlinVersion(val major: Int, val minor: Int, val patch: Int) : Comparable {\n /**\n * Creates a version from [major] and [minor] components, leaving [patch] component zero.\n */\n public constructor(major: Int, minor: Int) : this(major, minor, 0)\n\n private val version = versionOf(major, minor, patch)\n\n private fun versionOf(major: Int, minor: Int, patch: Int): Int {\n require(major in 0..MAX_COMPONENT_VALUE && minor in 0..MAX_COMPONENT_VALUE && patch in 0..MAX_COMPONENT_VALUE) {\n \"Version components are out of range: $major.$minor.$patch\"\n }\n return major.shl(16) + minor.shl(8) + patch\n }\n\n /**\n * Returns the string representation of this version\n */\n override fun toString(): String = \"$major.$minor.$patch\"\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n val otherVersion = (other as? KotlinVersion) ?: return false\n return this.version == otherVersion.version\n }\n\n override fun hashCode(): Int = version\n\n override fun compareTo(other: KotlinVersion): Int = version - other.version\n\n /**\n * Returns `true` if this version is not less than the version specified\n * with the provided [major] and [minor] components.\n */\n public fun isAtLeast(major: Int, minor: Int): Boolean = // this.version >= versionOf(major, minor, 0)\n this.major > major || (this.major == major &&\n this.minor >= minor)\n\n /**\n * Returns `true` if this version is not less than the version specified\n * with the provided [major], [minor] and [patch] components.\n */\n public fun isAtLeast(major: Int, minor: Int, patch: Int): Boolean = // this.version >= versionOf(major, minor, patch)\n this.major > major || (this.major == major &&\n (this.minor > minor || this.minor == minor &&\n this.patch >= patch))\n\n companion object {\n /**\n * Maximum value a version component can have, a constant value 255.\n */\n // NOTE: Must be placed before CURRENT because its initialization requires this field being initialized in JS\n public const val MAX_COMPONENT_VALUE = 255\n\n /**\n * Returns the current version of the Kotlin standard library.\n */\n @kotlin.jvm.JvmField\n public val CURRENT: KotlinVersion = KotlinVersion(1, 3, 72) // value is written here automatically during build\n }\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"LateinitKt\")\n@file:Suppress(\"unused\")\n\npackage kotlin\n\nimport kotlin.internal.InlineOnly\nimport kotlin.internal.AccessibleLateinitPropertyLiteral\nimport kotlin.reflect.KProperty0\n\n/**\n * Returns `true` if this lateinit property has been assigned a value, and `false` otherwise.\n *\n * Cannot be used in an inline function, to avoid binary compatibility issues.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\ninline val @receiver:AccessibleLateinitPropertyLiteral KProperty0<*>.isInitialized: Boolean\n get() = throw NotImplementedError(\"Implementation is intrinsic\")\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"LazyKt\")\n@file:kotlin.jvm.JvmMultifileClass\n\npackage kotlin\n\nimport kotlin.reflect.KProperty\n\n/**\n * Represents a value with lazy initialization.\n *\n * To create an instance of [Lazy] use the [lazy] function.\n */\npublic interface Lazy {\n /**\n * Gets the lazily initialized value of the current Lazy instance.\n * Once the value was initialized it must not change during the rest of lifetime of this Lazy instance.\n */\n public val value: T\n\n /**\n * Returns `true` if a value for this Lazy instance has been already initialized, and `false` otherwise.\n * Once this function has returned `true` it stays `true` for the rest of lifetime of this Lazy instance.\n */\n public fun isInitialized(): Boolean\n}\n\n/**\n * Creates a new instance of the [Lazy] that is already initialized with the specified [value].\n */\npublic fun lazyOf(value: T): Lazy = InitializedLazyImpl(value)\n\n/**\n * An extension to delegate a read-only property of type [T] to an instance of [Lazy].\n *\n * This extension allows to use instances of Lazy for property delegation:\n * `val property: String by lazy { initializer }`\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Lazy.getValue(thisRef: Any?, property: KProperty<*>): T = value\n\n/**\n * Specifies how a [Lazy] instance synchronizes initialization among multiple threads.\n */\npublic enum class LazyThreadSafetyMode {\n\n /**\n * Locks are used to ensure that only a single thread can initialize the [Lazy] instance.\n */\n SYNCHRONIZED,\n\n /**\n * Initializer function can be called several times on concurrent access to uninitialized [Lazy] instance value,\n * but only the first returned value will be used as the value of [Lazy] instance.\n */\n PUBLICATION,\n\n /**\n * No locks are used to synchronize an access to the [Lazy] instance value; if the instance is accessed from multiple threads, its behavior is undefined.\n *\n * This mode should not be used unless the [Lazy] instance is guaranteed never to be initialized from more than one thread.\n */\n NONE,\n}\n\n\ninternal object UNINITIALIZED_VALUE\n\n// internal to be called from lazy in JS\ninternal class UnsafeLazyImpl(initializer: () -> T) : Lazy, Serializable {\n private var initializer: (() -> T)? = initializer\n private var _value: Any? = UNINITIALIZED_VALUE\n\n override val value: T\n get() {\n if (_value === UNINITIALIZED_VALUE) {\n _value = initializer!!()\n initializer = null\n }\n @Suppress(\"UNCHECKED_CAST\")\n return _value as T\n }\n\n override fun isInitialized(): Boolean = _value !== UNINITIALIZED_VALUE\n\n override fun toString(): String = if (isInitialized()) value.toString() else \"Lazy value not initialized yet.\"\n\n private fun writeReplace(): Any = InitializedLazyImpl(value)\n}\n\ninternal class InitializedLazyImpl(override val value: T) : Lazy, Serializable {\n\n override fun isInitialized(): Boolean = true\n\n override fun toString(): String = value.toString()\n\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"NumbersKt\")\npackage kotlin\n\n/**\n * Counts the number of set bits in the binary representation of this [Int] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun Int.countOneBits(): Int\n\n/**\n * Counts the number of consecutive most significant bits that are zero in the binary representation of this [Int] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun Int.countLeadingZeroBits(): Int\n\n/**\n * Counts the number of consecutive least significant bits that are zero in the binary representation of this [Int] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun Int.countTrailingZeroBits(): Int\n\n/**\n * Returns a number having a single bit set in the position of the most significant set bit of this [Int] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun Int.takeHighestOneBit(): Int\n\n/**\n * Returns a number having a single bit set in the position of the least significant set bit of this [Int] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun Int.takeLowestOneBit(): Int\n\n/**\n * Rotates the binary representation of this [Int] number left by the specified [bitCount] number of bits.\n * The most significant bits pushed out from the left side reenter the number as the least significant bits on the right side.\n *\n * Rotating the number left by a negative bit count is the same as rotating it right by the negated bit count:\n * `number.rotateLeft(-n) == number.rotateRight(n)`\n *\n * Rotating by a multiple of [Int.SIZE_BITS] (32) returns the same number, or more generally\n * `number.rotateLeft(n) == number.rotateLeft(n % 32)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun Int.rotateLeft(bitCount: Int): Int\n\n\n/**\n * Rotates the binary representation of this [Int] number right by the specified [bitCount] number of bits.\n * The least significant bits pushed out from the right side reenter the number as the most significant bits on the left side.\n *\n * Rotating the number right by a negative bit count is the same as rotating it left by the negated bit count:\n * `number.rotateRight(-n) == number.rotateLeft(n)`\n *\n * Rotating by a multiple of [Int.SIZE_BITS] (32) returns the same number, or more generally\n * `number.rotateRight(n) == number.rotateRight(n % 32)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun Int.rotateRight(bitCount: Int): Int\n\n\n/**\n * Counts the number of set bits in the binary representation of this [Long] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun Long.countOneBits(): Int\n\n/**\n * Counts the number of consecutive most significant bits that are zero in the binary representation of this [Long] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun Long.countLeadingZeroBits(): Int\n\n/**\n * Counts the number of consecutive least significant bits that are zero in the binary representation of this [Long] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun Long.countTrailingZeroBits(): Int\n\n/**\n * Returns a number having a single bit set in the position of the most significant set bit of this [Long] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun Long.takeHighestOneBit(): Long\n\n/**\n * Returns a number having a single bit set in the position of the least significant set bit of this [Long] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun Long.takeLowestOneBit(): Long\n\n/**\n * Rotates the binary representation of this [Long] number left by the specified [bitCount] number of bits.\n * The most significant bits pushed out from the left side reenter the number as the least significant bits on the right side.\n *\n * Rotating the number left by a negative bit count is the same as rotating it right by the negated bit count:\n * `number.rotateLeft(-n) == number.rotateRight(n)`\n *\n * Rotating by a multiple of [Long.SIZE_BITS] (64) returns the same number, or more generally\n * `number.rotateLeft(n) == number.rotateLeft(n % 64)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun Long.rotateLeft(bitCount: Int): Long\n\n/**\n * Rotates the binary representation of this [Long] number right by the specified [bitCount] number of bits.\n * The least significant bits pushed out from the right side reenter the number as the most significant bits on the left side.\n *\n * Rotating the number right by a negative bit count is the same as rotating it left by the negated bit count:\n * `number.rotateRight(-n) == number.rotateLeft(n)`\n *\n * Rotating by a multiple of [Long.SIZE_BITS] (64) returns the same number, or more generally\n * `number.rotateRight(n) == number.rotateRight(n % 64)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic expect fun Long.rotateRight(bitCount: Int): Long\n\n/**\n * Counts the number of set bits in the binary representation of this [Byte] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun Byte.countOneBits(): Int = (toInt() and 0xFF).countOneBits()\n\n/**\n * Counts the number of consecutive most significant bits that are zero in the binary representation of this [Byte] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun Byte.countLeadingZeroBits(): Int = (toInt() and 0xFF).countLeadingZeroBits() - (Int.SIZE_BITS - Byte.SIZE_BITS)\n\n/**\n * Counts the number of consecutive least significant bits that are zero in the binary representation of this [Byte] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun Byte.countTrailingZeroBits(): Int = (toInt() or 0x100).countTrailingZeroBits()\n\n/**\n * Returns a number having a single bit set in the position of the most significant set bit of this [Byte] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun Byte.takeHighestOneBit(): Byte = (toInt() and 0xFF).takeHighestOneBit().toByte()\n\n/**\n * Returns a number having a single bit set in the position of the least significant set bit of this [Byte] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun Byte.takeLowestOneBit(): Byte = toInt().takeLowestOneBit().toByte()\n\n\n/**\n * Rotates the binary representation of this [Byte] number left by the specified [bitCount] number of bits.\n * The most significant bits pushed out from the left side reenter the number as the least significant bits on the right side.\n *\n * Rotating the number left by a negative bit count is the same as rotating it right by the negated bit count:\n * `number.rotateLeft(-n) == number.rotateRight(n)`\n *\n * Rotating by a multiple of [Byte.SIZE_BITS] (8) returns the same number, or more generally\n * `number.rotateLeft(n) == number.rotateLeft(n % 8)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun Byte.rotateLeft(bitCount: Int): Byte =\n (toInt().shl(bitCount and 7) or (toInt() and 0xFF).ushr(8 - (bitCount and 7))).toByte()\n\n/**\n * Rotates the binary representation of this [Byte] number right by the specified [bitCount] number of bits.\n * The least significant bits pushed out from the right side reenter the number as the most significant bits on the left side.\n *\n * Rotating the number right by a negative bit count is the same as rotating it left by the negated bit count:\n * `number.rotateRight(-n) == number.rotateLeft(n)`\n *\n * Rotating by a multiple of [Byte.SIZE_BITS] (8) returns the same number, or more generally\n * `number.rotateRight(n) == number.rotateRight(n % 8)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun Byte.rotateRight(bitCount: Int): Byte =\n (toInt().shl(8 - (bitCount and 7)) or (toInt() and 0xFF).ushr(bitCount and 7)).toByte()\n\n/**\n * Counts the number of set bits in the binary representation of this [Short] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun Short.countOneBits(): Int = (toInt() and 0xFFFF).countOneBits()\n\n/**\n * Counts the number of consecutive most significant bits that are zero in the binary representation of this [Short] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun Short.countLeadingZeroBits(): Int =\n (toInt() and 0xFFFF).countLeadingZeroBits() - (Int.SIZE_BITS - Short.SIZE_BITS)\n\n/**\n * Counts the number of consecutive least significant bits that are zero in the binary representation of this [Short] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun Short.countTrailingZeroBits(): Int = (toInt() or 0x10000).countTrailingZeroBits()\n\n/**\n * Returns a number having a single bit set in the position of the most significant set bit of this [Short] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun Short.takeHighestOneBit(): Short = (toInt() and 0xFFFF).takeHighestOneBit().toShort()\n\n/**\n * Returns a number having a single bit set in the position of the least significant set bit of this [Short] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun Short.takeLowestOneBit(): Short = toInt().takeLowestOneBit().toShort()\n\n\n/**\n * Rotates the binary representation of this [Short] number left by the specified [bitCount] number of bits.\n * The most significant bits pushed out from the left side reenter the number as the least significant bits on the right side.\n *\n * Rotating the number left by a negative bit count is the same as rotating it right by the negated bit count:\n * `number.rotateLeft(-n) == number.rotateRight(n)`\n *\n * Rotating by a multiple of [Short.SIZE_BITS] (16) returns the same number, or more generally\n * `number.rotateLeft(n) == number.rotateLeft(n % 16)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun Short.rotateLeft(bitCount: Int): Short =\n (toInt().shl(bitCount and 15) or (toInt() and 0xFFFF).ushr(16 - (bitCount and 15))).toShort()\n\n/**\n * Rotates the binary representation of this [Short] number right by the specified [bitCount] number of bits.\n * The least significant bits pushed out from the right side reenter the number as the most significant bits on the left side.\n *\n * Rotating the number right by a negative bit count is the same as rotating it left by the negated bit count:\n * `number.rotateRight(-n) == number.rotateLeft(n)`\n *\n * Rotating by a multiple of [Short.SIZE_BITS] (16) returns the same number, or more generally\n * `number.rotateRight(n) == number.rotateRight(n % 16)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun Short.rotateRight(bitCount: Int): Short =\n (toInt().shl(16 - (bitCount and 15)) or (toInt() and 0xFFFF).ushr(bitCount and 15)).toShort()\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin\nimport kotlin.internal.RequireKotlin\nimport kotlin.internal.RequireKotlinVersionKind\n\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.2\")\n@Suppress(\"INVISIBLE_MEMBER\", \"INVISIBLE_REFERENCE\")\n@RequireKotlin(\"1.2.30\", level = DeprecationLevel.HIDDEN, versionKind = RequireKotlinVersionKind.COMPILER_VERSION)\npublic inline fun suspend(noinline block: suspend () -> R): suspend () -> R = block\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"TuplesKt\")\n\npackage kotlin\n\n\n/**\n * Represents a generic pair of two values.\n *\n * There is no meaning attached to values in this class, it can be used for any purpose.\n * Pair exhibits value semantics, i.e. two pairs are equal if both components are equal.\n *\n * An example of decomposing it into values:\n * @sample samples.misc.Tuples.pairDestructuring\n *\n * @param A type of the first value.\n * @param B type of the second value.\n * @property first First value.\n * @property second Second value.\n * @constructor Creates a new instance of Pair.\n */\npublic data class Pair(\n public val first: A,\n public val second: B\n) : Serializable {\n\n /**\n * Returns string representation of the [Pair] including its [first] and [second] values.\n */\n public override fun toString(): String = \"($first, $second)\"\n}\n\n/**\n * Creates a tuple of type [Pair] from this and [that].\n *\n * This can be useful for creating [Map] literals with less noise, for example:\n * @sample samples.collections.Maps.Instantiation.mapFromPairs\n */\npublic infix fun A.to(that: B): Pair = Pair(this, that)\n\n/**\n * Converts this pair into a list.\n * @sample samples.misc.Tuples.pairToList\n */\npublic fun Pair.toList(): List = listOf(first, second)\n\n/**\n * Represents a triad of values\n *\n * There is no meaning attached to values in this class, it can be used for any purpose.\n * Triple exhibits value semantics, i.e. two triples are equal if all three components are equal.\n * An example of decomposing it into values:\n * @sample samples.misc.Tuples.tripleDestructuring\n *\n * @param A type of the first value.\n * @param B type of the second value.\n * @param C type of the third value.\n * @property first First value.\n * @property second Second value.\n * @property third Third value.\n */\npublic data class Triple(\n public val first: A,\n public val second: B,\n public val third: C\n) : Serializable {\n\n /**\n * Returns string representation of the [Triple] including its [first], [second] and [third] values.\n */\n public override fun toString(): String = \"($first, $second, $third)\"\n}\n\n/**\n * Converts this triple into a list.\n * @sample samples.misc.Tuples.tripleToList\n */\npublic fun Triple.toList(): List = listOf(first, second, third)\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.ranges\n\n\n\nimport kotlin.internal.*\n\n/**\n * A range of values of type `UInt`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic class UIntRange(start: UInt, endInclusive: UInt) : UIntProgression(start, endInclusive, 1), ClosedRange {\n override val start: UInt get() = first\n override val endInclusive: UInt get() = last\n\n override fun contains(value: UInt): Boolean = first <= value && value <= last\n\n override fun isEmpty(): Boolean = first > last\n\n override fun equals(other: Any?): Boolean =\n other is UIntRange && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * first.toInt() + last.toInt())\n\n override fun toString(): String = \"$first..$last\"\n\n companion object {\n /** An empty range of values of type UInt. */\n public val EMPTY: UIntRange = UIntRange(UInt.MAX_VALUE, UInt.MIN_VALUE)\n }\n}\n\n/**\n * A progression of values of type `UInt`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic open class UIntProgression\ninternal constructor(\n start: UInt,\n endInclusive: UInt,\n step: Int\n) : Iterable {\n init {\n if (step == 0.toInt()) throw kotlin.IllegalArgumentException(\"Step must be non-zero.\")\n if (step == Int.MIN_VALUE) throw kotlin.IllegalArgumentException(\"Step must be greater than Int.MIN_VALUE to avoid overflow on negation.\")\n }\n\n /**\n * The first element in the progression.\n */\n public val first: UInt = start\n\n /**\n * The last element in the progression.\n */\n public val last: UInt = getProgressionLastElement(start, endInclusive, step)\n\n /**\n * The step of the progression.\n */\n public val step: Int = step\n\n override fun iterator(): UIntIterator = UIntProgressionIterator(first, last, step)\n\n /** Checks if the progression is empty. */\n public open fun isEmpty(): Boolean = if (step > 0) first > last else first < last\n\n override fun equals(other: Any?): Boolean =\n other is UIntProgression && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last && step == other.step)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (31 * first.toInt() + last.toInt()) + step.toInt())\n\n override fun toString(): String = if (step > 0) \"$first..$last step $step\" else \"$first downTo $last step ${-step}\"\n\n companion object {\n /**\n * Creates UIntProgression within the specified bounds of a closed range.\n\n * The progression starts with the [rangeStart] value and goes toward the [rangeEnd] value not excluding it, with the specified [step].\n * In order to go backwards the [step] must be negative.\n *\n * [step] must be greater than `Int.MIN_VALUE` and not equal to zero.\n */\n public fun fromClosedRange(rangeStart: UInt, rangeEnd: UInt, step: Int): UIntProgression = UIntProgression(rangeStart, rangeEnd, step)\n }\n}\n\n\n/**\n * An iterator over a progression of values of type `UInt`.\n * @property step the number by which the value is incremented on each step.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\nprivate class UIntProgressionIterator(first: UInt, last: UInt, step: Int) : UIntIterator() {\n private val finalElement = last\n private var hasNext: Boolean = if (step > 0) first <= last else first >= last\n private val step = step.toUInt() // use 2-complement math for negative steps\n private var next = if (hasNext) first else finalElement\n\n override fun hasNext(): Boolean = hasNext\n\n override fun nextUInt(): UInt {\n val value = next\n if (value == finalElement) {\n if (!hasNext) throw kotlin.NoSuchElementException()\n hasNext = false\n } else {\n next += step\n }\n return value\n }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.collections\n\n/** An iterator over a sequence of values of type `UByte`. */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic abstract class UByteIterator : Iterator {\n override final fun next() = nextUByte()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextUByte(): UByte\n}\n\n/** An iterator over a sequence of values of type `UShort`. */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic abstract class UShortIterator : Iterator {\n override final fun next() = nextUShort()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextUShort(): UShort\n}\n\n/** An iterator over a sequence of values of type `UInt`. */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic abstract class UIntIterator : Iterator {\n override final fun next() = nextUInt()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextUInt(): UInt\n}\n\n/** An iterator over a sequence of values of type `ULong`. */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic abstract class ULongIterator : Iterator {\n override final fun next() = nextULong()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextULong(): ULong\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.ranges\n\n\n\nimport kotlin.internal.*\n\n/**\n * A range of values of type `ULong`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic class ULongRange(start: ULong, endInclusive: ULong) : ULongProgression(start, endInclusive, 1), ClosedRange {\n override val start: ULong get() = first\n override val endInclusive: ULong get() = last\n\n override fun contains(value: ULong): Boolean = first <= value && value <= last\n\n override fun isEmpty(): Boolean = first > last\n\n override fun equals(other: Any?): Boolean =\n other is ULongRange && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (first xor (first shr 32)).toInt() + (last xor (last shr 32)).toInt())\n\n override fun toString(): String = \"$first..$last\"\n\n companion object {\n /** An empty range of values of type ULong. */\n public val EMPTY: ULongRange = ULongRange(ULong.MAX_VALUE, ULong.MIN_VALUE)\n }\n}\n\n/**\n * A progression of values of type `ULong`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic open class ULongProgression\ninternal constructor(\n start: ULong,\n endInclusive: ULong,\n step: Long\n) : Iterable {\n init {\n if (step == 0.toLong()) throw kotlin.IllegalArgumentException(\"Step must be non-zero.\")\n if (step == Long.MIN_VALUE) throw kotlin.IllegalArgumentException(\"Step must be greater than Long.MIN_VALUE to avoid overflow on negation.\")\n }\n\n /**\n * The first element in the progression.\n */\n public val first: ULong = start\n\n /**\n * The last element in the progression.\n */\n public val last: ULong = getProgressionLastElement(start, endInclusive, step)\n\n /**\n * The step of the progression.\n */\n public val step: Long = step\n\n override fun iterator(): ULongIterator = ULongProgressionIterator(first, last, step)\n\n /** Checks if the progression is empty. */\n public open fun isEmpty(): Boolean = if (step > 0) first > last else first < last\n\n override fun equals(other: Any?): Boolean =\n other is ULongProgression && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last && step == other.step)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (31 * (first xor (first shr 32)).toInt() + (last xor (last shr 32)).toInt()) + (step xor (step ushr 32)).toInt())\n\n override fun toString(): String = if (step > 0) \"$first..$last step $step\" else \"$first downTo $last step ${-step}\"\n\n companion object {\n /**\n * Creates ULongProgression within the specified bounds of a closed range.\n\n * The progression starts with the [rangeStart] value and goes toward the [rangeEnd] value not excluding it, with the specified [step].\n * In order to go backwards the [step] must be negative.\n *\n * [step] must be greater than `Long.MIN_VALUE` and not equal to zero.\n */\n public fun fromClosedRange(rangeStart: ULong, rangeEnd: ULong, step: Long): ULongProgression = ULongProgression(rangeStart, rangeEnd, step)\n }\n}\n\n\n/**\n * An iterator over a progression of values of type `ULong`.\n * @property step the number by which the value is incremented on each step.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\nprivate class ULongProgressionIterator(first: ULong, last: ULong, step: Long) : ULongIterator() {\n private val finalElement = last\n private var hasNext: Boolean = if (step > 0) first <= last else first >= last\n private val step = step.toULong() // use 2-complement math for negative steps\n private var next = if (hasNext) first else finalElement\n\n override fun hasNext(): Boolean = hasNext\n\n override fun nextULong(): ULong {\n val value = next\n if (value == finalElement) {\n if (!hasNext) throw kotlin.NoSuchElementException()\n hasNext = false\n } else {\n next += step\n }\n return value\n }\n}\n\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.math\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun min(a: UInt, b: UInt): UInt {\n return minOf(a, b)\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun min(a: ULong, b: ULong): ULong {\n return minOf(a, b)\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun max(a: UInt, b: UInt): UInt {\n return maxOf(a, b)\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun max(a: ULong, b: ULong): ULong {\n return maxOf(a, b)\n}","/*\n * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"UNumbersKt\")\npackage kotlin\n\n/**\n * Counts the number of set bits in the binary representation of this [UInt] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UInt.countOneBits(): Int = toInt().countOneBits()\n\n/**\n * Counts the number of consecutive most significant bits that are zero in the binary representation of this [UInt] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UInt.countLeadingZeroBits(): Int = toInt().countLeadingZeroBits()\n\n/**\n * Counts the number of consecutive least significant bits that are zero in the binary representation of this [UInt] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UInt.countTrailingZeroBits(): Int = toInt().countTrailingZeroBits()\n\n/**\n * Returns a number having a single bit set in the position of the most significant set bit of this [UInt] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UInt.takeHighestOneBit(): UInt = toInt().takeHighestOneBit().toUInt()\n\n/**\n * Returns a number having a single bit set in the position of the least significant set bit of this [UInt] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UInt.takeLowestOneBit(): UInt = toInt().takeLowestOneBit().toUInt()\n\n/**\n * Rotates the binary representation of this [UInt] number left by the specified [bitCount] number of bits.\n * The most significant bits pushed out from the left side reenter the number as the least significant bits on the right side.\n *\n * Rotating the number left by a negative bit count is the same as rotating it right by the negated bit count:\n * `number.rotateLeft(-n) == number.rotateRight(n)`\n *\n * Rotating by a multiple of [UInt.SIZE_BITS] (32) returns the same number, or more generally\n * `number.rotateLeft(n) == number.rotateLeft(n % 32)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UInt.rotateLeft(bitCount: Int): UInt = toInt().rotateLeft(bitCount).toUInt()\n\n\n/**\n * Rotates the binary representation of this [UInt] number right by the specified [bitCount] number of bits.\n * The least significant bits pushed out from the right side reenter the number as the most significant bits on the left side.\n *\n * Rotating the number right by a negative bit count is the same as rotating it left by the negated bit count:\n * `number.rotateRight(-n) == number.rotateLeft(n)`\n *\n * Rotating by a multiple of [UInt.SIZE_BITS] (32) returns the same number, or more generally\n * `number.rotateRight(n) == number.rotateRight(n % 32)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UInt.rotateRight(bitCount: Int): UInt = toInt().rotateRight(bitCount).toUInt()\n\n\n/**\n * Counts the number of set bits in the binary representation of this [ULong] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULong.countOneBits(): Int = toLong().countOneBits()\n\n/**\n * Counts the number of consecutive most significant bits that are zero in the binary representation of this [ULong] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULong.countLeadingZeroBits(): Int = toLong().countLeadingZeroBits()\n\n/**\n * Counts the number of consecutive least significant bits that are zero in the binary representation of this [ULong] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULong.countTrailingZeroBits(): Int = toLong().countTrailingZeroBits()\n\n/**\n * Returns a number having a single bit set in the position of the most significant set bit of this [ULong] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULong.takeHighestOneBit(): ULong = toLong().takeHighestOneBit().toULong()\n\n/**\n * Returns a number having a single bit set in the position of the least significant set bit of this [ULong] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULong.takeLowestOneBit(): ULong = toLong().takeLowestOneBit().toULong()\n\n/**\n * Rotates the binary representation of this [ULong] number left by the specified [bitCount] number of bits.\n * The most significant bits pushed out from the left side reenter the number as the least significant bits on the right side.\n *\n * Rotating the number left by a negative bit count is the same as rotating it right by the negated bit count:\n * `number.rotateLeft(-n) == number.rotateRight(n)`\n *\n * Rotating by a multiple of [ULong.SIZE_BITS] (64) returns the same number, or more generally\n * `number.rotateLeft(n) == number.rotateLeft(n % 64)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULong.rotateLeft(bitCount: Int): ULong = toLong().rotateLeft(bitCount).toULong()\n\n/**\n * Rotates the binary representation of this [ULong] number right by the specified [bitCount] number of bits.\n * The least significant bits pushed out from the right side reenter the number as the most significant bits on the left side.\n *\n * Rotating the number right by a negative bit count is the same as rotating it left by the negated bit count:\n * `number.rotateRight(-n) == number.rotateLeft(n)`\n *\n * Rotating by a multiple of [ULong.SIZE_BITS] (64) returns the same number, or more generally\n * `number.rotateRight(n) == number.rotateRight(n % 64)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULong.rotateRight(bitCount: Int): ULong = toLong().rotateRight(bitCount).toULong()\n\n/**\n * Counts the number of set bits in the binary representation of this [UByte] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByte.countOneBits(): Int = toUInt().countOneBits()\n\n/**\n * Counts the number of consecutive most significant bits that are zero in the binary representation of this [UByte] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByte.countLeadingZeroBits(): Int = toByte().countLeadingZeroBits()\n\n/**\n * Counts the number of consecutive least significant bits that are zero in the binary representation of this [UByte] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByte.countTrailingZeroBits(): Int = toByte().countTrailingZeroBits()\n\n/**\n * Returns a number having a single bit set in the position of the most significant set bit of this [UByte] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByte.takeHighestOneBit(): UByte = toInt().takeHighestOneBit().toUByte()\n\n/**\n * Returns a number having a single bit set in the position of the least significant set bit of this [UByte] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByte.takeLowestOneBit(): UByte = toInt().takeLowestOneBit().toUByte()\n\n\n/**\n * Rotates the binary representation of this [UByte] number left by the specified [bitCount] number of bits.\n * The most significant bits pushed out from the left side reenter the number as the least significant bits on the right side.\n *\n * Rotating the number left by a negative bit count is the same as rotating it right by the negated bit count:\n * `number.rotateLeft(-n) == number.rotateRight(n)`\n *\n * Rotating by a multiple of [UByte.SIZE_BITS] (8) returns the same number, or more generally\n * `number.rotateLeft(n) == number.rotateLeft(n % 8)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByte.rotateLeft(bitCount: Int): UByte = toByte().rotateLeft(bitCount).toUByte()\n\n/**\n * Rotates the binary representation of this [UByte] number right by the specified [bitCount] number of bits.\n * The least significant bits pushed out from the right side reenter the number as the most significant bits on the left side.\n *\n * Rotating the number right by a negative bit count is the same as rotating it left by the negated bit count:\n * `number.rotateRight(-n) == number.rotateLeft(n)`\n *\n * Rotating by a multiple of [UByte.SIZE_BITS] (8) returns the same number, or more generally\n * `number.rotateRight(n) == number.rotateRight(n % 8)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByte.rotateRight(bitCount: Int): UByte = toByte().rotateRight(bitCount).toUByte()\n\n/**\n * Counts the number of set bits in the binary representation of this [UShort] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShort.countOneBits(): Int = toUInt().countOneBits()\n\n/**\n * Counts the number of consecutive most significant bits that are zero in the binary representation of this [UShort] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShort.countLeadingZeroBits(): Int = toShort().countLeadingZeroBits()\n\n/**\n * Counts the number of consecutive least significant bits that are zero in the binary representation of this [UShort] number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShort.countTrailingZeroBits(): Int = toShort().countTrailingZeroBits()\n\n/**\n * Returns a number having a single bit set in the position of the most significant set bit of this [UShort] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShort.takeHighestOneBit(): UShort = toInt().takeHighestOneBit().toUShort()\n\n/**\n * Returns a number having a single bit set in the position of the least significant set bit of this [UShort] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShort.takeLowestOneBit(): UShort = toInt().takeLowestOneBit().toUShort()\n\n\n/**\n * Rotates the binary representation of this [UShort] number left by the specified [bitCount] number of bits.\n * The most significant bits pushed out from the left side reenter the number as the least significant bits on the right side.\n *\n * Rotating the number left by a negative bit count is the same as rotating it right by the negated bit count:\n * `number.rotateLeft(-n) == number.rotateRight(n)`\n *\n * Rotating by a multiple of [UShort.SIZE_BITS] (16) returns the same number, or more generally\n * `number.rotateLeft(n) == number.rotateLeft(n % 16)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShort.rotateLeft(bitCount: Int): UShort = toShort().rotateLeft(bitCount).toUShort()\n\n/**\n * Rotates the binary representation of this [UShort] number right by the specified [bitCount] number of bits.\n * The least significant bits pushed out from the right side reenter the number as the most significant bits on the left side.\n *\n * Rotating the number right by a negative bit count is the same as rotating it left by the negated bit count:\n * `number.rotateRight(-n) == number.rotateLeft(n)`\n *\n * Rotating by a multiple of [UShort.SIZE_BITS] (16) returns the same number, or more generally\n * `number.rotateRight(n) == number.rotateRight(n % 16)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShort.rotateRight(bitCount: Int): UShort = toShort().rotateRight(bitCount).toUShort()\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:UseExperimental(ExperimentalUnsignedTypes::class)\npackage kotlin.internal\n\n// (a - b) mod c\nprivate fun differenceModulo(a: UInt, b: UInt, c: UInt): UInt {\n val ac = a % c\n val bc = b % c\n return if (ac >= bc) ac - bc else ac - bc + c\n}\n\nprivate fun differenceModulo(a: ULong, b: ULong, c: ULong): ULong {\n val ac = a % c\n val bc = b % c\n return if (ac >= bc) ac - bc else ac - bc + c\n}\n\n/**\n * Calculates the final element of a bounded arithmetic progression, i.e. the last element of the progression which is in the range\n * from [start] to [end] in case of a positive [step], or from [end] to [start] in case of a negative\n * [step].\n *\n * No validation on passed parameters is performed. The given parameters should satisfy the condition:\n *\n * - either `step > 0` and `start <= end`,\n * - or `step < 0` and `start >= end`.\n *\n * @param start first element of the progression\n * @param end ending bound for the progression\n * @param step increment, or difference of successive elements in the progression\n * @return the final element of the progression\n * @suppress\n */\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun getProgressionLastElement(start: UInt, end: UInt, step: Int): UInt = when {\n step > 0 -> if (start >= end) end else end - differenceModulo(end, start, step.toUInt())\n step < 0 -> if (start <= end) end else end + differenceModulo(start, end, (-step).toUInt())\n else -> throw kotlin.IllegalArgumentException(\"Step is zero.\")\n}\n\n/**\n * Calculates the final element of a bounded arithmetic progression, i.e. the last element of the progression which is in the range\n * from [start] to [end] in case of a positive [step], or from [end] to [start] in case of a negative\n * [step].\n *\n * No validation on passed parameters is performed. The given parameters should satisfy the condition:\n *\n * - either `step > 0` and `start <= end`,\n * - or `step < 0` and `start >= end`.\n *\n * @param start first element of the progression\n * @param end ending bound for the progression\n * @param step increment, or difference of successive elements in the progression\n * @return the final element of the progression\n * @suppress\n */\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun getProgressionLastElement(start: ULong, end: ULong, step: Long): ULong = when {\n step > 0 -> if (start >= end) end else end - differenceModulo(end, start, step.toULong())\n step < 0 -> if (start <= end) end else end + differenceModulo(start, end, (-step).toULong())\n else -> throw kotlin.IllegalArgumentException(\"Step is zero.\")\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"UStringsKt\") // string representation of unsigned numbers\n\npackage kotlin.text\n\n/**\n * Returns a string representation of this [Byte] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n//@kotlin.internal.InlineOnly\npublic /*inline*/ fun UByte.toString(radix: Int): String = this.toInt().toString(radix)\n\n/**\n * Returns a string representation of this [Short] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n//@kotlin.internal.InlineOnly\npublic /*inline*/ fun UShort.toString(radix: Int): String = this.toInt().toString(radix)\n\n\n/**\n * Returns a string representation of this [Int] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n//@kotlin.internal.InlineOnly\npublic /*inline*/ fun UInt.toString(radix: Int): String = this.toLong().toString(radix)\n\n/**\n * Returns a string representation of this [Long] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULong.toString(radix: Int): String = ulongToString(this.toLong(), checkRadix(radix))\n\n\n/**\n * Parses the string as a signed [UByte] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUByte(): UByte = toUByteOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a signed [UByte] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUByte(radix: Int): UByte = toUByteOrNull(radix) ?: numberFormatError(this)\n\n\n/**\n * Parses the string as a [UShort] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUShort(): UShort = toUShortOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a [UShort] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUShort(radix: Int): UShort = toUShortOrNull(radix) ?: numberFormatError(this)\n\n/**\n * Parses the string as an [UInt] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUInt(): UInt = toUIntOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as an [UInt] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUInt(radix: Int): UInt = toUIntOrNull(radix) ?: numberFormatError(this)\n\n/**\n * Parses the string as a [ULong] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toULong(): ULong = toULongOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a [ULong] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toULong(radix: Int): ULong = toULongOrNull(radix) ?: numberFormatError(this)\n\n\n\n\n\n/**\n * Parses the string as an [UByte] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUByteOrNull(): UByte? = toUByteOrNull(radix = 10)\n\n/**\n * Parses the string as an [UByte] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUByteOrNull(radix: Int): UByte? {\n val int = this.toUIntOrNull(radix) ?: return null\n if (int > UByte.MAX_VALUE) return null\n return int.toUByte()\n}\n\n/**\n * Parses the string as an [UShort] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUShortOrNull(): UShort? = toUShortOrNull(radix = 10)\n\n/**\n * Parses the string as an [UShort] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUShortOrNull(radix: Int): UShort? {\n val int = this.toUIntOrNull(radix) ?: return null\n if (int > UShort.MAX_VALUE) return null\n return int.toUShort()\n}\n\n/**\n * Parses the string as an [UInt] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUIntOrNull(): UInt? = toUIntOrNull(radix = 10)\n\n/**\n * Parses the string as an [UInt] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUIntOrNull(radix: Int): UInt? {\n checkRadix(radix)\n\n val length = this.length\n if (length == 0) return null\n\n val limit: UInt = UInt.MAX_VALUE\n val start: Int\n\n val firstChar = this[0]\n if (firstChar < '0') {\n if (length == 1 || firstChar != '+') return null\n start = 1\n } else {\n start = 0\n }\n\n val limitForMaxRadix = 119304647u // limit / 36\n\n var limitBeforeMul = limitForMaxRadix\n val uradix = radix.toUInt()\n var result = 0u\n for (i in start until length) {\n val digit = digitOf(this[i], radix)\n\n if (digit < 0) return null\n if (result > limitBeforeMul) {\n if (limitBeforeMul == limitForMaxRadix) {\n limitBeforeMul = limit / uradix\n\n if (result > limitBeforeMul) {\n return null\n }\n } else {\n return null\n }\n }\n\n result *= uradix\n\n val beforeAdding = result\n result += digit.toUInt()\n if (result < beforeAdding) return null // overflow has happened\n }\n\n return result\n}\n\n/**\n * Parses the string as an [ULong] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toULongOrNull(): ULong? = toULongOrNull(radix = 10)\n\n/**\n * Parses the string as an [ULong] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toULongOrNull(radix: Int): ULong? {\n checkRadix(radix)\n\n val length = this.length\n if (length == 0) return null\n\n val limit: ULong = ULong.MAX_VALUE\n val start: Int\n\n val firstChar = this[0]\n if (firstChar < '0') {\n if (length == 1 || firstChar != '+') return null\n start = 1\n } else {\n start = 0\n }\n\n\n val limitForMaxRadix = 512409557603043100uL // limit / 36\n\n var limitBeforeMul = limitForMaxRadix\n val uradix = radix.toULong()\n var result = 0uL\n for (i in start until length) {\n val digit = digitOf(this[i], radix)\n\n if (digit < 0) return null\n if (result > limitBeforeMul) {\n if (limitBeforeMul == limitForMaxRadix) {\n limitBeforeMul = limit / uradix\n\n if (result > limitBeforeMul) {\n return null\n }\n } else {\n return null\n }\n }\n\n result *= uradix\n\n val beforeAdding = result\n result += digit.toUInt()\n if (result < beforeAdding) return null // overflow has happened\n }\n\n return result\n}\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:Suppress(\"INVISIBLE_REFERENCE\", \"INVISIBLE_MEMBER\")\npackage kotlin\n\nimport kotlin.annotation.AnnotationTarget.*\nimport kotlin.internal.RequireKotlin\nimport kotlin.internal.RequireKotlinVersionKind\n\n/**\n * Marks the API that is dependent on the experimental unsigned types, including those types themselves.\n *\n * Usages of such API will be reported as warnings unless an explicit opt-in with\n * the [OptIn] annotation, e.g. `@OptIn(ExperimentalUnsignedTypes::class)`,\n * or with the `-Xopt-in=kotlin.ExperimentalUnsignedTypes` compiler option is given.\n *\n * It's recommended to propagate the experimental status to the API that depends on unsigned types by annotating it with this annotation.\n */\n@Suppress(\"DEPRECATION\")\n@Experimental(level = Experimental.Level.WARNING)\n@RequiresOptIn(level = RequiresOptIn.Level.WARNING)\n@MustBeDocumented\n@Target(CLASS, ANNOTATION_CLASS, PROPERTY, FIELD, LOCAL_VARIABLE, VALUE_PARAMETER, CONSTRUCTOR, FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, TYPEALIAS)\n@Retention(AnnotationRetention.BINARY)\n@RequireKotlin(\"1.2.50\", versionKind = RequireKotlinVersionKind.COMPILER_VERSION)\npublic annotation class ExperimentalUnsignedTypes\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"MathKt\")\n\n\npackage kotlin.math\n\n\n\n// constants, can't use them from nativeMath as they are not constants there\n\n/** Ratio of the circumference of a circle to its diameter, approximately 3.14159. */\n@SinceKotlin(\"1.2\")\npublic const val PI: Double = 3.141592653589793\n/** Base of the natural logarithms, approximately 2.71828. */\n@SinceKotlin(\"1.2\")\npublic const val E: Double = 2.718281828459045\n\n// region ================ Double Math ========================================\n\n/** Computes the sine of the angle [x] given in radians.\n *\n * Special cases:\n * - `sin(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun sin(x: Double): Double\n\n/** Computes the cosine of the angle [x] given in radians.\n *\n * Special cases:\n * - `cos(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun cos(x: Double): Double\n\n/** Computes the tangent of the angle [x] given in radians.\n *\n * Special cases:\n * - `tan(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun tan(x: Double): Double\n\n/**\n * Computes the arc sine of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `asin(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun asin(x: Double): Double\n\n/**\n * Computes the arc cosine of the value [x];\n * the returned value is an angle in the range from `0.0` to `PI` radians.\n *\n * Special cases:\n * - `acos(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun acos(x: Double): Double\n\n/**\n * Computes the arc tangent of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `atan(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun atan(x: Double): Double\n\n/**\n * Returns the angle `theta` of the polar coordinates `(r, theta)` that correspond\n * to the rectangular coordinates `(x, y)` by computing the arc tangent of the value [y] / [x];\n * the returned value is an angle in the range from `-PI` to `PI` radians.\n *\n * Special cases:\n * - `atan2(0.0, 0.0)` is `0.0`\n * - `atan2(0.0, x)` is `0.0` for `x > 0` and `PI` for `x < 0`\n * - `atan2(-0.0, x)` is `-0.0` for 'x > 0` and `-PI` for `x < 0`\n * - `atan2(y, +Inf)` is `0.0` for `0 < y < +Inf` and `-0.0` for '-Inf < y < 0`\n * - `atan2(y, -Inf)` is `PI` for `0 < y < +Inf` and `-PI` for `-Inf < y < 0`\n * - `atan2(y, 0.0)` is `PI/2` for `y > 0` and `-PI/2` for `y < 0`\n * - `atan2(+Inf, x)` is `PI/2` for finite `x`y\n * - `atan2(-Inf, x)` is `-PI/2` for finite `x`\n * - `atan2(NaN, x)` and `atan2(y, NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun atan2(y: Double, x: Double): Double\n\n/**\n * Computes the hyperbolic sine of the value [x].\n *\n * Special cases:\n * - `sinh(NaN)` is `NaN`\n * - `sinh(+Inf)` is `+Inf`\n * - `sinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun sinh(x: Double): Double\n\n/**\n * Computes the hyperbolic cosine of the value [x].\n *\n * Special cases:\n * - `cosh(NaN)` is `NaN`\n * - `cosh(+Inf|-Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun cosh(x: Double): Double\n\n/**\n * Computes the hyperbolic tangent of the value [x].\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(+Inf)` is `1.0`\n * - `tanh(-Inf)` is `-1.0`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun tanh(x: Double): Double\n\n/**\n * Computes the inverse hyperbolic sine of the value [x].\n *\n * The returned value is `y` such that `sinh(y) == x`.\n *\n * Special cases:\n * - `asinh(NaN)` is `NaN`\n * - `asinh(+Inf)` is `+Inf`\n * - `asinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun asinh(x: Double): Double\n\n/**\n * Computes the inverse hyperbolic cosine of the value [x].\n *\n * The returned value is positive `y` such that `cosh(y) == x`.\n *\n * Special cases:\n * - `acosh(NaN)` is `NaN`\n * - `acosh(x)` is `NaN` when `x < 1`\n * - `acosh(+Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun acosh(x: Double): Double\n\n/**\n * Computes the inverse hyperbolic tangent of the value [x].\n *\n * The returned value is `y` such that `tanh(y) == x`.\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(x)` is `NaN` when `x > 1` or `x < -1`\n * - `tanh(1.0)` is `+Inf`\n * - `tanh(-1.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun atanh(x: Double): Double\n\n/**\n * Computes `sqrt(x^2 + y^2)` without intermediate overflow or underflow.\n *\n * Special cases:\n * - returns `+Inf` if any of arguments is infinite\n * - returns `NaN` if any of arguments is `NaN` and the other is not infinite\n */\n@SinceKotlin(\"1.2\")\npublic expect fun hypot(x: Double, y: Double): Double\n\n/**\n * Computes the positive square root of the value [x].\n *\n * Special cases:\n * - `sqrt(x)` is `NaN` when `x < 0` or `x` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun sqrt(x: Double): Double\n\n/**\n * Computes Euler's number `e` raised to the power of the value [x].\n *\n * Special cases:\n * - `exp(NaN)` is `NaN`\n * - `exp(+Inf)` is `+Inf`\n * - `exp(-Inf)` is `0.0`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun exp(x: Double): Double\n\n/**\n * Computes `exp(x) - 1`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `expm1(NaN)` is `NaN`\n * - `expm1(+Inf)` is `+Inf`\n * - `expm1(-Inf)` is `-1.0`\n *\n * @see [exp] function.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun expm1(x: Double): Double\n\n/**\n * Computes the logarithm of the value [x] to the given [base].\n *\n * Special cases:\n * - `log(x, b)` is `NaN` if either `x` or `b` are `NaN`\n * - `log(x, b)` is `NaN` when `x < 0` or `b <= 0` or `b == 1.0`\n * - `log(+Inf, +Inf)` is `NaN`\n * - `log(+Inf, b)` is `+Inf` for `b > 1` and `-Inf` for `b < 1`\n * - `log(0.0, b)` is `-Inf` for `b > 1` and `+Inf` for `b > 1`\n *\n * See also logarithm functions for common fixed bases: [ln], [log10] and [log2].\n */\n@SinceKotlin(\"1.2\")\npublic expect fun log(x: Double, base: Double): Double\n\n/**\n * Computes the natural logarithm (base `E`) of the value [x].\n *\n * Special cases:\n * - `ln(NaN)` is `NaN`\n * - `ln(x)` is `NaN` when `x < 0.0`\n * - `ln(+Inf)` is `+Inf`\n * - `ln(0.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun ln(x: Double): Double\n\n/**\n * Computes the common logarithm (base 10) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun log10(x: Double): Double\n\n/**\n * Computes the binary logarithm (base 2) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun log2(x: Double): Double\n\n/**\n * Computes `ln(x + 1)`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `ln1p(NaN)` is `NaN`\n * - `ln1p(x)` is `NaN` where `x < -1.0`\n * - `ln1p(-1.0)` is `-Inf`\n * - `ln1p(+Inf)` is `+Inf`\n *\n * @see [ln] function\n * @see [expm1] function\n */\n@SinceKotlin(\"1.2\")\npublic expect fun ln1p(x: Double): Double\n\n/**\n * Rounds the given value [x] to an integer towards positive infinity.\n\n * @return the smallest double value that is greater than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `ceil(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun ceil(x: Double): Double\n\n/**\n * Rounds the given value [x] to an integer towards negative infinity.\n\n * @return the largest double value that is smaller than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `floor(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun floor(x: Double): Double\n\n/**\n * Rounds the given value [x] to an integer towards zero.\n *\n * @return the value [x] having its fractional part truncated.\n *\n * Special cases:\n * - `truncate(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun truncate(x: Double): Double\n\n/**\n * Rounds the given value [x] towards the closest integer with ties rounded towards even integer.\n *\n * Special cases:\n * - `round(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun round(x: Double): Double\n\n/**\n * Returns the absolute value of the given value [x].\n *\n * Special cases:\n * - `abs(NaN)` is `NaN`\n *\n * @see absoluteValue extension property for [Double]\n */\n@SinceKotlin(\"1.2\")\npublic expect fun abs(x: Double): Double\n\n/**\n * Returns the sign of the given value [x]:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `sign(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun sign(x: Double): Double\n\n\n/**\n * Returns the smaller of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun min(a: Double, b: Double): Double\n\n/**\n * Returns the greater of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun max(a: Double, b: Double): Double\n\n// extensions\n\n/**\n * Raises this value to the power [x].\n *\n * Special cases:\n * - `b.pow(0.0)` is `1.0`\n * - `b.pow(1.0) == b`\n * - `b.pow(NaN)` is `NaN`\n * - `NaN.pow(x)` is `NaN` for `x != 0.0`\n * - `b.pow(Inf)` is `NaN` for `abs(b) == 1.0`\n * - `b.pow(x)` is `NaN` for `b < 0` and `x` is finite and not an integer\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.pow(x: Double): Double\n\n/**\n * Raises this value to the integer power [n].\n *\n * See the other overload of [pow] for details.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.pow(n: Int): Double\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `NaN.absoluteValue` is `NaN`\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\npublic expect val Double.absoluteValue: Double\n\n/**\n * Returns the sign of this value:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `NaN.sign` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect val Double.sign: Double\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n *\n * If [sign] is `NaN` the sign of the result is undefined.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.withSign(sign: Double): Double\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.withSign(sign: Int): Double\n\n/**\n * Returns the ulp (unit in the last place) of this value.\n *\n * An ulp is a positive distance between this value and the next nearest [Double] value larger in magnitude.\n *\n * Special Cases:\n * - `NaN.ulp` is `NaN`\n * - `x.ulp` is `+Inf` when `x` is `+Inf` or `-Inf`\n * - `0.0.ulp` is `Double.MIN_VALUE`\n */\n@SinceKotlin(\"1.2\")\npublic expect val Double.ulp: Double\n\n/**\n * Returns the [Double] value nearest to this value in direction of positive infinity.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.nextUp(): Double\n\n/**\n * Returns the [Double] value nearest to this value in direction of negative infinity.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.nextDown(): Double\n\n/**\n * Returns the [Double] value nearest to this value in direction from this value towards the value [to].\n *\n * Special cases:\n * - `x.nextTowards(y)` is `NaN` if either `x` or `y` are `NaN`\n * - `x.nextTowards(x) == x`\n *\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.nextTowards(to: Double): Double\n\n/**\n * Rounds this [Double] value to the nearest integer and converts the result to [Int].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToInt() == Int.MAX_VALUE` when `x > Int.MAX_VALUE`\n * - `x.roundToInt() == Int.MIN_VALUE` when `x < Int.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.roundToInt(): Int\n\n/**\n * Rounds this [Double] value to the nearest integer and converts the result to [Long].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToLong() == Long.MAX_VALUE` when `x > Long.MAX_VALUE`\n * - `x.roundToLong() == Long.MIN_VALUE` when `x < Long.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.roundToLong(): Long\n\n// endregion\n\n\n\n// region ================ Float Math ========================================\n\n/** Computes the sine of the angle [x] given in radians.\n *\n * Special cases:\n * - `sin(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun sin(x: Float): Float\n\n/** Computes the cosine of the angle [x] given in radians.\n *\n * Special cases:\n * - `cos(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun cos(x: Float): Float\n\n/** Computes the tangent of the angle [x] given in radians.\n *\n * Special cases:\n * - `tan(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun tan(x: Float): Float\n\n/**\n * Computes the arc sine of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `asin(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun asin(x: Float): Float\n\n/**\n * Computes the arc cosine of the value [x];\n * the returned value is an angle in the range from `0.0` to `PI` radians.\n *\n * Special cases:\n * - `acos(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun acos(x: Float): Float\n\n/**\n * Computes the arc tangent of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `atan(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun atan(x: Float): Float\n\n/**\n * Returns the angle `theta` of the polar coordinates `(r, theta)` that correspond\n * to the rectangular coordinates `(x, y)` by computing the arc tangent of the value [y] / [x];\n * the returned value is an angle in the range from `-PI` to `PI` radians.\n *\n * Special cases:\n * - `atan2(0.0, 0.0)` is `0.0`\n * - `atan2(0.0, x)` is `0.0` for `x > 0` and `PI` for `x < 0`\n * - `atan2(-0.0, x)` is `-0.0` for 'x > 0` and `-PI` for `x < 0`\n * - `atan2(y, +Inf)` is `0.0` for `0 < y < +Inf` and `-0.0` for '-Inf < y < 0`\n * - `atan2(y, -Inf)` is `PI` for `0 < y < +Inf` and `-PI` for `-Inf < y < 0`\n * - `atan2(y, 0.0)` is `PI/2` for `y > 0` and `-PI/2` for `y < 0`\n * - `atan2(+Inf, x)` is `PI/2` for finite `x`y\n * - `atan2(-Inf, x)` is `-PI/2` for finite `x`\n * - `atan2(NaN, x)` and `atan2(y, NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun atan2(y: Float, x: Float): Float\n\n/**\n * Computes the hyperbolic sine of the value [x].\n *\n * Special cases:\n * - `sinh(NaN)` is `NaN`\n * - `sinh(+Inf)` is `+Inf`\n * - `sinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun sinh(x: Float): Float\n\n/**\n * Computes the hyperbolic cosine of the value [x].\n *\n * Special cases:\n * - `cosh(NaN)` is `NaN`\n * - `cosh(+Inf|-Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun cosh(x: Float): Float\n\n/**\n * Computes the hyperbolic tangent of the value [x].\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(+Inf)` is `1.0`\n * - `tanh(-Inf)` is `-1.0`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun tanh(x: Float): Float\n\n/**\n * Computes the inverse hyperbolic sine of the value [x].\n *\n * The returned value is `y` such that `sinh(y) == x`.\n *\n * Special cases:\n * - `asinh(NaN)` is `NaN`\n * - `asinh(+Inf)` is `+Inf`\n * - `asinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun asinh(x: Float): Float\n\n/**\n * Computes the inverse hyperbolic cosine of the value [x].\n *\n * The returned value is positive `y` such that `cosh(y) == x`.\n *\n * Special cases:\n * - `acosh(NaN)` is `NaN`\n * - `acosh(x)` is `NaN` when `x < 1`\n * - `acosh(+Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun acosh(x: Float): Float\n\n/**\n * Computes the inverse hyperbolic tangent of the value [x].\n *\n * The returned value is `y` such that `tanh(y) == x`.\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(x)` is `NaN` when `x > 1` or `x < -1`\n * - `tanh(1.0)` is `+Inf`\n * - `tanh(-1.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun atanh(x: Float): Float\n\n/**\n * Computes `sqrt(x^2 + y^2)` without intermediate overflow or underflow.\n *\n * Special cases:\n * - returns `+Inf` if any of arguments is infinite\n * - returns `NaN` if any of arguments is `NaN` and the other is not infinite\n */\n@SinceKotlin(\"1.2\")\npublic expect fun hypot(x: Float, y: Float): Float\n\n/**\n * Computes the positive square root of the value [x].\n *\n * Special cases:\n * - `sqrt(x)` is `NaN` when `x < 0` or `x` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun sqrt(x: Float): Float\n\n/**\n * Computes Euler's number `e` raised to the power of the value [x].\n *\n * Special cases:\n * - `exp(NaN)` is `NaN`\n * - `exp(+Inf)` is `+Inf`\n * - `exp(-Inf)` is `0.0`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun exp(x: Float): Float\n\n/**\n * Computes `exp(x) - 1`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `expm1(NaN)` is `NaN`\n * - `expm1(+Inf)` is `+Inf`\n * - `expm1(-Inf)` is `-1.0`\n *\n * @see [exp] function.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun expm1(x: Float): Float\n\n/**\n * Computes the logarithm of the value [x] to the given [base].\n *\n * Special cases:\n * - `log(x, b)` is `NaN` if either `x` or `b` are `NaN`\n * - `log(x, b)` is `NaN` when `x < 0` or `b <= 0` or `b == 1.0`\n * - `log(+Inf, +Inf)` is `NaN`\n * - `log(+Inf, b)` is `+Inf` for `b > 1` and `-Inf` for `b < 1`\n * - `log(0.0, b)` is `-Inf` for `b > 1` and `+Inf` for `b > 1`\n *\n * See also logarithm functions for common fixed bases: [ln], [log10] and [log2].\n */\n@SinceKotlin(\"1.2\")\npublic expect fun log(x: Float, base: Float): Float\n\n/**\n * Computes the natural logarithm (base `E`) of the value [x].\n *\n * Special cases:\n * - `ln(NaN)` is `NaN`\n * - `ln(x)` is `NaN` when `x < 0.0`\n * - `ln(+Inf)` is `+Inf`\n * - `ln(0.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun ln(x: Float): Float\n\n/**\n * Computes the common logarithm (base 10) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun log10(x: Float): Float\n\n/**\n * Computes the binary logarithm (base 2) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun log2(x: Float): Float\n\n/**\n * Computes `ln(a + 1)`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `ln1p(NaN)` is `NaN`\n * - `ln1p(x)` is `NaN` where `x < -1.0`\n * - `ln1p(-1.0)` is `-Inf`\n * - `ln1p(+Inf)` is `+Inf`\n *\n * @see [ln] function\n * @see [expm1] function\n */\n@SinceKotlin(\"1.2\")\npublic expect fun ln1p(x: Float): Float\n\n/**\n * Rounds the given value [x] to an integer towards positive infinity.\n\n * @return the smallest Float value that is greater than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `ceil(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun ceil(x: Float): Float\n\n/**\n * Rounds the given value [x] to an integer towards negative infinity.\n\n * @return the largest Float value that is smaller than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `floor(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun floor(x: Float): Float\n\n/**\n * Rounds the given value [x] to an integer towards zero.\n *\n * @return the value [x] having its fractional part truncated.\n *\n * Special cases:\n * - `truncate(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun truncate(x: Float): Float\n\n/**\n * Rounds the given value [x] towards the closest integer with ties rounded towards even integer.\n *\n * Special cases:\n * - `round(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun round(x: Float): Float\n\n\n/**\n * Returns the absolute value of the given value [x].\n *\n * Special cases:\n * - `abs(NaN)` is `NaN`\n *\n * @see absoluteValue extension property for [Float]\n */\n@SinceKotlin(\"1.2\")\npublic expect fun abs(x: Float): Float\n\n/**\n * Returns the sign of the given value [x]:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `sign(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun sign(x: Float): Float\n\n\n\n/**\n * Returns the smaller of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun min(a: Float, b: Float): Float\n\n/**\n * Returns the greater of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun max(a: Float, b: Float): Float\n\n// extensions\n\n\n/**\n * Raises this value to the power [x].\n *\n * Special cases:\n * - `b.pow(0.0)` is `1.0`\n * - `b.pow(1.0) == b`\n * - `b.pow(NaN)` is `NaN`\n * - `NaN.pow(x)` is `NaN` for `x != 0.0`\n * - `b.pow(Inf)` is `NaN` for `abs(b) == 1.0`\n * - `b.pow(x)` is `NaN` for `b < 0` and `x` is finite and not an integer\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Float.pow(x: Float): Float\n\n/**\n * Raises this value to the integer power [n].\n *\n * See the other overload of [pow] for details.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Float.pow(n: Int): Float\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `NaN.absoluteValue` is `NaN`\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\npublic expect val Float.absoluteValue: Float\n\n/**\n * Returns the sign of this value:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `NaN.sign` is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect val Float.sign: Float\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n *\n * If [sign] is `NaN` the sign of the result is undefined.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Float.withSign(sign: Float): Float\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Float.withSign(sign: Int): Float\n\n\n/**\n * Rounds this [Float] value to the nearest integer and converts the result to [Int].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToInt() == Int.MAX_VALUE` when `x > Int.MAX_VALUE`\n * - `x.roundToInt() == Int.MIN_VALUE` when `x < Int.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Float.roundToInt(): Int\n\n/**\n * Rounds this [Float] value to the nearest integer and converts the result to [Long].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToLong() == Long.MAX_VALUE` when `x > Long.MAX_VALUE`\n * - `x.roundToLong() == Long.MIN_VALUE` when `x < Long.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Float.roundToLong(): Long\n\n\n// endregion\n\n// region ================ Integer Math ========================================\n\n\n/**\n * Returns the absolute value of the given value [n].\n *\n * Special cases:\n * - `abs(Int.MIN_VALUE)` is `Int.MIN_VALUE` due to an overflow\n *\n * @see absoluteValue extension property for [Int]\n */\n@SinceKotlin(\"1.2\")\npublic expect fun abs(n: Int): Int\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun min(a: Int, b: Int): Int\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun max(a: Int, b: Int): Int\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `Int.MIN_VALUE.absoluteValue` is `Int.MIN_VALUE` due to an overflow\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\npublic expect val Int.absoluteValue: Int\n\n/**\n * Returns the sign of this value:\n * - `-1` if the value is negative,\n * - `0` if the value is zero,\n * - `1` if the value is positive\n */\n@SinceKotlin(\"1.2\")\npublic expect val Int.sign: Int\n\n\n\n/**\n * Returns the absolute value of the given value [n].\n *\n * Special cases:\n * - `abs(Long.MIN_VALUE)` is `Long.MIN_VALUE` due to an overflow\n *\n * @see absoluteValue extension property for [Long]\n */\n@SinceKotlin(\"1.2\")\npublic expect fun abs(n: Long): Long\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun min(a: Long, b: Long): Long\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun max(a: Long, b: Long): Long\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `Long.MIN_VALUE.absoluteValue` is `Long.MIN_VALUE` due to an overflow\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\npublic expect val Long.absoluteValue: Long\n\n/**\n * Returns the sign of this value:\n * - `-1` if the value is negative,\n * - `0` if the value is zero,\n * - `1` if the value is positive\n */\n@SinceKotlin(\"1.2\")\npublic expect val Long.sign: Int\n\n\n// endregion\n",null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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;MAEtB,iBACsB,G;MAEtB,kBACuB,C;MAEvB,iBACsB,C;K;;;IAZ1B,2C;MAAA,0C;QAAA,yB;OAAA,mC;K;IAeA,+B;MAAA,mC;MAEI,iBACmC,C;MAEnC,iBACmC,K;MAEnC,0BAC4C,K;MAE5C,0BAC4C,K;MAE5C,yBAC2C,K;MAE3C,yBAC2C,K;MAE3C,qBACuC,uB;MAEvC,qBACuC,sB;MAEvC,kBACuB,C;MAEvB,iBACsB,E;K;;;IA9B1B,2C;MAAA,0C;QAAA,yB;OAAA,mC;K;IAiCA,iC;MAAA,qC;K;;;IAAA,6C;MAAA,4C;QAAA,2B;OAAA,qC;K;IAEA,kC;MAAA,sC;K;;;IAAA,8C;MAAA,6C;QAAA,4B;OAAA,sC;K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aCwzfoB,gB;;;;cCn3e0C,mB;;gBAyEvC,yB;eAAyB,wB;;;uBAgBzB,gC;sBAAwB,+B;mCA4JjC,qB;mCA5ImC,qB;;kBAQ1B,2B;iBAA0B,0B;;;;;eCvdgB,wB;sBCQA,sB;iBCPA,0B;;;;aC1K8B,e;;;;;;;;;;;;gCCzChD,yC;+BCTA,uC;+BCAA,sC;;gCCyJ/B,+B;+BAIW,sC;gBClF0D,yB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IChFrF,kD;MAMuF,wC;K;IANvF,4CAOI,Y;MAAuC,8B;K;IAP3C,8E;ICCA,kD;MAQuF,wC;K;IARvF,4CASI,Y;MAAuC,8B;K;IAT3C,8E;0FZSA,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;0FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;0FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;0FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;0FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,UAAI,CAAJ,C;K;4FAGX,qB;MAQI,OAAO,U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kC;MAII,IA2uCO,qBAAQ,CA3uCf,C;QAAe,OAAO,S;MACD,kBAAd,Sc3vJiB,Q;Md2vJK,iB;MAA7B,OiBx6KO,W;K;IjB26KX,kC;MAII,IA2uCO,qBAAQ,CA3uCf,C;QAAe,OAAO,S;MACD,kBAAd,SczvJiB,Q;MdyvJK,iB;MAA7B,OiBh7KO,W;K;IjBm7KX,kC;MAII,IA2uCO,qBAAQ,CA3uCf,C;QAAe,OAAO,S;MACD,kBAAT,UAAL,SAAK,C;MAAiB,mB;MAA7B,OiBx7KO,W;K;IjB27KX,kC;MAII,IA2uCO,qBAAQ,CA3uCf,C;QAAe,OAAO,S;MACD,kBAAd,SctvJiB,Q;MdsvJK,iB;MAA7B,OiBh8KO,W;K;IjBm8KX,kC;MAII,IA2uCO,qBAAQ,CA3uCf,C;QAAe,OAAO,S;MACD,kBAAd,ScpvJiB,Q;MdovJK,iB;MAA7B,OiBx8KO,W;K;IjB28KX,kC;MAII,IAmvCO,qBAAQ,CAnvCf,C;QAAe,OAAO,S;MACD,kBAAT,UAAL,SAAK,C;MAAiB,iB;MAA7B,OiBh9KO,W;K;IjBm9KX,0C;MAMI,IAyqCO,qBAAQ,CAzqCf,C;QAAe,OAAO,S;MACD,kBAAd,Scj0JiB,Q;Mdi0JK,sBAAS,cAAT,C;MAA7B,OiB19KO,W;K;IjB69KX,4C;MAII,IAyqCO,qBAAQ,CAzqCf,C;QAAe,OAAO,S;MACD,kBAAd,Sc/zJiB,Q;Md+zJK,6B;MAA7B,OiBl+KO,W;K;IjBq+KX,4C;MAII,IAyqCO,qBAAQ,CAzqCf,C;QAAe,OAAO,S;MACD,kBAAd,Sc7zJiB,Q;Md6zJK,6B;MAA7B,OiB1+KO,W;K;IjB6+KX,4C;MAII,IAyqCO,qBAAQ,CAzqCf,C;QAAe,OAAO,S;MACD,kBAAd,Sc3zJiB,Q;Md2zJK,6B;MAA7B,OiBl/KO,W;K;IjBq/KX,4C;MAII,IAyqCO,qBAAQ,CAzqCf,C;QAAe,OAAO,S;MACD,kBAAT,UAAL,SAAK,C;MAAiB,6B;MAA7B,OiB1/KO,W;K;IjB6/KX,4C;MAII,IAyqCO,qBAAQ,CAzqCf,C;QAAe,OAAO,S;MACD,kBAAd,ScxzJiB,Q;MdwzJK,6B;MAA7B,OiBlgLO,W;K;IjBqgLX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;MfyjLf,sC;QAII,OAAO,mDe7jLI,iBf6jLiB,Qe7jLjB,Cf6jLJ,E;O;KAJX,C;wFAOA,yB;MAAA,wD;MevkLA,sC;MCjFA,kC;MAAA,oC;MAAA,sD;QAAsG,4C;O;MAAtG,6CACI,gB;QAAwC,+BAAW,CAAX,EAAc,CAAd,C;O;MAD5C,kF;MDiFA,uBAOe,yB;QArEf,8D;eAqEe,4B;UAAA,uB;YAAU,eAAsB,gB;YAAtB,OA5Dd,cAAc,SA4DgB,CA5DhB,CAAd,EAA2B,SA4DM,CA5DN,CAA3B,C;W;S;OA4DI,C;MfgkLf,sC;QAII,OAAO,mDepkLI,iBfokLiB,QepkLjB,CfokLJ,E;O;KAJX,C;wFAOA,yB;MAAA,wD;Me9kLA,sC;MCjFA,kC;MAAA,oC;MAAA,sD;QAAsG,4C;O;MAAtG,6CACI,gB;QAAwC,+BAAW,CAAX,EAAc,CAAd,C;O;MAD5C,kF;MDiFA,uBAOe,yB;QArEf,8D;eAqEe,4B;UAAA,uB;YAAU,eAAsB,gB;YAAtB,OA5Dd,cAAc,SA4DgB,CA5DhB,CAAd,EAA2B,SA4DM,CA5DN,CAA3B,C;W;S;OA4DI,C;MfukLf,sC;QAII,OAAO,mDe3kLI,iBf2kLiB,Qe3kLjB,Cf2kLJ,E;O;KAJX,C;0GAOA,yB;MAAA,wD;MelkLA,sC;MCpGA,kC;MAAA,oC;MAAA,sD;QAAsG,4C;O;MAAtG,6CACI,gB;QAAwC,+BAAW,CAAX,EAAc,CAAd,C;O;MAD5C,kF;MDoGA,iCAOe,yB;QAxFf,8D;eAwFe,4B;UAAA,uB;YAAU,eAAsB,gB;YAAtB,OA/Ed,cAAc,SA+EgB,CA/EhB,CAAd,EAA2B,SA+EM,CA/EN,CAA3B,C;W;S;OA+EI,C;Mf2jLf,sC;QAMI,OAAO,mDejkLI,2BfikL2B,QejkL3B,CfikLJ,E;O;KANX,C;4GASA,yB;MAAA,wD;Me3kLA,sC;MCpGA,kC;MAAA,oC;MAAA,sD;QAAsG,4C;O;MAAtG,6CACI,gB;QAAwC,+BAAW,CAAX,EAAc,CAAd,C;O;MAD5C,kF;MDoGA,iCAOe,yB;QAxFf,8D;eAwFe,4B;UAAA,uB;YAAU,eAAsB,gB;YAAtB,OA/Ed,cAAc,SA+EgB,CA/EhB,CAAd,EAA2B,SA+EM,CA/EN,CAA3B,C;W;S;OA+EI,C;MfokLf,sC;QAII,OAAO,mDexkLI,2BfwkL2B,QexkL3B,CfwkLJ,E;O;KAJX,C;4GAOA,yB;MAAA,wD;MellLA,sC;MCpGA,kC;MAAA,oC;MAAA,sD;QAAsG,4C;O;MAAtG,6CACI,gB;QAAwC,+BAAW,CAAX,EAAc,CAAd,C;O;MAD5C,kF;MDoGA,iCAOe,yB;QAxFf,8D;eAwFe,4B;UAAA,uB;YAAU,eAAsB,gB;YAAtB,OA/Ed,cAAc,SA+EgB,CA/EhB,CAAd,EAA2B,SA+EM,CA/EN,CAA3B,C;W;S;OA+EI,C;Mf2kLf,sC;QAII,OAAO,mDe/kLI,2Bf+kL2B,Qe/kL3B,Cf+kLJ,E;O;KAJX,C;4GAOA,yB;MAAA,wD;MezlLA,sC;MCpGA,kC;MAAA,oC;MAAA,sD;QAAsG,4C;O;MAAtG,6CACI,gB;QAAwC,+BAAW,CAAX,EAAc,CAAd,C;O;MAD5C,kF;MDoGA,iCAOe,yB;QAxFf,8D;eAwFe,4B;UAAA,uB;YAAU,eAAsB,gB;YAAtB,OA/Ed,cAAc,SA+EgB,CA/EhB,CAAd,EAA2B,SA+EM,CA/EN,CAA3B,C;W;S;OA+EI,C;MfklLf,sC;QAII,OAAO,mDetlLI,2BfslL2B,QetlL3B,CfslLJ,E;O;KAJX,C;4GAOA,yB;MAAA,wD;MehmLA,sC;MCpGA,kC;MAAA,oC;MAAA,sD;QAAsG,4C;O;MAAtG,6CACI,gB;QAAwC,+BAAW,CAAX,EAAc,CAAd,C;O;MAD5C,kF;MDoGA,iCAOe,yB;QAxFf,8D;eAwFe,4B;UAAA,uB;YAAU,eAAsB,gB;YAAtB,OA/Ed,cAAc,SA+EgB,CA/EhB,CAAd,EAA2B,SA+EM,CA/EN,CAA3B,C;W;S;OA+EI,C;MfylLf,sC;QAII,OAAO,mDe7lLI,2Bf6lL2B,Qe7lL3B,Cf6lLJ,E;O;KAJX,C;4GAOA,yB;MAAA,wD;MevmLA,sC;MCpGA,kC;MAAA,oC;MAAA,sD;QAAsG,4C;O;MAAtG,6CACI,gB;QAAwC,+BAAW,CAAX,EAAc,CAAd,C;O;MAD5C,kF;MDoGA,iCAOe,yB;QAxFf,8D;eAwFe,4B;UAAA,uB;YAAU,eAAsB,gB;YAAtB,OA/Ed,cAAc,SA+EgB,CA/EhB,CAAd,EAA2B,SA+EM,CA/EN,CAA3B,C;W;S;OA+EI,C;MfgmLf,sC;QAII,OAAO,mDepmLI,2BfomL2B,QepmL3B,CfomLJ,E;O;KAJX,C;4GAOA,yB;MAAA,wD;Me9mLA,sC;MCpGA,kC;MAAA,oC;MAAA,sD;QAAsG,4C;O;MAAtG,6CACI,gB;QAAwC,+BAAW,CAAX,EAAc,CAAd,C;O;MAD5C,kF;MDoGA,iCAOe,yB;QAxFf,8D;eAwFe,4B;UAAA,uB;YAAU,eAAsB,gB;YAAtB,OA/Ed,cAAc,SA+EgB,CA/EhB,CAAd,EAA2B,SA+EM,CA/EN,CAA3B,C;W;S;OA+EI,C;MfumLf,sC;QAII,OAAO,mDe3mLI,2Bf2mL2B,Qe3mL3B,Cf2mLJ,E;O;KAJX,C;4GAOA,yB;MAAA,wD;MernLA,sC;MCpGA,kC;MAAA,oC;MAAA,sD;QAAsG,4C;O;MAAtG,6CACI,gB;QAAwC,+BAAW,CAAX,EAAc,CAAd,C;O;MAD5C,kF;MDoGA,iCAOe,yB;QAxFf,8D;eAwFe,4B;UAAA,uB;YAAU,eAAsB,gB;YAAtB,OA/Ed,cAAc,SA+EgB,CA/EhB,CAAd,EAA2B,SA+EM,CA/EN,CAA3B,C;W;S;OA+EI,C;Mf8mLf,sC;QAII,OAAO,mDelnLI,2BfknL2B,QelnL3B,CfknLJ,E;O;KAJX,C;4GAOA,yB;MAAA,wD;Me5nLA,sC;MCpGA,kC;MAAA,oC;MAAA,sD;QAAsG,4C;O;MAAtG,6CACI,gB;QAAwC,+BAAW,CAAX,EAAc,CAAd,C;O;MAD5C,kF;MDoGA,iCAOe,yB;QAxFf,8D;eAwFe,4B;UAAA,uB;YAAU,eAAsB,gB;YAAtB,OA/Ed,cAAc,SA+EgB,CA/EhB,CAAd,EAA2B,SA+EM,CA/EN,CAA3B,C;W;S;OA+EI,C;MfqnLf,sC;QAII,OAAO,mDeznLI,2BfynL2B,QeznL3B,CfynLJ,E;O;KAJX,C;IAOA,qC;MAMI,OAAO,sBAAW,cAAX,C;K;IAGX,uC;MAIoB,kBc3gKQ,iB;Md2gKA,iB;MAAxB,OAAiC,WiB9qL1B,WjB8qL0B,C;K;IAGrC,uC;MAIoB,kBcxgKQ,iB;MdwgKA,iB;MAAxB,OAAiC,WiBrrL1B,WjBqrL0B,C;K;IAGrC,uC;MAIoB,kBcrgKQ,iB;MdqgKA,iB;MAAxB,OAAiC,WiB5rL1B,WjB4rL0B,C;K;IAGrC,uC;MAIoB,kBAAT,oB;MAAiB,mB;MAAxB,OAAiC,WiBnsL1B,WjBmsL0B,C;K;IAGrC,uC;MAIoB,kBchgKQ,iB;MdggKA,iB;MAAxB,OAAiC,WiB1sL1B,WjB0sL0B,C;K;IAGrC,uC;MAIoB,kBc7/JQ,iB;Md6/JA,iB;MAAxB,OAAiC,WiBjtL1B,WjBitL0B,C;K;IAGrC,uC;MAIoB,kBAAT,oB;MAAiB,iB;MAAxB,OAAiC,WiBxtL1B,WjBwtL0B,C;K;IAGrC,2C;MAMI,OAAmC,OAA5B,2BAAgB,UAAhB,CAA4B,C;K;IAGvC,6C;MAI0B,kBAAf,yB;MAAuB,iC;MAA9B,OAAqD,OiBxuL9C,WjBwuL8C,C;K;IAGzD,6C;MAI0B,kBAAf,yB;MAAuB,iC;MAA9B,OAAqD,OiB/uL9C,WjB+uL8C,C;K;IAGzD,6C;MAI0B,kBAAf,yB;MAAuB,iC;MAA9B,OAAqD,OiBtvL9C,WjBsvL8C,C;K;IAGzD,6C;MAI0B,kBAAf,yB;MAAuB,iC;MAA9B,OAAqD,OiB7vL9C,WjB6vL8C,C;K;IAGzD,6C;MAI0B,kBAAf,yB;MAAuB,iC;MAA9B,OAAqD,OiBpwL9C,WjBowL8C,C;K;IAGzD,6C;MAI0B,kBAAf,yB;MAAuB,iC;MAA9B,OAAqD,OiB3wL9C,WjB2wL8C,C;K;IAGzD,6C;MAI0B,kBAAf,yB;MAAuB,iC;MAA9B,OAAqD,OiBlxL9C,WjBkxL8C,C;K;IAGzD,6C;MAI0B,kBAAf,0B;MAAuB,iC;MAA9B,OAAqD,OiBzxL9C,WjByxL8C,C;K;IAkzBrD,gC;MAAQ,oBAAS,CAAT,EAAY,wBAAZ,C;K;IAMR,kC;MAAQ,oBAAS,CAAT,EAAY,0BAAZ,C;K;IAMR,kC;MAAQ,oBAAS,CAAT,EAAY,0BAAZ,C;K;IAMR,kC;MAAQ,oBAAS,CAAT,EAAY,0BAAZ,C;K;IAMR,kC;MAAQ,oBAAS,CAAT,EAAY,0BAAZ,C;K;IAMR,kC;MAAQ,oBAAS,CAAT,EAA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,ehC6uCpB,YAAK,KAAL,CgC7uCoB,CEoeR,ClCywB1B,C;cACI,sBAAO,K;cAAP,wB;;UAGR,sBAAO,E;;;QkC7wBP,0B;O;KAPJ,C;iGAUA,yB;MAAA,sC;MhCliBA,+B;MgCkiBA,0BAOgC,yB;QhCziBhC,+B;egCyiBgC,6B;UAAA,qB;YAAE,yBhC/hBQ,egC+hBE,EhC/hBF,CgC+hBR,C;W;S;OAAF,C;MAPhC,uC;QAOmB,kBAAR,iB;QAAQ,uB;;UlC0tBf,0D;YACI,IkC3tB0B,UhC/hBQ,eF0vCpB,YAAK,KAAL,CE1vCoB,CgC+hBR,ClC2tB1B,C;cACI,sBAAO,K;cAAP,wB;;UAGR,sBAAO,E;;;QkC/tBP,0B;O;KAPJ,C;iGAUA,yB;MAAA,sC;M9B/hBA,iC;M8B+hBA,0BAOgC,yB;Q9BtiBhC,iC;e8BsiBgC,6B;UAAA,qB;YAAE,yB9B5hBW,gB8B4hBD,E9B5hBC,C8B4hBX,C;W;S;OAAF,C;MAPhC,uC;QAOmB,kBAAR,iB;QAAQ,uB;;UlC4tBf,0D;YACI,IkC7tB0B,U9B5hBW,gBJyvCvB,YAAK,KAAL,CIzvCuB,C8B4hBX,ClC6tB1B,C;cACI,sBAAO,K;cAAP,wB;;UAGR,sBAAO,E;;;QkCjuBP,0B;O;KAPJ,C;+FAUA,yB;MAAA,sC;MlC60BA,0D;MAAA,+C;MGj2CA,6B;M+BohBA,yBAO+B,yB;Q/B3hB/B,6B;e+B2hB+B,6B;UAAA,qB;YAAE,yB/BjhBM,c+BihBI,E/BjhBJ,C+BihBN,C;W;S;OAAF,C;MAP/B,uC;QAOmB,kBAAR,iB;QAAQ,sB;;UlC00BD,Q;UAAA,OAAQ,SAAR,wBAAQ,CAAR,W;UAAd,OAAc,cAAd,C;YAAc,uB;YACV,IkC30ByB,U/BjhBM,cH41CjB,YAAK,KAAL,CG51CiB,C+BihBN,ClC20BzB,C;cACI,qBAAO,K;cAAP,uB;;UAGR,qBAAO,E;;;QkC/0BP,yB;O;KAPJ,C;+FAUA,yB;MAAA,sC;MlC+0BA,0D;MAAA,+C;MgC91CA,+B;ME+gBA,yBAO+B,yB;QFthB/B,+B;eEshB+B,6B;UAAA,qB;YAAE,yBF5gBS,eE4gBC,EF5gBD,CE4gBT,C;W;S;OAAF,C;MAP/B,uC;QAOmB,kBAAR,iB;QAAQ,sB;;UlC40BD,Q;UAAA,OAAQ,SAAR,wBAAQ,CAAR,W;UAAd,OAAc,cAAd,C;YAAc,uB;YACV,IkC70ByB,UF5gBS,ehCy1CpB,YAAK,KAAL,CgCz1CoB,CE4gBT,ClC60BzB,C;cACI,qBAAO,K;cAAP,uB;;UAGR,qBAAO,E;;;QkCj1BP,yB;O;KAPJ,C;+FAUA,yB;MAAA,sC;MlCiyBA,0D;MAAA,+C;ME32CA,+B;MgC0kBA,yBAO+B,yB;QhCjlB/B,+B;egCilB+B,6B;UAAA,qB;YAAE,yBhCvkBS,egCukBC,EhCvkBD,CgCukBT,C;W;S;OAAF,C;MAP/B,uC;QAOmB,kBAAR,iB;QAAQ,sB;;UlC8xBD,Q;UAAA,OAAQ,SAAR,wBAAQ,CAAR,W;UAAd,OAAc,cAAd,C;YAAc,uB;YACV,IkC/xByB,UhCvkBS,eFs2CpB,YAAK,KAAL,CEt2CoB,CgCukBT,ClC+xBzB,C;cACI,qBAAO,K;cAAP,uB;;UAGR,qBAAO,E;;;QkCnyBP,yB;O;KAPJ,C;+FAUA,yB;MAAA,sC;MlCmyBA,0D;MAAA,+C;MI12CA,iC;M8BukBA,yBAO+B,yB;Q9B9kB/B,iC;e8B8kB+B,6B;UAAA,qB;YAAE,yB9BpkBY,gB8BokBF,E9BpkBE,C8BokBZ,C;W;S;OAAF,C;MAP/B,uC;QAOmB,kBAAR,iB;QAAQ,sB;;UlCgyBD,Q;UAAA,OAAQ,SAAR,wBAAQ,CAAR,W;UAAd,OAAc,cAAd,C;YAAc,uB;YACV,IkCjyByB,U9BpkBY,gBJq2CvB,YAAK,KAAL,CIr2CuB,C8BokBZ,ClCiyBzB,C;cACI,qBAAO,K;cAAP,uB;;UAGR,qBAAO,E;;;QkCryBP,yB;O;KAPJ,C;iFAUA,yB;MAAA,4C;M/B5jBA,6B;M+B4jBA,4B;QAQI,O/B1jBmC,c+B0jBpB,KAAR,iBAAQ,C/B1jBoB,C;O;K+BkjBvC,C;iFAWA,yB;MAAA,4C;MFxjBA,+B;MEwjBA,4B;QAQI,OFtjBsC,eEsjBvB,KAAR,iBAAQ,CFtjBuB,C;O;KE8iB1C,C;iFAWA,yB;MAAA,4C;MhCpnBA,+B;MgConBA,4B;QAQI,OhCln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AO,0BAAa,IAAb,EAAmB,GAAnB,EAAwB,GAAxB,C;K;IAGX,sC;MAQI,OAAO,0BAAa,IAAb,EAAmB,GAAnB,EAAwB,GAAxB,C;K;IAGX,sC;MAQI,OAAO,0BAAa,IAAb,EAAmB,GAAnB,EAAwB,GAAxB,C;K;IAGX,sC;MAQI,OAAO,0BAAa,IAAb,EAAmB,GAAnB,EAAwB,GAAxB,C;K;sFAGX,yB;MpBv/EA,8C;MoBu/EA,kF;QAmB6D,iC;UAAA,oBAAyB,C;QAAG,0B;UAAA,aAAkB,C;QAAG,wB;UAAA,WAAgB,c;QpBt/E1H,UoBu/EA,iBpBv/EA,EoBu/EiB,WAAY,QpBv/E7B,EoBu/EsC,iBpBv/EtC,EoBu/EyD,UpBv/EzD,EoBu/EqE,QpBv/ErE,C;QoBw/EA,OAAO,W;O;KArBX,C;wFAwBA,yB;MpBv/EA,8C;MoBu/EA,kF;QAmB+D,iC;UAAA,oBAAyB,C;QAAG,0B;UAAA,aAAkB,C;QAAG,wB;UAAA,WAAgB,c;QpBt/E5H,UoBu/EA,iBpBv/EA,EoBu/EiB,WAAY,QpBv/E7B,EoBu/EsC,iBpBv/EtC,EoBu/EyD,UpBv/EzD,EoBu/EqE,QpBv/ErE,C;QoBw/EA,OAAO,W;O;KArBX,C;wFAwBA,yB;MpBvlFA,8C;MoBulFA,kF;QAmB+D,iC;UAAA,oBAAyB,C;QAAG,0B;UAAA,aAAkB,C;QAAG,wB;UAAA,WAAgB,c;QpBtlF5H,UoBulFA,iBpBvlFA,EoBulFiB,WAAY,QpBvlF7B,EoBulFsC,iBpBvlFtC,EoBulFyD,UpBvlFzD,EoBulFqE,QpBvlFrE,C;QoBwlFA,OAAO,W;O;KArBX,C;wFAwBA,yB;MpBvlFA,8C;MoBulFA,kF;QAmBiE,iC;UAAA,oBAAyB,C;QAAG,0B;UAAA,aAAkB,C;QAAG,wB;UAAA,WAAgB,c;QpBtlF9H,UoBulFA,iBpBvlFA,EoBulFiB,WAAY,QpBvlF7B,EoBulFsC,iBpBvlFtC,EoBulFyD,UpBvlFzD,EoBulFqE,QpBvlFrE,C;QoBwlFA,OAAO,W;O;KArBX,C;kFAwBA,yB;MAAA,uC;MAAA,4B;QASI,OAAO,mBAAU,iBpB36EO,QoB26EjB,C;O;KATX,C;o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a2BqrHuC,gB;YAA5B,W3BprHX,a2BorHgC,G3BprHhC,EAAS,MAAT,C;YACA,e;;YAEA,c;;U2BirHA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAET,OAAO,W;O;KAjBX,C;2FAoBA,yB;MAAA,+D;MAAA,sD;QAYoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;U3BzsHP,U;UADP,Y2B2sHe,W3B3sHH,W2B2sHwB,G3B3sHxB,C;UACL,IAAI,aAAJ,C;YACH,a2BysHuC,gB;YAA5B,W3BxsHX,a2BwsHgC,G3BxsHhC,EAAS,MAAT,C;YACA,e;;YAEA,c;;U2BqsHA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAET,OAAO,W;O;KAjBX,C;2FAoBA,yB;MAAA,+D;MAAA,sD;QAYoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;U3B7tHP,U;UADP,Y2B+tHe,W3B/tHH,W2B+tHwB,G3B/tHxB,C;UACL,IAAI,aAAJ,C;YACH,a2B6tHuC,gB;YAA5B,W3B5tHX,a2B4tHgC,G3B5tHhC,EAAS,MAAT,C;YACA,e;;YAEA,c;;U2BytHA,iB;UACA,IAAK,WAAI,OAAJ,C;;QAET,OAAO,W;O;KAjBX,C;2FAoBA,yB;MAAA,+D;MAAA,sE;QAaoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;U3BlvHP,U;UADP,Y2BovHe,W3BpvHH,W2BovHwB,G3BpvHxB,C;UACL,IAAI,aAAJ,C;YACH,a2BkvHuC,gB;YAA5B,W3BjvHX,a2BivHgC,G3BjvHhC,EAAS,MAAT,C;YACA,e;;YAEA,c;;U2B8uHA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;O;KAlBX,C;2FAqBA,yB;MAAA,+D;MAAA,sE;QAaoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;U3BvwHP,U;UADP,Y2BywHe,W3BzwHH,W2BywHwB,G3BzwHxB,C;UACL,IAAI,aAAJ,C;YACH,a2BuwHuC,gB;YAA5B,W3BtwHX,a2BswHgC,G3BtwHhC,EAAS,MAAT,C;YACA,e;;YAEA,c;;U2BmwHA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;O;KAlBX,C;2FAqBA,yB;MAAA,+D;MAAA,sE;QAaoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;U3B5xHP,U;UADP,Y2B8xHe,W3B9xHH,W2B8xHwB,G3B9xHxB,C;UACL,IAAI,aAAJ,C;YACH,a2B4xHuC,gB;YAA5B,W3B3xHX,a2B2xHgC,G3B3xHhC,EAAS,MAAT,C;YACA,e;;YAEA,c;;U2BwxHA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;O;KAlBX,C;2FAqBA,yB;MAAA,+D;MAAA,sE;QAaoB,Q;QAAA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,UAAU,YAAY,OAAZ,C;U3BjzHP,U;UADP,Y2BmzHe,W3BnzHH,W2BmzHwB,G3BnzHxB,C;UACL,IAAI,aAAJ,C;YACH,a2BizHuC,gB;YAA5B,W3BhzHX,a2BgzHgC,G3BhzHhC,EAAS,MAAT,C;YACA,e;;YAEA,c;;U2B6yHA,iB;UACA,IAAK,WAAI,eAAe,OAAf,CAAJ,C;;QAET,OAAO,W;O;KAlBX,C;+EAqBA,yB;MAAA,gE;MAAA,uC;QAUW,kBAAM,eAAa,cAAb,C;QAsKA,Q;QAAA,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WAvKiB,SAuKb,CAAU,IAAV,CAAJ,C;;QAvKhB,OAwKO,W;O;KAlLX,C;+EAaA,yB;MAAA,gE;MAAA,uC;QAUW,kBAAM,eAAa,cAAb,C;QAsKA,Q;QAAA,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WAvKiB,SAuKb,CAAU,IAAV,CAAJ,C;;QAvKhB,OAwKO,W;O;KAlLX,C;8EAaA,yB;MAAA,gE;MAAA,uC;QAUW,kBAAM,eAAa,cAAb,C;QAsKA,Q;QAAA,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WAvKiB,SAuKb,CAAU,IAAV,CAAJ,C;;QAvKhB,OAwKO,W;O;KAlLX,C;+EAaA,yB;MAAA,gE;MAAA,uC;QAUW,kBAAM,eAAa,cAAb,C;QAsKA,Q;QAAA,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WAvKiB,SAuKb,CAAU,IAAV,CAAJ,C;;QAvKhB,OAwKO,W;O;KAlLX,C;4FAaA,yB;MAAA,gE;MAAA,uC;QAUW,kBAAa,eAAa,cAAb,C;QAqDP,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WAtDwB,SAsDpB,EAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;QAtDhB,OAuDO,W;O;KAjEX,C;6FAaA,yB;MAAA,gE;MAAA,uC;QAUW,kBAAa,eAAa,cAAb,C;QAwDP,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WAzDwB,SAyDpB,EAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;QAzDhB,OA0DO,W;O;KApEX,C;6FAaA,yB;MAAA,gE;MAAA,uC;QAUW,kBAAa,eAAa,cAAb,C;QA2DP,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WA5DwB,SA4DpB,EAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;QA5DhB,OA6DO,W;O;KAvEX,C;4FAaA,yB;MAAA,gE;MAAA,uC;QAUW,kBAAa,eAAa,cAAb,C;QA8DP,gB;QADb,YAAY,C;QACC,2B;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,WAAY,WA/DwB,SA+DpB,EAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;QA/DhB,OAgEO,W;O;KA1EX,C;iGAaA,6C;MAWiB,UACiB,M;MAF9B,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;MAChB,OAAO,W;K;iGAGX,6C;MAWiB,UACiB,M;MAF9B,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;MAChB,OAAO,W;K;iGAGX,6C;MAWiB,UACiB,M;MAF9B,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;MAChB,OAAO,W;K;iGAGX,6C;MAWiB,UACiB,M;MAF9B,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,WAAU,cAAV,EAAU,sBAAV,WAAmB,IAAnB,CAAJ,C;;MAChB,OAAO,W;K;mFAGX,6C;MAQiB,Q;MAAA,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;K;mFAGX,6C;MAQiB,Q;MAAA,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;K;mFAGX,6C;MAQiB,Q;MAAA,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;K;mFAGX,6C;MAQiB,Q;MAAA,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WAAI,UAAU,IAAV,CAAJ,C;;MAChB,OAAO,W;K;IAUiB,6C;MAAA,mB;QAAE,gC;O;K;IAP9B,iC;MAOI,OAAO,qBAAiB,8BAAjB,C;K;IAUiB,6C;MAAA,mB;QAAE,gC;O;K;IAP9B,iC;MAOI,OAAO,qBAAiB,8BAAjB,C;K;IAUiB,6C;MAAA,mB;QAAE,gC;O;K;IAP9B,iC;MAOI,OAAO,qBAAiB,8BAAjB,C;K;IAUiB,6C;MAAA,mB;QAAE,gC;O;K;IAP9B,iC;MAOI,OAAO,qBAAiB,8BAAjB,C;K;+EAGX,gC;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;K;+EAGX,gC;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;K;+EAGX,gC;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;K;+EAGX,gC;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,CAAC,UAAU,OAAV,CAAL,C;UAAyB,OAAO,K;;MACtD,OAAO,I;K;+EAGX,yB;MAAA,0C;MAAA,4B;QASI,OAAe,IAAR,iBAAQ,C;O;KATnB,C;+EAYA,yB;MAAA,0C;MAAA,4B;QASI,OAAe,IAAR,iBAAQ,C;O;KATnB,C;+EAYA,yB;MAAA,0C;MAAA,4B;QASI,OAAe,IAAR,iBAAQ,C;O;KATnB,C;+EAYA,yB;MAAA,0C;MAAA,4B;QASI,OAAe,IAAR,iBAAQ,C;O;KATnB,C;+EAYA,gC;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;K;+EAGX,gC;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;K;+EAGX,gC;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;K;+EAGX,gC;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,I;;MACrD,OAAO,K;K;mFAGX,gC;MAQoB,Q;MADhB,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,qB;;MAC9C,OAAO,K;K;mFAGX,gC;MAQoB,Q;MADhB,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,qB;;MAC9C,OAAO,K;K;mFAGX,gC;MAQoB,Q;MADhB,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,qB;;MAC9C,OAAO,K;K;mFAGX,gC;MAQoB,Q;MADhB,YAAY,C;MACI,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,qB;;MAC9C,OAAO,K;K;iFAGX,yC;MAQoB,Q;MADhB,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;K;iFAGX,yC;MAQoB,Q;MADhB,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;K;iFAGX,yC;MAQoB,Q;MADhB,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;K;iFAGX,yC;MAQoB,Q;MADhB,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;;MACpC,OAAO,W;K;+FAGX,yC;MAYoB,UAA8B,M;MAF9C,YAAY,C;MACZ,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,OAAhC,C;;MACpC,OAAO,W;K;+FAGX,yC;MAYoB,UAA8B,M;MAF9C,YAAY,C;MACZ,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,OAAhC,C;;MACpC,OAAO,W;K;+FAGX,yC;MAYoB,UAA8B,M;MAF9C,YAAY,C;MACZ,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,OAAhC,C;;MACpC,OAAO,W;K;+FAGX,yC;MAYoB,UAA8B,M;MAF9C,YAAY,C;MACZ,kBAAkB,O;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,cAAc,WAAU,cAAV,EAAU,sBAAV,WAAmB,WAAnB,EAAgC,OAAhC,C;;MACpC,OAAO,W;K;0FAGX,yB;MA1yCI,8D;MA0yCJ,gD;QAUoC,Q;QAHhC,YAjzCgB,cAAR,iBAAQ,C;QAkzChB,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,YAAJ,EAAI,oBAAJ,QAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;O;KAZX,C;2FAeA,yB;MAjzCI,8D;MAizCJ,gD;QAUoC,Q;QAHhC,YAxzCgB,cAAR,iBAAQ,C;QAyzChB,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,YAAJ,EAAI,oBAAJ,QAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;O;KAZX,C;2FAeA,yB;MAxzCI,8D;MAwzCJ,gD;QAUoC,Q;QAHhC,YA/zCgB,cAAR,iBAAQ,C;QAg0ChB,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,YAAJ,EAAI,oBAAJ,QAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;O;KAZX,C;2FAeA,yB;MA/zCI,8D;MA+zCJ,gD;QAUoC,Q;QAHhC,YAt0CgB,cAAR,iBAAQ,C;QAu0ChB,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,YAAJ,EAAI,oBAAJ,QAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;O;KAZX,C;yGAeA,yB;MAt2CI,8D;MAs2CJ,gD;QAUI,YAh3CgB,cAAR,iBAAQ,C;QAi3ChB,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,sBAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;O;KAhBX,C;yGAmBA,yB;MAj3CI,8D;MAi3CJ,gD;QAUI,YA33CgB,cAAR,iBAAQ,C;QA43ChB,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,sBAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;O;KAhBX,C;yGAmBA,yB;MA53CI,8D;MA43CJ,gD;QAUI,YAt4CgB,cAAR,iBAAQ,C;QAu4ChB,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,sBAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;O;KAhBX,C;yGAmBA,yB;MAv4CI,8D;MAu4CJ,gD;QAUI,YAj5CgB,cAAR,iBAAQ,C;QAk5ChB,kBAAkB,O;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,sBAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;O;KAhBX,C;uFAmBA,6B;MAOoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,OAAO,OAAP,C;;K;uFAG1B,6B;MAOoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,OAAO,OAAP,C;;K;uFAG1B,6B;MAOoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,OAAO,OAAP,C;;K;uFAG1B,6B;MAOoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,OAAO,OAAP,C;;K;qGAG1B,6B;MAUiB,UAAa,M;MAD1B,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QAAM,QAAO,cAAP,EAAO,sBAAP,WAAgB,IAAhB,C;;K;qGAGvB,6B;MAUiB,UAAa,M;MAD1B,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QAAM,QAAO,cAAP,EAAO,sBAAP,WAAgB,IAAhB,C;;K;qGAGvB,6B;MAUiB,UAAa,M;MAD1B,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QAAM,QAAO,cAAP,EAAO,sBAAP,WAAgB,IAAhB,C;;K;qGAGvB,6B;MAUiB,UAAa,M;MAD1B,YAAY,C;MACC,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QAAM,QAAO,cAAP,EAAO,sBAAP,WAAgB,IAAhB,C;;K;IAGvB,2B;MAQiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAthDG,gBAAR,iBAAQ,C;MAshDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,I/Br4J8D,Y+Bq4J1D,G/Br4J2E,KAAjB,E+Bq4JpD,C/Br4JiF,KAA7B,C+Bq4J1D,IAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;K;IAGX,2B;MAQiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OA7hDG,gBAAR,iBAAQ,C;MA6hDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IF54J+D,aE44J3D,GF54J6E,KAAlB,EE44JrD,CF54JmF,KAA9B,CE44J3D,IAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;K;IAGX,2B;MAQiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OApiDG,gBAAR,iBAAQ,C;MAoiDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IhCn7J4E,0BgCm7JxE,GhCnyJ8B,KAAL,GAAiB,GAhJ8B,EgCm7JlE,ChCnyJwB,KAAL,GAAiB,GAhJ8B,CgCm7JxE,IAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;K;IAGX,2B;MAQiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OA3iDG,gBAAR,iBAAQ,C;MA2iDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,I9B17J6E,0B8B07JzE,G9BjzJ8B,KAAL,GAAiB,KAzI+B,E8B07JnE,C9BjzJwB,KAAL,GAAiB,KAzI+B,C8B07JzE,IAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;K;mFAGX,yB;MA1kDI,8D;MA0kDJ,sC;QASI,IAAI,mBAAJ,C;UAAe,OAAO,I;QACtB,cAAc,sBAAK,CAAL,C;QACd,gBArlDgB,cAqlDA,SArlDR,QAAQ,C;QAslDhB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,sBAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;QAGnB,OAAO,O;O;KAtBX,C;mFAyBA,yB;MA3lDI,8D;MA2lDJ,sC;QASI,IAAI,mBAAJ,C;UAAe,OAAO,I;QACtB,cAAc,sBAAK,CAAL,C;QACd,gBAtmDgB,cAsmDA,SAtmDR,QAAQ,C;QAumDhB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,sBAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;QAGnB,OAAO,O;O;KAtBX,C;mFAyBA,yB;MA5mDI,8D;MA4mDJ,sC;QASI,IAAI,mBAAJ,C;UAAe,OAAO,I;QACtB,cAAc,sBAAK,CAAL,C;QACd,gBAvnDgB,cAunDA,SAvnDR,QAAQ,C;QAwnDhB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,sBAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;QAGnB,OAAO,O;O;KAtBX,C;mFAyBA,yB;MA7nDI,8D;MA6nDJ,sC;QASI,IAAI,mBAAJ,C;UAAe,OAAO,I;QACtB,cAAc,sBAAK,CAAL,C;QACd,gBAxoDgB,cAwoDA,SAxoDR,QAAQ,C;QAyoDhB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,sBAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;QAGnB,OAAO,O;O;KAtBX,C;IAyBA,2C;MAQiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAtrDG,gBAAR,iBAAQ,C;MAsrDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;K;IAGX,2C;MAQiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OA7rDG,gBAAR,iBAAQ,C;MA6rDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;K;IAGX,2C;MAQiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OApsDG,gBAAR,iBAAQ,C;MAosDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;K;IAGX,2C;MAQiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OA3sDG,gBAAR,iBAAQ,C;MA2sDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;K;IAGX,2B;MAQiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAlvDG,gBAAR,iBAAQ,C;MAkvDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,I/BjmK8D,Y+BimK1D,G/BjmK2E,KAAjB,E+BimKpD,C/BjmKiF,KAA7B,C+BimK1D,IAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;K;IAGX,2B;MAQiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAzvDG,gBAAR,iBAAQ,C;MAyvDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IFxmK+D,aEwmK3D,GFxmK6E,KAAlB,EEwmKrD,CFxmKmF,KAA9B,CEwmK3D,IAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;K;IAGX,2B;MAQiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAhwDG,gBAAR,iBAAQ,C;MAgwDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IhC/oK4E,0BgC+oKxE,GhC//J8B,KAAL,GAAiB,GAhJ8B,EgC+oKlE,ChC//JwB,KAAL,GAAiB,GAhJ8B,CgC+oKxE,IAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;K;IAGX,2B;MAQiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAvwDG,gBAAR,iBAAQ,C;MAuwDhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,I9BtpK6E,0B8BspKzE,G9B7gK8B,KAAL,GAAiB,KAzI+B,E8BspKnE,C9B7gKwB,KAAL,GAAiB,KAzI+B,C8BspKzE,IAAJ,C;UAAa,MAAM,C;;MAEvB,OAAO,G;K;mFAGX,yB;MAtyDI,8D;MAsyDJ,sC;QASI,IAAI,mBAAJ,C;UAAe,OAAO,I;QACtB,cAAc,sBAAK,CAAL,C;QACd,gBAjzDgB,cAizDA,SAjzDR,QAAQ,C;QAkzDhB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,sBAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;QAGnB,OAAO,O;O;KAtBX,C;mFAyBA,yB;MAvzDI,8D;MAuzDJ,sC;QASI,IAAI,mBAAJ,C;UAAe,OAAO,I;QACtB,cAAc,sBAAK,CAAL,C;QACd,gBAl0DgB,cAk0DA,SAl0DR,QAAQ,C;QAm0DhB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,sBAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;QAGnB,OAAO,O;O;KAtBX,C;mFAyBA,yB;MAx0DI,8D;MAw0DJ,sC;QASI,IAAI,mBAAJ,C;UAAe,OAAO,I;QACtB,cAAc,sBAAK,CAAL,C;QACd,gBAn1DgB,cAm1DA,SAn1DR,QAAQ,C;QAo1DhB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,sBAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;QAGnB,OAAO,O;O;KAtBX,C;mFAyBA,yB;MAz1DI,8D;MAy1DJ,sC;QASI,IAAI,mBAAJ,C;UAAe,OAAO,I;QACtB,cAAc,sBAAK,CAAL,C;QACd,gBAp2DgB,cAo2DA,SAp2DR,QAAQ,C;QAq2DhB,IAAI,cAAa,CAAjB,C;UAAoB,OAAO,O;QAC3B,eAAe,SAAS,OAAT,C;QACf,aAAU,CAAV,OAAa,SAAb,M;UACI,QAAQ,sBAAK,CAAL,C;UACR,QAAQ,SAAS,CAAT,C;UACR,IAAI,2BAAW,CAAX,KAAJ,C;YACI,UAAU,C;YACV,WAAW,C;;QAGnB,OAAO,O;O;KAtBX,C;IAyBA,2C;MAQiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAl5DG,gBAAR,iBAAQ,C;MAk5DhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;K;IAGX,2C;MAQiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAz5DG,gBAAR,iBAAQ,C;MAy5DhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;K;IAGX,2C;MAQiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAh6DG,gBAAR,iBAAQ,C;MAg6DhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;K;IAGX,2C;MAQiB,Q;MAFb,IAAI,mBAAJ,C;QAAe,OAAO,I;MACtB,UAAU,sBAAK,CAAL,C;MACG,OAv6DG,gBAAR,iBAAQ,C;MAu6DhB,aAAU,CAAV,iB;QACI,QAAQ,sBAAK,CAAL,C;QACR,IAAI,UAAW,SAAQ,GAAR,EAAa,CAAb,CAAX,GAA6B,CAAjC,C;UAAoC,MAAM,C;;MAE9C,OAAO,G;K;iFAGX,qB;MASI,OAAO,mB;K;iFAGX,qB;MASI,OAAO,mB;K;iFAGX,qB;MASI,OAAO,mB;K;iFAGX,qB;MASI,OAAO,mB;K;iFAGX,gC;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;K;iFAGX,gC;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;K;iFAGX,gC;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;K;iFAGX,gC;MASoB,Q;MAAA,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QAAM,IAAI,UAAU,OAAV,CAAJ,C;UAAwB,OAAO,K;;MACrD,OAAO,I;K;qFAGX,yB;MAAA,4F;MA1iEI,8D;MA0iEJ,uC;QAYqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,sBAAK,CAAL,C;QACD,OAtjED,cAAR,iBAAQ,C;QAsjEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,sBAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;O;KAfX,C;qFAkBA,yB;MAAA,4F;MApjEI,8D;MAojEJ,uC;QAYqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,sBAAK,CAAL,C;QACD,OAhkED,cAAR,iBAAQ,C;QAgkEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,sBAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;O;KAfX,C;qFAkBA,yB;MAAA,4F;MA9jEI,8D;MA8jEJ,uC;QAYqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,sBAAK,CAAL,C;QACD,OA1kED,cAAR,iBAAQ,C;QA0kEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,sBAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;O;KAfX,C;qFAkBA,yB;MAAA,4F;MAxkEI,8D;MAwkEJ,uC;QAYqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,sBAAK,CAAL,C;QACD,OAplED,cAAR,iBAAQ,C;QAolEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,sBAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;O;KAfX,C;mGAkBA,yB;MAAA,4F;MAlnEI,8D;MAknEJ,uC;QAeqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,sBAAK,CAAL,C;QACD,OAjoED,cAAR,iBAAQ,C;QAioEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,sBAAK,KAAL,CAA9B,C;;QAElB,OAAO,W;O;KAlBX,C;mGAqBA,yB;MAAA,4F;MA/nEI,8D;MA+nEJ,uC;QAeqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,sBAAK,CAAL,C;QACD,OA9oED,cAAR,iBAAQ,C;QA8oEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,sBAAK,KAAL,CAA9B,C;;QAElB,OAAO,W;O;KAlBX,C;mGAqBA,yB;MAAA,4F;MA5oEI,8D;MA4oEJ,uC;QAeqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,sBAAK,CAAL,C;QACD,OA3pED,cAAR,iBAAQ,C;QA2pEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,sBAAK,KAAL,CAA9B,C;;QAElB,OAAO,W;O;KAlBX,C;mGAqBA,yB;MAAA,4F;MAzpEI,8D;MAypEJ,uC;QAeqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,MAAM,mCAA8B,+BAA9B,C;QACV,kBAAkB,sBAAK,CAAL,C;QACD,OAxqED,cAAR,iBAAQ,C;QAwqEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,sBAAK,KAAL,CAA9B,C;;QAElB,OAAO,W;O;KAlBX,C;iGAqBA,yB;MAtsEI,8D;MAssEJ,uC;QAaqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,OAAO,I;QACX,kBAAkB,sBAAK,CAAL,C;QACD,OAntED,cAAR,iBAAQ,C;QAmtEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,sBAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;O;KAhBX,C;iGAmBA,yB;MAjtEI,8D;MAitEJ,uC;QAaqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,OAAO,I;QACX,kBAAkB,sBAAK,CAAL,C;QACD,OA9tED,cAAR,iBAAQ,C;QA8tEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,sBAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;O;KAhBX,C;iGAmBA,yB;MA5tEI,8D;MA4tEJ,uC;QAaqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,OAAO,I;QACX,kBAAkB,sBAAK,CAAL,C;QACD,OAzuED,cAAR,iBAAQ,C;QAyuEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,sBAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;O;KAhBX,C;iGAmBA,yB;MAvuEI,8D;MAuuEJ,uC;QAaqB,Q;QAHjB,IAAI,mBAAJ,C;UACI,OAAO,I;QACX,kBAAkB,sBAAK,CAAL,C;QACD,OApvED,cAAR,iBAAQ,C;QAovEhB,iBAAc,CAAd,yB;UACI,cAAc,UAAU,WAAV,EAAuB,sBAAK,KAAL,CAAvB,C;;QAElB,OAAO,W;O;KAhBX,C;+FAmBA,yB;MAAA,4F;MAlxEI,8D;MAkxEJ,uC;QAW0B,UAEU,M;QAJhC,YA3xEgB,cAAR,iBAAQ,C;QA4xEhB,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,cAAJ,EAAI,sBAAJ,UAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;O;KAfX,C;+FAkBA,yB;MAAA,4F;MA5xEI,8D;MA4xEJ,uC;QAW0B,UAEU,M;QAJhC,YAryEgB,cAAR,iBAAQ,C;QAsyEhB,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,cAAJ,EAAI,sBAAJ,UAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;O;KAfX,C;+FAkBA,yB;MAAA,4F;MAtyEI,8D;MAsyEJ,uC;QAW0B,UAEU,M;QAJhC,YA/yEgB,cAAR,iBAAQ,C;QAgzEhB,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,cAAJ,EAAI,sBAAJ,UAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;O;KAfX,C;+FAkBA,yB;MAAA,4F;MAhzEI,8D;MAgzEJ,uC;QAW0B,UAEU,M;QAJhC,YAzzEgB,cAAR,iBAAQ,C;QA0zEhB,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,cAAJ,EAAI,sBAAJ,UAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;O;KAfX,C;6GAkBA,yB;MAAA,4F;MA11EI,8D;MA01EJ,uC;QAc0B,Q;QAFtB,YAt2EgB,cAAR,iBAAQ,C;QAu2EhB,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,sBAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;O;KAnBX,C;6GAsBA,yB;MAAA,4F;MAx2EI,8D;MAw2EJ,uC;QAc0B,Q;QAFtB,YAp3EgB,cAAR,iBAAQ,C;QAq3EhB,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,sBAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;O;KAnBX,C;6GAsBA,yB;MAAA,4F;MAt3EI,8D;MAs3EJ,uC;QAc0B,Q;QAFtB,YAl4EgB,cAAR,iBAAQ,C;QAm4EhB,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,sBAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;O;KAnBX,C;6GAsBA,yB;MAAA,4F;MAp4EI,8D;MAo4EJ,uC;QAc0B,Q;QAFtB,YAh5EgB,cAAR,iBAAQ,C;QAi5EhB,IAAI,QAAQ,CAAZ,C;UAAe,MAAM,mCAA8B,+BAA9B,C;QACrB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,KAAV,EAAiB,sBAAI,KAAJ,CAAjB,EAA6B,WAA7B,C;UACd,qB;;QAEJ,OAAO,W;O;KAnBX,C;2GAsBA,yB;MAl7EI,8D;MAk7EJ,uC;QAY0B,UAEU,M;QAJhC,YA57EgB,cAAR,iBAAQ,C;QA67EhB,IAAI,QAAQ,CAAZ,C;UAAe,OAAO,I;QACtB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,cAAJ,EAAI,sBAAJ,UAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;O;KAhBX,C;2GAmBA,yB;MA77EI,8D;MA67EJ,uC;QAY0B,UAEU,M;QAJhC,YAv8EgB,cAAR,iBAAQ,C;QAw8EhB,IAAI,QAAQ,CAAZ,C;UAAe,OAAO,I;QACtB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,cAAJ,EAAI,sBAAJ,UAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;O;KAhBX,C;2GAmBA,yB;MAx8EI,8D;MAw8EJ,uC;QAY0B,UAEU,M;QAJhC,YAl9EgB,cAAR,iBAAQ,C;QAm9EhB,IAAI,QAAQ,CAAZ,C;UAAe,OAAO,I;QACtB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,cAAJ,EAAI,sBAAJ,UAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;O;KAhBX,C;2GAmBA,yB;MAn9EI,8D;MAm9EJ,uC;QAY0B,UAEU,M;QAJhC,YA79EgB,cAAR,iBAAQ,C;QA89EhB,IAAI,QAAQ,CAAZ,C;UAAe,OAAO,I;QACtB,kBAAkB,uBAAI,YAAJ,EAAI,oBAAJ,Q;QAClB,OAAO,SAAS,CAAhB,C;UACI,cAAc,UAAU,uBAAI,cAAJ,EAAI,sBAAJ,UAAV,EAAwB,WAAxB,C;;QAElB,OAAO,W;O;KAhBX,C;iFAmBA,yB;MAAA,gD;MAAA,gE;MAAA,gD;QAmBoB,Q;QAHhB,IAAI,mBAAJ,C;UAAe,OAAO,OAAO,OAAP,C;QACc,kBAAvB,eAAa,iBAAO,CAAP,IAAb,C;QAA+B,8B;QAA5C,ajBt2LO,W;QiBu2LP,kBAAkB,O;QACF,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;UACd,MAAO,WAAI,WAAJ,C;;QAEX,OAAO,M;O;KAvBX,C;iFA0BA,yB;MAAA,gD;MAAA,gE;MAAA,gD;QAmBoB,Q;QAHhB,IAAI,mBAAJ,C;UAAe,OAAO,OAAO,OAAP,C;QACc,kBAAvB,eAAa,iBAAO,CAAP,IAAb,C;QAA+B,8B;QAA5C,ajBh4LO,W;QiBi4LP,kBAAkB,O;QACF,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;UACd,MAAO,WAAI,WAAJ,C;;QAEX,OAAO,M;O;KAvBX,C;iFA0BA,yB;MAAA,gD;MAAA,gE;MAAA,gD;QAmBoB,Q;QAHhB,IAAI,mBAAJ,C;UAAe,OAAO,OAAO,OAAP,C;QACc,kBAAvB,eAAa,iBAAO,CAAP,IAAb,C;QAA+B,8B;QAA5C,ajB15LO,W;QiB25LP,kBAAkB,O;QACF,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;UACd,MAAO,WAAI,WAAJ,C;;QAEX,OAAO,M;O;KAvBX,C;iFA0BA,yB;MAAA,gD;MAAA,gE;MAAA,gD;QAmBoB,Q;QAHhB,IAAI,mBAAJ,C;UAAe,OAAO,OAAO,OAAP,C;QACc,kBAAvB,eAAa,iBAAO,CAAP,IAAb,C;QAA+B,8B;QAA5C,ajBp7LO,W;QiBq7LP,kBAAkB,O;QACF,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,cAAc,UAAU,WAAV,EAAuB,OAAvB,C;UACd,MAAO,WAAI,WAAJ,C;;QAEX,OAAO,M;O;KAvBX,C;+FA0BA,yB;MAAA,gD;MAAA,gE;MAtoFI,0D;MAsoFJ,gD;QAoBkB,gC;QAHd,IAAI,mBAAJ,C;UAAe,OAAO,OAAO,OAAP,C;QACc,kBAAvB,eAAa,iBAAO,CAAP,IAAb,C;QAA+B,8B;QAA5C,ajB/8LO,W;QiBg9LP,kBAAkB,O;QACJ,OA1pFE,YAAR,iBAAQ,C;QA0pFF,mB;QAAA,kB;QAAA,kB;QAAd,0D;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,sBAAK,KAAL,CAA9B,C;UACd,MAAO,WAAI,WAAJ,C;;QAEX,OAAO,M;O;KAxBX,C;+FA2BA,yB;MAAA,gD;MAAA,gE;MAzpFI,0D;MAypFJ,gD;QAoBkB,gC;QAHd,IAAI,mBAAJ,C;UAAe,OAAO,OAAO,OAAP,C;QACc,kBAAvB,eAAa,iBAAO,CAAP,IAAb,C;QAA+B,8B;QAA5C,ajB1+LO,W;QiB2+LP,kBAAkB,O;QACJ,OA7qFE,YAAR,iBAAQ,C;QA6qFF,mB;QAAA,kB;QAAA,kB;QAAd,0D;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,sBAAK,KAAL,CAA9B,C;UACd,MAAO,WAAI,WAAJ,C;;QAEX,OAAO,M;O;KAxBX,C;+FA2BA,yB;MAAA,gD;MAAA,gE;MA5qFI,0D;MA4qFJ,gD;QAoBkB,gC;QAHd,IAAI,mBAAJ,C;UAAe,OAAO,OAAO,OAAP,C;QACc,kBAAvB,eAAa,iBAAO,CAAP,IAAb,C;QAA+B,8B;QAA5C,ajBrgMO,W;QiBsgMP,kBAAkB,O;QACJ,OAhsFE,YAAR,iBAAQ,C;QAgsFF,mB;QAAA,kB;QAAA,kB;QAAd,0D;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,sBAAK,KAAL,CAA9B,C;UACd,MAAO,WAAI,WAAJ,C;;QAEX,OAAO,M;O;KAxBX,C;+FA2BA,yB;MAAA,gD;MAAA,gE;MA/rFI,0D;MA+rFJ,gD;QAoBkB,gC;QAHd,IAAI,mBAAJ,C;UAAe,OAAO,OAAO,OAAP,C;QACc,kBAAvB,eAAa,iBAAO,CAAP,IAAb,C;QAA+B,8B;QAA5C,ajBhiMO,W;QiBiiMP,kBAAkB,O;QACJ,OAntFE,YAAR,iBAAQ,C;QAmtFF,mB;QAAA,kB;QAAA,kB;QAAd,0D;UACI,cAAc,UAAU,KAAV,EAAiB,WAAjB,EAA8B,sBAAK,KAAL,CAA9B,C;UACd,MAAO,WAAI,WAAJ,C;;QAEX,OAAO,M;O;KAxBX,C;6FA2BA,yB;MAAA,qD;MAAA,gE;MAAA,uC;QAmB0B,Q;QAHtB,IAAI,mBAAJ,C;UAAe,OAAO,W;QACtB,sBAAkB,sBAAK,CAAL,CAAlB,C;QACmC,kBAAtB,eAAgB,cAAhB,C;QAA8B,sBAAI,aAAJ,C;QAA3C,ajB3jMO,W;QiB4jMe,qB;QAAtB,iBAAc,CAAd,wB;UACI,gBAAc,UAAU,aAAV,EAAuB,sBAAK,KAAL,CAAvB,C;UACd,MAAO,WAAI,aAAJ,C;;QAEX,OAAO,M;O;KAvBX,C;6FA0BA,yB;MAAA,qD;MAAA,gE;MAAA,uC;QAmB0B,Q;QAHtB,IAAI,mBAAJ,C;UAAe,OAAO,W;QACtB,sBAAkB,sBAAK,CAAL,CAAlB,C;QACoC,kBAAvB,eAAiB,cAAjB,C;QAA+B,sBAAI,aAAJ,C;QAA5C,ajBrlMO,W;QiBslMe,qB;QAAtB,iBAAc,CAAd,wB;UACI,gBAAc,UAAU,aAAV,EAAuB,sBAAK,KAAL,CAAvB,C;UACd,MAAO,WAAI,aAAJ,C;;QAEX,OAAO,M;O;KAvBX,C;6FA0BA,yB;MAAA,qD;MAAA,gE;MAAA,uC;QAmB0B,Q;QAHtB,IAAI,mBAAJ,C;UAAe,OAAO,W;QACtB,sBAAkB,sBAAK,CAAL,CAAlB,C;QACoC,kBAAvB,eAAiB,cAAjB,C;QAA+B,sBAAI,aAAJ,C;QAA5C,ajB/mMO,W;QiBgnMe,qB;QAAtB,iBAAc,CAAd,wB;UACI,gBAAc,UAAU,aAAV,EAAuB,sBAAK,KAAL,CAAvB,C;UACd,MAAO,WAAI,aAAJ,C;;QAEX,OAAO,M;O;KAvBX,C;6FA0BA,yB;MAAA,qD;MAAA,gE;MAAA,uC;QAmB0B,Q;QAHtB,IAAI,mBAAJ,C;UAAe,OAAO,W;QACtB,sBAAkB,sBAAK,CAAL,CAAlB,C;QACqC,kBAAxB,eAAkB,cAAlB,C;QAAgC,sBAAI,aAAJ,C;QAA7C,ajBzoMO,W;QiB0oMe,qB;QAAtB,iBAAc,CAAd,wB;UACI,gBAAc,UAAU,aAAV,EAAuB,sBAAK,KAAL,CAAvB,C;UACd,MAAO,WAAI,aAAJ,C;;QAEX,OAAO,M;O;KAvBX,C;2GA0BA,yB;MAAA,qD;MAAA,gE;MAAA,uC;QAoB0B,Q;QAHtB,IAAI,mBAAJ,C;UAAe,OAAO,W;QACtB,sBAAkB,sBAAK,CAAL,CAAlB,C;QACmC,kBAAtB,eAAgB,cAAhB,C;QAA8B,sBAAI,aAAJ,C;QAA3C,ajBpqMO,W;QiBqqMe,qB;QAAtB,iBAAc,CAAd,wB;UACI,gBAAc,UAAU,KAAV,EAAiB,aAAjB,EAA8B,sBAAK,KAAL,CAA9B,C;UACd,MAAO,WAAI,aAAJ,C;;QAEX,OAAO,M;O;KAxBX,C;2GA2BA,yB;MAAA,qD;MAAA,gE;MAAA,uC;QAoB0B,Q;QAHtB,IAAI,mBAAJ,C;UAAe,OAAO,W;QACtB,sBAAkB,sBAAK,CAAL,CAAlB,C;QACoC,kBAAvB,eAAiB,cAAjB,C;QAA+B,sBAAI,aAAJ,C;QAA5C,ajB/rMO,W;QiBgsMe,qB;QAAtB,iBAAc,CAAd,wB;UACI,gBAAc,UAAU,KAAV,EAAiB,aAAjB,EAA8B,sBAAK,KAAL,CAA9B,C;UACd,MAAO,WAAI,aAAJ,C;;QAEX,OAAO,M;O;KAxBX,C;2GA2BA,yB;MAAA,qD;MAAA,gE;MAAA,uC;QAoB0B,Q;QAHtB,IAAI,mBAAJ,C;UAAe,OAAO,W;QACtB,sBAAkB,sBAAK,CAAL,CAAlB,C;QACoC,kBAAvB,eAAiB,cAAjB,C;QAA+B,sBAAI,aAAJ,C;QAA5C,ajB1tMO,W;QiB2tMe,qB;QAAtB,iBAAc,CAAd,wB;UACI,gBAAc,UAAU,KAAV,EAAiB,aAAjB,EAA8B,sBAAK,KAAL,CAA9B,C;UACd,MAAO,WAAI,aAAJ,C;;QAEX,OAAO,M;O;KAxBX,C;2GA2BA,yB;MAAA,qD;MAAA,gE;MAAA,uC;QAoB0B,Q;QAHtB,IAAI,mBAAJ,C;UAAe,OAAO,W;QACtB,sBAAkB,sBAAK,CAAL,CAAlB,C;QACqC,kBAAxB,eAAkB,cAAlB,C;QAAgC,sBAAI,aAAJ,C;QAA7C,ajBrvMO,W;QiBsvMe,qB;QAAtB,iBAAc,CAAd,wB;UACI,gBAAc,UAAU,KAAV,EAAiB,aAAjB,EAA8B,sBAAK,KAAL,CAA9B,C;UACd,MAAO,WAAI,aAAJ,C;;QAEX,OAAO,M;O;KAxBX,C;mFA2BA,yB;MAAA,wB;MAAA,sC;QAQoB,Q;QADhB,UAAgB,W;QACA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,M/B1wMiD,S+B0wMjD,G/B1wM2D,KAAK,G+B0wMzD,SAAS,OAAT,C/B1wMoE,KAAX,IAAf,C;;Q+B4wMrD,OAAO,G;O;KAXX,C;mFAcA,yB;MAAA,wB;MAAA,sC;QAQoB,Q;QADhB,UAAgB,W;QACA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,M/BxxMiD,S+BwxMjD,G/BxxM2D,KAAK,G+BwxMzD,SAAS,OAAT,C/BxxMoE,KAAX,IAAf,C;;Q+B0xMrD,OAAO,G;O;KAXX,C;mFAcA,yB;MAAA,wB;MAAA,sC;QAQoB,Q;QADhB,UAAgB,W;QACA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,M/BtyMiD,S+BsyMjD,G/BtyM2D,KAAK,G+BsyMzD,SAAS,OAAT,C/BtyMoE,KAAX,IAAf,C;;Q+BwyMrD,OAAO,G;O;KAXX,C;mFAcA,yB;MAAA,wB;MAAA,sC;QAQoB,Q;QADhB,UAAgB,W;QACA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,M/BpzMiD,S+BozMjD,G/BpzM2D,KAAK,G+BozMzD,SAAS,OAAT,C/BpzMoE,KAAX,IAAf,C;;Q+BszMrD,OAAO,G;O;KAXX,C;8FAcA,+B;MAQoB,Q;MADhB,UAAkB,G;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;K;+FAGX,+B;MAQoB,Q;MADhB,UAAkB,G;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;K;+FAGX,+B;MAQoB,Q;MADhB,UAAkB,G;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;K;+FAGX,+B;MAQoB,Q;MADhB,UAAkB,G;MACF,2B;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,OAAO,SAAS,OAAT,C;;MAEX,OAAO,G;K;IAGX,kC;MA2DI,WhBl0MO,MAAK,KgBk0MK,chBl0ML,EgBgxMD,KAkDkB,OhBl0MjB,C;MgBm0MZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WArDqB,GAqDP,sBAAK,CAAL,CArDO,EAAnB,KAqDqB,CAAM,CAAN,CArDF,CAqDrB,C;;MArDT,OAuDO,I;K;IApDX,kC;MAkEI,WhBr1MO,MAAK,KgBq1MK,chBr1ML,EgB4xMD,KAyDkB,OhBr1MjB,C;MgBs1MZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WA5DqB,GA4DP,sBAAK,CAAL,CA5DO,EAAnB,KA4DqB,CAAM,CAAN,CA5DF,CA4DrB,C;;MA5DT,OA8DO,I;K;IA3DX,kC;MAyEI,WhBx2MO,MAAK,KgBw2MK,chBx2ML,EgBwyMD,KAgEkB,OhBx2MjB,C;MgBy2MZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WAnEqB,GAmEP,sBAAK,CAAL,CAnEO,EAAnB,KAmEqB,CAAM,CAAN,CAnEF,CAmErB,C;;MAnET,OAqEO,I;K;IAlEX,kC;MAgFI,WhB33MO,MAAK,KgB23MK,chB33ML,EgBozMD,KAuEkB,OhB33MjB,C;MgB43MZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WA1EqB,GA0EP,sBAAK,CAAL,CA1EO,EAAnB,KA0EqB,CAAM,CAAN,CA1EF,CA0ErB,C;;MA1ET,OA4EO,I;K;+EAzEX,yB;MAAA,gE;MhB9zMA,iB;MgB8zMA,8C;QAWI,WhBl0MO,MAAK,KgBk0MK,chBl0ML,EgBk0MW,KAAM,OhBl0MjB,C;QgBm0MZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;O;KAhBX,C;+EAmBA,yB;MAAA,gE;MhBj1MA,iB;MgBi1MA,8C;QAWI,WhBr1MO,MAAK,KgBq1MK,chBr1ML,EgBq1MW,KAAM,OhBr1MjB,C;QgBs1MZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;O;KAhBX,C;+EAmBA,yB;MAAA,gE;MhBp2MA,iB;MgBo2MA,8C;QAWI,WhBx2MO,MAAK,KgBw2MK,chBx2ML,EgBw2MW,KAAM,OhBx2MjB,C;QgBy2MZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;O;KAhBX,C;+EAmBA,yB;MAAA,gE;MhBv3MA,iB;MgBu3MA,8C;QAWI,WhB33MO,MAAK,KgB23MK,chB33ML,EgB23MW,KAAM,OhB33MjB,C;QgB43MZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,CAAV,EAAmB,MAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;O;KAhBX,C;IAmBA,kC;MA8DoB,gB;MAHhB,gBAAgB,c;MAChB,WAAW,iBhB/7MJ,MAAK,KgB+7MwB,wBAnDzB,KAmDyB,EAAwB,EAAxB,ChB/7MxB,EgB+7MqD,ShB/7MrD,CgB+7MD,C;MACX,QAAQ,C;MACQ,OArDL,KAqDK,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAvDqB,GAuDP,uBAAK,UAAL,EAAK,kBAAL,UAvDO,EAuDI,OAvDJ,CAuDrB,C;;MAvDT,OAyDO,I;K;IAtDX,kC;MAuEoB,gB;MAHhB,gBAAgB,c;MAChB,WAAW,iBhBp9MJ,MAAK,KgBo9MwB,wBA5DzB,KA4DyB,EAAwB,EAAxB,ChBp9MxB,EgBo9MqD,ShBp9MrD,CgBo9MD,C;MACX,QAAQ,C;MACQ,OA9DL,KA8DK,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAhEqB,GAgEP,uBAAK,UAAL,EAAK,kBAAL,UAhEO,EAgEI,OAhEJ,CAgErB,C;;MAhET,OAkEO,I;K;IA/DX,kC;MAgFoB,gB;MAHhB,gBAAgB,c;MAChB,WAAW,iBhBz+MJ,MAAK,KgBy+MwB,wBArEzB,KAqEyB,EAAwB,EAAxB,ChBz+MxB,EgBy+MqD,ShBz+MrD,CgBy+MD,C;MACX,QAAQ,C;MACQ,OAvEL,KAuEK,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAzEqB,GAyEP,uBAAK,UAAL,EAAK,kBAAL,UAzEO,EAyEI,OAzEJ,CAyErB,C;;MAzET,OA2EO,I;K;IAxEX,kC;MAyFoB,gB;MAHhB,gBAAgB,c;MAChB,WAAW,iBhB9/MJ,MAAK,KgB8/MwB,wBA9EzB,KA8EyB,EAAwB,EAAxB,ChB9/MxB,EgB8/MqD,ShB9/MrD,CgB8/MD,C;MACX,QAAQ,C;MACQ,OAhFL,KAgFK,W;MAAhB,OAAgB,cAAhB,C;QAAgB,yB;QACZ,IAAI,KAAK,SAAT,C;UAAoB,K;QACpB,IAAK,WAlFqB,GAkFP,uBAAK,UAAL,EAAK,kBAAL,UAlFO,EAkFI,OAlFJ,CAkFrB,C;;MAlFT,OAoFO,I;K;+EAjFX,yB;MAAA,kF;MAAA,gE;MhB17MA,iB;MgB07MA,8C;QAcoB,UAEY,M;QAL5B,gBAAgB,c;QAChB,WAAW,ehB/7MJ,MAAK,KgB+7MwB,wBAAN,KAAM,EAAwB,EAAxB,ChB/7MxB,EgB+7MqD,ShB/7MrD,CgB+7MD,C;QACX,QAAQ,C;QACQ,uB;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,uBAAK,UAAL,EAAK,kBAAL,UAAV,EAAqB,OAArB,CAAJ,C;;QAET,OAAO,I;O;KAlBX,C;+EAqBA,yB;MAAA,kF;MAAA,gE;MhB/8MA,iB;MgB+8MA,8C;QAcoB,UAEY,M;QAL5B,gBAAgB,c;QAChB,WAAW,ehBp9MJ,MAAK,KgBo9MwB,wBAAN,KAAM,EAAwB,EAAxB,ChBp9MxB,EgBo9MqD,ShBp9MrD,CgBo9MD,C;QACX,QAAQ,C;QACQ,uB;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,uBAAK,UAAL,EAAK,kBAAL,UAAV,EAAqB,OAArB,CAAJ,C;;QAET,OAAO,I;O;KAlBX,C;+EAqBA,yB;MAAA,kF;MAAA,gE;MhBp+MA,iB;MgBo+MA,8C;QAcoB,UAEY,M;QAL5B,gBAAgB,c;QAChB,WAAW,ehBz+MJ,MAAK,KgBy+MwB,wBAAN,KAAM,EAAwB,EAAxB,ChBz+MxB,EgBy+MqD,ShBz+MrD,CgBy+MD,C;QACX,QAAQ,C;QACQ,uB;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,uBAAK,UAAL,EAAK,kBAAL,UAAV,EAAqB,OAArB,CAAJ,C;;QAET,OAAO,I;O;KAlBX,C;8EAqBA,yB;MAAA,kF;MAAA,gE;MhBz/MA,iB;MgBy/MA,8C;QAcoB,UAEY,M;QAL5B,gBAAgB,c;QAChB,WAAW,ehB9/MJ,MAAK,KgB8/MwB,wBAAN,KAAM,EAAwB,EAAxB,ChB9/MxB,EgB8/MqD,ShB9/MrD,CgB8/MD,C;QACX,QAAQ,C;QACQ,uB;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,IAAI,KAAK,SAAT,C;YAAoB,K;UACpB,IAAK,WAAI,UAAU,uBAAK,UAAL,EAAK,kBAAL,UAAV,EAAqB,OAArB,CAAJ,C;;QAET,OAAO,I;O;KAlBX,C;IAqBA,kC;MA2DI,WhBlkNO,MAAK,KgBkkNK,chBlkNL,EgBghND,KAkDkB,KhBlkNjB,C;MgBmkNZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WArDqB,GAqDP,sBAAK,CAAL,CArDO,EAAnB,KAqDqB,aAAM,CAAN,CArDF,CAqDrB,C;;MArDT,OAuDO,I;K;IApDX,kC;MAkEI,WhBrlNO,MAAK,KgBqlNK,chBrlNL,EgB4hND,KAyDkB,KhBrlNjB,C;MgBslNZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WA5DqB,GA4DP,sBAAK,CAAL,CA5DO,EAAnB,KA4DqB,aAAM,CAAN,CA5DF,CA4DrB,C;;MA5DT,OA8DO,I;K;IA3DX,kC;MAyEI,WhBxmNO,MAAK,KgBwmNK,chBxmNL,EgBwiND,KAgEkB,KhBxmNjB,C;MgBymNZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WAnEqB,GAmEP,sBAAK,CAAL,CAnEO,EAAnB,KAmEqB,aAAM,CAAN,CAnEF,CAmErB,C;;MAnET,OAqEO,I;K;IAlEX,kC;MAgFI,WhB3nNO,MAAK,KgB2nNK,chB3nNL,EgBojND,KAuEkB,KhB3nNjB,C;MgB4nNZ,WAAW,iBAAa,IAAb,C;MACX,aAAU,CAAV,MAAkB,IAAlB,M;QACI,IAAK,WA1EqB,GA0EP,sBAAK,CAAL,CA1EO,EAAnB,KA0EqB,aAAM,CAAN,CA1EF,CA0ErB,C;;MA1ET,OA4EO,I;K;+EAzEX,yB;MAAA,gE;MhB9jNA,iB;MgB8jNA,8C;QAWI,WhBlkNO,MAAK,KgBkkNK,chBlkNL,EgBkkNW,KAAM,KhBlkNjB,C;QgBmkNZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,CAAV,EAAmB,kBAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;O;KAhBX,C;+EAmBA,yB;MAAA,gE;MhBjlNA,iB;MgBilNA,8C;QAWI,WhBrlNO,MAAK,KgBqlNK,chBrlNL,EgBqlNW,KAAM,KhBrlNjB,C;QgBslNZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,CAAV,EAAmB,kBAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;O;KAhBX,C;+EAmBA,yB;MAAA,gE;MhBpmNA,iB;MgBomNA,8C;QAWI,WhBxmNO,MAAK,KgBwmNK,chBxmNL,EgBwmNW,KAAM,KhBxmNjB,C;QgBymNZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,CAAV,EAAmB,kBAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;O;KAhBX,C;+EAmBA,yB;MAAA,gE;MhBvnNA,iB;MgBunNA,8C;QAWI,WhB3nNO,MAAK,KgB2nNK,chB3nNL,EgB2nNW,KAAM,KhB3nNjB,C;QgB4nNZ,WAAW,eAAa,IAAb,C;QACX,aAAU,CAAV,MAAkB,IAAlB,M;UACI,IAAK,WAAI,UAAU,sBAAK,CAAL,CAAV,EAAmB,kBAAM,CAAN,CAAnB,CAAJ,C;;QAET,OAAO,I;O;KAhBX,C;IAmBA,2B;MAQoB,Q;MADhB,UAAgB,W;MAChB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,M/BtvNiD,S+BsvNjD,G/BtvN2D,KAAK,G+BsvNzD,O/BtvNoE,KAAX,IAAf,C;;M+BwvNrD,OAAO,G;K;IAGX,2B;MAQoB,Q;MADhB,UAAiB,2B;MACjB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,MFjwNmD,UEiwNnD,GFjwN8D,KAAK,KEiwN5D,OFjwNuE,KAAX,CAAhB,C;;MEmwNvD,OAAO,G;K;IAGX,2B;MAQoB,Q;MADhB,UAAgB,W;MAChB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,M/BlxNiD,S+BkxNjD,G/BlxN2D,KAAK,GAAW,CDgJ5C,SgCkoNxB,OhCloNkC,KAAL,GAAiB,GAAtB,CChJ4C,MAAX,IAAf,C;;M+BoxNrD,OAAO,G;K;IAGX,2B;MAQoB,Q;MADhB,UAAgB,W;MAChB,wBAAgB,SAAhB,gB;QAAgB,cAAA,SAAhB,M;QACI,M/BhyNiD,S+BgyNjD,G/BhyN2D,KAAK,GAAW,CCiJ5C,S8B+oNxB,O9B/oNkC,KAAL,GAAiB,KAAtB,CDjJ4C,MAAX,IAAf,C;;M+BkyNrD,OAAO,G;K;+EAGX,yB;MAAA,0C;M/BplNA,6B;M+BolNA,4B;QAOI,O/BjlNmC,c+BilNpB,IAAR,iBAAQ,C/BjlNoB,C;O;K+B0kNvC,C;+EAUA,yB;MAAA,0C;MF/kNA,+B;ME+kNA,4B;QAOI,OF5kNsC,eE4kNvB,IAAR,iBAAQ,CF5kNuB,C;O;KEqkN1C,C;+EAUA,yB;MAAA,sC;MA5hBA,wB;MA4hBA,iBAOiB,yB;QhCzrNb,6B;egCyrNa,c;UAAE,OhChrNoB,cgCgrNpB,EhChrN8B,KAAL,GAAiB,GAAtB,C;S;OgCgrNtB,C;MAPjB,4B;QAphBoB,Q;QADhB,UAAgB,W;QACA,2B;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UACZ,M/BtyMiD,S+BsyMjD,G/BtyM2D,KAAK,GAAW,CDgJ5C,SgCspMf,OhCtpMyB,KAAL,GAAiB,GAAtB,CChJ4C,MAAX,IAAf,C;;Q+Bg0NrD,OAxhBO,G;O;KAihBX,C;+EAUA,yB;MAAA,sC;MAxhBA,wB;MAwhBA,iBAOiB,yB;Q9BlsNb,6B;e8BksNa,c;UAAE,O9BzrNoB,c8ByrNpB,E9BzrN8B,KAAL,GAAiB,KAAtB,C;S;O8ByrNtB,C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AA0B,iCAAuB,gBAAvB,MAA1B,C;;MAAtC,W;K;IAGJ,uC;MdunBW,Q;MAAA,IcjnBgB,KdinBZ,IAAS,CAAT,IcjnBY,KdinBE,IAAS,0BAA3B,C;QAAA,OAAsC,UcjnBtB,KdinBsB,C;;QcjnBb,MAAM,8BAA0B,iCAAuB,gBAAvB,MAA1B,C;;MAAtC,W;K;IAGJ,uC;MdwnBW,Q;MAAA,IclnBgB,KdknBZ,IAAS,CAAT,IclnBY,KdknBE,IAAS,0BAA3B,C;QAAA,OAAsC,UclnBtB,KdknBsB,C;;QclnBb,MAAM,8BAA0B,iCAAuB,gBAAvB,MAA1B,C;;MAAtC,W;K;IAGJ,uC;MdynBW,Q;MAAA,IcnnBgB,KdmnBZ,IAAS,CAAT,IcnnBY,KdmnBE,IAAS,0BAA3B,C;QAAA,OAAsC,UcnnBtB,KdmnBsB,C;;QcnnBb,MAAM,8BAA0B,iCAAuB,gBAAvB,MAA1B,C;;MAAtC,W;K;IAGJ,uC;Md0nBW,Q;MAAA,IcpnBgB,KdonBZ,IAAS,CAAT,IcpnBY,KdonBE,IAAS,0BAA3B,C;QAAA,OAAsC,UcpnBtB,KdonBsB,C;;QcpnBb,MAAM,8BAA0B,iCAAuB,gBAAvB,MAA1B,C;;MAAtC,W;K;IAGJ,uC;Md2nBW,Q;MAAA,IcrnBgB,KdqnBZ,IAAS,CAAT,IcrnBY,KdqnBE,IAAS,0BAA3B,C;QAAA,OAAsC,UcrnBtB,KdqnBsB,C;;QcrnBb,MAAM,8BAA0B,iCAAuB,gBAAvB,MAA1B,C;;MAAtC,W;K;IAGJ,uC;Md4nBW,Q;MAAA,IctnBgB,KdsnBZ,IAAS,CAAT,IctnBY,KdsnBE,IAAS,0BAA3B,C;QAAA,OAAsC,UctnBtB,KdsnBsB,C;;QctnBb,MAAM,8BAA0B,iCAAuB,gBAAvB,MAA1B,C;;MAAtC,W;K;IAGJ,wC;Md6nBW,Q;MAAA,IcvnBgB,KdunBZ,IAAS,CAAT,IcvnBY,KdunBE,IAAS,0BAA3B,C;QAAA,OAAsC,UcvnBtB,KdunBsB,C;;QcvnBb,MAAM,8BAA0B,iCAAuB,gBAAvB,MAA1B,C;;MAAtC,W;K;IAGJ,2B;MAII,OAAO,cAAa,SAAb,C;K;oFAGX,yB;MAAA,gD;MAAA,4B;QAKI,O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AAQ,EgC/pBoB,O/DyHF,K+BsiBlB,C;K;yDgC7pBX,mB;MACS,Q;MAAL,IAAI,eAAC,0EAAD,OAAJ,C;QAAgC,OAAO,E;MACvC,OhC23BO,cgC33BA,gBhC23BR,QAAQ,EgC33BwB,O/DqHN,K+BswBlB,C;K;;IgC/4BnB,6B;MAMI,4C;K;IAyBO,6C;MAAA,8B;MAAS,uB;K;0EACW,Y;MAAQ,OAAA,gBAAY,K;K;+CAC3C,Y;MAAkC,OAAA,gBAAY,U;K;sDAC9C,mB;MAAiD,OAAA,gBAAY,gBAAS,OAAT,C;K;mDAC7D,iB;MACI,oCAAa,2BAAkB,KAAlB,EAAyB,SAAzB,C;MACb,OAAO,6BAAY,KAAZ,C;K;qDAEX,mB;MACS,Q;MAAL,IAAI,eAAC,0EAAD,QAAJ,C;QAAiC,OAAO,E;MACxC,OhCgpBO,UgChpBA,gBhCgpBR,QAAQ,EgChpBoB,OlC2GA,KEqiBpB,C;K;yDgC9oBX,mB;MACS,Q;MAAL,IAAI,eAAC,0EAAD,QAAJ,C;QAAiC,OAAO,E;MACxC,OhC42BO,cgC52BA,gBhC42BR,QAAQ,EgC52BwB,OlCuGJ,KEqwBpB,C;K;;IgCh4BnB,6B;MAMI,4C;K;IAyBO,6C;MAAA,8B;MAAS,uB;K;0EACW,Y;MAAQ,OAAA,gBAAY,K;K;+CAC3C,Y;MAAkC,OAAA,gBAAY,U;K;sDAC9C,mB;MAAiD,OAAA,gBAAY,gBAAS,OAAT,C;K;mDAC7D,iB;MACI,oCAAa,2BAAkB,KAAlB,EAAyB,SAAzB,C;MACb,OAAO,6BAAY,KAAZ,C;K;qDAEX,mB;MACS,Q;MAAL,IAAI,eAAC,0EAAD,QAAJ,C;QAAiC,OAAO,E;MACxC,OhCioBO,UgCjoBA,gBhCioBR,QAAQ,EgCjoBoB,OhE2CA,KgCslBpB,C;K;yDgC/nBX,mB;MACS,Q;MAAL,IAAI,eAAC,0EAAD,QAAJ,C;QAAiC,OAAO,E;MACxC,OhC61BO,cgC71BA,gBhC61BR,QAAQ,EgC71BwB,OhEuCJ,KgCszBpB,C;K;;IgCj3BnB,8B;MAMI,4C;K;IAyBO,6C;MAAA,8B;MAAS,uB;K;0EACW,Y;MAAQ,OAAA,gBAAY,K;K;+CAC3C,Y;MAAkC,OAAA,gBAAY,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a;K;uEAFvB,Y;MAAQ,OAAA,eAAS,Q;K;oDAIrB,kB;MACI,UAAU,IAAK,S;MAEX,YAAQ,2CAAR,C;QACI,gBAAc,MAAO,M;WAEzB,YAAQ,yBAAR,C;QACI,gBAAc,yC;QACd,eAAS,oBAAW,MAAX,C;;QAEL,MAAM,6BAAsB,iBAAtB,C;K;4CAItB,Y;MAOW,Q;MALP,IAAI,kBAAW,2CAAf,C;QACI,gBAAS,yB;QACT,OAAO,yB;OAEX,aAAa,IAAK,S;MAEd,eAAW,yCAAX,C;QAAsB,gC;WACtB,0C;QAA4B,MAAM,MAAO,U;;QACjC,a;MAHZ,W;K;;IA7BJ,gD;MAAA,0D;MACyD,6BAAK,QAAL,EAAe,2CAAf,C;MADzD,Y;K;I9BsCJ,yE;MASI,sC;MAAA,4C;K;IATJ,6EAWY,Y;MAAQ,2B;KAXpB,E;IAAA,0DAaQ,kB;MACI,wBAAW,MAAX,C;K;IAdZ,sF;I+B3C2E,0C;MhC4JhE,Q;MADP,egC1JA,MhC0JA,C;MACO,QgC3JP,MhC2JO,+D;MgC1JX,W;K;;+FCuHA,gB;MACI,aAAa,IAAb,MAAa,E;MACb,KAAK,MAAL,C;MACA,OAAO,M;K;IC/HX,8C;MAKyG,kBAApB,wBAAc,IAAd,C;MAA0B,IzEoE3G,a;MyEpEiF,OzEqE1E,W;K;IyEnEX,8C;MAM8C,kBAA1B,cAAhB,sCAAgB,EAAc,IAAd,EAAoB,IAApB,C;MAAiC,sBzE2E3C,WyE3E2C,C;MAAjD,OzE4EO,W;K;I0EzFX,uC;MACkD,8B;MAAA,OCIN,aDJwB,yBAAa,QAAb,mCCIxB,CjE+rBgC,sB;K;IgEjsB5E,yC;M3F6xHW,kBAAY,gB;MAgGH,Q;MAAhB,wB2Fv3HqB,U3Fu3HrB,gB;QAAgB,c2Fv3HK,U3Fu3HrB,M;QAAsB,IAAI,C2Fv3HkB,oB3Fu3HP,O2Fv3HO,C3Fu3HtB,C;UAAyB,WAAY,WAAI,OAAJ,C;;M2Fv3H3D,qB3Fw3HO,W;M2Fv3HP,IrFqMwD,CqFrMpD,crFqMqD,UqFrMzD,C;QhEoGuC,U;QgEnGnC,qBhEmGyD,OAAtB,+BgEnGd,mBhEmGc,uBAAsB,CAAO,W;QkE2RpD,kBAAhB,sB;QF5XQ,0C;QACA,IAAI,EhEk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uB,Q;K;IAMhC,+B;MAAQ,iBAAU,SAAV,C;K;IClC+B,4B;MACvC,8B;K;gEAAA,Y;MAAA,4B;K;qEAGI,Y;M7FQ4B,MAAM,yB;K;sE6FNlC,Y;M7FM4B,MAAM,yB;K;oE6FJlC,Y;M7FI4B,MAAM,yB;K;qE6FFlC,Y;M7FE4B,MAAM,yB;K;gE6FAlC,Y;M7FA4B,MAAM,yB;K;iE6FElC,Y;M7FF4B,MAAM,yB;K;iE6FIlC,Y;M7FJ4B,MAAM,yB;K;gE6FMlC,Y;M7FN4B,MAAM,yB;K;kE6FQlC,Y;M7FR4B,MAAM,yB;K;iE6FUlC,Y;M7FV4B,MAAM,yB;K;uE6FYlC,Y;M7FZ4B,MAAM,yB;K;wE6FclC,Y;M7Fd4B,MAAM,yB;K;uE6FgBlC,Y;M7FhB4B,MAAM,yB;K;oE6FkBlC,Y;M7FlB4B,MAAM,yB;K;wE6FoBlC,Y;M7FpB4B,MAAM,yB;K;0E6FsBlC,Y;M7FtB4B,MAAM,yB;K;oE6FwBlC,Y;M7FxB4B,MAAM,yB;K;kC6F0BtC,iB;MACI,OAAO,oCAA0B,oBAAU,KAAM,OAAhB,C;K;oCAGrC,Y;MAC+B,gB;MAAA,8FAA0B,C;K;oCAEzD,Y;MAEI,OAAO,oBAAQ,eAAR,C;K;;IAIyB,kC;MAAuB,sBAAc,MAAd,C;MACL,Q;MAAtD,4BAAmC,CAAmB,OAAZ,MAAY,WAAnB,kC;K;0EAAnC,Y;MAAA,gC;K;oDAEA,iB;MACW,cAAgB,W;MAAvB,OxDqCuD,MAAa,QwDrCpD,KxDqCoD,EAAY,OAAZ,C;K;;IwDjCjC,0E;MAIvC,sBAAc,MAAd,C;MAFA,wC;MACA,8C;K;2CAEA,iB;MACI,IAAI,0CAAJ,C;QAAsC,OAAO,K;MAC7C,OAAa,uCAAO,KAAP,CAAN,IAAuB,+BAAmB,KAAM,kBAAzB,C;K;6EAGD,Y;MAAQ,6B;K;uDAEzC,iB;MACI,OAAO,0BAAmB,KAAnB,C;K;;IAIf,6B;MAAA,iC;MAAoC,sBAAoB,MAApB,C;MAChC,4BAAkC,S;K;2EAAlC,Y;MAAA,gC;K;qDAEA,iB;MAAgD,Y;K;uEAG5C,Y;MAAQ,MAAM,qCAA8B,6CAA9B,C;K;yCAElB,iB;MAA4C,iBAAU,I;K;2CAEtD,Y;MAA+B,Q;K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AAQ,OAAO,M;K;+EAEf,qB;MAAQ,OAAO,M;K;ICvHnE,6B;MAAC,qB;QAAA,8C;MAAA,kB;K;IACjC,2C;MAAA,e;MAAA,iB;MAAA,uB;K;IAAA,yC;MAAA,4C;O;MAKI,0E;MAEA,sE;K;;IAFA,kD;MAAA,+B;MAAA,0C;K;;IAEA,gD;MAAA,+B;MAAA,wC;K;;IAPJ,qC;MAAA,yF;K;;IAAA,0C;MAAA,a;aAAA,S;UAAA,+C;aAAA,O;UAAA,6C;gBAAA,8D;;K;;;IAyBmC,sC;MACnC,8B;K;;IAMqC,sC;MACrC,8B;K;;IC1DJ,iC;K;;ICMA,4B;K;;ICCA,qC;K;;IA4BA,+B;K;;ICRqC,uC;MACjC,uB;QAAA,UAAsB,E;MACtB,qB;QAAA,+C;MADA,sB;MACA,kB;K;IAEA,4C;MAAA,e;MAAA,iB;MAAA,uB;K;IAAA,0C;MAAA,6C;O;MAKI,4E;MAGA,wE;K;;IAHA,mD;MAAA,gC;MAAA,2C;K;;IAGA,iD;MAAA,gC;MAAA,yC;K;;IARJ,sC;MAAA,2F;K;;IAAA,2C;MAAA,a;aAAA,S;UAAA,gD;aAAA,O;UAAA,8C;gBAAA,+D;;K;;;IAyByB,4B;MACzB,8B;K;;IC/C4C,8B;K;kDAI5C,mB;MAA6D,c;;QhIkgD7C,Q;QADhB,IAAI,mCAAsB,cAA1B,C;UAAqC,aAAO,K;UAAP,e;SACrB,sB;QAAhB,OAAgB,cAAhB,C;UAAgB,2B;UAAM,IgIlgD6C,OhIkgD/B,SgIlgD+B,UhIkgD7C,C;YAAwB,aAAO,I;YAAP,e;;QAC9C,aAAO,K;;;MgIngDsD,iB;K;uDAE7D,oB;MACa,c;;QhI0+CG,Q;QADhB,IAAI,cgIz+CA,QhIy+CA,iBgIz+CA,QhIy+CsB,UAA1B,C;UAAqC,aAAO,I;UAAP,e;SACrB,OgI1+CZ,QhI0+CY,W;QAAhB,OAAgB,cAAhB,C;UAAgB,yB;UAAM,IAAI,CgI1+CP,oBhI0+CkB,OgI1+ClB,ChI0+CG,C;YAAyB,aAAO,K;YAAP,e;;QAC/C,aAAO,I;;;MgI3+CH,iB;K;2CAEJ,Y;MAAkC,qBAAQ,C;K;IAEqB,qE;MAAA,qB;QAC3D,OAAI,OAAO,uBAAX,GAAiB,mBAAjB,GAA6C,SAAH,EAAG,C;O;K;4CADjD,Y;MAAkC,4BAAa,IAAb,EAAmB,GAAnB,EAAwB,GAAxB,kBAA6B,wCAA7B,C;K;2CAIlC,Y;MAI4C,uBAAgB,IAAhB,C;K;mDAE5C,iB;MAI4D,yBAAgB,IAAhB,EAAsB,KAAtB,C;K;;IC/BhE,8B;MAAA,e;MAAA,iB;MAAA,uB;K;IAAA,4B;MAAA,+B;O;MACI,4C;MACA,kD;MACA,0C;MACA,8C;K;;IAHA,mC;MAAA,kB;MAAA,2B;K;;IACA,sC;MAAA,kB;MAAA,8B;K;;IACA,kC;MAAA,kB;MAAA,0B;K;;IACA,oC;MAAA,kB;MAAA,4B;K;;IAJJ,wB;MAAA,sH;K;;IAAA,6B;MAAA,a;aAAA,O;UAAA,gC;aAAA,U;UAAA,mC;aAAA,M;UAAA,+B;aAAA,Q;UAAA,iC;gBAAA,6D;;K;;IAOA,4B;MAKI,mD;MACA,2BAA4B,I;K;yCAE5B,Y;MAEiB,IAAN,I;MvIUX,IAAI,EuIXQ,mDvIWR,CAAJ,C;QACI,cAda,qB;QAeb,MAAM,gCAAyB,OAAQ,WAAjC,C;OuIZC,QAAM,oBAAN,M;aACH,M;UAAc,Y;UAAd,K;aACA,O;UAAe,W;UAAf,K;gBACQ,wC;UAHL,K;;MAAP,W;K;sCAOJ,Y;MAIW,Q;MAHP,IAAI,CAAC,cAAL,C;QAAgB,MAAM,6B;MACtB,mD;MAEA,OAAO,2F;K;4DAGX,Y;MACI,iD;MACA,kB;MACA,OAAO,kD;K;+CAeX,iB;MAII,2BAAY,K;MACZ,gD;K;sCAGJ,Y;MAII,+C;K;;IClDkC,wB;MAoFtC,oC;MApFgE,6B;K;sCAIhE,Y;MAAuC,0C;K;2CAEvC,mB;MAAwD,uB;;QlI6R3C,Q;QADb,YAAY,C;QACC,sB;QAAb,OAAa,cAAb,C;UAAa,sB;UACT,IkI9RmE,OlI8RrD,IkI9RqD,UlI8RnE,C;YACI,sBAAO,K;YAAP,wB;WACJ,qB;;QAEJ,sBAAO,E;;;MkIlSiD,0B;K;+CAExD,mB;MAA4D,sB;;QlIsT5D,eAAoB,0BAAa,SAAb,C;QACpB,OAAO,QAAS,cAAhB,C;UACI,IkIxTsE,OlIwTxD,QAAS,WkIxT+C,UlIwTtE,C;YACI,qBAAO,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Y,IAAI,gBAAgB,aAApB,C;Y1IqNZ,U0IpNgB,kB1IoNhB,E0IpNqC,kB1IoNrC,E0IpNkD,kBAAY,OAAZ,GAAmB,YAAnB,I1IoNlD,E0IpNmF,C1IoNnF,E0IpNsF,a1IoNtF,C;;YAAA,U0IlNgB,kB1IkNhB,E0IlNqC,kB1IkNrC,E0IlNkD,kBAAY,OAAZ,GAAmB,YAAnB,I1IkNlD,E0IlNmF,C1IkNnF,E0IlNsF,Y1IkNtF,C;YAAA,U0IjNgB,kB1IiNhB,E0IjNqC,kB1IiNrC,E0IjNkD,C1IiNlD,E0IjNqD,Y1IiNrD,E0IjNmE,a1IiNnE,C;;;Q0I9MQ,cAAO,W;QACP,8BAAuB,mBAAY,gBAAgB,YAAhB,IAAZ,CAAvB,EAAkE,QAAlE,C;;QAIA,2BAA2B,gBAAgB,YAAhB,I;QAE3B,IAAI,gBAAgB,IAApB,C;UACI,IAAI,QAAO,YAAP,SAAuB,kBAAY,OAAvC,C;Y1IsMZ,U0IrMgB,kB1IqMhB,E0IrMqC,kB1IqMrC,E0IrMkD,oB1IqMlD,E0IrMwE,a1IqMxE,E0IrMuF,I1IqMvF,C;;Y0InMgB,IAAI,wBAAwB,kBAAY,OAAxC,C;c1ImMhB,U0IlMoB,kB1IkMpB,E0IlMyC,kB1IkMzC,E0IlMsD,uBAAuB,kBAAY,OAAnC,I1IkMtD,E0IlM+F,a1IkM/F,E0IlM8G,I1IkM9G,C;;c0IhMoB,mBAAmB,OAAO,YAAP,GAAsB,kBAAY,OAAlC,I;c1IgMvC,U0I/LoB,kB1I+LpB,E0I/LyC,kB1I+LzC,E0I/LsD,C1I+LtD,E0I/LyD,OAAO,YAAP,I1I+LzD,E0I/L8E,I1I+L9E,C;cAAA,U0I9LoB,kB1I8LpB,E0I9LyC,kB1I8LzC,E0I9LsD,oB1I8LtD,E0I9L4E,a1I8L5E,E0I9L2F,OAAO,YAAP,I1I8L3F,C;;;;UAAA,U0I1LY,kB1I0LZ,E0I1LiC,kB1I0LjC,E0I1L8C,Y1I0L9C,E0I1L4D,C1I0L5D,E0I1L+D,I1I0L/D,C;U0IzLY,IAAI,wBAAwB,kBAAY,OAAxC,C;Y1IyLZ,U0IxLgB,kB1IwLhB,E0IxLqC,kB1IwLrC,E0IxLkD,uBAAuB,kBAAY,OAAnC,I1IwLlD,E0IxL2F,a1I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M;MAFvD,kBAD2D,SAC3D,sB;QADqD,OAC5B,SAAK,W;WAC9B,WAF2D,SAE3D,wC;QAFqD,OAEE,4F;WACvD,WAH2D,SAG3D,wC;QAHqD,OAGE,gG;;QAHF,OAI7C,uBAAmB,SAAnB,C;K;IAIuB,wC;MAAC,4B;K;2CAChC,gB;MAAwC,OAAA,eAAW,SAAQ,CAAR,EAAW,CAAX,C;K;4CACnD,Y;MACgC,sB;K;;IAGpC,kC;MAAA,sC;K;+CACI,gB;MAAoE,OAAE,iBAAF,CAAE,EAAU,CAAV,C;K;gDACtE,Y;MAC8C,2C;K;;;IAHlD,8C;MAAA,6C;QAAA,4B;OAAA,sC;K;IAMA,kC;MAAA,sC;K;+CACI,gB;MAAoE,OAAE,iBAAF,CAAE,EAAU,CAAV,C;K;gDACtE,Y;MAC8C,2C;K;;;IAHlD,8C;MAAA,6C;QAAA,4B;OAAA,sC;K;ImJ/SA,iC;K;;;;oDA2DI,0C;MAiB+D,oB;QAAA,2C;aAjB/D,kG;K;;IAoBJ,uC;MAAA,e;MAAA,iB;MAAA,uB;K;IAAA,qC;MAAA,wC;O;MASI,4E;MAMA,8E;MAOA,4E;MAOA,kE;K;;IApBA,mD;MAAA,2B;MAAA,2C;K;;IAMA,oD;MAAA,2B;MAAA,4C;K;;IAOA,mD;MAAA,2B;MAAA,2C;K;;IAOA,8C;MAAA,2B;MAAA,sC;K;;IA7BJ,iC;MAAA,+K;K;;IAAA,sC;MAAA,a;aAAA,c;UAAA,gD;aAAA,e;UAAA,iD;aAAA,c;UAAA,gD;aAAA,S;UAAA,2C;gBAAA,oE;;K;;oFAqCA,mB;K;;;;;;;;;;;;;;;;;;;IzGe0C,gD;MAAA,oB;QAClC,WAAW,sBAAmB,YAAF,CAAE,CAAnB,C;QACX,cAAM,IAAN,C;QADA,OAEA,IAAK,a;O;K;;;;IArHb,+B;K;;iFAUA,yB;MAAA,4B;MAAA,mC;QAMI,6BD6CQ,WC7CkB,KD6ClB,CC7CR,C;O;KANJ,C;2GAQA,yB;MAAA,4B;MD6CQ,kD;MC7CR,uC;QAOI,6BD2CQ,WAAO,cC3CW,SD2CX,CAAP,CC3CR,C;O;KAPJ,C;+FAUA,yB;MAAA,kC;MAAA,mD;MAAA,yE;QASI,sC;QAAA,4C;O;MATJ,6EAWY,Y;QAAQ,2B;OAXp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xF,C;+EAKA,yB;MAAA,4B;MAAA,mC;QAGyD,OAAiC,QAA3B,SAAL,GAAuB,KAAS,C;O;KAH1F,C;+EAKA,yB;MAAA,4B;MAAA,4B;QAGuC,OAAqB,QAAP,CAAR,SAAe,C;O;KAH5D,C;ICpCA,qC;K;;ICAA,mB;K;;IAOA,iB;K;;IAOA,2C;K;;IAOA,wB;K;;IAQA,0B;K;;IAOA,sB;K;;IAOA,4B;K;;IAOA,6C;K;;IA+BuC,wE;MAEnC,uB;QAAA,UAAsB,E;MACtB,qB;QAAA,8B;MACA,2B;QAAA,qE;MACA,yB;QAAA,YAAqB,E;MAJrB,sB;MACA,sB;MACA,kB;MACA,8B;MACA,0B;K;;IAGJ,iD;MAAA,e;MAAA,iB;MAAA,uB;K;IAAA,+C;MAAA,kD;O;MAKI,wG;MACA,wG;MACA,8F;K;;IAFA,iE;MAAA,qC;MAAA,yD;K;;IACA,iE;MAAA,qC;MAAA,yD;K;;IACA,4D;MAAA,qC;MAAA,oD;K;;IAPJ,2C;MAAA,6K;K;;IAAA,gD;MAAA,a;aAAA,kB;UAAA,8D;aAAA,kB;UAAA,8D;aAAA,a;UAAA,yD;gBAAA,6E;;K;;IAUA,wB;K;;ICjGA,qB;MAAA,yB;K;0CAII,Y;MAO6D,uB;K;2HAE7D,yB;MAAA,+D;MAAA,kC;MAAA,0F;MAAA,6F;MAAA,8E;QAUI,wC;QAAS,6C;O;MAVb,mEAWQ,wC;QAA6E,sBAAS,QAAT,EAAmB,QAAnB,EAA6B,QAA7B,C;O;MAXrF,oG;MAAA,yC;QAUI,wDAA+B,YAA/B,C;O;KAVJ,C;uHAcA,yB;MAAA,+D;MAAA,kC;MAAA,wF;MAAA,yF;MAAA,4E;QAcI,wC;QAAS,6C;O;MAdb,kEAeQ,wC;QAAuF,6BAAS,QAAT,EAAmB,QAAnB,EAA6B,QAA7B,C;O;MAf/F,kG;MAAA,yC;QAcI,sDAA+B,YAA/B,C;O;KAdJ,C;;;IA3BJ,iC;MAAA,gC;QAAA,e;OAAA,yB;K;IAgDiC,sB;MAC7B,eAAwB,I;K;4CAExB,6B;MACW,Q;MAAA,mB;MAAA,iB;QAAS,MAAM,6BAAsB,cAAY,QAAS,aAArB,uCAAtB,C;OAAtB,OAAO,I;K;4CAGX,oC;MACI,eAAa,K;K;;;;;;;;I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,C;;QACzB,I7I9CmE,a6I8CnE,KAAM,K7I9C+E,KAAlB,E6I8CtD,6BAAM,U7I9C8E,KAA9B,C6I8CnE,K;UAFoD,OAEpB,uBAAU,KAAM,MAAhB,E7IjCuB,U6IiCA,KAAM,K7IjCK,KAAK,KAAW,C7B+J7C,UAAW,oBAAL,C0K9HyB,W1K8HzB,MAAK,CAAL,iBAAN,C6B/J6C,MAAX,CAAhB,C6IiCvB,C;;UAChC,I7I/CmE,a6I+CnE,KAAM,M7I/C+E,KAAlB,E6I+CrD,6BAAM,U7I/C6E,KAA9B,C6I+CnE,K;YAHoD,O7I/BG,U6IkCtB,uB7IrBuB,U6IqBb,KAAM,M7IrBkB,KAAK,UAAY,C7BkJ/C,UAAW,oBAAL,C0K7Hc,W1K6Hd,MAAK,CAAL,iBAAN,C6BlJ+C,MAAZ,CAAhB,C6IqBvB,EAA4B,KAAM,KAAlC,C7IlCiC,KAAK,KAAW,C7B+J7C,UAAW,oBAAL,C0K7HgC,W1K6HhC,MAAK,CAAL,iBAAN,C6B/J6C,MAAX,CAAhB,C;;Y6I+BH,OAI5C,oB;;;K;IAGZ,sC;MAQI,4BAAU,K3IwuFH,Q2IxuFP,C;MACA,OAAO,K;K;IAGX,uC;MAKsD,O3IuyF3C,e2IvyF2C,4BAAU,IAAV,C3IuyF3C,C;K;I2IryFX,4D;MAOgD,yB;QAAA,YAAiB,C;MAAG,uB;QAAA,UAAe,KAAM,K;MACrF,4BAAU,K3IqtFH,Q2IrtFP,EAA+B,SAA/B,EAA0C,OAA1C,C;MACA,OAAO,K;K;IAIX,2C;MhKrHI,IAAI,EV0B8D,Y0K4FD,K1K5FkB,KAAjB,E0K4FO,I1K5FsB,KAA7B,C0K4FD,IhKtH7D,CAAJ,C;QACI,cgKqH6E,+B;QhKpH7E,MAAM,gCAAyB,OAAQ,WAAjC,C;Q;IgKqHd,4C;MhKvHI,IAAI,EmBkC+D,a6IsFC,K7ItFiB,KAAlB,E6IsFS,I7ItFqB,KAA9B,C6IsFC,IhKxHhE,CAAJ,C;QACI,cgKuHgF,+B;QhKtHhF,MAAM,gCAAyB,OAAQ,WAAjC,C;Q;IiKnBd,6C;MAOI,iB;MANA,Y;MACA,Y;MACA,Y;MACA,Y;MACA,Y;MACA,sB;MjKWA,IAAI,EiKJQ,CAAC,WAAK,QAAL,GAAU,QAAV,GAAe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KA4H9B,KAAL,GAAiB,GAAtB,CCtH8C,MAAZ,CAAf,C;O;KDRtD,C;8FAGA,yB;MAkHA,6B;MAlHA,wB;QAEwD,OCGF,cAAe,YAAL,CDsH7B,cAAU,SAAL,GAAiB,GAAtB,CCtH6B,MAAK,EAAY,CCuH9C,cF1HyC,KE0H/B,KAAL,GAAiB,KAAtB,CDvH8C,MAAZ,CAAf,C;O;KDLtD,C;8FAGA,yB;MA+GA,6B;MA/GA,wB;QAEsD,OCAA,cAAe,YAAL,CDsH7B,cAAU,SAAL,GAAiB,GAAtB,CCtH6B,MAAK,EDAK,KCAO,KAAZ,CAAf,C;O;KDFtD,C;8FAGA,yB;MAsHA,WAS6D,wB;MAT7D,+B;MAtHA,wB;QAEwD,O8BAA,eAAW,C9B6H9B,eAAW,oBAAL,SAAK,CAAL,UAAN,C8B7H8B,MAAK,U9BAK,K8BAO,KAAZ,CAAhB,C;O;K9BFxD,C;0FAIA,yB;MAwGA,6B;MClGA,4C;MDNA,wB;QAEqD,OCMD,WDyGjB,cAAU,SAAL,GAAiB,GAAtB,CCzGiB,EDyGjB,cA/GoC,KA+G1B,KAAL,GAAiB,GAAtB,CCzGiB,C;O;KDRpD,C;0FAGA,yB;MAqGA,6B;MClGA,4C;MDHA,wB;QAEsD,OCGF,WDyGjB,cAAU,SAAL,GAAiB,GAAtB,CCzGiB,EC0GjB,cF7GqC,KE6G3B,KAAL,GAAiB,KAAtB,CD1GiB,C;O;KDLpD,C;0FAGA,yB;MAkGA,6B;MClGA,4C;MDAA,wB;QAEoD,OCAA,WDyGjB,cAAU,SAAL,GAAiB,GAAtB,CCzGiB,EDAkB,KCAlB,C;O;KDFpD,C;0FAGA,yB;MAyGA,WAS6D,wB;MAT7D,+B;M8BzGA,8C;M9BAA,wB;QAEsD,O8BAA,Y9BgHjB,eAAW,oBAAL,SAAK,CAAL,UAAN,C8BhHiB,E9BAmB,K8BAnB,C;O;K9BFtD,C;0FAIA,yB;MA2FA,6B;MCrFA,kD;MDNA,wB;QAEqD,OCMD,cD4FjB,cAAU,SAAL,GAAiB,GAAtB,CC5FiB,ED4FjB,cAlGoC,KAkG1B,KAAL,GAAiB,GAAtB,CC5FiB,C;O;KDRpD,C;0FAGA,yB;MAwFA,6B;MCrFA,kD;MDHA,wB;QAEsD,OCGF,cD4FjB,cAAU,SAAL,GAAiB,GAAtB,CC5FiB,EC6FjB,cFhGqC,KEgG3B,KAAL,GAAiB,KAAtB,CD7FiB,C;O;KDLpD,C;0FAGA,yB;MAqFA,6B;MCrFA,kD;MDAA,wB;QAEoD,OCAA,cD4FjB,cAAU,SAAL,GAAiB,GAAtB,CC5FiB,EDAkB,KCAlB,C;O;KDFpD,C;0FAGA,yB;MA4FA,WAS6D,wB;MAT7D,+B;M8B5FA,oD;M9BAA,wB;QAEsD,O8BAA,e9BmGjB,eAAW,oBAAL,SAAK,CAAL,UAAN,C8BnGiB,E9BAmB,K8BAnB,C;O;K9BFtD,C;0EAIA,yB;MAAA,0B;MAAA,+B;MAAA,mB;QAE0C,sBAAW,OAAL,SAAK,KAAX,C;O;KAF1C,C;0EAGA,yB;MAAA,0B;MAAA,+B;MAAA,mB;QAE0C,sBAAW,OAAL,SAAK,KAAX,C;O;KAF1C,C;kGAIA,yB;MAAA,8C;MAuEA,6B;MAvEA,wB;QAE8D,0BA8E3B,cAAU,SAAL,GAAiB,GAAtB,CA9E2B,EA8E3B,cA9EoD,KA8E1C,KAAL,GAAiB,GAAtB,CA9E2B,C;O;KAF9D,C;0FAIA,yB;MAAA,+B;MqK5IJ,0B;MrK4II,wB;QAEmD,sBqK3IgC,OrK2I1B,IAAK,KqK3IX,GrK2IoB,KAAM,KqK3IM,CrK2IhC,C;O;KAFnD,C;wFAGA,yB;MAAA,+B;MqK1IJ,0B;MrK0II,wB;QAEkD,sBqKzI+B,OrKyIzB,IAAK,KqKzIX,GrKyImB,KAAM,KqKzIM,CrKyI/B,C;O;KAFlD,C;0FAGA,yB;MAAA,+B;MqKxIJ,0B;MrKwII,wB;QAEmD,sBqKvIgC,OrKuI1B,IAAK,KqKvIX,GrKuIoB,KAAM,KqKvIM,CrKuIhC,C;O;KAFnD,C;0EAGA,yB;MAAA,+B;MqKtIJ,0B;MrKsII,mB;QAEiC,sBqKrIqB,OAAP,CrKqIR,SqKrIe,CrKqIrB,C;O;KAFjC,C;gFAIA,Y;MASmC,gB;K;kFACnC,yB;MqK9IJ,4B;MrK8II,mB;QASqC,OqKpJiD,QrKoJ5C,SqKpJY,GrKoJE,GqKpJ8B,C;O;KrK2ItF,C;8EAUA,Y;MASiC,OAAK,SAAL,GAAiB,G;K;gFAClD,yB;MAAA,WASqD,wB;MATrD,mB;QASmC,OAA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8C,MAAZ,CAAf,C;O;KARtD,C;4FAGA,yB;MCmHA,6B;MDnHA,wB;QAEwD,OAGF,cAAe,YAAV,IAAK,KAAK,EAAY,CCuH9C,cD1HgC,KC0HtB,KAAL,GAAiB,KAAtB,CDvH8C,MAAZ,CAAf,C;O;KALtD,C;4FAGA,yB;MAAA,6B;MAAA,wB;QAEsD,qBAAe,YAAV,IAAK,KAAK,EAAM,KAAM,KAAZ,CAAf,C;O;KAFtD,C;4FAGA,yB;MA8HA,kBAS6D,sB;MAT7D,+B;MA9HA,wB;QAEwD,O6BAA,eAAW,C7BqI9B,eAAW,oBAAL,SAAK,CAAL,iBAAN,C6BrI8B,MAAK,U7BAK,K6BAO,KAAZ,CAAhB,C;O;K7BFxD,C;wFAIA,yB;MDwGA,6B;MClGA,4C;MANA,wB;QAEqD,OAMD,WAAW,IAAX,EDyGjB,cC/G2B,KD+GjB,KAAL,GAAiB,GAAtB,CCzGiB,C;O;KARpD,C;wFAGA,yB;MCsGA,6B;MDnGA,4C;MAHA,wB;QAEsD,OAGF,WAAW,IAAX,EC0GjB,cD7G4B,KC6GlB,KAAL,GAAiB,KAAtB,CD1GiB,C;O;KALpD,C;wFAGA,yB;MAAA,4C;MAAA,wB;QAEoD,kBAAW,IAAX,EAAiB,KAAjB,C;O;KAFpD,C;wFAGA,yB;MAiHA,kBAS6D,sB;MAT7D,+B;M6BjHA,8C;M7BAA,wB;QAEsD,O6BAA,Y7BwHjB,eAAW,oBAAL,SAAK,CAAL,iBAAN,C6BxHiB,E7BAmB,K6BAnB,C;O;K7BFtD,C;wFAIA,yB;MD2FA,6B;MCrFA,kD;MANA,wB;QAEqD,OAMD,cAAc,IAAd,ED4FjB,cClG2B,KDkGjB,KAAL,GAAiB,GAAtB,CC5FiB,C;O;KARpD,C;wFAGA,yB;MCyFA,6B;MDtFA,kD;MAHA,wB;QAEsD,OAGF,cAAc,IAAd,EC6FjB,cDhG4B,KCgGlB,KAAL,GAAiB,KAAtB,CD7FiB,C;O;KALpD,C;wFAGA,yB;MAAA,kD;MAAA,wB;QAEoD,qBAAc,IAAd,EAAoB,KAApB,C;O;KAFpD,C;wFAGA,yB;MAoGA,kBAS6D,sB;MAT7D,+B;M6BpGA,oD;M7BAA,wB;QAEsD,O6BAA,e7B2GjB,eAAW,oBAAL,SAAK,CAAL,iBAA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AAL,C;UAAc,MAAa,6B;QAC3B,iBAAU,K;;QAEV,ctKtC+C,UsKsC/C,WtKtC0D,KAAK,KsKsCvD,WtKtCkE,KAAX,CAAhB,C;;MsKwCnD,OAAO,K;K;;wECnHf,yB;MAAA,8C;MAAA,uB;QAOI,OAAO,MAAM,CAAN,EAAS,CAAT,C;O;KAPX,C;wEAUA,yB;MAAA,8C;MAAA,uB;QAOI,OAAO,MAAM,CAAN,EAAS,CAAT,C;O;KAPX,C;wEAUA,yB;MAAA,8C;MAAA,uB;QAOI,OAAO,MAAM,CAAN,EAAS,CAAT,C;O;KAPX,C;wEAUA,yB;MAAA,8C;MAAA,uB;QAOI,OAAO,MAAM,CAAN,EAAS,CAAT,C;O;KAPX,C;oFC7BA,yB;MAAA,gD;MAAA,4B;QAO6C,OAAQ,arMsLhB,cqMtLgB,C;O;KAPrD,C;oGASA,yB;M9FuCA,iB;M8FvCA,4B;QAOqD,O9FuCqB,avGsIrC,cuGtIqC,C;O;K8F9C1E,C;sGASA,yB;MAAA,kE;MAAA,4B;QAOsD,OAAQ,sBrMoKzB,cqMpKyB,C;O;KAP9D,C;8FASA,yB;MAAA,0D;MrM6PA,6B;MqM7PA,4B;QAQmD,OrM+PZ,cqM/PoB,kBrM0JtB,cqM1JsB,CrM+PpB,C;O;KqMvQvC,C;4FAUA,yB;MAAA,wD;MrMmPA,6B;MqMnPA,4B;QAQkD,OrMqPX,cqMrPmB,iBrMgJrB,cqMhJqB,CrMqPnB,C;O;KqM7PvC,C;gFAUA,yB;MAAA,4C;MrMyOA,6B;MqMzOA,sC;QAcyD,OrMqOlB,cqMrO0B,WrMgI5B,cqMhI4B,EAAW,QAAX,CrMqO1B,C;O;KqMnPvC,C;kFAiBA,yB;MAAA,8C;MrMwNA,6B;MqMxNA,sC;QAc0D,OrMoNnB,cqMpN2B,YrM+G7B,cqM/G6B,EAAY,QAAZ,CrMoN3B,C;O;KqMlOvC,C;oFAiBA,yB;MAAA,gD;MAAA,4B;QAO8C,OAAS,axKgHhB,cwKhHgB,C;O;KAPvD,C;oGASA,yB;MAAA,gE;MAAA,4B;QAOsD,OAAS,qBxKuGxB,cwKvGwB,C;O;KAP/D,C;sGASA,yB;MAAA,kE;MAAA,4B;QAOuD,OAAS,sBxK8FzB,cwK9FyB,C;O;KAPhE,C;8FASA,yB;MAAA,0D;MxK2LA,+B;MwK3LA,4B;QAQqD,OxK6LX,ewK7LoB,kBxKoFvB,cwKpFuB,CxK6LpB,C;O;KwKrM1C,C;4FAUA,yB;MAAA,wD;MxKiLA,+B;MwKjLA,4B;QAQoD,OxKmLV,ewKnLmB,iBxK0EtB,cwK1EsB,CxKmLnB,C;O;KwK3L1C,C;+EAUA,yB;MAAA,4C;MxKuKA,+B;MwKvKA,sC;QAc2D,OxKmKjB,ewKnK0B,WxK0D7B,cwK1D6B,EAAW,QAAX,CxKmK1B,C;O;KwKjL1C,C;iFAgBA,yB;M9FoDA,4C;M1EmGA,+B;MwKvJA,sC;QAc4D,OxKmJlB,e0EhGuB,W1ET1B,c0ES0B,EAAW,C8FnDK,Q9FmDL,IAAX,C1EgGvB,C;O;KwKjK1C,C;oFAgBA,yB;MtM8CI,6B;MsM9MJ,gD;MAgKA,4B;QAO8C,OAhKO,arMsLhB,CD0BE,cAAU,cAAL,GAAiB,GAAtB,CC1BF,MqMtLgB,C;O;KAyJrD,C;oGASA,yB;M9FzHA,iB;M8FyHA,4B;QAOsD,O9FzHoB,axG0GnC,c+Lde,GAAY,GvF5FQ,CuF4FrB,GAA6C,EAA7C,I;O;KOsBrD,C;sGASA,yB;MP7BA,kE;MO6BA,4B;QAOuD,OP9BkB,sB/LMlC,c+LNgB,GAAW,GAAO,C;O;KOuBzE,C;8FASA,yB;MAAA,0D;MtMkFA,0B;MAAA,+B;MsMlFA,4B;QAQqD,OtMqFZ,eAAW,OsMrFS,kBtMdnB,cAAL,GAAiB,GsMcO,CtMqFT,CAAX,C;O;KsM7FzC,C;4FAUA,yB;MAAA,wD;MtMwEA,0B;MAAA,+B;MsMxEA,4B;QAQoD,OtM2EX,eAAW,OsM3EQ,iBtMxBlB,cAAL,GAAiB,GsMwBM,CtM2ER,CAAX,C;O;KsMnFzC,C;gFAWA,yB;MAAA,4C;MtMsCA,+B;MsMtCA,sC;QAc2D,OtMkCjB,esMlC0B,WtM7D7B,csM6D6B,EAAW,QAAX,CtMkC1B,C;O;KsMhD1C,C;kFAgBA,yB;MAAA,8C;MtMsBA,+B;MsMtBA,sC;QAc4D,OtMkBlB,esMlB2B,YtM7E9B,csM6E8B,EAAY,QAAZ,CtMkB3B,C;O;KsMhC1C,C;oFAgBA,yB;MpMjCI,6B;MoM/MJ,gD;MAgPA,4B;QAO+C,OAhPM,arMsLhB,CC2BE,cAAU,cAAL,GAAiB,KAAtB,CD3BF,MqMtLgB,C;O;KAyOrD,C;oGASA,yB;M9FzMA,iB;M8FyMA,4B;QAOuD,O9FzMmB,atGqHjC,c6LiDpC,GAAY,KvFtKyD,CuFsKtE,GAA+C,EAA/C,I;O;KO4BJ,C;sGASA,yB;MPnCA,kE;MOmCA,4B;QAOwD,OPpCoB,sB7LzDnC,c6LyDe,GAAW,KAAS,C;O;KO6B5E,C;8FASA,yB;MAAA,0D;MpMGA,4B;MAAA,iC;MoMHA,4B;QAQuD,OpMMZ,gBAAY,QoMNQ,kBpM7FrB,cAAL,GAAiB,KoM6FS,CpMMR,CAAZ,C;O;KoMd3C,C;4FAUA,yB;MAAA,wD;MpMPA,4B;MAAA,iC;MoMOA,4B;QAQsD,OpMJX,gBAAY,QoMIO,iBpMvGpB,cAAL,GAAiB,KoMuGQ,CpMJP,CAAZ,C;O;KoMJ3C,C;gFAWA,yB;MAAA,4C;MpM7BA,iC;MoM6BA,sC;QAc6D,OpMjChB,gBoMiC0B,WpMlI9B,coMkI8B,EAAW,QAAX,CpMjC1B,C;O;KoMmB7C,C;kFAgBA,yB;MAAA,8C;MpM7CA,iC;MoM6CA,sC;QAc8D,OpMjDjB,gBoMiD2B,YpMlJ/B,coMkJ+B,EAAY,QAAZ,CpMjD3B,C;O;KoMmC7C,C;IChTA,qC;MAEI,StMyHoD,csMzH3C,CtMyH2C,EsMzHvC,CtMyHuC,C;MsMxHpD,StMwHoD,csMxH3C,CtMwH2C,EsMxHvC,CtMwHuC,C;MsMvHpD,OtMiDkE,YsMjDvD,EtMiDwE,KAAjB,EsMjDjD,EtMiD8E,KAA7B,CsMjDvD,KAAX,GtMgFsD,SsMhFjC,EtMgF2C,KAAK,GsMhF3C,EtMgFuD,KAAZ,IAAf,CsMhFtD,GtMmEqD,SAAU,CAaT,SsMhFpB,EtMgF8B,KAAK,GsMhF9B,EtMgF0C,KAAZ,IAAf,CAbS,MAAK,GsMnExB,CtMmEmC,KAAX,IAAf,C;K;IsMhEzD,qC;MACI,SzKsHsD,eyKtH7C,CzKsH6C,EyKtHzC,CzKsHyC,C;MyKrHtD,SzKqHsD,eyKrH7C,CzKqH6C,EyKrHzC,CzKqHyC,C;MyKpHtD,OzKmDmE,ayKnDxD,EzKmD0E,KAAlB,EyKnDlD,EzKmDgF,KAA9B,CyKnDxD,KAAX,GzK6EwD,UyK7EnC,EzK6E8C,KAAK,UyK7E9C,EzK6E0D,KAAZ,CAAhB,CyK7ExD,GzKgEuD,UAAW,CAaV,UyK7EtB,EzK6EiC,KAAK,UyK7EjC,EzK6E6C,KAAZ,CAAhB,CAbU,MAAK,KyKhE3B,CzKgEsC,KAAX,CAAhB,C;K;IyK7D3D,uD;MAmBI,WAAO,CAAP,C;QAD8E,OtMsBZ,YsMrBlD,KtMqBmE,KAAjB,EsMrBzC,GtMqBsE,KAA7B,CsMrBlD,KAD8D,GAChD,GADgD,GtMqDxB,SsMpDf,GtMoDyB,KAAK,GsMpDxB,mBAAiB,GAAjB,EAAsB,KAAtB,EtMkQV,SsMlQuC,ItMkQvC,CsMlQU,CtMoDoC,KAAZ,IAAf,C;asMnDtD,WAAO,CAAP,C;QAF8E,OtMsBZ,YsMpBlD,KtMoBmE,KAAjB,EsMpBzC,GtMoBsE,KAA7B,CsMpBlD,KAF8D,GAEhD,GAFgD,GtMwCzB,SsMtCd,GtMsCwB,KAAK,GsMtCvB,mBAAiB,KAAjB,EAAwB,GAAxB,EtMiQV,SsMjQwC,CAAC,IAAD,ItMiQxC,CsMjQU,CtMsCkC,KAAX,IAAf,C;;QsMrC7C,MAAa,gCAAyB,eAAzB,C;K;IAGzB,uD;MAmBI,sBAAO,CAAP,C;QADkF,OzKMf,ayKLnD,KzKKqE,KAAlB,EyKL1C,GzKKwE,KAA9B,CyKLnD,KADkE,GACpD,GADoD,GzKgC1B,UyK/BjB,GzK+B4B,KAAK,UyK/B3B,mBAAiB,GAAjB,EAAsB,KAAtB,EzKyPP,UyKzPoC,IzKyPpC,CyKzPO,CzK+BuC,KAAZ,CAAhB,C;ayK9BxD,sBAAO,CAAP,C;QAFkF,OzKMf,ayKJnD,KzKIqE,KAAlB,EyKJ1C,GzKIwE,KAA9B,CyKJnD,KAFkE,GAEpD,GAFoD,GzKmB3B,UyKjBhB,GzKiB2B,KAAK,KyKjB1B,mBAAiB,KAAjB,EAAwB,GAAxB,EzKwPP,UyKxPsC,IAAD,azKwPrC,CyKxPO,CzKiBqC,KAAX,CAAhB,C;;QyKhB/C,MAAa,gCAAyB,eAAzB,C;K;IrMpDE,sB;MAEvB,8B;MAF0D,gB;K;IAE1D,4B;MAAA,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B,CCzGiB,C;O;KCRpD,C;4FAGA,yB;MAsGA,6B;MDnGA,4C;MCHA,wB;QAEsD,ODGF,WC0GjB,cAAU,SAAL,GAAiB,KAAtB,CD1GiB,EC0GjB,cA7GqC,KA6G3B,KAAL,GAAiB,KAAtB,CD1GiB,C;O;KCLpD,C;4FAGA,yB;MAmGA,6B;MDnGA,4C;MCAA,wB;QAEoD,ODAA,WC0GjB,cAAU,SAAL,GAAiB,KAAtB,CD1GiB,ECAkB,KDAlB,C;O;KCFpD,C;4FAGA,yB;MA0GA,aAS6D,0B;MAT7D,+B;M4B1GA,8C;M5BAA,wB;QAEsD,O4BAA,Y5BiHjB,eAAW,oBAAL,SAAK,CAAL,YAAN,C4BjHiB,E5BAmB,K4BAnB,C;O;K5BFtD,C;4FAIA,yB;MA4FA,6B;MDtFA,kD;MCNA,wB;QAEqD,ODMD,cC6FjB,cAAU,SAAL,GAAiB,KAAtB,CD7FiB,ED4FjB,cElGoC,KFkG1B,KAAL,GAAiB,GAAtB,CC5FiB,C;O;KCRpD,C;4FAGA,yB;MAyFA,6B;MDtFA,kD;MCHA,wB;QAEsD,ODGF,cC6FjB,cAAU,SAAL,GAAiB,KAAtB,CD7FiB,EC6FjB,cAhGqC,KAgG3B,KAAL,GAAiB,KAAtB,CD7FiB,C;O;KCLpD,C;4FAGA,yB;MAsFA,6B;MDtFA,kD;MCAA,wB;QAEoD,ODAA,cC6FjB,cAAU,SAAL,GAAiB,KAAtB,CD7FiB,ECAkB,KDAlB,C;O;KCFpD,C;4FAGA,yB;MA6FA,aAS6D,0B;MAT7D,+B;M4B7FA,oD;M5BAA,wB;QAEsD,O4BAA,e5BoGjB,eAAW,oBAAL,SAAK,CAAL,YAAN,C4BpGiB,E5BAmB,K4BAnB,C;O;K5BFtD,C;4EAIA,yB;MAAA,4B;MAAA,iC;MAAA,mB;QAE2C,uBAAY,QAAL,SAAK,KAAZ,C;O;KAF3C,C;4EAGA,yB;MAAA,4B;MAAA,iC;MAAA,mB;QAE2C,uBAAY,QAAL,SAAK,KAAZ,C;O;KAF3C,C;oGAIA,yB;MAAA,8C;MAwEA,6B;MAxEA,wB;QAE+D,0BA+E5B,cAAU,SAAL,GAAiB,KAAtB,CA/E4B,EA+E5B,cA/EqD,KA+E3C,KAAL,GAAiB,KAAtB,CA/E4B,C;O;KAF/D,C;4FAIA,yB;MAAA,iC;MmKvHJ,4B;MnKuHI,wB;QAEqD,uBmKtHiC,QnKsH1B,IAAK,KmKtHX,GnKsHoB,KAAM,KmKtHM,CnKsHjC,C;O;KAFrD,C;0FAGA,yB;MAAA,iC;MmKrHJ,4B;MnKqHI,wB;QAEoD,uBmKpHgC,QnKoHzB,IAAK,KmKpHX,GnKoHmB,KAAM,KmKpHM,CnKoHhC,C;O;KAFpD,C;4FAGA,yB;MAAA,iC;MmKnHJ,4B;MnKmHI,wB;QAEqD,uBmKlHiC,QnKkH1B,IAAK,KmKlHX,GnKkHoB,KAAM,KmKlHM,CnKkHjC,C;O;KAFrD,C;4EAGA,yB;MAAA,iC;MmKjHJ,4B;MnKiHI,mB;QAEkC,uBmKhHsB,QAAP,CnKgHR,SmKhHe,CnKgHtB,C;O;KAFlC,C;kFAIA,yB;MAAA,0B;MAAA,mB;QAUmC,OAAK,OAAL,SAAK,C;O;KAVxC,C;oFAWA,Y;MASqC,gB;K;gFACrC,Y;MASiC,OAAK,SAAL,GAAiB,K;K;kFAClD,yB;MAAA,aASqD,0B;MATrD,mB;QASmC,OAAK,oBAAL,SAAK,CAAL,Y;O;KATnC,C;oFAWA,yB;MF+DJ,0B;MAAA,+B;ME/DI,mB;QASqC,OFiEE,eAAW,OEjEb,SFiEa,CAAX,C;O;KE1EvC,C;sFAUA,Y;MAEuC,W;K;kFACvC,yB;MAAA,6B;MAAA,mB;QASmC,qBAAU,SAAL,GAAiB,KAAtB,C;O;KATnC,C;oFAUA,yB;MAAA,aAS6D,0B;MAT7D,+B;MAAA,mB;QASqC,sBAAW,oBAAL,SAAK,CAAL,YAAN,C;O;KATrC,C;oFAWA,Y;MAMqC,OApDC,SAAL,GAAiB,K;K;sFAqDlD,Y;MAMuC,OA3DD,SAAL,GAAiB,K;K;gCA6DlD,Y;MAAyC,OAAQ,CA7DX,SAAL,GAAiB,KA6DD,Y;K;;;;;gCAhPrD,Y;MAAA,c;MAG8D,qD;MAH9D,a;K;8BAAA,iB;MAAA,2IAG8D,oCAH9D,G;K;0EAoPA,yB;MAAA,iC;MAAA,4B;QAW4C,uBAAY,SAAZ,C;O;KAX5C,C;4EAYA,yB;MAAA,iC;MAAA,4B;QAU6C,uBAAO,SAAP,C;O;KAV7C,C;4EAWA,yB;MAAA,4B;MAAA,iC;MAAA,4B;QAW2C,uB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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YrHsEA,iB;;K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"} \ No newline at end of file diff --git a/assets/v2/general/js/lib/kotlin.meta.js b/assets/v2/general/js/lib/kotlin.meta.js index b0cb513..5b5ca52 100644 --- a/assets/v2/general/js/lib/kotlin.meta.js +++ b/assets/v2/general/js/lib/kotlin.meta.js @@ -1,2 +1,2 @@ -// Kotlin.kotlin_module_metadata(393729, "kotlin", "H4sIAAAAAAAAAOy9CXxcV3U/7lmkefO0XY0kWx47iSPHtqzEznhsERNBEsmWLW+SkewkDhQzksb2JLJG0cxo8QaELGxJsENCgFJoKWEpaQrUrUuBlC7pTltoacPeUlq6L2kpXX7ld85d3rvvvfve3DeSW/7/zy/5WO++e8/5nruec+69b+5dYcRSv99hftwwkwPFhfzkrlO5WbP+vmJ5qjBtmruKp2dys7nxqbwZ2zddNiMTZnKCxuWPFM26YvlUHqjz91dyUyUzMVAsTuVz02asf3rRNE7lSqd2FSfzplEujpVnC9MnzXr+TMzlpir5kRNm9N6SWb+/NJw7nTfj0/iXHJ4tzuRny4uH8uXcZK6cMxsnclNTmAVK1ZCbnc0t7ipOT+QgO0fMSM6MjJuNhyvjU4XSqfxk/0zBbKI0+8r52Vy5OGs2TBSnpvIT5UJxumQaVnRiGLKPuUmx0m7dvQg5KEwcWZzJm3UUwoyX8aV9nBWs3wHbwotrRTQOSGRms8wERW0dXyznnQiNAxBlvSUHBAEWeaZcmc2PlXMT95nxo9OFspkcz5Xyu6ZyJajo/SUWSB45NVucp81jFKZL5dz0RN5snYAmdAnCVrUF7RIEUDUiCDmsn2C1Gs/NniyZdYwCcIFvOjdlmvumoZbyI9NTi2bbZBEq3FWc5t000q733TaRmToxVcyVnQxNezDOejX3WCRm8mS+fICXdjZ/ApvPrOcR9fey5yqLZs9s8fTgwsxsvlSCRjYjUAmQNjK7azafK+c5G4GSOOU3QJe2Xox9PNlsnSpOn3RV4EGIsivwoCAwGyxaqMDG6fy83SKJ05Cd3EnoSxO5Silvtk0X7zqVnx6YhVY6dShXnoDearbPzBZOF8qFOVZNvF+nSqeKs+7KGsM4u7LGLBKzoVQZH4NBmMfmp21tvZnQKYBrejK/YBr56UkeKmMud+0a5KF9YyI0fHjQTNLQ0cP9g2bjDB+NdOwZ84XyKRweqc9FzRbjB+K/CFnRucKMkohZb0RIFML4jPGnwZ9J/myEZxyezfCWIC3w5oBq5WSrONlqeGsgaR67hj4byDr+fj1/v4G/b+DPTfSZIJv5ew+n28Lft/JnlkvZDm+dZAenehlPvYW/v5y/38qpXwFv15JX8tRdPHU3f9/D3/fy9xH+fpg/RztXpN+cTPeStnR0qL0rbqwg7dl60oFv8FyJz6HIJSNqmJeMRsNIGQZJxQ2ju+2KsSI9QDrTJNWYMtet7Yl3RjJ1maZMY7aZXJOWYrIGuTaN4XoEkjE6EaOLXJeOZppB2DXwbHHTXMdoumREN00Xo1kP/ITjtLpp1iNNlmyEtBTksDttpuqNFalopj3TBjw3Qny7m2cjw70J0jo47ko3zU2M5uag/N2MNBtIRqriRrItbaTiKYjJrBp6o4E1vJpB9YKYNBe3xg3Vy2h2QtpaTnONm2Yn0uwkfZaA67oMFNoTzdSB4Nus+DY3Z98VIwKVdLuSs57cIXqDzHM78mwm/RrSokjaRQYg0+t45q93ww2wAg5CWhenWe+mGWQ0Q0F1PoQ0W8k+bFfogftZD4TQARryFGMf0qfJQaD3YB3EtF5yKOQQOcSyOQyQN/CibHBDD7Nu+SpI2wg0cf4cg2cMnkfw6eZ5FcvqUezK7rSjV4woyLyTdvN6KHbUO+zuZDR3BdHcxWju5jTHVDR3I80d5B7HYK+HwQ60biVAu7jMfI/o8U9LCrfrkYgR6VyRpV0mE8tEB4wUq5TY/lZSxyulnlbKU9H9bSQBwTg0aj1t1DqMNIhJ01dCqIFme+X+VaSJxiWceWga5eDO6BWQq647ICPJLPRhmgWCQKNp9txZf/cjcSdLyvnaCgiXjHpzBf6fen+z+VQdeApgBmcXwcV8FXtyv5Y5qLnJSeYZRE6YyT2VaeohZpmjKzzV5ARSUOtXn5uZAQtqxkrlWfCRyvDXwL80sY56tOBCncpNg8lPwGNyCnxjCzfD3bi6iakC+HRW/Daz5VCxgp4dRA/O5UG2MTk+xajQh+ZOkPCt60/lCydPQQaHK6fHQUDdqeIcPBq5wH3TIxXwFa030+RBjI6fKp+eMiMlMw6O1qSZPI2CJ4vzQEXzwMSz6NMACy4MBisz4JvnF0Am+v1AUQdu1SS4HbOUimewNFWYzB8F0jKSxqA+zLr5wmT5lGnuzoNrBn4N+DuWU5Q7Wsqvm8xD9YI/g575uhPgxK3bdKpcnindevPN4+CtgW+zFWYbN7NWu/ne0haAps5oicdtgTjWxpvWzYCvDMjr0BGG/G0F8acKE6fMuhmIvdusZ94oez1mpgql3fkTucpU+fBsHssNmWueYUGeALOT+xUzlMgNpoFTknH0zWPF8XtNo5RHBxXnFOBCs/IXZ0+asfntE2ZssnjaTAxO5U9j1UXzU6kfi4CvhK7AChKhflMUwlHuL0VJPX8m+NPgz1b+TPFneyfD6ODvnfyZ5vHr+ftW/txOnZco2QlvhLo0UXIHxKRIP/xtIwMQ347OTPrz0XQPuQWGXWTokXU4ypphlN1MR1kGX1vh9VZhvNDsUVowPK9ghidjZBJanFnOWU9eqS3N5rmNahodnludPPC8Hf2LkPJ26/I8DbrsU3HjEdIZAW0WG1ixfx3VeZFsJyjUdlpFdfRvPfubie9v5hT1JIlZhHeTvzfw90ae9Sb6vpK+R8Q7PJtpfDtp4Y1B7MbYX4++ZiayP82e2RSkNtNUk9MkIW2lb1ozWQVpDVbu6slqeDaCtDVc2lpJWpcVe40dC2/XOnJ0HUVaR5/BNXMdL+k6XsLrFSVMg7vqzH2TVLIbAtI2+KbVU9c1As9N9NkOLqxXcjPZ7Gi5etJDqZupgxvhjm49mMabmEMEFFuw9lz9CC3gBuw0JnSapoEVYCi3AVmdguyVxrtIZxPvW/XUe22A58vgaQBbFp16eO7Ap5cdvACwkN+oMx+MmsncxERxdhJnzX7G8n9LfdePV8plyFeSPUt5MECThdxU8aQZP43rSsJGU2teh+tUpy07TN9KVHvH95cQZXI2d/IknZibTF3TcLRSSL2CT11X0KkrKGKqLuNcbTbwZyNXnwTe6qkypl5p+mIsfR1ZgS3dQ1UY9bliUOF1tMLrUYdcR52mQAKjGkEymGCTTQA9DnVHXE24DQip4yaTcjXiw/JyL7ZgAD+wmfuBGtlC1ZTwI0zpEV7HVJhvTTxtGKyD/8HHI+Z/Xmd34/7p6WKZdlbWY9r6ZwvlU6fz5cLE4MJEfoamkNHKdLlwOm/HWF1edLeGscL0RP4AQ02A80XXnGLbtm43m/tLpfwssg3OzoI7UMcfbAFIWq0jA5XC1CQ6aCfys2yhJmdnr/5IbvYkdPdm8DKK8/lJ9loyiV0ETtFyZ//Bo4PHD/eP9h8aPDI4ahp7jg7vOrJvZNg0Do+OHB4cPXLMTI7my+B7IDIfHm02kJ1WP7BvuH/0mNmYX5jJzxbQXQEfbvWg9IZrP3aWnStN9VP56ZPg7VH3OYaZi9O15LoCXXJyrFGpV6VS1JPclSuV7doXK9DoXEWOoH9FF5/5sq/XObsOV9Aqs+imHipOFk4UJmgpbcCkHWyUi2bWHQTfb8pM3NU/OrxveC+03ejoyKgZH5yugFqZoomkf3h45Eg/1u/xXQf7x8aw2bPOOjoEnmNhZipXPlGcPW2SQ5VSeSC/uzhROc2czDrGWLdn3+DB3WbzwZFd/QeP39k/uq9/4OCg2bBrZHjsyOjRXUdAdotowuN7B49g69oRYywieeTY4cH+g/v6x8wOORNj5cmpwjiuhTvydnS6VDg5DR0K2rEEfYXPQczIqNm5b2oqfzI31T97kubUrqYOnjIGHUYaF6tpo8G0YuTEQLEyPVmyk9r2wUwHNHXhTH7yYO7M4r7TM1NmHENmtFA0G8cgQ5hKh0JToSSR2xMde9egiY21O/lIS9IuMU3H5q6jo6ODw0fMtkP9dx/fNXLo8MgwvB6no8Kxe1F3OncvjsTThWl8zODya8BWhr15kSyU+ssH89ApzSQf6yMnsNm3me1YIhjTYK3Gcify5cVDyNA4dmx419DoyPC+ewZ3mw2Hjw4c3LeLdhkzPgzZM1cOF8cqE6f4jMCutbXD3vVhqU6Hi2WsxzzrRkyxtA9XpqYOF+kSvdRgbGq4B/pfTsJvG6HP3BT2iAmuauKHcwUYWf1mZMCsO1GYhWLWl/Iwi5k0Tayd4jSI2yaFs2Z8ojgD3sFovoRzpMSJXGGqAiMymbckqfcMEqXKxEQep4p7OItz1wZqWiRAcIwTt1iwI7NYWrozwIP1R2ZhpIEy2GXWlU8VZuU8bzfrjuKGipnErsE6RPLQvmERHIPmOT6w78iYabLgsSODY2ac7jjFKWMMJs4waUd1VncUV/zN+qN00R2mdHmc1xXmzBiYAvwzR3tWBRwOaJX4zFQFty1wJQC6Vj0NlMwkQo3S5YEYzJwhyzAqQX+Vi1Qc9Hc+QxUz1US5SHdEQFewR7lIlybKRZqbOP0LRCxTdewB76zcQEbzjhGUEgSI/C/gBsJRe7/JUO+VNR11bFDxPTFpnyoBw2QYp7tJXB9gcmHUCQQzXoIxDQ0P3GhBDZwd58DBMxN5Ph9uEFH90J4Gj4X0Qmnw9EwZt5+E9Bg6gGwNJVY6BcTjhfIuUDz0dZbVLt89O6re1zFoJrFOTFojrC1YmFE0HfXb52EFpPXYdhTsw74j+0Dtwgjn/anhqLQf03zUf6/GpECsHW6A0tiqT2x89tOOb4/bZtDaoF4sRdpg8zjWl+qPM+PeOA9+TX40DzYITO01wF2ZmQFx+cmRmfysyxy2gB/vMIMNp3Oz9+Vn2aIO3wP07MCZg3cfHh0cG6NKbc8+sFv1YyNHR3cNmi135UoOPPOAKFeGjc7cbIH64/aCW9NhdNbBD2FLafEjI7tH7N3ZetCvyBAv0F1Qad2M7wTPLIIqwn6m2setLxUrs1ANien8/BgSNU6yxZ07aV0lcnzrLgHmcjYHs542GnMYRrDUj017VHj2dZ27vg3WLi8kOXZXpV3XOlDtE/eZDVPQpIe4d9lI46DQVLM1oY6lxLQUcZxcmdFyERLolqZQlE3SPiwKlHdcG1naEaYGInOC+AjXB2YeRxjPUZ7aE+NEYWoKN1NhTM2iigNzkBJxUn002pu5IFXetzXFJivEG/eW9pVo/ukqWeJevpYZx3LjGiTubbOZHMZg/uXdVGj4GSirWZ9jQqEX3l8pQKGbeUBUVmy2Ap7tOMVrgPAutJ3YdRrtbVRs4lKlRBdwoTVni5Uy2KUS+LCgf0BzM2vYWFoE2ztbnKauSGPF0ZgVqWj0ZRf3RaNz2+Bf1jQxcndhrgAlasLwaP50Dr3fWYCC1yNCwTdWHLvG9E2ANdA3jtJMX2yYJvpu4YhX7ifF8QsBiHSUOo57tqYBE/h8AReKwU0Ehx/dGDGSWA8Drwe8oNzMDFjq+Ini1KSZLE4LIwxB0eMM7IoDBdDR8XH820jNsVgxZcZ5cAryYdIgnfKYBoT5gINBXRrNQ+cQO8tm0tIQoO1Le3CYAzd6hSdYuK4AHv6wGZsCAxA7nZsxk2UwqSXqX4O6mrHaG3rIBF0Nb+EBK6W+nLsvvw8G4cxsfhLnBCABo45OT2H5mumO94hVyHj5VI4aWlpQayDRtwba9/kL2uICDJI4/ZssF0dz8zShRfCIiGbOJt4Jr9uRWSFUXmdpHc3jdGZyXbm4jjtaRCRDk7GpSsMs0/F3YQs3jEovicJp1PigqPP2VxGNY3Lnjt07d9p8+e7iOpgIroPZ6To5dZ09GV1XmF43A9lbx5zwm/ePrZugH/XcWYQ5TgF6Ya8EIiI1ABL7506zfRW0bAfKZitE0MkTKBy+qWDCnGN6Mjc7CcnGkQr4eiUImQehjrBrQLjl8Cz1VgvUY8FEMcc5UE79reFYaBcrPPiM8WecP+v5M8GfJn828GcTfzbzdZ8WurNP+A5/ij9X8mcnp0rTpfY1nHctf17Ln+v4cwN/buRcN8LbKnITj93KnzfzZ4Y+15Bt9LmWfsGAz+08fQd/7nR8u7CC9PPnAH/u4s9B/tzDn3v5c4g/9/Fc7Ye3HnKAxx7iT/Ztwxb+bcMKMsafr6XPDDnOn6/jzxxPH+fPCf6c5M88f57gz5P8eYo/Z+izj8rDXMEQNF5Jyjx2jlPN8+c5eCbg+QbW/AOUDSMejvDAm0XgLSLwVgzUQeCJCLwPkXeKhHeLwHtF4MdE4AMi8AwLDJMPC5SPIMph8lFB8VMscJj8tIi5wjI3aGXuMyzlTgaCtJ8VtJ9jtHs47RD5JZHyeRZ4jc30yyLpV0Tg1xj3XkvSCyxl3Gb6dUH7GyLwWyLw2yLwuyLw+yLwByLwJVHsP8RiT5E/EgkvssAU+YqI+ZoIfF0EvikCf8YCq8hfiZi/E4F/FIF/F4EHo1zku6LwvkiejvKEj7Oxvp/3zQO81FPk01Fe2N8VpF8UgT8UgS8L1K9ETcN4U4S8iBE09DUr9A0r9C0IpT+xLT1GNvJvLzZlVtLPFjZlX27EyVcj6WyqLdU6tAkXLO9PGcYWumC5WRXZQ7cW2jIzQw8bV4x4OkW+EUlHM7N0uTNq3HbFaEyv4XHZBPkWBurkxL3QDyFuGBKfw0Bbto38aYRvb7TRvwOZEnB8P7ICRdeDaIOKTiLGeg5EAOgzyH9nANCgBlAKgD6P/K8JANqjAdQOQC8g/3gA0F4NoJXpPvLtSLph3Z9H6NcSWJOEfMcVkyB/wWQkyV9G6Cp3dGjFFWN1Oku+G7Ha+T7ezm3kZyP0C6cIj4a/+PVD1CgjzyvIXzvhORshH3OJbSJ/Y6OPMYnXkr/FrFSyDSgFAl3RzE0S+rXk7zF6VKSPQvpuR/o/YPScSJ/rwm+v7PQN5J8w+ki2nu703QQ1+EDUQCWajpIIr7V0eoeLDPL6zzyvkPVTPlzbyUvANbSJfqS0qQdIswbwQ3mhhpDFhFG0Ih03YhLTQACTSqwKYxv5F5ZdQv7V09rfc8YMvcHAiugm/4YsUSjhLDyT7CujO1x96YrRDFX6faScF1U6D1W6X6rSa8h/YPQgdKP/xMD+oQjtlIB2xVgDyf+FsXt8kleT/+PpYlQfrE6nyX+zsV9PP8+J2kM/nX45+YGnoG+IumPe6IxhXWw3eSCq7qAucpC7ng4LdUd9UxQSF0StLECtHHB0xIcw/ZhIPwbpbVL6reRhT3Yf8cS8Oapquw3kLVErP5t59pvI79iZPIVkGRVZkrw1yoa4gmOriiNB3oYlySjoryVv99LTITO06YphQvqjyHpcVMJxqISDUiX0kceitN8myFNCyz0edWi5I1TLsdEGCodELe2/gbwjqjWUnWS6Q/litIah7M+kO5R3kEuIsZtW5m7gekLU8G6JC2sisi5i1cXt5J02WZ8fLx93tykH+ZNYS3nRUnloqUNSS02Sp6LpTpBrpgTimVR9ivXLEhd4nWGgSF8ymoWIOhe3XDHWpl9J3i0XPoF9NUp7qm8tRK1auCb9MvKeKPUHeCGGoRADGub/ZeS9UWr+Od+dwDeoYe3Xkx+N0l6bIO8TgR+jAa5NUcFtJO+PcvX4PhGgRINORbiRfECLLk1+HGP3C30qy3oZ+YkodT94QV4DBdmj4W2sJx90FOSgkH3QUZCfjHJF/j4RoER73AX5kBZdmjzjKIgsq4N8GNPq7LQVGH2tOxoCH2EVvoKV/6NR6jXx8o9D+fdqOEnD5GN2v9vUhZ++Y+/7KTqas53Y+9qYluN9sISsZ306YmP6EHmWKYI4UwRD6DU9wRUbA7EUm3s4OzP6Iwi3i/y0G86dJ4Tz5klWEe+OkOekwUULualHKO++bBf5mWj6GpWfvkoUGmg+wWkySSfNrKBhtf1AtN3Kwgqrgny1z1bySdoVQGWeg3r/FOt67KsHSUXwslwr6A8A/XlB3xZAv5f8rFx0gxYd3qXiJ9D1hahgNVkkl6sBhagju5l8Be4gPyc3vSUmOJu3kp9XcW0G639FWP8G8gvRdH0qasQyF4YeMXldmTB878HaZC6Hp06TnO66dDP5Raz2m6AN9mMdS+8H2PtnXOmfcaV/1pX+WUf6bvI5z5hUjiReo+pefz953mMYFV3/l6p1/RBNNkk+v4wi/aTch93MwnN3D8B/PKgXcu2jW6T7UDfoCFMWJqSwCvllb/2pR9ovLeNIO0V+ZZnF+knaJ7t4cs/WMzRy9z7i9ft0AQMyOEJ+Ncq8VocB+zWnAbtJ34CNkBeWF/BG8uvUqe9hCqzP9iwUxcniFJgJKtC/92Zupfko0Kq6F3JTAP3/G9go9w49HL9iNKVvJr9JjVAPn+u67EqTUU4lodXr4PW3oqiuOENbD58GBjD8NmXYSH7HHlOv5/Uiq7VNmVsxJzep6NplOp7Wz/L9Bd18/x7P9xd08/37lGEL+XF0rQZ6cOGlmmvVIpO3hSM/GI78kBb5T9ClCq28t8rk+8ORHwhHXr1mHOTVa8ZBXr1mkPyDdJVGq2baZPLqNeMgr14zDvLqNeMgr14zDvLqNYPkP4nke7VqpkMmr553B3n1vDvIq+e9o+tG+pvDm7iWLO58Icp/XeZ1kjt7powE+QNQ09SG2ObOCg280nhDBJRBHVUGX4qmGozeVMIwM2+M7NyeWmf8UTS1xmgYWGU8EIHoP46CzEYg/5MolTMz4Mhnz00g7cVoVyzzYCSLfwbWyOhfdaJT6q8h9UNI/ZCL+utO6geiTWbUWG0mjIvXdkYzEfyZSoNxgv5IJYo/K+gxVnXG4CU+EDVWDpgpg9Sxb7s9xiPStctY2ZkAWoPSNhorbWrHW3RgpRG10yDUSEMU5G7jkSj9uUNkABqsC+rlWqM1lTYa99dDnpt2tvFnO392XDKajeaUaaxKYUTLztWKZm69YkQheyc6U1iu/a305yP4q9Hr6Wzomej+TvpbkZS1jllPfx/SNrRxNEl/Mdp29zNg7GJda6CMHar6wLzfChJW9rClPZSzif44BME2p6M7V2Tpz0B2rmCeX6flC3VfMeJd/QC82gJWVR6vpIF2v6pDCAMgkkuDSC8NImm8EOm8BjDWsuC1NLjGeDjSuZb/onRt5jrAj94bNbLwb3tXHtt8Dbb5rZFtWKlGlP6AZe0o+yHLWuqYJsw642I2A45OCnpFM/QK0+oVL6vSC265YtR1vTeCctaxvuWCjBpr8M/1l4xxAH8tgN9jgd8qhIgux599/PkKV9d8pauL3saft/PnHZ7MXjHqu36a5q5L9PxmYw1Q9FKKtTu3K8r3P5JRWiVRo8sz3BNdH6YZXq+sTmfus/+rVWt0tcG4vKEHd/93r+OaLUm7+oalD7iNS4NAfbLJT5/sMVZ0dtN8b4J820sT0cyN9OfQq1Cb7DeY5aK/tMYfudcNrQSlRdPufgqUltm1xXg41rkVC47DbrSB/s59C/399GgrGaXq7eEj7zHqjBj571jX26NGonPLusN8tG7J3Hxr5PBACgrEfgnfBk/81XvbQKc7Bp74m/c2ULF3cdWHv13fwn4mfoxuKhgQxVZM6M/E6RIKZH4leTVN5ohZjrj/WnV8VkiyCr1/HXkNT1FSDkVHecooTxnlKVBdBq2EB1wWHyZQDV3d0Hs2W62Ael3U+Earnp+h9Uz13TYgybBg1g5up8Eu1IIZXq8ZSwseh3+vg385BMEescOvR2CP611aj+vofBm10UzN4m4hIDdSsbf4icXEnZC4Qd1LQQ28XKkG9BR11FiHCvCjEeNho/NWWtOFdZEePBflXlrjNw4Q6Fj3YU3Dcwqekf1Jcpra0hdiEJzGKAxuJkU2fQVK/BvJ3JrFYlJeGppipBFFd/wyQrHu+OWINJi46FEuGuaOXeM4ol4hRtT+DeR+x5pPhO7tsc1ie/kAyCoKMroFKJE9EI2jT9Y1AqP/dmusU7BqY8jOcwNjoGNcAP48KOw7OvvWHZY68423Rg/PDbQbkRTffstExfKAuoYMcob1pf2EnMUQtAHfbFbXnkEWEGXnHggt8lBKyIKh88Y4lUZ7Ds2nd1mCdvs45DZde7f/Gu1d/e7e1YO/4zzPe1mnu5fB8wI8oz69LUlej6kYfDl0vHa549G/0Uy/qvvR0AXGuoSOOMpzhx3yXuyQuywVv5K8kU72Qa1Dxb7HoN87Ho5A/AOe+BUQ30reFLHMAO6yEoh60BkVFf3ooST2owHLQAwwA9EGnShBHkKm3VYfSpNHqEBuCAaGHmm0hsNqh40YGHqX6ZM0OPSIX9Ie/6S9clKKvC3C5NtxafJ29jWGlTfftEFF2h5VFlx8jjxUa+gUedSTxxR5jMcZkozHA/L9eEC+Hw/I9+O++U6Td/i2YZpcDMjLxYC8XAzIy8WAvFzCtH1qeU8G5OXJgLw8GZCXJwPy8lSAvKcC5D0VIO8pX3kt5F10cFn6toU8zT4TsiPegxEHpIgfZRvfdsT72CaxHfF+jDhkRdj+VIqvGMp9L8XXypxxbJXIGcdWX5z99kN+/Qi0DVMcGgaBrttcMVq6DhjRzhFQea8aSILi+Rj9xm2/ST4eoc4ZGMZG8iwrwEoAGzU5CXh54Lddzxy+ZqHUnomiUhu2VNrYrdEPRwaawbiIzwoBg+u4n6E4lo5bST5BRWYT5JNM3lNoRPevIZ9i8U24xW4B09yolUE7XZgYsBYmHqY4kopIksusdCuhoD+HwVdhQa8hPy++wbuea8BVNCMCgDXplyOjjbwwO++EuQHUOiuKfq0TZmmOui3NoG1RYrKlccQrLc0dXktjiEZ5nlqaQcvSDHosTZvb0kgjzt/S+NqMQX8jFNLSqCzGD5ulGVRYmsEfAkujbMP/ZUujshj/Y5ZmDfkF8d3op7k+b5QSf9E/8f/ZqJpslKoHChvVpq8tW6mNuguU5d22jTrmslHPs8zKNupYkI2601KGVW3UMV8bNRhgowY1bNRgGBt1d4CNGtS0Ucf0az3VdR/aqHvcNmqPbYviso1yxKONSsk2ChfF3hDxGiniNFJ7LCO1x2OkDrqNlDSsajJSAdMhX/ulMlIqg7InwEjtqdFI7VmCkdqjMFJ7FEbKJ9+PB+S7qpFS5psbKWUbuoyNykj55KWqkfLJCzVSrw4wKD55eTIgL1WNlDIv3EjtCTJS6kSXsVEZKZ+cVjVSypz+/8RIqXqgMFIH9dVlGzVSPwLa8rW2kTruMlK/yjImG6njQUbqNZYyrGqkjvsaqT0BRmqPhpHaE8ZIvTbASO3RNFLH9Wu9vYsYvxTtfJ0wUrj0T6dWObfZ2mubp6hsthzxyqnVOq/VijsX8fZaVmuvx2odclutvfZYWm6rFTC1epfHau1VWJgftqnVXoXV2vtDMLVStuH/8tRqr8LC/L9FvB9u26PqR8L2HNLXgh3U9kyAypu0bU/eZXt+k2VCtj35INszbqm0qrYn72t79gbYnr0atmdvGNszGWB79mranrx+ra+kG2onlraPnDZeiHYesbZArR53xVjVdc5Y0XnS58OFlpT948idKzKnVN8vQGF/D8sUHYpCYb/Af2gNDQ1Ts9/BX1RTXog7dfebm0cb2CY8rQ00o1i4wtIK96f025Z76ab2htR68sVIOpVqpj/Wo7+tzEQypzP3dUlvo6t8iL7v3BKfNBpTrzNaU6/xfAPTEfqblwR9Qo9igT+O2F/BtBjNqQZjFf3Qr2Xnn0QUn0NdihhvjHZOL0cZLxlZKNZWKFaPb7HcxbhD8alO3SXjuQg7rt/1fwcIfThifV/9zWgqZjwSoQkYcKb+adQkzpg/iypRXVTfjvoA/rkH8DsWYOrjSfORmH2mrHRoq/pMVX4smjhbNTF6dPjIvkOD/FhR74Gu/HRQ70GjzXjSp3zQq3W8q89Jop6jYR1Hi9rnxFY/ZDSOohVnvkmHj/qeibtNcQKqfBKv31G35ig9/Iue3ek9v5adS5f6a3aQPn6DKV89ZB+lL85wrnOc8hPhp/wk+NH6CX41UYKf+pPgp/4k6JnP+Gziz2b+bOFPwp+t/Jnizzb+bOfPDv5cyfOxiudDHNW/hr+v5c9r+fM6nn5954p07GnxvSV+ohtlwbgdrKNB+tFRNCt+T13PPzqKwb84/KvDz3wpOX47mmDBpB007WCDHWy0g012sNkOtthBYgdb7WDKDrbZwXY72EGDncavRzpXYhBV2CpQYZ1Uha3uymG5ErxcCatcBvxLwj8T/jXAv0b41wT/muFfC/wj8K8V/qXgXxv8a4d/Hfe2Gitd+Fgt69EKdILw1fhJZspIgxK4xvqaKbEzaRGtqULUi0RrKRH78AoPrscP0ujTl+0gsqUpW3sqhXe5cLWbyFzTBX9Hm51xSiC0+p3WIe9/GTHvM41JPvbct1IYYlCajVPFCTzhl53TmRCB5hI7O0y8188XpieL82b9XfzJ9WBifLY4X8rPprL0KHUckFF6UZbzKHVxswUOtygxgQJvN7i9q4menx67++EHI1gPTfRDtbj9mnC+4ud7dfz1aSPBSvriW5LmA7dZOXKcY5rqHy+VZ3MTZekIw8ig4qRSena1dEqpOIu4huNKpXsGy0V+yCJ70MPHI0fEcare2xGDlKkoiX1GKZ4nys7WqyvhCc1mHT2oGbN6eqZSztPzWdm5qfHJ4nTePrSVXeqSKOXL9JXrVlKeXTxS3CUxNwqh9JC7xFhlnAYaR3PQCU6z40rN+BQ9AQ9PB2SneSfwtFoM1B1ndUvNGzsMvFFknx5oShDOEdMox5gNkGG8pKVQrJRYefnJ4TMiskmEWIJ0QnSKHqvJDqimifmSz+njrZSSn8rMDySnUYeLJXq6nExGj44VeE3F2cn8bH5ykJ0dHZkQp0m38IQhcZg0OybQe8h0glYLPQAzV2LC8WDIKbkWEiVe7w2iOQ7lZswGyOzsopAMtYyRdYMYaTbRNEs4e7VOi4wcMCN3QuPcl18smbExaJwEO0AW2pLG1fO3JtHnGWodhbFHwoE8dGlgsOlYb2wqQEvugYIxtkjRXG1lvEINuzT8Wr1RsdzkpFkPf3Co1U3AOJzFI0HpvURJ9sQUCKJQDNaXi/vHwDtpc8mhtdbCX6z6jGNVm20SzT7HUcMGlwEVLuMYp4uT7Nhhfv0RO0U45ZJJ22YMqyDPym9KCY08zFLEub1GSRySaUzn51lIcGHzxGBAmvXwB8vKToR1S0Uyq3vgSxIweedorUy7u2MrVUj98km3yQI03yy9ADRJU1nl8SOHd+VmchMF0HPN+elSZTZvvTecLkxbL23QB9gtCLRudtHDbs1ZKQw98DR0RFQLnltUG3CAC8XrvCGVnctNj3GmIee1puy6AZrKQjQFHUj3xaTigG16FrM4S5UqcO/lsEkaT2vBe3Y9KdE3fjL90X27+aHcDXgm/Gi+VJyCzmpQBGz3BA6dAp68T6OwgVK0daDWpHsODKuB2BDcxp9ZswF0qD2enben8kPCqX5kQWPvbLEyg4Wog/EJCqWZHYZsFxKxMGMG7Ym094ij22kH3ie9mHhn2J4cvebKKM4WThbwgHfjuFWmPC+J2czOKLYwqZgxcXhrI1Obk7yDBx4yTyhtgR/JjTXeIgwsy8mifAC2k9pzwWuCWY4yXk/AiiWqkhYPr/MCXgyrDpJOvAKG0pbbbzM7oA2gfxWmR2ZpCflZ9HjELRvP5IRQevumKaFT92ApGlgN7S+htFaRHaaYacWDAoAnV+MHC9P3sVFLM0oxWVIc7R50XSrMGgenoPPR2+2OFAenJ2V+bATnVbZ0uNA+6zzI13lMtn2gf+thfrPF7jyepYw+UTPkCk+dFaztFAjteAHUgYhNOamomU9MimOD7VO93YeB01s9mg4V56BqhOcRp0agw9aosvjVymjmVozm0ZvKTzJNPpnHey1Aj7TL8aNQe/S+AnMURA5UTpwAS25MCOVWP85i6gulPdju3ArsoVcnRMCRxOOyzQRU0XxudtJ9ay8/pJ8OUn5s/yi9S88AfcNC8d3opNXjqcAwV2brBO6D+PnNBvah+/T2mYCrPpxH4rNLDezj8F3H3vPbDqQj790H2ouLEOTD7Nv3DR85jnctHB65a3D0+Mie40fuGjFXHy8xywQkODJLY+Iweur0FCbwBgR+QYJh3Y/gPFNdunBAvrpaPutcPoLcPvBfOr/fcQS/dPOBdG2AfBGA4zj/pOWUOe6z4AfSW6fQW2fNN0zmS1BYtsDRKr2MnDiBnoXz2gv5Dht2uTn2QnT/+Nn0qF5K6OeIe3fY9eaWI2cdXc/cVeqcjEB/PjEFM7S6CeqrsCTmWIqkNhrHZnJoisfK+RmYB+HfFmn2NEYbesI2T/KVPA2opo/w+Y18Sn6LlEDH3ioWMbhQwOo4aSck85aBNfLCUrIQqqs1oE3G/LpQ8hRTilBbdTM5GIL8PhMaD9zUo6bajxHxF5bSyl+E1nVHMar6KdYaTewpzpxn545znUBvTJqADFGPpu40xYrP0Jyczs+epFmn0zO8fAOPoG+k046JqUqpAJqs6bTtYGLDn7Y0mPTGspOEmi8X2JR1Kn8C7+Kk14Em768UJu7jchhlye7w0kU4TVY0PSnc50qGhpJUK/yFZSDFrg53dDIW5+xdhC0V5Cft6+Fp1nNTrMeVUHNWSnmuYMFRZXdDgRqwrolK5k6enGUqOjJqJovi+go7pztgyExMVE5XppjmYjfYNFh8R4pm5BBMJXCiYB/9HsvBDLwhV7LVQGPOcd1DrmRrBQgLs12fK7EZGDxtzZIrCfPBDlW3DjZvtVO4TUJi+6J2CNtKBt4ktQQSpPtM4EW6owTeZOWUK5WKEwUslnwsvhU7AGDg/Y2JG0qbqSt5xKJskiihtmxGeLHTaF9poqwWUosjFcgTOSgsLhM18cDICWqcWqxX7ms3WxHMUW203qk1st6Y7bFemZ1pHAdtio5lbnbilNksv0FZ5atYT1VwMLMrulbZugkHqe3otLsT6PCW7xGywzukcK/ZjFZg3zRMyJiNbaV3v+LtsfkZPudiV5RIER0eGqoD26Roe3ZmMVtRqxR0HgDLMNgAVtQqBR0FWKNKEE4fTLvpFQTsat8mlspvsMNxVcQVIKjpJg7CC8usmagKnmZPX2iq9SrSraxijqDlMSJf3lOcRfVjKYDrAhJpXzXQ3EABimY9hvD6D3EDTAOLYJ4GkezUyAl6LfQktVATYPRECPpVfHK2CGYJ/x7EdYMmEbrrFN6BkMRXHsznJk7xFQIrCKMjyVcL+2E6bQX5XRlyBLvZCrzIMl74wZ77pg/Ty3xWWTqMXQpxpDjKFkQsOjq1Mlscr6gEd+G0hMaBagNDhAoI5rj0Mj96xYsjCThMFncAV4KSLAy2TwgSZrDF8Yr6w4qAF4O9QKiRhe7k60s4Q8LU6UlamQ1UbfOiJ06ALkcfIMkDqFkwCL2D30yS4MsRoMgnJsx2/nanQztZJmK72SgTgDCAEBWVxJdRakGJFRSJ9RhDpRdnB6ElrZtoGocK4NUdyuMta3izB0u2MO07UFqtIBaNWoC1qtmRlSpdbmbQ4OFKWbo9JXrnNrNucAGyobpIxbqmSbpRRXl56814easA7d68Dq+IWVeeL64rgyJbNyMmYCVxF6t1/aHnChJ+SWIbBZvFu3Rmc3PgTuSg9193sDh/eLZQnAUXad80Oga4gkBXRSps749xmYmTuE4BgyzJA9j9TvK1C4hOFE6w1fVGvkzKJlsN/I12oSSdoZaw9GahBN2PcTRBGCoT2oC+tpx2LQLW31ssTOP46DfNfnq9O2uGUl54uK5LLqH8JwoLZmKmWCpjoG6qcBpnAeVZ6G60lhsZJNdiJs4dhFEBx1B0klY7LMZSmycKB44diT0R3tiI5AGsKQgKiEY7jHcanqaDB2n5wGuwghAfO51bQJoFrGJ4UL0ZO12YpnfZ0cgCU6b8brsG+ugv4cQSROGLuNY8Pk0nrcVpOk7aizNlqJYzeTGXpl5TmzsWB7knki4YFXl7sZv0TPzLxTZgWEjFiSPuY9WP8idoxwq0UmTMbGJBUd0N7JWN9JT0IggMFgfVshYHh1j77aZ9bLN9KXHIO3daXEDS3VVsWtfElq/FamNiljmMZhsPOPYj2nmkc0fCmBXuZ5MIMdcwhdfG4VaObSrNROkUONxTuNrMAqDmSiAZb6ViT95Z60qgoPCmVnwwvDhOHfjNq6mZWez4MHuhaXTiUY/p0G8Ie+7OlyZgQGGxmjFGejfwndYa5cEGYk8mqEN6kbhapGhm5FnEABaVhyRywuKkGJPFcN7KOF0mN2OlymkY8ZXT3F1toEGxRExf+HoqDaOLyqjZLWo0yJdDaJgvzrAwvW2QBdnKMAvztR94Qf+cPrjAOF5LZRr4lzkaIsS9C3xlweZy0Xn1HLtI0nqxl0oa4cWe3TSJiyatRGnxJFkuioVCk143yaLFPVcN7O5Jvp9ZLuIQBjx5g6TReqVbHdYbQgIMnZ8DJ12K5HdX8lsT4Y32wHJxGlnbne8joIWnTiAPutuTVuaPOgotzZr4vZd81iQuv+RZr9DdQXicKYBbJ+aq9qzV0vgN89LaYkp6EVO6JMaxkRhDsAb4gz2Mbp0q7rRqspsC76uqh6LRJ1QIvb9KLNrjlVc0sxibPGoFcbmV7bkWZ+n7UQdg6ium8qOYiOeqK4PHN/N3wp+t/NnBnys53WrHRyorrI9U2PVVzfT6KnzfxN+38ufNPD7D33v5+x38yS6cWmnF76fPTn7VVIS8ij9fw58/wp/sqqhruJwIvzLqGkveKf4u8nUff07T5w2kyN/ZlVIbyf38vcKfi/x5hj57rPyd58/X06uCIuIuqYjnLqkIeZuIebuIeUwEHhdJ7xAxl0TMEyLmneI2pSfxNqWXk6cExdOC4j0i8KMi8D4WuE1cThUhPyG4PihiPiQCH2GBXeJ6qoi4nipCPiECnxKBnxc4vyBiPi0CvygCnxWBXxWBF0SAXyg1Qn5TBLjQV4mbpSLkCyLwe6LkX8KSHyV/KBL+SAT+2HWz1Apxs1RE3CwVId8QgW+KwLdE4M9E4Nsi8DcC529ZoJH8vQj8gwj8owj8kyD+Z8H+koj5FxH4N5H0fdedVRHynyLmv0TMf4uYH4iSP4jXWd1PHhI3Uj0sAo+IwJtF4C0i8FYReJsIvF0EHhWBx0TgcRF4hwhcZIGj5AkR825xDdZ78BqsN0bIe9mVVxD6gKD5iAh8SgR+RwR+T7D/MbK/OUL+RKR8TaT8Daa8LUL+Vsh+PMZT3huDlMega8d4ymdiAlbE/LEIfEswfRuZ3hkhfy5ovyMCfyVo/zZGiwDI/yHS/kuwfyAOKe+NkB+P85SPxSkxZPAHEEp/52uJ9A78gQf7zDmV2U4PHk5l2404aUo3W/d7pDL1mX38C/3X41USx8gdFlMHZ2L398Sz6/G06mtT7alUJo5HC9+TShpfjdAv07ZwlmP8xHn8nmwVTenk0EmAvs+CXr+80BV2/UkTR23B207EFVepTAIi3sUiVvCIBHk6SgXXk1v4cyc+8Q6LJhCRBBH4Se334D1mvCGCHy8/EEmZmCmMfzJ6xbghvQUvEBFF2sKEB+SyR0GeTZEGOatd8Bdpb8bLNwRtgtM24UUcVqSoPLw74wYAp/eUJLMmaeP3AiSGaL7fJOX7/ZDvDek17A6SOFQDvXCEFhuLiUBpdpkIVskWd9o17A6RJqvdEuyyEJqHa9JZdiWIaIZG0m03eJbg5R8NVhs8GBmidXg73vnhLejH7MjYkKf6Pxq187Qd7/kw+S01BlRLAzKzGlCw/hSVOohMbqkyI2S+zSbwwnycwqzEi0JcwwVbrwtv/GCHgQ/TvyOZTpo6TE9YG8GjvlfifR6CNy14m9ONeFg//uIAJFyffjneE+BE2iUj+Xa3pvSrqrBmt+A1HKtS+NOTFgfZQxGoE3cUQm7BizhEnvdU6fDN0Ce95OoO3wwFvezO7Yh2QYNZayroz9k5H9MoqJfcr6AH8HIPdkVW0pFbbz4tAjufUhReN3UDXgjCvjZOZsZkkfAOIvGXI3jvzi94uqmt9JPKdBjiyTTNMuoWRbqP4rqBfFqmxau0Uj3RjJE1AA/vEKBUWT+qlYDamMILBCgtjk3Bs4bdUIJK5zMurdUEWfxs4Iizi4v9JZi2hv6ysxpkO16H4uW8Aazi815N5FA+oA2/E5FeE3iBBauHz7OAUrVen96N0LI6blOj/HIgyhb7Yg3LbgcaOS+5X195OV5U4ay1jdpjPpi1pjH/a3bOuzXGvJfcb8xvxQs0mE1tg+dZqPRfF7X/G6wvx/iv/u69Ymx0058LSX8+JP2F6vS/Key+Zv4d9Br5d9Br5N9BXzX/N7CfnNt+Cz39nD57KHWUqcHf8lhkW280K9OdalKR7tMjtpDfZmOzhaq+JOd6OJJthiJJDOhZXZ9ey8lFA1gXptDiuVLPBaaeD0y94Ey9jfyurEJcecum8faRDpZ3+28mnnkkwvK9I5jfq3Io1wHy+24TuatGE9kKbf8HtoncozaRKfDYvkgzOmQ5/M5pAPPqvlSVZoT8YdQxv+rI1Fv6t8nqHfUeDxoCfyQux/sycwCpT30jOY4vDKPHnsOshcp09Kwrxqb0Zl/iRiC2JoNI2uNL2gSkoj++JYK0n8Z7pS3rVZeKDX0lyu1biqrb4a46I0q+EuUX4LC+MJwZyE6Rr0bTJ3FeNzTsmtfdnepMrQTb/pUo/ujyHtu1/nqU0qdc9MlUR6oN73hwEH8jKvLz1ohXWePtkF+MkG9G07Ghb0UVGe7qNGLkW9GeVl5+q3QbPUUxcA6JMD8MhdpB/jTqaj4xptrInwnLyEZjHUyd8UbervRGzgWeVkmiy9T505Vluow/XUWmy/rTzcl0vf508zJdvz/dgkwX96dblOn6/OnOyHTjLrpdNt1Zma5g0fFDCdxLCKBNuRVZL4Ock0GmagQ5L4NM1whyQQaZCQOSdfZES8f498Pu9EGZhztsPYT3Yct/zl6HCOkUSTn9vNUOtM1gwb7tMxawzXb4pgaNlGbOhSOF9ZBva40cia/s4gscSRJfxcUXOLIkvjkXX+BIk/jmXXyBI0/iW3DxBY5EiW/RxRc4MiW+My6+wJG61aY7qzcUvr30kS0JPRdSaO2aQBJ6PqTQ2jWHJPRCSKG1a5q0cyRL3kw3aCF1WpAW6pZ5fLUQapiDWpS6+mor+XNEK+v2zRvId6TFUK8eQz8xCah/gagLup2vi/yljbpdrTvbLRrI/nahC6XYDI0tu2KzNLbiiu2lsXOu2H4aO++KjdPYBVdsH41ddMWO01iqHbpVZbLe7alcd3oAKdu9TcW5fNvYxtgMNfhdz6qYswZ7wDZ9167Bjh52iTpHcKRmaGpZTm23U7M0teLi6aWxcz6I/TR13ic1TlMXfFL7aOqiT+o4TT0jp261Uws09exQwq8LXjFulOmnKP05bfppSn9em36G0l+oRv9XOHoWdbXoOvLX3ra33vF+5R0yxXoXxXq8qrPFeLu0ofB3UeRaT/4+Kk2+1MOywyKCTvWWiBiXUnSGRZdd0VkWXXFF97LoOVd0P4ued0XHWfSCK7qPRS+6osdZNB2e1ysL59DjfUjSoRiXnDxQTW8l/4CNeEbXKm0l/4j0Z/nA06D/J6Q/xweOBv0/I/15PpQ06F9C+gt8cFWlP0b+Rb3oLOa4cZjjjjhc3nXkX6PpNdwctnpXRoX/dMAPWjQA+sE2GPjBSwMry2CZJYJVZLDsEsHmZLDeJYLNy2D9SwRbkMHiSwRblMH6lgh2RgYbDwK7S68L2/6cXgfuTu8h33MCp5zArongvzmcxKFhK4M5N071MaZCg8jvOyNHLBE7XSJAqfMK5bNNAcdmm1LmxvwyJ49SFb+UHR4ZkJ2MlJ2yDJcJnx01v5ydTLXsZKXsVGS4bPjsqPnl7GSrZadXys6cDNcbPjtqfjk7vdWy0y9lZ16G6w+fHTW/nJ3+atmJS9lZkOHi4bOj5pezE6+WnT4pO4syXF/47Kj55ez0VcvOuJSdMzLcePjsqPnl7Iy7srO7moqUZ9E+CrI7fVxPQQZj+avH7vTryL8rlu9XA+q3oj0pa91e7F9sdOhie9E+QMefVUqg+QY5MZWckVBygrT/qEM4FiyiEAg2YSPV5ipBHrtw2oVJ+4hflY1oIQdZDM0iZKigslqQ25bUUIRqyEFWRrMIWSqoohbktj81FKEacpBl0ixCLxU0pxbktlk1FKEacpA10yxCPxU0rxbktnM1FKEacpAF1CxCnApaUAty28YailANOchqahahjwpaVAty29MailANOcjSahZhnAo6oxbktsE1FKEacpB1fm1Ys2dbWA2j151erM3o6UoJsugl8h/LZ291VzTyDqGhbaLuWkcNYspqMYGrIDWIqajFBK6P1CBmTi0mcOWkBjHzajGBayo1iFlQiwlcbalBzKJaTOA6TA1izqjFBK7Q3F/bYFXpCd21myPkP4NnOwbXMjiZ+C83KfudiPvLrO70NPk/4erLliKrOm15PeS/cTW3V+gt8H8T3mX/H0Sxkj20vSraN8SUtP0q2jeqaeMq2gfUtH0q2jepacdVtA/G2BY+p+X7EdL7nOt93vW+4HpfdL3zTT/+bm1Jqmu5203Zq6LEOvZQ9qso36iijKsoH1BR9qko36SiHFdRPkgph8hDMfx40L0BJb5K9X5gSa95Z9++Yoh+/Yrbx7v8kBT0MAq+4NxUj2eOIcigAHF/1NrDf5/DEMUPAfzykicPS3kBMFyMSPLRCGBS5tgdJ0PDymyuMuLkkVia8IyyHAgPKJm+g7w55vpU072Tt936jVXCOcTfQqv/tYiQFN/qceauOsjvV6JejGwa9V+HLFCwHlPj30jeqmqU7dkE+ZNI2vELiPb0DeRtMXpZiIfcSfWzEewZ3p3FoUdMvrPUlV5JqdjnTor4DNsx88Rn0c1QxPeybWpPfD/boPbEx9kOmye+j+2keeLH2Y6ZHb+VxRfYJxamxs4bpZ9iH09o00+z7WJt+hm2M1mdvsvZSlZ/scvYzTGHhh2W0WmaVtv0TdDyl7Va/rJPy1/2afnLPi1/2aflL/u0/GWflr/s0/KXfVr+csiWvxyy5S+HbPnLIVv+skbLU5oR/ZZ/e0yn5ZFK1fI0XtHyNF7R8jRe0fI0XtHyNF7R8jRe0fI0XtHyND5Ey1P6EC1P6UO0PKUP0fKOVlK2/A3kUa2WfNSnJR/1aclHfVryUZ+WfNSnJR/1aclHfVryUZ+WfDRkSz4asiUfDdmSj4ZsyUc1WvIxrZZ8zKclH/Npycd8WvIxn5Z8zKclH/Npycd8WvIxn5Z8LGRLPhayJR8L2ZKPhWzJx6q25E303pe6LhNJ0NF6NOJYquKu+NDDdKbXyajp6hJNydR5Uso8JeNJqfCUrCdljqf0elLmeUq/J2WBp8Q9KYs8pc+TcoanjPOUHkXpZc/XLnt3+pUS7TCj7fL7lpbe5Dg0LJuxXmL6ioo5fuAUk3/c3EvvbnVIBWMp5OGP/SVp9o+E++g1iuKTXxOzaTHHXVldj9ZYZj5M3hGzuJ0/Omgmtzl+3vdI3PMDU+eRDRdj+IHlKXJJFzHgCAt5BvmOmPtMg0sg6ab07eQJedIhIyeqZPWdNKt3kCf9ABRZc52rAQhbIAtPIUKyhiy8i2bhbvK0H4Bm7TzlqZ2nae30kXcjcpOiHQzynlg6lnk8km0l74vhr9hT/ByOzHr8gelN0C1+bNm6xftpQW/liFyf3JamhiI0b5nzlmvgrXDeSg28c5x3rgbeec47XwPvAuddqIF3kfMu1sB7hvOe0eXdZvOe5bxgSOP+nzKvl1nOcZZz+iznOct5fZYLnOVCFZbbyQdqVSw/zivjA8IrKYVnKYdnqYRnmQvPMh+eZSE8y2J4ljOaLN02S+Bn/+tlysAP/h2UgZ/6OygDP/LHDvgTtZoVPDcJ64YBaHVAD0v1Duhhqd4BPSzVO6CHpXoH9LBU74Aeluod0MNSvQMylm6bpWoHtCirdkCLsmoHtCirdMAu8sGY55dc9jLtClyg3UZ+MoAm24RHm7lYTpEP2SwJhXPRhPtX9tEvSSMqjj/DxfJbrBA7As27nWX9zGcYJUHnp+5GAlExsGS8MnVBOF556XgV6pZwvMrS8eaoq8Lx5paON0/dF443v3S8BerScLyFpeMtUjeH4y0uHe8MdX043pkl4N3J8M72sDNoKN7Z6nhV5/kc91wPO6uG4p5bPtzzPexMG4p7fvlwL/Sws28o7oVlwN1AngnUJHTnrCe9BcnsLT2VykmQD1OrjOTNSM61Br6vkt4dhK0sgaoDLmqVFKUCpUNdIhRD3wNKx7ATVAxrDy0dn05aMWQ9tHTsOWnFcPRklo4riVCMMw8oHTBOUDGGbNqtLOFsj+bviG+R6C0gvd+lPWONjhCCxGgKLeh8j+avMG+R6GsRdKFH85eCt0j0oQRlyUeCTbPrICps12uRRwwP//Qyn7f7pVf43NwvfY7Pv/3S5/kc2y99gc+j/dIX+VzZL/0Mnw970m9j6Wf5nNd5UJdGnXP+c3wCXCv/eT4brpX/Ap8ah+bfRj4as89AxCNNlf3mQhrXjt9g4MljN/BzXFW7CWJVEo9C8aMKOgplJefqcfx4HY/isOODjkSR+Ms+/IFHo0j8FR/+wCNSJP45H/7Ao1Ik/nkf/sAjUyT+BR/+wKNTJP5FH/7AI1Qk/jM+/FUOPbLolnLokQWylEOPLJClHHpkgdR+FEmXcyQp9h2602k1DT+uRJ0WdFxJRubROqDioBaH7rElXeRjseDjLvBYDkEjjrtwxfJjLlyx1vEWjlh+vIUrlh9r4Yrlx1m4YvkxFq5YfnwFxq5TlcnRUneQn/JQdKl+QfxIzOfXZVkLAevE+r1fSeLx/IBL4slIPGWZx/2LKYknK/FUZB73T5Qknl6JZ07mcf8mSOLpl3jmZR73j3AknrjEsyDzuH/1IvH0STyLMo/7ZyYSz7jEc0bmcf+u4zb/FpbHpU/74kd6Hw8cF+AvfjfCfJuu9DUWsRggfsl8pPgl8yHjl8zHjl8yH0R+yXw0+SXzYeWXzMeXI/kWO5mfD2MlBy+ZSYz8oJjwjPzEmPCM/OgYTcbNqo4gf7MpqgP7zLNh+syzwX3m2eA+82xwn3k2uM88G9xnng3uM88G95lng/vMs7X2mWdr7TPP1tpnnq21zyg6gv19s9xnbiU/HdxnAnz4myxeqwsFeOwStehRAf65RC06WIA3LlGL/hbge0vUovsFeNoSteiNAX61RC06Z4AXLVGLvhrgM++zqUXXrdVzlqBEZ67Vf5agRPeu1YuWoESHr9WX3qnq1/YQCPCIbyXPLWFEPBdqRDwXakQ8F2pEPBdqRDwXakQ8F2pEPBdqRDwXakQ8t3wj4rnlGxHPLd+IeG75RoSiX2vNEXeRnxFu6jBvdeeRHk4XdsCzv3rF2Jp+NflEzPuLv1Xsh3LE+qEcgw84J1sBTtI3kE/6fPcq7hvCJcCVlMr6rMkdn+FLn+74LF/ydMf38qVOd3w/X+J0x8f50qY7vo8vabrjx/lSphWfYfEFvoS5pZojcKPgmOKLlvoc03yZUp9jhi9ManB0OVtL/rBzi/BLetQ0HZYEaU2kn3yqSutD7/5ixDEjFDd/8WWr7RTC2TU8THykuZkc/cbLlFEyOTqVlymrZHL0OC9Tr5LJ0R29TP1KJkdf9TLFlUyOjuxl6lMyOXq5l2ncyXSAMTmGgJepoKcROZhjdHjBpkKBOQaOF2w6FJhjTHnBZvTAbnEOD89wUw4OHFe3qxk7NEcV/TFZjP0o039oyq27jtM7x6GSwjHolBSOEaakcAwnJYVj7CgpHANFSeEYFUoKxxCQKXYKCqfK1zL2nNOp+sNwOk1AGE6nKdA6i9rVT5Qm4SY/KqVR2EH+il7O46Jdzz+sT6l+G3sDOP+Xl+D8Xw7l/F8O5fxfDuX8Xw7l/F8O5fxfDuX8Xw7l/F8O5fxfXj7n//LyOf+Xl8/5v7x8zr+iX2s5/3cjZ9CxGTVu/TTBWPs56nO5cnNImZtsgvw8pcbfPGzy412vw/sqciV4jPcgxoaga2M58iMRazfzinvoVwOxFIIKRGiEqiCZABChKKqCZANAhP6oCtIbACLUSlWQ/gAQoW2qgsQDQIQSqgrSFwAidFNVkHE3yOtsEKGyqoIUbBCNgS5JEJqsqoSpWiUIBVdVwnStEoTeqyphJpSEEZUKsNVhWAXQnS6QX8DVjU/zT6u7WvGC+Jh8AZrqoLFPx2rQNa+2RLWCKFsI0KztkY4X0wD36iBf8AwFL4cB9+gmX/AsBa+EAffoLF/wXgo+Fwbco8t8wfsp+HwYcI+O8wWPU/CFMOAe3ecL3kfBF8OAe3SiL/g4BT8TBtyjKxf8wAsU/GwY8HA61FfyFJV8LozkcLrVV/I0lXw+jORwOtdX8gyVfCGM5HC6+GR11Wlr5toVJ26P/2Is3ZJqSCXpRYox4x0R0P0JEPqVaGekR9xuz3qfFvF2jvxK8lleBEHQlWKlaEhBDDuNaa2QYBeCywrFvt3FjvfefS6shy55ycMer/z5JcyAnw81A34+1Az4+VAz4OdDzYCfDzUDfj7UDPj5UDPg50PNgJ9fvhnw88s3A35++WbAzy/fDFjRrzVnwM9fpRlwN/klOU/WffU9jrvq2We1PpT272X4h4WfV6pxVKPAFVHh2wqFfbimhSDJlfm706Pkl2vzhAP0ym4Ls6rLG6BvfFG8vm2AHvJF8TqxAfrJF8XrrQboLV8Ur1saoM98Ubz+Z4Ce80XxOpoB+s8XxetRBujFnB+K13WsVV/6ivD6iLXqUV8RXmewVv3qK8Lr9dWqdw9X1wcq9y5AH88yRP0jd7362T56V1NTj5JfuQpa7VeWRav5oITUaj4oIbWaD0pIreaDElKr+aCE1Go+KCG1mg9KSK3mg7KcWs1HxHJqNR8Ry6nVfEQsp1arqg9Ca7Vf+R/XagfJry5h5jjiQusjv+a/268subTVvYUzB12GriLP+M8bVeRZ/4mjirzXf+aoIu/3nzqqyAN+pKci7/OfPKrIx/1njxL5oCAvLGn6aMFMLWnqaMFML2naaMHMLGnK+HJ3h64yXZS+PugjLyxlLLwQbiy8EG4svBBuLLwQbiy8EG4svBBuLLwQbiy8EG4svLA8Y+GF5RkLLyzPWHhhecbCC7WOBV9Wn8/wJda15BtR9Zed2F47fFOD3O5mysXGFltasd+DHG3ORweZxBcw6Bx8dLRJfAGjz8Fn3WixUXoPcp85Hx1/El/AeHTw0YEo8VX9JTnnoyNS4gsYoQ4+OjQlvoChyvi2Mjp++q/OT7Nt+prHNBfKjxDWFro0DcCF8nOItYUuTV9wofwwY22hS9MuaedItnQL+1W7Oi3ImfbB68C0a8mv+5pm7F8vC0gP0iuE89mapdsRE6RbLF5Lu3Q7YoL0i8VraZhuR0yQjrF4LS3T7YgJ0jMWr6Vpuh0xQbrG4rW0TbcjJkjfWLyWxul2xATpHIvX0jrdjpggvdMjKJnmCfwB5qCDtmatY4lkekdP5NJ0jiWSaR09kUvTOJZIpnP0RC5N36x1j3GHxtnhmxqkc3wxqdbZR37D/1IfWcPw63yYhIaUxbLd6oh9Lqg6umlMVYzNDComHHNZZs6EZK7IzNmQzHMyc29I5nmZuT8k84LMHA/JvCgz94VkPiMzj6uZ7/ZjPiszF9zMGt3fF/mcjDy1nMjnZeTp5US+ICPP1IC8N2ho2kO/2sDsTucUQGIhr86IIpx3QW0jwl6vWKpTiNgMIn7Tse7IctmVAnT35yLq/Yjq6mXMEsGqWPktinN7orra0QQtq0F91JEmaEUN6qOmNEHn1KA+6ksTdF4N6qPWNEEX1KA+6k4TdFEN6qMGNUHPqEF91OOMHuhZNWgtalNT4jm1xFrUqabE82qJtahZTYkX1BJrUb/H9VWaakululpedAhwKmQQE/OI8d1ZAXHh1HUP+S3vR0epVDPAS+oZ5503pTeqaOWLJLejd9qefh35bSzOV6L+PqRBfoeRZLeQr0bT3amVqXb6GWOzcY99yvnvxnit8WxbX96OWhIk1zIMJlgBDcxyOMyMDmYlHGZWB3MuHGavDuZ8OMx+HcyFcJhxHczFcJh9OphnwmGOezCLXsyz4TALEqaGilIIPBdO4NSSBZ4PJ3B6yQIvhBM4E07gNyIoUVzWzVkdp4oIl1mabdOTQPrIF2Lpl+GH30PDrg+/76axKVds0s5ZdgwLMuzDrCze16PBoBcjdMPCcyTJkzUX0CC/z6v9lZjbnbXl6xGffL1WbT5k07oE49GdniN/oG+edqGE23w+4teSe1EohVOWXKXRqlWSbcqCJJWXQ1JGR1JlOSRldSTNLYekXh1J88shqV9H0sJySIrrSFpcDkl9OpLOLIekcY+khyJeUWeXQ1TBoTmrGgpVPs4tRz6mlp6P88uRj+ml5+PCcuRjJlw+ymo9r7Ijy6blu2Hy88XQkx+G5CfH67B+MciO2JhgGZaAqZj8MBuwBEzF5Idp+yVgKiY/TK8vAVMx+WEafAmYiskP09VLwFRMfphWXgKmYvLD9K8uZtGLqZj8MEVbHVNrauARqJj8MI16tQQqJj9MdV4tgYrJD9ORyyLwtWotZn8XtSQdhj74l5bJB9eSK3knXwrSndUkVdeoQZK0fXAtPRskSdsH19K+QZK0fXAtnRwkSdsH19LUQZK0fXAt/R0kSdsH19LqQZK0fXAtXS/74B5R2j64lgnQ9jk9+dD2wbUsQ+350PbBtQxG7fnQ9sG17IiuD67U8yo7smxavjv9vQj5Q0R1HeXLN1Q6jRj+YqXV+sUKZw840vf/K0t6zy57wa/uUt8O8kd47JnqVvk28mXHzSOZJmtfdSPn4t8sftlxm4yarizTZfzpKjJd1p9uTqbr9aebl+n6/ekWZLq4P92iTNfnT3dGpht30e2y6c7KdAWLTuurWgvknAwyVSPIeRlkukaQCzLITBiQnc6eKH9Pp+iH2JljxqUI+/pXyVkPnF+NKntwB0y7JJ6gQxpAtt+P5Jz52Jw+QP7Ebyz1IE71k2ia7DncKzlYDzsoMJjdGngq9nJ19kwAe6U6ezaAfa46e28A+3x19v4A9oXq7PEA9sXq7H0B7Geqs4+72e+x2c9WZy/Y7BpDTMI+Vx17qlbs89Wxp2vFvlAdeyYU9j7noJUP+As3ZPEs7Jvox70jXSYqFVQMj0Z8VUs9uTsN70OPmDwvTel+8uLSD6l/sZZD6l+s5ZD6F2s5pP7FWg6pf7GWQ+pfrOWQ+hdrOaT+xVoOqX9xOQ+pf3E5D6l/cTkPqX9x+Q6pv905PMKfNT/IAEYcRt/123YxLrNNCGbw6H02TFP6DvKVmmHeQH8GP0S+HNFFGIJaaDHeHrF9/a/GULW8AXyOteBxfq3q8fnY3zo5nftmEynFdbeJlOK63URKcd1vIqW4bjiRUlx3nEgprltOpBTXPSd43+LXVMfeB/4wxOLRvutE4tG+7UTi0b7vBI+3/5rPL0Pk4+3vIF+v1vM2+vU8dgDD7eQb2n1XcY1OU/ooAsSGvsm+lBzpSgLCN2M9wNizkh+hkcQPEodGsJM+EQG4JPlTVh9GtpH8WSydoIcUPhmxTd/N6QtyvkbEYRYAZR1mEQADQ/Na4ykcIX8RoxX7l7FUk/HdGOTczLwrsvOvY+4h9Dd0CD0dseQX/IvVaeWlEUaWXbCgHJlugX8Xs0QdJH8fS7fzKrc/3exwXZjknIr/m2MiI10ielKFNuJGg79RqNZqmBD5fWfkiCXoNoUgPMJRHAfC1wL+zfH7RSmjx4IzKvqiH4qUNR5ZJWsZR9bKMqj7AlvtrKlR5KxldLKWdWStIoO678nVzpoaRc5aVidrvY6szcmg7ut4tbOmRpGz1quTtX5H1uZlUPetv9pZU6PIWevXyVrckbUFGdR9ubB21tQoctbiOlnrc2RtUQZ132GsnTU1ipy1Pp2sjTuydkYGdV+VrJ01NYqctXFX1l6tylrBkbWzMmjBypqGyzqnm2+1CDnfBSvfGnKVhZpyFOqcLHHqqhRKLUIu1NSSCzXtKNR5WeL0VSmUWoRcqOklF2rGUagLssSZq1IotQi5UDNhCrVfz8WR13h9HJzudD6MgxOM6O/edKcnyT8o9m2uYWerrbQ2bOzCrM9sVP1+8lvRIG/t9UopNO8gK6aWNRJSVpAXd6cjA1jAiFIoeHYoVPoNp0OYx7u734XLfkDlW30jmuhBXp92UTJcWFktzO0N1liUauhBXqJ2UbJcWEUtzO091liUauhBXqV2UXq5sDm1MLe3WWNRqqEHeaHaRennwubVwtzeaY1FqYYe5LVqFyXOhS2ohbm92RqLUg09yMvVLkofF7aoFub2fmssSjX0IK9YuyjjXNgZtTC3t1xjUaqhB3nRJd2iFLiws2phobzrxyK1FbSa7Jrdbu1amOI5OafOSSh3vNZaqCa7Zj9duxameU7Oq3MSyn+vtRaqya7ZsdeuhRmekwvqnIRy+GuthWqya54JjNfiVnt+wx/kVHenz9fuVOtKCpo53EX+MeaiH/Bdye0w4qqCKL7N6kofrQZs514ftjs9Rv6JfxGYMujR1/zOoR7+sSL9PpAeZNCMOwjWJ2RsD8zb2K/Hkwl8QGNLAE1CzQrQlQD6Lfw6HUApcKcLGNpNG7gpvZnswi0Vuk+fYvv0ro2zJG40YiN0MFK+a5bEvXVndJlHZ5zRFR6ddUbP8eheZ/Q8j+53Ri/w6LgzepFH9zmjz/DocYzutaLP8uiCzni12c5xtqlwbOc523Q4tgucbUaHbZOi+eyxYDVedyBhh0y4g/wz/VpA+Rmk73GOGzlXT5WjGyW6wGMaJbrAIxklusDjFyW6wKMWJbrAYxUlusAjFCW6wOMSd9l0tR+AKIHUfqShBFL7IYUSSO3HDmadPVHrWEEfHp+zkxnPDvJSTT3+Jc0e/5Jmj39Js8e/pNnjX9Ls8S9p9viXNHv8S5o9/qXl6PEvLUePf2k5evxLy9HjX6qhxyt5Anv8dvIv9uFJaUW/byS3Wenbhx6mRneDxQRIadrtLTKIUZBlKFlZIsuoyLKUrCKRZVVkvZRsTiLrVZH1U7J5iaxfRRanZAsSWVxF1kfJFiWyPhXZOCU7I5GNW2TbVJVtN623qrvT60kjelfehpG/m+tgRNgQ6uiyOrqijp5TR8+roxfU0Yvq6DNy9A3kX2PVS7eSU7mLJ8WXfeIrPvFzPvHzPvELPvGLPvGOUnY5SylaOGbTJNMZmcb3y3v5e7tXku8xaQa6/p0RWmcPRJvNRpzTdUbScZjkKZUMnZoMcnar6mmmACYWAiYJM5zvefOdcuYbQDtDgDaBg9pkjYN6V63V299HdaT7gbDd+zsEzhRQjfbXxa9SQmzKXBf0NZniU6Z/i1mQb46Q7+MM7d/FwXwmYPw7TPoy7464Nqy+E6F0WROm5f8JPJn3RGj4/0jh/+bhJIR/QPU7jX5DnEV3Qvhfo+lWrt1hogexUOXHsOudsXKCzr7IA9thWmbZ7LwfDdnlqyA7oym7chVkZzVlz10F2b2asuevgux+TdkLV0F2XFP24lWQ3acp+8xVkD3ukv1wkKqRl/GurqLpTt9P3hgHjqTCgbxaum2Ci6Tq7GopMUlI+appK0lI5aqpJUnI3FXTP5KQ+aumaCQhC1dNo0hCFq+a6pCEnLlqOqLoHJq2VrhaumANOel/9dR2v8SgBZYmZLKvh9lgvwYttzAu62KYDfZr0OIL47KuhNlgvwYtxTAu6zKYDfZr0MIM47KugdlgvwYt0zAu6wKYDfZr0KIN47KuftlgvwYt4TAu69KXDfZr0ILOFkqmfdHUgE1e8/IPE6l9zdSATV7zYhETqX3J1IBNXvPSEhOpfcXUgE1e80LUaseAdVz3sk2dFLTcpEbr8EcLXLzaTHZ7djJ8d6x2W0u0jh0rEe3asRLRrh0rEe3asRLRrh2r3dbAdOxYiWjXjpWIdu1YieiQO1aCLeSOlWALuWMl2ELuWHmbz2fHyp/QsWN1LXkgHnxFmX96kAEinE++okyOCTJDFq90RZkcE2SMLF7pijI5JsgkWbzSFWVyTJBhsnilK8rkmCDzZPFKV5TJMUFGyuKVriiTY4JMlcUrXVEmxwQZrB5BqXVFmUxbs8GyRGpdUSbT1mywLJFaV5TJtDUbLEuk1hVlMm3NBmute4w7bNYO39QgQ+OL2RGIGWi8dpFPRrQuNmtHV7vFdrWRXHTcXheIdHygzWYfxV2VrSyzZbTZKjJbVpttTmbr1Wabl9n6tdkWZLa4NtuizNanzXZGZht3s436sZ2V2Qo2m0bH98U8J2NOLQ/meRlzenkwL8iYM6Ew+4MGkz3E/YdSd/rVCoiql5CtQ8A1iqOQHOCb0/eQN8W1BvuNCLgx8IAV98G2B13Ykg6ohqa4b8YXrVwdzXvTjC9apTqa944ZX7S56mje22V80earo3nvlfFFW6iO5r1RxhdtsTqa9y4ZX7Qz1dG8t8gU/NDOVkcLeX+Mr6hz1UWFvDnGV9T56qJC3hnjK+pCdVEhb4u5O0jv2HoxtNbBA+UfVCAnGXI0Yzi02hbE7w7ET6TqwIOS+9lrq0mw818Dfnd6gTwUT0v3p9nIIa6FrKlkc+Eke77Hrk1ud3qWPOyQG/oSzBqs06QlU/tWzBqslqaUchgpXmumKaUSRorXymlKmQsjxWv9NKXMh5HitYqaUhbCSPFaS00pi2GkeK2oppQzYaR4resbI3pizoYRE9Ls6ubhXJg8hLTHunk4HyYPIQ21bh4uhMlDSAs+o6+zVXaiBsueI4/EYZLEosVMZzmnQ03ps+TNce8Psvh50Gn266Q2q2j2cVf+N4x+K6otfB95i77nslLe57QsqpjG760GZTdJEBDWuRdIVEuS1TbCeYvfhbDXKArtEoE3YL916e5OcHUcDydC1V+Dq2nRIcBbQaFvpdWvvleTty3NdwpaxjtkgWs7SUHLe5pwZTWcZ9lPE66ihvMsB2rCzanhPMuEmnDzajjP8qEm3IIazrOsqAm3qIbzLDdqwp1Rw3mWIe/Vgzurhgu3PKkp65xaVrhlS01Z59Wywi1nasq6oJYVbpnzmL4SUinXoOXPkgN6iZd96y6L5sjb4+qrXpfR1XhUw9UQP4S2yrc8rsZm8pjYGWqhO0NJ3ioPR9xb04I00ytSMr2ZhOK0UYm03yLt9yElgtTafLZirC1lYkvmG8XEFsC3f60Ya1PXirG2aq0YawO2R8RobKtatBr7oRatxkamRauxA7kpoLkcu4ib7Cqzf3/krX+JsL/H/gWSinA/edyxh9jVKvYGeJdy9hgYyo/E/LyJV3CsTB2grHCjsL1Bwe11HizujJq7LHN7fAWLO6vmrsjcHtfA4u5Vc8/J3B5PwOLuV3PPy9wew29xx9XcCzK3x85b3H1q7kWZ22PWLe5xNfcZmdtjxY8J7oKa+6zMHc5oW9BTauhzMnQ4G21BT6uhz8vQ4UyyBT2jhr4gQ4ezwEMa41Teb/QbpWhwAYnI9gMyvNphpVqZ8ZOxVYYQZATaIutXY5vTGfIO/w+gCPlwNN3AbWEq82CE/XrtHfKHTjJNps5Nwz5octBk3DTswyUHTdZNwz5QctD0umnYh0gOmn43DfvgyEETd9OwD4scNH1uGvYBkYNmnNO8QtCwz4EcNAWgCbY4Fjf7ssfBPaXPzT7ScXBP63Oz720c3DNVube6e5Ld6xX9qDv9GqQP7O6Kvr0WkValUoDk/o3fgxG5X28mF/UdrYv6jtZFfUfrosfRuuhxtC5K3dsRIzlaFz2O1kWPo3XR42hdDOFoXQzhaF0M4WhdDOFo+TeXy9Gyqqyao2XVZDVH69IyOlqXluRoXVqSo3VpSY7WpSU5WpeW5GhdWpKjdWlJjtalJTlal66eo3Xp6jlal66eo3Xp6jla1cepnqM1jUj/I44WW9TIkCdC+1hPaPhYT2j4WE9o+FhPaPhYT2j4WE9o+FhPaPhYT2j4WE8sycd6Ykk+1hNL8rGeWJKP5epJVXysI0i/rD4W9ucbyTvj1nkMHZ6c8J9fDD0cZefJBBI3k4a0fMwHY9oWzNQITNK5KFF21k0gSxOwCJ/iLRHOM4w8zjJ2Vqkc6z66qOLWnzvD4zWTMav8w3hkhwr3SHjcRsBlpR+GKlKiHg2P2gSoSY4KtaiEdfQO95k2aUfvyDh7h5dY1Tsyzt7hZfL2joyzd3hZFL0jk76JPIm/k5UvKmVja61VCOvckE0gwZdazlCiBp7tMs92fx5XKSSmQZmpyo1YlM/RqtZBJod0YDw92hfugA6cqyP7gh3UAXP3X1+0DHlKR8VJt+Y5OPy7vcWRSa8l78IcKw47QhO3wzc16HdpzZyrh/8qbaP0HvSbNImv7OIL/D2axFdx8QX+Fk3im3PxBf4OTeKbd/EF/gZN4ltw8QX+/kziW3TxBf72TOI74+IL/N3ZVptO65fSuyT6mn95JgnV+q20JLT2355JQrV+LS0Jrf3XZ5JQrd9LS0Jr//1Z2jmSHcsZWZ+0oN+Jdcs8vrYaHbWDWpTZ61CW3/XdddY0Zpg87dhrbmHb2lae2cHFvveQexZeTjE810bsKoMeeu3JJTu9WOumcZekzTCleLe/Nu8YWoEHl+0g7wn2hlxpyNUEyO8N0PpI0wyd7kfjshfDqRpFTGdEPt7uhnQP0luHwinPY+O0SSdth4e2Q6Z9BdIG+3vOiYLjeDmHpLRHUtqmbQY/4QXcDZeuNHJcb/RQJJxRu90Bh7cpOm5WfChSzbq5ADISQEYABJo5F0BWAsgKgEB75wLolQB6BUCg4XMB9EsA/QIg0AK6AOISQFwABJpCF0CfBNAnAAJtogtgXAIYFwCBxvGAZrfS0qJbyPvs/pxQdEhromJeMXrSvdXIPVMVyra9Gpvs58foxKMnvRqZoEv3SGdTcDxXUgOGedJ1cpIFCyV2wZZ7pLMtnLAiCWHLTliWZMNm3LCVHulsDCesSELYihOWJdmwWTfsXI90toYTViQh7JwTliXZsL1u2Pke6WwOJ6xIQth5JyxLsmH73bALPdLZHk5YkYSwC05YlmTDxt2wiz3S2SBOWJGEsItOWJZkw/a5Yc/0SGeLOGFFEsKeccKyJBt23IJ9GSM42+M4m8Ss6iC5+FDmWR2+W2Q+O0MFNJHRoGU0LvBcj+M0FO2MCj7M6LkQGWV8dkandDN6vsdx/op2RgUfZvR8iIwyPjuj07oZvdDjOPFFO6OCDzN6IURGGZ+d0ZmqGb1RVshuVzDmWbsMJPZbuwxkUq9dBrIo1y4DC+JdhA0krqEgfouwgSzKghxFnnDLkGvJJ3GFug2iWxyMD0V47nGtKjRsO/lcNO0G5HBj4eHSmMuOVKs3j9s56HB40A48lMB7gDHDOxIebw1mcqUqk28RRXf0tOoLuoHEfgu6gUzqBd1AFp8F3R8LtaDrSx2woKvF41rQ9eXxX9A9LDPJx2yzr5at30dVGSrSuddDuojqUSIhDesiBQ0QCW+vLl4bjg33NF0CGtEFChwUEuAW8n7NOYSB/lFGJve3PY5F5QAOn2Xo94dcht5L5pfek7A2BjWBApodYfZowgQ1EuLsIB+Iq08W9b/zqiu905cra2BSLPOjEfyMyMnOlng/YC21B0nokeg0MekOvwYm+xJAD5N+EaCByb4c0MOkXxBoYLIvDfQw6RcHGpjsywQ9TPqFggYm+5JBD5N+0aCByb580MOkX0BoYLIvJapgbmW02oewZiV6GTv4+wTKo33qalaiDylD+5jVrEQfUob2uapZiV5XRtapaexFIN/27obpkponuO3xKKufwKX2D8bpT9LggT/ETfVgjOtYlq/iISIrU+2QcsloNu6xL7T43RhfR8Ovmz4Ytw8ouA3BhUK7ERE2pjpSbZk6JYC1OOvmZ8pL4s+o+TN8/cnNzxSVxJ9V82f5QpObnyklib9Xzd/LV5Tc/EwBSfz9av5+vnTk5mfKRuJXNwBfl/XWP1MsEn+fmr+PLwa5+ZkSkfjH1fzjfNXH4n8142eKQuIvqPkLfJFG77QDDs40hAQ+pQaf4gsrocCZapDAp9Xg03wxJBQ40wkS+IwafIYvYOiBPxNBdPmHkjAiO72juwvvdx3ukZbA8XrU7BhmZxgPgRgadh0Ccbd69H89SqlTLuqkkH0xotp6I+ljAZpHPq4ptN7BKyZ+Ukup7ULw23xOvNASeVF09SMoUqi6fsR9hQ+uhgJ0ozIFWBW1ilp0ozK1WBW1irJ0ozJlWRW1igp1ozIVWhW1imJ1ozLFWhW1irp1ozJ1WxW1ihJ2ozIlXBW1imq2UO9nqEw1V0WtorAvamkmLpIp7Koiq6jxUCKZGq8qsopyDyWSKfeqIquofD2RxQB1Z2vSZVN26DR+KIzTyED8RHidxg95nEamHIM0p4ff4TQyNRikIz38DqeRKbwgbejhdziNTLUF6T0Pv8NpZEosSMN5+B1OI1NXQbrMw+9wGpliCtJaHn6H08hUUJB+kp3GD3mcRqZsgjSRtuv1IY/TyNRKkM4JB+5wGpkCCdIu4cAdTiNTFUF6RBP8WMCAthYZaxnO6Is9s3RfTEukZDGf0fTFNPSKG1XDF9PQNm5UDV9MQwe5UTV8MQ3N5EbV8MU09JUbVcMX09BiblQNX0xDt7lRNXwxDY0n+WLPaPpiGnpQ10t5RtMX09COoURq+GIaOjOUSA1fTEOT6vpi/urO1qTLpuy605+LkA/zj2V95vhdnezoolZrq4RjbPTM/u1ji/7n1gG2kRwqa5+bmdZ6N6Y2pU8ji2etcz2QbqGfVyFpv/EU3rn7FzGauY/EU9cbH42n1hoNA53G+yKphPFTwGU0AsnH45Tk2XiqyfhuDDJnZt4V2fnXMUvc7SAOf1o3QvM4zPLos28u/VjG/kL2RjKedv5gQ+zjuna9UdpmX2LHRjGS9viSOveHkfYWTutXzc7PDaXK3uoQIkgOKb+g9Kdf70u/kfy0vFVqUDZ+tmaK/qKR/ezFQbddSUc/nHfQdSjpOthnMhNhGsWPWNEofqSqRpmotVEmQjaKit6/UdrJc8yFqscrwzNrh6IYmyY/I3+QYDUa+10LS+vhvy+S3suu94rrfc71Pu96X3C9L7rez7BNLOtdaxNLotfakJLotTaXJHqtjSKful1/xdiWXks+wVwk1hodlqKDVrkOUj8ZkNpFPqX6HYDjF2XtFg1+Ni9aUIr9v9y9CWBcx3EgijcYzLx5GAweBgeHQxIEByQIgoeGw0MQKckCSFAAeBoAD/mSBsCQHGkwA2MGPGRZa8uO5Gw2m0SbKOfmjnInTuJkqWxOx6LXyjqbY+McinLsep14vc5mc3izOXZ/VXW99/qd8waks/9/UZj3XndVdXV1dfVV3Z2n0IYjtECh647QIxR6wxE6QaE3HaFRCr3lCD1OobcdoYsUymVthpYptMk5JhJ8heCbnGUiwVcJvsl5JhL8KsE3OdNkyKtMbLt/hvSPuf1HHPXtY1jqdau+0XfDqm/0vW7VN/q+YdW3j5mOy9L3Lau+fcx0FZa+n7XK4GOmi224+vAx09O1Bfj3h69vHzP9PsPd/fXTUQ+T2I61pi/7iF52uZr47IqF5zA8z8vuP2f0uolu+qjkE5KPSkL/k3ba7a+Ckf9P7dk41d1vUNzUHsju03/G0zQ4V3S/sh03CR31gQ5eCUYPtX8ToJTeaT0ciNMsxa36HR+PGrHN1S82eJvrHXPsL3oN1nfwNtc75uhewmt67SLjmQc3jUjfwdtc75gjdAmv6XWLjGceAjUifQdvc71jjrIlvKbXLDKeeaDUiPQdvM31jjlSlvCaXq94QMCF9kU5IcHfwzbXOy05p5yQ4O9hm+udlrxVTkjw97DN9U5L7isnJPh72OZqq8m2hq7gExe0QcuHXr+41vW1Jte6+scHX+v6mutaVzkk+FrX11zXusohwde6vua61lUOCb7W9TXXta5ySPC1rq+5rnWVQ4KvdX3Nda2rHBJ8retrrmtd5ZDga11fc13rKocEX+v6WgvXusqw93Ct62stXOsqw97Dta6vtXCtqwx7D9e6vtbCta4y7D1c6/qaz1lI4gpWv9jga119sPhC8p8NHGTB0P9DEXPMcwgVbm8zlDiiRPJrCDxsAhsDNA+K29xAPjR4OBdMwwDyocGDv2AaBpAPDR4qBtMwgHxo8MAymIYB5EODh6HBNAwgHxo8aA2mYQD50OAhbjANA0im8YgVzQNiB43gevegG92gHowopcsD642ma6C3nC4P0DearoHecro80N9ougZ6uHQf8DIW1nKCU19Gs3uCESzdGQXa/zZgqsFOux2VbU8wgqyX2xDU2HnuprRJjvbAa7itlIzXcNknxlt3WyYZb91lkxjvhtsayXg3XHaI8W66LZCMd9NlexjvltvqyHi3XPaG8W67LY2Md9tlYxjvWbd1kfGeddmVB0XE+9wWpT1YYQ/KiOF0nNN6zm1FwqX1XAv2g9N6v9tyhEvr/S3YDE7rebe1CJfW8y3Yid36z4m5n+CTrcey7zAA3f2Oh/Vfi2QfxLVQXMuzLfH9fNQz+Bcsx3OknWPaWDtx4qdb/ZBiAf9iFGEuSTCFR1XVTNPlMiHSdAVLaVrrIra010OkvW5P2+lYwWk7g5unfSNE2jfsaTvdLzhtZ3DztG+GSPumPW2nkwan7QxunvatEGnfsqftXEb+eW8PD5+0Uxbd2450btvTcTp3cDrO4OZ5fDZEHp+1p+10AeG0ncE+aY9adJsMTCXIJuNJCbLJMFCCbDJ62+VrfKTFrJ3ZM/ovSaan2ZnqGTWKZyn73iM425SaNQEeTGsUOPvl+8pZM2rhOdutfzyMXcdp1487Vl3N73XH9w3H903H9y3H923HN0+wfDy0bn48tG5+PLRufjy0bvoJUNLN0ewB/Vf8mkWPU5THsvvs8FaBekDvzO7XPyF3ypuVZZ8Jbl9//YRjdO0Ita2/fsIxAnaE2tZfP+EYpTpCbeuvn3CMF5utj37CMc4LDR9y/fUTjnFVMPzeJgVhmy/aq78uD3d8gbn+ve5YhX3dsQr7umMV9nXHKuzrjlXY1x2rsK/bVmFHxff7wtS/16311zCQ7w9T/1631lybSPxuK0K86xDiXYcQ7zqEeNchxLsOId51CPGuQ4h3Qwvxbmgh3g0txLshhXhU/6TXcZFN7wyY0/+dazLgXlu3kyZNnGz0u9NEppLvCKSS96PSsFPJB1Ip+FFZt1MpBFI54kflhp3KkUAqE35UbtqpTARSifpRuWWnEg2kctyPym07leOBVBb9qDxrp7LopnIhpA5ak/HN+kRz+qe+DFr9qfui1Z+6L1r9qfui1Z+6L1r9qfui1Z+6L1r9qfui1Z+6L1odTgfDa/V+/Y3W+ohvSKpm9RHfkFTH6iO+IamC1Ud8Qypaq4/4hlRUVh/xDUn0Vh/xDUmUVh/RDA3ZRzThQ/YRTfiQfUQTPmQfMbggHGuKvxq8mOfZLo+YWOaCned9PhKcsSjneaePBGcsvHne6yPBGYtrnnf7SHDGAprn/T4SnLFI5nnHjwRnLIR53vMjwRmLXZ53/RS8pG5VNc97bw7p/97rsGr52N1HzfhD0y9GMaFdJhKUSXZMHKP7qBniAZYnsIYElvcCKxDYugRW8AI7QmA3JLAjXmATBHZTApvwAosS2C0JLOoFdpzAbktgx73AFgnsWQls0QQ76CVsq4Dcoh7NjumfFn5pxi2KeXGLYrf6L6QJt1+LCp+NTwufOcfljHbY/yDDum5ntMP+ugxr8RD1gv0NGfa4CXvcC/Y3vekuesH+FsFOCtiKCVtGWDJYdvD/GPU1YS4aFR8av92URtWkUfWh8ZkW+Fj1ofE7/jRShuzMMeGnbf6TKaN8zTGgCX9L+ja9iqR4bq4+bbj0hXRnNuFDujN/uiVvP4l+KEe9USM/lrXxrDWjBqTjlkx3nTEhHddkumvMqDP1qBfkb8iQx8csk+JZW1w0F70gf4sgHzNkZXQ3DrVWUwpOChUfCr71xKRQHTO6JN4UfGuJi4dVHwq+daQAvZDfJYl5eja+ZL97I2r2YUcYa0x4MRpw7MXoCdeQ4fL+cOsyXMEf7oYMd8Qf7qYMN+EPd0uGi/rD3ZbhjvvDPSvDLTrgTgg4shwyXJlVKZTLmkTkOZlIZYNE3i8TqW6QyPMykdVWiBTsmmg1+b56iH3o3yO7FEZ7j0il9HtGO+ChvZ5wHtrrCeehvZ5wHtrrCeehvZ5wHtrrCeehvZ5wHtp7RNJeE85De4+E1RmTiIf2tk7EQ3tbJ+KhvSGJFOyaGKC9R0zt3av/fjN3zj9TsEoId5zfdw78fKItJ0zPaMu/0jPacp30jLa8Ij2jLYdHz2jLl9Ez2nJTtKIftKItP0MR3cyHxkS0HAVbRLQ8/VpEtFz1wiDu8VIES4UscaDOvNmKzrwZrDNvBuvMm8E682awzrwZrDNvBuvMm8E682awzry5UZ15c6M68+ZGdebNjeqMhyKY3zadOab/QbDOBOxh2WfimioUsGtFgjY0KmCfigRtKFjAzhQJ2tC3gL0oErShfgG7TyRoQxsD9ptI0IZyBuwwkaANXQ3YUzJjQRuqu9G9IhIpQ5k3ugdEImWo90b3dkikDIXf6J6NcS+9tqpAwM6MY/pb91Aj3mqpRrzVUo14q6Ua8VZLNeKtlmrEWy3ViLdaqhFvtVQj3rp/NeKt+1cj3rp/NeKt+1cjPPRa7ov61ogB/Q+x/1o359s6jMUiDjc0vl1A/5HwtpBmXMWM2B8ZXhihZsT6DHijhjD1Pxa+Gwb1gsELhxs1pF3U5T+xXSTaIy4SlQ5Rcdy7QMcV/Wy70EQDFxfzLCzI59YxcaNCGOg8QTdCQhcIej0k9BGCvhESeoKgb4aEjhL0rZDQxwn6dkjoRYJ+1g493rysLG2VMFEn/pPw35Hm7YVOcLhhBxn6PwvvHmnmXkBzuGEHCTqnf9aqNaf8jjv5rGX1T42Zx5181rLup6yl1M9aVvyUtZT6Wctan7KWUj9rWeVT1lLqZy3re8paSv2sZWVPWUupn7Ws6SljbnrIK0+29ccB/b8IjydpxULU4f9ieEKFmqXuM+ANflmmnwtsYQXnn3O0pI5Q2/L05xwtoyPUtjz9OUdL5wi1LU9/ztFyOUKl5ekhrzzZZHocITwvo+kPvjkL7xUe0P9UuJxJy0KiQP7UcEULtQzQZ8Ab2WoXrP1Z8G1eQZfxXERk1+XKm8Xlyh7X6fgSs06LQ7IPNePJ/16f+VY58iZl52eqGT/uq9LirtPpurJPtsqb+yI1ky3PBI414zPgIqOFVpnzoWWXXE7/vFU1hv2q++et6j5sVffPW9V92Krun7eq+7BV3T9vVfdhq7p/3qruw1Z1/7xV3Yet6v55q7oPW9X981Z1H7aqu0eejO92ceJSAAQZhCn9vzpLamQDGpXTv2AlNOon3i9Y4h21xPsFS7yjlni/YIl31BLvFyzxjlri/YIl3lFLvF+wxDtqifcLlnhHLfF+wRLvqCVejzw5rOl/i7ruhgs4XmmzfH5iTv9ioNOGYOyLlsiylsi+aIksa4nsi5bIspbIvmiJLGuJ7IuWyLKWyL5oiSxrieyLlsiylsi+aIksa4nMI0+ORv3PhZuy5C4g2pA/N9yXQy0N9xnwBg+k7w/q/71V+/gBFXcxHNH/IhjREcdoffr/sMonLspnTA7NU2jDEVqg0HVH6BEKveEInaDQm47QKIXecoQep9DbjtBFCn0WQw9YoWUKbeq/ZsJXCL6p/5oJXyX4pv5rJvwqwTfxXxs14T12aUtnSe7M5vW/FO7vblcTX17+0nCYb4RzZmB4Q56BO18LwNFfCTd7t+OKL0d/ZTjm3wrHEcMbJdaUo78W7vxuNxhfjv7a2ABwOxxHDG/oRFOO/kZsG3A71fhy9DfGRoNnw3HE8IbWNeHokP6lQCvt41r3JYfZ9nGt+5LDjvu41n3JYdh9XOu+5LD0Pq51X3KYfh/Xui852gIf17ovORoHH9e6LzlaCx/XOg9hW+NtL9e60/r/jGa3pqE7Ygx70p3phOGl3G+0x+lch3BgzqT7oOh0AWyAiVHEvuxMi8QG0mkPUofwrMVL+t9igyKR8rzQtAOXQAoJ6Nx+X8R8/W187fA6nHA020C6Fkt2fkJSLmT1v8ErSeV8MsEnvFM9q/8v7OjIuflKlsWYdfivmWrcSDNupBjXPyMy1XZH3Za9rP9dS61tYVj/TSU76HNwtwB64o66NfuMm/BIAOGRUITdHlp/H8XERvV/sBfx4/lD3t24rA0SLABAGp05R1ye4xoecQWOW/eIO8JxNzziJjjupkdclONuecQd57jbHnGLHEfdvsP2uDLHNelcOLAqjNWki+HAqjJWk46GA2uVsZp0N0b8S9jWqfWAizngYnfUfjBW/xjNehsNR02WW5huMHud6Th8E3CcjeULClJTWUvt+HRG/vlAKoVH0AiM+x2Jgafh/37Ecy8/pGbeazOzoRx1AS+mDTOM/wday4+dxv3JzSO23OQ7bLnpELtpsDH3KZGGPQMCgQ2PF5rEtOuqlvBM78NUzckjc30PeaZUY5Aq3tEseFxyC/m8DFZ4GHl60I8nr2A3S8dDytFTD9aaSNG34O9Bho6Cz3sz3NhYwbvRZKY9jobZWMEbNyJywTe4RBvBBW+CyQXf0nE1AQXvK8cNFLwT6f7I0FHwBW+G1zdW8G40mWmPc3k2VvDGpZVc8OtcouvBBW+CyQXf0llBAQXvK8cNFLwT6f7I0FHwR7wZvrGxgnejyUx7HIq0sYI33HK54G9wid4ILngTTC74lg5qCih4XzluoOCdSPdHho6Cn/Bm+ObGCt6NJjPtcSLVxgreuPqVC/4ml+jN4II3weSCb+mUrICC95XjBgreiXR/ZOgo+Kg3w7c2VvBuNJlpj+PANlbwxrYPLvhbXKK3ggveBJMLvqUjygIK3leOGyh4J9L9kaGj4I97M3x7YwXvRpOZ9jifbWMFb1ygzAV/m0v0dnDBm2Bywbd0ZlxAwfvKcQMF70S6PzJ0FPyiN8PPbqzg3Wgy0x6H422s4I07rrngn+USfTa44E0wueBbOrAvoOB95biBgnci3R8ZXrQzXPZm+H3ugn8pGjQd9HVKYF7c9OTcOO+2DJObEOsZJ+3qYlxezuryPtaD9zXJmdfcy3kZX9Yjj5x4BbeYkfmQZeZQsuB8fU2zEvPXvi9TeTlUs+Kdzefus2q66clZdd6B+uVRTWPXJ6vmc6xaz21QNU18WTU9cuIVfG+q6Vtm91M1ndT+CcrLoZpV72y+/z6rppuenFXnXblfHtWs8lICq+b7WbXev0HVNPFl1fTIiVfwvammb5ndT9V0UvsnKC+Haq56Z/P5+6yabnpyVp13Kn95VHOV16tYNZ9n1Xp+g6pp4suq6ZETr+B7U03fMrufqumk9k9QXuFXwKzVec8Bx2iYFTB/GvdjBWw0+/gGcuPR7R/NPt9CVu7/Ut5o9m36/5Yd3dOcmJWP4FsgR7PPIoHmjhbBzPpcLMBE+UR0V9q5jP5B8p+48sLCt6iq2q5/AP6DbHXluvUXIuJ+tisvpO6oO3KDfIWC2/Fg/BQMhXI6x+PSmSuk4QpZd4XccIXcdIXccoXcdoU8K0L2WSHvG78buRJY3WXo51qCfn9L0M83h+4zoMV9xO2YmwRI/2UqKH/pi3hZ+mZIwxWy7gq54Qq56Qq55Qq57QoxpW+GhJK+CR1K+iZ0KOmb0CGkv9UuZ9MLiUrhhUhUi6ibv0lVcj+vqLszkbEYQLUPKQUBB6U1GVGjsz16PIu+SDE9kY2Mt02/Epkd0DUKMq8kH2/Lt08PzKp6EsPhrVvvMmNi069GZnW9O8uXrudVMN19szkIkX1SFT0NBHutMIBR9T4gmJgemEsIH6krr0ZdbvRtuZvqSKZzjDJZMD1HJtsAfRsgdU3vhLft9BadTehDxCNkI6HvMHKk6zmMFzfuQlAUMHYSXGSuU8+i7RhvA9sBfGyB4CSZESX3QUWNZLpBcIpNcKlCJK9PDqaT+ihLQcmn0jF9D2YBnmP4BMHug7QU84ruVyJAfa8wYJjQHvEaneuWyWBApxDG+KUrr0RzBfXlaKanYEob8u2ZR6BI6Vz5cCp3HnFA3PmeOQMvZVLonVTTzBNI4SCXqKoXiEt8O0Qk8e2wCEMN+kB7pg/yrYLSRGaH9KMszwcRAp7j/CTOp9tmM/pDDLHfFXPMJ2ZIP84xezhmzAXxMGmmpj+SZZMD748a7wDRp7+NcCSI6bbc32INSA0dcdWBiPnWfyx65MADI1QnevUJSkYF0qTRKGpRnm1meYLWq/okC03XTzCrCRaevYqQDp50gKT0KROkF74H5G8znYHZQf2UGd7vlE5w5YnkSlhym8ySy+nTlLWUPgMVFuRDMtosZRVL6Ayl4IChmLNYYd0xub+IgIQHQMLkV0hV5jzI2eGyeEw5QgLO6heJC12/lE0adCB1TEPXL7NBusJy0vUnOARrrwIhngXUCwWEFVkxUV+Ri2hQf0dWF1IUlQ3TM0EjknUzzdJsWrxBOu/kdCKzWzksDbynZHrAvTrXo18AyVAowGexqvfocxyESbZf+QgGzZslmqV6bqv0EL9gmoR2CnKVbHvu+xSwi1tI4O0eCr2VJK3r77GZ9xHQsid9rPtTZENR3kUbDmrmoifOgL7kQ2sZwtXpgTtqNPc4WqNB0/5s97NggFUUHEi2DF6vGWatrr4QzQyBWRs0zdo2k+wOyayJTHdJGQhp6ACzbMfM3cU2IDeGDZgl5W0eLcA2VwuQMdkwLF2C9dfdNkDKT9uCBmY3Iy9WiIkeqiHZ5mpIfqId1GWbQ122mG/Dx9oN8+fUmQGfnKA2DbI2GTH+WuXR0fCsxmGN6vbmRnWHw6jukKTrp9KiHCwzPwKZX/FqlqD/4qf+ouTaXOKCJkO25cOetrzC6n5H7cj9gKLqmV1jODQ8B7/t+nmHRd09OaDCwNQ0RRH6BZM8qaeFaYukhdlsby7tOoIBLw18ynYQuFrDMKFvRFWYLCIs1OuP0RrtZPNPMw8OVgcc3yPHlBqpm6UiWf2G3YKbJh8V7SaVQp9+K8v71UzDmyFTXXRY/wGHMR51G+OtIsgyxqNu+7uVgu6osdxJyOEe3wo06t91MIV8R43nprBB3it1pd7n6NJkpS5Nlro0z3l0ad4B7e1YYI8ma7S2wTy5WhY192No8/Y5etztk5l0CuSiGcLPx0G1nkfK92MQ8YoYRCSBE8UYRswxfXvj6GACR5y/164OZPY7imabZdvIXEfUgckuqC245eMDdMrWpA6fNgYn02ob5LJXHsy0YA8HmtrDMK3vBxUiHtdfUKSRRJu9tXCaxh79QwoHCSgv49ijf9gN5GzsnRZwIMAC+lm6V7yGhFa/Kq5/BeURKppN1Fgd5bK+o2q5PVDrDhSMPSJi/LODVOhF7D28pND7yB21k0AfKBhbRizQvAD95wq9m6AHC8YOEgu0IEC/WqF3An1avZppd9WzQy6lf9VP6UdMpR9xjZylzvsdNUlsHS4Ym1csto4Itr5OoXdia0H9pUjmKMM+CMM6tCZSx8rq8ggSD4pAW+8HAqXeD9akX4og2XGTbD9UnWNcfSL2LAuKriwDUrtfF500Of+grMk+zT1z5rIVQN09miJgs+FHYcgNP35LypzQv1mhzqnUGFNGXY2x1ABm9W9EpOM099ilRvVv/T//8MEvfNW3fe2nFYfCJnJfG1E/Hsk8XNANveYUMihKEmOahzgqtFRCNo5BDmXIU4L9YpADMrSQbVK0ZCZl1MrIkP6tCk9l27nbbAxEeqE5tKokB7ry/70/9d0ffe0PvvUvP6v4jFxQDVgkXbmfU1CrHjG1KmuK4l41yivjLmXxlMRmOUtJyNKffdUvfvHHvuJ3777HUaKp3KR6N5J5G/D8KPE8yIwk9O9QBCfw+p2KWZS9+ncJK6tCWXIgdB6eyjyKrf6xyLcrTUiMeJGASt9N9uExFuOEZB8mhH34XoXeyT6cUa9lJkUbTsPxc2C8IHmQ+KsKjyuMTny3/v2KZJVGXF0CPfcjCg6+Thb6QHHso97d+T3AxlZuI9NA1BFva922cXl7wUFJbYGi80qCOvtbuanyTMM+2PkG7BCcCOiN7nT1RiM/qExuUvV0r/5DioP8FPUdsKcd554DdSJ+hKQ92SmFT26Gj379RxV3H9XWxDef4tiif1TxFMUotKSeUx3+vWfv3vGg/mNoClwpGF3lQTQVnhyIqq7pP455fhRHmgMeQnOOQO+oPbkvKVAupxwdtT22PvSAR68slOhF4f2kjQ+wYCc8+m+Bo1LvHioPNx2dJci4O0F3xtO571DUF9XM49SNSIuaSEM0apV4iNY2q+kfE2fI3m2H959WKBF436n/jFVBHy+oIAHR38I3MaV9V/EwkJ9pB6MgDORnFHgVtu8zyhwnPMcJ31F7cyW1LTNt8ufY3znZD6K9o1jbOdFQ5GegOeqyhT1OBhek4oYFqdxR+3LXIJlZn2RikykoeKmDZPZnwLp1g6Ezk4EAc5IIVNXWq6KE+slUnmZTGZVMZVSYyp8TgiZT+bsRYOpMgLWYmkyAngl191QesxL61MxfVrKdQ7+ojIlGFTtAk9z/3q5/XHHNS+6W5iUDTWKLdX72iP4rHqmNedGPWzxAn+AX7BlAoZv1H2xBn7nH/ZdIro/NXXkldUcdyP2MAu3elE20ZmLWLEb+rCnVEZdUX8UO0+v29KmVdUr61SB5jHjIY8TKw6tRW098U+5DqBPnvnw6EVis2/RPOs2prBKtWvqNFl8mtxPGPodko+UawIhRy9VMzAZl1NtXrQleBN0MViaSuRAwobXLPXE1twko6PL0FmTiwpUPpOYy+huKZ0zufdhbmfPsrTjmn/uBuEdHxJqL3qRfc9WYCyhAiy17RO6j1Fd6u3df6VjkV5X/9/WXXsX+0vkAbT/h6i9FP6VAjwnba9Hw/oKrHfz/W49pdrP+aZq2GLOncAGqZEboizsGlPTfu00uKVAO+w5ZjnGyfcGrH5HNrUM5zTv6T6ek/pNPJ+j8PXSs7qhbcp9XoIr3u10IWpkE8VhAdU5jBc2UuKazRhwLqCM+C6gjTRZQRxxzMJchq72mNTMdDmSbZsytjEjWzZxbGTFXlkbMuZURtH3YI1ngHslxqUdyXPRIfp2Go6JHcgB42Aw8RHDYBs92Wk2FkjTn36nBIvsIr7nfx/LJOBZfcbCpnHbVnRFX3RnxbkwP6L9hjBRF7YjjuTCIsMkxQkSXlEtW2c1t9R46bM5nke9uefXT3vJCnLTyyQVyQV3MXA5eWAbl+oyNV2DC2TVHk0IUt+b+CobxmSuBJC9PHnNVJKSQHtZ/lw/HGW/zOhwHgJ64z4vYrswNeM57WHMbIyF4ROviM8Qz54I81qk9pdp8/Rql/tUKdKne6TIiwp0mJS2mQi31mvTepL8lZsYdNdhzOTQlLYcCPbct3Yara1czWx3G1Ho7G3rxfETqvdrHjK+6x4wjPkuPIz7LiSNYBcaA07Mum3TIlRrCDgPsdg/7ZXRpyBbdjQDUsCPv/ZbzgEfeN7oIHEZq9lXbEZ9V25EWhOlex/UR78ZXa6lkSiDHHY6lsl7zbbvLF2HEu29slY7LB4HKqwDJ7A7oN292rd+O5P4c9XskoFOXOaa8VyqEjS+/eg6uZveZhWWn5tl6+LUZ0H1zthmjzoZiKzcUp6GheFdAfkecNt7Lmo1wG/Gr7dBGvDuA2ru8W4iRcC1Ea33b+95WBHV9N7DUfv/ant3WGrxrWd6ztILanq1m20O2ftRh77KB9u7/lq3vBE517LzdUQdzP4xL8e9x2Jdtk93pLv1PrCnB4YAVaXlqwmMd2bnW67+iO6fbknS3qNtz71LTmSddTU/Kya5X626n7tFeb8+9hr22pxyyEL0HnIr5rFgtT9kNrleu4/rnaNXYywXhT43Fd3ER1wY9m4/onyc6Itp0zY4LrqbTNHErWhN8E+0J9nD+K6U6JiZj+EKxF9S5tP5fFPtCeXTOyLH37A30hB7knhD2dXARO3tv47eWFrGLPM5ZlMY5i2Kc80WF3mmck1DvKpklKMKkeF22XkvW61V6HVNfUDJJppvMX8O1uKfb1T9X4Oe/489f4M//UNBz+5y6O3OdQcvEQpJYKAMLf6vg198o9DkCX/A/e8v7uNoPEb1nmF5Folcx6f2dQp8t0FthelWJXtWk948KfbZAr8b0ViV6qya9D0ToMxy9l9XfadfaXP8G0u3qtytp+7GfH+gIiv1gh3f4Cx2EYQ/8UAeBNkktmItgXprlwjPuwz5pfkVgzgM4bZm7D4u4Hkfwi8HC9Yh5qSP9v8e07+rQYs/UGpVyVetcqq2sFtfK9Vq1rg2cKzbW14qV82vLpbUTFFFs1NY0zeN9sVLS2ieqt7W4oABfM9WGphQ1ZVFT10o3Smv10rI2MCfenCTTHL4shSkLmrZkfSaY8ORtTa2XKqUlCjy1Xl1qlGvVg5parjZKa9ViRdNmqpCX0vlq5baWMEDrWsfE2lrxtqac1npNUidL9aVSdblcvaZ1ceClYmW9VNe6bZ+QaK8jYGZltaJ1rBRvnb+qdc6Xq0ul00KGccwJsKS1HzxwUFOWtOjk7UZJi52sraOUOk5VasWGFj1Tg0Q75q/X1hpax0UCAYRD2uapW6ultfJKqdooVi5W6+Vr1dLywu1V4Cl6EWXacZFQYxcZd6VcBRaSVamwNK26XqnUT5XX6g0tQe9nivCaXJPEr0Ub10tVLYa/kD9dPCWJpDBELmtLOSzBF7SuCxC/UgLhn4OHFq3iL+FKtNqfvrGixWdvrBBM1wlLzU43tB4IP7teaZSvliulE5Viva6lLtpA0n+oaBG9TcPGXtFwiiaSadOo/eJnlJ8d/IzTU9E7+Znk8J6MoJKGL03v5dB+fm7l5xA/d/Azx89hfu7k5y5+7ubnKD/38HOMn0f4eZRTfwi+svoxCs3qD2fasq/uyD5k9iS68uJura5CVo3qOvSLKZRWR8XWiCh0rsVJ/p131LbsWQ/Uo9AH35rOQH/dEx2aUM9wJDfjJkddl4FCSk9ljYu+BvLthT7iL8WEohRq4+whfdNGMzXjRt0oF3v1DLR3sVwSifD2RPSmUXHkMt0FbwnxhsAT+mYCFszGAAiocletq5AJw/rlQBL3UDJvlwmzNJzkndJJB8vmhJ4N4HWoGa/TESRyDHfKTXflUiRgo9SiTnLiXpwuGOxvoyHgIPTOspPhcOG53ZfGNNPwzgRj2iTThbcauChFso8FUgpDIU+7BlMCl57ozJYimduAuQiU7Lg3huA7EFOk1c2Y3YzZ3TQtFwanFYQp0tIZU2dMvWlaLgxOKwhTpBVjzBhjxpqm5cLgtIIw9xJmD2P2MGaPG8NKxgXMyXggObKUZsw0Y6abZsmFwWkFYRYIs5cxexmzl09yl3FGEKfvjtouFN+Nw6n1Guc8uJE51XZOtZ8p9DOF/hCpunA41f7QqbIZpCdSGAiRqguHUx0IneomprCJKWwKkaoLh1PdFCLVY7i0sWEzGwq3iZnde9/MbBClcGZ2b8tm1hMjlJnd27KZ9cQIZWb3tmxmPTFCmdm9LZtZT4xQZnZvK2bWEziUmd3bspn1xAhlZvduwMx64rRkZvduwMx64rRkZvduwMx64rRkZvduwMx64rRgZrfr+6SRh8NgYnd3j77fmH/1ArEPPeygKoGKTfc2IyfoHghP90B4utv1B4IztF3XnGMtE4AoFPS8P4DLXr8YFSOLgwE4IUeB824iYtzjk3yo8eAJvXA/OHMRuXfOivqhAM7GAf1wtpDuTfdMd6EKbwYVfpBUWPUKpHun8rF8Rk6ioI+3WpTS8TGXcDtTpCDf1BSlw2Miszv1GLUFSah4Zhx8JawvWi/Usg5sPNaF6MbvP913q5GMOia6GWYuyb8kZa1nzGY4CbIZtDxkLJgljZqBcHM2LCD/svqolk4n1S2myI+DsmzV2iAUnvYYj7BH0m90at8dNSdgE0u1amOtuNSoa8kTxUqlPlO9UCkulbTY1NWrpaWGNM2ZPGGAnqxXtH552tCM8Z+ZPKT1ANRyGefwihUm3m0gTq6XKzhFSFO6ySWZEWVOi1WKK4vLRU01JgG16DPl6rKWmqneqC0VMeQ0fsfXSo31tWpdi8/xS8cNnD3VUhxxrtY4t16paKk5+7c2Ua3WGkRI04rWewLgIIP42muBWIGxyZlzE3NPaElZGJp+dr3emCydrC2tY0hpWUtOLDx59vz8wpPnz52Y0rrg68zUhPGZnLoycWLhzBPiK37x3Olz5y+f06JT1fUVLTlfXlmtlFhecfwol+paz2KtVikVq5DuWqlOMo5PiiBNNYpUi16slgFpkYUrTV5D6UEeEM8IwxlfeSY7/SXvGVCFZkAxFJQIrEMHh8Yc86CabT60zZwP1Tk8zc8+fm7i+AxT3wxfYLkoVNe3cOw2/h6kZ1Lfzs8hfu7gp33+VDHnT3c75kv38nMfPaP6/kxbdhqs9ShUzq2FTfpYtpdqt7BrW/Pb0KgNsnHrwJ8Y/mxHKxiHSqYKKwh9NTRdO9VrYLki+XYZ2gHYRlBqU6iPKACWADBtdq/eBeyJq7hTYJaMudNUvpOWc3sgNjm9m8jNdum9WVx/589N4rOg6v3kyaFZcAM0JtltcuHDishWO3ISyPC4+lIkEwOw7sk2PG2vJ62p/WDntXx6fKsDHmn0cn9Kge7CJ5UM7vxNUgLie8DxvcnxnbG+59WX5JXazbRSG8dCglh4GTJedhgvuXCZ7oI0sk3LMtUUagKgcA9q++wWfRdIXQXzPwLPLdPfH7Urlh+Jl9UoLsmlP7FdeyVhGnNtqbZWW29ADa5r2ycW62QFThhhaGtLtxpTlRJaJU13RmhxI6r9mdJtrf00/ASYc7DdK4uAvWyga/NgAouV8rNg8BK0mlIlYDTpep3iLgkCF2dO8npUpFwDE8d4tKinlgQT5vpZ51qpuDxXqtcqN0patFK6CowyjDB1xTJafMP6dRpBE2DX40vMW6z03vViBWjWGtdxJepqrbKMLUu8DBYSEtcSNTDgbPStpab2a6WGpkxp6vVi/fqJ2jKvMqor5ep6HeUTrUN2NbVRm2+s4bJTjJ/Jm2vlRmmutEpNWD9KowKtBskKcEVCSduXBoYc2ovL5cZ1NtwxDKnAc048lQVtk4wygy3zUmkV18r6y8aHPYkl+WtwDQRXrJdMRAdD0dXKeh0Xy1gxaMkxLbiwASZKtxCdXheur9VuUtGlzNB5aChLWufVMjT1ldsXipClZNlK9Emto04Q6nJtjnKtdUrRmKSTTy3ydF2LzdalJb/+qZXVxm2XFvcCRSgE6IzMr9dXRSPn28DHFoprWMYp4LN2s7QsPuuabsEzRMeJMxPz83KPgPsWgR0Dfb54tWQTnboMebuGmU9eWF+slOvXS8sTq2WtizWRy1qDNM+vkWw1fcmZR5+1Z6t91+uU92VTOlrHYqW29IzWvQTVqVGywmmRFXQTefPpFahrpaVSGSq/0EgQfa+lq1OmJqSgTNcsc5N+IxLQgcA9BVF+encd4tx1UM2uQxc/u7mLoFNT38OhvVIHQl5K3WVr8hVu8hVu8tv0A/zMc3iBnpuYK0V/kOOPcaqT8LVFP8GxU/w8xVCPM9Q0fA3pMxQ6pJ/m51l+nmestzPWPGNdhq/d+hUOfYKf74FOyU90wPDPmCQ4mO+jxv8gtBu4liZGkPthBGlsZz2YH6DWrz+/x5p+iNkb3FGc1JzS35EFcCaHZN5pI9NnkZkOIPN2/V08Nuo3eBvDNTyZkPAe0/J7oMvybisn5tRKTG7hItmnXSQHabR7cGwYj+gB5EFP8joyNQaSeRIyNhgurXFyUuxnxk1wIHIOpcMzcl4ZHyeXSy9MPIAyG4B5mlwz+++PsJYlYl82MeWG9UuobeJoWJ98SSP3B/Hc1wJuskumNb2DT4/qmOuy3vlowZi9f7RdfbFd9HWx6zanwxg4ku+kkzKioKFtuSM4xh5KAkTXMSVJg+s0K0t7PsXewNp0ZM4WnvvGiKrAkB8rDGF20m7PfswTPLH/iw6Xm3jenL7piKLNHIJ1LT6Nns9iSVPVt3In+pXIbB6Pg50eFEXASxODhYw+xBM7g8SGOBN7MK/DSH9Yz5ETwDDNpQ2Pib0LHVwOw8Y5OjtpAnpgto/6iHjiqCk+8q/dTfEIOUrTxxg2xvlPiFygv2ZCZBRePSQ+jwek9BY0Uz36aCJkCzmt9hdS+gNZK25gegCd+sz06AzbCO+04fLHLvN56Ob2kdPnwaE2GrlsZnpJY3pwvA2ooVMgsEc0rrwaNZ0DXfrXi3qR4Y79pnwH8pj7ehwYbRrCkUb0mBILJ9WcOetl2dKkfliqAiM+8u7Tj1AWNIAWoX3iEDMbr+25tHo10zFmsQDZz30YvcCj1PH/MmmLJ8+2CvdqNPftijGAOxaJxlpmZSQEK696s4K7MI9SKDdcwLNLdlHc/L4js9mmjXo6pY9LOtg3q+lv48q3czalP2aLU2m/Qv90sAabOkc+/A8Rtaw49BNPAu7B1x79YXFgX74ng+cjQ1Cv/kg2aZCCvz5xbNgDghuBZGNV1L5HmaS3euPnVvg8SZ8PYvX5LUX9ZCSzzTBXVCH/LxkZd6lZNlayAy5D7WFpTuC0wCBkaPukuzeRVnekU+psWlOTszhTkBs/g1MHwxBwjqYOdo5fQEPwCwoY8l2maTFr7WS/2gNtwZxpXGiJZWQyq7bZg9OqviDKa7Zbv8h6RP7HIz5GihRGNnRz3TJBsWHA0IEXrFIGii4pwKg+KfsLpz+naX/a7jmM16CnDyPKenmprvWafWsYlV+DPjs6zfaeOD93/uLCzLmpJ+cvzl+YOndy6qSWuAiPEzP4Gp+bmr94Fl7EfGLAgN4+HqFhe84xWji1VlsRo6plcyrWPooVI1fDlZbHFTz2MMcneW2Xc3wCaNZg7/yamJ9t7m671cGgjQwO8KXBfNPRjW0MOmwfzXjzZ/cyFcPS5IxZYp6upunvlSdWsasW0XCntXNU1OE5OmrTVX7aJ1YVPSWNjuTxUD+PLQbgq9ucZs3ycwvHboevXp5G7cVp0+wfR6Fza5xklsx3ks3RoVb0sO3Q850FHWp5WrJ1XdMvqLhQ/Thah2mdcbYS1IDZDwVMEyNlDSyg+qsJqiM0s6gL/8OMkwVbX9lGys6c2YuV6CJvT7tIbqYes272mDd7ku9BpnCVfitkbXO4tNBem0DMvoTkgTGvDwoj0mJmzVGeW4pKtmIjeh+yG5RabpsexaZh/BSPEmw5tJb2ImJ3DfWHxGuH9Rqj16PqB5UMb5iDHnycZnIjavRpnLbliVEHB2J2dIAWycDMQ4OCUTloyvrB0P6Jor1X6+GJI8lseZleu2ETK1M2ExlgS3G2yrRY6aNQ4RWqZhFpAsTtQx6jyqjoCfiN6Vr2gdyY3mbWrvY8tDRXPkgzxCTXDsheXKzFQqa/SQV1ikAe/y6q/aOiJcp1YzrXyJw5R9peW7umtd88tKS1L9dWtOg5nNmMlesLNLdUXF4WPvHmfLC2VK9TUMmclTUmOruKq2jHDUhhAqM4lyUbb9Eq+C06CRKUeJSmtzqWgM01rUsYd4O2aiyo0XSsYFE1OMNp4pXaDTaxiyRwFCnOOYFt1XDrclTDrcsdtNAT4wWfhKc1NZap2szZpTTDb2J72ZH9SCS7gxw+lDFcyMXVYD4WGHfI5WgDpZI9QGs1sTGx1puiyf5NejcvK8XoV8sneK08ku2n9RkDHrtYKjqIdNHgTUN3C/w8QMM6hEqGpJoxGY3RcJaY20HdmSD+c92ggAKkY/wU9t+6aceeFfBNatfLqmr2ZL4urt2NmBqXLMnroradJlj0M9WrpbUS1CHb/Kx9MbWjUrpRgscZ8Ziamzs/Z5vCda+2tjhHG34OWJ84d+78wsTCzPlzT4rp4AAT0F6sLvNWHF51oP053v0Y3pfTXq7e0CI1AL1VW0s/H2oLSpTNBvQM4CvGGh3jWdQYa3SM+wcxU7PT/ByQFlxTcr8g+58j2X2kd+jmg76Sm2gl8aUkGh88KbvX2kDfjfokoPUx4Qu4SfgC+kLvxJZF0OZpMn8oohkAtU/cxROaz20t8LkPGs9WaA+Gp42zZE/ggIhWicU6aRQGOx002OkYR4uOZj0FrZymdlJoYrwLB0oaDJS6zYFS53iPPYk+aZHwL9LaR2JmnbQUcMfE0hI6DyxWSmfAzqLRvrCG62CN22fKAFP0d4wIX2e6L02cuTj15IWJuYmzUwtTc63WTt8aVnA4pOgnb0PjU14yGxlNPXXx3AmsrJp6Ye78ham5hSfAgNwiz4iFJy5Macnp8nKpfra0sghkbfWx20B48vGpBeTaCpgXAdvP1G5eWCvX1sqN2zPV88BYpcbrlOuUgfi5Gtk3LYUUZ6qr6w2xqy6FaUsC6blQKTau1tZWTpawHcQGruvC+lpprgSDBlpY65orvXe9vGZIwWh74ytQesVrJcNG6kAABjMkSGEuO1le5B2TsVG5JMUkSmtrtTVrfZPXujpPnD83vzB38cQCmNwEcj1xZmZiHtI/f3HuxJSmzQHDxQaxqJ+ZOPf4xYnHp568NDU3jzLXT5w/e2HmzNScGdI5cWHG/BDDUX25fJXbgLO15fVKjXdw4i5GWiC2bUHcDAoFGnqNXV5wi6HROeig4ZrWXkKjW2+UVp3DWTLJK7Xl9Ee8l6XaPP1aojzsMjoKUbOj0MXDLsOfpcfhzzJg82tR2LAq7Mmi8M4/hT1ZFPZkUVw7AXdy+EhG3vFHniq0THWAnw/wM89wBzPWDkB8GstY4/x8BAz8D7Vnh+nUsAyYqkP8PMxPnObM4GarCAMNMtAgAw0y0KAAGiGg7Qy0nYG2M9D2adwIjn0XATfEcEMMN8RwQybcKK2gICfH+Hmcnw8TZzRbswNTFpCDDDnIkIMMOShBHiPI7Qy5nSG3WzRpVBNBx5AkDCpUNUXG9FGxFeIh5vMYP4/zk1MJwN1C14K5pCwEJyJd0qVIaTXlhPpBqZ1IQxuRUmNmAxAbV7GZiEOARs2EOp60M9KNvbcDSESzGptm8A8jfKcBn4VEByDRtJlomp+9LmKIfRixk/4s93tiUZpdG03zDGKnDOwxwB4B7Jwbm58Zfm7256X7nvKvt5p/wurxx9rmj5X2x0p7YCkCq7e1tJTcLymI1kdo+bQYgPSn0fUsZ77hNQID9IYeTpvoDVeqMnMx80kw8CSsOaYDT8J4WS0AOweAnTGTnT0+hTjGz71Odvdhjdzsodg0yYA+WJvE6xbrdSu9HsSph03mWtM2nno4AH8PwF/eTVMeBn0krn2dNQxCLydtslgvnV9vQDdAzCV0XK2s1w1Xn45VaNEbVosep+9KVUtNrlMDucyosUX6NvsAbreYrB1joQa9JOiUlM7UrmlJHOnP1plWskZPoFQqrmB/pXEdSaYF1we4P0Vj9LQXMZvfVkwQM/p0nsOc9I0mIxrDmVQelSN0UkN/EKPJ7bY1vW0uV1JjxjNDI5rN0NDdACPbiSPmggpdcppMmf6Qyr3wtmwvOWPj/uy4iMTABA3uoyJedcXnttMYPDLe9ljblQ+mjJkooQ4DNDBWcjPqkGGyZ1WaFROO447k6HQb1Yx1JIY3o7TlptQemh+LNCGFt2XhATqxKy86mKLll2OqQivrHc3I2HGpzlwAXI1YwNW4nqw21DsmJqY6PRlxwNgp4uxu7pyqUPuAmfKgECwVOz0c8OQ61adEywFWyhj9vPmE9tY2qypCfYmzEot62L5cXjOWLWpaB3WFjVmuaLl6taa1V0DbozeLa1UtehI9t2TvxosLJ8yjNqK3cdpKdKFXYGxyHYgjleu1daix6DSI53LUS0s16KV2rpQr0D8VH7Fz6zgI0dqrtZtgDIpr9ZKmLUNaDr/CrjO1pWKldJ48rurQ3V0ral04dig2zhYbSzjLEMPUDhas2b6uCuEY8WqjvFJ6R61a0pLGG1mP+M1S6RlkNykxBsKCPjdlOkYvt7VOeJ5ar1SewLyq8DEN6dW1bng7KyNqFIBZrhPYWRIIhs5LpBeABa2HX54FXs5fvVovCf83EK0Qt/F+W0uJVzP9TvEtWEiLDxsXXUaYYIThBS8cZ7CTbNROWhLvbNRm5s8b4m/UZudx0DKLZ5GkGzVRDBJ4XAgZMlXjskkZUAxhYmFODTfRRk36giSRHfERpQSVBZ4Sja+VbtAiVbODUMh3l41wok60yldv4yoX+aKCatdX0Sc1PmtMoc7Waehln4SLlVdWcUZqI7shWnaqtIbn1pA9egrGjmbTZhuKNh+cdwJarcrZgo+3r0M7dbWMFQyTTa7yNAfRbkd9i55FJ9XIhRlNM0bRpWWrPd5ysV4a4nYR6tr1AxdmhspVGGcWlw/g1DPJllx3O+ekj7iQIiiDHVfTStbGDd/RO092thcX69pWJwMQaHHQ7YiBYlusj5IS7NGixaVaXdvmIgChFgXdGaV14q9BowM/rjvG1NFiHSyqmzCE+hFGhE78tQjDB/SCio2iFykI9SOFCJ34a5GCj4Km3NaUW9qgF6mCRavHFSeIFUZv7xu6xcSAr6VSueLmC0N9+CKETvw1+GpHabrKzyb9bkcMrkNZ5UeibweNcVOBQB8qCI5aZkoH3lcOYq+zBu2bSzwU7CMegZKkh0nu+u3VWsNdLypSeaXsEVqiYpUVNKkH8+KxqkXhUdDaV4q3tNgNcRxWp2hSRTO8E1Ohk6+GgEmZKgQa6RkHXWn0EIgqNMXirR1aX6aDx1e56Fgqq7WvQhscXYTuulveEOUjb0RKwc8oIu4bAmnv0WJrxSousJH+zNH7gSpYc5E3M8E+piOgDwhAbYdXqIQ+ukeLX56YOzdz7nGtY622Dr0IV6lSsE+pCpQkPUxVw9O/wCCCrFxZt9XqbkeMpkl1OiqqdP290H64qg6G+lQdQujEX7PqYCV3cWIzCt2OGE2TTEKUKnFHYw3aTO0hpNOore4nezt0ldvR+tDVtdqKnMAQNJDPgNW3EolfABDoU4AtrlQ0ZR7HZyIgukabJddKT9P+PGMMpZTkjRHQeIvtK2rpVmlp3XGQXMcS9sw0DZtSpALtjjgprRMXSitXoTsDQdaAqunMc2yudG0Kqn98tdhAHKz0xWswTrxWqS3iiAwKubZWOoEanoA+QGOmuly6pSVW0E8Fx2paFPnEpgzpUMcRlKKBJ7iV6g1pu0tHmTDhQWPTSql6DVu9Snlxrbh2G7q8xbVnsEtahVYNsu9aC9iORfIUqDTl7KmhldoyNdNm1UgKzMdLmBHtCIKXaTg5VDKm+c2CHLoJTe7QYm359tA6aOC1oWUxgDWI4GbRZ0rG17wgiTuEaCzQs1y6iruZppiZCrBfrdEOGMGlK/4pk8sEVCERi0V9FQ8A1GKneRH9ae5nHUUqS/g6VBGrK0NQpaV8GJ2Soaeerj8lWVHQqPqxY4R5AEYvPTgssA8DxHq7z/J6tASVwXNQH8VOCCBDuWtJ/J2CP+r3QJOzDB2np+uT5cbNMp7fB4Og6zDeWLtuXyfpXJA405+unyzhNidjFUlrry0+ralGxjT16TomfP4qzvJHn8a+NIx1ytB1j16Ah6bRwEeYcaUOVq24XL6lbRL11rB6lmSS9QNWMCSDyDj26hMI8CpDJxCawrTNFgAlIUGlDCgRARV+edlYv40X66IxSRTrLEeolliUWKM7l2oVLHkqEXXGCHYvS4mFDWURRoDYpI0W9w0t7sHhYNX86ACDgYOg9Wod9w/hUYrmclKPFcik0y9GQ82rGL5jirkmLO+okb0djD00Wxlum21RQsEDBOl5ksOn+TnD4Rcc+1vmeEZmAb769YsU2q9f4ucVfr6DsZ7k5xI/l/l5nak9zc8qP+v8fB6ecXj+kMIvP2K8/Kjx8mPiRdF/XSGkERIBxnzGAPld4+VNfOmAlz9W4Huv/icG7n8yXv6r8fI/jJe/NF7+ynj5kvHyt8bL/zLo/h+ke0T/QIQTfFG87NW/1gj55giD/mAEvo/pP2RA/LAB8SNGyE/CS/Yvk9nd+ofxqN1kIaN/RYQdQpLCKzg/hjNeD06/SM4f2/WXItnOoY9EeH5mtBDXvxJRO6dfHLqjatlD+j/HzwSE09XF+PKV9CJWVB7A43uz6YQ6S2e7flXkjtqZHdQVJ9F/YRFVs6P6VwuiCf1fRsRMDrx+Db9Of5Am5cbvqMnsFf2DEfY4m8qnyXt5agydj18aelkdVwch4WfEcbOR9DZ1Jb1Z7ZzsV7enY2otHVGTEP1eiv66SBpGvzQfPDTewNWYnfrLkaw4sfpfRcivOa5/Pb3I6W/Tv4EYB/ZeMdh7yYjuyh7XvxGjU4UH9G+KZDPpPlVJ0zVLpgtde/6hfEfOFYZLPu/SvyVCTjtx/Vs5ETWifxtJxpW/fx2cv2935C+Rfbv+HUbBCeoukt8ZTPK7XCTf5SQZxPB3B1P/Hhf1Tfr3kizHUJ5x/fvoQyyNvRqR7mTvzHcAyAFS4Hh2h/79dgUecxRSCvBLVHKdiAaU/1yo74sa4h/QfyCS7Ul3pWUa+eNj8uf0SxEk9jASe7f+A4j+CNDaBrReQS4fgZcfpRd05pSF8MNKoBB+zCGEDiD/4y2Q/2gw+R93kU/pHyWlB/L7Mfen9T9Usol0R7p9+jeV/Ag5hk7lOsA+/aYyZt2LOZUfyY8UMqqq/5ECwqIgRgIJjVFRxLKl+0KMYt7imPwedzJv038iko1PT2GRPCoScZQWFf3DdsP0UxFTH4Y9CDiVJpcSh6lHrrz4YQUnlVP63+P3qPhWc6f1f6Dv8diVlz6s2IvlHxVZ7oFF9PcK3tat6/9bXLvM5LXcLl3xMntjRthRdLtrz73HxzyOwTd73rZgJD/kNJLARptJ/qgHG2liAxc5XlXUz+limWNWF0sKhRhN5uPCxhD5C0YLAxBi1eR2sIzG0scQHZcVDKE1hegMhsCC/NEI7h+j/X+0mWaAPSdjuk62Laan8Tk76B0Oz16KHwmOZ7/NxOyBcHAFsQUxMXu0NXjeopiYfXRjeOyeps2yR+hsitxBkQ5ub+zM/QRuV6Pl+7lOIEWG9MqruNdpUP7YLn/0yR9D9NElPnJyTL/8kZY/BuSPYfljp/yxS/7QzY/cRzrUF/VMbIhWgY5FurZNaupAWhyvofE75W4yTe8ksTRLbDLrDkuzFCdz/nFplvDkWHMY3nCamCyEh+XNqYnJY63jpLmUJ9tmxcJ7Ap6j/NzDzzF+7uXnPn7u5+cBfj5AehLT8/x9kJ8Ffh7i52F+HuHnUX4+yM9xfqJHTees8KjBJ3rUpKAyP0JdjBR0MR7lrRqdePsQfKOrTHI2wxAx2lXXKcUM6Y81xX3MF3eiKe6ED664URnzgFdK4mGNuX9oV++m2XkEzU0fVq/pKdHsAIlThHDBK7RwTH88exQPWBPLpj1g0mZpmfN0uj/diybNHnzG7F/qYIPPCubAFlLY7BVnSOFRvMkrO76RFOAPPVvPUxF+uSh3zp5xUT4GdDcqk0EXtSRQM4sYTHpgvJnfcHDoc5/bga1iesxsOcmOJvRZjKebatpz70LXX/S+6ZtUoZ7OY9QcP9GTZQAa5TPUKG8av4zOTJn0iPqE6cy0efyd/HwXP9/Nz/fgLtoKUs+a1GeZ+qwP9WNA/ShQL7iov9uRylP8LPJzEVM7g6ltodTa7p33k0htq8n7Geb9jA/vaaCeAuqaSZ2oPIpFQL5gs708EsA9rFeRCm5R3qJfy4reylUu1TM80MOrDCO513X1k2mxA5dq8Hl9nRtIZETFPvnD0MdSoY+FCncDcreSHoQuVha6WEnoYqnAD8bchLf3EswtuZ8FBG8HEXzWl+D7TILP2Qj26++3ERSuj7Nz+j9zpvM2qXP4ASW9ExIagoS2QkJdkFACEqJrYRSzj/iCrW8LvacPKV5pzesfVoIS+wr/xF60EnvJnti79Y8IojwFoRqTEi7yX+VP/l9Y5L/amZd/6ZOXr1G4q4ThmjOxr/VP7OusxF62Jzav/6tAAX29P9FvsIi+4szBN/rk4JsCE/tm/8S+xUrsW52JfZtPYv86UFzf7p/Yd1iJfac9sSH9u+wlbuqApd1aUBa/2z/V77FS/V5nFr/PM4sD+qs+4d/vGV4QkwZqoVP/QXzJ5ZjDzfa5Ajltxhk2cHYCznA4nISBsyuHEx3NcH68OW8f9cQJ5s0bJ5i3jzor/E8Yhf2Txss3eVb4n/Iv3o9ZxfvTdvJn9J8xiT0mEfs3/sTuWMReU9KdQCxOxH5WAb3/t4F6/3P+VH/eovoLTg38RVmjNKuS/VJgjf5l/8Q+biX2K87EPuFTo18PTOyuf2KftBL7d04D+KlAom/4E/1Vi+i/d+bg0z4V89e8xDg3S9fcqjiJE7W3uhXfVnfVbHXLctroGG5x/x/synFH7cCTPF5sz+w2+xFH8GZzmnkEMEVMmnXkR3jCrDCg/xZFQ5Q1pwad1P36f7TNsjUBH9B/m2eS8qP5Eag/v4OC2DO7Xf89LzIqxmPQ7C5vgBQCSMHfFVFf0TMjQ11juPgyRTe+tx9Tuibn02/Xf1/JnkkPpQfF+RjW+kMXdNCNibnfUwyI/B5viN9WOFyHzP+BF1N9OGHYbZswzI9ND8wedsxImrIyZh6BKWl+cRMqxT4wC61gQbj3bKWgdkeN5Z7D2Yj9VPAD6bj+n7EEOkE/Inh5Jk1azKbxrk58xQnqLxAADOH+m3EPKIfwvZWd0wNzcbyMEyLn+B7RrjlNXBuauPJiao6v7ey6o8Zzeez/HqCBh8Zz33h3sab/d4VHIfD+F0Y4YkyhY/8D1O/WyGXfMWrIQUd7EDraWf9BAna8h5FM3hgMuHvn70SgFxTs5B/0T+wE4L0N8I6HGJHE6fnXinNoYm9k/kaxT3NGc4eQh4I/p+9GhbQI/E/FRDq0EaTDrSG9rA563IMpnxzz/UntC9bJMXQeiTp7Y+VUuVRZvh+nXp6amTpz0mOPda/wPShWcLP2EtP1uFdPuHE6jkgxvJktb8/mLp1JIGH4utTt/qApiLogXHYokbA7THkbY8AO0wRQxrNMcaHf9FHtw8D1VfLfvFyuLC8V14Ajtc5BluM1e7fyXlPEul1tXC8htU74MnA1dZ7OK726qiUBYun6Wq0qDtFdWCtW62U68eBSrQJsVErpfxd0MWGz7YttjmO5FYcHgMKnxih8QWGUtzFGTY8AYxvjNtu2RcszwNiuuMu2bVHhg7cV3r6o4GmcWVo92K++lGuyrY22QEdUPORCgCf8wZN28CcQXOx3U3mjUifYPHFM1YsfjnrtENP52ePYbOQgfQRJm5vb3FvDDDJ9drSi+sEc727z4cgzUyk1BQGbyHR1j29mmklVB8O5hbokW80kppAzcwOZfwYHnRm1c/pOJCN2lAnzPAQ89gKv9PSTXs4nkWE78ceQeF9zHp2FoNo1od9fExwJnkXwAQPcvbXMLC6fhHN2cjRBtckglwNyg0Au68+/qwjvGMqfCa38hzHRzU22gDoTMfbBfM8uPGNMmTIbC2PXSoD9Q3/4ruIieRaKi2j9zq8QTlu09YU3bgtX0vXKqnBgV25pSpV90dmbXPiP2zzALR9umwM2uVBLftB2Z2b2RY5UgH6lenCVN+yQBy87GksexmKDudhX3uwCXN53Ts7D7GNLzrGyhyv5qApHU5UcTelga+Gne7OqdeLbQu0mNRKRRk2LYcDFVeFmrBHRBfQ40zr5nZJU0ZlxHkUYRZdU0bJ7tK/OlhW3MZxupKu2A3Dk5gEPCWl3NAfu42+Me2SNQ5L3M/aj9Ps2DQ9efozikvoEmPIfHsqO6t1gFxRehVT4sI4IWI4o2Sc6yj6KnkcCsoMhOwIgcwSJZ9bgnQYxcWCWBGjBxBkm7gkzSmtl4XhLh+RtlNbdwtHsDU2zLzTNvtA0+0PT7A9NcyA0zYGQNPO0Tok0MyFpC4wOxgjH9+bQfG8OTTMbmmY2NM0toWluCU1za2iaW0PT3Baa5rbQNAdD0xwMTXN7aJrbQ+vrkEzT0NumGCZtQ28DudkRmu8doWWRC00zF5LmGG3ll2Wxk2h72eI8wcpS2NmU412hOd4VWgojoWmOhNaI3UxzlJ97mmrEbqY9ys89odKIMUaMMWIBGHsJI84YccaIuzHE1ZS7ebJ0lJ8IrFrnPVrwe+m0RU4mwpgaY2qMqYXAzJN7SWtiO9Cy2A60LLYDrYjtwIbFdmCDYsuRN46lwd79ngdC14eu0PWhKzTNfGia+dA0D4ameTA0zUJomoXQNA+FpnkoNM3DoWkeDk3zSGiaR0LSHCR/Lzwi0lsrR8gPjOILwhfMG26Q/MP86ewjvzGDTjP+7dA9Taq/gO4YC5djO3Qz2oPk5xbzzddOMz5YynjuVDyAihEfRGWEPOkMqXT5lsU+F1yw9B6R5NHVVHpO6ADaub3iRFJcuFtwwHyL2qnGdpQv932V9osdj+GMyV7yQw4Azuw/ufD3OxIEvNs82lSxrjjxYkEAEsNhAOk01zCAWFjxZoBdYXnsCsfjDuuEWvPEZnvhSyBxf5CUyZc3iHmUWefLaoZuJu1KJ9UUwEwSzAmapfpYu/YbijVFxRtHtaVadWl9bQ2nwrvnrxfXSsszKyvr4ujBe1/lsOb2Wzyc0nMVpHPhOl5ZR1s0eQ0gfSngyHdxkCsdKgxfHXw0cQdv1uvgOZoOc25GHOQawSl7nEKP5B7CWcR2umiHpgVjaXEIlpgWjI8nPA4QjaiauIkQUDsN1CygDgBq2kLlp+5L4mU6c/rXE/Kxvxrv+MSbShMn+b6zujhuJ17lO1d75kBIl/GaPHO7KF4bUFusl9ZuUMEm+Uo0nnisVU9cL1avlay904es7baJ0yYVz2NRpE2otcoyU6yWboo3cfyPeqPUqIkN28YSjsY3xF4qrpknW4HGCKw47sydK13V1LoRlD5vsm/y01m8Crww78nF0lXcey2+dJQBTqBaIphLXw/czKmYmzk11ppOzTrm17okzTjeVz4USz6HcpuxAPO9EfWucbAgOicM6tGsbrjO0maPWD5KG0DQALTP3gJT5Y5HRvg24+lY4e244pQ9nd6U7qc7RMyD7vk0Kbo6OmYP1L0CxeJ6ApqPF1VIufefOmWNUsaa8pwayXSOmWIouBiZbJvdjhNS420FFQb2wtlU07v5GpU4Xpqym2aVEt4ABfLYH28DQGMfxHjblRdSmPobijqSSY6JvLqTxpUkukd6difNByUcdHW+Y7qH6PfNikOVtSZQ9y87CfFKmVFyx9SrGeE0MjjUNkaXBwvnkdltlCLPpUDKcnrCJfdJvEHJxEVTGguBObuLOfWIZj4VkcDLaoxX1n99QPuHDqsl4qM8Ynw6R/xk6WoRL2qUzgLzPDmIzhxh4KElA3aotohHPVhnl/idARSbnjl5cuqc1rUsSHDytL4wWYbWTFxIulhunKit4yICRbD1Ms1YgkJvoxFO4ENsY+8oit3seP6FOAIijnvf8UXca6pZp42Yq0UdkEq5okURSdAVSz+8AhTHEGIJX8RKkFhDQeMfdPvMldra5dpNzl9HvVRaPigeBVo7AtP4rKbc1JQbWqy4vIzn/Koz5y49WXiycNR4O3IIGC/hBaKLuJRSn8Kz3M5yQRhOB/rS9dLSM3NofycJiq1/H4XjspA9DjMTsETUL9AwjzIerxz1c7EZRzxz9rqXSZh4nQ40VlCK0etlyEYH9FMKD2rq1WIdRHetYDQ5HWvUWsToUadTbeZES2gmK8rqoihj7aJVyFQOlInERQuPAolDzWJd62oUnyldXIWsomqlf93b1cDot0Rc91ckHG2Q86h5+7ECbabzgP3MY+u2buMM40P8PJKxn2k8zi3gYxoeHzDBxwhMcuxJ/j7Fz2lo8f42ns3puA82UhC7mXi9CLuhObL7w3jgox0m6QmzheYscMMKzurj0fBoYrqm20QkThT0cKTGkZpXZJwj416RSY5MishhGtcbkWmOTJtnD/fi9vZhGl4bQH0M1GcH6qSxdQTJ4jbrY8zlcWboYYOhSLaXRmcY+KgVOELT+TheQSHhFqgBTyGN0BR9UoLb5Al3gLZNZRhuQBQMz4BJoCb7dnhcXssEwk+64Qvo0tBHWcO3/qZpjuhTKGyk0YQ3E84soCD4ozZ4e8GGTwdlu7kJ/4+jHoTg34QzdSeYfxnernPh00H+s4Hwm/QZY4xcEI4zosrkkrRPUbvyAs6LwtcB60s6P/vXaPdvO502iv1cXU9mZVJ42iiuJKvwptMcjrmDFkKG7CGFGKtOjBVHxhkw6dHOS4rbZDMDA7MZMyTriFHF/lR622bS3mazFIhvhGQdMaqocoQ1aDMhiGWE2I3LwNyI2LjN7tAZulsoRgWAI0k1LRxMNOjJ4UbrCEgXunGfjNDtTT7yDCCT+1gE74YdEvewRqJ4Pq4TfySwPHY6ysOrMv9/vEzcZhJ3ZLfRjtLIZFrFu2txuSueFtub45MFtS0tNvli2Cg/9/BzjJ97+YmbfOOe1YCzCIVNMHi/ZUKgidcx63W39Tpqve7hV3I/sk7F/sUr2l932rrU2J3phsHwmnStg+14Xew1dmNf80SlVi8tc1+HMOfpxocoYmsqhUyZlz9Qr9jjRCbqwYqrIpLQhZypLlXW6zjD1HG1vFYHangcmhYrvXe9WJE9OcUBUHjv1HW6JiNertMlYtL5T0lkxDz2yTojzeh3bnJk0wRNXi3jDBJfZBGHNM7RVVhVuo0LfymLCfwV+e+YOnth4QmtU5aJulSDzimMJ4xOY4+IFd12AZMRQdRTB5Yu1MpGh9Do3Xc9aZNK7EkhK70CPC9cL1bPr00J0fA1HQuaRoUlJOvbvT8IhWyCiRRTUEJyoXfCtymSAXukGW6NLsyubDd2X2VCYriRxF8Tb5MDyComc5QidaW7Lzp4E4OA5EWZxWauY5su+uTBs0OuX3RmgwcQXRdtGck44cwYny59Lw1P5qFOzNQv1Oplmk4VAx6tbIUY5093LdXwksuJxpkSVoTkSrlaXllf4VkycZkVj/fEjVUdNNTQYhfFZ9LAP1sj9OItC10VcTNVYzyjzGnxknG5m6dboeeI+vbC9XJ96ClD358awqkzGjIPrZRv4cF/SOtaaY3O17vKyj60ito+VFy7Ri7s9SGoZ0PFlcXytfXaen2oXlopwsB2qU5IQP9aDZEataHF0pC4Wm75gOd9nz2LIAAS9gmjBvYuW5XODEwTJ/Yw3aiAZkhPxSg6C7GOorWHxZZrN6sLNeFQ6JyaIOlCZLRxHQpKXSthTQQJ9jRqWFh0A9L5NZqE1emwOzmkp0EOiHJQGmwZsiCH8TSAh0eiSpzi3aeJi8Zr+u/aA4eS1lWIxi2n8uRm3JzcFAPJuHmL6WbHpKYYUHaZU6XeXult5mU6+/l5gOMP8rNAzwGmE+cBqKIf5qcYgGbNdMTlOlvN3Iwz3kMcfywjn5u3w8R7hJ7DJt6jjPc2/p5guMmMfN7eHhN/ip57TfxTjP84x0/zc5aeeRPuDD/P8VM+pw+f8/xc4OdFLo13wddD+rs59D0cWoSvh/VF/qrA16P6CsE8rN+AQfdP5WGEeRq6BAXoZZzlDhme+XNomm762YWHJkzvy6XQ4ZQPGNqX7x2DXwC8gHF4YlU/na1wGPr/h0Vw/rAVjMOgNAenreAjEHyEg49Ywcb9ihgcs4IHx8T9Oxg8aAUfheCjHHxUnByGwQ9C8IMc/KA5csE7Rx+gHttjOHLZjYfeCfhdAL+L4XeFgN+PR3Ux/P4Q8OMAP87w44Hwu/RLAQK/bAn8kiTwy5bAL0kCv2wJ/JIk8MuWwC9JAr9sCfySJPDLlsAvSQK/bAn8kiTwyyEEfkkS+OUQAr8kCfxyCIFfkgR+uanAD+pXfAWuQoHhBe34dlm8YZYfDkBJ6k9kjZAeMZ9ipZpH7L0hsbsReBsC2yuWXN4i2lbB5HIX0baKJpe/iLZVOFkPtkjRJmP5mMyYrVbKyrJFirZwB2VcW9WVNeooRduqcCjNEni2qhxKww5LeBavu/LdIVKzGYJQ+nlYwrNS2x8qNZsZCaXdc+QnmqA1wn2AHc1loM15h6l2qvnWDQr4DtDzdwo9n35J86B5TEwOEU26dJPh0YfEBx6ri4AXOT2c7y6I66XSdIJjUj0OOE8SzlP4+Qh8LtHnchD2kVDY+32wY4wdEnywNfCj3uD2rKRN8MPNslJyJ5Z2CcIB7pdYLFRiftiD94R9dAPYR8KL6apbTEdc2uYA90usqZgCsZuKKRC7qZg8MhpzickCv+ZOLBa+FgZiN62F14JYdVerQHB3tfIAHwwQxHV3VgbDCyIQu6kgrgex6jZHgeBuQXiAHw0QRNmdlaPhBRGI3VQQ5SBW3YIIBHcrUFn0SY0WKmu2ULGAFsqC32HCDwbAP2DC72FGHgRGAptvC8FIYBck4IPCCakeCe0PTsiNMB4WIR8uK26EXWHznjfzvr+lvOfDZSWjPw1AA9xXfoYU/0U8OsMjJmaL2SrFDPriHLXFRNgnFmM6XDgxXw5ivhzEfDmIeXKwlTvf7nTkGHc6g57pyDFHXRwc9c3PUd90jvrm56gjnQcoZph7/M8IJYwGKqGBsIsRdoVB2Mu99WdERQqXwjgjjAcj7NQrWeHU28Ue0l6WY8SCArL4/jbnIPExhBPUcOyVbUqNoEJQw9HYjqbUCCqQ2j6Kw/HSHmsvjG81PmBBW1QD5Cio4/goH5r6fjYSzakf0KvWANtnkqWGw/PpFyM41tlvwEMvtoeH2TWpjbSN7duzBRP8CIEfYfAjrsYkz1lIZLv0VTYnEZSu+MRaMmB9YnXaip/D9IlqOewqGzOTAgiVfa8/UIam+SK8xJ+w1eCEwYFnDDHDMUbd3kdfxJeJIzzNvcs4YTBo0vGH7tHfS40GzoKkcVoybgs64g6KuYMG3UFHjaA10UGQyVtBR9xBJq266CnIiFaQidigoKMylBXkARVzB3GKGTrkNOvZwjljYraYHZ4tnBPnqC2my7OFM3DcLZwzxs2Bu4Vz4hx14bhbOGeMOx13C+eMOeriwN3COWPc6bhbOCeO1cJhzJ5WWjgDIXQLhwj5Vlo4I4VwLZzkr7PfcNeJslt6R1aYEdzRgyqj8pMMQe4jijpAHiXCNHbk1WNK+2SWPCJoJ0xaeDjgkzBme9k5ROWz7aPo0qySF0mM3CDoHHV4I+/lvCaiccs2nsIWE4dYzPHmsDmmil4aS2obHQykTWbSDJZmMDPxBHlgJwRN2sZO/hboZhK78kJ0juOFO8U2EZqyElFy/SielCEeiMG95V25f65kusitJmIKohsFoTvFMNsjur7c7e1ATkJLxBJDp6A2funKK1H46DI/0BXrpxQ1ktELZttmcpFmLtIOLtItcZER59cXhGsLtpp7iYbMn/BQSQuRjhqvguu0zHWauW7PXVOvZXrGHM12wWzQ7SyTf7sfT+RNv5eARtwNee6cejXT7UoISjQwCchHipzpX8UsdfErnjC3pqYz/f6MG9IfbxPSH29rLmpLjCLNV6w0hbColm5y1NIBrqW8LYOeUi0dMGtpzFlLY6wYsY3W0oxXLY1xLY05aymepZQxa2mMa2nMu5YeEUm2Xku3OGppFmtplmrpgCkIWy01xeCoH7F7qqUxWd9jZi2lItzmKMKtXISDXISDRh9KFOFWswgHnUU4yLwPshQHWy3C7V5FOMhFOMjSHTSKcAgY324W4SAXoZW4rQiPUztqFOGgZxEOWkU4aBZhzlGEO7AId1ARbjUFYStCUwyOIhy8pyIclItw0CzCB5HHnWYR7qAiHOYi3MVFuMuohdD8cjub+3FF3ZQZNgtzlyjMbWZh7uJc7EpbuK2W54i9PBNUULuAELzqxquLNe8OQkfuaxW1PTMKWR2Z3MKFvosL3cakVO6d5Py9a3oAE0pS0e+CohccmKWfpNKHiJQAS1hgTVgiDRlzaMie3M8oajyzh3Rk2JQv6UivU7rIcJ9NTXYB4y3J2hJwStAk5cCspERaxnfz/JA27XNo017Wpv2sTfsNg+DUpr2mNu13atN+zu/+tIXbqjYd8NKm/ZY27be0abBZVmNCm/C82wOmNu1nbbIxadMmdEPfL2vTfj9t2m/Tpv0htCkmtOmgQ5vyQpvypE17TfnatMmUrlub9t+rNu13aNP+sNoUe1mdZf9f3PL9WFqeR78ZEOMOu6W1pT+yW/spzfQgNnf/9pzmXdqlZcOPVuw3s7aD1+3uwNEz5XrDtnU8cfpEsVIhP1ZlDp0jJxbrjbUi3upsuAEH+LfGy/VT6Marxcr186slIFeuz6/XV3GfGrmK2k++xZtuxR7luqadNjcsa9paqbG+Ji7u7ThNj1QDfi9Y4CkKllBulOvlxXKljFuNT1+yPqJLeFl1tLh2ra51iM1gMQyavK21ny2umjcUKwta/+mTpaVKUXhRspMhkO4UEHQlM7p2VkEg60uNGjJ9whQmSM7YkK11luuW8zaI4mSxUUTZzFSRngoyKRUrwpkT/U3rWle1VIdSo3RKkDmxL3IGUiqCqLUu9DbG9JfJ41KvE/r8+uISI2j18spqRZz7q9XXaRM1ut8aLtwuz23yDNeQI07C2NZt5gEijUueBetXy7eQdeGXitHnV43LfU+fFYcQmPu3Y3yvtLQfXZ1YWirV6wAu/G5jdQHS40TOy7eCa6et4Ha8DNgFftACL0jgB9Hjc6lUvuGVREFTTuIZoNIWeguzoCUMzIPWa0GLni6L3ZbzCxPnTkxp6akrC1Pn5mfOn3tyburE1MylqTmtg6721qJT1fUV41pwkpQ4HwHldwn0a+2aFn0GqUWxmKRd+TG+4jt2je/lRkWq1qmozkC9phuuTa5BJHhuQyf8GMcLaAnTtVfrFlVkrfY0a6i2ZOmxXq6fxWvJl9GPlap7Anfxk5Jpneu0+1Hs4VRvFNfKpCOJ05fMV0u/oyCPOXSZroKdELDA41LNfC1XjVcNd/7WqsDdQem9gGeart6WNgskZs5dmpibmTi3oEVmzmnt5y8uaLELFyfPzJzQEhfmzi9MnViYOollsTA1d27ijBa/MDdzaWJhSos1xM3a/bJL+nxjuVJenFgtp//M2wHXOhcUz56I8tkThhuuwmdQuM8HNU4VGOBnxuGIa9/hGTUdcXOeDrlRx/HQbexQ22Y6zgqH2AyfOaqwY2zW3Ot5wuYQu43hDIdYxXSInWEHXCN+lsNP8/MsPXeZ8faLrDvZIXYPX2G9h6+w3qNfZvgrzJe4wnqIn218lfVO/h41r7i+xk/hLnuIr7Q+rN/k5y1+3qZnSn+Wn+/j53P8fD+n888ybdn92VH9eWijkzkMGc4YhyIloCXtopaUDnp+5I6axHm2repVcfrDXLceNf3vOmhOoS33IxGIjo/R7l7apB+ZHcKuzXhbYUAftN212W3exjmIfRaA6AMI5/3H+vTIXFZc2DM+cuX7o3bOUhDXHRCnB8T1+MSloV+Gm8Q0nDHphi6OeV2bmELBTV9JfB3SN3NcV77DM5Gt0N3DbKS8YnGw+I1REFcPHROB6xTYW0vTZFwk3wu9L9y9qxZwKsG4Zgx6WnhY1gBIbQcdhYXRD3H0bmf6/fpI1rxOd7wt35/vQ8aD5bknIG5sg+Wwd4NltM83rlffj9qU5lMZRMZ69QNSYI8I7NQf4LMx6CNPwqLCxSPf9HQSBAR1igTU41mQaUArWGhD+iEu96RPud+zZkRyWfUaXfXX7oprzw2B0tBB655SwKm9H8erWPvNaijm9BK425HfNoFwjwcI/uGAuEcC4h7dQIVL4SByEBjeTAd0JEwmt/DAZWu+P7cX4jN0oIkVnz2mPAY19GTW0O/NlP1YbicADzqIbS6kxBuT3J57HKC2OUgOmW8ZID6r69M8ufWQmJa1JTfIyeWBUA4IRaASR/G0bCnRPnobtiU9nCsCxg5KepjZTMlw+Z12NjImG2d4lvghOoJkBGr4yWzKujRnXMnnmKmHIYkRYucc/Eb18/DbYWMtS2/n6Pe8jcHdufcB9i5i8BwxeJ6yl+Ds2HDyo3Zmh0xm55jZeT5qBZmOANNbgOk+mWn6jeRHmPWEelehCZI94nWv9bqPXrerLyqZPawde/L7ceT7dES9CH+X4O9ybgnYx2OqIseUBTDZT6DJFNb7HaiEwgi+01dXE/q7cEpGGIxeq+Yn9Hez8cfLb3ZAIlvGsDkWTR22iO9h5VDyWYCimnrABHHoNbz1564CRNZdUY9FJp8Eck+ZunZA8FwMqF+L/vUrRpw84OLkgPmWz70LIIZcnGQtiGPKk9D8LIuKMLvZuCHT3ezIfD/AZboPqB/kOkInytu4sGv/9tzzAL2T64eT56wTGvnSiS/FqCHUPFo3eIowj+bxKUflOcjcjkP6BVvlwRPV7Dx7VYXh3Hei5R211Rzct2bPgCcqZiND2Yg46w5kZ4+UHXucK1tbIFte1avAmbvE13RHoJ26yu3UId926jol2+tTT8pcnfCi+zPQZOFNJb0Q/rRRzWx9qWesdlPEoXPMYXh1KWwiN4XzWkfMY8ZS5D9yCHJNVRC+3+v4XpO/54SPy6HcTyrqS2rm0FC1QLeNVSf70iokS/4W8PZuekvOdrKTxOHpu+3wIbwckvixg5akDxU0KEXGo/d3GyCKR0ftM+2zCe6ofUaB1xsoA3idM1OcM7lw5V0Vpu4ocHxYvD5ovY7T60H1JSVzuGD4+BsG8Cb83YK/2y6amsB+CLBT4vWY9Xrcen2YXo8g+RSTT5nkn4W/98Hfc/D3flcSnS+r2YCbp75tk/YJ1T0VF3m6Lm/mFTNIMyurFZxnokk5Y94p9rRxhUVdvLQyWxdqNsp7Es9nikpM35lzVcY8nseclTRT2Nr0lXkElcc0ljV1da/zfsFTX9ZcQ885AIAXqYjiHGSfVnNPlukX1sortHPcyLlarN4WpdhrxkmEY7N1acu0RgePCXCemexZFMUzYcUkJ6UgLckAIi61aBxwJb6lU80SGMWXj9He9NTS9eKaDHvC+NZ0sVFbiuw8aYVonSKa1ZWPSOimfdwSinbKDNA0iuSciY3yXVAZJGg8uYBP5oIIzg1u+pY5PGN8a8mqKBHmrkrb9Jkh3rPfTfvDZYbmzQAoSHxnhsQe/c46lT8n3bi+VrtZNHOZWDC+ta6rXI8Yu7iG2tV9DUq2Om+pR9pSD7PiSfOYugCVdKHbRrdUT78RcZ2O+v+w997xbR1H4rjQHxYguASLKEpWoVVsWbYpSpblGrNAImU2A6QlJXfHAwmQhA0CNACq+O6+lziJHac6TuI4vTu9Oc3p3Umc3px6aeckd5dckku95O6S78zszivAAwg6vu/v90c+/BBvdnZ2drbNzu57O4t2hU+gXcEHw4N6pySk96u8dNA5bDsmHq7ygRk2LzVz+iHjXaoNcmvVMfFzq46Jn09Pn7xAh/fpcJ9+9juOhzv9kuHzCv28Sj+dx7p512qD3rXaoHepNuhdKuuY9mTVMW0+nn29fj5Gy/NX3Rt6tvX2wJSkVsH0/Q++5gHjFd0hee6GxeaTfMb2bj9tUSiXy8qMCfQFB2PxqDRMS8+AeRD9ysC8IffoA3j0ugg/o+mgl0S4fSBHupJtUpi7KkK9ot4oY46tipa+KL+7xnVjjAPt9kCHPdBpD3TZAxvtgW4r0GqX/sQdfjAIN9mW060sQics1i10kNEtcovaWODgOVRqqYKb5LaqzYUgl7VNbtfFb7NQveY3vYL57dSml3ptv6G3YHzI292pp+Uu/bp1jUqPk3srjL5YR2P163IDE+PwFJZckk8seeKu4ecbOJ/vw/x+GjA+rG4tC1BWu+TxHv5KzA+W1gnKg77m3QSWwEGyBI6DVbnfJOvWHqLsFPuTO8FQsiq0x5XqEuBzqeaz2ZXiUqC4rIeNFDeKy4Di8h7eRHCjuBwortQU57hSXAkUV5tnhd0orgaKazTFNleKa4BiUFNsd6UYBAq9sdC3w5ViGCiOaIpeV4ojSVx6K4pzXSlGgOKYpuhwpTgGFNdqip2uFNfCShOdMnS6xI1D6gnzrLJb6gmgmNIUu10ppoAiqSn2uFIkgWJaU0hXimmgmDHvMnajmHEG+3Az9lXoLavbRdP5B/c5NV08SFsKMt4hH226GA7ojni++5B0G4hqZ0Lid0Ub3ThhRAuMTEut4LAcAzH3uopZrZDd8owwP8WNr/t76Ike8eotpn0eLoNVmIU5uiw20ou1Er7izUwCJqVj0EA3zIDBCcBe0BC5ujb9Xbl416JXosNgqudggjcxnmuFZDPcRAbLxdUSMr8xezaVRT7ow8gyGwzlBxzN7hGwX1NZcue1vLJaySrvWPQq1czMFDs6XCqumCGJoen0jVYZA/PkJlddVJiBWLqVEP2eijYkPr6Uy1vU4ZVSNpOjG/3M9UMLOf4ySUyTue1ILg+lA9Beh4XM8SVYRcSP5NOVSrZgj/Uk8U1spIKXvKJvWHxfezRbUBVkUikPaItZWFTYnKHb3oRGIQ6rREVI8t9rzyZKmKz2ed46ni0t2qO90/vhv194rrf6yH4L7BdhU0D7++aNzGBwNZfPZC3HZy0ckZovrpDn/lJxFdoIOl4UvyzIFVbVCi6E702xKeUQkwxpTJTcfDkcZqEHK+XjSpUDnbihM6oUPWT2zHxWv2pWGJsdW+VRjZhDo6Hr9bP4wUV5dTl7PFdZEkGE8xURTKpn4CzdoswfCFBoIJ8XhnZaZXcq1w5p6BZf/dWH8mlW391xBBZ/ZhsI8rKmPC8b5IANoaij47ZhyNk7N09zy0CD6lY2IzvskVZvXVD9ENYIWE2zw8UC9BAFH0nncJkbV6FxWNCZtdRq4RQiphAmQUSFVcDdl1fLHPYUq5/MqY4zoFYMnfjJBdUa9zFaBEvuXoWFbEnVVV0n23tYNW3/u+3/sGc7rzLYx/ZFIlLKruTT86qxI0lbIARrlCL6YRbZMyvsgW0j8zvPIer59Z11BxLJ5GRSF82scyUcD6h6wm1kgurcWrIOfSMXlYqwugF1aHPpFUUH2GZIucPeNlY8DavyIi7gRgt8izb0WLzXlZzNzeWL8zdCP9Q8Jxd4Xe7Db4h80O6waC+bvR1gS0fCIq44n8NBR58V+afSOZgdTOwg9BYaQWaHFC22yOmi8IwLob9TQQaRTBaVur5MwyQFQisdtVoLsTVnj1ZHLJCH0lDStM27odoPcHPi1qJJJxeIpNUMstdztZaPmXgVjpph6+JbixUF9aLbSqnCofml1cKN0DZqa0v5W6c7d1vmeXqepDnE9OsYw2E0WoApUHkYtHznZfQsKARDUOkw+fC0muGJTYR1moEKf6TTamImS4l8GbqTdlmu5wtbNDl+Cy7QNCda1FOrnepLN1odsdjGQ6JNt7Ftr05qMmuDCaZTGusiXh0FTMIKB1qHs9fXc3B+OgikERMBAUMF0CXeAn3KhL9j6OBQu/2M0EOXkHQkdsSwBiDdJq03U+YAMceCf6EIk0RI31UiwqY3Qhg28/PAGqK5luw3l8BISKTnYdZJq7qIaQTThhZhVlyBhgxrAEulq1BthxIetDs29lEN89eIC8o9aYgaGYZzVANHVHl1iOogeEMxh74EPQNgCOEMKQZW8LtFKl1wbnUBmwMMAvxk0XR0ag7/IOhA/EAutFIsVxAI5HH7D80GdRdyRkRVBlX+UJWr1Qj+jmohBQZ0K/iWoQUE/HB9tFkwt3p7DQqKEbWQEEIOTB61YIgJLFPL0p3QdiemgD8DNRqCB2kZ+lxLF53pyAEoXQoNP0ScKxAxhlfL5DdztcyfovoLOMsGiwVq7xA0M7VNGDhVckpNr+QhVQR/OREYI5lVtBJTokWBXBGxEtR9rpSdKGJJymBKQ3XidTnqyeO0DGoGqA31BCHjDA1ny/PQvmonmnA2jFAYKo0PTCNo+dVlrRYjBGqVKCig9KBBMPk0JUi5ISVQqTvlQVU7C1URCm7gQVWx0gltHBXMHkeVTDoQgACUNEIPLWe4woaTiFaK9hcFlSIvLYKVIg2plkrRPsKiZhCJhA0OVIr48BG8Wrg5t4I3dhcyeM+UdkEco+ZN548TGoqDN3ory86H9Hp7XjnSjQAGq5zs1NYq21psRwvCYVdvpxcHlvUgHbFXTl/t5pkzwkTonDM6YwvF7wu4fh7oMa+mMugzvbDGCv3ZHm+4tupwmw63a7rqy4e6dDx/LsifCfJGrPNCiNqN2T06nj8T3Kvx+3T+F+rwRTr+Eh0+pJ+X6tIchtBW7Z1zq96m9Zgf/fFHhSOa67imY2+Zk5o+qZ8z+nm9fh7XzxM6t7+F0D6Z1qkz+pnVzwX9vEE/i/Tcpz/520Cf+IVAils8BGyQj/dozJMY8wwG7kAgAMAzPRC+XN7JEXcx8DwGXsBcXqyAffIVHPUWjnobR72Doz7JUZ9j4Auc5dcxy6PyG0z6bQZ+wMDPGfgVA8/0auBOBp7NwF0M3O3VOb2cgVcq4HJ5LwA9d0z0HOAPF0d8fT66EMrX3wGEIWsHGmICfRvpS0ivcSHeOvhij5wzUwV0qoNGWM73nG94bOnOYbhP9G3TOzpdfZuR0UX4c7HlQmJ33DCmaAPqujuNQ0YfBBeV66T4FiMX7zYigx3G/njQuDHuNfDbyTzFLsdhkUu+8fsPr2gBfSjgTTXF+t8SsNRQwLKrgJ2yUi0fVuz5ctWGxm0tH7l5iMlTPUKJBzEbkfRRdUlP20n7OyCpVHQm1kAG19RhYMgz5GLQ554U97i9xgHkMAu9pLYXeOTN667kUG0dYy3NyoBLKz6CGZwv/64mg7gc69EvKgB7sBd+1TXI/4D7k4por5kIyM9RH86M+PQurEHXnvl7NtGnxDUpMKrPPaoBs23yH01Jd7qx3C4f66kui0mhbzRuQOGzxre/Z0Y+zqPliNDv/r5LFH0vvmOM9OI7xv02ubfKgz09Wm4Zd6Y8ZJZhSD7BydbnZOuoiJi9IkYiJpO/qWaylmwurPrb5RM9DuR+k/9fy1s9PVAbHgfTTcD0Ns/eOPSLDZSzevr6LrXlZMjbVdIG4p9xZU8yQyY+t0z2N59Jo4IV5ZMfqZyba+6UfIp7S0Uob26jCLBul0+tJjX0p/eOEevvWZZPs5VCc6rXPJb8EYf8zWe3Rz7d04OOXZV6uQzGSQjv87wCtPqzPPEA0D3b40J42IXwOW6EV7oQPteNMOZCeLcb4VUuhM93I7zahfCFRDggX+RxzP+PqtUX/SH5EuQWQx4tUG9hqDdk8VJi8RhkoYh3cmJqrJ0uLPq7oUN12PPTCQ135tvlyxpoMnUF/cs9pGHDGIeK7RpHvq+E2BEfOZFCRU1vxd0VtWtUA0W9Xb6qoWz+nivkPTUUNQqwXb7aUz26VRtuqs+9X12EE0PCg/I1DeRwKwCmOle+lmrGpbVf52HWh+XrGxOB9G/Q0vfpTBT7XfKNHmVcNMzgoHzTw5D9WvnmRqnOh1S74p3x9r4YdvoBq9O/zuNgthmZLci3orK4l7VlG7TPvZ69wlT8g7Wa8V7POjLR3eU8+XZPT0s8HA+N7MRuOgSS49JlZ7dnr/okwKcpr5Dv1BLp+GqZdoJMOoklkU58UL7rYdTobnmfx81G3GsZmNSjr5bv1qK1AYmzmiCVpzaVJSCmn5TveTiVXX8QTsr3PrIMD8v31eu4bolsttRh+f6HmbJHfsB1mGHc/jpxDYqwRX6wjiAYe6BubAOW18gPra3klW5XyVnDA7XqYY+RH3Y0FCWG5vJWd2y35qrLWYs3YHrrbyRdyIVHAHh4cR45bLKwho19YtzpMod+xIMpd62RUk9UJ+RHsSF31p0hP0bR/Xvlxz1Ks6CecGiW+22aBWTfbNp7n2iK8wByvrKezmoiw2GdYb/8FGpwUdOB2uUDjrkMVmncRKPy0+5p9mKaJjSpMMs7Kj/j0U0ZcZgu619jZNxY7a9m9eeuNNLysy4G+TnKlO0yTVmrKIl1rzb+3jULZfOfo2z+2oz2ryejRgWckZ+vtmGO1GkL3HKqLQQqQ7v190WaLY7ILzWay7TtYR9p+uJUh22P6+Evk8XR2EZU2vYrnnWagfvlV9eb5B/lg1jPX+PGCkMdfc0DM+eIozG+qYj6w9CK38I8Rgn8Jwv8jgV+V9ljCH5PYbsAPGhu66AEo90epYxz8vtIc6xG5kc+qx75zw3mNve4BlV3nnyoyabcIn/YcBasF9sg88vlj9aeBeNQE/buvVPVw3Xyx2unPR/Srq0KUfUjy+PyX2pZGsQSjTCL7QXAdk9jtspe04xL8l8dc7XJs9n5ej0Z6rrNy397+PZB8/Vm2jM/aa7qOmz9mkXW9sxP/7w6cuVs6tN/f/iV4dIBNdvd8mfc6WOOTn+tc3Ccp+mqNzlqNbRJeaVzl6OWclj+wjHgQAKr7++0S1C7IrZKcKH8j3rDtlX+0tNj2f1jqsC/brLAv266wL9uusC/eUQK/Nv1FHif/F2jGbNqO+RAY+qYc39cJ9rfOFEUEpk28/qT+Mwk/9lUQRyrqN976m3D768T10DZH5V/aGx8uJi6rh3hMvlftYyECtO5yZr9SPP126j8b09Pj2O7zG7vHlpHcfbJ/1lXz2hIXa9nNEzk3jOaTmL1jD+ut2eckH9C3fhYby++g4VHmHYqEGNLuQ+XR3viXfEOwNdbCAXimMq29Hqcd23OQ8j56nrzU1MZDpsq/BZvMxs1PfLx3vpml3tcwy2FJ3gbGVP1Yhuw3CufaC9JQ/08Jm/1Vrd5A326EdYYoFHrza5j8rZHkNte+aSmy7Ff3l6T8xoafY98shcN3gbvJZ7itRE2ei/xVDth1QTmIHya1yVrt/cST7cTXtXgvcQz3Di6vZe4w6v2GYlwXBNOICG92HXQPsvrojgn7zMC1enH3dM/Z630Uzr9lHv65zab/3Xu6Z9XN32/fL7XdVFZbSpAqxjmrswLqAOsneawmWaP3NzsS4YXNuq5dbaVD8sXede/O6terrzYyi/s/hr8JRbFo9wpXmpRJNwpXmZRJN0pXmFRpNwohuWrvHXm6J3WHK2Xeh3mW1Q29A6p3cHj8h5v0y/iaOn9aq8JvsZLR0xd36DdhIzXWnc2Zrzel3a75WudZdnk/npsWL7O2+NaI3XEbJGvt5WFLnTw95xGLgq535myZtvOmb7/cijWIdr39FXNvm/wum6HvtGrs9msdNSbasX3WeJbGbtXUwXTr9Uya8pYjdYy4lLXLddePHIX7Ivd4P3bHSdumcZzrz5poH+tjfIxNRFCRfxVTYRXRfx1TYRfRfxNTcQGFTFbExGEiL0njZB8M9gQaimtS39OvwkNHjb6oCCLVJC3eOPnGLn4JiMy2Gn7Dits5Cn6rV77h1h7o9AJrunFHg3/tqszrjU2dHv3qi+BzPqmw4QB8zCh71grf/kEITzRmGyTwR6hEGi8n7glhqcTn4CXOAQVN3KAEzF5hgZ7gWeLxSVubq6aHniMY4aMk7eUjmRnbSyeiGyV0vSyFFYIG091cr33ZihTxFUKX5UUPlcpakpbVxgbJ533XXiQNFpdoSbUMtjlrNp4UL1xP9bFL7oRy3POSFeNMEC42Y1QeyeMKcECNYIdNf62u6Varjq57q6TyW5kVIECttb0mN6qYplToaoynArd6rWGqJ74M8ZHvN1t5v0gPhNqoePpEsrh7WtzqzegoXqT5H/bRoJsb8fmaq8pzb6q0hgwenrp1O+fU66w4lGviO9CWTps/XYn+czapeXaBXJdWVPLu6s7Ztx8w3fY/GTwMF1yY5NTXeKS3FyP1E1E7VGyehSg5I/Fcd+51/ZNpVmTu+MxeT5/oAmcNsY75AVqFYGXi2isSx22OZOpc9IuKc3+sUH7CIR1uXPSrdFmnfavfdF1oMrRrU1ej23SQ3wvpjbpozbZ329OtYOHgHu/rU2i7CISKsgXN9/ZVjnk2lzbGq12NqoFbJwQsbkeMy0t+j70kRs3H3mlq9Ye93jRveQfsLW2VPV5a5bRh8rx09LBDaCRB6DP9o54j4XpagSJQyksh627ZhIEeo9tkkdQd/dH5dEe5nAuub4/1kF+8AUMvWMq3TWI7ZHX6gSOpse4ZEReDnHb2UHGlbbJJoA+89vkVQrVJwC17cStMUhytfb1CfEt8lHWFMvzHc69L/QYe7rP0XW0AesI9EethPdUSThmSrhz5NYG0lens/Uolc70gO81dtV+oIuu+zd072kwfWytmT5SqM3gOf3ITCPsMmVQaazpenMKxKV0nDnvnff/w3kPp6vz/59PV7d6yFGDTZf3mzbu4HlVmXeDYqVh3edUr3Yd4XHXUaAS6qTVgrwOBbmgjiC1tVCj4Y9dZH7XsYvMc5yQXKYYiMWPSDY0IXLdeeRO46/EBtEBZux03LFD8DZvXXzT2Ld74396v0f8YK/p56L2BKPyOZcmhPDMCz8eXxS++fJNVScZA3QKX7mG8CFxN0an5yvZ0lARz8Yl2MmACFugeQadzzU2OPTv7ptdbBzO0pnJbCaZLixmbUerLacdlmOOYImIyJEY0eNJ3pXVisOLgD6Eyb4hxtOV+SW7+4aq47rqEHR0frVUAtkUC3WOu865/DXdgAjKkk6lsgMFuw985feePdWZvjVqXNZZ3uo6LIa2M3x2x390JYA+1byJqLFsmeokdEA2QvHaz0N0OKtcCa6Wshk8/4mV5e7EIGKVoc/hyN+CD9jggzb4Eht8yAZfaoMP2+DLzFOJ6oh4NGOXMkKHf+mMdlkEKVAWAeoa2s9FIJldhJqw3VfQsoJnmEuFRHk+DW2InhqDQASdUrRp1wjYNXV0MKueoTy1dV60KUTSohSRhVJxeUzHhzR7ESyqoREhCSb1OFHIsjoz2YLH+09lp3SKVj7kTs0yWtDntEP4ix43ItQmiUIlV8riyVwI4AF4LbSrixJoY1uZRFQH1PnnQHkFSiUio0cnJpOJ2aGBVEKEx2fGpkfHRif4FosW1fP4EKYBhU/Pows85bkEz+jms4VFdByiPOoJX3HuBhGYh65cQuFw7NOhWcvTh+XdQ8A4Ki6W0itLeE1NfrlYriRwNAhfenkFj11Dh4Wmn8+qOyVWzpZyi0uQZSa9uIjuKTPZxVIWWikDPRuyiypXhcMqVjsuRE+MmGc+n1sp58rCn10tFfFgeTaNR/hjGpgsqZz9S+n8gmjNZxcq6uzsdatF9J+IiKNQC3gyGZ0jYDhFZ40VgT+fxdOl+MusYvniaSeP4ml7ksByBoa4CC/nMhmQuoiHpOfKoCoKhDcKRV0beEg6TdUEYH61PE7nqwMreEMHPKiAgZuIpyhlF2GgZHF4SKotuwSthLEVQ5HYhQqVtYoIVIBtWXgryyI+PnBidvDkdCI1O5VIzg6NDCTFpmRiamxgKDGemJimuNlU4rqZBF6NYvNDKe1UlO6c1HRydOIodbfZ0YkU3qEyPXp9YnYyOZxIOg6Xd9WhIQ8ReKg/h5NC2Dw8L0I01mb7HP5RdkyViqdymWxmO4yN7XO5Qrp0djsdZ6+ws9C6vkyCI6PDw4kJ03NnVGVQnjtwU/9Ozm6/aFHAof03rxSzO6Hzw5TpcLEZLC4s4PU1EeUURQ2UKucvypmTgEE9f2MynUEnAiV6RKegAXPlpWwG58nYPEwJU0VQzEdA7fSLAHr6LKvHfiHJk+VkYRw6MXpTylTRH6gKHxRdjnAKJr8i3STjX4KeIUQmi/EzlYXDIpTJLeYqkwswHtF4EDCWOaqNXDNlYJiaTleCOQpD7zZFUf492pT7ziOAS1cSkF3Jch9FjlZs/qbI54pnmv2wtCgDhr0DmL4/7F5ZjKb8s3iuRV9PDv8sDidc/x85axGgXnNgFmE9mc5RPEmYGhRsOcCBDrxcLEyR2wnloSG3WCiWskPpshmbWl3g2LDy34AiBUFxQ+UKH+hr7A0YMP1SWI5WAiWaObWrMJh3baLFVK8wU3XpXjdagPLlLClN32IGAuRno4Uh7YrF1SvLet2xtKmuOF20FA/OMWXl0KpM1VDPZ4ubkxabi5U6LlTCNCkXzsJoCKl5r6x9eVhuVVoYUnQUoVxwocHQtNcVF48xD9PbShjxSZpBpQmanlbWcsUShjGum0OBSuKH56AlDsatqWvQxoZWD+UWBvPpwo12v26mD5eIUifHcxnyVMW+UjSAq5sGzl1CubLiDIBi15orj0DpLXUXy5XHYHY2w4EcaPwJdPsMTa8SK1ilbwEYij9ZUlFmkIW1CgdylaGDg45eQSuNVlvmAsHh+CVmC2CB7I5gomh8W4u0PLmS+3/qHUZ7hLE7ibGcK7n6iXH1DRNTNm+CR6enzGYwV4MXF2k4QtSc3qZix2wVpRNoG1xIFUzhwk8xNVaKZe1TxuF1xpOyHM8EV9KZBJrX8KTFsAEA8aj1SdMCM9KKNlrJK026kIERHEyqZ5tajJoLWKymjA6AHcBObKo82ERUUI3HuC1gepNCU65YGNeGvoApsjyp7QhaIupAm4OOvEsbpayefuPKnV8K1HYC5qhl7JFtKm4gY7lI06ihVZsPtVJ2uQirE+XZiD0cRRRWrbk1iZpnUA4Vgp6/qvzohM1qwFpYAUMbGiCv6jtUyJ5WFQ8YpdgNQCmIVyoDC5i2czlXRr8+XMMl7ebRTqRUrsYMZkF5Zc0FnQo6KHRThiFHDXY6YgbPjqfRRySOCHzqamC5VPkNvbzJ1HE/FCjnwUQVrbTQgtnS6epQ9dUL0a2NdRHmdtyEyGy3djG2Qx/bzgumdbvvu9i27jrPxvQqlcM+kzNgADwf/Q3N6YVczARVK8SdYarOVhOnq7y9CqEcjLl4JDLd0ZHbUQN/VQMxpK0Cy3FRuFLkLZJghaZ67csuqkK60iOVomV4O50dGZWizjXGEE9jlaJy4sT+6nVYR9u8JJmeWAOVIm6SRejB/qYqRfLLpJzgRVXIkgtmmGyJLLQqH0uQvdqo0C6VIKx9OalHiw5zv1rTbZTf7jGKvUQBV5WwRQOW1EQeVU+rSlTyFg1oPFSi5hdjyCrhDN4cSSX0QydYBibwi2pWIKBHGsF6eIURVmp3Ld9RkuMtq97yJuV08Eq+pVycSpHXQxenUKYjxLCyaNE3VAh7EQJixkTG73V3EbWBbpC0PPRvMO+MFNoNktMrPzuL2mB65bc7i0LunRBqIVdRGNoIoVbtMGqDPMfhMGqDdhC1ge6VROqdEOrU/vs9creOvUCHL6Znp/bf79F++z3aTdQWchOFXOzuoTrlsKZSd0XuoLsikWocQudqp1Ds/KlT3wC5Qbt72qXdPO0y3TzxjY9L+lnSbo5eyD6RXuLpVrcXXKsRr+KY1yjgXPk6xryZgbcx8M4qT00b5GcV0Cm/yMBXGPg2A6Yfpud6NeZlDLyCo+5hzH2M+aRXu376gRfCg/KfOeIZPg08n4GXMfAan+byesa8mYF3MnAfA+9m4D0MvJeB9zGfL/i0EF/1Qfg6+aCKuE5+DYCe957tOUZfTfft6Fdv0/BK7JkevGA9dKexmT69idG7hHs88ajxak88ZIi+/Ydf68EvjPohdhvFvt5zn+HtGcRjeTZe6+PxRuKxky5WDPeH0D+At++A+pZJAFUbUb0MqII9l1RRAfAWBIKQ9Y34dE82hCf+VSFzRN0t7/X0tNO7pAvo92DfHnxP2aE/zRdxAxjgq8qDiN52nxHq2cdMGifW1D14+B+zCsl3EDDiwbhL7jOMnkvxxL6Kuw+BCwF4NxejXz9v0hTvwYhuPLIcgITvfbgJ3/fwEh7CI+4qOq9r/gPNpLsIz5wrep2heovpQr8B6bficXOF/jACfqveNmCVXSg/wmzyuiUbsduBR6+Vkwp12V+4b48+Fg3dEyQM9+zGT/RVyvudJXKWpIPOWvcdguhNlBoyEJCaDkR3k2d662RIn59+u/v20Oe2kZ6YOgRNdBjebQs3Stcv/T2+kc946NTjZ/CkqHcvhvu75B7b9bKBvkvpetkAdrldkAa6JNBeUEXm02S+xmRhTRZGssPycyjpQTrnoCToN/DUL4mBd8q10VGFz9CXGXShyh6smxDU2Bf0eY0+f99hLnmHebQXsDHGTuJBXUmMvuqhx4Oevssoz6964OGRD3qorrZDhlt0VcXj1SnazYq7Qn7N09PK0So35keMOuTXkUBxUmRm4pOYuBlpXJkA9htO7IMW6xl1uPdbHubWA9y+5dnbDlpxg8qPPpEGcS9X1x3gWVxM0FDicjVbJWTvZgOP9e7tsLgrACRqin3DsuTwbPCfl2mzzXkMzx5XiaEaxGyJ77nIWa3F48grg2egTbEftDWBrvlGddR0LjH5A9IywAHGUbTnYjzybGgltJ34ssZxm6wiPWOYIEy5POTp207CPuRxJATN8bdanAAT7nHndjEee+bsY01l/0Nb9rE/M/ttssDKxq26NoCm/hFXVwBULN6EHKAv0X9MehK/lN+Bp54bkxzA88sg2V41NeyjKcIicbcKtuEBZN1SULafqMnBnMODYJP8lAkOKDcDNuGRKoJUh21U/fj1pJqYELqJq9k95S489MuTgTnx2cS+lRyV7LST1ZZfU21zMvsZWWQjtwldGk9Pl/w511HAKiVOSRa+8VT2C0fH3oknc1X4wvplHLJRudUOFeSXZiu5M9kof4UUAV22X5O8KJOO4Ca0R/ymXorfuKfYjeduOUWDatB0ikFDut81ye93TfHrwvOxgNa9oF/J3QJd//c1eODzB+YT1JPgHnubb8cTqjjVO5LZKXbiQVRos73anq/XuhbVw27dXjwS2mAYYOetovmjx0UJ2GjCTBN20ESh4Hs1iV8PJWdOMSi4oiBDCKaAfT0KcvLZjQdMm2rdPzXVulfIx3pNfuch3bnx9nhbXxArLQ6Vto0qrd+RuM2ZWGWy3sTXqQOtt3jJ1LzFS6ambfa7xbtulrvpuGkzlfN4bzOVcyWeNm0sYsPUT/wzUu+Tj7ENFFdC26i5Bo+tStu4C+PNdpS0xTyD2kfXTZuDxdmJjzbNgVdAIZ0agCd5ed3igRXT7d51Sf7kP1Pyc+VTVIZbINVOXi6BVE/1knLBD7JhEnmal7WV6gJWuFEzSPl0W2kQc54D0yjt5fIZ3joG1SYwZDp1okjcpDlspk3KO3TnUal642AzQh+KaFsRiK+o6kxr8pySdyLPhzx2SQz5LIXsv0A+29uzm456PURbJXFzq+Q5XpsJCjx5wGXlXY04XoMcr3Afv81kc6Up+N1NCK6S1uFbI/jzHq7gzWRzpalo6HDtQd1TXuB19JSDNi38QovuPKRbU+sdNMtyAI++rnci7sZTrzUTMcYM4GnXTl4YsRNsf9/25pezs8iii1lwX4Sly/ZHaFF7Es/b2heCW9WKaqO1ArQEv2pdC9vT1az1GnObWmN2WznYytVkFg3LNCZf7q1OcbW9xrsMv6vcNTuHymp7pddmu+vW9fRM4Bli6vgxnpQCe/VA8OBAIFUSw95japBH1a6gTON+Ag/xPoL8pDoJTAsqtV+2D8/48jLBtNLqTQZX2ql5zVK7Z6dnLkxrn7sucKZWO371stqHx4EtwfTGcD3qfjt1kzPbbjxF3MQKabd8Q1N0MflGs1OgMdmF54J12FIOkBpPyGpr9T6jFcJvcYSlfCuHqZEM4HSvK6cu+TZX/Pny7V7T2sWYW7wxEcXdkG5YH+AhXhvpO5oljcl32uSMQfhdVXKfC8FrSBi1eI2p5reZBU9qyizYJ9+9jk55gZ167W71nnV1q/esu1tJ+d4am+a9Tdo0HfJ9Xue2DnLskO/3OveaEHtQfqCe/WNt5PitjRyVw6j8YL1U50GqnY0mxqpZflJ+yMEqzKx8xG4vsNvdiF0oHuj22Bkuyg/bTHrFqgnLbP0ZpeVH1mv+rbdyLpcfbVQ5aqO9SjzLOv3Yw6mHhjzH5MfXW+QGvWi3vFQfXsT1xKV6af6zmq22rfJvXDavojYFxvFWelSdUt5fNYaukJ/QmF6pKsWs3AFt5nzKW0/cHfIB+wBslZ/2snsesGAuUiuRz9Tk+Nk/J8fPrZXjNvl5r63wX6A188jjrMo7T37RnKyB4EukOgH4slp4mZTRasqf8Du6akrk+ZWmeX6lSZ675Vet9b56V4zrxLna8jxYW2AAvlbDMSa/bptJsbtZ4Ubqc1B+Azv5N9XA+SabS9/0uq8OXE27bvktVRraH7LPqjvkt639D/1iWnlXpVq0kXBVuJN8Z20u31mLS7/8LpdH3bcd0Kv6hi8fzTT89rR9rT2arfJ7LArvrIWt3edYzyb5fUtUFPFjegyHe3bJH5iTfV2TFCdHiww6AwWGanYVkfKIfIinQanfebTKH3rZgR2+53SdlAm5mTcrPD1X1/IJIZ96hkB1+ivljyyJz8e17M54Rzze56+z3FbrJGtj7sdW6qsx9WXu08raLHkdfKX8lxqBFF0DHjaB/rU5gdZmeaW54P43a7yC7vDq9YFaL4TkTxlxY0+1/RSFxP++nsS82sCX1B6Y5n6m+qNpLgHBz7160f6L6v6/BybN/+ANsrC+hwrQI7cY2IU3yl9aYzUkf0UBzEZH8OsGK2Kr/LV9dDsWRmrCc8SPACzVWuTX9iHvSGfXQVuddJTeHr9R/sYusdpQt0WwxPaI39pT/M4synZnhCqjW1LmWZPUWT1VSf+TKewvcqJg1c7a8Mpi6O8wDLBFVNNt0epuj73Yu91S8RRko9tr0qFcv+fZ7w8KcPZDJ+1/8Wz13wqopv2fmprwswBE+0ev0oseV9pwXdo/rYNvLW19vo/1Nc+3lrY+38etg28tbT2+u+V8k+07b2O5VvvaaRu37yZ5iyUrRj3ex9PcTvkEtygCn2hS7Za3+urpBV0QrT8cdDS+7fEXqXhXPcF0zoHhoHfwc+5J3Gbmqza4bjPT2Tc2YUXv48lCr+jNcOON/tt91YtiO6ZR2nPkk606acFropRyD/YdVq9+bdEhfYsURuxSEarsznT2Im20k9nTXyUzVV94tFeZG73OnmIZClill9Qkj2gro9fZGZ3JLq5JZo4Nc2MtaDdHLnJJoEeIZbjYmvpq+RRf1acj6yrXodr0TRWsVz4V63mN98EOGj1xOGn2utIEXfdibPzMiahWd7vRuPGL9nTKlerRqZw+MhoThvVgjNhr/k7jYtuns0/zxbcbT/fFNxuRwY3GMKzB7/CR7zthPNNHFHf61IUXz+K+aRXR+gTFsRXooDRF22rhzULZV+i7XeJrDY+gnX/Yzr9XPttF4zu1txtNtYbvlc9pgk8tTS2fu5rgU0tTy+e5TfCppamdue5GGt48/pRzFRq07ag8D+kS7nQJk26jfIFd29m/gHmBXRh7xAvrpXihe4rd8kVWioYb4y+yGDSke3GT/F7cFL+YfIk5YnF7PCZfiuEjHN5oC5sfHGPEDvlyNedQVPUi8yB+AbzXQWJ9ruxGu1O+AvM54MbM/iGZRbW+D8n2yVf61J5dm3r7Y+0gVe3VqVp5FfcgqgUp71ElMTFd8tVIcdQ5qRs93fK1irImpkO+zmd+3TvCU3dMvoH7tK5vK1xV329UjIMN6ttO0ri+2+WQKcx2S5g3YeajljBWuEqYt6icRhsIYydpLEyXfCtbPn6ryloZX2U5BaEq77Wq8irLznobUu9wUkvoWha+PyqP65S7+nbbqbbaqfikhy2+Q77dynO3VWPvwFTHrBqzwlU19i5VHcca1JidpHGNXSQv0hVzxCJUF0bZv+E0O995Jn3Qwbj6k0875egalJYMx5qS4WKT/lobZ301ddWYHbvPaLMlGF9vgon1JphsLsEe+X5s32tVIzYg7LMRNsf6fPkB1fxrM+93kDYr+QdRoPEmJLcIm5X8Q0qctZn3O0iblfzDKNBEE5JbhM1K/hElztrM+x2kzUr+URRosgnJLcJmJf+YEmdt5v0O0ubYd8mP19HIH3fVyDF5v23Ni6ba/U2YKZ6ezXa6iH6F3Ks35rtUZFVmJvM1bBuTuaKrZh6Tn6iS+BNNSvyJRhJ/oo7En2hS4k80kviTZiTug2ySn3LullhbJDH5QFXhHmiycA80KtwDdQr3QJOFe6B+4RLy0746Z0CobJ/xmeBnyWB1P0wxh2zWOBniym4dBzYS8nPVi/aHJ+rnfGudIvlzRe2Rn/dZzo3BcJmyTptdIL/os1z1my9C2nXt65cEdKEACvtFFvZBrlf9TRy/TbgMpLrE7ZXGl3xu2C/7mFub+U7tKw0Eci/gDZjGvb0fnjz02UGtEQN59XbI51Or2L30B3pb5Avo+35yWhro7cKb30FsIsJj2n/4Uwjx7fLF1iGji4g42Hu+fKkNCVJffPjIidv8LidxeqXeTMOiHT6CvlylfIWHV8OEsfnxnzEWur393j7fMUlHGb3QSgEUa2T3sbjGGDLUoz5U2n2stxpXs/WyGz36X2xs7A4BW2PQa3QNQq+SMfXpv/uqa0Pv19G5dLTffEE4OB1XHz0H4np/JK733+KXyy09h3Sndnlltp3OwFkfiQbx2+u+NjpUfKxVnmu+hOxCL7NXPXxmypkxyajAzarNEezRIFZ/zrjV6N6IdTxoQCH2oGY7Fpbn4XPkft+xdnk+gBtpbbpHIT2ApJMT5pkJ6P8+SHQhVfGDHgDJHgUwqVmii+7zoDU39Wv3530b+3qAz35Kv9E8l3IP3T5xsbHYvRlk2uSg2EY87/HWrCN8vZ/0dJ9DZRCwGA7KS4Fyy7GYLoV+Nw3hy6vCV1SFr6wKX1UVvroq/Kiq8DVV4YGq8KAjHDXXrjBVJLXUvSehlrZgWS73HDom5Kj60H5kdzKCTsn7zlHew1vlESvtiXuwVY9C7CYF0lacAqn2AcRaShm3+rp7qZ7weoGYnOpRq8TrqNVjMlkVRl/YOzgMzMbguVP1oUkN9n7D271j+7VK4GsH40aX9todjuvVJ7SJiRu0Yh0rWMjr0T1qG5u67LEefRhjC2OsbZJjW+Vf6ZRb+mIu8VL+tTPtsTb1TRGHYTI4tku9yjOTx13eJt5qHOuqItMvmAA/74rfat95d8hG4++YoUcGevg+ybXpqIqkriAcMWHjfk/3eVC3uxR4PoEXGbd6uvUFCpBiL1Swl4cuj7cbvEYW/heQy+O83Rf0o1oEUXRjkG8EDd+AIrImBEFvoIIohXsBDPFlNcRNDKvgLq2CL7Cp4C6tgi9ooIK7jm1UR0Vrdrmgnfb3qLeDShvc5T0WlEWkPdat9tNr9qO7bFUaUe//1QgJq68+9SUuLw4a93u793HfT8Zlmaa3W/X0dsftnqSUFROHTsXHgGrVQfWxx3qSbfKUicMvrj+GtzqcdqC+hPzPOFJ+iFKedZB9zwtZ3uzIcgQS/p0j4UcgYVz+vQP3I8L9gwP3GcL9Hwfu67dgof7RkcPfJ9vlYz0Osgdux6SP8ziE+4MXCG9xEt5HeTzeSfggEj7BSfgWKu0TPY6czwDdrU66T0LO7fI2J/J9j0Xkk5zItxPydifyNSTPk53y/Awr/ylO3IdQxqc6E99DHJ/mRH6IquLpztQ/RY7PcOJ+gLg7nLj7MZdnOhk+RDVxp7MmhiHts5xpv41pn+1M+x4q3nOchL9FwruchPcS4XOdhJ9DCe924t7kg8TPcyb+2BPw7qg7jfs8YoNoj3uNZLzFSJn25Nd9gOa/OtGu6OaR7py/UZdzqwPxTV/8ae/3iA8nhK9YWhShG5dKxUKxLAKns3OLeREhZ2CDqwsL2ZLdFzj7y1fe8XPl63PZ0zY/7Mpju1TphtOVdKq4WkLn89rjNTnJF+h4d0whtL+3wFwWXVuR+/xWW9bEPjinxKB02oMfOSFfTpduRA/bmBFRisVshZyQHehnt2TRfK5SyaP3xBwIaBIcOmi6UzPIE29l/yF2HaYRwCOkoMPaaxo68ZzJESmDQGRo8LAQZSt77Zu4bOVnlDkfDWEGZZ1BuGyxLlusy8w6qvkqH21tlmfpxBh5ihaBNMVot78+rCN2oWyUV+d0rLqqIKpFUrSChLJgziSMgikwNp09M7qcXszq5owoUVVkRAmrGZC4WkqCh/Lp5ZVsRqFaj2fnjo6h+2b0XrlQ1DcI8B0Iyt2xv4JXBUSIVPdAFZicuyE7XxFdFBhCZ+pnKgMVSDq3Sg6d0/mVpbQIpwvoAy2XBkwmuwKdbMtCOpcfXRhP31AsTWVL6J44XZjPDqVPoXvFbeinMVsaK56eQmdz00V0c2ojE3EgWEbvZyv5HBSEMulEf4HZ0qnscCl9mry9k5yhciVbmM/lRZtdxsQp9OHmO31gXvjIC2YWESCeighTcBT7S2dNMkK3QLtVVsvj+sqIsBUjKcER9IWoR0mUMFMldBK/rOVIwrjKljRBpw0FkuvMRNvAEDkMH5ieTo4OzkD/EjGNmk6cmJ5JJmBkqvDMxOiRyeR4SnQPjI0OpBLDs+j+fvb46PD0yGxyYOJowoqZmhydmJ5NjT46oWMCA2NTIwNC0GN2cHQ6JYIDY8cHTqZEdCCZHDg5Ozhz5EgiKTrsISCcGB6dOCokyDcwNAKcUyMDw4lkCsbmwNC1IjA4lpgYFhF6zA5Njk0mRasKDKemZ1WmLRYieXRQxFQwcd3MwPTo5ITocIZ1ongVFlNqzqnkkJMzIjA+PDg2k1CF8w9OTo4BAn5nr08M9VvgAQs8KDoHk5PHU1DQ4cSRgZmx6dnjicGjY1AeVXysQBHVgZnUAFSkH5WA8A0NHRctQ2MD41Oz05OziWGIaaPiz6qaQu3QJ6RCmZU5zURDY4mB5Oz1AyCvaFWo48nR6cT4QOpaERuaHJ8aHUvMpqYHpmdSogfDyUQKG1Z3ilnsCQNQTqCdALIJrmsrrBojDmFMMzs2meLShYdmxsZmjwwMJYCcwdnxyWGUZSaZRBf4U8nJo8mBcdHJiOsTSeCj+6nwQvH9w4mhpAjjLwg/MCVahkEtTptiy+HEFPRMqz6EUBhqIB1rrxqFcVSNRkH5JyeQQ1sVAhS3ZnpkZmJIRBSsunyLCqSmExNDo2Oi2xF0EQvG3jTnaDVGcHh0eiSB5ZzESh2AARm2ujaBqqajwycnBsZHh2aHkwPHRYeeIWYdg2uLG9YcZAHs7GMidGQgRbIEjoxNDoB49JiF5u63wQds8EGGqadb8AEbfFC0HkkOHKXc1RgWEUCMJ7RovbaArXJmJwePJYamZ6FoibVopk9OJcS+OjTccYdmBqGvDUyp/rdzDeqxxPWJMdFup+La6rAjsUNg3xM77NjRCcbbm7seyfDoON7fAONHnF+HZHw0lcI7IWzcNtpJZyZSM1NTkzBShqH1ktBjRIweswOgpkhjChWm0hvYaWcHhodFJ0FJKG0yBQNoZnA6CVpftBDaDHYcTUwkkgMkyBTW4QhoeRE8qvvN0WQC4pJCAJCYUMNMjIwehcFBHckgGJNsH8UCofxKuSoNBMmHtWIRW+tTUDP7oVZgUOCvGvw+5GuMTuhOyNABEzoooqMTMKxHQalPzIyLczhkr8DJKSwfzgptHG2hWhillEMQgqCUhP/aRGJKBMdULfjHQFFCCKbGAZjN1JPrS2M7nViEabwhOiXCNK2OTU5OCUEgXgTCMM22IgLwtaznwmOTx3UNhxDEigiPzYyPTgzgJSOtJqh1xna8pAS6FHRkm0IfHYfZBed4aLRNRMEDhSloMtqCUeZA1iYBVu/0JEzKnRgL6hpGt30G24hot4ykPYJI2xFz/UDyJHZzZkvXqjgmgJTYasO5se6xxVeL2UZxo4njOFRw3IERMp4YHp0Z1/UodAirsnV8NJmcTEJVJRNTCaxkbq9ODVS1blcV2mzeCRxeIjgxOoRB/wTMIMKYmJxWHQeg2QTmJHwY0Q0/wGFiJjVbNcW6xagpoN2KsaaIKmQNpWXNVCEVZcvkDCjYI7PjifHJ5EkRmwIlAvSjRydI/QTJ0oOWn5ocO3kUBurkkSOpBOmXacynGj06NiY6qpCqwQysYtIZUXsPEhsd/UnZj9RVOhwRrJa7nFg0yFQfdOD1XFwboVSX6oqOiJEEKK9pscWBhKInkhMDY6y1Oh2xWCDitMk5JLQFQFFxR5Qa3YbCYV/hLqdvBxI+NDOD8HPJoUsAC8/Zgf3CD8CACOAvTMWpAVSdydn+YRFlGAezCKkQGPAK0JUJ9uPQJPRMtC5jOkbJkxKtOmwSdFUhZrUS7KzGKx0ZSQ3BlIUm6OQJkEYHyLqIKCtAqfNuDOCQHwPTaYbSQ/aodAOpERikImx107gJzqZAAeJ8pKJVh42gWmQzKO5ibrUxDudD6Khgm1Wh0JTb4kBNDaRSutNQgrqxCArpiE0mjoiNDgzVzSyZd12OCMvsi5p4HBFmMWzmajvj7AarmYyktEJYohYOwUhJnICmtgcPWyJWl9UtgooZ4QgsoZkXNa4psK2oZiVbpQQOMKWPq7ZqATtjavREQpc5xOtPQwN9JrRfhBnqs0Abtt8CD1jgQQu8xAIPWeClFnjYAi8z87XY9lv59lv59tsIrHz7rXz7rXz7rXz7rXz7rXz7rXwtXgesfA/sN+MPmtAlJnTIhC41ocMmdJkQPGmCmogzrJUo4rqrcWwPCFltSovNNcb1ROLoAG0anGgUebJR5KNdIqcm9f1mbmzNSDe2ZuSjrdKCtYATEpqsFm50gnExxqF9OZuqCoNKAkMEtBUq1CiDMGImgJBDynKTMxNVs2avxpDGSk3h8hemcq3y9Cq5XdMcGRudmj2pkVs1EpbjdAHh1NhJrQpVfAusACATnElxmyBqBtGSiZkhpVO7nOHZg+qvBn8J/e0XHTX4Q7OXiFayiQesdXfwepi+QBGHWIX3Okw397XnZjeaxMTA4BgsZba6RU7glDsGc+iwe2IyTKAZu90iae7tcY0BeDjhnoqmqhYdoxexBtuRwv/oRHJSbHLdZxuk28Zqdt+C8+nCqXRZtI1Mj48NEcx3trVn7FuMI1l1+40Dqe54aknTvuo08FvF+y4rGoimK5X0/FJqKY33UYZW9NZgsKwQam9Vx8bn8JYu2lMdK6p7/fhuVIFRep8zWEmX8NrUVsTZdx8jC7aAxFjH3mO0ZA9FMJ7FVfuWHBJzeaAcKubxViS6XhWvrSwI/xy+YGihWLzpUV05tIx3vnY6kKksXaqE135CJO3JIaB2b8NEivf2iFB5Ia0uZMpooM2MNHkEy6V5srcy5Qo+DQgrTgZgFCTmzJceIrBK+7T+DAZaVERqdY7iuui6QludpWhvl+//9C+nyzcKQQFVfAUP0052lOCU3mT2lPGWOqAZxzQteJFULp/VLdmBQbzUJpvh3XtQ5vrexhjfUkub3BUROE09KLikeldwrlhCHhsdPKAEzCZ0Rr9bCJ3VQFBziuGdo7YMPWeE56xo01gbi+g83SKqO1SbCtm7UotC8U52XAWd3UnhdIl1Au5CxvxqPn+EbhDLZPNZKysVcmSlUGZWKujMSuE4KxXirML0noH6k38BfxWCmsW/kE8v4u1WgND3Lt88QS198xG6gDVrH5yZXFndPj2fXhHdOnR9tgRjWY1K/ZoFhz+BZb4Vz7x2EGK06iiLYLZA7DaqZy2j4EKukCsvAZP8Kjw22oavo/hC6ZBlfUGWFaMVQYctoa4VaOMwqiBFgPeTFSrUHLHFbAFvc8uO51bwPrZWiFevhJRkQpqImUKOLpOMI4YkyGZUVZXpBs0qTYVkqpXNe6pFYIVeMXVAVO0rI3x3py7UxCuvzTurres14+p950XDZ4FLbp4usd6BLxGt4g6YNWNlitysEEqq+xa+9BorLop2C2XRdQPSXutWDNaIKjcziJsYZ3qNK2Xnc3T7thqVPTYdXx0n1DxAL93w2jYVScFWk6F+8deFiNUVvDUrmzGrq0yE0OyWKPiilRvPyHP7dJAYGu9otWocMrT3VtFZhdDvgf3QShVh5Mp6cLfkyrqVx4owKMK5coJ6fgZj7EMeYni4x3JlR18Hbno4ApE5xPECQTXPRgC8kRNHVnJnsvkUTBzZHPQ1rACoxWL+7GKxMMmqUU0sgdVCDi8bAy2VmcJUMD5X1LPdPqSQGU4fsXJ6eQVvsTyVpXAwVwAIdG4ZmqiMfbZsb5tgWb+c1e8gSR3B3Lkg2m0Yc07zL6RtxKSq2m0Bky6skZMrmARmncDN+rGC90C1mdFmClGx1H9LxdYrFpzBHAVtU0J4VfWC/QtCmOAp4TllxeSsmJyF7rcS9C/Y0BZ1v436wILw3GzGHLAlOGAlOGBLcBASnDZjDtoSHLQSHIQEUsPjaeiiZ0gUumJ8pYhGnyMSs3VikK9YLZuzUCvdDGubAWOnbP0f6qjVGT4lgqfUve4Owv4qQpTKQXCgiuBANcHBKgIUtN2OoLuQcdAXUKPgfbcZdbc5WGXGqVz2NOoLuqRY6RZh0PWP4+kzDOUAxyYJfoSAg22ykD8rQnOrczB8y3jPb2E+m1e3aNJl93iJoA+0QvypftsNY/ihkFcEDa++X8wn/fD0ygDAAX3XWEDfNebVd40F9F1jXtlGd3QFZAeEIrJTY7s0Vbd+btbPc/Rzu37u0vQX0rOdckZ8n8ar+8K6NN5L94YFjW4zfCk9e8zwYX2/GIcv08/L6bnNxF+hbxjj8JX0PNcMX6XvEuPw1Vqua3R4SD+H9TOhnxP6xrJJ+L1QTsHvRfI6iLlYJjXFND0v0reYeeVx/Tyhnyf189H0PEQShCD8BHXb1kXyiaqVDuuYi+RtPk3yDAaep4CA/C1jHstsnuSnS7wC8tt+CA/If4Jwz2eDPTfRN78X9AugOULfU4YIHrHB4zb4qA2+1gaP2eBjNlh9XRzSx2AG8ZqOYfr8dD9Fz1D0ef0RgL/j1+kw8F174Hv+Wi7b5PfxO1A8VtLeH5LP9Nm+fLYTtAJBVyMCPCnQ3YgAz+H0NCJoA4Ita2Wxba0sdqyVxblrEexyJdhNn7zGHfWkP5mNudN1VdO1utN1V9NJd7qearo68m2ppmtzp9vWZL47msz33Cbz3dWI7m7D27sNP3/39+OXz/j5u5QhIAr1G0BMp817rzHukt2+7UhiXO7x04GICH0N3S1j8PQBY3UrHX4nLXvUR/Et9JnxXX78zPhC40eyW2B6iIhjEvUVvqIhsL2HP8jf0Ntm/Fh2GygRyhlF1OP9KEQL4MTgFsifmNB32ZSQoBYt00bsJCBTuykTfm4eghj8RrrVNWZLj3L3UxuzVVdddUyMDl60cQxQ7qjLo7cuj3MdPLbLndhqJqXu8LYU2+VuF4pWB8UeFwrpoDjPhcIuVxedbqmmaDumLg9pzPuCNXnvc+Ntdoy7/LbOY3YM1Y86sat2cFdNBtUn7r3f8GDnaKceKrCHqi/4qY9q+GKA2wclwFGA1RmBWF/n4FaKdetNqodvVeOo35GKStOvW32/Lg3lYIvpkgcIE5QHdTl5ZDQuJ4CR6iJvrFPkrrWK3FVV5NaHVeTWBkXuqily1yNS5E11ity9VpG7q4osH1aRZYMid9cUufsRKfLmOkXuWavIPVVFDj+sIocbFLmnpsg9j0iRz6lT5C1rFXlLVZHbHlaR2xoUeUtNkbf8uUWmeW2rY16jWthepxa2rVUL2/7X+/q2mlrY9og0fG+dIu9Yq8g7/tf7+o6aIu94RIq8s06Rz12ryOf+r/f1c2uKfO4jUuTddYq8a60i7/pfL/KumiLv+nOLfLFxj+zeQ0XeAFF4CvY8RTVgJRi0JYhhAjy8uHdwA4Yf8qCdjIcSg8lN5sKWDfHQ4euvuf7EXTGIOlo/aqR+1Gj9qGP1o66tHzVWP2q8ThQW8wLsAnjmsG8wDi2KNXIetSOeq90PdTSjaw6J92CV7AfifuDKC2/mep6NK1XmAasyKbxXtYYZPlgVf4kV/kYH9thLbT32MdQJgvKv9POv9fNv9HNWP/9WP9P6Oaef8/qZ0c+sfi7o56J+LulnTj9v0M8b9TOvn8v6WdDPon6u6OdN+lnSz7J+VvRzVT9P6edp/Tyjn2f182b9/Dv9/Hv9/Af9/D/6+Y/0DKlzkwg8joFbGHg8A09g4IkM3MrAbQw8iYHbGXgyA09h4KkMPI2BpzPwDAbuYOCZDNzJwLMYeDYDz2HgLgaey8DdDDyPgecz8AIGXsjAixh4MQMvYeClDLyMgZcz8AoGXsnAqxi4h4FXM/AaBl7LwOsYeD0Db2DgjQy8iYE3M/AWBt7KwL0MvI2BtzPwDgbeycC7GLiPgXcz8B4G3svA+xh4PwMfYOCDDHyIgQ8z8BEGPsrAxxj4OAP3M/AJBj7JwKcYeICBTzPwGQY+y8DnGPg8A19g4IsMfImBLzPwFQa+ysCDDHyNga8z8A0GvsnAtxj4NgP/xMB3GPguA99j4PsM/ICBf2bgIQZ+yMCPGPgxA//CwL8y8G8M/ISBnzLw7wz8jIGfM/ALBv6DgV8y8CsGfs3Abxj4LQO/Y+A/Gfg9A39g4L8Y+G8G/oeBPzLwJwbU3Z+ofxi4hYHHM/AEBp7IwK0M3MbAkxi4nYEnM/AUBp7KwNMYeDoDz2DgDgaeycCdDDyLgWcz8BwG7mLguQzczcDzGHg+Ay9g4IUMvIiBFzPwEgZeysDLGHg5A69g4JUMvIqBexh4NQOvYeC1DLyOgdcz8AYG3sjAmxh4MwNvYeCtDNzLwNsYeDsD72DgnQy8i4H7GHg3A+9h4L0MvI+B9zPwAQY+yMCHGPgwAx9h4KMMfIyBjzNwPwOfYOCTDHyKgQcY+DQDn2Hgswx8joHPM/AFBr7IwJcY+DIDX2Hgqww8yMDXGPg6A99g4JsMfIuBbzPwTwx8h4HvMvA9Br7PwA8Y+GcGHmLghwz8iIEfM/AvDPwrA//GwE8Y+CkD/87Azxj4OQO/YOA/GPglA79i4NcM/IaB3zLwOwb+k4HfM/AHBv6Lgf9m4H8Y+CMDf2JAOf1H/cPALQwoD/e9G9HWPESLnsPwfxkufGxG5+V/MTr/YnRq4C9GZ/IvRicBfzE6k38xOpX+YeAvRmfyL0an0j8M/MXoTP7F6FT6p8rovOc83Do9TFZnECzOY3F1fU+8P4T30gDJyO5j29SVLvH+sHyaciN9EMCnK/BKINgl76ghsH1QQpvcQLZF3sm81e0n/YaME/n5EHuOutbEFhvGC0ow+gBF31UT/VwVfQlF310T/RQVfRVE75PP52i61yMGwAsZeJECgvIIPsk/6ouZ+iVcCZvVLRiIe5nKIIR3W3DkKzjylRz5Ko68EG+OUJGv5sjXMPBaBl7H5OfK11eVJKjeDQDiDUy0u4YozDc/GHa6Xer6Bgez/ip6KvCbWY5ncdI43t6gkr6Vcfvw1oWmq7FN3aeAb1NGzJp9OzN4h8X0nQ6mIWYaYqYhzTQE1B14RYLqa7YeOCLvqyonKF8G3sPAexl4HwPvZ+CNCAjgdB061q/H6YMMfKg+yw+7sPxIE8J9lIGPrSUusfz4eqRckzewjKCrdB6MEfRCzkMvgl7HaVRT4FPWqGtHf97UBv1B7aEVKT5tDby4cl7tGErtyot13DH8O9AXtmpX26jvQO/VTs1C2C8w1qYCOtBBdU3P6JBfYuxT7GJ9mcX6itXhv8q4B326t22WX2Pc17mff8OnO/M2+c3GejEuv8Wpv23l8k+MeybjdsrvOCsJgO8y8D2mukB+v4bqezyoB+2Dm7L5gUvW/1yTdVg+RDgCf8jgxfJHNd3rxwz8i4v6PSz/tX6Cf6tWyGZnJaF+UtNB4vKnTm5U2f+uUu9xm2WI4GeNCbbIn/v0NdtXQlyns09tkb9gMc3E1tR1jvwPfa+OvYS/tMbOr1T0BVSPv2Z8j/yNryey/Xc+uv442He1jeVu+Z8uLH9cw7tD/t6iM7Fd8g8+/aLTUYxt8r+Y2lELZsJz5H83KkmX/B+Lr60rb5N/tPgy3sn3Twr7KMA+zq/53uI3+T7e78a3TT7BrxvlPGwU4vREfwMJd8hb/bUlDMvbFPYaINkqb9eBeq35ZCuHZ9bksFk+heV3i3yqv7qn2zTb0/w96sNYS7NBef1ancTlM/x6Yvu21b53KFyV4nsmYx2K707GOhTfsxjrUHzPZqxD8T2HxX8v67EOeZe/Vsluls9lyl9yQe/2m7XwPI58vl/rxRf4Nb9R+UKObGZS+7BTh4Xli1TjCLKdXlxT2/WmcxpvL1Hk/FEsrDG57i+UL2taKuojL+dKsXX3V/h1F9opX8ncvsJpX8W9xrSXwPRjqldzZAPyuHwNk7/V6m+vrWFhRu6Ur+PI13PkGxh4o9+U4k01LBqQP0a+uabO12VLNWrQa5piXsPhFYrDVirzW2o4ODtojKjeugaVKuq99aVZh7HnWtTR9TFvVOZz5Nu4M7Ka424coyXD22uiW+Q7/NbXyMSjliiERN6+dop+Z70s1KrkXY2yCOssaol0Fj00491XtxQ8GFVx3t1McWqJbMXZLd9TtzjmwKe83ttMuWqJbOW6WL5v7XLhAPGbBfxAMwWsJbIV8GL5wbULyJmqkn6omZLWEtlKelh+eB0lBeAjVpE/2kyRa4lsRT4sP7aOInPuquwfb6bstUS2sl8g73eJ/oSaY6Mw39hLsqsRsZqc2onnJ9fDswGxneen1sOzAbHFs0M+4GIhdMhPu9oNn2G1Z1pPpqbaKT9bFSnl5/wOE5moPl+HhV1N7JRfaILXhfKLa/GyD82d8ktNMD0kv9w0U/so2Cm/0gT3K+VXq6h4B4gnB1ihsh35Nb+O4ZXfhfLr67BzkkJdaX4FnrAS6vrxsIJvZ9j8EvJK60vIfgw/Sn/HKuQ3SAr8elXIb9rgbzFs8riq6uvKa8yvL+80vGJD/NMB8SOv8kevnGXPl8sihA5RyBVD6vqjQ/ncylS6ssS+cep5pt8GtORNkDz1aLewg5Mz5GIIPdBpV++dTrqZiWsnJo9PiC1V6FRC+WaanABQ+fD2lU8tCgF0LEoUYPT5ji4iyqJlXks6Q2f+uyByoJBbTqPbhMLqMrq/QKHV8XDyktBtI5lm7FiuXBExiMEj+ZwTe2lps6XQ7vQlVhY5QChUVM5hxChQO3khjyzx/1NzZtqPZ6bNE9NBwy8DdHI6CHBQhggHaoHOBHtkFH7DsgVwQsYoTshW/WzTz3Z9AruDnq3ED/Fd3Rt6fHcbvt5d+HVDAHpBSH/dYPTgGcCgFPqJn08bvRdiZ/FvR8II/Ecv9wToC2r8CrtFfTaNH2LHdF8jrnJNrieRa2st106IbVNcN1oZdFvgJougxwI3a9DszR/9o1889eUee3/GjhMbmCtDq89Xjhfp9gJHvw0VC1lyRxJGXw3YRfZXe4tv6Jpk40AmQ2TYcdDLyuRKhRx0dLhi9X0N5v0N/iL6uw+hY4fcqayQAysr+ZzyyDGEvlfs480YGkkMXUveotVYigzD0BmbJO+Nwj86PJYQxuRgapK8IRszE0Pktl1EZqbQRxg68D0pIiTWtHIRY0Du5OFFCIDQSxIWs6VYyBRPF/LFdAaDEFUorq5kyNFEsVCcKxfREw/C5NgqCyrDd2apJFqmdFBVG7BRqdD7xll0T6C8LqXnUHZ1W0O4fDq9ogoa1Fl0DEBVLBaymYliJlvmegst5NOVCrqjQgcIwo+RIoxuTvITjvsMyPVMFH/LK+n57ExyVEShMNkSj+WQOajxFoLcGZBhJTufW8ihy6uB1UyuKCS6BCOQaX3l0ryIprVkqXyxIlqRCCGmaZtfyuUzOjREroHo8g2D8CWQPUauxor5fHZeuVyZV3ojkclVyM1CGzkWYhaYTLRp9yo2KplPVxHFC3h5gcKkcnN5rAno2Kqmg8XCXH61JMSR4vyqbhtqePTuIMIEreTTZ4U0wcpSqbi6uERkS+RBCbiBfp2/UYjx4mo5qwcGItHRBjT1vPIBAxKsYo7ofUqEUSXPFdOljIgNMaiSRoBkNauZBzBQwQ6VmcurbIBFppReFOFh+NWXNigUXlgSYZB8YOjAmVyFI2BoncpyBDpz4Qh1GwcxL65ggTOral7QkkAe2WXoctAXUDEUMgCYiuESxC1gJYr2YmGxWFlRXjjm0yvksKZFh7X2iGonHWZd5QorWMpRfJhFyhXI6QiCN2bP4rgTLddmz9qqSlAMOQVDLgCvrmARcHxC36ZnNkOOzySHlrOVNGHCGqMqDUFVBR0YKFeXAEiWsXlJjKgOqFrmkKpaJlwuqnqmQHG1YkZQpYd1AOQFwUHHVbIKAByWgHpdWD2xy7YCyAJR52wxESRRzAwqmaywksoiJ7miZhAlsyK5Q+ggSAeU6EfH6ut41QiNEgDwghSAyvMlGLkEZbM3ZqnFEELBCYmjGktVXiqepshKOo9ukDBydW45R81dXgVtU6B2q+SWs1rnAUmluAjdFot0qpgHc8XqkKfTuYoe0KeXslAr4jg+VOfogn5xKgeVXDX6A+XKWXJqBp2mfSiVSmFwODufT2s7KJBeIF9dBdSyfIlNML1C0gXnsmALZdGjHTlAop58pFRcJrVrDE+OE0YEqApFlBF0QYp/AQhBWq25u4cUj6FisQTzCRSXdXq75n7dajpjMg8BL0QI/034yzRJqFyTxl/Cqm4FSkQnYXohzzUR9EVWPIOpyyKmIXMCgYqisrXctJotnU1Rc+G0X9ZQWUhHzAA2NmZHFmGwpPp6BLjkYV45ngO7TtAcAaYjKKzdMzhHW4hJcsqmwetzmaymC2W1dywvDHo/9B6YdfLpOWhWIw8tvkpuqCw2KnN9lxMMtHQmUyE+gqLNmVaJp6LQFRrFDp4dBT02mC5NobYLncqVczTLDFLrzpA60Oq4lAUFULiejBMxCM1UOkvmjYC+AzVJsG+ueAZ9acFMjE4vYZ4cLAGHeRjXQ9BbC2o2WdZX5kT13Tkqg4CaKCIroHT4Up2QSToE9slASs+K/mm6HGcoXZgCvYA5J7Pl1bxCnUqXh8gVkRoTkcV8cS6dV/4g+XqpboVkOuhvbPy3Kg7DuRLPwBpRSp8ml1ginDHBQI4e3swZ+D8L/6fhf0l4yxAuQ7gM4fISzGwmC1x9iDBdrEWgH+c/YSzk8vnkKg5uRXqEw/4VpAoibf8wjBvAo9M0PZSIhXLm2Goiwcwp3ghikoLCOZXcPiGqy2KuiGjIw3JkgTCoDSJlKwLGNvluHMsVsunS0RLYethOWkQz7D3TJ7xn4f/MfnjuN11EojFWgqlKkXNQ4Bir5JTnOe09Ehil8xa/EvAq7eeEIG0FPQsGFwgAEyujXJCmKsUV8zqtALnc5MYaycGQX8QskNoKSRPkMd9KvjtNNCDUMLHSaJbU4OQrtFVJbSHCNpA6BE2rOMSsiChM6FYomMmVKmdP6OdJIeipHdkRrD3KdtgyTy0X9SKjM+cIszO9KjSotnyuclZ0jrqidfVi4w6lV7hVMXgM+hGMam62JeFLg2kbxPYBu0aQdTBQwKnIAG2poBa83wsG8PyNp3MwiAOQAka/90w/dIl+EVJpTzBwUhilYkUNuJa57M25bGlotUQKwz+/sv8M/Z7F336C+8lQBO1A4oSyeejVaB+gRzJIE8QWQ2WD8wGO43nm5ptfOYM/Z9FXnGdJbLRKpe8I00MglOd6QGA4XV7SfgKNPNeIzdmggKk6WxrL4YyNU8qYTgPDxxYwytlF5fEzWiZ1qzcVbPsLupZxjsISQlckUOkDhIQajwR3M7HTTTHohYiKQae1We6wVn5xHbuUBhNJl7dd4WbK6LwSvQCi30EtDSnXjRbsrKl1uUneXk/kVLaC2tm8H478XRZPD+IqJKJg5Wi3RQVUa5xwBk9Cf8qW0cuj8JfRuqN6I/H9JJmxnD6jR9VyNl0G+5UiI/g7DlNhbr7MNUwRrVahB/KwjuOqm9Y+orEHgP435wb/QhFN9IpJH63YKfUsy80OxohyKihipJutqCCNBhw2NJgCZVizZoUnLTxzwjMvPBnhgeCC7jl5JG3DWYiWa6MLE9ksrkJgXKhajytDFHs5NG6RbmGE4Q4T+BTNiiC5UHqTbKWWRZonICV1s5A2miDJUhr3RLT/5O6JYmEYMsQscMqldaVaZFug8q4slJFIyYTyyqtcMCt3uCIHtnCpQii2lijQAlZwmVbpKukQjnllHaj7B1vMW/mGc/M4FZkEyq6cRxnAEEuXcTPkNFgCtIViu5uvQ80duPBXVqdyLQuWgFr6o2UK1owIVIr46BxahQ62rPszTgkgH1jBmewCtnBkHo340qqyE3kV2Ce6dYJhJKMa5wkHnSOKCFjpBYpDK+8GUD9gfi2j4ozo/KjMrbYACR9Ev8S5PEz2ELJTunpkbIOGHEVnpSiJUrYxNXdxM4rIifExMxA2t0TQAoZZAjc8aOsklCnOU/1H7R2AvT87cMYKGFi5ebAqjfJZWM0tA6TpUD2YmRkmFABrAKQVSzDXAxkuMtvMoWJa7i0Vx/ZrACYzdM1MV2jinZ1VV6U6r+ZUZIcOVl2yGSusLs9lS6ksWPW4x+Zb3r8ff/rx5wD+HISffsT1I64fcf2IO4C4A4g7gLgDiDuIuIOIO4i4gwexn+PCBJYLCyKqL6s8S6FWWGqM2xHtSgMMnMmVaUIlpOdm0aHwuK65ntYcFCEUluBQsZQDa/IEAydBf6L6OJCxRz9atBMWxrD26kuxQUKe0M+T+vloWPLgk0hioCZUWyjTP1y+MXv6BEUReJLAFlMzUdBbAQsYjAxv5Wbhz5VhihK58mgGmhtNj8ACzN8n1AN0ONUS9H2DqwiMMGdtCFldDehvlwopWqvKBdoTBVSPkyJWKTq6AofNPmD2K7VelbxQNXte6zKV3qatFUJ4V8DgXQELZ+UA/B/EvVZSnGqozoGqy5SrnbgzDXXillEYHyTGWA7Mcz8YFcvs2B/SV2B4C38+uwDdvUSpfWjy4lJabWWOp1VoGuavAnH0gbkrghUMl9EjK4z7HG4pEwZnS9K1wihkT1MivIaWHEeXMRVtLwSgjOieHTWwKjNuoOFmWGJhgaaFLD1h8Vs8jRuiMOei026w09U6OIDFKIsOOwMsqIqs0JsYZesoW1j7qMdrfQmB1+8qmxmBUnpRrbVkNT+67ncA1wdQdfQbIYTe5g3PQr/Iz+FqV3vx7xnOZnDjPJtRu/xHaQ2Ymi+C2mqrRRkVLn27QpOqHUkXMnlcj2xjBTZQ4B1dJ0EH9EkdMZXG7SiaIDs42WRJGWRJsMuFsFG0HM0Wl8E4OTtTyeVhwphJjvEtEmxWiTR6u9YXMUAplekFLWLbOQ7BRLCEexYhmIxhBgZgblEl8c8VYbUawTTmi7J5nutTeIEAhtD6FejUN10ZR7kieiua1Hxwvli8MQfCzq+WUPLUfCm3UhFdyBNKdv1RhWD2EZgv0zC61dXRx3P49gAtA9wsJ+Y+MKpEa0bXjZVMI3CPPpgpLkNvFsEsKO0M7vfr4mCPhQ4nFlbzebB88EaKNgs2995tKL1g8i/BGFe79CMAmbv+tI4qi1jOOXm20O5sogBGBnawKO6xg/DqvUDYapEAgmWbh3XD8qpeLFhi6P27NjtOvWiK425NOnMW34fwNl9QKXIRWsmvLuKgJpflZ5XNH+delbRwBt2gXMKNzFLRegdB70hbsIWs16SgTLG1wLhXliMuKrkJaJcwtZTFHhRLmQEazeKUVeowdOYV1YP9BerHess4ofa6u+btBihqcqVw9XLa9P/Pt06YiIkUGxCOPSC9zcCGW5fTFjkCeoPwsgajE3IBu/g1CWIdOwN2MhAiohFqxz3Hq6ZZlg6LDnoJ1p/oBd4R8pdokJ9eSlemiync/BUYr7Y2xGbzTo35bLkMdT+qbUosZqc7mu96ifAWCr0kUY+YdeUGNYfUYehfx9N5fL0pbLDUqwarRdo0pmyhItkz2XmsalBueL0JAaPoUBwKMzMqYvhq5Yg1/mJ4cYPiQjuMYc0SwC4rqjx4dggGUZlsTDHPoLpFwqKh6IjmMMH3Rljx0+lFwna5YaHhDLQs6Z2MgBENk51eqWSzK8IPmr4gfKulPCwelfUJi2Pa5dXFZWXRYUeOwhyN7xBEmx2rxl2nA8X3MjgplSnVUsJ3JWUeIYHTpRy+/qBHHnq4+WKLLIpoxj4jx6yXbBRr4HtGMvvPpW1mXRGTJff+s8VJVPXWcbMzFjfoiuY+d7cz0vayD+8j4Us8olj5tCZEKyVMjUvJw2Y748U5uOrUe11ChcbQ3gkreBrMnYgC1TI+nCuAikRpRbgI+SgwqrQW81EhxUfBxEeBegOnbJt7bfOwv4zvbUMV3aNslzTBmPXjqgt0oElOFR+ijSkoWNS8+gS1WMwegk7Y5ghTL5cOFPbJeDUGEnbSKwuwJXH7xFqlxxyLdqhv6OS23O0hYNJiD8P4gqB+9Tik3+uF9auuUdxHpOX5QOYGUG/WZByARSsQxp2x1ADGCu8rVMXSrkoIzLv5Jci2U/f3qqz1lqttBqhCQAHaq1E0hLG/ITUMrbJd/QT1m7jWlG5+VuqGihgEu19B5v6ID/QpR08Xyfa0VWfZ2ZiyXNNy1Rhs8nK2UlXUTlid3pjD9RRWiPmGyZyDql7j+3LlWRE8pkaLNwc2TxavdwHjR9AFOWrYxSyYeiTuhReKIqBsCdwTy9InD7RdChHWTQ0h860upeY7S4bGJlMJWLINTU5MJIam6dORyanEhGjPWmTmJkxrwonEF5ykVVtP5ypLMK3Ssi8NpqyBl9PQbRJtAxlYnqZL80ugnk7l8FqXTaNlJ2bUfD0aP5qt4HjDeuWWjGCRJkujtFhS5i/Zu9xbN5FVB6ZqCU0UjVUWNdquJahDgz9hgRkCbCV8tyb8K2jaxdh0mirmc/Nn8cKWPK6e8mqRVcqeguXlUhrXDZQzGdimMTVbnLsBh2ggTXuCYKBXcAdifgk/3zFwi4rumwsuqb2W4Cn1JDt0AKZq0w4tFEfwphj61mQc1i5mTAtiBpMcpJTIkxF+LI9Gg6lvXlqnDG/nMiWQHoMKEgJXSoslVDSw5kRM4BRFUAkHV2ExaprS4fRqpai+cjD0bVgZ3AuF+ZDyxDuMzKUKogfUtBJBGOxn2kqiiPFsZamYETGEJ4rX67tVVJz+AClIrz7Lwk/fjbSquiismma9vpAF+PNLQ4NQ9I7jeg2pmTl6OpfPm5m00NdMTIFtjjO1GcbRq7bYLBK+Qk0PFGFdX4VGEQFo7IDgq/qqr0pxENaOwk+/oZv0u5dwpYirWVzZ0aZbhtaz1M7D2MXMrkTLr3ndwpjEbEpG2MnjhKQtQnMHnppvGIZf0TTp/fT5QVCtD2GKhBAsY2BUdijaEikls9fEFPYUhztZWaVS6k4Y9bIwnJ5HO+PaLNSTCY7Ra+uIrhtsNxFCMwbXlvgedXFR3R2D2ws3Fws4KHIZ0Bd6oldb+TQwo2rDmud4FaI5XseoFTSYBRSiGV+BPOOvZPN5anJY2afnlOLw02dPAfVBUUB16VbaAEkh+RCRU7skcNFpVgneuHX9UXMLk1rjSC6bB6VmtobBZjQPCmsqVdc8+em7kR4eMdiTYPYp2+ywFqzIFXx1TqvxYFqhozj+sGvQR3ZGllekoaweW8FlNa5EwRpTAfXBSlB/aEKForu3TC2i1/dmqVo0Qi/X1S2Sg+oSQljcFhaHs+V5EV2G7p4r6IaJqJCqc6NQTKqPY8LmulLXFbKy1ZUfpqwyLpNOl5VyGzGVW6hQpIu/VO/GdbptdarW7pXlvEnNO/r+JXwF51/CC8cM/KUp0MCvKE9DERCqLBHOTxchGSulIlZqHmqIpiFhgF1bIgoaQ6POykrj9pd9xUMIfJ9GmhqW1KBg8WsIvKYyU5xXFU7awxxI5maJA833PBpmC8Mir1guT6r1v+Adl9K8COTKaF0HIWf8+rClgAuYNBvCUR1UjRHAhiiTONQPoHSYVolFGxucv+p0uAkEvR80e0xv3gzpcJQ3c9R3qplcieyTlpxeFNEXPDiCgSlt7sB8gtPmcvoMfvl8Rn8W7VvGl6rwo8O8/UvfuqqPBSK0XblUzFN9lHhH1kCLL4cXkMbVpznQ4NYHG1ETl4C5LGaGUvRVm79cgWVfhL6xHSgP00SgAxP0NgDbn77TQhOQFtTqnaHeO1WmsPpCzkcfC5kZUFlbUo4gziImRi3PDZRgGD9W86ClCoGZFdXFQGEuWhtW4fklNH/oc7Mbs2fV+y8kGxtlEmo80rG2GYO0iAgtwag4gjenEk0WP4p0jJoxyywSYQwoNe5Lg8kZWMiCgSriSWVZwzivYKNi7XrTYDIsUxcPFOjL5ECZtkvFadpBVZ8EHbdgmj6gp5nLiDS+nlOjeTxdggzMnm/MZZfSp3K4YZIvggI3igXcRZ+nr9/0nZgh+mquVOFF38AyvVLUq7vhLH0vCMtcVOBolZRxy7xtZOB6vG06mUxMTM/iLhJUHaISE5MzR0fsmP/L3ncHxlUc/3Onq+9O0vrkKhtsDCGAAzEKIYQUomYsIVuKJBs7+X7jnKWzdSDpFN3JxmlfMGAwvfdeznRML6b33nvvHRtM77+Z2Z335l3R2STfX/v6D+k+OzvbZ9vs7L5ps+gj0kQpJ8qMxs5ackbJObO1czquiMtnNnbu1tq+67zGGW2dc2G/a5xkY13JLja9HsGEma3zOlpntdc3WpG4bcIF6ygc0snYMaS/N4gG153JPq3ZMbp8nB1gMND9Hz3trjhjCFUMVcaFRlG4nGsnNSDbr8KGgIxVLb2UpM2Bv48CRvsTGWw+vUwKkPUlUAdkPAF04Z5hANbBtGhG00aavoNs5BiGwaVVL37xe4MZU7hy286N1s+RRbatW9qqcAzftCGbtm0kwx07mBV2oBPZrmgZF+lyjMBgrxNPQ3dL7GH5MlQ9OE+jtFA/91G2/dq21EeVXcXLSVyA2X3IVCNs+LvwqBxtVlK4NB7g5aezDguaOdIK92QyA40wLC3C3WcP+PK6PeMYlvt6YGC2ymC41saPfUN9pn+kup2pMEmthhq7JMfSKpd5ITQfHsQWor6tK9z2xP0FVQYUA205sXkyOBfhGSrQZ8CalvafuvCwn9oFi8bhp5B2p4CPVhLp7ZdrcekmVZrK04NegsTEoFEOt2uRwwx6SRaAFQTqJXXcQxkxM9H6FL9UuXAwPtDjGgTp+5X2cEYDuj6iJk/YpqIiWi5o2xx3lXabiwky1t8PpRxFMWXIfazhj6eX9MM03I3bRehfixw+KpNdKVxE3r2Wx+UNBhOENhWuMbpjIN7vyhCN0UwZg5RO7IGoXhBtMNLxgEWsLVjx+fNhZI3vmcTztwTqPrC+vSAJ/i40d0Jh7sUkYfJI6M/5whZ0N6hr2PumFpNPYJE2dKlykkg5KaSRRdleTifR+YPOmkCzlG5arZIDDTHIGJkWl7BIHSJrrPRQH4jBEiuYgf1rEq2PM9NQP+cU2RwD2C2RwZWhfShgp6c133V03mUcFBE7dChtosKhwuZL07jmNZ+U1mGMg8KEtaILmZy6AJedISxdGu3cFut6BhnQiwAmGMMYbCK2iCGso0vA2k+cUhjinhmpIKAx1qyefIuxnUhqcNhwSU0nGli4KWQZzFltbG9vbbcCOFc1NlhB+7rQzNaZjdAWg120A/Nr02EKPytv2zmrf49+WNO4UqGh3T5IwgE3rXeMMJnAihxPpmgq4E0dOfRqtXI6LN/r6eRLK7mqcgha09SfWIyb6ACsEPE3OD2J5mC4eaflQDtZh+nZb0RHHslP52uwCSSra9j2LcZ7KN6FKezRvWjOOTCU7jG6A7P+M1MkTML4sV/YReBc3NSAexc8PNdn1RH6qUtm8EvaMeGwb351FbJCUsQJ6/wEHzmqZB4FBi62k9A2zWoglxLVVxJMtZbrPZht9znocka0U9f6eJHVPDO/MXwejsdCsoCB+fp3s2FC2/Z+I2Yl+zM71vfG+wYS3doEw9MJ2ylY5WHD6E0ODDx6gERbLpq1R8xobGiqnQeSOq+2rrW9E+RUOaSGxvrWhkbJZJZb1niH1NFej4u3eR2z2tp0DBW0Evo9nsvohQmMTHwbDw0/DSp3XdNDRRGqom13lTsWLa5jChBJZCuMlorN4f24+9zOihhyG+5FiVYDBRTm8RQ4Qte6yNmtudL2F6b1sYyIpnXQbNwVnlu4TO0n5vN2JAYXJbsS5v5jUC/m09aPiVMfNLQODhMiNANGHZpyYZjUx8k0uZu7DG10aG0FzG8oDYvc5J54J5fDaVlQsJLVx7DzYUBcRNtgNuOw7etqoBYNW3uiC3fzVncSdiFQoWi/mNJBrZG5cek6zMTJnpZUwJX2iZU5ix1hE1p7+ZSuy2UGOcrltLnCdIWPxAhmr/mZwQRsg0CeeIovj8vDHyvmcmoFcASv6PHtnFCKY67k+zvsFdUCaCLGNe5MW4dYIV0zO/hsxWEYkUMAHtzoihjS7hjCM2FLtpCOsSM2hAFvhO1o4UsplTaptR+toK1RNoGvP5MCXgkyWpFISpuxbhgvg5otz3QYnhfjijZc79wa7Ivv2Zka6uqhkxaoDtqbNiRQNNnFpxzRGdKvPO0S4NEuea7XplN43wBq1FHrGIPPOKU1mmgd0NZx1N7Z9Mr0EClA61lyI4IRugRuvWy/4KLkfPpCe1WPKZ5d4K4lVrV9t9Mo7LUJKu0PQ33c5cYn021GfZXPNnrQYHdE1him5wS1xg71FwkyzvHJDVSuDYL4tDwSHxiox2MwMh8Fhz7jBzDbTHb+VLprYAhmUFjm0NEBbCxT3UO4dTSgY2i+FUYlXO1C0kvB0NWNCmv9i75RbKMMpxnm21FpPIIiAQxzFcG+WUuWHmYiu8cXxTlcRW1nZ3tT3axO3NzDNBIjO5N5HXj01TpT06L1rTNmoPKAXKMbWutnkXNae+0uDr3cppNzE9vZ1trRRJHVt87srG2a2dgwr26uVV3Uv6NQ2IamDnMiB3PX+Hz/aa0tLa274cptq3zPphltLY1IqiVnR1tjfdO0pvpC8bS1N9Y30gowZnvSkwu6Jhp1PNoVAdTUOVc7RhlHe+O0xvbGmfUmRDnMurVOVY5va2+tb+zogATmQUk722eJeg53Ns4xUQfnx9N0OdvqYvNyNPLC68/6SnOE+ka/3lyGe+NMD/Wz4BGiHhJGZMZzuuvtaLn1Es5eUw84lngRXLmYLkASDYKnk8DbKP365HcMndEM2pZHtok9WiPyqSUdwNc7xYjq9b6+ZYfbL7qinUw36M2zmBOS6UY8NdJ29mT0TNBKpjvQuoXOnnuh6w0N2IHoQrumtZn76/1oY9mLmviIHv91MXhRq13l05paOhthgVVf39jWaTvbG/GdDitinB27NrVZoY7prbvNq21psSo04h5kxcjt6kFWVNN0D7LKycWSBeOudNodykTkEkATkRFAK6JdJHPWKOFwBNAkxgJojSdnYQG0wuSJAggDFenAqXqrjWWEbqx23Oqjtbhu1kGXk+zz8eign22vojx5a3+9/req2mCUIlMeEhWzZCxApBVLeACHzDRKuR9PLdCks7tbX4WC9GEB32OVt6UGaGui4xrhclIso8wVg/bE7mbrTJzjCpK1ZcuAuZRQ7jYAshpnNszrbIXKboDRQOOOztr2Tmgf/GG/CtulfcMwXfTGB1BxhZ2mL9Vfa1b9YrbFLma7wuAy97AqSOvreEXIbTzLqTuanoqXINBptO2cqBXMpPQRwCjTY8mqJj64xKwcyvBUNKJX0zps1DBqG7ixbHBIGxrok7ZFYWgBowqzp+ecVAInLhadrOmOT9JQQWKFaoG0cfMVTp28pbVGbF/C2I4rAEXHI46I/q2l29pR7TAjSyhtFKC42tFIs1Ww0zCqNKw4sD7s2MOwtzZnqtF2vNCbMBeBlXSRoJQPagqf2HfoI7EIzLFJ2yqLHOYslna/DdDBAA/ANqBX4wq9Ra/jU4BRHS4bHVt5psnsNFwtqYVJ2CrYw69/Pt5GtAJJrXHw9VEVO8ZbdDwTBfcg24PTKSXsW8jgWpM4jTGSTxqJq3jeayz00IXeiXSgqgHPb/AuKC6uy/ZILEHDXRyCiYDG7gSihtfUsXRp+z5oDj1/RdLaDzVBVnhxT6pXn1CF05ATbXE1BkQOBJTNxupSe9am0RzLGpvngWe4dBiZ50OH66PzyO3UnDG6tjc/kUl22dfdKhJ9urFNYpXsttPA63L5mRqdQ2b2StT2IIkTqEL9EOl+RaqWNo2vH8JthH02AE4aq3xdSJ+Y7K+DdeoM8+QFcTQkYbLMdPXQ8sA5VCCxCOAd4yF8GwH+RWWkeK2a5k88+YTRiVT09A4I9ipYduo3RuiMobW/cU96wAb7GTGSwchQgkxi/bRrQQUHXTOucC7r622q2fPo5xTmx7vpjBbJdOuLTm8qzTnpjGSaTOygI+LA0Qpb3QV4xlBBzlmoiSF3FA8bbWYYD1MtKdxqAtCvBUXpgIAZ/PrZkShp04Gapqd+xEMF4d0S8zugk+GNAbQZwyVjmM/RYayb7zwSUMGnWua8ziJDtjR1Ll+a3h6hlXkdsVmVwkHmeeO0LqN1ML8LjtReHWjkiqe8usvFNBUt73uZFoGJlG6b4JHiCB1HmyAFyJQTNgRd8tIfiFU3bRnbcKRqx66OpmN8jy3BNm3RBdJAIEAumKp7jEoyok1XzWhIDnM1le8JzI8P4oMH/UMIwv32tjuA1nT0HglZvLIFDDpMDANQujlmLiTHXOMI6NUsbH5EMbEa0inIMqYTMPYLQf07h8FcAjCuzmEwly1rIRg1Gt0AoxebKOcgRTrGxVrt5I/DvjBjjdQ3EvWbaGT5T7aIPbRvpPMzWNL3kTEsPseA55HmJDrRi2ufdGKoO9UI0CKp1NtwPxlT64vfdUtwH4gzj7GQ8A8M4nwdwOXLQAatTukUOycHIa34rFvCCK0+oVZwetQRlEOT0OyonRXsHLLf1UEbE3M9A9/VMdtP512W1IIFNEaFAOppCF/EApaeZLeNyRoLcWpA66Pp9odZjelq0i/JGCkemeofYrrNh0lwvnqlzAfo9S7YcdDsxFQfCNZ8yzc/k4rj4ikR17fAF6EYkxOHK3wSZ4R47MCoe0PtsM3A12zwqhqNScZMQI9bOKFxXMEeox0IZkx8FtpmGQxrEFeXDfA07BiRVGiSfX+mUrsdlVS5tujvMPdXfEODMPCw3YK0PcUDH9th1ba0Ta+ta+yEDXCktr29dm7drGmwZbB8tbM6Wy1/XePsxhbLV9fSWmcF6lrbG8ALfjs7W2cAdVZnpxWqr23DTUOHFaiHTQf4h+qnA6mxvQPHwlrYXdQDqRV33bArCuK+HvcswYbGabWzWmCp3NDYUd/eZCIJwd6+tq4F9vV+bU5QhgvoIGQDtsJAnNbS1AY9cnrtzF1wkA1Mb2poaJxp+aY37TLdijQ1NLbu0l7bNh3SDDbNnN7Y3tSJAJbduE1qwvzVwh5ndqPla2mc1mmVtbTuBv86oVQzamfOqm3B33aI2vLPgLpoBGdjQ9OsGVbINn4IzIAkWxqBoQlLG5jR2jALnMGZjbXtjR2Q3MzWmX9obG+1gm21DaQ8CLc1zWlsqUVlRaStvXEGlLqprWWuFQJHR2M7ZAZQax0Ue67lb4eCdMIPvgZplbV3Qo46YJ8H+84g7sqo0B0zWls7p8Pv72dBmpbf7Co6ZtXBpq+lscMq62yFrSmtqnFAtvRhE5kMBfUtgjkM5lqB+WTTilen8RdG6q7MYC+aL4bSPckFGUSBeC/9BvGxLASqT9/3GqztzeyCCxGHUg+bjBZccVpMmQazuoPJr5zdZJlsVbJz5lAf+ceYwGtaGaZjCMPYUXYs6Zuf6hVByE1BfIvonl1c37iIdNmH7dBDtAkzTQ76/aXY1ePznp0M4LOT9NCkz350En+D9NCkV4XAFaRnJ5Fq0a9XRc1vuaFXGneMfsvN05M+NYp+g2q8ebZyMrhGqM2M749NqK3N70/M7zbG/6fG/TPzu4P5/YX53cnw/dq4f2tSm2Z+W0wZ2sA1Sf3ecM02oeLGtxtcm6uECbPQ/O4Ov8EQfgISgB/YTvCAeyt1ooc8fOoUDbzqDAZnMcgyOJfBhQwuZnA5g6sYXM3gBgY3M7iNwR0M7vJQPn9JNY2Eu9nnPgYPMHiEwaM60K/sQI9pQq1NeJxL9ySHeVqzNNosz7DP6wzeZvCu5m2yedeyz2cMvmGwt9eAZQwOYHAQg0MYHMPgeAYneCmp2XZSJ2rCHJtwErNeyeBmBrczuIPBnQzuYnA3g3sY3MvgPgYPMHiQwbMMntfZ6bGz84Im7G4TXmPWtQw+ZfAZg88ZfMFgrzID9mGwP4MDyiiFITuF5exzcJlp1cOYcngZSbVPHVUG7r+po9njGAbHMjiJwSkMzmCQZXCejm4jdRG+YLuvR11cZoVC+3nUJehB6FLmfYfBhww+YfApg28YfGuX0kcpeNSBPojvMI86yMdCwuBoH6UFfscy6UQGJzE4hcGpDE5jcDqDMxicyWAFgwsZXM7gSga3MriXwSM+M3Q8jnk+y6Oe0D5bqWeY5XUGbzJ4j8FqBh8y+JjBZxqc6bGb+ij/WD1cHePn9mNwHIPjGZzA4EQGJzM4n8ElDO5l8IQGf1NPMeVZBs8xeFWDG5yMvcVe7zL4gMEaBh8y+IrB0oAB+zLYj8EyBgcwWM7gUAZHMjiRwSkBlsMzAywlK9jzAgYXMbiYwSUMVjK4gsGVAdOYVzHlPgYPMHiIwaMMnmfwBoO3GbzL4D0GnzH4msE3dumD3AcZXMDgYgaXMLiMweVBk+crgqY7XRWEyvjAo65mlhsY3MjgZg3udBr1SfZ6gcHbDN5l8AGD1Qw+Y/AVg+8YLA1xMzPYn8HBDA5hcCiDI0JGIo9iytEMjmFwLIPjGZzA4EQGJzE4mcHpDM5icDaDcxhkGaxgcBmDKxjcwOBuBg8yeIjBowweY/C4Bid67Qp/jr2eZ/ACg1cZvMbgTQZvM/iYwScMPmXwOYMvGXzD4HsGS8PcefYJEynrNQu8WSaHnziycXDYjESHhbmZGBzJ4CgGxzA4jsFJDE4JGwk9NQxpXwPjNPuczuAsBucwyGrgU+cy5TwGFzK4hcGtDG5jcDuDOxjcyeAuBndrMEndozPoVfdjBu+FXq+rCbL6kEZAe9RGj3MEq/VaerSpsfOcqrvC4qGFwVUMVjG4XoMVjmzcwF43MrhZgwucmF9nrzc0ONcJ/hZ7va/By47XB+y1msEaDV5nnjMZvOmk9bHmeduJ5xMO/hmDzxl8xeB7BntFWGwYHM3gOA2+4LQ+cpI4jXnOYHAxg0tMKM1MYnxVhNHVzHUNg2sZXBcxArgqArzfQ9XrUIAejnBLf6MRDKBLo4z2jZoYDmRwMINDbKbDNWmNLguuxO6Ngs+BZeq+qCG8jISDy9QrQKh+c6vqX6hotXeqVWNBRCPomx9RwsrgCOBX/Noxff/QkaGy0EFl14Q2qt5EbQ0BRxLzlAL+P9Pfg9+OYrjHQxy/qhkBjns91dakCH0fwz817Ao0SX+keAEFeshbINq4/tJtmjiWlYlc7qsdleTYTzvGkOMEyXaidLxcqGTbwFYLktiWOA4sMzlHh/nu2q9c7LvoD9n+kzjMV9z8PyTdXWCvBxFtQxwf6BprIMdq6TAf8tSOy3UdNbgimo6fPiybutxTIqa1MibzwUN3TJ/iIhCiuthTE8VO46/2A8+hOuLHIhRiAjkel477o8LxgHQ8GBWN9JB0vGmRQ5Hj4aiorEek41HpeEw6HpeOJ6TjSel4Sjqelo5npONZ6XhOOp6XjhfYgdXzYpSq5zSPFIUJP0QUNoWlO1T7Ch3Tk5plTE5XoW80/1VnvRDH32EJDZFcryN52CN6xIt+4XjJLzL6vHS84P/h0rwT7CEhf5kfEnaiKq/GD3gUHXw2hS0AFO0mXbR3CrN8gCy3eIonMwuWN8ByupdY3giJOnldOtYz939TB+Ag9nudN13tzeR4SzuayHGtbJCPZHofSsfKIDnGkmOVDLM2VKDRE7AKgzKd4yWJ/CJEEpnVrq+0a4Uu72c6+BA5vguJZv+aHRjoWx3oXG9O7S4NQzLne4uP1LNgaQYsl2mWa4Mi57f6RR2uZ+3u64F1HcR7pY73S68Q0Qd9IpHjw8aBpTgxTKW4ylsTwyTD1ZGYP1Y29QovEKf8kGwMwdoPcnGzzsVlYcF/kizdSulzuXRcIh2XsgMnyIvD5guqYzB3OUP7VRYk+7hO9mrrh9fjdFj1QUxP6pjeCf3wnv5HWCRCTM94a0aom6zqaCwQo7jg7+9yMv5BkU+H1SVE/oI3f5JYz5h+C0tPiOlV3Rc+tEggXteuj1yuW4Lketkt8pNhxQrhXxuO59fqXhx0rtGDzpdyfv2aHcVDT1KXYOirPTWWWqtz9Lab4x+wkgWONbo2vrGEuF8TFo69I8Kx3C86wtIIxfuB94c1xhmY/Gc68LNaZrb/ITFNhWU7xPSersy9yyhTa/Qq4wg9jR5Q5grxI/VSFLoF9Nrp+4anHlI2GTWD+4a3tkkHea4JeaCVjjAf3d3aO/XnNUH1Oc5CE6bvbzlRbcY8/VuXTT3QU5jJjmgMMB3sqQmoqcAzpnBEyHNIkYg2RyYs0JEe4DqiCNeWyCWWxcC6tHCidsbGQgk3Lhzbpm6eYfM+FpK6v0iuNuO8X+7RXCVjOthbohau8wLX9UW4NsvlGja9UcBz5XA5dzHRR52LVOVoqKaadcn4qnXK+KrCGbejWoVMD5WKirlKSt4HGNM3VvH01mJMH5Zqmc+xjT8tJcWfY1yfrbsUn1ZYaLZUr+LGs8rVueC3Io9zG4dzqVMEGCJf0+PE3t5i7AevA/tWDruoxkIZmTxCHYmsu4Os7LHjnV5NOgpJvwTSToZUpY6Owsj2MlbTK1438Uwkvum1Ax+DgedA4Lk26djc+Eao45D0KyD9ziYdn5+RE5A0G0i72WmeiGl+ga36sZPmScjXA3xJm+8k5Hsd8/aGk+GT8wNXqVOQuAaJy8ts4ms4ab2Nwd9xOE+l8iLnRR477dPyS3I6koaAtMgOejoGXYHxPeXEd0ah7JyJxI+Q8xOngGdhjLUQY51NOju/zGcXKjMR38RE3nLiOwcDN0HgXW2+LPJlMfCFDt+K3DapUufm5y+mzkO+WVgxTsLnIeO5yPiiE+H5+Y18AZIagTTNDnphIWm7qFDtX5xfC0+F8vhi6pICGbykUAZX5ufm0kJifll+s1+e20gxdUWBZK/IT7ZKXVlIrK/Kr6yrc3tXlbqmkPxemy8KI9TToTy5fDqU1+qG6BbWEeq6fJF5I7+TjFCrciumSl1fqMQ3FOoRNxYS1pvyhf/m3GYfoW7JHSsMyT0U3ZrfvLflp1mlbs+X8ip1R75YjlB35qd7V75Q3lWoa95VKOW7C0nCPTmScHzIO3mb0JtqbFmNd6q/faIKVI+l3VUoFo2JuQr+B+ZkKzCSOmS38Bui7eNsTWgIpgRCO87+3ew5x1aA14giXhjHb/CDpRWYpPlg6UjIViX8jja/Y8zvWPM7zvzi50crJ9/oxS+Zlk+qghjUTp6quo2aA2oLnKngd0vzuxX+QokmDFMiyOhEtXEphk1KMQxXacQwsRTDpFIMmxqGWDGGzYePIax+hFVnPhj7Y2zDkdTk41hBXbCh4ljRo4BxNH0pdluc9/XXX6cyjKjt9GJLO2r0alc7tnd8wurnECKqYYUOTEmcMzZ0rBo7DtKorrNiIdjj7Ii+zduqk1DjW1WzmTrZUx2LVYQ8smBTp0yWivLRwH/qevKftl78P1GnI/9PYB10plZFV6qzXdp68DmHlOPAvb1agfCnwHSem2m4UD9R5+tQQXUBgqnDco9VF3nMB85/OnUK+2xHZbtkvco2Uq30GE1aUF3qodXd6OaYugxhjaSF1RUUMyVy5fokAuLwS0pjvJaBX+HSU8PfANxYw52NZAD37xxJCtMnwaNaqOqkhNU7jomqoVQvajQMmxRj2KVUDNNLMTSVYmguxbCrYZhYjGFGqRhmloqh1TBsWoyhvVQSHaVi6CyVh1mGYXIxht1KMcwpxTC3FMMfSjH8sRTDf5Ri+M9SDH8qVdXzSjH8eXiGWpifdnJ7aQUq/Z9g/hu9ZF4Um+k05pfqOV2G4UfFGBYYhi2KMfSUKmfSMPy4GMMepRh6SzH0lcpDfymGVCmGgVIMfyk11Q+Wqup0qb6XKcUwVIphUSmGxaUY9izFsKQUw19LjUF/K1XVfy/F8I9SDP8s1Rb/NTzDJLWXpxTH3iU5lpbk2Kckx74lOfYrwVFylTpJLfMMX6GT1P4lOQ4oybG8JMeBJTkOKslxcEmOQ0pyHFqS47CSHIeX5DiiJMeRJTmOKslxdEmOY5hjy8IcUXWcx1nPWep4XF9ubfYszbgV+RlsE7aHrYilrvHoFWEF4Gs9vBmx1HUCrxL4esYY11EejOznuH2EvWNM3aqT/RmsdHVcEOBGDy9QJ6mbOOM7/MBV3SR1y/BRYK6qMVO/oF0xlvB2U0Kf9oNN0o7gFyK/O3VpllG4ctxN78S76ckjcHP3S9oc+2FzjBxtSNqO9nvVjr0Rb/h+xZv2LXLMj2oqgEO4xcbwz5ifX1MFhmJGQ90cVA/SjgBq9CG9NQizaYVfbhknqfu5Nn5ToDZ0qZ7wYhK/hSR2hjZa/93g/7+7ux++B7Ol5XduafmVS1qIo87NUevi2BxJ9SRPlnoCc9AwJ4s98Sktl1lHLqe542l0xfOiB2m7IAVq51ldlEr1XG6lPE9JAHiBwPQtmn+77twAXmTwEoefP0z4l5n7FQavMniNwTqkgQW8y4sFnE4FDKs3dLNtAfvtN03/0IYv3qlNQN2YqUG0jPFObXZ7j1TvFQz03nCBtlDv0zAC3h9wBldr4OL7qcNnoikRYLxaUyRi8Nzc8SwWG3CF1YdcIWH1EcOYgXZYXZMkTLu6hanJJUz3kTC1UF1voz7FsDPwjIvT/YLBlwy+4pz8SH2th6mZheThW6382KJ5Z/Vd8Vi/LxI9gL28Op32mPrYFTl2mpj6JJeGpRmLhWk1XWypV3SrrXCamKGnieZxah+vqa19vSa5/YgbWWsxkjaqkZFqf68tPTSU/J7qfbnXrvcDOaZrTYExiuepVtspjvHqYGTpyO8RFN72PJQA0LZRhzGtZKcisTmcs3Aoh8vv+tNLcwE4gmvjSAZHMTja63RQGsk6TTUf66UZl0ay4xDPkiPZbm7hm50/Zs51c8xxcRzoQ9ofqCJr1clchNxOFlSncD5PZXCa1+5/p1MWoRZ2UGdwFPkCdyaHPMvripRqb73Cnc3gHAZZjmlntYJjOpc9z2NwPoMLGBTq/xey8HWoi4pXSLE8lKqi8eriIpGS5yXFPbdRK9nzUk7hsuIF2UbP54VzfzmHu0KIXRpl4Y8kC5VqldfM8w1Tp0BsY9X1OvFydYPLB6TyKvSZrSX0aopP42sQz9H4WkG/jjEmujUOHDPNwFGtbtSpoFHdTV45AiHvCdTt/8MMprcUb5y84gH7revHftt6sGPe/oTl+E/I2p/gbx784UoE+zCO/X+GPxw2Mes478bhbz784SIDR0IcybDiu+APO2M3rafvx+gTZq29JRZ9gVkts/lmweORXyPnn83o8bCo90d4wAb8qKA/JttjMob+k1kbPM5dIayeMBB5llI7zCemn6onuaaeoviLzNFPc9XG1DMIF9oBaKJ/br0isQe3pHtw68kf/vZwc+zu4qCq6jJV9SJG3qir5CVRVS8j7tH4FcS7m6o6nNZR80xdvYpevVRXrzvT1xtcrje5/OPVW8X7+ITiHYAGtxs56Nssg+8weJfBewzetwcHZ3S86V+LYLxaXTTzWCX/gTUSpxqJqTXM+iGCsXp9xjR7CWZ7wnLLqbeP3Hw69u2wj/WZsSKsPtG9oB/ahZYZE/Sm+mPEo023uZI21SkIMxr+BuDvLxBWqa/s+YZaGpYsX7uWLBMAfEMAvL7N8zKhJqvvioSSMX/PIp3DA3nVPFphYO/tMd8rqIv9hWpy/baZW6znNnMLZ+u2xXpu3ahRpuGOeJCUACNjQbQMRS0+9taldO8HWwdBpW6d/cqqbfXHMsSsTPgzFjgN8WRggLOvBvEAV8nqgGrnphD7jXH87PtFhQZGGg8WuceDIdd48JAHC7MYKKm6CJXBNOJ/907/XzrBFMeNLmUVlqgBC7mtmTbsq1F5SpZq+6ZUnh/Gsgd2oj1Nx9tOHVJGGWQbwFHq0LJq5daZTF3irOn/2jyCjR/9HKh5lDqyzKwjqqb+ncmY2Dxsg38UFah/wuR8fJnpddoTwAkkSgBO1CBsX+zCOjFQTqX/NJJm3//icvtFuf+B5f4vU+6t1cl4SWsvD0R+KssgW6mSHfTp2uByb0/zZupM5N3bMWPF9SuDswk0V6lzkGmph6pqhSbCupVKgMl/58eq6K0pm7qPpy4SGg21cT5x1UXBEVIXYHDw0q4L0bWMXSvRtb+nbgS4ytVlZc6aDYoSVLdhPL0wEN5OANfETLkjhzJF3cmU/LXQXWUG6PkNRru7izDDrv8e9nrTWRjfW2bD+wiCfN3PfG8Nw0fwAR1kF/UgB3nI8XzYgY+UrVtEW6hH1yVtqKXHmE+3CFAeZ4reVQLlCabo7SVsJZ9kylNcb087cT9DEMZFPTfrWeEdgd8V+D2B3xf4A4EvL3PwFQJfKfBVAl8t8DUCXyvwdQKvEvh6gW8Q+EaBbxL4ZoFvEfhWxtgBPqIOsI+HemBljhyDFD+vJRR22AxeZCl+KUeKt9BLsZLSN0W9vD7S/kpxaX+L0xtWkrZTr66/tL/275F2pV7Pk9k3cmQ2pN7U4wqgt/SYAsuzt5HrJxSX1kyDbK/m8q6TbPuEbPuEbPuEbPuEbPuEbCN+ltcOgJ8TmGXeJ2TeJ2TeJ2TeJ2TeJ2TeJ2TeJ2TeJ2TeJ2TeJ2TeJ2TeJ2TeJ2TeJ2TeJ2SeZqe/osj/BMb8A3jM1zVcty04sCq1pBFc7UAtmgT1/hTrQo4LHgevFvgu2d/+jjPjNma1wDeV7ZmxwVkt2FeUC/itHsbPvgqd64epL8KSH6A7++Yx7lIx7lIx7n8x3oLDuuJdLYgh9Z6eC0WpfaLUPlFqnyg11fgyWvX9lNLlSn4fGbbR9e3A1Q5cQ5AnYg/d3oaIP0LyVCO6lDeTEYFXC7yGMWZkd8xHP+Rjat1PhmnqtU5Tf8zd6mMxhK4tK9HsemkDTb3cY9r642LtAn5rh/H7QXKg1T6Q/IGw8qHRvH/qQZ7mkeozc8mrxr6qQjuMI6l9pg4jF2tZLuz6+EJ0r48F/lLgrwT+WuC1ZSUECDNViUvDg7WwboSE52ineQgXaQwUCVZaE9R3GFtVTZX6vqzaigVgNY+eUybrRcNevmq9bt0bwRinEsY4lTAaYtHbg8KxjFNLfdVmPUyxANhHR6fUvjkJjFf7uSk0PC8jmuuA2W0Qex2V7lBTXpgBDtNJYuDDOa0jOHVDGaeO5Iwdzl72zvko9noOkxzLU+gEnkJxe3yAr9reHi+3cUQdiHftD/doa8uD0XEEOWLqUJ+sHtNWHZj3IznvljrGR+v0ozzNm6jjdDZGqeN9sIdxTNCq8NQ35+he7zbszgqRHsGRUjvrO4N2Ie39CbSq4xtC3zJMHHYtlDjU3BWsqtVNnqsN6MG0jvbApHCMh5bv5kh7Sv6Rds0YaJGTfXn7sSmlDrh1Oz+9Gfa1pR5SmJRNPRbTPA7/HY//TsB/J+K/kzykRnkOCzAa8v08gfW2d4aVm66C8epFfRW8r8Bayq4ou+D/952MV6qXMI+jYCe7reloL2tCgd0i1Nwr6Plbp0Mo9SpSFjuUkHoNJTvrgaje8FEfMXHTEy7neOi9ieYfq7e0Z6FdqWRU6m1kDKFSTffPn6t3MYVzUWTf1y1Js46P+iEK0lKv6RSj6X8lSgpshIcLFtXBUNrP8zRXqzXIez7yfpQzBoTUWvS7ALP2Cfrt7Pj9XH2Kfheud9aGC+bO2nj1uc+2L88VuYnqC5/ZaowlQ4dchh+pL3kc/coZR7/WNLwwQKNnc7n6xueoOYaxnxipvnVy8x3FCFSlvkeIl4b38hs52RsB2r8vZco+fsNjpKta7aspQiRYLINqP/SLQvGX+V2dlwqwv/bcRB3gd1QTRstCKhifGb7J/zSs5+WUDVsbFFQH6nytr72/Ugf5XTUKlIPzKIfkUQ7NoxzmNzn5iifVdb1JABOVnwaYCeoIv5lxn/LmzbgT1JHFfWHwPsvHk0ZUne2T1mPnaJ9lOItlUVRP9miPc6mdNT5P4PPtAOXqAj1vneJBp6UuslOx1MU2LnyJwVKXCO6VAl8qErhMJ3Aq5alcXeEzz+OYbZPNCdsmEcpWe+kCX+Mq8LUiqetEBKtEGa8XlfI7GfgGwXQjdS2dxE2uJG62fcrVLTrLp5ss3yYiuB3xf2l8h50r19UNS90psnuXyO7ddkTl6h6dxhmeDRc8Nlzw2HDB4//cBY9J6j7fMLlYhhz3l+DYcElkwyWRDZdENlwS+dcviTxQcizacI3kf+41EgvfurOXlg/Zy8mIethHT3poj0dtpnL1mF5nnm28nrTDRNVTYgEcUU9jDOcYNn2OrFetz/IKFlU7A6hyPU5rfIdfjGVLrbWypQYxbSD1Dilus6xMOl5rj+jixPqpiQpvjv/bLpQX2UO5Nidy34BlHY+1e4KuXbFByZJnBVqeXOSxTU9iyHymx2V7sgPq+PbWdUVWSvJyimWMBzQ+W+oha7COJ0OQiXWjHHMJS5tL4EOwIEn2M7AmzE8w/YuxOS7xtE8Qr8Si0ldDoatfE8KsjTWteCJmkQypwLFS6wLh36X47zL8dzn+u8JDWuKLUEtwFSo9L9YP5QFtpT+nEYB2qT9XQzZBXca0AlqMcnW53+hRYNcNEVyhmUfJCK5kWkE1yFW4g++HmK7mmPohpkIKl/VRryh1DasjbO5rNaVgLq7T+halVnGw6xFMaB6vbnDq6UZWaGhjueZx6iatfwiqm9nrKTY3u4W97FC2ivFWTsRUvFK3MbNJVqnbmWLn/w5NKVjaO9EPa/0uAlCdd/uFvmucuoejy1WgVbGXraO8xgP89xXnvy+fP6ju1/qasQbUVKoH/FJHC1E+WDzKB/OjHKsectcAPy3WvJl6OK8m8phi6hFHFE2lxNSjeTSlHsur+sfdzQNjzEnYa640Bx2noOMQM8yf6q+2j0ZO81fb1o+nC3yGwGcKzFcTMexZdjziJRXX8ykw3tg8rtdTLHWOiDSL2Jw0rhD4XJunXJ2nB5qrTBkuEGW40C/GtM1wfLpWD6b8/Ea2wn5xQw+qOyHTCs00xX5yOccq8LiKI0MVoes8sXBoaswfCm35tN82AfurOfx8pnBQPfjNx+F1FaYSKji+Xo+nvs/bZYzaTzDrIr7IxQL8kqithz2iuNqu/XpMBE3S7BedOT8TnENV+4HnXHM18HuxWDnA76Vh4rQfmi5UfjLLzJiaOqGYeSX4nTiMH78oWtAsk9oiYlJ4ZTjOrXAavdGeRtuD+JIdvsEUVK8zeIPA5FW09LjB4zzHhI2nVdXUeG/q56jtI6USLyZpXcLwF0SB423/8HFYuNqzbWGXC+F4x1/t2MJuhVVyEx/OvzNcnVBXuZlYm8PqPRpTyKb3fQOR6RYSsJM017alz85s081t6VLPOp+eucJtW/r8zMVf7T4bsf2202WgOrmF62RYiXqf1lfH8lJ3OAVttpSCNltKQZstpaDNllLQZkspaLOlFLTZUgrabCkFbbaU/jVbSr2aLaVezZZSr2ZLqVezpdSr2VLq1Wwp9Wq2lHo1W0q9mi2lXs2WUq9mS6lXs/+6ejVbSr2aLaUazZZSjWZLqUazpVSj2VKq0Wwp1Wi2lGo0W0o1mi2lGs2WUo1mS6lGs6VUo9lSqtFsKdVotpRqNFtKNZotpRrNllKNZkupRrOlNJ/ZUprPbCnNZ7aU5jNbSvOZLan5zJbUfGZLaj6zJTWf2ZKaz2xJzWe2lOYzW1LzmS2p18yW1GtmS+o1syX1mtmSes1sSb1mtqReM1tSr5ktqdfMltRrZkvqNbMl9ZrZknrNbEm9ZrakXlOr+WpQPXQyW8KNQgtG3OVdpo1HVtMiN9ei7QayJ7wVVUWn4L/bPHTllc0YcKX8kdgdrhX4Y7FjneqQPxEsnwr8mdi8fi530F8Ipi8F/kjk4SlxP4+t/yqcx3pu1/mnrH8tovhG4G8F/k7gfcsc/L0snqDvFdBVllPUvW2yMVblXB1Kubojt1ZlForV6j6BavvpovWuyoLVZ1vJVkNO7vRoK9kJSLhLVNsJkn1L9L1b+O4fKBLxfyLnPXZB79XsBwr2gwQ+XzTpwYHCzXtIQET/JVXkfZwT2CWeRvUD4HQNlDojYPQ3L7CEHybq8HAbl6sjAtQh7je1dZTIwdECHyPwsSKq4wT9eMQ1Wptygo72AU++gAgZOingaHVODkCjPehxm/eiMikgNp+XU9kTXLUPYfmnqLMCtM3qhvKeTTHWjFHnBKqjsVDIo1eZU6dMpt/mX6isrprRaFQ7IhaMYTYf9hitYEDalOH3Rs7VUfubJ6rzdNRFGLh3SNGfYFqsFTO9sdZB66XwWG2BbVtUj5UW1SPU+QFDNYZruSMUSeojQhYv5CbR6n7wfdT2dRtLU9DHRFDax24sI35c+B7gFxEvQN8nbMGLGfUEVYl+YKu5Sl2q6xf1GJdhk17hAeLleUQZd7v9PpfI45PFike+Twlfe0RD38voqetTcMQfCyxPe1yWwtfqDnMXZQfA3QzuYXAvAbQiE5J9jS2n5epaKdkRdR0W52DTe64WfXmV3Usi6vqAGJBuEN3nRpHITQLfHHDUcbfYOKpuDUiDsNsE1+0C3yFSuFOMxytE16MbUVyl87HOnrEb1lL360Iu9eRMGM4EIPp0WD9And+9XeP/cdR1n13PYetwUZQHA9W2nZtr2Co4vviKjy85g8r2mLHnhEDtJ4beh0WrPCKHYZo+nkc521hPH9dQAe8fpoBB9SyL2XMsZo+J+B8X+AkbR7DgZVOf56NWOUcI7NyOsNTTgQLNZKlnRGW6ZqyDKesv2FVQrl5gAdDV/WLAZW35kkj3ZYFfEfjVwnl4TeThdcGyo8jONpibF3Mn0DdF5G/JlmhB9pcKDQg5bfmOSPsREZtLThXGdjrHZg84LxcbcMj3FeH7vszbEaTdvE2r+yz1gfaj9zpWC7xG4P0FNufyWaz0DwX9I4HXCvyxwJ8I/CljzNMH1NqvrkN3/1xU2Bdi0bDu0iFXjOspKZ+KFd2XcgAtJDZA/qpYi15MU8JrHmfVAP9ezxcVuRT9VkT2HQ8WMAB/H+AzJloDB52xRs7+ztoYxqOgU4eyBpYGC5Z6n6DTjfcVWK519wsWrIBlQQfvL3DektzgD8SIsVouL44NYIW9MexIdnqwWl8PyhmzkRI0lDMpE83b5lIAnEVFwwWbBnTKGaSvcjRvrlYwfy4brjRe1CfGMXWu5kLaeeQNtPNzaVC25aIuirX3E6Jl5FL5QNF6Bwl8sIjzEIHl0vpAbSNzuKfAlPWvrbSlrB0qcnWYyIlcjR8eZON8SvoIwXZk0InqKEE/WtCPsZNwieqxgv04mbLI0Qk2jqoTg07fiaqTtGuCdp0sXGZwnpAn4KdIoRYDixT20luKmDo16Ho/kMKdhnHIS6oTCmw/VtHI+da/sPW6sIis5AjHRQUb8l9c5/wYM/+2mKn2Fqu5impnv7ITMr4jVgMrpfzkZfZSziyGnYJh3y04GbsDIvOHVJ/v2SPz+xhkkroSB4LVnh1H/250/iH5NcF2qYvJHZLlrvxj0cGvFTV6ncDrrY5ZFXSY9gsKJqmbcWoWFv9B+kyUqR9qhA9F/dyE8W3sbl5ak9Gs9ZGQtbP0kAubFQIQ9hZREKlHeFEsegrrbCx1q93BJ6nbgqVMCG8vyXFHCQ7Yiogh5S6B7xbjRVH10Tw8X18rz9fvxWB4rH4fg/sZPMDgQQYPMXiYwSMMHiUw+d0yrO878VQea1x/JWlL9T623udoJXadh74PRXOLfiib4PVsrrQG46l1LtYq9SFPYx/R4NJcqda6Rh5oyo+5TT/RoFx9GnRslKASHkP6z7WEPW5XVEQ9gfn62IjeU2KULb5CeVoMcc+IOn9W0J8zGPmfNzzY5V/Q1jGfmARvFcFfFPglqkvN87IdHJZ7dhIR9arM+WtCgh3zg4h6XTK9YcckpoOYejNvGI+otzDcp8Yo6R10fGYieY+zYG/5HiikYWh3XkF3dWQM1Y2hvhSh5Orgc4HlrvULUUIZ85eFJjNMZWdM5SupvZXrl8Krxm/lENyFEXwtIvheNLAzm4BwhBz6EYLnKIH3tnn0HME1SOrQb0Qi+4Sc7OwbEtn5HXJ+W6Sul4UcfJYYE1w18gINhd/lT7ti5zL8FCyXfd8VWeYXU3ofYBes1MZHvpi33C5Y3ny5Dlr0A0VlypXOQaK61mHVU2Q8zV0Y0H77e3sW3stLzXR4oS6B7IvJGtibw36YyNowK5vPzdrKl9MdDhfBHdW3W3c5DxNe6tUqF9gmmOcrQmh6ivmglylPc5nxDPt+Aa1/Q2LhUxV6S419nSYZ/FLrPl6beGoO8RJauezrXb+VoLNryKmXCC6inKXED1/yFVedk55iP28RLcZv0XeZ7VtEY++K/TjZyUlrsr83V2tygEjPpRKnQW658JXjkhyLbvbzhOQefyj6A70Fxh/nsOkgW0ZP1TynCCErvoQ8VXCdJjripaLDXSfGYbFDKXom9w0NYQebDLkOAdZNjm0BK3xmEMMzA/1FYvsZwzzRH144i22Bh+nMstFkpyq4YYxoM+alXs1/gpgv7U4I+AzE5lr0I2L0+peEn+b78dxZx6ozQ2aRNVpa843MWYLvSq/mCBmTm4h1UMLsnadXPFT2kF8i5TCva/NTfKPiioyk//Binfl2kv4jhPe5QozlXHieoMsNxPkhZ5S+QPBcKPBFotEuFnQ5vV0iutJKwb9KFOxSEda15J9DT+MUKuQwubpcpFI05guoNx5lj94hdRN+efdwL6CbER2N6BYb3WpQUN2GUaLa6/ZQbte6Q3sF1Z0aVKm7MNgxXhIwe/KRhZBV7ixFytWVIa058mqvq0Q5rhb4GoHfsg9HQIQE/TqBV9ldq1xdr5M42qtTvFE6C57cHGPXllL35xS+Sj2ART3Fs25FvUd08WLteK+QwPsEttsUc5amt4dExnJbxbTBcBkrlgFZoa5EN8ZEj7XFMoLrc3wKxww1b9A+8rhhVgb/55Wnw4z2b4ohd12UnDkzQmENpFvN6KgWXcuM0ipE0yhGZbju6sSHhfz84GkEpyMpBjQEHy9Gp33zfE8QvvbKQFslLSsbe5JXKDOewMCojXiSwVMM6OPhlZOTGOOJXqmeaHfvOq8Ty2m5tHb21a6Z6hlb2CPq2RBpOebwI8RoNOUtvGPLn9ROkZMaGb+c6iWzGmOh0e5WWL8o5oSXRId7WbTSKwK71o2/xqsTp3mLXnk53QshXg85bfwGYwzdiIdxp3vNXRZgK3on5Y1ifhjNShoQz/Aaq7KgepeH/vc0iKn39UBEDzxRWZq3VKsNDfeJtKyDrrnCsSRZbq7IAOeadeNsl6e+EfUWNuKZXt0D3gm53pV+n84hf29uKKwMmhUkl26sU/IPh6mVt/RtnCbbr8nxu7bYTR3wWzWM30fDpPeODtds+zWLpx+Ha6HL6RvZZ6EYvuapG+08TTnBeZpywoYvZldv+GL22A1fzC7AsOFBJc2w4UElzfB/wYNKGx5DYoYNjyFphg2PIWmGDY8hySg2fDHbzbHhqSPJMewXs+kbXmd7+WKBff3e2b/K/ShbBMG+6hyv2Vh9pjclQ/amZIg3LBPUF1rFlvXaL9lkvY7vV9p3heO7wutsdr4OFXsiYYL6Voc81wl5rgj5XbGQmPupWODzeB9bpfYK02obNvlh/bwT7qZdn/qjm+7nc3GH/dYffTGgQ1fmSPpYBH3AdELMfMB0Qt0k+kABPTl+gdfxxx2a5kDLT+3rtrHMawZ6xOhCW6GiHzHKel2PGOmHjhwe+sbWLBfLjkg6yLN1MLSR2jc8Sb9JwAcuO27kHLhs4Wy98cEPz+TrtUqAL5optSxstHD6IQUQpv3DRulnv4ivvdpjar9wzsvw7bapMKlGVgu8RmBp7CSf8PpImsJKgyiBP5FmyqSQulgqpA4IG/XTcgYHMjiIwORJWOJPnIeitBKszOia6C4GVcolGC1+Nn4TdYiulFHq0LB5INuYumD3BPk7hOXvUC1/K70Q6PASgQ7PCwT5uJWfrBAnKr6SWyNbw3RpcQ3TZUWjtzVMl7GG6dZiL0GgviQ4jP5iK8zE5aZjQi84OoyXZrx6Q3qs7UDWe+k1kd8Uze+V3uY/qpNZGof5KJnQNT3Ir6EfHyZgqRN13V7lralQJ4SrwzF/DPMwdQqMqBzQjKhhRw4dmazCUJFYEGRch9OnEHa0pjDn0XB6JdefnaUCL8pAOkX1Rg/6ivltqfOhcw8eU2oqgUUSnIHVKTMPrFd5RRv9Fwr3FSTcMMhdhdPG1fjvWu8P/QyCbeO3bt9DIMOa61hILHWGXfMRdSbKyCozbJ4tmsT1nYiZGMP13hqLyn+dVx9I27dkIe5CR8zXeYvdS6Mh/wado81jk9WKcPXGsUhMS8tN0OoEbvAa+7Yb8UTtfD0sTlAXsIx+pJ98tx++utnbXKEuYqHDaMgoiETlZj0VbaEuxiGU9pzUqhXQYsLtiMYl4eJd8qRhuuvKYcJdOozfZcP4XV7MD8u3Hw2eNznNewXWT42+hnBl2HnqKqqucrmu1q7R2nWNy+9a4Wep6+wYjfXq6AIycjPl40o2WhilZSSmVoXzX7W7nmkF3mOz7RZGSaFS6gbMhIilWt2oKQXiiKmbnFTtB8xuzqXliqUuwi3YOW/Ff7fhv9vx3x10UIH/7sJ/d2PXbVAPa0kMqUewFz3grRmpHgtXV5L4PcjCG6gZr54IV48uoPYAz+ax6skwDayVaCcvOCBzbRDrPaZv3ht2FPj3YXL3mVH+QXTczwPjOBT2u73mGtFTYXvpsdHkB6gj3EF+zePV02Ezdj/DQC8z6BO3zzLt22Cu5+bqOe6AOSHtwwfiep65cqKQXOPVC0XiIs8Xi0ShH1Oiot7JRX2JatEU9XAq6q26qGH1LvnRYuxlPcTRRalXBH5V4NcEfl3gNwR+U+C3BH5b4HcYa9s5vN/FudXGwMgWU++5F3VZpx1vZ/b3ZeFq0OsuLtsaLltEfYCScL0XY43g66ywovaaMCs9uHB7WC7cPuRl2kcM1jL4mMEnDD5l8BmDzxl8weBLBl8x+JrBNwy+ZfAdg+8Z7GUZsDeByWvpfHy08/gZrpYPtapd3+qJqcM0RXz3Q6nDKYYa891E5DKfqAojhQY2WA8eYbmnj1vQNvRIq1p/WOQod0oQ9GjLBI2pY6xq92uYQDuWacc5fMfn0WB9Y9lrDvMOIQx5JzJRRBlUJ1nVeidwMmfmaALN49QpOdljLxCWpZYzi+9jOXPBvpYc0/ezeGUaVcssORNc7Rr79xexHWCZRTtwLbecU/VydaAl7F2j6iDL2TtH1cGu6K91TTuHONGgnJ5KcvqIlNNTWS5OY3A6gzMQTABwJoOzGJzN4BwGWQYrGJzL4DwG5zO4gMGFDC4iMHkL7HznOZsZaOSLWdp0U+jBqQ+F91ze5gXVpbopw+oyloSwutxAqD/7iz66oi+xG8dSKy1nwn1fTL76e0Bm2P8FJldjpt7ROY8GjBYTae6U92MszwANM84JVtb1Eeas85zl8bzTzX/KmEp9Nx2nPopT5N7euim0Q9cGDTH7c0JE1EbABLVB74Yz1uoNZ6xjN5yxbjhj3XDGuuGMdcMZ64Yz1jyGDWesG85YN5yx/k85Y52KO4nHih+vPI7HK1fzPsk+cnycjwSutobRmd5F+qET+S3x9dlJbLGeq+0tCq62tyiw2t7CXiVnnVVyVn6yJSvXw3pb9oYP66kZCvKHuggdnr6DsTXXTQBHubrGMjuG5ql6N/YW+jYZ1vdoawZbxc3UtZZRtengdLPsJq/rZtnO6mRvdcGPUAA4xWvAqQxOY3A6vSAGO4gd1BkcwZcc7isGZzL7WV5XlBBu+vqFO5vBOQyyHNPOagXHdC57nsfgfAYXMMgpJu2HLvSa/dDv1UXFq6NYHoavoPHq4iJRkuclxT23USvZ81KO9rLixdhG7zcL5/1yDneFqTaUs7+ggmHVv3QC5Bw7uT8pIT/Xzh8Lsh+be4iTXJWb5KrCSa5y7jXG1HVaqkk5SHrSXPUHfXjoieKjzJPefBN5Gmee5HGGPfOOHm1TgqdyzA1WuM0NfoTFPB+HohRd7qPvENFBDj8UQqk2YE6f1jmtcnIa0vl8xtseUzdZqEg2D1n+XevX9itz5X0WZuAZnfetMUCUA8Df32sUlMFFcc6gOKKC5ZxIT/ZhtDX08aS81yTJbuA5qda7hZV4tzK4jcHtWgH8aRkW+QJpONAcUvdZ+nviIXW/pT+8HVMPOM38oNbfVquHWCv3sAYh9YjhH6cedWvsAOyLoj6heYR6TEcPpMdJ8dkcVE9o1Z2twwupJ00ein+A6SkeTo2eWqmntSrYpoxTz7gpTi6UejYv+HM5lHHqeTdFBn8hL/iLecFfKh785bzgr+RRXmXKa6x2vkPoLO8UOsu7BL7b4q5uqXsE/V6m233y+eJ98gXsk2/q6V3JPvkC90n2tGVVCVmN4TX97hrXLX3qpy/m9NNz3f10N3o90DlmfVuU5R2B3xVY2iG9J+j5Nkmv5CT+sjvxZqS9StdUvO0T1Ida3f66Y3HwujAR+6i4r53eGznpve5ObwrSXtPHTxPw+SCM5WUnwpfzInwzJ8Iz3RFOQ9o1Hl2AavWlHk0a7BZqEDZsxfzstN7KSetN91fonidLl6swsSz+O+H/hc/15X4QnEy5jNZzLY43b/MRL7XN1R7TNmt1Y7/ttM3beW3zTk59ve1umz9jdb2rDVS8U8vqJkKn+9SqZq39VLv70THZe9724T8zRNrctQFpe9SOfed9FN9jcgwmv8B0yt2TP2wdvrRK2l9VY0lWeszRBeua9ap4T0zvA+feHT3QjWc1X/M5W1B9Y5lFwjcOzdwGVupbHt4M11j1nZvC30rLXVAksS5XFx+81uDg9Y196IVT9N4R6ZJ2GOVqaYSa9ANjBGB/bAmTOok2MWt40PvGOVfMs3PiJAr5XVPUPmqCk7wtXB8Ik9Hlw31zbCXN3jubZY35xmJdhDYh5lt+63/k8//vEc4PP2gBad03Avw721O4++jFdWiSu+XeJyIE6lQyf1loz3D7oad542uZwPsLfIDAywU+UOCDBD5Y4EMEPlTgwwSmmbLBZPBWyuDnHjNSbQ99e4Q6JlKtjXCOjUD/WusF0vE5JHzZUkvyh17dr46UTudjgvTeJlcJPtqtn3LTHqsE0/Ueh4lG54+863KSgoU4kgqx1hi74r11U9yKdvlVw0nqxEgpBctJJTgsdXKk2r5DfYqdTjne48by2ze5ycD7Q8fA+1RdP2txj6XzlDvQ0cTycc7E8oV7Ij6GivqpRxcVor3VY5ItGC2U6CZWGe3wA8/TJqlbho/CzvsnOXn/yD0p0sNDHzt22vQ2QoOcI85yU3IriJ5/+JTXi1F1ujPM6zsEMDzuUHSe+AzniWf13nJ7ucj9jMd79rRH3+3F6HsY1fyFnP2wbfwBcJkDhTECW30APDjfRAEg221AOc+M6KV7Rb7lQlELBVp2b+9edtOLWZcVekbrikLESwsRLy9E3MtbgHh1IeJVOUT9TZQHPfYgeFbE2dacLfA5AmcFXiHwuQKfJ/D5Al8g8IUCX8TYfmDoc68e83LGq+sELjxEiUfTMLIzqIif5ffKwp39f0uvbHfedvLZ+oIvpb7A/krmykh14c9lvu3FLvWF17EYwysk5nOZqM+8NOLSZ24sP0uh7yMQ3I+f5bwyYpZ8Zr0yginmLspX3jzS1/mkh/Gx9MuQ9Ev99czLI85G8Ap7shn+nH9ZRYlF97/t254fBxyxKfidT2ye++lr2qfpidh8N+Ne/PcNrvG/xX/f4b+9ysjindbgz1OtQLU+z9Wqvx/rfGZDqRfY60WqI/B6Qa/cbTP5mHqJOga1lB2B+SrHxupl9NwaIngFwVh6BeNVM/BCy7yG64FLUM5fp4pvHqfe4CT1K+esCJ0AXm59q/Cagp8k0Q86Uj6MYStCrbMjeKC+0LN9AcP+oHqT0h/Owv8tXV8T1du8eHeKrF8pCprSH64/Hz1BvUO1VlOF9vQV1MwNtp3xOPVu8ZK+V9zrv/fb1+v7YWvxprGzc7TUDWLgvBHxnhrfZK8kI+pmbPul5hXFW9Bxs7FWvDUiTYxuQ6/TDN/t6DjDrBLvEB33ToHl2yr3oNntGWYyvAuZfmFUXzZ2PXV3DyZwi1dn5N4IK2uxJ94nkrhf4AfE8vhBUcCHZMZXoWPvMs31iJ12RD2KHi+ZEj0mon1c4CdEEk8K/JSI6GknubD6EZfIUs+IQj8r+L8uE9l7zg6Mw8lBPlzZ3Kv38pPU+8Mta+mDbh+U4KhWqyOwc0KOHY06ewz7barWRKrH0ZnCad5iCXxYMgvDjrXE8VHJONaW4NhUfcxZfaxIVjdVn5Rm+ZRZniha4M9KZuVzjmR10XS+YJani6bz5fDp2Iqd77xGsfMVSsoHbMd+QRl6fqON32PqWz2K8gxNx6rf5dFGqu8j9kSvZxai7hXNp/5e7R01F4jO9k79O+zmn8vdzb/MY+QrDF5loG+jOiPWOV6IcptSUeayXxU07PuUEfs+0Tz2i/HV+X3LgP23ar8oJVqplkXzPky9v/Yr9pkzCn/AvxIeOzYNrGX6zoP9IRq7Jb/lllwelS15Bilp9yuztY6jHK2j0DWu7724g6hNS2soSy6WaJlDzz8ew8ucb/SSBlYzE9ShWnaq1GFReXtjMi6ezSywrMxMCVg/+5Pj32CbV2JsOrbkyHNsyZHn2JIDwrGlezvNbjRHHMPD/N/o7eAye2v1gVhqrhZ4jcClbi6TjkhguXzlm8uU+E/o4eGy/KtdeJcr7xpVE0rue3z+cUSUVnsHlNlq0APKHCXp3vo8eo3H9l3jydXALy9zKxvW5JxY0NZlL1xBL/0hhxX/L2k6/zcfrED1HhnyWRtZG8UeDVjvea2y1OBCq2zxz7qssu5UnxXu6k0OzE/FB7utcL0NA4lFif5M2oo04m9nfHBhImP5BhNx8NojlelN9lve3dNWsG0w1ZdMJ6xoQzwT7xyM96cXJAatEDJ2JvbMWIGOzGCyf6HlXzyYzCQs36z+JMTTDcxWmEjEVWEnTMlZfv3jyywZSFjllJUmCNiQ7MpYMTcv0q1yuwwNFLPj418U7x1KWBvbgdoSg5DhdDLV35BIdw0mBzKpQaustn+JFaxLpXoT8X6rKt7bm1q8WzLTkxrK7JJIZ4YGE1Zw/tD8+b2JtGV1xfu7Er1xcFihrlTfQCqd6LZCyf5MYrA/3mtZTf1QO4nW/t4lsZM9lldtZPlCGykP/PcoL/z3qjIrECpTvrEbkcsPLr8KgMurQkAJqjBQQsoCSgD8I/QbVOXmt5J+y1SMfv2qyrhHG/6xxl1t+Meb3wmUXlBtCq6RavLYjaoT1bVqNO5waUodQ+JkEd6EsN56TBR4ksbT9w8dGfKGRoFsVW+sqiGKEeS9cZ738aGyybNx5PFBbw9Az44q/myHNTUMrqhxRcA1EoYP7YpCZwooBRFbQB2RR43oG4UwZpRDvBV1sVhAjUQ6HdiNwjLBkGZKNEfc9KnEqax9nF3YkBqnkRiwiHEEMMaA0RTJZqxyGKGM0KmOrLUOmZTbqcq60mmrrL6jA/oUiEi8H+TN7jgkbQGQvjhIt91Bkt0o8pUQZpfB1NAA0NqHQMSCQCAQgigRQJ80pJZkOmNZ3YneRCZBLLp3+ZP93Yk9rbImiM5K9qcTgxntO4j/yyFwEwgtE3sGEwssf1+iOwn9Zgb+6GjTmSW9iY6eBHR7DNLhds6AASHZr2Poj/clLD/xW1XM2pDo6o0PxjNY7igGwJiJX4FrJgRJD8S7dLaj/eyc1d5kBQYgR8k9qZRt8YWGJQ2l7IKuSsNFtH56bXtHY+e89lktjZa/owdKY1VMa53ZOW9abX2jJkeaZrS1thueyIza9l2aZmqHNaOxoalW44qZtTMaO9rsUOG22l0MtDo657YYHITKp6StgfggtJMuicaiasyA1ZRJ9NUODsaXtCT3gBbuTfQvzPRYPhjt+qzR87qgtL3wH4aNefEMtP78IRgZR8zrjqd7XKQx8xYn5u+RzOTxRuO9yYX99SkYcrCNyYVppq0w4Y5E7wKA/ck+3QAVNmyAgWuJFXPcyUGoVuQZ4dCGTLs5pGnJ3t4ZqW7Ikk2C9DRbfWoIMlFue2DbihTaIMGOTDwjw3Ym+0C8pw3166Rj8+NdeyyA5p+dTCfnJ3uTmSWWhbSF0BH6u62RDq7NZOJdPX1Y7AqHioO7VSncqV4Y1AWhqQ8EyVIOoXUwCfKrU9aUtlQ6SbkRXO2JgUTclVJH8q/QoPNTg90wy0X1b10qk4EuP0K6dA5GS1JLYkGmPd6dHEpbYyS9Pbmwhz1ccZBcuUm7JbtBkCo0CdLojQ/A3Bux3ZCmcegSjxCO1qFMGkRUkkz5lCB19Ca73OE6UkODXQkXk86GpSlYLqhrG3Pl2wRdDkHQwU3tmZKbbFNlcFrk0NFJio5PUnSE5ZrSAQMJDqgmRs0d1o7O1ADXHkAddZXtFi000ibK5nGC6lgdt86BSVI7QEpILmLzU3vCaJjSvaUOVkZ7YHb27OiJd6cWa5j8K+bYmo+etQugZ0FUiOsSC1KDCeNo6k/DHGFFYNrAmDrQ4e+CFcug5cP1Dzi0BMDPUJ/pl5Z2YAeGlR7hXeIDTKZhrNLBpu0cgmk7h2CaXhOgqvs5Oe0R1I40Aj06qS7MBwhOf9dggjpu1FDaEyiPOK1N602BGAa6hgbTkHy42x6Ugt3J9ACOWFaibyCzpD7R25u2AguSvVhFvgW9MM2F8X9dPJ1MW+UInREthE6IerFGMKsutixEHT0w4+6hqbsNQm34FqSwqvD/tHhfsneJVUUYOgcs/ToSmQw0D8goEneFVR421kh0tMT7Fw5h31qUGBzE9gghlQaJCka13bsPwYRKgWGuT2S6eiDTKTNvQKYRLunP9CSwDMQ2Oz6YjEOORglHbS+tLzMw/1cKcj2MADovhtAYT2dq04Bc1JbkQipL2ooJ6syhvsRgskuX1tDscZCqY7cEdchYDxQUSt2GQ/aQnh0CPdov2LNkoCcBTa6SNMwMJqGRzbyT1KMMrEdojVNp3GkQEt2+yb4EzSsVWEfJBUt4TvP14qhSDiubjNOjw7iu1h3IQjhdZwDIaVOZFTY045/ttotVbpM6ca4O9NFKxorqXzOWW9pFQ1tEYz0yhbUDxxEfwD2IYLosBuIe60cMVQI/fxlKJByhZApOi7qHRg2lYyAB+wjbReWBNNIgqPifcgup7WlKDcQ9dZ8Lw2RqE5PcEfvjixpSi6EXAGiiBSGSqERI0sXxA5o1YIVT83eH/E2DxWOFhnZ1BVNY+TAh+/WcF0wNDoAwQAeHvRE2ghU1QI8d5cbVumAB9m721MVhl5kAUtBrFuBOC/tgmF1zHDjXCg7Eu7ux7csNMA0UMU4qT9Q4dJks46KxfgCkoM4ZVSttt2knh8Cj60BiMD2AjbUIxEc4zIohNNCT6odxLA2I6yjwl6EU9ssA9C/s+rBNhg4fxv9GMhCyZAzqXpOJz6dxIpLBnWRLfAnUjRXOwBqzFpdwVrkNW6BHWzF0wlZiPlTfrAEdRwXSnKnFqnK7dYPE3MQWbLIcRt04FhJRUkAmI4ibdZe0KtEhu3WUCKaNdDgzmVGmtRYgNdhnjULnLOz92Oq2TJVloGnCGZut0oamkitsAmcN3TpwpYPNYlYQeOUqaG2DKWhFEOCxDi1n/RkZ6k92wShUl+xOWuVQrkyyK96rm8Fa5KxJo4tSsDiqi/eiAgAY0WUnaZGzLYnDe6WD22HghH5LhHZcBUcI4kQAO0TtmI1zJpRycQ/sEHCwg2FpcRLqM235F+suvhh6nx75Igh5RAyhg7pPBJUpQKLRNPBX3eOrFiYyXP62wWRqEEsRGuAaUcJ7NqlJKmCKhs5n11kk7XCwKgXCm5iq0gWiV+ncSKO8J6TVhiW2S2EYoGAdgORRjb20OsDdab8zYoRBXvfQ0J/WYWirqreB8YEBmFtwaznUByO5/o3qDbGhhmAFgR2s21Hv6FRnYkVtNgs35ibp1kHIdxc0C1QjjAaZwSEtHv5MMoNzi5Nx2iGXoUassNpnubeE2icQ8ik/KXwCgAMqSLSAChvVTcT8Rs1vhfFX5jdm6KPMr1vlU2ZUPmVqE/M70fxOMr+b0a9FecD4tjCqoxr4DYL/GV4DzmRwNoNzNAioCzXwqovZayUCP3hd5gX3JHU5uKsP8lRPwitZpGTZ2js1UhNQI/Dgevr+FiqJNkUdks0RAo5YSY7KYTmqgWNiAQ5URW2Mumh/jXdqEFXRzRUKbW5CwIznLqHJVaSpmkQMO3n8+kMttUgMA8mq2whCVJL1hYm+ebSqwt8arX4KMb09rMpRHWVUTz/FKCp0FOCFOreQPjceU21/cWYcQL7OsTkGGGEHmOAE2BhgbA6/dQZcqEYPExfHZUcw0o5gUyeCyQbaXKPsCDbXXhU5yczAShvNldYe0Ifd8Ptj87ul+d3K/G5tfqeY35+Y323wd3I9JmqJSobktuWUI+qnttIOHFPtSy7AtJ04zfgZRhKpYU3iWHppb3uj1OO2Hw2BfmaMJDDQFaMxVMyEClEopY73UssF1QkEgHJiHmV72bhkcnxSDs/m+nJo1KbUmAucITpHPFVzjdOXHl1cttfpRSKAUvzcaZkdHPgLB+7owF86cCcH/sqBv3bgbxz4Wwfu7MDfObDWgXUOrHdggwMbHTjNgbs4cLoDmxzY7MBdHdjiwBkOnOnAVge2OfD3Dmx3YIcDOx04y4GzHbibA+c4cK4D/+DAPzrwPxz4nw78kwPnOfDPDow7cL4DuxzY7cCEAxc4cKEDexyYdODuDtzDgb0O7HNgvwNTDhxw4F8cOOjAtAMzDhxy4CIHLnbgng5c4sC/OvBvDvy7A//hwH868L8YWvjahI33FnipwPsIvK/A+wm8TOD9PU5S2zrkAwTLcoEPFPgggQ8W+BCBDxX4MIEPF/gIgY8U+CiBjxb4GIGPFfg4gY8X+ASBTxT4JIFPFvgUgU8V+DSBTxf4DIHPFPgsgc8W+ByBswKvEPhcgc8T+HyBLxD4QoEvEvhi0bw8ewD5EsGyUuBLBb5M4MsFvkLgKwW+SuCrBb5G4GsFvk7gVQJfL/ANAt8o8E0C3yzwLQLfKvBtAt8u8B0C3ynwXQLfLfA9At8r8H0C3y/wAwI/KPBDAj8s8CMCPyrwYwI/LvATAj8p8FMCPy3wMwI/K/BzAj8v8AsCvyjwSwK/LPArAr9qY9c6yNJ2VYbpdYHfEPhNgd8S+G2B3xH4XYHfE/h9gT8QeLXAawT+UOCPBF4r8McCfyLwpwJ/JvDnAn8h8JcCfyXw1wJ/I/C3An8n8PcC7+V18N4CLxV4H4H3FXg/gZcJvL/ABwi8XOADBT5I4IMFPkTgQwU+TODDBT5C4CMFPkrgowU+RuBjBT6Osb1LGGfvJYrsElqRCy3Zqn/QNqk9ig+YyPP6MXgMPx53CXZKwqpuAnlE8VkR2vQZvy7MRWXOCv9cXlifx+v583MovHcIFdw74EQjK2QBJlJNGyI046LnUjbWvXa0jiZncxfFp1LQYxO5ranWXpd4ZZjtdDrOJmeiKUy1a5NTXWyTo40SPtrWuj+Sa5TANj2qnqxWSBWmDW2Cs5qkxQ0bKrBtQo4Fzsjc8E2OUU/ExCSNb4w1j7CEIAuIcG3nvM7a9l0aO+0j/LpZdXUtTTN3mdc2vbaj0aqsr23rnNXuEHwzW2c2SvMe2yrH1u4UNs8p7xoaHHQMmVxWTao7sSA+1JtpG6RiArdFoK0nnk5Y4WS6c3AojeRARgcIZ5J9iY5MvG/ACswc6puPR8GcUls802P56fAfgkIWTb2SZUbFgE6iQSdojU1nUgNNfaTRypDWLb5QaxMr0UcSyikeVDwl+vF4sCfe392bMNZSFKk10sUynRgGrWCPAWHWd25nhTIp07IjKMyMVHdyQRLP6CCTgXhvZtfEEivYlRnsJdCXyMQRqD7DV9ub2WUwPtDjUPAYqiXVtYdlMWVav1XhYPIrZ/d0ELJBq5KdUIfkH2NCR9dgqrfXHaZjCMPYUXYs6Zuf6hVByE1BQume5AIqgop3d7vrLdQV7+3F43w82MDKAMmZmcr0YF3EtNRv27CkP96X7KIDl3I8gIxnunp0TVdp/ag7TmtaqmsorRkqHKwN0wZBFEF2jKhZTf0DQ0YkKhxMrJFk2vQr7HGQfWEPN6qhdca8XRvnzmtpra/tbGqdOa+lcVqnNvEZk+c3c9aMttoGa3SeR3vTLtM7rXF59I7O2pkNte0N1ghXspStUFdPfLAelaU+1JFbZXugSMA/ooV6U13mOHBQGxP4F/cku3pIt8xipc0/AhCmFsYja0ZqKG0kd6xb/yp8KhyspXL+UCaD51H6Fw+Ye/FEYg6DudCidOY0xwo0pIaw+xvCXMuPpzxz9M9czOlCOtpKdw0mEv1zGIBPN0h6stfyLUomFluB3ZL9eKhh7daTSPSabGHdNTS2dNbOg3GqUbrRcMiqFO6mOY0tVoUTmMoR7k70ZuJaS09wjvmda37/UESnfHdpnXKZ0SkHSacbMjSroC7ZMmaEuTplrzEjDNg65QnGPdn8bu7SGZeprc3vNob+U+PezrjrjXsX8zvd/Dab313N7wz63djOV6uhd5jf/zT5+5NxzzN8CUPvN/QU/W5hm0mmyewxoPYE11ZqydiNqpeWV8/VCl8yWtR3joKE+wj/iHAv4YnCNlLbSY4TuFpjY/C4tbaHRPXnyJqY2tbcQbPMHbTR14Q81Z96tB6Tgv9MRLWzwDUCby/wzwXeQeBfCLyjwL8UeCeBfyXwrwX+jcC/FfjfUC1zSeVXTd5N5nWif1PUCVIWTshrzJZ/bwku9ZLycBL5zxbpzBJ4joh7rohP5uV/UKvf4yVl52bkv7uIYw+B5wvcJfCfCZcTjgssxed/UF3OUHjlJvzviu5LL+lqtyT/IfLfnPAigRcLnBHpbGjKf6Xu8SRyChqv++hSDBqv402dIBmv4zONeOSDF/KC0nQ9hOd07ePsIS4Ee2dCwnR9GzyqiwBj1BzV6W12QG+/2/X2G3/RRL4cPw12LJ7FoVV8dCdPZYGsVDRH1WbG/l5NjTVvQqd/VTWGD35plwu/eH5Z2axPBaua9akg/uKpYFX+UaeB1QwjarwWBuec07BsUm2/kDXR4Z4kuTcF+ggNA6LeNsF6w1NQ/CjOFJNvPI209Oc6OkNeOv4cWTcyVmC+zgs0ujlEd5eDsOselc8/Zyl94nIZ3dEcY5qLxZebq5IvTo2zJb6A1/bFvX5e3GuH4l6/KO61Y3GvXxb32qm416+Ke/26uNdvinv9trjXzkW8sHnf9LBOKlq3UfMOdJjpSO5IVWs+k2kacCx+KUaB3NdVW5Ma6K5VdOrY5q1zwoUgHPqNLMBbQSeflSwwkOa0H5jmtHVN074JM67IYFINnaXJ7iz2cFJt5JOHYK5A+VTkDhjv+CLxThCDlDmlZeuDOtbQDTdegVfLMI1HQ9kmYijDA9+J8Ntmfn9vfvFwd+Lka2ko25iGMn/hoWwSNM8fTfPgGS3qFWucYQaPgydqOMsp1s8chhYHznYYdnOCzXHg9g7vXAfu7MA/GF7z5g7U16QatJIYZy8n16O+wGt28VC8JmWviY7X3GEa4G2q0U2xPuFvcoEK3Wz4Cv2zM27HHTjfqaQuB4pqFlWHJ96ba7jAgQsd2MMwopK62NrhyLs59TbJ7OFAbgss6j3UAJuZBuDFCldKuVNf8eJe84vXcldxr2K9D7x2Lx5qjyJeWJYdsdX8pK3Pb7GwOe6fqKvJLGVkr0VDJ0yit3jqvABirx+J1H+EvfbHotcOmF76F/M7SL3195jJLaizblq4s25pDAhMaw05bb7IgYsN1E9eQu63hAg3gyxmiueel7rstbnjtai41+IiXuJ27Se/td6P5urco6TcxSsbeIk0Wh8fiJM1aRLtheV9wOr6FNocxtEGnTTZbfHBeF8ikxhMsx7d1nH7E3vGuzJ0ZTDea02wQza0ztB6XRF2WPXmSCcoqcy0tWpEOliZVmWzzmpJ9S/UnpbApIx0IkQFfFsczff7rRGpfjTp7mK/RLfURvOxhDkmUPGBgd4ldjzg4bporDXpkS7hH5HMlQsTGVctVyBBcoPbvtIRslG5wwM0VuGH4t2L8Dyh2yrri+8J/6C5Kklx25BYlOxKNPUvSFmVdLlREEYToXMw3rWHKyuhbs3TbZ+sBPFa2QAQfHsk+7tdMe2KBH9vfH6i1wpkUs0drTPlEUpUsOZc065I9euEunqoZVSiHy96xDMJZh+DdTA0gLdAE92ycjZxcl7QPwoBZ6UTg8RmRegHbZnjfabQ2iGDBNLaP5DBWNOWEnyUkBWIa3N7b7LbslL98e5uYrVG5XJqASlP9Ws1vOaCJurW8fg1wd/Vm+pPULvXDnUnU506Xcw6wbolUN9B4gUQZrKWlNnQpzhERCdjIo9jXNAVkcEKJvq1VbG/bwiPhoKQIlQ6NGyqHylWKNU/pJGFd+HNFci8EkmylhdRczHRGCymPjwYKnwxflzB6tJaZ3HMEKcbDe2otbcq40OZ1C6QGt67GUz1WlEUmf5Er76aokCCUvV0ntZrrNwXkOE56a/DC3CQIaN2+y4QHnb0dy2xVH8KOiuKENq5U0h9OYJCWul430CvDmqwvli5SFvCG6v3MYWqBTvnuFb3aNI4OJga1MKxcVEvfSKZQLdVRc08zS5LI3QQQ2y3s0lEq3ZWQ1Nr08y2WZ1WhHDrrE50VNS3t7bNq53ZMK+jvhZvITfObGhsgI44c3ZTe+vMGY0zOy0fndL4Wppm89GlXx/B+GZ1NLZb1uymhkYTd0Glf4lHB2IXlpU4E5CPCyAtaJ4MYDvzqHGXGzfrzJWhj3A9NVBmnhrwq5Eu+3O/GmOeMhgLrio1jlx+NR5co8z5gV9tnGOLvpn53dz4/8i4t8o5V5hi/Lcx7qn0O0n9zLi3p98q9XPj/qX5/ZX5/bX53dn88nnEbPO7m/mdY37/w5wn6POGrex0es1vn/nl84YB+q2x+f5Cv9uTG2vhH+DaQf1z7EbVN6rqEQrf+/AZXdAvUA+3lQrSFg9VRfqxUXksEZKsPzcaQEWs1qQK2gMGplpEiUiKDFZLxhgRkUK5SEHjHwu8pcbuKGKoCxJRKBGF+l/tfXlwm9l9mEni4gcQ+ACSIAkdpCiR1LUSxZX2kHbXC5KgRIokKACUqF2vuBAJklhRBA2AOnad8RHbre34SCeTcV038bmJM3UbO22ycZzDtWMnjnM4adLGTY/JTNM2nWnaTNL0SI/3O97x4cNHUptOO53pH+T3e7/3ew/vPn7vdxhZ2EYWtplFHAVHUibqKPJzerH0w+yFPiXSHXC2j42yGvso5QUUbR7G/LKu9pn3bh+4vJwWZ7spzHME838n9wVYUHxXixF4d4u7Z/6kBTlFhw2GKDH/Vg34FsIRgzkawYLd5qr3Q9URs+7AaIYrpd0w8iwzbCNjlVKFVD7LLsyaAwM5lIycXzZyPm2wNs8QbNb4S614kTiLud5xNfaqC3PLhVlxYW67MOsuzCsuzIYLU3Zhii7Msguz5sKUXJiXXZjTLswZr4H29VbkFpx0DPizqm/+fyvuqxW/24KMllPGXLONuWYbc63DmGsdrgeKdQN+xaDZMPIpG3DRWJ2XDXjNgEtGPi8bafeYTaJOoLZxzKhTyKhTyKhTyKhTyKhTyKhTyKhTyKhTyKhT6BHrFDLqFDLqFDLq5FgTp1GF4Bx2ZsXRvY+8vMbtoyKrPue20JmSlot233kGbWQ6DJxsHT3y1DdbCVNzYYDZcF5gLigM8BxOCMwZhQHWw5jAPK4w912YB65UD105v+pK9ZoL8w5nCeHNKAIsDjSkpNg1QQjl+tTJIWSTVfSQZl2EPaIgjxckyyeQG2o4UoBunBGW+Q05zxkeZKp8+BalytehCtHRWD53lMoDFOdiKg9bEdqNebijII+SNOcUmOm1U/yU1TOaHANWE7wt9V4ZngnZA3gwA+iIwg3iqBvO9dtJNgbYhZb+VHXF/wRb7YxIpnqARDdFqBekYUWLOc421GI63FjbCPfoiHeLHd+lxVDFDVjvh8bfMhPAWh1+Ax0oCfwhNsIVtcfMTsu143MFs9rOaPAsjEEtlyr51R3A5DuCeYFBvzhyrwceB8TFlsepzcWvDQIzTvxal/0km6pUvziaFGUDnbVjM0n7IvfJkNEn0OZP7NLmJot6CH/HCiUTAVRoGxq3BRyxn+N8R0YPYJ3haQb81sDTyoj4fVBHG5qJ2Fc03YzNHNkRQQfaaP0i/qoRH7FnjVAUFdJUnlpfTrpwx3bst8cdfkCdNUHL5pO7EqiZOswzdX5/MzW7z5n6Q2jmc4S7K9l0kpzkBhuRg0p8jzAepskp8YWXjh6nEl7aOZj6nYNJa+n5DNchzfvbcMLuSbDbLP1h00u7BwG9/JxYku4mfpg4yl3jthha+GIjvvDicZoVG0fMF7XTgvQxMT3lLUJOzxGjqXHqnHFOnROOqfOf8fX4MK8C8s4g84ro3nUe7vWqEjJWFfWaEVM5GG9G8lAio/p15sX9ZD7UcHXRZP3OMqx41aJPHobcZehTd6cmJS95N8va/kq+vr+Sb3iXoewd9Yp3fe94pIKu/0s0A36WJ/mt/U3y5f2Rvbw/stP7Iyvuj+z2/shW9kd2Zn9kq/sjK+2PbG1/ZOv7I9vYH1l5f2Sv7I/szj63ATyznBSj76xxZjnbMD/ONpxZvorL1SnHctX00CJvF01OqPKi1ORg57lE9amrS5MMb3unWvEu4Z5LUdMSlrwzXPMu4br3b214/1bZO+oV72Lc8Uilu++Yo/uaFnjP7msaddo7as/uaxq14h11xjtq1Tuq5B21Z/c1jdrwjip7R73iHXXHI+oN6URrtOkR5Vwu7rx2K6Uy0eHn8Kgy1HAv914a8HLT57h5xhz3lKZj8vguAw8PQo87D0JjjoMQUlxwUpw3KUjV7Xut1hdaGp/dg9vFKirStE9m5xYEXKo6n9tjQFCaqoKZTXyJDU1WVnbQPmFbrV5VD7T00ra7jtDS3Gy+VC0XN8uvip+J1yRckFpWvmqlUrd8YHIokXukJ5tWVuPwsxqHv0GNoxWeaFJtwBw4IwVK4YJ3mB8VAiROKnoWbu0d3LPtJBsJop/qQhhLkV6mtK5MjfvRDut/+Bobt2O7gq9V/G4fWaAgPcDJ13xTzWdfWoW2mQ3p/PCrohRBaC/XFqrlu8WqYau7ncsyvUoCCGEOY8+E8PURBC/8ZGIyUYcH8a266J8FFVUvb9aX6HNTfO6DcSd+gWzUQpKCGC7NIbc2klRYYtVGpbfUoBHmeLhXKndahU1p4/0/poTnVKGSilVvyoj6Rx7diDqYO3fa0mo0nx7kt80gv2X6lbn0Ixw+xhPsPJtNf1qEEvZFMd2+1Zb6WhuKPpIwvs2nfS34TSzOiAF38vYMcLcBJ420PQbca8AJg89Kng7pLe+gQXPIgA8bcL8BD/DVA+BBAz5qsE+HjPyHDXjEgI8b8AkDPmnApwz4tAE/ZsBnDPisAY8a8DkDHjNgEp2OG4oAEUMRIGwoAoQNRYAws4U7maH6kRa9aIIIGiyaIRRBs1hYDh5cLeJUgLvjMIH4IklgQjN8OrWQY7cGk5q2R4O9Guzjn4BF+ROtpgyeHEAhFo239NYqx4GMCusoORxllHH5lCNJRhmnDDlAZZRxfuz2jkp6/1aPd1Svd1SfR5XVjvTJdev3T7rM7dfurVvRy6V6/vpltY879nuQ7TEj9XYfFug0q6BaCRHAVbW8UpO4mMAt5qZzpTWx5YHlx5BY0rbEfrJqxSEtWjUvrcpzBBjU3xTbjNUmVnorKP6huUCpPE57YQgTrsOmpkW6ILfl9Pzl2Uzh5kJmeTJzWe4eCWfM5Vx6spEaUN1O1OL81fnsjXmrrxGdX8hMTE9NZyat0I7Y1nCvlLr6tFF2YChd40rJLbsb0dNb+e3SCqz4qyCMV7N6VipbYDZTHHicESSsl9wq3UdTkA2xttF61BhBMBEvSMVGUayVAEgYNHLPV5t/0ojMsIwbmv808OJQUFoXmxaeDsz+miWr/O0CxWC3KxZ7rkNRYNDMg7X/u10oldAImgnxrFOThvlVOCJIEKQhs03Yw2ZCcWwpVe+JrtFSXNAMzfAxI11OYFE7GYBcqbhK8kWMsHoNUmW/FQsBneTEQG3HwRg+muN9kJV69GCDfFvs4r41MDYeBAvIIIAK8n+VOyXMaKJcXdksOSZbqSJONtWHEte68kD8PbRaqpQATYLLSEtgJNzywGoR0xrmdGlNzVUK11ZkOCgBdMjhYWS08/Jm5XaRlLTZbEINC8fkYAwUTb4GwcQFmjVWkrZzxW0rhgZFjbJBxxvBUL14mwyyxuBUBFKVMsp3e3OnavnXwGqA1bVSqYpu3K5g00qSHgd2sVYyf8UIxvEXRR9oVGtVNKY4LcNAmBLzvHJd/LzoMqtzu8lwCd7j2B4gr1TF4Xsri9agZX7yQM6nY1g5VSWt7aKYIDSR0LAsjN10nTEhuIYBBg2yUmvCklyo1IubTNMhjvdAMk3W6v04+q2YwuZpHPESvQrHbPnjXbDC5RdymfTkXKZwJTu5DAYQel3YXGZqNjNRwBo2xixk0oUmSeQi2g8xi/PThWVcRLPjMyKj8ezi/OT0/OXx7BItvppApjvYgM5ncuhuJDsvQJzwi7wE16z4OtdLm1DukChaMiO1bRAnnSvVNyqruIsUSjWBN6wpB0WzjkM3KgsXAZCALszhXXiuKIbtAxSGzePdBSJgfFxBKxfcnp0SAZ1q7oNoVl0iuq8U5maz1UZ0WFwcajU25Yy71Gxm/nLhCtZ/Yo42MwOVmcu7cUt5V9LpeRdqbo6a3UDNL86NZ3IuyoUJ2gZNVCY3kZkvgNkGF3XBjVrCddZEyS6WDl46tnCxz66RLxaLzBNDwAqKLRABdtgAnURhctZjgakY4hpYNvnsgWi2GW6RIDImCFdL25vFFQrAcgcWvdWEf3BO/I1ZrQ/F9+EYDmeIL1YbZwwsrnO4QkvMAajdXDp3NZOD4Zpfzhdy2auZG9OThSs0YcxIWffDrgjnADcSLmdz06K96SRCjdkQsVjIUi858fK3IrSlsK37MIVoXnCAPW9U0Fi5FaYvHS0sCuBZxyeOaEv4/ybaqybj5oUKUfqL+ImZETv1Cjb2XKmm5kOSw41N28n4bXNGxRlZrdw3tz8xkYuwqai5A0eG4l1y7bQr16ldHS6wYAvGRI1TGK7SqkzbFGb/Cnz+YqRebSKMoXjMp7L5cF2ZaMEyA2rTGHS4+M5lMoVsLj87PZFBmOalicX/PB4MtGOdFAuvGD7XM2k4oRZyYJ1mGeWm+71iZfIBL4KlufTSTfG3F8X05J4Uu/7K9ORevwIUu/8KUuz+K/N7/sr8nr8yj7/iR1dRYuaUYJyT3x9YL8DXTXGzcVC3rlXFnzhOrNGhK2ccC3Aqv5DNzqXnJxfS88uT0/n0uJziBn4ufXl+euqmCy/7EA40L1Qqd9Nbqwvgho+YR85jWYQNeeVXiuAESJr1ghEMbDXLlgcNdcaNrmyUVu5ktlY2K8jvC5bk2Qt8clhxjIZbQrXGPjqiYmMUeakrWkyF+aSiEbydaoSckgpBp54OFcbjdkIFjbnnCB10UwCzmn8vcJe+cbWjq+qGV0vkKy0tzlBhkW6llCutVov38bzFXYYqMO3cEAKEA5tqIVx7QsCspgtAVV581WICm5fRYHTZqe3UYLvjH+sE9yTFcn1OHOXKgk6cXmtWbGfLSRXjIHWvGLaJBgqoBGxVefTUqAacOng48bAS5Sub5VV0hGTeCfL1yrY6xZJZKDql4yEeKxDD4EN9PTF9D5B/PPYEgAW6XzZWd8Qg89M8LBXAP5JE9OFZ7YHyrGKc8BPV0tt3ylVxh30gFucantmitYc1scNLB0O4nBbQBQgu4KrGdBxJT84s5gvLsO+K06h1qBlWTLbLszcXruQbEqndlU4x7K4IvXrwcO+C8+NGEVjEae0Zphv16u5ug/5TwUmc0e7UsmuQUlwOxX/QpwH1PKxmnWNg6M3zuQkQcAou1XMV8jXCREk4rtaL1XpDtgnUY7vNvUgFCGytYDYxmgYqGscBFNTcy7BHjK2zr5BZKiykC1eW6fiP57z07PTleetAsyhxRsoUJq40j1T8FxXJXUG5wmkn1TQqs5QWl5SDTePUofMu3QGCNenvrAYNxH53WlfFUr360ApUK6hhhsMRBq9j0xZbwnx+KpubE0tzITe91IjNZQvpQgYPNAaW9J0akeKkuNQMeZO2fI1EaBby7XZGyJq1iwrwOgdgjmoQqpV40W+tibrVHhLmTun+koJugp9IYzNorQtKcGMCCmGwLgCSPF7G8eJ1Z0tc3VWTFBXLiG6oOXi1i5TNUI/jzk1ebzDCMuAAHfwt/5ZYQ2tSlTS4DRbyBLrj7Tul6sM8O7SEOhIkDmSOGFj7YMzCpV3dsl/V+2OMfjKt3DwGauSqr11cNvhFKUYoTdNczwx9mbSJtkv8YOhNvU+2qecWy/Hs0qZUy0h1LKKeW5IOtTA/q4X52cycVAtrs0cYf7ypepif1cPa7NMOM3Rt9hn+SnN0ow6zdG3o6gS+Um1Lqo89yd+nHOpkrfDwg99GtbJn+ftcg3rZZIO5u2n+zjrM3bXa8/yAlRWhUXuBsdeYKsfhQoPS2kv8lcbwivxd5e86p3vFoaT2jFLce8Dfd/SSD5d3t/SSD5fvl8B7JfC+FqZ5fwsm6sNMIOZHJMlnJfA5IrmiSH5axvyMBN6QwM9K4CsS+DkC/PZXJeYXJPCLEvgl+oW8+oVvyJhfpphBFfN7MuZ7FHNBxfxzWaV/IYE/lLT/XmL+owT+Qkb9T4l5l3R4824JvEcC75XA+wgYtd8vMR+QwAcl8CEJ/IAEPtqKJd1UJf2UjPk0xVRUzN8lxC3u0udUxD+USX5ZOuj5Ziu366/KqN+gxA848Ysq8W+RCx+//Y/Ahc877N8FFz6f86XS6B6EbIU9jw8zXQiPG3DagMkqTxc/t30fKGwcsX+PDB33nWwdPQBeTsAGdw876EGS40ASHvj5FpZTWBCU2aaUKrNrJ0HrbleSSyfBaN+uJLYgKe1OckuQjHiU+h+DAei4o1oCQD8LfSblOU2pqzVmA6VZa4/MD7syv+ZBOeCivORBWXJR2h6UIy7KWwYlPKYmlXbKTIjET6SRrdfZeJkyIR7RT6nGq2rM+cDKYFyDiZR2qXQBpIM6pHQQWzSL5sgcGXx7+dvHXzA0Fh1ch8JEBrpIiqgLRV/QeNhYwD4AFDNJ1DVS4TESd4+Jn8cwlQQcMsVIYhyE420CBxirjKYnSLxGRA3p995hBhVVp4OqS1N1mXl1O6iimipqUiUdVD2aqsek6nVQ9WmqPrNcKQfVAU11wKQ66KCKaSpHSxxyUB3WVIc5r0EYPf0oU0YmgAaWXgeaJxhUOR1x5DSocxo0S3XUQXVMUw2ZVGEHla2pbLPsww6qEU0lpf+V6ZmAMkjWNRZi+Ywu/bj9vHdU2jtq3CPqDelY7IT45ZNYPtBw6aXyTWnwMoOQ4DgkAGnd02oyzmjKqwZlFCgfG0PfYCoMmgunKfwChCEXkFcHecIx8fc4Kh2BHkh8hsQR4znyuXSeLA6RcasL2nQWjEuBJxtVp/m3h6FBUdJPRL3IUa9D+rdh4AkeEBehDE/uUf1lDb5s1A8H3FM84MAo1REacGCU6qiZ/9Nj0j9aSee0psHd2u+ibr9rED5JYbHogFemS2JxAYtUYDVxE79R9MDUJfCgO3lJhCtmmC1eHeSfyMAa+KyxBr6d17oqf2v8rfN3h7/3+Hsf18RnoGTP4JqIo0L8PYdrY46cMQ1T5UBpsZvA1xikQrB7PEj7VvS3AK6YhlBzCDwxHZ9plxqezwvwPQzmyHvTsNlcaT28MDyuwy9CeELuIuJvUpQvAr6YcAOnBdjoIOrRffbVNjRkRjVkkHw5RQXwAQl8UAIfksAPSODDEviIBD4qgY9J4AclgN6aeB/q+z+wD30RbSAeYDlPmzxB9anjyUyQfEDFwRGejKJ9HhzhNRD3kQMojTGJP9mA6SOvUE2Ic+yoCrcndlQlHfs9B8Wd4inNDqR6ie5TBvxpA/6MhFX6yyL9M28u/QQMhWljKHxe9tzrEvgxCfy4BL4ggZ+g3v0b2OhX1JR6irrYJqdQcdEQ6BEqIlof3UHFpWsqLhG6puom+IsGHl1TYSezP6oE4X/SoP+SQf9ls2YJKNMMtCwt/WqWXaXWUuHZhlk41xCe1+G/hpqDWR5dgzC6zJOs+2yrx1sfjDcHsRo5gzDw9sjnFAzF3WnMofhJr6hTMEr3mc9u4xZ9cV5TJwU5MfUUPOycgtfUId41Ba+5pqBBzFNQY1xT8JprCjYh3q0q2Mk5moLKpl/B2GaabyMVSJbXY75xKynpcfk1Y7yiz7Fhgr+u8PtZtaldB5ztekldeVztesnVrgYxt6vGuNr1kqtdmxDv1q44ARd5AvZT2yLuuhP3oRZo8BvGGvRNub58SwK/IoFflcC3JfBrEviOBH5dAr8hgd+UwG9J4LsS+G0J/A6tZadQldvYqaQ/tSitQ78rYSh6HoiXePVtfiBjT2sM/xMD/v0WTW6eWRcg05vqlGds8k2OdvsaOcehgV8wGvifykr/gQT+GdX+z3GBu4DVb+dR/aL4exut6H3kma1L9D+6ZTstAPTJdkxE/ZFXVJD8s8Hy/2/kLoye2Z4XwB/LReHfyVGMDtmGBIDe2G6J8Yju126JDNH32rKI+lMa6UHytAZDHt2snRU06GPNnjlADtZeVsUYawfXani2FpH/xTvSJldrcPH/b3JG/KXcyP47YYLkXi0undvFaHCgc7uXqAMe6fSMF5uicSK93eS4l0jpmxouWit6Z0pBeJXC0oHbQcfCUXIuHLbigLgWDtu1cBjEvHBojGvhMDC8cDQh3m3huADFXePGWMf6oIM5Pgn8dQU3aZINfQPBtaYsB7Kxob8iwncofAxuRW/FWxF7nyvBtYi9z5X4XoTz564xf9AHHZ5zJYDe56KD38Gm3qT5Q3MmRl7netQlJ0iu52KivdDvHKym6JQZWhB9IQ9pTJC8M/dIF8wxk/iTDcn7yIOyppHulnukJ+a4O0q6y+P9Cd3lOS51W7q58LS4bTTEZ2T9PyuBz0ng8xJ4XQI/Rm10CTKtYBNtwmiXq+yPG6X4ggH/hFmiK5D4DiTVvuhSfIo04C+yjzo55VJ6yqXMur1dz6BZqFvVqNvfk+X+SQl8SQJflsBPSeDvS+AfUCW/gQPhlnnjse2fll3A69iA/TMSgwdkMCwtDapP4RDps9+QFD8ru/YrcvT8nDOxwHy1AdNn/7zE/IJM/osI5NhLa4zaCwv0vGY7RrmRvt0iTWUYS8ctxRLVS0e7/UvMOG6yXvO6csu1rhg58bqiMa51xcDwutKEeLd1pRcmu8WT/WvQDGGe4Hjkq+155EOdzOdUn6pRVNeLDrKJnjC4vxH7662K2WNuCxH7G46IvTeJL6P6zo7I+J7ojFH7W9S3Q/avtKY6E7FQS8I8xo/eH3Rw2ZMzXbBJQlBvkwI7an/7kfP5tVaVz3daOZ+E/esAvmzg1Nr5cD9njwPQdA8cB+oXceaobF7dTzaHoJNeVJ0kuvo3cUqy3aLL0IavYUbHErb9XecLjMD8thOT67R/x4lZMhxPfjlofbjNpZ6zU9202hZzs6a2i0M9p53EnaYqhubt7c3Kbcu/VgZ9Qd84BFjMioTSIbsOkXuxvFWopPMT09NWgIJWTKIXt8rotC5WLd2r3DESkmKKD7RMLN9GsbYh/ldA7An+bxXvSjEBECUFMebQdrFWu1+prgJU3yAKEOQHHdNKvbJS2bQCtVKxurIBMgjwRRvcNSsmfi5vIkI7NXiAhwzK6MJyNylPKUrgwwSsowOO4kr1Er3ag3A3SAqwlEGbqIxWkMEn/e09Hcf52HFcwAKHamQkNoAv+kAfFqF21jsOKFOw/RyWbuFO8ve01Ed+CQYo2KEPwgCdAd1y0jAG1TpLhDsawlEOoyayCNsNYXwIEuE2CA9+gVT3BvAXLraQgwqMQv090MUDLzrobhZsLJFOHoNJDfZosDelVPn6NDalwQMaPKjBQxoEHhy/8gwwFqbYx7GsEWyLRALs4R1JWQNHcf4E0TvuMa7bENd5mOs8YuLFun+cFfgkpss+kZK+bqMKG0VjpDEVTtqPNctfTdo/Omz9y6Axaf1rpboYyL7xCogQmfM0dFugFkFXV42xcBEG3vjO2lqp6jTVHryzUa1sVWqW/37p9vqmFU4blE2mdwikHCfBi2zbg42qFZqSQd8rNbFg+EAkTVtOv1IqroJE6KPMIpr1nnMJJw/MGSuYK719pwSK4GUw9m6FOUxa4CvFlY2SFWHcBIbCYm1aJdXympWQUQYOBDPr5S3WUGOCSQMX3OAatYOMznq1XBfr4p1Sabu4CdbRpcCX7y6saLJAaE87JH6mjNKsMUbnJCKE0ptVEEmV0EJls7zykBURZT7YTrhOs/l0Y6X23cZxcJ90uUM5VEYS/cvGtAO1erG+U5O6ihEZj23VWrkD6gtUGnCtS8Qgd4c22MvgmlYlIU1ENLNt+cfT+ekJyzeRzeWt4GRmKr04WwBFoolFNK7tz8yNZybhs1C4KT65XDZnBaays7PZG5ZvKitIwlPZ3ERmeSI9cSVj+afnQNUjOD0/Mbs4mbFCc+n56alMvmAFBLSYnrX8c5nJ6bQVmk9fn74MAmqh+SwnDgIEBQFUvpDNZawAqQBZvuzcdMGKZudnby5PTxH9pIhdSF9bzAg8fnMi5xxQB3KZ2Wx6Er4L2ZwoYj49lwFFh8vT82JsT+SmFwpWB0htT09kbmRBDcKK5K+kRQYc8ucLN8HeeCGXnrhq+dGGuBXgSN9SftbDmHjiDbcHURARasOl36e2AfgGcen32e2oEW/1Uqqw+C82Agu8h3bw5hBDoS6bQwkRirKol49FvFrROjiE+/h7kPFH+TvE3xH+nuDvKf6e4+/j/CURrSSLZPXwt5e/ffxN8feAEt16lgWELnI5nmd8mr9T+B3GeKj9HRE6Dna/U58KpX6qBRfPbkNb3VaWa1O4lPtHE4i55MBot3VEf8EVS/rufYZufY+hf580dN9Thg69bejQBwzndX4WujkBAhyX0ADfkCGTQyZmJ70qYCQetJELd8BhJRWceA6DOIjCTAsMiPT0OzBOGji/JwXmoAPjpMGDPYi5KMysCzPXFOMsIbiJSoEQjAPj/K2si2bBlfOCK+drrlrkXKlyrlTw+N0jMIcUpuBKtegqz3UXzQ1XOy+5ynPTRfOCi+ZFV85vc5XwJVeqW642XHZhXnalKrp+67brt267yrziSrXiatVVF03JhVlrinHms+7CbLgwZVc+rzgxHw+1DpbhltUmjnh+POrSoSw8GroyjEdbCndwOM7hGIZtcUq1EoEETUGi6FYuF0U4R14NA3w5fw8eJ8GirZ+Pk73mFBbHPTiogvM4OJra4otvwyLXfhMvfpd9KCoMvUEHVDiJpj1dOUEhPtcKhYBLZdt4KhEVJ1ijCHgEh+N0d0NjJBsaA8zAguHrroZGSboaJdnQKEnVKEocJ0ngccntaEdPzMw3AAO37CESDsMs63NG53BWY8HFIwtFgTsz5pWdlwRx5xpOsSCnxCJSTzEhNBMasTqIXaWMWCUHQCzEf7HloqI45KTocVMcdlL0Oij+DM2GgISYPzfUsP9ERZ8ZYS1XJLeXEBuMSTYa7upRUT1OA5H7yFzuUTIHu9FOW0BFBXTUWe9UcpOUUX06Su6NMiqlo857ZTjUsA97VoQ3VZWDv9GGWb+zY/rcXTfgpEi5KY44KQ44KM4CxVFJISYMiOIOzvTi2BwcIzvKNorbgE+7Y4Pvw6k5iJm0iUzGDyZcxxI1Q4f2OUMH38QMjTt/k2aHMWmNOTmusRMaxPoQOClnX8zO8I/E5W0d5t6we+7hkjzEk2Kf41YekmR3Gy7gJj3GkurFEWcvDpu9SBftb0atz/sdF23j+utkiMH1eKFYrWv9kd1uuErXPwZZiQv4dqlafzheXBd3gdrEZsVxY/eBhyMyiMKW2fhODVc/5WLNX0OVUD+qFVltcH8GPZq6VKLmC7Rvqgw2vKAi46A0jBCoMFsxiDGLEtks4oUVTcDwNTwERKh/R6blQK0d6ztbvlNSmvW+sqkrD0lyeFd23FIn0cESXUL5VhiEuxZoxEmrdA5za3x/DVa2irchkeGTjn3RgVsvuuNWyOBPO32xMQjk5gGGRYeo7DqYlaPEVmVrmxEOJ2ABgdnZFD9PvxqHqHTNzRtJUMR4eatYfSht5hEOuCLAxrQoiLdpdhUX1a2Tf7i1sjsTxlsbKPEf3FbXdrstwjfE96gwhzv4G+NvnL+dTNfHX3kf7Odb5IAI2WyHTd4OE/Ywpz6OVLZ9ygLvUqcZS2o+3ajmA3lcwJvgE8YND2oyLv4ftCcE7hAq6MAtT9zkQ/1w90ttpQ6hVbeQYdVNWgwbeAN9TgDbL2oYXLO8SPvF3QltZZ0kRhww+CwWmB/gI+M7YZnGI+P4YCIp8gmwmfx2XpeCowFljCwk1mF4iIrMHEOmZhsu+MDTtBBKKgg4muEcCdm3Lykhe7ZiJiXrYdVSbsX9ymwYWBTrdVgUo6dAUdIOPOsdT3TZqSblJDHFsCqv5Izyzx42fvZxeNeIjck9Jj7+lpkEG6HrUE0F57vBlLaMNiI9QYREWWXjy7Kapkrx6apTLsU58kfelSM/5PCFQ2HX4B/gJpkYAOHu5MWWYRRcvogNHBXbFnicCqA7qTYRfrYh/Jwj3Iv7lApjJzyPnRAX5yCjmZbQzP0ZtkHf62xDOGaRM4BzexGM7UXw+F4E55kg5UXw5O4EtNF20Wn46YY6Qi8sac/Rb+EGPdzQoOGGBg03NGjY3aBqI/2LbusTAWMj7diq1MW2slKkXTB5uVSfNzDSRpVji5UcYF5a2+qwRZmpzN3Fult8kF6hXHDntMS2drdMvg2TZqoFjY9XiblqoBwM8sRqabtaWgGd04ni5uZt8DNpbEK0D+O+2Hz/InV0tfd3NqtysMil5mNEwiSiGln+28XV9RLzeX2ryIFfLVetbpN2Elm4uNOWVyBRGYz+WD60dRcSOwyaE9KnDLF3rogTxB2HJdg9DjG82/LuG6qWsFsfKg15tDpAFbICNbHRbcE5BWyRARda/Jg4ONXLd0WTF+9uWwE2xhC8V74N3k/l+SbAOcTN6nH57lfIalkMldRXwUCpacO2wWZttysHZHpHzNFodTZkhSQ+VP9WbO3AZGYe7PEFL+fS8wUBtM0WclZbrjD75jxDfvDReL0QRwq8QVbg9fGDXysaGoZ90hahcMMe7kPFQci/W/yP2UncuXs4ZaqB33uIv4OMJ36vzfxeHz8h2qzC62PPjt1colZUyYXfehr3bydX9xD7d7SYW+2zp5DXe1ns6/+1TWzsbbiSwG5NtqgDvFsffQMV82CrAhWbJ9XltNfgrB51J7mKaxgYcH8OI4OGyVFKdMVg304b8AzBZmb/tgWfGYkdfATjuw1zrAHDlGvArAPCx9wFNczABgwzqgHFgD7Fy3WvYUw1ZTCUkwZjOuliRp91MaaThoFZP/7KAfYX0CUwnUZdB21cyrtBW1Lx04BJbTl4buMuzIQLM+nKJ+PEwCFrRPHlxLkhpHo34GA9kByEODeE1DV70I7xNdMSW3tXCMzwRimM/6OjHWIXRCPAtCF24GHl/dHBb+HJIjgAgjXxiy3khh2u2nSYg6flhDhrPIGHpDg2VCDUAk012qkPS3wD7pdgWLYu4YFPx4LSRzX1MQ0ONeGN9dvHeVvvwW1djQI4edG+f5oJ+poTEMcsqTlmSc0xY/Cc/uExjQ1p7OOapdYrschS42Zox2aALnkJ+q6L++5Jj74TUUe9o3p36XG8tB9wXtq7sdvEpd0CivPQk8C9O4zm9S9hJ9KppF8U/0ldKTjAyLPPuFRlHNi92HLhkFFBo2x/gn4ZEsy8cEymsaigN8I6w8Pev9XvHSVnrYzy6yi5FMmo7n21+THvqCHvKM2ODDSyI894R531jhr1jjrnXYwx71Req4eIkiuojEo5+Yx6ucW+0+HG0djACLTM0Ugn3/e0W39sWuQPi3MoyE2gSc04WTJdMFCOI2/YjPE+WFpbxXvldTq9dBtJ5jU6II5ZcI6LG9EFQrVtgcV3abPfMG+M9mvG0xNXl6eyuRvp3KTk1nSQ5Ub57B4mg8b0UN7BATRkNgkMEJIlIA/ldCqzxHl0CwySbbEXgAgj0GaQFRYVhWKgoEcvBpCNNQucnFWsOKRMNY2hLKIiTh0+74lfFGEggvqytNlspXJnZxsyipsISm+hRA3BEWAbqV+NqhDFxnTbc+lljYFaVZ+z4guGoiQxCqakAMV110orO9XSBLWLyjy6s+UojW2EkaKJ9Fjzg2QrWoQBiiCaywcj/CE+VEqWUGsDS8hiR+M+lipDEQGQHmsd7NHbdrvdajx+nQbmQYDkS8UuCpyNiCCxNKtBGhcA6seklQDJDIinSH61k79d/EXrAYMnIHNrwKZJZ6O6CTBWWNuyJ6UFgf+8RSqQ+5EMtjJWfk9p8IAGD2rwkAYPa7BfgwMaPKLBQQ0e1eAxDboV8AEc0eBxDZ7Q4EkNntLgaQ0+xqBahL77hPVx21iE1LXJT8JQjkWnrbi66rz30sU2yIN3L9mt1VWQbwwxtbrISskt48LJV944FuLaTqn6UN6CfXdKD0XKu2CS0wrhBzJtA9muUFUJNJHcm5Zw6sScxoE8uy2ti0snIFJEzOkqph2Fw5ABHimvb1WqJTbWyyGSBbUsCl0HZyYR/JV8vVKFCzUKofkq2+IuHZhAZyLWyCIsoBTIVudKtZogXBArZ7aaL1XvlVdKN7D9rfa1qvhhsg86pcDW8iqJdoXF5bDOycGjCAEhsh0skifoJxwt11kW1/id1dLiFjD/wSUISHERIf2QXuGDhK7BRbtYvktCdRZUhf2AROjL1XLdsR07EjMBGm7cTS/T7feL5friVr28abWsWe06IqmpudqUaao5nm7myP8Iw1sFIVeVFLAfJH7FXmn0gDK6ZU3B2KHsoxrGLEPkFGYaPJzUciV8SeDFevVGub4B1s7jbHHbyKbbhcLcuky0HqomVjF/qOBghH2lAhamlYxhTLKZ2O65FUGrZ5sc6qqW1ss1sd+ZuVqdOcRWHQwmP2ZtWTQEySOSc1Q6zhbR9G3IYaXOkf04tncZ0x0VKFi9tLIBvntM/lh7Da0/wkOIH0mshCMpPbckHTjY4MXeLPK11HgWA7+iR3dV/lBlS86QiGPw+PEtx+pz5Gu2DBo5dCDaaQBASe2GuBqsP9TWVgc+JvGP1axexy/Q0S6PjR13o9jxUA2enfCQAnUPVrZoSYsKgHqSwnERVgMAZxjUt0xDwOoUpwSDg0VsvAYWaxPmmSsZMNsiVbMhwrU75W2wCwoLprMFHW18yDOKJlR6YTq/XVxhXh4cyLjs+EhW2drZBlt/a8gZDN7n30NTk45KBNbKm9DwXvxii2RucTW3axuV+w72MPNfm7JdrZ0t1a0BKg1YbcURHURz/2IZjd0r18q3y5vlOj8NsiOAEJ8BxSBMTxSmr6eBI2gxCM+ZbenZWRG3uDQ9O53O3bTap+fzBYEDMgbx1XM+k4ekPrSh3J7LTC7OT6bnCw0Spe2F7MLybOZ6ZtYK3Jien8zeUPKkb4r5+FHfvs6MwKQLos5AiE9/7fwNO06J8uGwFZmOkF+fCHUwe7HVPoDfDmYv+uzDjJcOnKRY6XH+nuTvKH/HWIxUipeeN9iN8H2af/UiPh5eQmbjMxxHVv8OKhHScf5OMP4Kh2f4e5W/Tjt/rcrOX55ZnrIsN/i7xN8XON+3cfglZn7eYvwyf1/mtrjNdCX+rnH8Kxze5G+V8TWu62sidFFZB3yXtHzHZgIv2h+QwIfJtt55LHFQ9OXHAOEXP/2ZFhEeR9uAqc+GUmk6CxucTHLeJJ26a6dXUcPpVYQ5hxPAJU3jqT1i+K8KGwzTsMEADRvsyLiZxQniVLlcS1GJekzSp5Cn0z8WFtGfa2FaCHzeDLze4nj7xZSvIq9y0BC09SM8ZVQ7Y8DEHO5Ctull5uwcxffNR//tF1COdmgs5GjYWePX5owcHi3veZSAHWnIW9bq0fM7h7KxJ8ai9iLXOo61jtoFM2wmeRoFbI8r9nzUUQRowOteSU+gLOxjmOBFoz2o68+YpK+JgS5on33EHhz739GDg3HSKT1/snX0eWZsx0mp04lCPVMQpe1VKFQqBf73SYX6m+6En3Cj/pY74SfdqL/tTvgj7kL8qDvhp9xUn25AwZ3/76CthTZ+ND5oB5RqU1CMCStlDUSYb9Y+M2h3GLFddpRFEhTFqDUzbNtKsM2VAz4qk0DFqN3lSh3EvvRKcdzuNkTfds87+Yh5H7N7vOs9xnYNoREfSC+sfuXZLaKMxBku1eRklVF2I3c8qqKijQzjuIqKG6xK/OUI//KAB6FiH4dVlOGkbtA76qhHFPzyx1qkWUUYIl2ODiYDWXGBHWqKbdLJj9CRXfYw59qmc4Ui3ZQmHEGl/TjySsDB3hleNpL4XuYanMyB6dZsl7hTJlI9JCS5nc95txjvXiqqp5Gt3NsoXvw4cbjQz+4mmiLjJo3YF/Tom0naTziaJ0AlnTncdFTLxkqKdE+qdClMd1o211NSMOQwvosB0yuO72L4nCpSvjVFDmufN38ZUkbUswqESpAPsMsPNMlnMBeW6za1akY38JQEO8VSHeE3J1ys6ZmNd2Pugh9tgV8dHIMHnz61F8iGNp5KMt7TYMoraqhhs4gKAiOsc5AnhGYmIG9AQxzDhrBVQwSwGYbEqJ3H5ozYWe7W6GhQVJIPBNQicyllYRXYqFJ89iUpPgs1n/Wu3pz3wPRaeiD7GSj3cNNyjzQp93FRbqPznEXFiTLCRfVs7t3L8wLkcYIf3AoNB5KDZlh3X+O5pRmZkkQ+znlf30/eu1bDa9lW8/1k46OmOd+j0PCnsOHRksAohE97zKT+mShqFYHSMMztE6q5H+N16UXvcvLRSkWdMcr5Gqw6YDoUvJdL86GPtoT220V+rT7sjBP/HydzOCt6vIDG0HkeL9/EbQR8i4+KX+y17zpWOaj7Fm8alSabxmF7mwflk7i24Y+o1e+xGbLDGRLTjNzEn6W3943dC9tvl5ngieYEMfuO/lmuyFfwyASWIZ7GxfudevEWVQazn3304zt7/fg9JjjmRXB/rxwe7EXw8K/YAP32q0xwyYvg+3YnaEfTpE9y4+EW8ozHVvTsX3kLGXNsIc+yPMD/3S1kTOUwZszFP22RdnRhOgyAlS337t4uGgbNoj430w3WUN3zYgBso+qjK1tI1TPjrTMdYCJVnc1E8KNGglwCbMMaWZJRmO9v0ZMoYr/XCA3Y72vZawF4UXZVxH6/TqoWyuedC+V5x0IZD/1rFj+By1kaUAVpF7tTNFQHWNah4otDjmiVHzKC8syTs8j2K26wCTD/6qyhelP7T53W90wjDA02EBxPaj70EYXPJTHwhQRUyr1RE2MHSsGDnfw6rS6AHCVSmbYQdn+U28voSKMuRMOjTlNhyrgjCfJ5bdL/IDdDyGUMoPoFP/P76+A+1HzwiS7NzV6p17fl25yXfoh9JZOezOTyy7nMRGYaBAu0qkh2ITMPGvyL83mwM9DnzNJ8y0hUtvAtwON9wlT60I+MEQmh1oYOQYuknL/lMIugXvfhFUEFRALDl7U0xeC0slC+W6rs1IENjS9PXc4fWSRs7H5ZNLRhr4LVU7qpq2VRpNUNdNLkwMk3SzZTQbYkijXQQdEmb7QdHbtyr1StlldLc2V+pvTdLYNRnBoOXhRFBt+MXEr+DcdTklLc2beajqmSI2hky4TTuVz65vji1BSYUBifzY477UyAKpFvJp+dt3zgk2kP/reH+YU/259CDUlQmFxxUyAXYqMoOSF5405jCz671xC+9YlcDqBIraliA1TSao/kkQ8x39lUsgG8FMU96+CNB9gEQyvzwW32apPC9MDXfwmVam71viX17ZbUTdxaEwZPNmrwbTsNvi3BLxg0Lxow2X6PGmo2rEyfaqpMrzHXXZgbLsySC3PTiQEO1R+2aJUdC48KoM0I9+R2PiOjQKj4gjRou9gRm+HDuCPaSEFmjRSFyCkhNogu3iAiCn/Q7uYdV8WhskyYc0HRFCOXPo/yNMMb5YGap6GOwFeK47EIhFXasa4gq5Jg6ZSolk7p1CIpDsFN4NJ0KQYR3FY6GplMcgTIqM5GLpA7CrJH3x/JBhWfHlbx6WEVH/ie4i/sxD2D/woFc7tR5adXqvwAkx90q96KDWSzj4Z2oynT3GTj3GQTiH+iOV58J1NSRyzDeWnWMXTVZU53BfPpRXMZIWQJzphdL375arNONDSI4s4BIf73kZAuPHL00Fn0nHmGBYHcdlMKF6kvSGzYfgKpDT12VqR/Wie8iP2MCUEe9iBhn8UxQeauSDQKeE6Hxt8iiju3S3Hx1D6/F0F2L4KFvQiuMUHMiyC3F0F+15/w0tNP4WgTJ8phunqzw5RevHrjwS/FJ7v/BeYfbRM7xQYA"); +// Kotlin.kotlin_module_metadata(393729, "kotlin", "H4sIAAAAAAAAAOy9CXgbx3U4rgVAYrG8hiBFUpAs07Qu0pYFUbIjmjJtUqREURJJk5R8JI0DkZAImyRoAJTspJRMSqKcO3EOO46VOG1zO2niK8qdtmnSplfqOm5ip0kPt0njnmmbNGnd/t+bY3f2xC5INfn+30/6iJ2decfM7Jv33szszlulhuNvXav9TNNiPdl70hN7JlM5rfyubGEqM6Npe7LTs6lc6uhUWgvvnyloyrgWG6d56bGsVpYtTKYBOn33XGoqr0V7stmpdGpGC3fP3Kupk6n85J7sRFpTC9nRQi4zc1wr59foidTUXHromBa6M6+VD+QHU9NpLTKDv2Q4l51N5wr3HkoXUhOpQkqrHE9NTWEVKFRFKpdL3bsnOzOeguqMaUpKU45qlcNzR6cy+cn0RPdsRquiMPsL6VyqkM1pFePZqan0eCGTnclrqp4dHYTqY23irLXX9N4LNciMj907m9bKKAktUsCb+qOsYd0msjW8uXpGZY8EplXLSNDU2qP3FtJmCpU9kKXfxXoEADZ5tjCXS48WUuN3aZHDM5mCFjuayqf3TKXy0NEDeZaIjU3msifp41EzM/lCamY8rdWOwyO0MMKnajDaIwCga0QSalg+zno1ksodz2tlDALoAt5MakrT9s9AL6WHZqbu1VrGc+lUIQ2PoZBLnUjlMqmZwgHsOHh6d7Ku1qK59DHsdq3GWlJGM7T1gogLgTgr54/FhLN/xgWngpUz4Bi97J+ehcqPY4dljmVAXisO7DFuYtDYuen0TCGvkUz+UCp3V3picI4JnFYvURuGcTCdhr7Qqi33FXOzILE92bmZCZAvVjF4DnUTWRBKyyOv7qWZhmz2GkBa/NhUNlUwI1TtxTz9Vturg2ix4+kCa4pWLq53smujXrQ3l53uu2c2l4YGQ/8oIB9QNpTbw1rGwBsgC2QtZ+1NAg/fXJ0K0AL6jbqfF2u1U9mZ4xaZOwhZhswdFABahQ6Lo2Iaepyy1Tu97C768Cpn0icN8Y5OQwNSx6F0PDWXh86dyd4ymZ7pyUFXTx5KFcZh6Gv1s7nMdKaQOcH6kyuJeH4ym7P26ijmGb06qoNoFfm5o6Og0dL4DOnA0e80GGGANTORvkdT0zMTPFXAWu7Z08dT+0dFanC4T4vR1OHh7j6tcparNqrI1JOZwiS2NP7jkFaj/q/4p5BVTau0EFG0clUhIUjjNcyvKr/G+LUSrhG4VsNdlNTAnYlULQdr5GBr4K6CJHjuWnqtIM38/gp+v4Hfb+TXzfQaJa38vo3DbeX31/BrO+eyA+6ayE5+dx3cJcgrKEyC7KK5CahwRL2MQq4nN/CyG/l1D6e/j9Pt5/cD/P4AhzvE88d4/mF+fwu/v5XfH+X34/yablqV+GpF4lpSlwj117dE1FWkvr2crMY7uDbgtV95QA2p2gNqparGVZXEI6q6pe6iuirRQ5oSJF4Z15rXtUWalGRZsipZ2V5NLktIOe0qWZ/AdDkSkmk0IY0WcnkilKwGZpfBtcYKczmDaZEpWmFaGMyVgE84nVorzJUI0042QVkcarglocXL1VXxULI+WQc4V0F+vRVnE6N7NZSt5nQbrDBXM5htXvXbhjAbSVLq4kqyPaHGI3HISTb2L6jYw2sYqWuBzVpgtx6u66ykrr2oKgDT4QXTgTAJcr1T2fUMv9MLvxNhdpHdUHY5wHTBtRkqfBOrcHJtshFyuyE3YsXczTB7oOwKgCFwLQfMXo65jmL2Ya4Vs4fVay+UtfCuvtIKs5f1z34o28BhNlph9iPMLnJQ79xNLSp2eFsoWQY1GdTz66yYBy+qIRCQIUfMcjIsRoKMM4Q4reRmH9xCCJogI9jxVjIjrPGjULaZN2yLFWaUNf4IlLVymDYrzBEGc5uXLN7GYG7nD/eVTgJwO9bnGvIqHBMwen+FjV5IvZqmbN3wKqSZIHcAvI3fHVh2LXlNQPXyGlbNFJC8ijf3aivpFBvSE1C2FWAi/HoMrmG4HserFWeCVXUS1YC1bPKiGgaeGaoiyqHZDnKaYTB3esHcyWDu4jBTTjB3IcxNZNqkKNl4LLcqUKoeZORpoS0ekgxcy3lFVZpWtbOhFk6GetQ465TwQC0p451STjvl3aGBOhLFEQwPtZw+1DLMVIlGyxsgVUGr3TDQSKpoXtRch6oRTtycvQpq1XITVCTWDmOAVoFqgZEEu+4qv/V8xIwSN9/WAoUHVFVbxf7H31+tvbsMvDlwPHL3wgzpZnbl0zI2v0pNTDDvTTmmxfbOzVCXrZ3N08REK0bdXupvlKfAS52Z0ML5Qg5c/AL8qvhLC8vohAxmAJOpGXCyonCZmELvWNBN8llI2fhUBqYkev52reZQdg4nJpDddwL8aE2dODrFoHAKyGcsYmpYPpnOHJ+ECg7OTR8FBmWT2RNwqeQM988MzcFUR7/TNJ7E7MhkYXpKU/JaBHzgCS02jYwnsicBitaBsWfZ00AWnEZMzs3C1DJ9D/DEaStAlIHrOwGOXo5C8QrmpzIT6cMAWkDQMPSHVnYyM1GY1LTeNLjP4EmCh6m7oanD+XTzRBq6FzxInFg2HwNHu3nzZKEwm79+27ajGZwZ3XsNTJa3sae27c78ViBN51J5nrcV8tgz3tw8C1M9oNyM8zio3zXAfjIzPqmVzULurVo5myiw29u0eCbfmz6WmpsqDOfS2G6oXPUsS/ICmFzf7TDBVjZoKs6oj+LUMpw9eqem5tM4T8MpMcwAWfuzueNa+OSOcS08kZ3Won1TaZwjaaH0VPx9Cnin6EitIgr1VEOQDnEPNUTK+TXKryq/1vJrnF/rmxiN1fy+iV8TPP9Kfn8Nv+6gjmOI7II7Qjoo55sgJ0664beO9EB+PbqOid8KJdrIK2DgKf3nm3GcVcM420bHWRJva+H2emH00XBSWDBdu7nJVpNRX5jtHLOc3OCbm4HTRXWNH5zrzThwvRG9s4D8ev3iPATa7ImIep40KaDPwj2rBpqp1lPam0Cl1tMuKqO/5ew3GRmo5hDlJIZVhHuN31fw+0pe9Sp630DvFXEP12qaX09q+MMgxsMYKEdPPakMJNi1PQ6l1bRU4zAxKGtwLasmjVBWodeunKyBayVwW8u5rZO4tei5lxm5cLfeVKPLKaVmevXumct5S5t5C69waGECnH1z7auklm3wKNvoWlZOHX8FrpvptR4mAHbO1aTV9OTKSRuFrqbTA4VPE8rBOF7NXCKA2Iq9Z5EjtIEbUWg0EJqqnlVgKrcDWJkD2A3qg6SpistWOfX9K+B6HVxVQGvHKRFcd+LVjg5+AFjI75VpZ0NaLDU+ns1N4FqFm7H8Ranv8qNzhQLUK8au+TQYoIlMaip7XItM47KosNHUmpfhMuu0bofpXZ5q78hAHqlM5FLHj9OlEI2pa5oOzWXiu/liwSq6WACKmKrLCFebFfxaydUngbtyqoypX5p4ezhxOVmFT7qNqjDqdYWhw8toh5ejDrmcuk2eAGoxgJg3wGYDACROo/MsR8DtAEhdNxmUqxEXlA47bYEAnmA19wR9VAtVU9QNMO4P8HKmwlx74iFVZQL+ud9XtDe3GGLcPTOTLVBhZRJT153LFCan04XMeN894+lZtmA3MjdTyEynjRxd5IW4VYxmZsbTBxjVKDhfdF0wvP2aHVp1dz6fziFaXy4H7kAZv7AlN2mxmfTMZaYm0EE7ls6xpbGUUb3ysVTuOIh7NXgZ2ZPpCXab14jRBA5Rc6T74OG+O4a7R7oP9Y31jWjq3sODe8b2Dw1q6vDI0HDfyNhtWmwkXQDfgy4cs+FRZxAyysp79g92j9ymVabvmU3nMuiugA+3pk+6o6vBepXNa3vlU+mZ4+DtUfc5jJWL0K2Qsgxd5DOtCjqvA8apJ7knlS8YvS82UNC5UsbQv6J7J3zXwu6cXY5rlnM5dFMPZScyxzLjtJUGwZiRrJSbppUdBN9vSove0j0yuH9wHzy7kZGhES3SNzMHamWKFpLuwcGhsW7s3zv2HOweHcXH3m7SkFcMg5sOuhEeePMItDeTS+eHZqGthmIzdekhcDQzs1OpwrFsblqrMqFo5NBcvtCT7s2O0xV2IF/G2Jbt3d93sFerPji0p/vgHUe6R/Z39xzs0yr2DA2Ojo0c3jMGNa8RAnDHvr4xlA0jY5RlxMZuG+7rPri/e1RbLddptDAxlTmKG0Gmqh6eyWeOz4A4ghTkQdL4DEZTRrSm/VNT6eOpqW6+F2B08mpeMgriJo2qNfSRw6Rk6Bhb9zeK6vbDPAn0fOa16YmDqdfeS7cfIpjSQpmsVjkKFcJSOpCqMnkJ3JgmGVtmVWykHuHjNEYFaoaO7D2HR0b6Bse0ukPdt96xZ+jQ8NAg3N5Bx5Rp665sOnUnjuPpzAxeZnG53GMfz9i5i2Xy3YWDIBAwreKaYugYCs12rR5bBBoBRGI0dSxduPcQIlSO3ja4p39kaHD/7X29WsXw4Z6D+/dQgdMig1A9rWEwOzo3PsnnE0avrRu0r+dLfTqYLWA/ppkYMbVUjzsGw1m6PyU9MDax3AvimJLolzGJrMDthnSOzfn4Dpe+TyU2UbS+W4dH+kZHaa337gfBLB8dOjyyp0+rG6LUUlMoV+Nc3UWGUxkY3d2a0qOVHcvkoLPK82mYSU1oGvZxdgYqvV1Kt2uR8ewseCgj6TzO06LHUpmpOdAKsbReX+dtt2h+bnw8jdPVvRzFvPEJz0sUQHKUA9foZIdy2Gd044gny8dyMHxBIe3RygqTmZxc5x1a2WHck9RiKGBMrGKH9g+K5Cg85Dt69o+NahpL3jbWN6pF6KZthCKGYfKuRQ6jSi07jDtAWvlhutUC08o0zi0zJ7QwmCP8OUHlcw6cHni2kdkpSEVzuBoBAlpOE3kthqRG6BJFGGbvUGUY26BDC1nKDkYNnyWL2XK0kKUbZqBx2KWQpcsjhSytTYT+AhCrVBm7wD1rN4DRumMGhQQGov734LbRYWPLVnXebq46bNrj5dvK0lZvFAbbIE65Y7hGwfjC2BUUtEgeNAM8eMBGK67iDD0FuliLpvmcvEJkdcPzVHkulGfyfdOzBdzBFdzD6ISydZxwfhKAj2YKe0B90dsc612+AX3YeZ9PpZXEPtFoj7BnwdIMouqw274fayDtx7rDYKP2j+0H5Q16gstTxWFpF676sPsOnUYJseewAVpjKFDx7kA3FXxj9FeD7gclpavjCgPHtMZVfgdzMCpPgm+VHkmDYQNzfxlgz83OArv0xNBsOmcxyTUwlzCZ4jWSDbXYzooco3kLuG5axYh0E81MI4e8VsnfRmAKS0sbe7d1NGtLm6TDWrWaW1J5E/fIZOb4pKYdEH2R1MLghbFhncpl6GTCWC2s0rexmRcyNtQ7ZLwZUQ7qHREiGfoGgrTox9/CmL0XdBgKqNM7FOX57FwO+i86kz45ikCVE2xl6gjt5GiK7wFHwVrnUjBlq6M5wzD0pQGgGcPJ9k6F+Y2LCv0NCygyvdkgvfFQBpZl/C6tYgpk4RB3jStpHjSaqsQqVM4UmLYigjNDLVTIQgHdMxcatkra30eG8k5+JSsbY/pDOSGAx7gi0dI4NHmN0tScqccyU1O4Ww+DMYe6EexIXORJ/VFpvCQAXOX3ATSxWw/56p35/Xlaf7rEF72TL8RGsN24gIrvlbBpKOZg/eVteXjws9BWrTylv8tBHTutmidEZ4Vzc2Bcj1J6FZDeg6YbRafS2HXHR5yfy9PVZ3iauexcAQwaSDq+PgIqn5nRyvy9YPpz2RnqCVXOmR7mnNQ0erOHO9KhE9vhD3xYzOzNnMhAi6owPZKeTqHrngNScDsmLEPlnNxOdieIVdA7TqWa3hhkqui9Tkfccjctgm/nQKap1RHc4tdU8K3TGVzlBi8VZis4lsVIYhIGThc4YanZWTDx9eOokMHnmgCyt6dz2Z4MKgWaOzSTpner6d1YDgRRBoocy05NaLHsjDD8kBTCqqIUM6ijlCB1AcRKMXMI+qagCRpN0qmepkKaj1XQB/mRNMiVeIdBi+kaBixMfi9qCMBGf/YYS5dlYGYzCNoHjE54OjWrxQpgxvN0ogB+2KwuKiBc43QXoIYn9BIth9O89MH0MTBzLD1Ctw9qC6m70v2QTOd5r4Cxhqz9MNZBX07gvAmmqZh1EKagOpCGOYdnprB3qumbGUN6F0UKkynqGrAeFwOW3lXQQcdv0HvIwOiM0N9YITuSOkkLagSOyKjmaOKe8CczlBNMa0fSOPGbaC5km7k7SMR0DOSDTeoqR+WhEb7zxLTW0ZtthjkwtTFyabMxDwer0zwLPJrZDGLbwGjzOH0d70gW5msZkOFrJSIi0weB6MCJabalhAb1ADwNyKATQVBXfD9FgwnTzEQqNwHF6tgcuJh5SGkH4bGgdEC6ZjhHneQMdZSwUEzQIB1jXjzL1tPxd8ZMWw9izQuvYX6N8Gs5v0b5VePXCn6t4tdqvhJWQ98UIfyNkTi/NvBrE4dK0M2HtRx3Hb+u59dmft3Ir5s41lVw10iu5rnX8Os2fk3S61qynV7X0bdo8LqDl+/k1138ej2/dvK67eb3vfTawumsIn38updf+/l1P78O8OsBfj3Ia3sI7raSQZ47zK8j9Joko/z+CL+m6HUHf8dmB3/HZgeZ4OVpfj3Gr8f5dZJfM/x6J79O8VpMw10XmeG5OX7N0+tG3kcb9T56Hb320toh9im420tOw10UchcUmlhFFkXivEi8kcnRAYqJGW8XJe8QiXeKxLswUQaJ9ylwfzN5vyj4DZH4kEh8VCQ+LhKfZolbyOOCyhNI5TbypIB4miVuI58VOb/DKjeoV+7rrOQORgRhf0/A/j6DHeKwN5M/ECV/yBJpA+mPRNEfi8Q3GfawzulPWcldBtIzAvbPROJbIvGcSHxbJF4Qie+KxPdF4kWW6CJ/J3L+XiR+JBL/IBL/zBKN5Cci5+ci8bJILIXEowvxnv2NkKaq9ynkg6Lks0xLjHLpHePN7CLfCPHW/ZUA/YEg8vdI5H6F/BAzaOolPfWPeuqfIZV4al9ilGzi771sTjbQVz42t3eoEfJDJdEer4vX9m/Gpd574qq6lS71tjplttFNmbrkyf4l9aIaSVwOcpQIJQ+3R8kPMFEHib+lif77AGBNIk5ewtt76UpySN13Ua1MrOV5APuPmCiTC/eBHELeLVD4OUaxjvyTwneO6ujvgeRrAeM/lVVYt3Kom0rrFkMamzihWiD0dcS/w4PQoA9CdUDoDxE/7UFoyAeh1UDoTxH/Lg9Cwz4INSY6yb8oiYrmf1XoqyjYk4T82JITJf/GeMTIvyt0AyHUv+qiujbRTv5D0QXhBi4IdeTLCn31TuHZ8IuvloTU1yHObvJTM3mORshTFrZV5D8N6q9iHNeTn2FVfrW9ArlAoiWU3CZRX0/+C7NfKcpfCeWHTOX/jdnzony+BV8KNMo3kv/B7F9pL6ebqNugBxdDKmrdRIgovNfWJXZawKCu/8vrClW/2wVrB7kvlIDG0DfINrcBaLsK+NBe6CFE0WCYrUpE1LCE1OOB5MTWicZ2shCi1SVkMWR92mfMOXSwrU1sIWcRJQQtnIdrjL3Ctd8iSxfVGujScwh5SnTpKejSUalLLyPnsXwQxOh+TIz2K1QogdpF9TIofj3mDrkUryFvCFlFjCqMtYkEeWOIjv1y+u5TyBj66xId5E22hr7ZlvMWS9OpiPWSt4acBdQCDnyvpMPCWVDfhpU7LXrlNPTKmEkQH8Dyo6L8aAsqOqP8evIOW3Xfact5l+Oz20jebfTZ1bz6VeTPjUrejWBJJ7AYeTDEhrgDxjVOGFHyELZkhwP8evIeOzwdMv2bL6oalD+MqJOiEyahEw5LndBJ3svkNko+ILTcIyGTlvsVquXYaAOFQ0K69t9ILoR8DWUzmN+h/L5ShrI7kt+hvJO8H2nso525D7AeFT28T8LCnlCaFb0vbiQfMMB63XD5uNvnOMh/DXtpRjypGXhSR6QndYz8eiixBvhWxGOc4oISL48zwXwt59isqsjTHY5WQnGuxysuqusTN5APyc2PorSGqKy69kNI74fLE9eRD4eoR8CbcQs044APB+A68pEQdQA43h2AN+jD3l9JPhrirszHROLjNMH1Kaq4TeQxoSA/JhIUaNCsCjeRT/iCS5BPUkUqNKrM6zrymyHqgPCGpKEhQz78jSvJp0wNOSx4HzY15NNClX9MJCjQkLUhj/uCS5AnTA2Rea0mT2JWmVG2CrPXW7Mh8RTrhFWs/U+HqN/E238XtH/Yh5s0RD5jyN3mFvzSA6XvIh3P7WtQ+uqZnuMy+NoH1LC6qLhIYmXiEPkc0wURpgv60XF6lOs2RkXXbdYRba7pa5BcL/m8lZy1UkjOoVKymmgjX6B91YZOE3tfw9IjGzhsswxb5w17RWKDAXuYvWVsBUUoieKRYtzbDVj38btBfoYtMo772HXHcR8m7jjuomXBaSNf9N3zGwzYOvfelKA8+/yLAfr8iyX0+RdL6PMvltDnXyyhz78UoM+/5KvPv+Srz78UoM+/VEKff6mEPv9SCX3+pcB9/h6FfFky4FSRbm4TLmJvewv5SihxmdNyQaNQrADzWxwmGTPDzAsYVp3FUL2u5FbpOtjVx9lGfpuam7Zw8owCyv13mF2xPqFX8MasEQhjgHBWR7ArQwNhH/mq3HiVNh7upQ6I4hQbsrzdsSz53WKEAvSSYQpcGe4kX5Pti87Gu5qd5OtOWFfDLOP3xCyjkvx+KBGNh9Rw8hxYJo13lgZewq9Q6WLrDY7jBOCuTFSTP8B+3wZiOIrDS7ofY/d/aCn/Q0v5H1nK/8hU3kv+2Gb6He0171Jn03o3+RObB+4g/d8sJv0BntkE+dMVZOnG5S6UM52eVT6A/iNeYsh9HL9NugvVgx9mjo0JyGyOPGPvP+eh9s0VHGqT5M9WmK0bp63kWZT0Q2gAQfH8LltsdbFbzQKc2sCi4FcI8MNtzAv3CX4EraKPynQy8ANoGA1wn1aIIw+2sUlUSchDbWziUhLyMNrMwMhbybeCPa9vBXleOxi45XkV8ew5D/9P7VvLeWrfWs5T+9Zyntq3Sn9qA/KKjWw/fM4aZSty2L6O45uihyJoI8/pglXcE37Olyf8nC5MXp7wc7r0FPeEn9NFx7+H+pwuMQFxhoJ5ws/p8uEXZ4j8eYgt/ZmWAL5tXgLY5n8JoI18J8BD/I6vh/gdXw/xOwEe4ndKeIjfKeEhfqeEh/idEh7i8yv7EK8iL9DV6LZy6hH3GgtiDsO2HfduGKMC/Z1LdtN6FKhOmIPaFEBdfRfVz1z/UuSiWg1zlr8Qz3TU+kxholKlvi4eAy+iDG6/F2KTnL8QojJWBOH7FGEz+ctQIsa9lCWFd4zsJ29OdmNVtjoCyupLgA+wmv+135r/Da/5X/ut+YsUYSt5TOHSeajomiCRwd2NgSP44WDgR3yBf0Lho6R43eMy+Ggw8LFg4MV7xgRevGdM4MV7BsE/qXBdULxn6mXw4j1jAi/eMybw4j1jAi/eMybw4j2D4L+pcI1XvGcaZPDidTeBF6+7Cbx43Rta6vm7IUh911dCt94H2m1Ny1VkiE7dmfY8setrIX4WhX01JgEkfmAn0XanGiV/C0qdulbGZEtP9XSqzaA3yqje+LtQvEK9Nh5VteR5ZdeO+OXq95R4Qq3oaVALkPuXoO3VSoD+a4Xyfl2PqUVtVwGvH4ZawsnXK+3405OQaP/ITJsCv4TAb0DgN5iB/8EMvBiq0kLqGi2qvn19Uyip4EfuFeox+ol7CD9KblMbm8JwE+kJqQ09WlwlZezLUJuZUVr2qA1NUYBVKWyl2mBAm+5C0OqQUQapSpqiRG5Vz4fox9JKDzzYFuiV9WotdFXlQDnUuWpXHb/W8+vqB9RqtTquqY1xzKjZtcZBHGovqiGo3rGmOLZroJZ+fI6nzlxBHfQPhQaa6JfmcX2rvpx+XV7Xv2kkRk+cqbv1Q/DUwy1roY2rnfoD6349cGhoY7vXyGcz/bQcibUmQrtWtdOPyHetYmsOTfosfMtFNdLSDYTX6ISdOo93Uk+9W9chCRVIxJZHIrE8EjH1a0rTZUBjHUuup8m16pLStI6fSLMueTnQD90ZUtvhb0dLAZ/5Wnzm1yvbsVPVEP38fd0I+wx+HV0SiWpl6tvbk+ASxUEqqkEqNF0qrisiBa/A22b9k+KOi2pZy6MKsr2CiZqFQ0hdiz8t+HPlA+pRYPhqYHi7zvAGwViIIb928euNFnG9ySK23fzaw697bA24qJa3fJlWcYMYDdXqWoC4lkKs27UDM1r0jI0sw9IJ/yc1p31EfV6LToi2XKQt2OTYyebmtFub0/4L7Xy1pQ5G8+Y2fI92XzPXhzE6QLYsf5i2Lo8EaqE2Ny20V13VdBWt92aot7GWHkpeQw9hakQdNKAyC0jPd7oZd8L7G0DV0bJb3w2qTmvZqi6Fm7Zjw3GwjlSQMQBL0lObRmrJYaoUl8YeVsvUMPmfcMubQmq0Kdk8ysd4Mtl+vTLaE4cGlZNbEBiut+K1p8maA9fb8AqK+XauMPEwsiQ7nArPHtvWrkIWW+Gnh1PRJX+ofAN5NS3mFNs5xYH1zvntgpPe6IFmelhZnRtkf2iEl4zwkhFeAt2l0k5YtHgOMEGraNkC0nO1/hTQGoge36T384doP1MtuRNAdrDktUbyOppsQd25g/frDl13HoW/cfibQCIoEa9wkwiUuF3Lk7jVTR3UsjPljK/RAeVKyvZ6N7ZY2AmFW5wKv0sVw26qGDbE8Yi0OOh0Jc5fCE0qyRuTN7RIdyMNzjC6UnnPXlQq7tpidYnaIcuvs27a4m6b3quCQQitu8lR7fmzXiH1CrQAH1XUJbWpmwpSoVlpw4M656hAXdNDYNycQEGC60m4KgMxcg91ML4WhuS9mIXJVvJaNvsHSPxVkt3t+BQpLk2dZKCKw2h7Dkmx0facIukKznqEs4aJNxPZHqjaRpbcQ5PU8m/k0rvRYvlPYje1CMtfbwiX7gNs5D4AXmmJ5XkH9wXo8xlH5dYnlNvARvKrpu0ihb5/yF5oNVZEBzaR+xQHOPqeogS3GIqgV90yBJq4X9e7lFoxfWZ0cAVDoPpWEPwCDJqbmnqbRyXFcs314dEFpaceRgR/STAZEmtBbs/zHHs7OwYKd4kmQWb4S7HOTztGzuAUaNuuvZA8K5JxwQ902UKEcqRPh1bWvg5F9VAEqpwoXQ/9FR0PA9bx0BYFcblf4QNjjXVgxKPk9VDpXSGXEaKRN9BiTF8Po6VeHi30N5QccBoz7TFIvZ7jLmP4jIgK4ji6E2XzoG54G8ib6AIPGFvo3YdV+p3XsAL5b7blr4L8WvIWRTfO+FIogay3mrNCQqLOxVCiDuhm+wAz23Uq9tnbEOmQLkwJ8gBlyM3zgf7zlfrIWGOy3Af6H9Rcigb7z7sVDbkXDctFcfJuhfE38hLkQbrWY9TNtWzQoWzIqQoWPFMdij3pOHnIVsc4eQ/PUyUeD3vU+2GPej/sUe+HXeudIO91fYYJ8ohHXR7xqMsjHnV5xKMuF7BsxJnfox51edSjLo961OVRj7p8wIPfBzz4fcCD3wdc+dWQX6ODS1e7NeTXMWNUyvggZoxJGR82tlpZxkfoh1BSxscw44ieYXi5cb5KLMtenK+PmvPYyqA5j624meX2U25yBNqGKQ4fVoGu1V1UScsBNdR0K6i823tioHieop/kgFr+DDU1aCIryUXWgAYgNqJxEPC9wSBdwdzwaqHUPhRCpXaLrtJedX3ocaWnGiyM+AoKaHAd93lKR9dxDeQLlGV7lHyR8Xs3WtOBteRLLL8K3wfWCdPaOCuDerrIdEBfZFqidCQVESNfYa1rgIb+FiZvx4ZeRn5bfDJ0BdeAjbQiggB7pM8pI5W8MbuOwIwNep01xX+v1zJL82qrpRk0LEpYtjSmfEdLc5Pd0qjioXyZWppB3dIM2ixNndXSSCPO3dK42oxBdyMU0NI4WYxfNksz6GBpBn8JLI3jM/wFWxoni/F/ZmnWkq+yMuP9kEqp8Gvuhf/PRpVko5wkUNioOv/aMk5t1GtAWaYMG3XUYqO+wSor26ijXjbqDl0ZFrVRR11t1KCHjRr0YaMGg9iolIeNGvRpo4767/W6lrvQRo1bbdSQYYsiso0y5aONiss2Cpcq71PsRoqYjdSQbqSGbEbqsNVIScOqJCPlMR1ytV9ORsrJoAx5GKmhEo3U0DKM1JCDkRpyMFIu9X7Yo95FjZRjvbmRcnyGFmPjZKRc6lLUSLnUhRqpCQ+D4lKXRz3qUtRIOdaFG6khLyPlXGgxNk5GyqWmRY2UY03/f2KknCRQGKnD/tVlPTVSx0BbHjeM1KTFSP0Jq5hspCa9jFRaV4ZFjdSkq5Ea8jBSQz6M1FAQI3Xcw0gN+TRSk/57fXULUb8SasoII4UbMnRqdafVbA0b5ikkmy1TvuPUqtlutSLmRbxh3WoN26zWEavVGjbG0kpbLY+p1YM2qzXsYGF+2aZWww5Wa/iXYGrl+Ax/wVOrYQcL8/8W8X65bY+THAnbc8S/FmygtmcKVN60YXtmLLbnWVYJ2fbMeNmeu3SVVtT2zLjanmEP2zPsw/YMB7E90x62Z9in7Znx3+uNdFctu7zd/YT6tVDTr+i7obrEXVSbWn5VXdU06/I6SU3cOMtl16rk3U5vlUBjn8c2hfpD0Njv8HOh4EHD1OzP8QAoigt5d996f/VIBXs1gvYGmlFsXG55jXtXCDeZ8yv4pgHbx//Fv2nwigfU66R3O/9CiW/G90pb1Iqe9WoBGvCXChRWDmDhX0Fj8PVS+tq7gu+/vU1RF0JNc8vvlwfUduiKa6Ar2ly7wtp0p1euyh5Qv6uIYG+m/6uB6RsV/S38fwrFw+qbFFqACXPpv4SggJjz/jXkSNcG9+OQC9F/C1lB/z3Eq2YH/g+HGvwEo5c8FtPOh43gJVJ0EOfgHfyAfRHEIzpyeHBs/6E+Hr/CHjmEB5KwR7SoxqAQckQRPY6IS9AJWwwSUxQKIyBJ8XgUEWTtED1AilPhGnxlu0OwDDnki1tMFW2EHtRMwzzYA6WwCAfxH7GIbfi6rhxV2IjZJoIFlTXJh6cq/PDUKI/hFuVRh6P8MNUoP0w1SoML4bWKX6v5tYZfCb/W8mucX+v4tZ5fV/NrA69HI6+HiAm3lt+v49f1/Ho5L7+iaVUi/JB4NRff5g6xZMRIltEkfdMsxE1uKFnO39UJw18E/srwjXAKjq8ZR1kyZiQ1I1lhJCuNZJWRrDaSNUaSGMlaIxk3knVGst5IrqbJJvXrSlMDJlFNNoKabKJqck1LCtsV5e2K6u1S4S8Gfxr8VcBfJfxVwV81/NXAH4G/WviLw18d/NXD3+o7a9UGC33slivRyDQB8zX4pm5cTcDwv0x/Kym6K6YDrS0CdC0CraNA7G07jJCGbyHSqyvaQURLULT6eBzDhnIdHU1e1gK/I9XmPEdC6FQ06dHEfqBod2nqBB971vCHqhiUWuVUdhyDwbBgDFGRqM6zI/rFffnJzMxE9qRWfgu/cj0YPZrLnsync/F2GrMLB2SIxsg2x+wSIRRxuIWIBhAYRu/GlioaqCt869JZBfuhir4mFjFuo+ZbfGezjN8+pEZZS//u5Zj27R69RqZgFfHuo/lCLjVekI6bV/ocwlHQIElSKAoRtqaEmBRG3IxoIcsPxGcXGuXKIX7lmIiiYQTJKRrbCtSraJsRmgLDSLDjzcvyeLS4Vkaj/GDlp2fnCmkaloOFy4hMZGfSRqwOFk80mk8X6C3XtqSQu3csu0dCrhRM6Unh0dG5ozRROZICsZhmUSq0yBQ9RhwPaGeBpKIYpAQTZXew3qYGj8WhqhTVp3EsCJIz5VTKOVoFVBjjg2ayc3nWXh60alZkVokUK5DCC8VpUAQW3YgWpvMuga9qKSQP6cNjYdGs4Wyenu4tg9GIIYJeVTY3kc6lJ/pY4CFlXIQiquEF/SISETtr3R6hKEq7hYYvSOUZczzWf0ruhWie93uFeByHUrNaBVQ2d6/gDL2MmWV9mKlV0TKdObvVz/pXDmjKEXg4d6XvzWvhUXg4URY3BJ4lzSvnd1ViFDCqZZSMMTYOpEHIAcGAY9JYlYEnuRcaxtCUrLZGr/gcNfXSgKy1Z4VTExNaOfzg4Csbh5GZw4AONCRujF2xBJLIFJPlhezAKPgrdRY+tNdq+I3enxHsaq1OgtlvijCjch7Q4TIddTo7waLN8Mi7LHhM3MKTPptR7II0a78mFVTyNCsR4VrUvIhToM6kT7KUwMLHE4YBqZXDD7aVxfOwckUwXTzwJgY0uXDUzs1YxbGWqqhuOU5JLAOPLwduGQwTWtqL4eK0Gh5qZk9qNjWeAdVXwbVhLw2TNJlOTWjR3cBs641dNKbzXhpBKgqpg9jNDRiNxGDTJ1RplQgQxQZXJYLphRXQDQbDifR4jkfO0qrTM/m5XNoonM7M6DdVxzJTBYzqN0zj3kiRFKTQLzzEVQW98ChSFaB2dRYVomb7UBYc41jVilwYUXPjBRqvKm8kXcPTaCh5gudM+jj4xifSh7LAMzs1YbRpluodXsJkjfVqrXTDyWgsi/Y1MdK8lIZFdAkuF6NPmYp2HYxdFjiRyvQeGmJGy0lp0BzToEBQnddwa2loaVTMwoRWmuJFsTBaNOoSTdGYhUYpjVBIS1mKluBUoJpFKdEhRTwsGjpJRDChptjQkiLoT4zm03bZA9aRPL3j4egO7+/lMbQqMBDcSDqfnQIlo1IKOF6jqPIyGG6PZuHAitNRBc9JCo2o6gOLqc7t/NquVYDtM/QwDXZjBNNiMb2oXWNJdV8uOzeLjSgDvQqGoJqFIDIaibSwYirVIHTUC1mkime/dKNhmPG9KRoZW83mMsczKMfqHXqb0rwlWjWLDKTTpGxGRdyTSmbuJrhi8owJRyhshkfQwh6vEa4Sq8m9crwqMzSVJTluV5RZ/ALGJGTNEl1Jm4cRwAEX007hm1ZD14NYZWaGcrRhfEhgUBimfskxYaP2z1BAs6nAylewjhnII5Pa/cao53xRUcGVW92DmZm7mJKl9aM0WVEE3RSQWMpMdx1BR45l+2YmZEzs9UpTCDI6PqiQmoPemKNR1Q7zIJa9aQxUhE5sNdQCY3MJhHqKjm5WBvSMyI2boagXFuWktapD2RPQVOH4RagNXm0YNJn8Gsds5tWNpNGZTU8wQzqRxpiUoA7q5fwRGIFUu2ojwLJn7tgxcKTUcaEVy4+yHA1jSqUnqCpS0/eAtzeBSns6dY+uQMsz+b34qBVwoqFLTqZy0MXmeGw8VB4dezx4HvIHpxzUCEtFetFnLsdIN8CALeRYw+Hx+IJG6DuPiJ3mmHQsqqARj84Sd46HG5RizlkjyolIhHI0uTV35Jk3ADc4qvKjIu6bFueP9JBkLwmN4tUn2fPyGWqScGCLOK5azSjo5vTE/ulp9ny1SuhrajvoM0APNjOOUQx5kENVj3FoDm8mBQ2U4pmZwo7J0cCMoH1SDD5TGD0peqEU+k8O5mcKyRfTPWwRD04PAqeHegNfIw89x9asaqWboWPH0DU0h6usSAkLij47DweHSiaPzqmI01tFC3TvW48WFzuKQYjpiKg6yuIRdzNXzCXOlj1qsUrxqD2gKVQe9Wzew0D1R80mNNR9HYIhdwxD6pXRMFy8iE09RFEdzWOzf3zKo4X0LMyd8bdGmnGPUgEcNwyhHC+4Ag3CGJ8Ty1HwaqQCqh4aWUbfPRns7+NGQSytm3I1LWwyS2FT14JCG3UT+Ngk08PwaMpmU+Ax8UCnNB+w6ZyLql0GxG9YSS2/EYremsWgyqfYo69iVxFTjgUH4x1PwzmPF7jCKpumtCKztCbT6dxxWnU6gceonBhirpJOTMen5vI4EqumjSkIStm0rmSlO1adGPR8IcOWOaYw5FhZjgYbi909lxm/i/NhkHljFElxdqv0bBrSUQ65WJGXuoLfMK5xGobMLFkszyxShK0pgSIRGqya1jc1xcQsjz7YXD7NFT/MX1i0alAoeuDqWOr48RwzHcqIFsuKYJaGT7ETBuX4+Nz03BSTQR1hLKsph2BqiU5xagZUQypvqI/KlCliYypvaBNIC2egPJVn03C4GhoplRdGjEU206OL1Rol3DIisN4W4CkpJ7iT1BlwkGKZwo0UnxTuZKWWyuez4xk6x5HC0+m5PUAMXMnRNDYO+5z6pWM6ZJUECV1kIMKNUUbFoYqi6pRqTKUAHk1BY3H1sIonho5Rk1ij33LHvVrPYF5vpX5PDaF+x8yefstMXOVR0MjopaZy45NatXwHbYWZNK9edHxyDscrCxHeaKgfHIeGE1VvLWCTKimGsJHeKaWv1arRV9k/A7NyZt5rcREE7Wg6Pcsn3izKqJSx2gZD1VydlG1M0XVkPavRAc5GQDc0BgE9q9EBjhJY61QgZr7lORbYL1LANcEqVsoNDE6ys7gMCD1dxYnwxjLrKLqClxlzIVqq34pyvapYI3jymJEu7M3mUNnow/1yj0IqqypaFGhAVivHFEbwFEFcK1gG81CIZIqGjuGCrTpBjdA42DWRArmKTOSyYHnwl860q0TqlkkMRBjDW55Mp8Yn+TKRnoTREePLJt3gUOlJHrNSzqDyF0EfVytnyxlao76OwSIsjmVH2GKYvt5Bp2dajekWFd4enOPQPNBoYGJQ78A8mToQNDirqQgwNJZ3AFcBYywNVk0wEgauxnSLakPPgBuV3UCqkqWO8LVFnG5h6QxbGYoeAx2NBj3GE6hDMAlywGOBRvniE6js8XGtnt8dMekhXfXv0CplAKgUkBB9E8MbFnuT6ElRWI45lHs21wfPTA8bW9mfAR/wUJrGb9SqebFO04g6WqsnsUeorl/nNNvSS6UQ5ipNDs8VpHiloSPbtbK+e6AaTqFL9YjvUgxTTUTdhIpFp3lg4G2H8+lmQXRLazPGc20unMw2F0BlNc+Ktam8CPCslU3RgJ32EJ5lfSMjQyNaHSWWw8C3udQJ8A1SIOeXH8yeHM5lsjnwd/bPoMHHhQe6mDLHNn8ZlhY9jssbMJxiPIESd5wveUB2NHOMba9U8lVxtupVwe+o1MTockceW69l8iBxDKMK0tCZ8Azobc20Zc23/M5sZgaHRLemdc/iDJk9hnxauKt0aUq3zuXQ/mOZe7TobDZfwETZVGYa5wyFHIgb7eVKRpLrKw08OyEYtUZaDJk6WxaODyMTpQ/u2MDjCewdSAoSlUYaStCTRLUCFz6+KvQk5IdhjoYw92C3woVqxfB0ZoZGqaeZGaYqedT6CnrpzuOMFVjhDZ8YapEZOhHOztCxUZ+dLUBXvDYt5utsBdGaiwPblknXlrL8GUVmwcXVNPzlbCswLbjidBI3L8vZZpNWye75oAGbNDEHz0kZ1apYUnR+JbsVq6zsjo38uHSjPyspTwxIlgW9uA7Hj9gN2ELFsDVQMHQ5/HmNhZAUi5rNGavYhoZYx4RRTr1HrY4nTDtU9TzTvEel5oQvWiVSzE+MY/x43Nwz7CbM58ZT6NnDr+gNDW9GWNfWGmlRHM1Pgnc+hTsWLAG6Mw91xUUBduVdWJYHrQf+Lr2wGkRwcqEpKU05qsVncziaYH7D1hGwpBzLQTAJu/am8+MwSrEjqjFHulfxnvYzxcHVH3ZljFZLNxJWjZTNfASW0YOdw1MSOGF5Uo7Gcjju3FG61aKF83PToEbmprm3W0GTYrma3vC1XZpGD5dBszjqNMkXcmiaryixNELzbLZKzdJ8wQpu0L2nF84wgvGhNZXGjaZ+ikhx5wRvWbK6kDUHn4d7Y/5RyBorNJVwY0yOqgpZU6D4QlZas4kVsmINU8NNYJ4tAk4DWWMiU1bIoo4AevImW6V+S7fL9DskCWToDB4w6SopXIyJELRnlEpgITuDqPXm+yFQ7VPHEAe99Qm98odNjZYmXYWsPOmCO4lX2RzdYYbLazPgFYqJrTHF1c1IxUlpgTQu3YgZYQzz2NgNI7EK+EEJo9vvDnGpq4xHgcGly6Fp9AodQoNNiw0EDFtNK4u5scN6EteE2b59lkanrj5sIhh/R4Xjq1aKLS61yvOr+T3h11oewTgOdzH+gtQqGn8ar2ssL0BJLz7R+y30Skgrv2/j99v5tZ3n7+D3u/j9Hn5lMaGb9PxD9Jrg0aAVMsavd/Dra/iVRXO+nPNReFTny3V+d/F7Ua8Zfr2bXjfx+M4Kj++8hRT4/T38+qv8Ok+vV9P6ReH+PoUn9MjOD4jwyg9ieOXt5CFR8F6ReMQSrVkhHxaJj4vEJwTMJ0XOpyyBnBXyhEjoEZyfEjmfETkXRc5nRbU+h9XqIZ8XEF8UEF8Wid8Sid9miX0sDjTmfF1g/Z7I+YZI8JjOB0VMZ4XFdMbEcyLxbZHQozJ/T+R8XyT+UiT+WiR+KBI/EgkenvlW8o8iwZneLgI2K+RfReLHLLFdhHBWyE9F4mci8V8i8bJI/I9I/K9ILITEoxaJN4qYzW9iiWryFpF4q0i8TSTeLoAfEOjvEDnvFIl3i6IHRc5DIudhkfNekXNB5LxPRIz+9RBcTmL06ah6Dws+jdkfwfvXko8K+I+JxMdF4jGR+IRIfFIkflMkPiUSnxaJx0XiCZF4UiSeEokvsESM/JbI+apI/K5IfFMkXhCJfxdV/x+Mgf1WeAii5EyYl7wtDCUPKOTtYf50nxQlX8GSd4EYi5K/CnPkfxM5/yUSZyMc6XwEkN6rkPsjHPb1IvHmCId9GyYo5feJskcF+u8g+q8p5Kui5JsMGCr40bKmVYnnvqomdsKA5SearU7upkerr26vVyOkKlEd1+KipDw5wr9Haccoj7eSPTpSI0dix7NF2lswAiKLNkPPRdwZV9V6+p5kkmMk+en/lVCSoCVrOeUYUJ7RKW9cUcp5GoQxWcOJ1pDPhvTo06uTUcj4HMtYxTOiNFQi8C0n1/NrJ14xuGQVPa05Qd/s/qCCoTPup7ka5NbT3Iuhi+rGxFYMNyfacx1j7VHHNgfw9jipkCvaAr8Iuw2jqgnYKIetwqhpeqboOQxpuTHRijGRQsmKdo00JNjB19F+egzr6xW92l+Bam9K5DBgGSMT5g84DP1xhvXHZhjnvxNKJHT5CCc30jdra5JJ7Io30A55o0NMS2u3hdRr9bZnnHiWxEopxuqsglHKWKSBm+nvSDJBOd5Mz/QbMdq6lVWgOU7iZvgty21xdeJ1xWqxDOZF+qAaHvHXje5e5+MRty23wTXwiB14lsSqSPNqEkkMHAc09CY5jVqKgEMXh8dajC+HbY+Sb+gYojDBYsWhDkhayy5jceJqdD0VZYHh6LBbn2inYeF0vVNJrjIUXDvBaG8VutJ5k9JP1cYNRkQ2eWw/Y2SG+y365k9DRo22Y2QwjUdLVkEPVCAqG/I2xD+jHPcYwcQMjjIaVLzBALASeZYSacDwRxa7gOOtBcPeeAg6ymMDhrkRuOsEbk2iEoOk4IdkIYyj0oGxV8yUDsqUXHVrdeLmIqjtWzFGS2McvyisMYG9WYEesWaxwCTfNeo8VES7Y/QkO7izdq+Bhv6Ftba3+m6oN2pJDf2eUfNX+WioHdytoQfI90Wg9gpTbe311AGMekpZGF18A0aKYV95VCRfJbOEe2CZrMDQ6OvJX9nE1PBuYo7lMLhjCVrljdA8h3IXK70BY8sYsBjQfXVbKKm2q0APAwJRqHY3qAagij2sxCksjkyBs5b8jdBXL9r0VRuGpvAYcUZzUV68YUuQl13FSNaTvwsl7JgbE7eRH9j1kEn1gB48K/s4GBmD98Pfs4SjUm1J9CJpWRE3OFP5kSeVreSlkNVD9fTo7OBustJB/sHaa1t8j3lv1JLG/D8aNW/zMebt4G5jfhv5J9HZDQkeE/efRc6/MGEO86+5Zy+qm60I54IiLAVFOO8D4V+Fg+G3DSYEP20wIfhpgwmheBs2kI8qJs+lnFzNr1spdIipwx/bLLOhP2ocy83q0qHcRTK2kn9jY7SGqsAYx3qL0l4NbZIQ0LdqAdfr38wPQQ+DRttnKT7nXbzkXXzeUnwD+Q9ZnVjq176G/ESEWFxt/CYjyR2s6ju90e3ah2IdID+1WsuDJVrLODz+/zSs5ZCztawD5+1ntKL90jRXdqOZg/fzojBD5L9CpjWFxmS5roqrdAEpt7nRkPhv6gJC4mXmC1LH+ipyFG8YjTZj5r4eOtMkXBfVLTD5dQOuBGB9AQRB21xBqwBUiOTbFIR9WiH3hXVDVhYP9y+EualbTTXvzS1laogshHlcOyYKNycPtE+SxXBinIYgvtm8mPHKeGN8NVj5hTB2407dxz4bptCrzdCxeH08juGYZNB3KKIub1fsOvuiWpv4Y4WcCyfC/Uthh8q2NKlhshRuq+Vt11u2xdYMFVdNkMwvukE7yfmw5bGJsVRH3q4kpIony5LJ/iUVY4Jv4ljgbP2qBJcsc4ebl+E63OFOyXCd7nCnZbguC9xmARdO3qfIgAPugAsmwIg74KIJsNcd8IwJcNIC2GsAnjUBZnVAfuaMff49y63IBpnKOROVXIlUlkxUCiVSOW+iciIIlXazROo6xl0eWxMHZRzuu7URLsu6K91+OVJI2JaF1pqotSXWkftdxgQ+t52upV4jpppj4Yhhkny/rxEk4c1b8DxHlIR3yoLnOcIkvNMWPM8RVyPgcMSxcXC/vyEoYS5YMb3HpIS5aMX0HqQS5hkrpveo3WYAnlX8DYr7V2CYS2zPBWW7DL0gsV0KynYZikRiez4o22VonoR5ZEveTStoJecyL620RcZx1UqocQ76gvSrv7aR1yO1ed8yuoG8IWwskdoVGzqOsUSSvBFcHxiTvoWwhbzJoLvbWZ3W6zDQgt1CPUq5HTR33pLbSXNPWXK7aC5VXKuN3AHIFWpJyo7Q7AVrdi/NXrRmT9Jspi22OLVLvzcmea2JHoSstz8xjuX6qA0abdCLbw5b183MvXgVmKw3G73YiL1oUDCVdtDSebm03ijtpKWnLDhdNPe0jHOZUToApdi7LsURWrzgVtxLixfdiidp8RlT8TajOEuLQcijbrJ4Ub1aRshRhHP+EQoUYck/wgmKcL4IQpK8BcfSouJbszaTt9qlQL/H4O87ZIiNFoiNGKG7Wn2HsWX5QBiRriTvCEuTM+cxuloHAul6myIGqZTdwbLnLdmdLPuUJbuLZdNx2mBkD2C2GKhSfoTlL1jze1n+ojV/kuWzsXqFYwNNur0TQVY7DFIO7qm6k+Sd+CTPKL6N1TbyrjBddeEDsShCkrw7TNdhxEDygfFgmC7NiLHlA+OhMF2tEcOtKMZt5D1hx8VqMSmOwKR4xOQfN5OHw4m13FbW2ldUhZN1wI20eBLoNBvEwGleHrF5mVjHMomdkol1LpPYaZlYlxexg8WIUT9cojawTGoLJmqRZVJbNFHrXSa1MyZqk17UbvEnxobD50+IWxN7yXvNhFebCVtmjo+EZS+y/2a9gikrneLjzIkaZF4wZ47oLHZZWICW5z3Kp6eCHJueSpUbdaucPFKd8KXq8EyP6nRI1ZmXyXUEr44zvlydjmLV6ZSqc0om1xm8Os74cnU6i1WnS6rOaZlcV/DqOOPL1emyVKfDWp0BvTp85q/TG7DUZ6xYfVwJyBUaKFahiFShBRO9SPAKuRCQKxQpVqFeqUKLJnq9wSvkQkCuUG+xCk1KFTpjojcZvEIuBOQKTVoq1FtMVcrTbRdF2Zq4w5+i9KblriZbE68h73NY+18DVJfCbXF90V9sfGwx6WRjxd9D17/OkQOtN/AJO/EZCcTHywqMmJhjwxQHhmAbtlCt7sTIZh+mLTSpkLh12Ygvyl6Ww2cTOiijeWdGVptSQhOKUfayNj6b0EkZnXJmZLVDJTShGGUvC+WzCV2U0WlnRlbbVUITilH2smqj/powAIyokXLkZLV3M0Hb4IO0lyX02YgI5bTgwslqI0toRFHSXtbTZyN6KadFF05Wu1pCI4qS9rK4PhsxSTmdceFktcUlNKIoaS8r/eqg5s+wtD6MX2vi3tKMn18uXpY9T96/cnbX7ypH2sQ0sG30u/5RApt5ZzaeKyMlsDnlzMZzzaQENqed2XiuphwLysaiqv2us5TAZ8GFj+cKTAl8Fl34eK7NlMDnjAsfz1Wbu0sbsE66wu96zhh51Hvqo3JNgxOLD1hB2SdW1te7WkGJ/1qwDjO4yOrON79W8uu4N9gldBf4wlHb1sBvhLGPbaBdDqAfdAYdcAD9kDNoxAH0w86gvQ6gH3EGnXQA/WiYveHAQfl2hXR/mr0bwO/FToSUsWDNWLRmiNcJeIa+henYx61WwC4HwA86AQ44AH7ICTDiAPhhJ8BeB8CPOAFOOgB+lAL2k48hYMS6OSXearW/ndmOcRrYu7OYom/P4lbzHjdKDvAg/T8JyXYd2pxEIn2CiPWl2Db+jQ+jKD4ocKtLmnxcqgsQwwWJGB+FQEyqHAuB1X+zYzUb1Qh5LJwgvKKsBsL7iSVuIp8IW97ztO7y7dY/TIyah/Ynafe/GinExAt/HLmlDL92DttptCdQ762WGQrUpDP9q8hvOj2U3e1R8nMlYfqSYnViA/lUmMaSsoGbob6joGTYtx37z2t8pwm39hCKvSvlkN/B9tFs+Z3oYjjkd7HNbCO/keUP8G1sW0GE77vZCnr59pqtYJLvohkF21hBlr+TofnYJaQIOf6yhW+EAt9R9o1wgm9cFkdoMT8tXW6MdrYmrmEwN5sso2Vf1YCvBgl43pcEPO8iAc+7SMDzLhLwvIsEPO8mAc+7ScDzbhLwvJsEPB9UAp4PKgHPB5WA54NKwPM+JIDCjPiXgE+H/UjAp8POEkDzHSSA5jtIwKfDzhJA850kgBY4SQAtcJIAWuAkAbQgiARQhCASQBGCSABFCCIBpqflKAEbyOO+nujjLk/0cZcn+rjLE33c5Yk+7vZEH3d7oo+7PdHH3Z7o40Gf6ONBn+jjQZ/o40Gf6OM+nugTvp7oEy5P9AmXJ/qEyxN9wuWJPuH2RJ9we6JPuD3RJ9ye6BNBn+gTQZ/oE0Gf6BNBn+gTRZ/o1TS+V1mLhiDokL1TMS1ncZe9fymEvdLEoOkKFC1JltlK5nlJh63kFC/ptJWc5iVdvGQNL6GrKaxowFa0IIoitqJFUdRrKzojiiZ5UZtDD8hestH+1sQNEuzNDLbF7SVdGhS4/2bZxF1LNFdWYdOXVGH5g+praRhwE1cwpIIfHi8gcTM+TO6kEXnFu8QaVlNHjliqugkttYw8RJ5y+7qhmnSbPiU8H7F91Go6E+XpML6tmSaf8UvQ9YAY01zzqbD5DIXPAJutiS5yUZ6cyGSj3tX8LK1mF/mcG75DtWT+nwP8awD/84hfEZz/Fyj/w+SLbvj+uuXzlm75Iu2WTvIlJFvj0Psq+TK+8fdupb2W/HYYP5eP89NtkhvxC9atIAu/s1Ky8FXayA5OkOuR7gQ1FEFR5znqfHDUUxz1VHDU0xz1tE/UToFKdVkUcJnVCoq8IJAXSkBeFMiLJSCfEchn/CLvMJDPCmS0ohH3V6E3yEjnBNK5AEhLAmkpANJ5gXS+GFIX+d0SFcvXaJ8kOT51ioJizAfGOBUY47Q/jO0Cg4pxUJSF4CiLwVHO+ERpNVC8vx3YIIN6fzVgAvX+XsAE6v2lAMrf10s0LHgmGT5phu9H/mwYReXPhlFU/mwYReWPYWwXGH7kz4ZSXP5sKMXlz4ZSXP4YSquBUlz+dNDi8qeDFpc/HbSY/LWQ37N/G2Ys5q7CZdzt5Pc9YNqr8MxAC8ok+YaBEnXwMKpwd8s4aCamhsS5grikfr2eYmcL2je79M+FBpETCD91OqJIFRPLpjdPPRFOb3759E5R94TTO7V8eqepz8LpnV4GvZuRHg46eY8bU8smuaDI29mYWjbJRUXeucbUskmeUeRNakyVTvI2RvKswjwkTvKsD5I+Psf5hv6R0Dmd9LkVJL3EPlYTpJdWkPR59vWUIH1+JUhvJH/gqWHovttVia0IZmwIOqmiKPlDaq0RvBrBuTbB+0bp3gRYywqomuCsGqUsJ6KnxLeXjdK9E1E6ts1ExXA3YOuwQB+3HHqNKdMJng9KM7wYqTI8YUWL4hM8HViMQQfifCyZiYsBJsMnWREfKH4ed4cJQyfm79u3P5CGTgBmYrCVwGzJ/5efHSaMUpid9/9xYocJIxCzdvJH3ibdckwWPuf1iCOGj3v5PJ/2u5Wf4nN7t/LTfAJvK2/GcmM8uEOIEeAOIcTeHUIIugPETQxCSK/1QDEfvc8pCJEsnYKQs9IpCOEpgUI7+eOwcXIjHsLqqI8X6G5w/30qHpS2gR8867Q5IRY28dgWNyivY1saOJb5i3o8FsXI9zq+RcKfd8H3PMZFwj/lgu95nIuEf9oF3/NYl0YBZ/7CH99wkgq8jneRKCy4UfA+5kWisOhGwfu4F4nCGTcKxQ5r0gGXdViTTmVZhzXpVJZ1WJNOZRlHprSYR5XDNkZrIuEMw49VcS7zOlYlKeP4OkHjoC8Mv8ertJA/KXIeB55J8ieW8zgsufwcDkuufv6GKZefv4G5q41cce6GJVuct2HJFudsWLLF+RqY3ezULtPTuol80wbR4vQx82NuH7i16xSwX1rkb4wfM3/U5YjTIeHMyzjWj7YknE4J55SMY/1KSsLpknBOyzjWz5J2GDgDOg5XiY+5fQckIUUkpAUTkvW7GwmpV0JaNCFZv3ORkCYlpDMmJOt3JV3uT1keny7PGN8T/FPP8QH2+/Uh5vhcmbhMBxYDxa2Yjxi3Yj503Ir5GDIVrzeKxWByKxejyq1cDC+3cjHOTOW7jHJxkI1e7r0oJ2GKE22CY4qjbYJjijNufGK2OgmE/Pqo6BKUnWeCyM4z3rLzjLfsPOMtO894y84zRWTnmSKy80wR2XmmiOw8U7LsPFOy7DxTsuw8U7LsOAiE8cq1LDvXkz/zlh0PP/9qHVcXJQ+vXoIWkuXhw0vQQtA8PHYJWsidh3++1YDWxdDDGZfAdan08LwlcF1IPdxsCVyXWQ+fesAA10W4VM9aoqULdan+tURLF/NSvWyJli74pfrau5zk2xgKHh7z9eTZZYyMZwONjGcDjYxnA42MZwONjGeDjYxng42MZ4ONjGeDjYxnV3BkPLuCI+PZFRwZz67gyHCQb19zyT3kW86HxQiP1+ziHrDt715UtyVeSZ5z+BixkX3DR/Rv+Bh5j7PAHYjXJjaQP3d59VYEVcL1wwYKpb9ZZc3v4Oun1vxOvm5qze/i66V6fiPLHxDLpNaCiFgdtRb0ikVRa8GkWAvVC7azgqxYAk0W8w6uFig5sebpH6UgFjn9o5wQq5o+UFrMT01+rzQp/JU2Z5hGnYO0htJNvl1ECkDK/8OkrfpFXD++1rWDkjCLiA2Jjzgrkkl+7Egdjkgm4bIjdToimSTPjtRlRtrJkMxiaccacMQyy6wdK+KIZRZoO1avI5ZZ2u1Yk2asgwzLPBTsWFl/6pFTM48SO7VcIGrmAWSnVghEzTy27NRO+KP2CvMwsQ07x0GC4+tGZ8RGn6OLfvcWZt+Rug9R+Qk3c3jzeHSEMA0+RwjTSHOEMA0rGeIKAWEeQ44g5gHjCGIeHY4g5qEgg3QIEIsJ8LVtyVEtpiAIqsUkBEG1mAZfR25b5MXRRFztBuVoJPrJ8/LL3sbLU+L7a4fPkq2f+n6Q7uTv5pTkDz5KwtY/CikJW/9wpCRs/eMS/9g3CGz5A5SS0I2PVEpCNz5kKQnd+NjFP3qfgX5WoGed0b0WbCQy5wSZ3LLILAkyhWWROS/InAhOZqfzyNrIv6BZ7fTB/EaYdr+wjGn3C4Gm3S8Emna/EGja/UKgafcLwabdLwSbdr8QbNr9QrBp9wsrOO1+YQWn3S+s4LT7hRWcdjvIt69p962I6XWWTombs9Uw5t5G3w2x1OaIY23ao+S7dE6E3zttccPd6Ad3iPyF91jfgjSu9IjCzgnv4MLYrRPUFUARErpWcCAhtEIxEh3uJISqKEai052E0B/FSHRZSPQYJHSlUozGgDsNXdMUoxFxp6Grn2I0et1p6DqpGI1JC407DBq6oipGI6vT8DGyJQa69irGIFciA12lFWNQKJGBrueKMTgRhMEhpwFvKL9gw701cZx8D9cQvy/WEGtBDX4/LIdRdDpt8PvhwHrlNp1RLTAyWADIevmEweKkbfrGlXQHJT0fgLRVD7mS7qSkTwUgbdVPrqS7KOnTAUhb9dbtbqQHgLR8YqAP2lZ95ko7QmkvBKFt1XOutHsp7cUgtK36z5X2JKV9Jghtq1486UY7S2mfDUI7kL50ZZyjjM8FYRxIj7oyLlDGS0EYB9KvroxPUMbngzAOpHfTxRWloYVLVZP4IspfYoDainiMxl8Nqw8qoOWjwHIh3KS08S/ludz5At7NKd9A/po3QAC0xFkbKuKQw45gWy84GE3gvAKh77agY6TMvwnqeUver4gOYnjbLy5jhvtioBnui4FmuC8GmuG+GGiG+2KwGe6LwWa4Lwab4b4YbIb74grOcF9cwRnuiys4w31xBWe4DvLtc4b74iWa4W4hfyvXSaV1CiXVNv2zCfES8iY3SONzN/5a79856nJUpoClONE3FAt7ZdQXBYmvjN+aGCE/KM379dAvvTrNoo6uh95xpWL3aT30kSsVu/vqoadcqdg9VQ/91edGxcEp9dBrrmQc/E8PfedKxsHV9NCDrmQcvEoP/XjUjYyDA1mq3nTl4eArlqpPXXk4uIWl6llXHg4eYKn6d7i4XnBy9jz0co5R9H/etl1PG+du+9TYI+SHl0C7/XBFtJsLlYDazYVKQO3mQiWgdnOhElS7uZAJqt1cyATVbi5kgmo3FzIrqt1ceKyodnPhsaLazYXHimq3onohsHb74f+5djtI/n4ZM8oRC7VO8iP392gcWy69QLKVI/OXahwVnxN4h/t80gm8031C6QTe5T6jlMCvEeADHlNKJ3ivD2id4Hs9JpVO8JMes0oJfq+Azy5vWqnTyS1vSqnTKSxvOqnTObG8qWSHVbCLTCOl93o6yUvLGRMvBRsTLwUbEy8FGxMvBRsTLwUcEy8FHBMvBRwTLwUcEy+t0Jh4aYXGxEsrNCZeWqEx8VKpY8IV1eVDGAl1HXmHS8gB9sKuW6mXO15NsdgYY0svxr2XA87xOsS34Jukey+Xm+N1iq/FN0n3Xk42x9OD3WyS7r3c6hoGx8YhZmyWM7w8aY7JRqSEWfzcB47JxqaE6TVYTZhslEqYXsOWYW5jgOL4bz/HKEgIJQ9wzlYcIu6b7TL1AWcrjiL3zXaZ6oOzFQea+2a7TG2TMI9sXdewcyicy7ycbRd6jVi2nrxTcTPZKGfXeZR76RnC8QxNs8WU46VrdFxd22wx5XjpGx1X1zhbTDleOkfH1bXOFlOOl96pFZCG5mk1Z3npHh3b0D6t5iwv/aNjGxqo1ZzlpYN0bEMLtZqzvPTQVQKUayLPt1P3moFL1kI6U66H/DFdpg7SmXIt5I/pMjWQzpTrIH9Ml6l/1lnHvEkD7XQt9dJBrjSpFtpP/sE9IpiscXgsMMahIq6j7NYFstNCqoxuPlOVYyCDygmGPC8jdwREPiUjdwZEPi0jdzkj73ZGplpHwh4IiL1gwo4ExF40YfcGxD5jwp50xr7NDfusCTtrxfZ13qcL6XMm0rmVJL1kIl1YSdLnTaRPlEB6n9cQNVRAsQHamkg5EBILgGVqCMnZF+I2IdkrHJb4HFi0AYt/NK1Xslq2xIG69fUT5/2M4mpmVGfB+tjx3Rbz9kZx9eOT6LwzURe15JPoKWeiLurKJ9HTzkRd1NiYH6KWrZHi6s0n1QUXqi5qzyfVRReqLurQJ9UzLlRd1OTd/qiedaFaivr0yfKcC8tS1KpPlksuLEtRtz5ZnndhWYoavsO/anPakimunu81MTArZmATtrFx3ZkBdsHUdhv5J/tLTPF4NZCX1DTOS7cmNjnBylFpd6O3ujrxavLP2JyFsLtPqZJ/YSDtV5HFcGJTfHW8jr4eWaXujIt4CP8a5p3Gay3e5B3W6UuOZgCKYAqKU5wPRLHDB8VTgSh2+qB4OhDFLivFm60UuZ73T3LAB8mFYCQjPkguBiPZ64PkmWAkJ60kZ+wkzwYjmTVI+tBJDvzOBeOXWy6/pWD8Csvldz4YvxOB+H1bQYY1XGVyTNNpP8JRluba9ISeXeTH4cQOfHm8/2bzy+OvpJmrzZm6Dt7RPoxtOOCM6dSws2FPgg+x04tthwQ9UHLTVPLvvLuvx6peW0qtdjhX6lXONkK2nyVbiNZEgfyHfwvUjfR3O7/974fpQwrXAcd0ro52qTQ+hrHy4jO/fD4dfvicWj6fTj98Ti+fT5eNz3ErH4u9K5HRgB9GCyvAKOKH0eIKMOr1w+jMCjCatDE6q9g5nV0BTlmTlixqDpyqcW4FqpFbfjWWVqAaheVX4/wKVONEsGrknLW6k81YIZ3eCnOZnwSeyzBKLmxsXv1PvGyGQRHsQMkUHeYyTOOXTNFhLsN0e8kUHeYyTIv7o3izlaLzXIbp65JJOs1lmGYumaTTXIbp4JJJOs1lmLb1R3LGTtJpLsPUajGSvnx9Gz+nuQzTn5eGn9NchinKS8PPaS7DNOIK8HuVs84yXoJahsZC3/qnK+Nb+2Eq+Yg/9dKTRfgUVZ5efPz61n5Uqhcfv761H0Xrxcevb+1H/UoO4k899W8xRsWUshcj3761H1Xtxci3b+1HgXsx8u1b+1Hrsm9t4+Tbt/aj7X17k7Zq+Pat/RiB0qvh27f2YxtKr4Zv39qPyfDrWztqdSebsUI6vTXxLwr5T6RpORub73s0qWH8MKVW/zCFo3uckf3Lvxb3sRVv8iVco9tJfiYfbGh+C/Hnpgg/yRp953MTx+JvHP7cFLnJGW5ehutwhzslw3W6w52W4boscJsFHH9B8OemSEzOgAsmwIg74KIJsNcd8IwJcNIC2GsAnjUBZnVAX2/G/kw6bVOikiuRypKJSqFEKudNVE4EobLLLJHyW3AO8ohCHVbfo7B3eB0xywFz0VmSGxIjMo7X0QzA2+1TOHM92hL7yX+7jaktSKfoKTQ1+jStk5Pix/95IuujzwF5vihyhzvyqaLIne7Ip4sid1mQdwtkfsyfN/aAO/ZCceyIO/Zicexed+wzxbEnLdi3Gdhni2NndWxf76/9t6QlipHOlUh6qTjpQomkzxcnfSII6X3mISof2xdkgOK58dvo67cjLRoqEFQC71Rc1Ug5eWUC7vvPa7wm1Ylu8vLyAzu8XEpgh5dLCezwcimBHV4uJbDDyyUFdni5pMAOL5cU2OHlkgI7vLyigR1eXtHADi+vaGCHl1cwsMON5mESPD5DHyMwYjL0lq/Wxfhsr0JiKs8eMchUJ24i/1MymfvoB+77yH8qfin0Qy9Uq+9QdCf/f+npcveDm3EZOMP3RYpFnECRa+Jw1uBAUoklPJBUYgkQJJVYQgRdmVgjSqxBgqQia5ggqcgaKEgqsoYKQp3Ci/wHC9pgIPkPFyQh+Q8YJCH5DxmEESEsz9Mm5OysroVIEfHZ4iaA7ISFG8liMQqGANojUlUnDiOBcP8ZFk55pCUGFM5E2gCxrYEfklGBbwz2j6CwPqwAuRg5xzpEba8kS5FElJ5O+IhiWMJkYl6u14g4rQJI6adVeJCBEbpevaDENfUNEdqxb4zEq9Q3RaDmWvJ9yq63RCwj6a0RrNz7FZ39pHurmvSqVMIAM9rlVSHNwu/tEZ3TQfJAJFHPO9x4s7LREnnMPBd/xC2i8nEnaiNWavAbgk4tRhMyL5gzR3RGXQ6M8ORGcdoHXwx4xLQYIFX0Nu+KCkl0oyJVjWcWqVqHqWrzMlFrtGjfVXOmIletw0/VOk1VOyUTtQal9l01Zypy1Tr9VK3LVLXTMlFr7GvfVXOmIlety1K1G52qNiBVjS/sPGJa2JHqdru/urmSkSs34KdyEVPlFkxUraG8fVfOhYxcuYifyvWaKrdoomoNGe67ci5k5Mr1+qncpKlyZ0xUJ0utnAsZuXKTlsq9yqlyWVPlzpqoZvXK+Tov2WfNXXjINc/qNfe1U+zQrJypWedMLHOXpFkuPORm5ZbdrIKpWUsmloVL0iwXHnKzCstu1glTs86bWJ64JM1y4SE360SQZg34c3nkxV4Xh6c1kQ7i8HhTdHd3WhMT5B0R+y7OZewotQZ9+8ZozMbkFqfPHpfCXt7baUcutO7AK+zMayQgLy+v7oipAthAxZEpeHrIVPr00sTM5u3dbaHLvndy7b4Rn9S9vEDfTengzOadmVm9wxKbUoy6l9fouymdnNkpZ2ZWb7LEphSj7uVl+m5KF2d22pmZ1fsssSnFqHt5pbf4bcoAZSZ/UmvmZvVWc6W0xQd5Ly/Wd2MinNuCCzerd1tiY4qS9/J6fTeml3NbdOFm9YZLbExR8l5esu/GTHJuZ1y4Wb3nEhtTlLyXV13w25gs53bWhVsgb/utSmlNLcq8ZDfcdz/keFXOuVQlkHteaj8UZV6y3+67Hwq8KksuVQnkz5faD0WZl+zo++6HE7wq512qEmgCUGo/FGVe8szgaClutu0TfC8nuzUxX7qT7ZeT10ziFvLOiAX+gOtK72o14tQQh5e3rkwcLkbYqL1/sq2JUfKuCHtPMK7So695KKI2/gYjfWuQnkNQjfsL+itmbKPM/rDb8WABF6LhZRCNQc8Kog1AdAnfUAeilHDCQngpAOHqRCvZixsudFN/NdvUt2yv0YDa+BBWM1A5UrY5Ww+Bbc7WY1ubs/Wg1ZjdwLPlaNTmfCPMtDnfiB9tzjcCQ2P+dXq+EfHZz6A18IwQz8HwjJjOwfCMIM5+8DY7PEZjTOgPsdUTsFEG3EneHaGQgU5t3MSxip3QKMF5nsYowXmevCjBeZ6yuFnAFTtQUQL0PjtRAvQ+JlEC9D4RsdcAXMYRhxKVZZxZKFFZxiGEEpVlnCrYbpZIX6cGuuC4HJ3McHaSB0uS/Ad9Sv6DPiX/QZ+S/6BPyX/Qr+Q/6FfyH/Qr+Q/6lfwHV0TyH1wRyX9wRST/wRWR/AdLkHxHHE/J30EeiuhnIq1zkP9K0q2X7+5foqZ4o44ElNZR8dfBIMcBrIOCzUtgHU5gnRTslATW6QTWRcFOS2BdOtgmA2wAwKjoG3ADTnARCrcgw0Wc4Hop3KIM1+sEN0nhzshwkzrcdqcONx6vvbtbE1eSSvS87A9HfvluNQPCh+GcPe+cfco5+7Sc3cCzsTOd8xdc8hdd8s+Y8jeQ90SKt7CBQ1mbKOXPu+Sfcsk3tbJR5FubKRUsuBUsuhWYW9pibql40mEDJpZIyjCur+3LL+7dQB5m7FScHjQptN8WQ9VaJc77mpREBCaCjgqHTl/6OLre/bRSQCYcgEwMZkEP2+sdN9cbiCYCEK0GQ1Klj4dyS6+VG29YNSS6AbDe/hEDR/LoRuN15WFHEq3JK7zeR7O/DfXeiE7xfoU8gpO4C1wngw+ukAtoGh5VLHtcZ0MUrl2Dmfv7ASf5AYWmPyClf42nY5D+darqafZv8OwmSD8cTtRyRQ9zQciFHk+i5L1WrwnOA0Qd2KbUCvNmR/744D1/CXh3+OR96hLw7vTJ+/Ql4N1l4f06R958X2WlmQ/4ZL5wKZhHfDJfvBTMe30yP3MpmE9amC95qRt5te/SKpvWxN3kg4hR4eBPXir9Ns5ZUpV2qRSZxGT+kmksicmpS6aaJCanL5kOmhBMqNq5VMpG4rKwclysWkXisrhyXKzqQ+JyZuW4WPVE1jw8Dc1wqfTBWnKne1CqHW6FXmsvVYhkBIrZaNx6rcQwLD1EzEbj1mtdhmHpwWE2GrdeqzQMSw8Ls9G49VqzqaZgRkCYTdK91xIOwzNCwWyS7r1WdBieEQRmk3TvtcDD8IzwL5uke6/1nmsonP8QVHsk+JKXhxhT/wGo9kjwJa8mMab+w0/tkeBLXnxiTP0Hn9ojwZe8VrXGNIBNgV+2Oxd5rUg5U2t0p+a5vtVK9tk2P1w3u/bpq7mmzS6RbdnsEtmWzS6Rbdns2mesxJo2u/YZw9S02SXyrZtdIt+62SXyg252Cbygm10CL+hml8ALutllf4wum13ugKbNrvXkQpEgZu7lXoaJcDw5iNkF30HMLtiCmF3wHcTsgi2I2QXfQcwu2IKYXfAdxOyCPYjZBf9BzC7Yg5hd8B/E7II9iNkF/0HMLtiDmF3wH8TsQpAgZhdWKIjZhSBBzC6sUBCzC0GCmF1YoSBmF4IEMbuwQkHMLngGMXMr9TJArjQbPWl6GrU95M8VX6HP6tElrzFccgQXAnythYh0LqGBZpzeXRRtXkbr8I12Skbr9I12WkbrsqJd54xGtZGEN+Abb8GEF/GNt2jC6/WNd8aEN2nFG3XDO2vCyxp4PqTfleg5E9HcyhBdMhEtrAzR8yaiJwIR7fYaVMZQdx9SrYlXOpAoGqasGQmudTh+yUS8LXEr+VDE16BvRYIbvI55sZyXO2ChLGmCIrTskWhcac0XpWWLQeNK61RRWrboM660ThelZYs7c8CZFtUuxYjZIs64ElsoTswWa8aV2GJxYrYoM67EzhQnZosvM+lG7GxxYsEiy7hyOlecU7CYMq6clopzChZNxpXT+eKcgsWROeKlZQwtGFDH4Dn0H3agG2N0Q0nVpMGuQuqbvKhH42XgNEny9api9I26B6bemjhBPoL7KnoENYNugACRJbSqEIyv7YXuUri2JmbJR01cA4fCDGyBjuocfUfGDGyZfPKYD8DDZrF88jgVgIfNkvnkcToAD5uFG/fDwxJVM7Dl88lkIQgTm0X0yWQxCBObpfTJ5EwQJjYLep/ij8vZIFyCmVa/VTgXpArBbK7fKiwFqUIwY+y3CueDVCGYlZ7xr6GdbEJg650iH4vApIflipnLSk5vqhOvIx93+HiLHyydYB8y1ekNM87Nco8luhT2zXw/ecy/d9Ig73PqxlNMzfcVI2U8EC9C2Od2QqJbYqy3kZy9+S1I9jKHRltYYMzrTyzfrfHujjuCsXCSVu9uutfEwN5BgePP+u++V5JPLs9P8lqeO6QT9+0SeS3b+SQ370zOtpznk9wpZ3K2ZT6f5E47k7Mt/w36IWdxX7yWBX3SW3ChZ1su9Elv0YWebRnRJ70zLvRsy4t3+aN31oVesGVHn8zOuTALthzpk9mSC7Ngy5Q+mZ13YRZs+fI2/8rIScl6LWvmTaSXGd7b73JnivxmxDno6wq6HJ/y4XKIb6f19q2My9FKPi1ORK2hOz8x/lTeoli3ogVoskuUJLuSUYfjSyXQAR10wAWUCFB9s1nP0beQicGZbwzXGgzEdq+eZezh6lnGxqyeZey2XiWy/Gyh6sB+tj51YD9bljqwn63GzR6PzbRbuNnoOuMTJftzkAAH2oxvlJwAB8jjpjN0W2rF2j8XLbPkwJB+zNW72M1pJcuAyiorFbYH+JirM6Fjdzhjz8vYNt9Bx+50xj4lY9tcBR27yxn7tIxt8wxuENgDTth8f/AxV0dAR484oy+Y0G12X0fvdUZfNKHbzLyOPumMfsaEbrPqtwv0rDP6WRN6MCOu08450z5noh3MZuu0C860l0y0g5lonfYJZ9rnTbSDWeR+H+NV3ld0G61ogIESke0J1HityWrVMmMo03YyjI8VsU36R2VtiSR5wv0IdkL+JJQQp1evTr5JYR+3PSEfxi7DJMusMOyFJhNMhxWGvbhkgum0wrAXlEwwXRzmSgHD30MyAQ1YgfjrRiagiBWIv1VkAuq1AvGXh0xAkxzoBgHE3wQyAWUByNv86Oj8nR4Tes4/On87x4Re8I/O37MxoZ8oin6NVaIM6XeQp9bEqxDeU+wdZHwdUmqMx4GS9VPANymyfLeSJ/07YE/6d8Ce9O+APWlzwJ60OWBPSmLO/KgnZaE2ZckO2JN2B+xJuwP2ZBAH7MkgDtiTQRywJ4M4YO6PzeKA6V1XzAHTe7SYA/bUCjpgTy3LAXtqWQ7YU8tywJ5algP21PIcsKeW54A9tTwH7KnlOWBPXUIH7KlL6IA9dQkdsKcuoQNWfLz6c8BmkNL/iQPGFj+S5OnAvtfTPnyvp334Xk/78L2e9uF7Pe3H93raj+/1tB/f62k/vtfTy/O9nl6e7/X08nyvp5fne1kkqojvNYbwK+p7oVxfRT5jHH7SaKsJ/zyjfynEjqbxBK4mFQn5pBCGtN0bqRKQpONVQuzYHE+UKkARPsbbFI4ziDjmNiaKdI4eHy/kEHboSHB61eSI3v6b8cQPJ7pjwelWAl3W+puhixypHg5OtQqoxjhV6EVHsibpsB6Ns84kHdvN0mEHdpKO7WbpsCPZpWO7WTrsKA7SsT1xNbmIH8jKQVLZ2FqvN0I/dmQLcHCFlisULQFnt4yzwx3H0goJqU9GKhKSi+KZnqp+EMohP2RsEu1K7oAfchZBdiV20A8xq/y6UkuSz/pRcVL0PhOGu9jrGNsT68jnXM5LQjO307XU67u1ao4lvlrbJN17fbMm4c1b8Dy/V5PwTlnwPL9Vk/BOW/A8v1OrEXBi1rxZzvD6Rk3CXLBien+fJmEuWjG9v02TMM9YMb2/S9tmAPr7wrpXRij5yzSJrb9vrHtlhJK/TZPY+vvKuldGKPnrNImtv++se2WEkr9PS5hHtmm5o92lzOs7si0yjqvtRsftoC/I9suRl1so8TJ9ejNIPm/aq65h++J6ndlZya4x0W0LM5OMnmUjt1Gl52zbaskOTPYV9dzCqQ2mPl9w1+6N/avwHLSd5Ive3pGlDLGqgfKXPKwAwtSAE//liOzVcKhKkdOkyCfmbUy0Ibx+xpzj8W4cNmaGbbTBNsqwuxHW2/8zTxxMp9WZOK2zcVpnwNaA3/BPIZgwS1GVTBGW3qwEM3I3mshhgEdTsMc3K8WsnYVAh0SgQxDwNHsWAp0SgU5BwNP+WQh0SQS6BAFPQ3iTmcCARGCAEShmEC0UIhKFiKDgbRgtFHolCr2CgreBtFCYlChMCgrehvKAT9HypUm3kq8YMh11EEp98qJdVK9K/H/cvQl8G8d5KM7FuVyC5BC8IIiiIEiiRFIHBF3UYdqiSJuCZVEmqcO5bIoERcogoQCgZCWVFEmW5FyOY9dxmrSpc9RpmzRtXvv61LsvfXXaJL3v9HbatH1NE7dOm742bf7zzbWzu7OLBUX3/f//ny3OYua75puZb65vZnZXA3dMXwjazmpo8tg/SCYj/clVgISrtXyvBaNnS2qAb5a0Vk4SZHGObWQvy/diWMnyJCB72Ur2MrsMlpPdZyd7Rb5Xw0qWJwHZK1ayV9jlsZzsATvZq/K9HFayPAnIXrWSvcoum+VkBwXZ1QAAzcVysQfD7rImRjE+uVmUpq6zpprUc3bq1zTL9SBW6jyRUr9mo85TTeohO/XrmuWSESt1nkipX7dR56km9WE79RusHbKrSqzUeSKlfsNGnaea1OcE9QEK8iRbNRcXnhhVh1D7rJiUNQyUa0Y15SpCTxrwWn1j8t5kK/HiohXfTDkmlfdmLfJyVFPekl95b7HVfXHBi2+mHJPKe6sWeTmqKW/Fr7y32Y6BuFjGN1OOSeW9XYu8HNWU90JVeftlQ24fRgYd66CewG7roJ5I6nVQTxTlOqhnRpwLup7Ay8iI24KuJ4oyIycAp7YlzS70ZVjtbsXRzRbE92pMelj3qplsG/pqIGknyMhN1E4uCVK2x1ucMh5kRI/VTrQdLjpw3qVM6U3WTm81CNmhEvIZnnVLTau+OOwJ7LY47ImkXhz2RHFZHP6fNS0Ou0J7LA77wrEtDrviuC8OH5eR5Bu/qce0OKNVpalIV3CP+qWobiUSpWN+KXk1EIneA37ptULbsE/xJUJjfgl5NgqJ4Fb0OZ9zDx3GThkZ3L3vsSxQe2C4LGl/rsYl7QfQ2+6+JoE2RnwS8ih2IHO/TzJehQR0dqFfCqlvN3V/oms9Hs+4YWV1SApmPq6Bi5IVnS6H/5L1kQQXDn0SnE+a+8QDC94097FzZH5oHhCPM3jTPMAOk/mhOSgedvCmOchOlHnS3ERhqReDF9F+GdAnVer24INqiJ8u80OV+kn4oDrMz5j5oUodK3xQneMnzTypbqfA/i+C3SkjyNS9xtmMi/+bX3fKCDVy8X/V604ZoUYu/u923Skj+OWStVoeczHJteB7k3tccLzrQG/yAPplVy8nF367RW271wPZizGhAgS2MgKettLkt8MCXhsHL8up4FDVgDo5eNlRBYeq5tTJwcuqKjhUNa6CwzaO4mljTRZZK3xtPDwtroJHdcPr5OFpfxU8qpthJw9Pa6zgUd0oCx57OE4127zbam72W/F8GJzdwuoIntUstRtP3wZbwbOa3Xbj6dt8K3hWs+JuPH0bc5PnPruhrGbTefXpTd7jiuqjJvUmH0Evw7bs50Pk/DMO4PKH9j6IsV33dR2uqGqPt+IUoLYrzt9S+scg224BB9nPh8RlOAeBNB++9gL+hnhbPJ4Jq9DFLp4Nex+7llBg71Ni72NbFDbsA+wiQoF9QIl9gO1E2LAH2dWDAntQiT3INhx2Cg/0l6VRpoSeU6Ln2I6CDZ1ZNQldqXa2bReyozODJaEPK9GH2Z6ADZ3ZIgl9Tok+xxb9OfobKDozLxJ6UYleZGvzvi7UYbSZGZFol5S0S2wdvRbazFxItCtK2hW25l0LbWYWJNoXlLQvsPVpX7Q/rgFx+Qg+boBJZ1tOw2PjD/fZ3urOHgdhHoRLhkYftl4y9EZlU38ySGDbrbD1nPEHNZVHRkvylIeRMdcoajYxvcki+hVf1usQkD6ovkzJDz+cMVq/x4Eht2n3AtX9aqrVDZ2dJrV01Wh6mz87TWr/qtH0Nop2mtQqVqPpbSoFzQlKk9nKakS9DaidKLOg1Yh6m1U7UWZXqxH1NrZ2oszaViPqbYIF0fOUKLPB1Yh6G+YP+prFMo7MMlfj6G2ua+LI7HU1jt5GvCaOzIpX4+ht2v1xXPAwbqbVXCHTBjeK/mooCbdnrexY0GX8Smv/r8rT9RqGiH6I1jxy9EO05gGlH6I1jzM9iE5yorUPP/1QrX1U6odq7YNVP1RrH8N6UJ3iVFdwaGubQAoWKzjCdWOxggNdNxYrON61sVj0tFTLHFC6lj3Mkb9QyxyZEnbh6pgjf8ExR6amzsMM2rEtlo7aNA97Z8e2mDRqvDwMmx3bYruolfKwYNI08wvOOTI1Rx6myo5utUbU7njYJDu61exQA+NhfOzoVvtCLYmHlZHmyF9wzpGpyfAwJ37nml9wzpGprfCwIzXRtpoOaiQ8DEhNtK02g1oHD8vhj/Ypj+Yrdsxrb7ww+/ziXc8+/fCTZmBf9Df7rG5C7DSrzz6rGxY7zeqzz+rmxk6z+uyzuhGSpl9f9Dn7rG6a7ER9zD6rGyw7UR+zz+pmzE7Ux+yzunGTZp9f9Dn7rG7y/M7Mvuhz9lndENbE0cfss7p5rImjj9lndaPpd/bpbtxMq7lCpg1mn1+qbfbpz1B7Tr++pJh9+hl8+SFa85jMD9Gah2p+iNY8gvOce31JNfv0M7DzQ7X28Z4fqrUPA/1QrX106Dn7/JJq9nlXg0bHvO1LqtnnXY0d3Vis4BDSjcUKjiQds08vS7XMAaXH7PNnNPRr7OSsy7ZOOkHvQW4Rvo+M7mbHho95B/J/0dbPDjRDziSr33budrqZbsY9z4zCU2kjBs2Qs1UAekj/Pi1u6O8KEdl+PRRfp/9GKN6lNwwl9E9o8aj+WxgLy2Lov01BficUb9TfE8LCGZmPaANPhwS7ezE72D8fJzI+TGV08YKXrtEwz8r2o7x0qFv2yrb5sAO3Xldgi9s3gPa5glq9vQF2L4N1U7P10KGk7G0WJhzkpPIcpTv8Rlf4Heijmqo0XV0SwM39Y+r3Vr2QdqCP187nE7Xz6UG/Kzty6wSRvT4SJ8ToBR8WuINKOHIlgAWuUwnXSQ/xzNZSydyAFZXMDVRVyWaXW8lma6xkKnj3StaGfo/OiyO40Qcz3aMBiE2i35ePS4hCozeU0DR+k4r0+7Lt9xXb76v07g/2m99UIkVcs0dct0fcYO61IsKfe62E4M9TVkLw5/QqIfjzX3XR8cY7ejbZhf6AToRpqXQKA45LJ4VT/9AjNY3+SHXTgeUOnTYBAxcD8JKUYveR2Mu22AMk9ootdpDEkrJtN2NzOJaXsBQdItHX7NHDJPq6PXqORPMyF9FFEl3tRlcJoUQQqt3qKiFUCEK1m10lhAsEodrtrilV2UhGpRdDfNl52sXW/r4sjq5Lvy+b7e/L4rC49PsqLyMEv8XJbCmGnaaWYtgJaCmGnVqGmAyNYeeF/dR4hsFO7NaAwc7M1oDBTq36wehCf6y6WSYIrak9eQn9ib9niXX0ajAJQPLeybWgx94Jew3NdeZy3sZaere4BmbyS5HV/GldOV6uieO+FeB4pSaOB1aA49WaOA765/hWNUfm3e2fZW4FWF6rjWVoBVher43l8AqwvFEbyzn/LO3mQH7nuRaWfh6mtE2eXVnfrI21nwcp/bK+VRtrPw9R+mV9uzbWfh6gtLG+6GX6za3ylTb8vcn3aehPa+10qvkyVRPog66nLaDa37JLpOyLlieD2UG5yyDan7sgl+9ekH0rIsiVuxfkwIoIcvXuBRmsQZDbLoLY+rllSpJbEUmurYAkoRWR5PoKSDK8IpLcWAFJ5mqQxGHd1H3oMiUpWiTxZ+jdJbq5AhKVVlSiWysgUWVFJbq9AhJdWIZE7/XsJVX98+vZR/YmK+jPuDifDzEFvf6OwG8CrpaVnBVwBhZtVaLOVoRWwCtYRZ2tLK2Ae7CKOluhWgE/YUH9zSZ1vtK1Ag7DKvJ8xWwFPIdV5PnK2wq4EKvI8xW8FfAlFuTzJnm+Evh6OBVLbPj64evhWCyx4auOr4dzscSGr1W+Hg7GpapWcOWdjN+loT+vwfSuwLEPD4NcAlmsBvmuD7tVaxAST26m7/owXA08ufG+68NyNfDkJv2uD9NV41k2eQpDf9eH7WpgKsz/XR/Gq4Gp6BTu+rBeDUxFV3HXh/mqMX27yVR0IK/fYT+bhZSYi27l9Tv3585cdDav3xFAd+aiC3r9TgPamD9VvZNY0ZOBHv3VPajguHzN5c0ZHPbgcFy+EO8ouiDQxa1tmQbp1rZ6dJO6cunZGLoVSkbJPvH3ak5qmeQW9BfKbWi7I8dngnDl/h4XaO+7kODOxr/02PhU8zroiVONYxd6xeWOObAAu1xTvR+ReUUcIqCeKuZv70dkXhEHBSS8fdUfkXlFHAaQ8A5Uf0TmFeHwL+ENVn9E5hXTqR8iNskR3o/IvGJ67kuYzO3U8xGZV0z3fAmTuZZ6PiLziumDL2Ey91HPR2Reqe12tmEZ4S4ekXmltuvahmWEu3hE5pXa7m8blhHu4hGZV2q70G1YRriLR2QsLdviXJF1SfN6+sCFHvEs60Zfcb2kDerZHo90LzuDGJ5paTZbYrxsjcAV1mazJcbL3ghcYXE2W2K8bI7AFVZnsyXGy+60cEjT8vRao7xsj8A2rU+vNcrL/ghs0wL1WqO8bJDANq1QrzXKyw71c1A/D1TfbwVethUSTP08dH2/FXjZNkgw9fNg9v1W4GVbIMHUz8Pb91uBl21/uuxt3mKBdrmmetkgV5qd9Ar5v/J0+Ms2ok8GxGzyIK14VVCigBLIvB2A1wtgsaLhpLjGCeRCg69QeNLgQC40+IqDJw0O5EKDryB40uBAMo0NZrJYEXAS6VZAuVARU3xPKgLKhYqYs3tSEVAuVMQk3JOKgJKpDJrpYlZtpeLdAgcU+Jy+N6bEWUypl8lZ4NfMWcynl8lZ4NfMWUyml8lZ4PvjvF1lPMzDO/aK04t7RE8Esw71Ytp/7eH+aqUdpL2tJ4JcP9cAKH/zyUmpU05W4F12Wi0Z77LDXjG8K05LJeNdcdgohnfVaZ1kvKsOu7QWEswnl5yYq6wAClz+oJIrrvkekwOXP5fkimu+tuTA5Y8hueKabymZuPtoEn+wyIrrXYV3WlH91XvGjz84tAx+5jNHNfDjDwYtg5/5TFEN/PiDP8vgZz4z5IffJvRVupbUTBotPzDztGadRvUnT3FA5zhlH/qXQHIXrBTC8Tp5Se5vQqrYvxV7pPQprq+KoyuwitSkv1MToH8XApAJCSR7QNcFP/sOCuVnj/1b654sGSNa+F6pzveKle8BJd8DNfK9Wp3vVSvfQSXfQT9805wouQFbzXhShrFyzik552rkfM0H52s2ziEl55Afzs0mVZhVWthct7EZVrIZrjGDN3xk8IaN85yS85wfzr0m1WpTVwm02oRTAq02TZRAq03uNrqaGunY1cbkUfS/JUOTbuEOt8z/x2qZsgk9hD4dTLawKVs0DiebMRif3eeqUjOXz71p9WLJ/n5FJatGzb9km9DX/FhxWJT+mu2coPh9xfabnRP8mv2c4NfMdmqLuG6P4GsxX/NfR7/mv45+zX8d/Zr/OuqmSKmO9ia3oX9w6wwR+o1AskGcQ30PMTtbrPBmwSqgNya3oq/LQ/VqZdomwK0nBr9um4PbYi0nBr9unybboq0nBr9un8jaoq0nBr9un1BWm9l83T4P9I3g98Tg1+2zLm+E/ioFYlld6kffkCdDrsCsPX7Ddm7wG7Zzg9+wnRv8huPc4Dcc5wa/4Tg3+A3bucE+GsPPDXrmnsHyE4N+YPlZQT+w/JRglRJ4tRalvmpT6qs2pb5qU+qrDqW+6lDqqw6lvupQ6qs1KPXVGpT6ag1KfdW3Uvegf1Q99V7FmsFVZv/kWEq4295wWNCEpUtMrc5ODVYEZCqZsCeVfW5ULlup7POkcsCNyhUrlQOeVAbdqFy1Uhl0UhkxqeTUVMhQ3UIm50km5Ebmmo1MyJPMsBuZ6zYyw55k5tzI3LCRmXOSOe6zHprL+9XGUePotdehZr+2IjX7tRWp2a+tSM1+bUVq9msrU7NfW5ma/drK1OzXVqZm+6uH/mv2VvTN2saU35Sqmzmm/KZUfcwx5Tel6mCOKb8pFa80pvymVFzSmPKbkvqlMeU3JXVKY0oR7XdMKRD8jikFgt8xpUDwO6b0LhDbjuU/e28VKvvpHoEltgNlOBzpgONbfha4fU44vq1ngTvghONbdxa4QQa3yYQTu3MWwJwTUGzAWQBDTkCxx2YBHHYCim00C+AcA8yqNG82O4Xe4Q3yfzFxuhSlFUOHRPrB0VshYLRRIOFy6SKFJcBwjAJsHwG7LIHtU4EdIGBXJLADKrBBAnZVAhsUYD0mWA6DkYIy4XIquBCBuybDhVRwwwTuugw3rIKbI3A3ZLg5AbdDpXCzkJzqhu2wb1HXOFYuWHdRunL3nLly968hun7xLeq4x0EHFaD/RwbNCdCcAvTfZFBTgJAC9N9l0GEBOqwA/baa6pwC9D8I6CEKWhKgRQAlJssC/Z8hVxvmIFFSk/hOVRIVQaKiJvGOsH8pLqhJXHMn0cTVJmaM37L4bjbzcjWXwb5ldbVs5mVkLoMJCN5pfYv7Efq9Lksg+L0u61u1+RhKHPx5B27imTLtjarN9HLAwT7TlKhajADM9Zm2RNVeeu2sQwrAf5cBh/tMa6JqKw6KcwrA/yCA93I18SHHwZrayU47gZKagGsrEQQqfXxIoiTg2kYcElxQE3BtITvxCOR6GJSl9KHEA0/ZZyokxrE9DIv5S3I45i+phLssw+1zh7siwx1wh7sqww3a4DZxOObeKABz7oDXLIAhd8DrFsBhd8AbFsA5G+AwBSxxh0MBWGSVyZdHnETlpoVKaZlUblmoVJZJ5baFyoVaqGStNdLs7l3rI4yjbwDOoJ9aPCjVJoqlrsVKOEUtVsIparESTlGLB6WqxODUtVgJqKrFSkBVLVYCqmrxoFSLBaCqFg/6rTmCiqoW105FVYtrp6KqxT6pZK010qMWD4pa3I+eDHvOBqPoneD6EaKOTBxY8glVJpvunspk05NTmWw6aZrJ3Way5H6pTJccK5XpksukMl1yhjTTB8x0yZmRpldzzBOYkjNijZiSM2GNmJIzoB/MXlWFMKuSqRKoOzdrqTs3vevOTe+6c9O77tz0rjs3q9Sdm1Xqzs0qdedmlbpzc9l15+ay687NZdedm8uuO4oKIX5b6s5+dMu77nicptkicEVV8jg/I0HzmuVxYkaC5hXN44yMBM3rncepmK0mtKiGHsdgJHBRKz3OvUjgopJ6HHSRwEWd9TjZkjPBRRVe7oEViZao1Ms9hyLREtV8ucdLJFqi4i/31MiAqn6bTcHjbMh+dPsuWsbtmlrG7Zpaxu2aWsbtmlrG7dpaxu3aWsbt2lrG7dpaxu0VbBm3V7Bl3F7BlnF7BVuGon7LY1XXltGBnoLx7XeJxbkw32Bi8bzmByn0O8PEc0NalaVrZyze79pZG0fgTYWRf1eYOIJw8ge4MCyeN5UgbdTvDieDo38elPbf/jwovzFguwaUPE3y50HalDgubAGaWDij3ezCTj/Q+wj0ZZ/QBwj0FZ/QgwT6qhV6qxt0DkOzSyT9gIcI+DW/4MME/Lpf8DkCfsMGPlC9vMwqK2FCvXhPmDgESSv8tF6weG4UCXQnem+YugtJq/x0t5IncLNI4NPoabPxjLm9BfC02QmMmW8BPG0a+zFzF/Zp06iPmbuwT5vGe8zchX3aNNJj0i7s06YxHpN2YZ82je6YtAv7tGlcx8SCdkqVL8u2ZSd6X5i6UUmbHICaEQl+17bbBQYXm+n2Gc+Ol2rmGVsHa4u17HA/Y+swbbGWHe5n7B2gLdq6w/2MvUOzRcs73ClVviy6PQAQ7fGWeDOJ5ZeWvFdj4PxOE/sTQMk7eh8umPeHqTebtKVEC4Yn+N1DaBcYPHNBKt6z4aT1PpWkRa7OeCtm7BA+CpernABk8mKUhJFepQfglai4eCVK3LXiSsx8LwrI7qsmk1KdBwF1olaJ1KSs8oxUk8dRdrBBYXuiqin5aK2yOciaYikZ7K8mZ4cqs/DmTlNyslbhXGhZNZdGz5nNY6Nbs3/ObPYbzWb/nNnsN5rN/jmz2W80m/1zZrPfaDb758xmv1Fq9s+ZzX6j1OyfM5v9RqnZP2c2+41Ss1fki/8O0qdJPCCIYRhB320vrc3LqFVp9LzJqM9Nxc+bKu4zVfy8qeI+U8XPmyruM1X8vKniPlPFz5sq7pNU/Lyp4j5Jxc+bKu6TVPy8qeI+ScWKfNks6wfCSXsV9LgnarX8mFoavWCSV/h+0Ey/YKqty1TbC6bauky1vWCqrctU2wum2rpMtb1gqq1LUtsLptq6JLW9YKqtS1LbC6bauiS1KfJl6+w/GKb+0JLvAe1TeILfbeZ2gcEFIXV/L/qeWu3lO3Q4ULEbfcgb0ZbG0NrQh81yitJy6pdj95HYy7bYAyT2ii12kMRehdh2MxaPHFk5WaJDJPqaPXqYRF+3R8+R6BskersZXSTR1V3jBEKJIFR3jRMIFYJQ3TVOIFwgCNVc4zYLBMVxculhto3JHeh7w9Tj3unE4ioNR4Hzpr6cJDgCV6vnOdydWKjvC1PXfqdbjItQGYFCjkj6kopj8LKrKtVHwvQQgdPTxlUqjgKVzp9UHINXkKpSfX+YHldwOu+4SsVRyGlLX1JxDF4Lq0i1E73oacRdHPhetFl1Fwe+F21m3sWB70Wb3Xdx4HvR1hG4OPC9aO8ZXBz4XrR3FS4OfC/a+w4XB74X7Z2JiwOfQuHmZF3lwPcg+mg42RU34mKWFG+ImxfR8y5b3EWfiLfh4kMUmIPRCcfW5JEaiXXE4wpSB+GtspPoY9DXSKQUC2YRRFwXsvV4HPxrAfH5bfgMqy5ihJvtMd3qF+17Us4m0YeCeNIo55MRzKi5PoQ+DmMhOTfPMF30mY9rCq5RzjPKOUbRf9BM1d3Ru7FyPlFTR5xNo3/WkmvUr/xSmMwdfU1y3kl3swfdzX7oOpzBfiAMrDajl6zlezxzUD3MS1ogsQnAkHywZ0vbx9IuK9IOsLQrirRBlkaGf6utaTmSxgeBtsQQS7ymShxmiddViXMskQ4Ld1sTiyyx2qDDhlZiaNWGHja0CkOrNgCxoV1gaNWGIT3uJW0Z+CrgIja4yB29A1usT4aTasvh8bpUM7Z9DfEo/k2Ao8xiXgViOqurVvQ0PKo97kkkux8MwW6XKztUz3DQ6wcwr51sC+XIsnLTiAURRoxb/8s15cVKYgVyco8lJ+ZLWCQn0htbLiXxVqv0FIGZHRWaJLH90nm/Em8BlmKFSewRgsCEZQSzxCET8DGnesdlsOw+EGiXi0CKWIc8B3xqUFn6xSr6cy3v5WrPVt771NJeXl55O9FkiZ3X1SynvPkDAay8L7OCvOxd3gJMLu8a7s9xL29XDS6jvO1IK6A9W3kfUEt7ZXnl7USTJXZeE7Sc8uaPM7DyvsIK8op3eQswubxruLfIvbxdNbiM8rYjrYD2bOU9qJb26vLK24kmS+y8nmk55c39e1l5X2UFedW7vAWYXN413BflXt6uGlxGeduRVkB7g1ZpcyppyYzXpcBLHgIr8WSZnddi+ZJ5m7XE+askpMSZq+MhspXMZDyjKnMLoFzqNdzVJcl00K8elcV+vpoW3ct9mTq0lXtILe+1ZZa7Ak+W2Xkp2XLKnZ8eYeV+jRfntSrlLgHK5V7DTWnu5e6ux2WUuwNrBXRoK/dhtbzXl1nuCjxZZuctccspd/42Dyv367w4r1cpdwlQLvcarq5zL3d3PS6j3B1YK6BDW7nPqeW9scxyV+DJMjvv6FtOuc+xJRRW7jd4cd6oUu4SoFzuNVwc6F7u7npcRrk7sFZAhyet8hbV8j6pKPfbIa/1nfdpnllREJQzU6w1Mz42Ku631hb+rhWrLU/ySgAukJ45UywOjVsJyLXImRNFbG0ZmfRbZLYq5p2t91YtMPe693oUl61iltS5vLnSFVNBUM5p6fWvmPzMKKuYN3m9urnMiikRkCumMyeK2LuqmO5FtpIV00Hu9S4uW8WsqHN5a6UrpoKgnNPK618x+Xt4rGLe4vXq1jIrpkRArpjOnChi76piuhfZSlZMB7nXu7hsFfOCOpe3V7piKgjKOb3w+ldM/lYiq5i3eb26vcyKKRGQK6YzJ4rYu6qY7kW2khXTQe71Li7/u1nmVrtymtHrYzfLncRd72b1Jh9YRk4UA/3e5NtryMcK78nBlSs/KHu3tzNOZia8363sTV4EAtXdJTwlVT9dwEg6H8MmjNPN6MUAfSTu9PWmO3o63YY+SnwiTl+f/JAe0oOo7Y5upLvQxwJw92qcvBCaiQ4ETt8IQXW8BKkJ9JKJo2Ocr3/nO99phpRu9qqD0+Vg4H48WUojlg5bZ46Yy46YK46YqzSmhcfA2p0j6poz6roz6gaL2mpGPakNvBw47WkbZPCbtYHfqg38tg/wNg4eIc+3BiFH9bgUfjKgvg2H65Omy6UgYi47Yq44YkQpsBi5FETUNWfUdWeUWQoiyl8pCHB/pSDA/ZWCAPdTCl1WfQtnJFIa1wMhI6Cv+qCupb+k6ZsSgb4IhgqmtCyFw6U2FNBDuRYUJS5JEVSfDAzUjX4gkOtABomKoQZq6gbqMsHRjpyOYsRpqSPXjBpFSmT0pUBuLWqW2y0YiJhuCPeh5lwaA8jOqxpqx/Q7zLjRNky/E9NvGO0Yr6eeU6dfCjl88OvSF/WeRGMfyXNWuJIM1WH0FEZqHt2Av9LkK5SrR+uJyDhX9WgDzyBCGyGdvjmMo0IYYxOBC4w3oDVgqAbqsKHCcnTj6CZis7T0NU0PJFqwHjWLHlE2kIkPdcdjqJ8pRcugeARtgSzgcCuEWM/bMS9wCsuQ6wc+EMDUt1FzBoy20M/QeLNMBiIaqDIGTp7+QCid1Z8NJVqzQvk438o8YoqEz+knm9JjgNOWjWVaxzkeEhTah/Q4kwlrYRcrYB3tJlLC1x5CEr720rj0z2n6O4KJDpxvHdehQC6F9jF97id+bhF0gIVE8tG6XAIdZBAZR8o9LikpNMhStrCUrQ6Ie0lFNdB9SWaJ8Pch/o0h2tAQwZEgRuvS/woNAqUGHE0iIL4694cGdmR7SRNpRcOEjY5JkwoOqqblWSfKEzcCHY0wpSF0PxO1ninP2mJIHXzABtKERgVIO/7dIf8WfDpy3eiIiO+0a8e78QTSeSi5VaLk0uhBkrUmdBS3X6wfoqPVUlahhMYIBxsMSTkODdaZkn41gDWcwBom7oakyYxjPdscGfdrA0TBSXSaSIHQI8kYp4O5Aw+E3sDs0xuZnhB6E4uB1qvhGGUBteICgoasCdQPyEXUjd6cRFSLtLEBPwEakIydMEu5OP3CfN7C+ARyXSwujmVvkulh6fXxFjSBNUNiMXwXNPUWdIJFAcvg6acg6qQo0S7Szi2NHqefEiYhSKIcJRtM/4SG7eIaovCgokJ3E00jNGWx9j24lp1xMfbTxIaCvmcsOFAz80qcDjSrjO9EZ3G8Ptpp7RXO3tFD6QfAOKWEOVrnZtCwQDNUIMm04c9z3MqV9euhRBpbuZSwcmsF2fWSlaM6aJby49PuYcyCFTP9MnQJG/qgPzOVvlbRIax1dAgJIQY3fPWsOju7Csx5wRLVkVsFspgxAt1Xv7LW0a98Nohrz1pb7VkjvjbuD3JraK9CHS45gcrVzSoXT3GvZIphiLJV+7Wx66rb2PU2G7te0q5bDaflYFr9Hpz586peCg9n3FoDLbk6h7pwDyKb9o1K015k1f2OHk7/oKajxKY+mHY+3AdzqHGbge0d6tDxpFdYpgD5iy30EIxPwNIF4tSKBqtr+wKAYVkuQiibRSzVEsTR+kaoUgtGCNPq9RdgnHpYb0DWM2yiJmy/N+/XSqS6mVUkiS5ZDbroAaCivY2UQht6e5KddxN2OEks94ytM+iw2eY+p23uplGmbe5zmuNuEnVHj6SHcQ77XRtQn/tIQij5jh5Nj0D/vFUaWV2xjXC6pBFOFxnhXFWMcN6Au98tngOcLt75esvk6Gj09I+BzdtmG4AHh1bFm7BeDK78TDQeRdc0IL0ScwzSmpuTIIrGZxnjnIG1t7SJATPTf4/o0cR2W+GsHWrArSOKbgCNENZFxxDCERaJarB2HVWtnVtX24xua3K/giOeskZ42skUeieFjqJ3aQrGAVz7380h3kMgRmH8+l6NyZ9hUXH0NAd7Hwdbi54hKpZus6ENi9xmc13PRdFzGpGxHn23RmdOjrExGS4/b2fnNOAJ9AFCS+Rk9AY91YhHEO+yovOEB9H3UJnvQx/SkgdUHjQ3tfjq+Cpzcmo92dJAMtOc2TlaJ1W+CIwrBuoUPUg9+j4zmx+x52k1UzDOwffzD6ZLgH/RqQO/Yyt7z9OBNf9RrvmPcZGi6OM87hM8rtZ+CI8g4uhJTZ7PgyE00E2NDyvaxMmmWyTuvvHTH2hSrVPshtW5PwrqHYk99tZnji3IcAmaXyNufnAui7VIR2sciut12Mp0yKL9l7RQeTBsayOqyu6s2S3oB51Fb69aLeiHqtcPZz1wH4G4lzAxpvKCjbT6givRD5M84o6uw14LZEt7R29I9+Jeb2+Wn+WiyxEbSCO6BaP3TxPjMdpzR48R0IEsP9plgu6joD+qkW8Buj/LT3qZoAco6H/TyDcBPafPJoKOfu6gw1C+5Nbn9Ihm3+NY15Lm0nf0RiLWPVl+yMwUa5CK9ZMa+SZiTeq/GEjcy2Dvy7ST3lya2JhTDkriPhppmX3gSGn2Af3YLwaA7CFBthM3ncOs+QSsWaYUHVnGSEG3GTOpyZn75JrsMtxmkjm6akzdubhBgMXAG5QhD7zht1SZ69HPgxZhZi0GwySjjsGwNABNop8FpGGyMdCoh9CHv/Pta3//7u995tc0W4WtTz8T0D8XSIxkEa/XjEMSVEnUGGcrDjoeKVLd2NYcSIaUGmynaw5YhyayRYumzqSMmhlJoV/U2DaVVbrVfF2gFQ9HzSbJIh35/8SPf+zHfupPPvxPf6W5LCRANWAqaUr/rAa16n5Rq7qEKu62Rqky7qgsSk2skrMUw1n623f/wj985uYfvvwWW4k2p4f0lwOJUSzzA0TmbiZIPfpfGpUEf/6yJoqyFb1MrayOy5JF4sH7Y4kHYNS9P/BLWhUSPSoSuNEjYh+OMDXmJPuQo/bhVzXyTezDUf1s4kE6hiarYw9j44XZY41/UWPzej6JbkZf0iSr1OMYkrekP63B4sdD2TZccayLUL2ZfixGF+sj45ioLd3Su61h5a2C+wCMbhqTKhZkst3FuiolD+tiw/MwIDjqMRvsccwGA7+uDXXqKN6KfkOzkT9Gxg4d0lieDCJ+i2jbOsZfhX+0o9/WnHNESxdffcVxNfo9TamKPtyTKlce3Wev6tlpN/odMAUODnyq2g2mQikBbeoG+l3I8wOw0tOhUJp9BeiOHk//i4bLZcw2UOu3zGEVcyR/qqeF9wfWOYSeOaoYv3nOdtQTRLbcYxss4Yw7GToz3pr+fk2/pSeOk2FEO22JZImE9EpsiaQuZ6A/okP5l4P4+8tkoA3fG9Afmw30eFbHGqDjLfiiO0wvawoD+ftBbBSogfx9DX9S2/f72jhjPM4Y39Hb0nm9LvGwkM92/nqoHav2TzXzuDUYisw47o4aLXHHicHFWnHCYq3c0dvTZzGbCRc2kaEmXPDSAEmMZ7B1a8aGTrDBEWKRFldVy6iKMOogpnKSmcqQZCpD1FT+JVU0MZV/GMBCnfCwFseG6nE9o9VdWXlEI3RpmX+tJRtSf6X10U4VBkAjST79/arm2CbolbYJPE1ijW0+txv9jYJbn4p+1JQBjwm+Ys0Ana6x9o9tgXK6dkfvTP+khvu9YxbVCmbmKmLmpNBqj0OrL8GA6e+s/Ekva9f0S1766FHoo8fMw0shy0g8kb4BdeLU61cnPIt1Dfp7uzmVq0Stln65xbcqvQHPfQ7KRssxgaGzltlExALF2+1L5gYLgCaxlQkkHvFYUN7kXDge78QUkLy8jDPxyOl3NI0n0Nc1ZUr67TBaeaNytGLb/2nHxBUDEXMvqBOdc7SYR0CBpljWBFi+xNzfoB4r7Q98Q/t/33jpJRgvnfao7Ucd46XQP2h4xAT9Ne14v+LoB///NmLKrUKvkmWLPiuHR3CTTND64kzBlfSm0+SSCpSGsUOSpdjFfkQ1jlidXsLl9Cbb+GlMGj+5DIJO38XA6o7elf47DTfxTqeDTy2LIAp/BvsyltdKiWM5q8fmz9Dj4s/QU8Wfoce2BnMKZ7VdWDPh/yPbNL620iNZN7G20iN2dnvE2koP2D4YkbyZjUiGpRHJMB2RvEamo3REsg3LsBrLEIBpGw6DxLkBl6TY/yIdFrGP+DP9ZSifpM0XAiab2jFH2+lxtJ0edWe6DX2TzxTfyBbN/5lE0G12aYYIC7FvMctuvEs9dVid6QK5m2VnBGvPi9MkRwRWIMf1M4lHvf08cOX6V4usWAj70BxMCqG4Jv2PeBqfeMyT5KND+xwNCSjE0+jf2BVWA3WKK6wwTGaFXUoceetQLnuYSxsbq4sItsVlgidWghROI0qdVncmAZ2/V8MDqimHCaG+bU2SKwNuo6ol7070bb5lZWm/SmeEJskZAdNzWtJu2NueTXTbTKn5ddK3J0uPNHa1zhhfcs4Ye1y2X3pcNlF6oAH0YUlPOizSQQc3gF2PYdcprBcf0BBL9HIAQ2205b3T9ORR5H25Lhh+tGb1mehx8ZnoqUGZTi8KF/Uu31eClEwe63G9baPa/Frn8ATqUY+MzdJxeACR8spiNr0eo+bVDu+JnvTXoX5v9hjSJfdrFakQlu/8oJxa5baIwrJSU/Ydbj0GHrzZe4w+ezfRzbqJB3E3ccYjv5vtFl5lzTazHuJXg7iHmPagdkbdP2z21T/UNrBd8Z7Ca9y7DD+XFet5ek3/F4dLjLKsvHqebtHzEEvfZ7N2XZ7W7v+WpW/AksZh4HZHX5v+FLjBzNisy9qh5ngjekfAtEweu9HysoRiD9m+z+uxX48sLJ39aSr9Jj2eyDs6HmQXV9W3W6kreutU+mdgxDZr0wUdO7C5CjmoMJSMN6MnLSd8cNpNkoa7GYsxxuVwy+Q6i0e3tymcQldR9BS5TlXlM/RRvl1PX+xTbHz7OZrQid7FD6GEzCcEr+vgKRGw7pHD0vsNdk7JZe0Gj4T2s5EQjHVgC7vr7mZvNW1hn2WznDlpljNHZznvDZBvMsup11/WEvO4EJvo5znz83Hzs0A++/TrWqKJ0W3KLMBO3Lmg/jT8eR/8eQb+vD8AxyiO6ZsSiwy0SESIERGKWIR/1eDX8wHyswf/wv+zkywux2DWEXpvZfRKEr2SoPc9AfKzBnplRq8i0asIet8bID9roLfE6F2Q6F0Q9L4/QH76o/es/itBo87xX3s8qP+AFrfczfvDYc/kT4WV0Z8OE3hL3I+ECaA3ryoieIhRJQOqpM+o+f1oeFky1ijXZ2gSssb+mKc+nQmfDcf/s8/4aNiIPF6sFOYXjYbp4sL5qdJ8ubhYNjqOTVWWSlOFsdJMvnSYJExViiXDUHyfKeSN4KHFS0aUUsC/jixWDG3K0M4Yeil/IV8q52eMjnH6ZScZZ/EzUpw2aRjT5s96RnjokqGX84X8NIm8f2lxujJfXNxh6POLlXxpcapgGEcWcV7yY4uFS0Y9By0b4UOl0tQlQ3vQaBWkhvPl6fzizPziWaORRZ6cKizly0az5Sdm2mqLOLJwvmCEF6aeGJs1GibmF6fzD1IdRiEnWCQjuGPbDkObNkJDlyp5IzJcXAIthe8vFKcqRuhoETMNT8wVSxUjfIKAYISdxqqRJ87nS/ML+cXKVOHEYnn+7GJ+ZvLSeSxT6AToNHyCoEZOMNyF+UUsQmxRKizDWFwqFMr3z5fKFaOefB+dwp+xkqR+I1SZyy8aEfiL84doKGmkCWLksjYrh6n4rNF4HKcv5LHyj+HACC3CX4Ir0Qqeu7BgRHMXFghM42Gzmj1YMVpw/ENLhcr87Hwhf7gwVS4bTScsIPE/04wAqjOgf9cMWJEJJOoM0mGxMMTCMAujJNRQAwtjLL4lQanE8S8DtbLYdhZ2sTDFwnUsTLNwPQs3sHAjCzexcDMLe1nYx8LdLNzDuO/Dv5JoP4lNooOJuuRL65L7xDCgMUPfZWrMJvUQQngoTGLJZig9mBTK1LMHNxru6HXJhxSoe1BbsiuewCN0JXomllbGA7kjTnJkWNKRbUJNSf5yX0cmmG0j8jUxQiESa5FsHx77LzNTR5yoy5WiHyVwBxdJx4AIOzMMzjM6zFVGG/FXPf0C4ENoFQGmwkYwEKZKx0A4TPgR/ZQnibsomYdlwkwbdvJ27cS9dXMYJT1kTVWTdTQARPaj1QCebiIK5qUWspOjT1o14lnfGjLr68bDseSQP1wcrnWlMcpoqDPBMC2aacwEFZQCyfs8KfmhkAEKmSaKS0LwXWsiOrcAsyLQkgNqDCq3Jybl1cww2dwFz+iq8XJgMF5emJQXYpiIYaKqvBwYjJcXJuUVYZgRhhmpysuBwXh5YfYTzBaG2cIwW5wYJhsHMGOjQLJlKc4w4wwzXjVLDgzGywszSzBbGWYrw2xlDyvIOD2A03ZHD9KK78Rh3Fr5dS1OZMY1yLi2MwrtjEK7D64OHMa13TdXZgZJCBQ6fHB14DCuHb65djIKnYxCpw+uDhzGtdMH1/2o/y7MrC/cKma2f8XMrBclf2a2v2Yzq8TwZWb7azazSgxfZra/ZjOrxPBlZvtrNrNKDF9mtr8WM6sE9mVm+2s2s0oMX2a2fxlmVolTk5ntX4aZVeLUZGb7l2FmlTg1mdn+ZZhZJU4NZnYt2iLNPGwGE4a7vWgrX3NVgVinHlZQnYDSKy8sRo7S3eaf7jb/dNei7d4ZWosM+1xLABAKWZRxB3DY61shOrPY4YHjcxY44SRC5z0u7H3NBw+j7EpI5iBy95JNoZ0ekg1g9F3JLHkgrRGq8CpchfeSKqyrIslbcJlIJiGzyKKBWotSusvpJJxeCmTlB9RC5CanQG4DipC+IIYbnkjDv+rNX2SH0EjasOFSJUI3uvJ036wHEnofHWaIXBKHkibplHWCsSA2g+zt8D2yGG8ZADduwcLkn9UHjXg8pq8WKj+AK0uXUYdjcWhNUcTdE/9qg/HZkFiArZ8uLlZKU9OVshE7PFUolI8sHi9MTeeNyMjsbH66Ii1zxg5z0OFywWiXlw1FivvK5E6jBUPNzMMa3lSBEW/miENL8wVYIiRLurFpWRBt3IgUphbOzEwZOl8ENEKPzy/OGE1HFi8Up6cg5kH4HS3lK0ulxbIRHWcf4Quwemo0sYRjxcqxpULBaBq3/jYOLS4WK4SQYUyZ3/UYDmcQPltNEDMyMnTk2KHxR4yYrAyjcTz/1qX5Ur48dr5yZNFADy2VK0P54eL0EgDkZ4zYoclHHxqbmHx07NjhEaMR/zo6coj/jI2cPnR48ugj9Ff0xLEHj42dOmaERhaXFozYxPzC+UKeqS8KP+bzZaPlTLFYyE8tYjEwW6Ly6BCNMnRewkboxOI8RjrDdC2tZePCxFkCPB4HC8Dywnb8P9ULohpZEIVYXKewsQiz2IhtWdSwLI/WieVRxOLjLGxjYSdLTzDqq/AvbMhILEKrWeoaFnaz+LUkjLHl1BhbTo2x5dSYbTlVE8upm23Lp1tYuJWEIbQtUZccxUa8F7fZNdlO3N+3kkZPzd2aDBmhrWU2Lwx/IvAnBcYxitueTo0jHsKBRdugn8UGLZAJytA2wDoCpVeFekrDYPUYzMj1o0YsXoAY2CZsrfiSahPc36QHUAtOjY1uIuRyjagV/2zkPzvpz6yO2olLh2HCdZCpyiYhhYsoNFtBkMRT4Hv024FEBIM1D9XBw5otcUNvx+bfyMQHumzwQKNVjJTagUmT/nmN3MMWI1zo707b74Tt9yrz94R+W0vE2N5kLJMk27ZRKCmcij/W8Y80/1jvL+eNmMfqqgXaVBXqEIZaDcWeW01O3uq4a4Cb+rpGPxmy1i43Es/qIdiri39uvfHThjD0xnSxVFyq4OZcNtYeOlMmJuEwjwM7nH+iMlLIg4kykD3BiPKk4OP5S0bwQfzHw9SvdmMAeNqQoWHDdmaqnIefenlqNn8Ydoskg6Tc44nmmQxGpXh+oVgm1PT58sTSGfgSFi9aKV0iBC191ERlpjB/5tD5eeh1Fs5gmWZ45owJDDVVmH8bts31ZB9okWQFOiNUJmknafZOHBlmO2mB+SK2xgyPbEfqTDyx89dQyk/NjOfLxcIFnIVCfrZCjfHUPO6ZGvjXIdz/RKeZJBHcc0wVMIViZQ52zGaLhRnoAaPz2HRjVkZ9EeeIdU7mlljwbB7Tnpsqzx0uzrCtUH1hfnGpDIoJlXHODL1SnKiUYG8swsLYxdJ8JT+eP0/62XbIeAGrnKgF41IuMcsvA3cvuBc7NV+ZY91JBGIKOBynoTZpdMooR2D4MJ0/Dxt67fP8h5XFtPyru4T1iOuGQLQJFDpfWCrDjh6rWWRfNE6lsADW558AdPI5OVcqXiSl1CRiJ3BvnjcaZufxeKRw6fgUzlJs3mT6qBEuEwh9pjhOcm00SMnA0i6nEThXNiK5Mqmz7SML5yuXHA2pFdPC6sdjpYml8nna6bqOPyKTUyUo2iYsYfFifob+LBvIhGcQ4cNHD01MyAMWNvTxHLegCWh7stL0GZyrs5Dt2PGlM4X58lx+BtpMI6uArJQNzHOsRLRqoGl7HtVb46hMMjwjVGKEzxSK048bzdO4oVTyZjzZ+MVVEQRyGZropfx0fh4bHaMdi3K8WLi0UCydn5uf5naqlVR/KQFaQoRWX6PVrMYjopI04eIumRYr/krAY8QDRyBCLFSPdepQs2WMY276djK4BBuVrCJhIxvd1FlGN8C9G/9qYWMbc4t4KwszLNzFqO5h4V4Wv4+FB1j8PSRczaTW0BBLH2HcHsK/1qJjLHWMhccZ1MMMCg/K9Q1ogsRuQCdYeIqFjzCsNzKsNzOsKfyrH51hsWfxqOqjETyt3ctGKgczCTJ6gefLoe+jM+MBPDPmp3IPZsj5pMyqjG4uq0SsI4YtsFg7Ap6GowcZOSAzYyGTMMmMepB5GOXZnG8Vl60P9iZlQtQTrhn31DE0a+ZELBlF5N45kDznINlHZvEH+9bDRV8YuU9JnoyBtmLNzOGM9fnjdQ+aJ9vMMbJaE+vj/nwxxK90j9F35h25JxP37eSuySBBMTAK3cf2QBhAj2OEVUxRQjws9GkoDbayqVL0AHEzV2GCr3G3B+aD4DYqMO+ycGYkYq9bsaTXo8dAr/S+a5d8SSsge+Ey6yx4k8biUjGMN5rf7ILUiHUs+Rtw62+0D8q+gZS9Do4pfYHRhqwo/aGdliPu4fh61JRcC2s7GUKyHpNsISTjNM8DWkbPtaE2nAPDUivqcnE8WeC+2PEkuQJsvMcHOXAbhQkJz8x1lVKggqXX6reCZBDdDAP3cYS6YMOBXakfQnXp3Xog0ZiCq23i+7UkWXZJseYWzLSKe7ID45b49AsBHaYFYHII5ipy7BdORgTjLC85RHwYDZE3fqu2waxVbBS84DeRGB1tJvOoZnDJzcC8cbSPVioM3E9qSgJtYUt+fUQM+vRBX6ZttCO3Hm2zt1tbmyVHgreTpfQOXBo7iLWUSwOcrbMkHSB3kuVvftsr5L+e5gJUT4+ABJ1qB41PwE05nVlDVPgEWSJbjc0ybijZJrQ/aaYlRzvAv1Pwo1diskNXrEbDhGkMT3ISxP/3YKoOSjO3itGLYXq8LiaJfyg9VkgO3wk/UUeLaoV6wVzoM6txrcYypr8b5sarUzDZDO3XIv60mkaDjt4ohu6VGnWPi77b0H0kCwaGprEJepukRdZgOq7PJsJ9pgg4++kn4UhAiEz7XqfaopTZYkJeCqU/orE5fPP+QChSsyg9PkR5SS0KHMc9RGJZ149lduguBLcgrEussdRGFG9Ch6U6mMgZKMca34ZcE3rQkqajo1BIo941WNQ5cqBjmFDrprcvwwHhdvhsQQ/Qm1Mz7Ti1FaJa0Wgyxknhfwl6f9x+Kg1FsohKW98RRlJdveFnSljNIWg+v6Ppnw8k1nFzRRrk/yUj4yw108ZKdsBhqBWW5jCsDKVxhtYPOcdjcX1jvEmfjBt6LAeLRT0DJ2H1aBOOOE1WjzYPvAEMwc9r2JD3CtMiWu1QO1ZgDL1JGJcE9Cl9Q0m9zhod51edN+ea0aOsHhFX9D4XI0UqjGzoxptlgvT0CK8D181SxhQdWgjjGNl9PP5Vw/iboHIRx8CTLDyNL89Pl41WMWuZwBN7PHMCd+rWw2PjYycmjxwbeXTixMTxkWPDI8NG/QkcHD4Cn9HxkYkTD+EPurTssZxjnQqSZZG0bc52f6m4QCe0M2KR3rp0QJcLuJM1m92xGaBYysgYG+2zRIxmzrDHSnTlvrojdpdNQAsZWFKRlk+qzjEtE//11nmiWj6r/zFdv4odESWmdEKOf0JeY4fBZ8CAI/f2+WZYOe+sQzoLrWvsGmqyzUdlJ2Tg1YF/NYsVd3kWCqlr8a9WtqLeCivoyb8I4eE6v9IulmkgNgfhVtHCbAfKNGQRbuVxYeuMTOPodR1cGB6AkeMoYjhdBKpDjKwxpsBoMqdmuPnjkSO0EbK4jKhnasIugmX0byFlFU6MyyW6INs5B8lVZA6AxBxglZJ8CwgF/hvYyI2u8scrg9aYQEx8CUmBMYG66dp8jZkV82SnFrVkwUJ0BbLrxS29BoVgeDxwP5v3WHJobvoG6EErMh6in2HzM0I+9+jXtAQ7PYlH8FGyjh/QQ+dg0Z4ti9skoGvjHWT7tA0nrSNJadyVtWND+5ea8Vajha3ZSWZLZXqtho3uWVpMpIcthSVCYbHie3CD10gzC0hLS87TBRHSGDVUj/9GkJHcnu5DdaJ1BTO4pzl9jewPEL2GcfaidJceZ/qDOq5OAZzHfwsZ/6EZ9fNlvkjGMyeWzoPF0lkjeHHntBGcKS4YoWOwnByZL0+SZb2pmRl6WkLsBhjT5TKJyotVb7663Dh1Huw4h6QmMATLiLLxpr2C2/4jJUGYh8jKYngai1kyGqlx57R1vrdK1sCpiDqXDJbhF4oXmIk9QxQOKoXVPGxbDTjFHjLgFHuY7PVF2J5fvdKamqt5LSyMM/hOZi/DyacCyXXEFUjrgy1+8BNgt7PDeck0OU2rJbeR7bpIH/UCaCJbPZ2ome0sRshfI8OnvoFkO9mi4/Aw/dbBdagRtUOTAkcc+LmN7NcBVMwn1YQQNEJ8/Ylw64iPvpf86WZcASlIeOB+GL81k8ObZsQH9cZndV2MZD4XNX4vIGpcLC/vmFvOIEHRH1mczZfyuA1Zlsat2+zhQv5CHgdHaTAyPj42bt97lxfTnfvwNa6W+1+NR4eOHRubPDR5ZOzYo3Rh3sMiBKcWZ9iZLbbtQw5yqYc17ABXcH7xghEoYtAniqX40/4OK4XEiIGOFCLMrNRhsxLRdbZurbMar6NGFjazsMU2fuA1PmnZk+/CI4SvBJJbSEVs7qM+qAkyI7gdA+PUJM7gk0FwC9Q3Ch3vo26QCeoG6Qq9AfedjDZbGHSHIjQ9oLaQB8/8y9ldg5xbqO+tb9pr/dOGdcFzMGEijgR0Kz2EJ0NhMhkKD0QhIiIiohCBu0CINWASRWIbBppgZhXDMyskZlaNA3Erz3ZpT/nVuPFURDRis4quOzQ9DY4nZwr5o9gwg5U/XoKtysqlo/MYZsrdx8Z/q2o+eejoiZFHjx8aP/TQyOTIeK3t17UNZm2+TWj4Eu6t5qdFr2To9584dhias6EfHx87PjI++Qi2OE8Qr5rJR46PGLHR+Zl8+aH8whlM1tJimznCow+MTILUZsQEjVh7tHjxeGm+WJqvXDqyOIYFKxTZxvESyUD0WJEYRKMJKB5ZPL9UoQc0m4C3pJCW44WpymyxtDCch44TesTG40ul/HgezzLI9ie3j0wLvLOOLuDSmzqb50YVYQJ49kMUSe1rA9MXcbRKWKiclFLq86VSsWTuQrN9yYbDY8cmJsdPHJ7ENroepD509MihCcx/7MT44RHDGMcCT1WIiOjooWMPnDj0wMijJ0fGJ0Dn6PDYQ8ePHB0ZFzENh44fET/o/BXNzM+yTuOh4sxSocgOA8OBWLJjbznNugp2DUvFs8xdCk6r8tFEmMzvjGAezHK5kj9vn/8So71QnIk/pd4hrFP6RIXYPI2PLEJiZNHI5mncF6rF5gvVYfGJ0tgMTWMWV2OHSDXmBaWxnULNcaiUez31WLyeQmwnsRO8nEi4nYV8Z3FHwjxMCiHfWRxg4T3Y4v9wMLmerDfDls1OFu5iIaw5J+DcXoABdTOgbgbUzYC6KVAPAVrLgNYyoLUMaO0oXCIAgx0Kl2JwKQaXYnApAbeZvNYIkuxn4QEWHiSSkeWddcCZQnYzyG4G2c0guyXI/QRyLYNcyyDXmjTJNCgADkV016OJGNNBeqpmH5NzPwsPsJBx8cBdTV6AdGiZKo4mOrRLEqUNpcP6NanjiOM+gvYVtAOIDOjQTURxhEG6CX0gZhWkGYZ724CIYfY+1eAPAnwDh09iph2YaVwwjbOw1UEMsHcBdsxd5HYlFuHZuFyeRwG7iWP3YewejJ12YrMwwcJV7rI031X+Ua35J1gt7lhr3LHi7lhxBZZGsVpr46Wlf1EDtDaClonTGUt7HNwV0+ILdqc6yBdst3WSL9hmS4xHREhgcEiwxhkdHBKMZ/UsFmcbFqdPiNPrUoh9LOy3i7sFWuQqRcUmqxKw49hJP1ebn13kcwesVbDb7DKdmTVsrWIb/rcd/8s4acrzpqeixvvNeRO4nRlDU+X82FIFDwPo4kN4trBU5g5Z4fO4R6+YPXqU/C4sGk1DS6SDnGGokTPktxgDyM5LdLaetGJMFvEoCQ9K8keLZ40YLA3kyoxWrEhCTCk/tQDjlcockIxTqbex8RSZ1MdVxCyOdBFKjI/plBOh+IUqUx7uiCxP4wE6hn9FRZfbbOl66xxuyHyJNIF/NYGjTvICNrINMMXOwi1jZPWFPc0FBZdsJX79cNQ/ShMhsp6sBoRouu5IT68ls5/AQN19daevNfGlK1odOshMWksf0VPcZOd0soxGzyDY2JGbkXSRamMGb+rUpUf0FrKgFqhCCt45hMuXIqdv2YQi+zX7dY14HoerkbHikjZzHOMaRATYvmtJGqnWPrqS1aAUxAZjpQjLweljbAMfMqWg4K0VK702oNegP0Z7Dmyl+OznG28yfr3bbIq4vURZJabtMDgzX+L7HEUjTIbCfFksNL84WzSCBVzbQxenSotGaBi87GR30xOTh8WtLaFLsM5Fh9ALeG4yh4kDlbniEm6x4NsGV7yU89NFPEptWJgv4PEp/RE5tgSTECO4WLyIjcFUqZw3jBnMy+b92Xi0OD1VyI8R57cyHu6WpoxGmDtMVR6aqkzDOkQEuO3ImsuDjQWCw9P1yvxC/g3FxbwR41/EekQv5vOPg7gxSTCsLDzmJpmOkI9LRgMO718qFB6BvOr4xyjmVzaa8ddDMqJBIiDLZQL2EFEIxE5IpCexCEYL+3gblmVsdracp76KWLVU3fz7ktFEPwX/BvqbihCnPyxSNPI4KgiDp7KwNC5OrFIcNjXeUCkemRjj6q8UcxMwacnBtTbxSpEWgwQepUrGmSqysmniUAxCYEFOuTNvpSj9wixBHPqjTV42y5XxL1hC8ruwFj11aPzYkWMP2JfWPFa0QiSH2iRbtI2W8hfINlq1S3yIbzmz+vVlIvz87CXYhyMuyrgtlc+Dq3I0xxd5zdws49ROzd615tzfXA8I3Y8npiAImXTCYvkCEYj3pJaZb/W1gAaMVlxktPCPh5dwtzg7D+0ZBImdZ6sqhHYQqnfoIfBcDhw/Yhh80p6fMbv/1SfK+RTrhnHTntt2/EhqfhFPa6dmtsHSONEs8eduGJd+RGk2cN2z4hpG3jxj5FwlYKuwwakzZaPLzhlHmqybbSm4BM+UN5Oy7zVCU9PFsrHGQQDHmhSQPclogL+cRhh+zNnm7qGpMq6tTsI41o0wIDTAX5Mw/oFHW1OVKRUpHOtGChAa4K9JCv/IGtolQ3vC6FaRypq0WhxplFh286UtqScYMSzXdH6+4JQLYl3kIggN8FfINV14286sEQSlOorRUgjNthTYJzOLkZRAENcYJxUc6UIFwKGWCWHw98IOGOQWcXfq0BKJdtESRYmRQJCbu3S+WHG2i4JUbE3WBKO+YBYZ7sF3ZGhw3gjhAOtpYeoJI3KBXuTWQHtw2utvAC7kzrYUFlKmiiM5P35Fm0ECiqjjnp9+BXFnz+jAxWsOOmbNNYLncZcfgoM1Tn3jJBd9A1IjIMHXZqzsXiNSmlqE/T9Si8bJ97ZFbMpp1gS/NkaGQm+jgMY6VayEvhkrsVRcwkMVR1mSaJeypCgxEogKBrfVYTOINeTIsKVJN9tSDENq0CHanstvxWbb0W4g1qXdEIQG+MspBaGFOySxWIRmW4phSPYgRFpwuFLC/aSxD+hUiue3ku44Ncv6znJqtlRckBmkcKf4OLb1JpPocQyCBy7YEBcKhjYBk0AaESqRw72l/DlygJRP1LS8fEYGd9j00JKefyI/vWS7+DA8DcM/w4AuFajg3obe7NcA27eFWTxmwlHmrK3q8nZkPH8Wd+NYyKkK4EBTnzqLJ6NnC8UzMO3DhVwswRkxLCXu9/HoYyb/hFG/AN4zMCE0QiAndGBAh4xOcaWowI2D+XJFOvkUnieYOCAT4EJ+8Sz0dYX5M6Wp0iU8rp4qPQ7j3kXcpeHsOzYc1kKRPIZrMsnZY6mF4gzpnEWLiFHMB/KQEWM3gM+TOWsqz/cSREGmLuKONnWmOHMptYRr4NnUDJ0lcyJwuPnxPP81QUnCSTEy4WiZyc/CGbYRJkwBi79YJIehqJSO9MeElPW4CdFUKOpZuLDSiDzItvbPsbHVHqAyDZ+pAt3CSeGWLOWDD0VSj50rPybZTlyjyvv3E8xteIrUAnMP61yDegG4bPqH8rgxKFcOQjD0wMi43I0Y/B3B/8hox5gvE2M5D6sg07D50HCuPDRfuTgPd0/iWdccnuCU5qwbMw2TkpToXHk4D6ff+LaVESyeOWfoPJOGfq4MQozNwrZC6BwM3vHkah7PFULHcWAYZKZFDblWxhZuamb+CaOTtmFu+EwtxcrbzGjMBpBhstdGEfCnDF0P0CTOWGUCEBYSVBOHogm48c/M8C3l6BTVkFE/VWY6xU0UihVad8N0sQC1gJSOfoRHO/fB6E6KdgZPOaFT2zy1JXWmF+afi+JHGBsPmHUtLYqDnWL/qsWMZKTjvxDytZDD96z5xZoRtoRjerXx3emEuQ9N4PgZ8XUM/yALh6VzTxDeT8IWNMp+55jHG//9IMM7xn6Ps3CCxb9BOvMEuXmTAaes3sxOW72FhY+x8AyDPsvCeRYusHCRhSXGpcLCJ1j4XTiM4vC2xj5+gn/8JP/4H/zjDv3Q0B9pBHsr0R2k/DkH+Uv+8VfwEcYff6fh31n0vznu3/OP1/jHv/GPf+cf3+Yf3+Ef1wLs43qA0X0qgH8fRO8MMIbvox9Z9CEe83EO+uMAegj9BIf47xziJ3nMz+KP5Icbk5voNd6xbAI9HWC+LjHq8JzZAWtzg6O3iF/LWvRMINmQen+ArSRtz0bRs4DaMHordUc3kjvRc/CzHsc/p7GPZ8kH3fvZA5dUr4vX65PkQuPvDtzRGzD7521Um1HEEjH6Dh0Au5Fm5/4Bk7ue3IxeoNzr0QcDdHEKf34P+xy9RtYZ772jx5Kn4Xp26nU3lllFPLjH+sAB+3bqWX1A34glXCISvjsQX6NfjK/SG4ba9Z54RL8UD5Bbtt9Okj8ciBv6A2SJe9PA5Tt6KLmBXvYNF7h/X4D4dkfRR8iHzH8NvcK7AYv3IhfvNk9uTB5AH4Xkpux29LFAMhFv07U4eXNMuBEGM/dlwmlHHGxxvQl9IkAcl6LoBxgTPYBeIppx5O+T3vn7QVv+6pMPox/iJUypO0j+sDfJTzlIvslO0kvgT3tT/xEH9U70GaLLPtBnFP0o+UG3An8skISXSzSivYZMGIPsJjU9mlyHPmutk322QmrC+EVScnA2bDem/C1az28ZgL8N/bdAsiXeGJdpZIb6LLX6dgCIHQZib6Zv1A9jWhswrRdBymH88T/IBzi0ykr475qnEu7YlBDG5H+qBvI/7U3+pxzkm9BP89cOdkHuH4R3Sevj4Xhw9I+1zFbiHDuWDmND9sdan/lI7Fhma2ZrNqHr6G81rCwSxZCwhnaQoogk8ytCjKR8laVkMk4296KfCSSjo2NQJCOUia20SNEftlqwnwuI+rBeQcBeadJN9KmHwOlbT2qwTt4Ez0EEMtvpbz39IH3dYvtA5PTtJzVrsdyy6N2ziJ4MwNP1CJ7AABEYeSO9EWkqs9fH4+4B18NQ+i0u5rEP/2bexzUYyffYjSQWo06Qv0chxioiBuzbvKTpX0V05yaH6C5JNkL2J2CvJkV8JkPZDhxjtuQgtox8NydFLpPzhjCqQjR4Q0BB/kgAztBFyRYTHCjqYN6jEYSIbaPHHutz3ep4HLaS9B7vdOa7Wp/b5g8Oh+0Efk9t8DjsIHiDy8PDITwiZOSYV2yuibjEAh24VLUh/Vk4skc8EsYbMCliSE+/BOe9uuUfa+UfbfKPFPnRSH+k5ZR2+Udc/tEh/1gv/9gg/9go/0DiR/qpsH4LJSIpsrG1P9C4ZsjQO+L07JbBvknuhuLkm2iMHYCtH0o64+JMi0Np97Q40/BQX3WYOCuFoax/2DgrsaH9tePEWSkP1eWoL0E9DjezsJeFfSzsZ+EWFm5l4TYWbif1hL7SA793sDDLwp0s3MXC3Szcw8K9LBxgITgJNeSokxCE4CTUhBvzPWSI0YSHGOyoKnT95Ion8P6J5RIMIoLTA+zyJ5qSIkdUvXHvc8U9VBX3kAtuBA2xPByGEBw/7gXnVXCHQeY9UA+we6COQESriGiDiJgOziBHyQbtQ3DS79tB/eU4uQqK2qs2aJ+jY7TfwjIcJxyPq2Kz+9HDyT3kUDrZSk5gypOE8ol4e7wVbKI1+qQYoHZiI36K5g4bUxKXO22PyQ7inJ9ODiyHA/4HN4c+QurA60W5IXfUQXk/prtcnXQ7qMUwNVFHcJ/gmS7y6w8OrkxNr4NudVWf6HqJIa5Hk5BOXn4KpR+DKpbkVSygN9tqEdSyLlzLTpJatmbgUXDy6o736FPCyWvtwDQLZ1iYZ+Es1ME3AYcU4aDHyRUQmYZxFt499QJQXyeoTzLqky7U92PqezD1rIN63sblHAsfZ2EBuB3lx29Zg7w72YeB2noh+0km+0kX2eOYehOmbgjqhMogFDLxwMu1sskKHDU+D1TgJPlq9NYkHVCdZ/XmJJuLwuOjwfRXkP75eGKDsBEPoyusDwdBdJg2DOJhoI6HgVAjrsY34FFgCo8Cu/AosBGPAuuxPDACfIcmBoPXNHkwmJtA1zU7zXuloeUNzZXokybRm1aiHfTtNJMoWXvYjJk95cnsne7M3mUye7ed2XtcmL3Xk9nT7szeZzJ7xsrszej9lChbVtH5QouD/He7k3/eJP8Be15ecMnLBzU2qoN4w87se9yZfchk9mE7s++VidabzL7PU3EfcWf2/SazF+3MPuqSs495Mvu4O7NPmMx+wM7sJRdmn/RU4w+6M/shk9kPW5ml0KesNUHUDc52nMxwXLP4aXeuP2Jy/Yw9iz+qzGIH+jGX+M8q47N03UPPNqAfh4/eNJNwlXW5Q+bNcPo4Tj/G6fOHU89xtqShxlXD+anqsv20EsdbNjWOt2w/bTcEP8ML+2f5x8eUhuDn3Iv3583i/QUr+QfhRVcFsf/pTuxzJrFfkokdwdX+f3lW+192J/qySfTz9gr4K3KFMsw29queDfoL7sy+aDL7kp3Zr7k06F/3ZPYb7sx+02T2W/Yu8bc9if6OO9HfNYn+nj0Hv+/SLv9ApcbxHCpDNCxDhZ7VD0q9/AU8hrkY78bck5h7DHPXMXdIeRv+ejuBKcu8rfX4Dy11444ehutYbgUT28QoYzf6skaXTuNRXaOrfuHMVrbil+1Af0KScZK5KIgHyVvRn1qWCauAd6A/Y0thme2Zrbj1/AXoIZNbi15RkdEhHaJyG9UATQAgRX80oH8AJbamGvtgv2kspZE1A61xaCL+MPqKljwaT8W76SUn5k5LI54g8JXFVzQOkcmoIf5MY/GdOPN/rRKqDVY8my0rnpkdox25XbYlVaErvnSKhZIWSDuhTuzEk55asHC8ermVUrujR9LfBcspu0jBw5u/X4MSaIg34DnaP2h01SUXR/9EP2GF/ZsEAE8h/xk+Gs2YevQv5GO0YzyKvk4S8cc36IeBXiXm5/StJhz5jyTyjh5NZ2B0vJtMfAy2eA9vkRvk0W0yC8Lf/4fHA8YIHLbYQ0blBjlGYZtTpPEwvBsPw5PuUwhyfx2Q2cunCs6x+zQAXddgCjDgzuwwxrsX4x3wMV+JkvA/NPvExdo0/9NiMkCInSDDPndJ81AhTQLvCAik/ctBOlAb0rN6t+JdW/n6n0/GjL83r/8hl8rouQsL98/nCzMrcWvs/UdGjg4rTsa3UleNqQI4Bk8zuopnM6n3q+2eG+5hbjrJVvd7jWES3DWobHWabcJJx6mHE2Hi99QvO1rqceq3HlOGW4DBF0K49rZB5NJ54uR6ar4wMz1VwhLpZRZlOsMzp2B2/hewLi1W5vJArQH/4riGPkHu+509b8QwxPRcqbhIb5qeLE0tlufJtRUniwUsRiEf/xWvo/zVjpTW2a7Z12xOEho7uq+xq2hD7GhpSDhN8KOlayxHSU3nCevF+fwoqcbeI9XYkVIN3iNNBmH7Y6t+O13lqGGAXE+iw00lFLzeHTxmBX8EwOkZRJ0dHmvANo+Ep289GVKd2kMsbLEdALOR3g2kxYFD53E9TqbNijalX0uzE4cuEikz1aQ34YhOYrqaB1YxmjEdYcO5moxIugSLEZBMHOpzz2C3PaNWSd8IZOgpP2qeU1jGViwrCd20l3Zhst5K/D4g3lZdRnsh6Naa0O5eE2wMHwLwDg7uPO4nisuFcdpKjixfdXJyaUyuG5NLusvvKMI7vPInfFf+XcB0VZVjuXYm/GzSD2yEi+K0EdFZ8JNEHvYPDg00Tp0hjpj0nWm3W0eoXxs5jsQO01PP26XCeersrz1haIvMb5953lNfe4u3vOnvbnFWJ37mkrO41eObOWwHCph+YXHHeXaIirg5M29syQ2bHvqnZ/2rvW/N7gIgHtbMJZn4EssOwcSll/rl6sQvl1wJT72ZLy4aDfA1WbxIOolApWhEIOLEeeqLbRCik+CUZzSwb8JSB9/PCVBhCDx4ac+u6F/tPSuc9XiwEl+03GIkdw+6ATfDWbsD5x1GqndOAHuQ/L3XgFvJ7yNpMXQIm/JPpZKbUTO2CxrbRtXYjSoBbDlCxD6R1yhC4GNFIcMMMuwBmSaQcPEQvE0SobeeSYAmTJTBRJUwm8lmnz/Z4j5l20w2Dv3RbPVNs803zTbfNNt902z3TbPDN80OnzQzZKMVaCZ80qYYYYbhT+5VvuVe5Ztm0jfNpG+aq33TXO2bZpdvml2+aa7xTXONb5rdvml2+6a51jfNtb7ra0qmyettVQxBm9dbT2nW+ZZ7nW9dpH3TTPuk2UeuV5B1sYHQVtniDIGVtbChqsQbfUu80bcWenzT7PFdIzYxmptZ2Fu1RmxitDezsNcXjwjDiDCMiAdGP8GIMowow4g6MejLs5vYWulmFgKw9JSGCd/P7gsjbAIM02CYBsM0fGBmiH9MbWrbVrPattWstm21qG3bstW2bZlqSxN3IrMGq8c92323h0bf7aHRN82Mb5oZ3zR3+Ka5wzfNrG+aWd80d/qmudM3zV2+ae7yTXO3b5q7fdLsJg5rcM+nulb2EEc2kp6lzmxquG7i4OZOZwtxfON0qslvhW6p0vwpdLjPX46t0NVodxNHvYhrvjaIdG8tw11gUQ8qPN2LSg9xBeRaaXQpiyDOoR3OW3v3SPporKo9O7QH7XQ/vVYW9u0mbTAf0hv0yLr5U23vNn4hfB+smPQTR2oP4MTW4cl/X1dPgDeJ+2k18+UdlQgUkAjsB5BcyesHEAorWg2w0a+Mjf5kXGdeMyyu3bZWJQkk6g7SJORSg4jr5Rqe1ZPk4eHGOL1FdIjAHGY7Gj8RNH5LMxep2ElbY7q4OL1UKsFiePPE3FQpP3NkYWGJXgh59/sc5up+jVeGKvdBGibn4GVHcqaV7QLET3rc3E/v3yV3Q+NfYXYLb5idaAyzVZqwWJ2h9/UHYNEeFtED6X2wjhgkL0CRhcFInF5NRhcGowPkWlcdRzSQhcH6gUYofoM+J4pRGzhqEqN2YNS4icpC5EriWXJ1+G/WGy+bt5AZ7FgsvD1cP8xeDCzTS5Cii+xR5ZZxrKRT8MSkOFMLrz8Uz5TzpQukYGPsUUG29FhcPDw3tXg2bx4232meT65/UFBR3h0jndQtFmYYxcX8RfpFL2XSL+QrRXrCnW/iGOwJ6JNTJXHfGK4xFCsKR5nH87OGXuZR8TEhvpCnYWoWy8Jkj53Jz8JhdfoLgQ5gCdVUwXh8zvPEqyZOvBqs1jQYcI6V1w6+pRNnoXxVmXw76Bq+BfOJgP4yv+4R3BO6USiJuPMuOa8SyYTIGRYwAcHcE9hYOdNBEPZc+Wgk+zDsOSUfjHfG28lTMOK9AnbHF3kbPmKNRKpIur1ejzuQWzrm3PpfzdkgnKGlfJceSDT0CTVkHYIM1eXWwpLUQF1Wx1N76oxqoGb2Gk4U3r7ZRNaV6tUAWXLoYKAOA/KjHAN1p683AfcvaHpPItZH8+pkDXtJ5KH43AayIlRvo4vYI/IthH4bhupK0vfZvKBWLjv19JNkRkvv12cT1G2kO1XXR54Dp+4juTWEI1tNwZxlfi+RffRH4SEsgQumNOIDM7eRSapIZnJqlMGzeoT1RL/ZYXw7bPZE7MqTCLvFJDqcn52Cp06lG9qUFyyRq1kYcGqaw6aKZ+BuDPOKF7d7lSOjR4aHR44ZjTOUBGNPdhiG5nFvRh/zPTNfOVxcgm0EksBfOuYf9ST2EhjhegjoWf/wFD3yDxeG0DszonBBAHzQN4EN81YWsV8UxlzmC0YIkChduvnD9oCiEENEgg+6F0R3UcD4ez0idLpYOlW8yPIXLufzMztokCW7R9g0vs3QLhraBSMyNTMDty/rR46dfDT7aHYP/9q9Ewueh8d3z8BmSnkEbth7iBUEdztA03P56cfHwf4OEShm/dtIPGwMWdMgMx6bRO0UDfIo47G9o3ZWbPzibZa95hmiTHgVCXdWuBRDc/M4G2E8TsnuNfTZqTJW3dks73LCJdJbREhQJpf/jNOeULClZXWClrFxwixkUg4kE/UnTDwSSSQ0TNGNxsrU4/kT53FWoWrFf1PtbMDHLQHHMyT1tj4I2foi690LdcJ9wHoTNXcjMG+W3snC3QnrTdMDrAe8D/9qh50oEvIXa4fZ7/tZOIp7vH+NJtOIHFDN0gNZbMcIBqJpYvfXwzWcVpiYEmY1WbVAGAbW9Ruz9CBg42gdTYSlghaWaLBEQ5UYZYlRVWKMJcZo4noys+eJcZYYFzdCt8JkbT2ZYHOgNgbUZgVqILPrAJCFe6H3MykPMIEOcoECyVYyP4PIQVPKHrKgDzMWUBKc4upQKqmHLNLHJLhOJdw2cvIrweA6aMGwNTAJVIhvhYcNtoQn/JATnpw/ayNZg6/2qjx70EiSPsAQqCKbgBMF5AW/xwJvLVj/fEC3q6rI/wDUAx/yCzhRd7zll+Gtdc4/H5A/6QnfSV5CJLPkLHWdoZUxHSNHLY3T12FlFP/aZv6SbjX/dXKAOUjugIVxLkKxpEwK7oCFvWQdfyGyiiMOAeOYlDUmG2FVJ8IqjozTIeiRw6MkrdNiBjpyCRGTtKXo9Igt+VojaK+xWArA5zFJW4pOmxzB6raYEMDiMVbj0jHeQ8+eM3/oBHkiKkIKAGaSepy6mBh4JAdnxQNYu3gY9/kAeYTLRZ8eZNI/EYBHi1NQGo37AyG4tdiO3+NZHhts5aFqzP8fLxOnmYRD5XXkVGxgKK7DE8Sw4RWN0xPa0aGsXhen55QhbjMLe1nYx8J+FsI55aiyGbAs4sImMPBMaT1Fo5995ucm83Oz+dnLPokDknlX+UffYnwqZhlSw3CmGU+GS9JjG5ZLj2HU2AxjzcOFYjk/w8Y6BHOCvMMRAmxDJzEj4kkOMipWXFtFRrD0AY8YHkIeWZwuLJVhhSk8O18qY2pwf5wRyb91aaog+3LSW7Lg+bA58nhJdL5M3oKTLsmKgSDibizzUjk+7uy0ZVOAxmbnYQWJPS8SxTyOkRfNFsmjavCXZLEe/tL8h0ceOj75iNEg60SfLuLBKZ5P8EFjC02lw3YKk6BRZKSORTpenOcDQj66b3zUopXIo1RXqIBlnpybWhwrjVDVUD8qJBFkorErziYNg5QiVbnruH8HLn0BRik04aKTa0MD/i101WFNFPHmtEOMcZthXCsTovOQGPwVeJ02ILP8xPRFGmM3n7DJRmcHsROyiNW8yjpPuORBOVJHJ+zZYDOLxhOWjCTscCLFZazfSuYtE7ixHCkfL5bnyTornQkZ82YMvy68cboIj5geqhzNQwuJLcwvzi8sLbDlM/o6GX17LEwmH0bkBP0Z44gPFQne1BMmnk7TjizyGY42bkTz/NU+pauhco59aXJuvpx6jLeAx1KwmEYm0amF+Sfg7kSgdTZfIlcUzrLqnzoP9T81VTpL3NrLKdzyUlMLZ+bPLhWXyqlyfmEKT3WnywQJ0z9bBKRKMXUmn6JvBs5sUz7k2nIGK4Bo+TBvk60zZjMUkfFZ0W5EHOJNUsS0FHiZmYhlUK01LjJTvLg4WaROhrbFihj9PVYiC6/tct2cqMwU5s/A3cdRUgSYQqgyh1uwXspDO8VqbqkUoUTJc1aMBCIXCcoxLRXiuShHxbEJBDnlOLZ6oHBl1El24OXb+hP8M/4u9e1/AcdDmPyNW3lNNCrWROn8MyresF1lWwul89BGscKqdmevE+7ssl8khNtZmGHpO1m4i4QJRjfK5q8am79q7IWkLsF3Hwm7Re72M7wDCevdhIMkXC/w7iXhRoF3H8M7xH4fZnDDLKQz4n6B/0CC3vvH8UcZ/hGWnmPhURJmBRy/6/A4CydYOMnCEyw8yUrlzfjXfnbXYR16lMWewb/uQdPsF661+r3sfsM6dJ6E96BLeO7+oV14ovoQHlnswoOVMTaug9uPdo+SZ5w2ooeTgdFt6SaMt41dtbQt096H/2LAcUiDu7vaASyzB08j9tDozB4zmj+vB9FxMxomKW0sus2M5q9tQnTEjE710deaIDplRu/F0XtZ9F56hxpED+DoARY9ICZA8KDNDjLwG4IJUC9c/0fhN2H4TQx+kw/47Rh+O4Pf7gN+H4bfx+D3ecJvhOs4XBV+2lT4KUnhp02Fn5IUftpU+ClJ4adNhZ+SFH7aVPgpSeGnTYWfkhR+2lT4KUnhp30o/JSk8NM+FH5KUvhpHwo/JSn8dFWF74D7TVwUruMCCyU08nWafkGWD3qgxNAbkjymhS7LmFyzgN3vE7sZgNeQ21csDUsub5psaWByudNkS0OTy58mWxqcXA9WS8lCsExEFszSKuXKslpKNnFTMq6l6co1ag9JtjRhXzWL4lmasq8atkvCM2XdlGn2wc1iCHzVz10Snsltuy9uFjPiq3aPE4fTerLVuA1jh9IJuC9XVDtdfDXjCvhGXM/fROv56G1DQfMAXWMiNPtggZbBgzOKCzw0FwpPc7qHPMwKDqtxcpdlTD+IcR4jOFPwcxD/nCE/817Ybb6wt7pgRxi2T/BUbeB71eDWrMQF+J5qWZl1Mos7FGEDd2MW8cXMDTt1V9h7l4Hd5l9NZ51qanPUNhu4G7OqavLErqomT+yqalJkNOJQkwk+52QW8d8KPbGrtsI5L1GdzcoT3NmsFOApD0XMO7OS8q8IT+yqipj3EtVpjjzBnYpQgO/1UMQ5Z1b2+leEJ3ZVRZzzEtWpCE9wZwU6R8ekvIfqEj1UxKOHMuHXC/iUB/x2Ad/PBBnAgnh23yYCZ7AJM3BBYYx0BaPt3oycCPv8ImT9ZcWJsMlv3rMi79trynvWX1YS6PEk3Y+EMXKBVPxbcAeHIiViSemWUlKuOHstKQHmXAspYQdOxFWCiKsEEVcJIkoJutng28lHTnHySSn5yCl7HRLsdc3PXlc+e13zs9fGZztJ2chG/AVaCUOelZAjbGIIm/wgbGWj9QJtSP447GMI+7wRNqCFJPUObmSu1irL0WNCYbLwfZ99kjgEcJQazL26qlIjUD6owWxsfVVqBMqT2haSBvOlfvNQjWsz3mZCm1Q99Eipw/wo65v6dmYkqlPvZ1daepTTIaGQrTKwq0oIDp3YU3CPUnPS9i48B22PMnTS9i5KQXsnA/cu0UNWxe+Wkaqp/pDQP+flXb4uvHwVs8lrG3qruZjisqBWgqWY0VtwcylWG4PHM5YWtqRSksZDlnUcGbyNgLcx8DY1eCO5HA16jQAonf4EY5gwf4LV7Iaf68lPsD4bleVG8keBwKZtdQdKkNXcAHMIqbcY6nougTKFCMNSuAnfQn4RuQQOPZmgbsr1XEBBxx26BVVIKcNiVxxWn6OWqDZnVMQZlXJG7eVRS6LBxZ1Rbc4oQeuCaE1xZ5RAvEii9spQZpQCKuKMYhwT6Amsqy7lQMaeErGkrFcOZOw4ey0pjcqBDMdxDmTsKU4JnAMZO85eB45zIGNPcfJxDmTsKXsdEjgHMvYUJx/nQMaOYw5kIKW/loEMR/A9kAGEbC0DGc7B30BG8u7ayp27QuwQQzhJzQicAIMqo7OQGIL0U5reQfyPqFUMZ/T9WnAoSfxnyMmpOPWHgZBg5FqZK5HOHnMIgQO8TnyOIsRphjwcgL+Ir3vGoMlwxB9u7YvQS0/G2WHCcUYVfHqm9TpykZQxlIgzsDgD+3+Yew/wto4jAVgACODhgQCXYBEENYqSKIlqECTLtFxBEhJJsRmkip04NESCFGyKoAlSxcldHMex4/Q4idN74vTmNKeXyznl0otTnTj9LvVyl9xdkiv/zGx5+x4eQFB2/v//+BE7Ozs7O7s7W9/urEo8ROf1Q5wnmT2g0zl4KClw8va6rAjnh2/Wc2zUSsTT3oLFE5XFAyFoiyDS/gxPPEKHsLyqIBqwIJizGAYa+QpHrG78KEnNJWIVQ5hz6zp+8t468ESUBw/uvddjeOMspYY1JUVMSBFzSBFbkRRx/mBDih+EwgFzJ/HQ5ePnmWK8SLdLkEsd06WOCal9XOqmlBpdldTNQupmh9TNj0LqZiF1s4vUzZbUzZbUzbrUzUrqGWMm3tjpmGek1AzELjLd4agkE90Y2UlEHeVTifZhYzreUJYQ6GHVJCAfUbowch9mKSJANNq/YMTiqysLLku/axUv/a5Vyxe1VYw8zXutNHlhUd+yxtG3xEXfIq4ekav1LXHVtwScfUtAKEbgYvuWhFvfEhB9S8DZt6wFwROqbwmIvsVK3Na3XMqTXHnfst7Rt6zDvmUd9S1xVRC2vkUVg6N9BB5V3xLQ9T2g+haqwo2OKtwgqrBNVGGbnPnxKtygqrDNWYVtQvY2UYptK63CTW5V2CaqsE2UbpusQnx2YZOqwjZRhVbitirE0/ptqgrbXKuwzarCNlWFWxxVuBmrcDNV4QZVELYqVMXgqMK2R1WFbXoVtqkqvBRl7FBVuImqcKuowm2iCrfJVgiTBjE7aH+Xx1gd36oqcxuvzPWqMreJXGyLWXFXWp/b7fUZooraBowAZBIsE819WuNvf57H8MU7Iavbu9eKSt8mKt0mpFbvYboMsK2vFROqp6rfBlXPJVC1X0+1DwFRThayyJYRiTRkl0NDdrZ/wGME4ztJR7aq8iUdaXKWLgrcbFOTbSD4israKuAo50nKgVmJ8rSkf/n8XCptcuvatFto016hTXtlh+DUpt1Km/Y6tWmvyO/emBV3pdqUdNOmvZY27bW0qW25rAa4Nu2DrCaVNu0V2mQT0qZNRzFU16a9lbRpr02b9tagTQGuTfsd2pTi2pQibdqtytemTap0y7Vp76PVpr0ObdpbqzYF7jH6xBl3NGzQHdM/8txaJaQc98TYS3eYd4bVGXl1v73xqLBDkJ+SJ8X5jUrL4EHJfuC9brBQWrQZRwgd7cnNztKBbE+WHsU+VVpcyOFD7/Kge5WD2sFC6TAeVDcDhdLIfB7YFUpjS6V5vIlJZ57t1p3xwWt+C79kmkfVlXzTXMgvLi3wt7z9R8mJLsLvqEUeJbQW5WyhVDhVmC3gZfqjxy1P3SS+X1+XW5gpmX5+3TGAqO4Lpm8oN68eLfeMmy1He/OTszl+KlgcmgXWYU5Br7TjUeU5KJClycUiCt2jChNKTpocMMOFknU9AYqiN7eYw7Lpn0N+BpRJPjfLDyfjwemSGZnLl6DWKJ08ZI7f/O2HlHJQ1GYEz9Nj+lN0gpiVKPrY0qlJEcEsFc7Mz3Lb1mZpicwE4DlyeUmh7G4C3X0wUSKRhDRcoPIAgfLddy76dOE8is7PWWPwyLx84/voEDezoSwUBMRT85rFBSM9OZkvlYCcHyAPlDhJozNy0rLdsA+1QqF9+CZ4Gfk+izylke/Dw8mT+cJZtyRSpqcX7dxqRiKsmCkzJGPus8CUWXe0wO8Tj42nh3syZixzcjwzPNY/MjyRzfRk+o9nsqb/eHrwWMasy8wtnTH9BbomTSXFLYBg+R0H/VqYMetuRm51WE2a3YnAEV4ogRnuBlGR5kpUVYPQrunReyU1FAlaJgnDjzSgYYbUUXWzgTeRheJNQkPNSUuPWaE0lFu4GTRqSTT3ENqpICUzw0t0v5ffUjbO5hYKpCOho8cVaOl3HZRHFs/+z0E/wWlBxsmiAgtzEjTxbntxDqTbp8EptNs7f0G7DhPqHz6ezvanh8dNb/+w6Rs5Nm4GRo91D/b3mKHR7Mh4pmc804t1MZ7JDqcHzeBotv94ejxjBrBAR6YrnV+HzqCk3xrYOFg8N7pQKC5AT9E/J43HZ/NkzhgzZ6gH6O2H+I2joq3Gnl7t8XlpsKVOGGyRh9A9wnBLuVldaYqjVbhxxzF0+7XoOnUMvd31OHqdw6r6Knap7di4PBYeF8fBPeI4eEJdkJbHwvkT9+sFnXzqXh4L94hj4JtUuDwOLp+8HxLHz2X4qMBfS25YHAffIY6D76Dj4OieEPQnhVwT5LYJdxUdCQ8YW4R/u3A9bEa4Z8jdLw6LH2DnhHteuBfIjbJbhftE4T5JuH8n0nlynD8o/xR80/4qdrt84/4O9F/Dngb+xIfQBBq+DlffjlE2x6WxsRCM3REau8mA+pX4+nkPu82T8PZtpqOMuCsrX/7dnGyEecll4hG6oFt8/KE30jPsqfQyyKNjg3uj64xpbt8l28Dq1NFYP+2orGp/uxeCg510f5/McHgH2nBi17Uq1co22B4EblBPBm/AGRtQNAOF85F21teRTfAnubo6Tr6pzi5eFMIaqoSxKmGNFcJiMCvFa6Am7hc1wARPPQnJN5DwWmc9gm1sjQiLJP2uiayDyS5mI+oWikvlF9dBcTV2qipJ4V4ibqB6k00w98T7+QZUziXqoUGYZ6JBvFYotU1k7s7Q6m6bM/0W1pFQb353rUq2JJtR8OrluaNKWOdF1sPOi6yjXRXDmthu1KaYsLvCM9bE9mjIRo4Ms73C+g15klRYVLlo1pHF6qGAoAOgAmp0rcgYREtZ0drYflHv9RXq/VFrhrc9YczEm7CZlYX52ttAaegxBddSwI3Nd+F70S2qGfKGHsL7zAJaDYV7eZWCv6JK2JVVwq66iAYXxSX0BhB4DZngCSkh14pl27pkS/tOCI+TySIrPHHIcw200N6E1O81lP1A+xYg3uBgtiYV5ZBgubH9CFCtd7BsU1AcmA8w1pfgxxQu45vStuQ2iOSSwKgdGHmhEdehRXwt0Wbex9qS3tyegxibKOnNQsyoTpfcYhcjrsQYFHvkl5GRoQ5o4b2JqPUwVpcn2S6EugKS6CBxhuG3jo3Ar98mWoKgYf6KvE3Abe1PhNhbScBhEnCEshcS2bHFSW63C9umhM0KYceEMSUU2gtCrwWhm3Wh6deb7BCih4wHPbRjtYODOy1wF4EbjTs98R1CO3Ykd+O6/yavcQz+j8P/ifZJEB8N0XkPecahy8YrBK28974elZB3go+rqKsh9ngI28E7jCar5YfYDaLzxweuNkEiaztx7sCHOhwRnyCUw5NMABW11D2KxKHXALW0TwNForyhHvJ2TwC7G5Wu7eEy56q0r1OV21eAJNlbJskeBSXbHw8UbWWSJCyKQ54JGH6meEMYWMPylYYdXe69ok53Afd9oo3QqxE2Kezav7H974F6i2gfTpkTTmqUi5FcHtlCaHjMqzd8Oc5leLzR0Xj2CWm7IP2UrfGgzUS7zG5NYXP7a7Dn3W5rOXjF1J4B16iYjThlw+tsO5CdHVp27GFl2VoL2XJrXimRueMgIX4j9sI4NS3Gqf0Vx6nTlGxThXZSEM3pAcNoH4QhC18jagL8TbKZ2eZSN1vjJg/Dr/IHACxT2FB7Bnf1LlGGBKP06vJ+yDU1QfDf4vAv6P5sgBXR336/x7jLiO9vm0vRi4Jz3c0xA5LFPB0A6AaC6gfCrMRxfQ/6wMMP0dSjZxNbIsYm1KKIR/ANksTjMlF7yDcQEhO1hzwAnsUyADCrUswqKcrybvCuDp/OO8DBSy2wi8B9xl2e+AHRAR5QHeA5+D8P/xfKeJo8Nr5OF+XgIQu83AKvIPASZB8V7KOK/a3w/0T4fxL8/11ZEuF7jJ1V3pdriEWMdCxkNNGTdHd6Yl9Yb77XLN+b9N5U0tbd9b0X5nJnCpNH9S2+FW1T1rjNYdu7K9/zUHua5aY4TB6z/8z8LO4N0kaq3CsM3CSf1ilxoKZdQX0ztdIOId89VVuFchvVZctQ26h99LuH1o7hRe+zVt9qDBEbKkwjVxJFHLPzplC+QVzDBpS1W1VpV8mC92vwAbHb1DgMgoIUWjUHBcq+nVq+ScpGFwpnyPSFLHIjN3eBa0KTCtMYBwZKnBcZU+SEYi+68RTXwLQVUt+tocx6QcDDoqek0T7u1yw1hjBIPKlI1jWik6dzCzptj/SbjJua0ALDvRbGDPNgoezC7EsDWaLQopiHFcI0KVDkjJt3iUBr16jR6IqwNggBIjdotkKXcFD6zfo5XhdCujmyMCIEEuZGGsjChS7QmEJAFSIsBOJWRsIlUjuR9OLpheK5nMplaFz6zci0aLEidg53B82GGajTuTFLMWKWYqgmru1cM06qaUGDjS9oTf089I6F87w1xP7iLbP/jPMqn4nzqjqxneUXm4pBE+35yk3EkAh1f7JxFWsk1+dq7xe5oaVpJixfBMosX2wWbqfDskVScN0nXGnR4lLhv0rQXS38PcLlW4lMbCFKSxJyy3CV2CpcxUaEe63DcoS0GCG3Bq8T7uOEK21H5GxbhKtYXrinhXtGyDMXX5VIJhpoJoJWCBPcYlwCphp8G4GGSxjTI3RSApbqL4HV+uOMT3LLZn6ayBi04YFW0hpYQMyHjGQQDyk0MFMgQhwRZvVi8QEeJh52vLf3ZUadEWSU9tN9Rls8QhtITSCRGLP7mpIN3dFYPWtV8/DGgSYybBeGWcoevvXAP2WiTcrV9AFTytWoy8WPT6xmcdtGUpN1gI1smUnPOt2zXvds0D0bdU+b7tlkeRp06U8+rw6m6+3aZkezFKGFbdHQDRIdYVv5to/0dvCJF/euYdscWz8NMq+NbHtCnl9UqB0C1SJREbaT+LWKIyWe9legObU41fOGWIAMoZlQBVqVis/N4ZqrYqCe7HeiroX6vG4VU6YyIZ4wB4XC0M7sXz3GbQYdPGvp7gBJcMpaD/JdYmUWsDhnTcT4Sxr4UvRlJAhMgxvYIYsQESHaP0pw8Ar69g3gpbQ7tCaFdvMohVQUIC0NCqFUCOriET0uRUJzaF4kMIe21DPEI/EcUhq8ILREeBilIs77zGEjtPaTItQUl6mGGEuL4G4RjG1DKCUwaewaRbVk7BouBLVLY/vVqAy/8Ruf8tI5tigltRVWSnI6jTdqbkoo46UbYRJ9gN9lhQVZryLbIMwn6hS92S3siKbtba5UR4BPv+CzyZWiHyiOqo1tN4qjQDEoKNpdKQaBYlhQbHalGAaKUUGxxZViFCiygmKrK0UWKMYFRYcrxThQHFe2K9wojgPFSUGx3ZXiJFBIixQ7XCmuB4rHC4rVrhSPB4obBEWnK8UN2QSbgIpf6xI2AbHFrklyp2vsG4HilKDY5UpxCiimBMVuV4opbclf70oxDRQzgmKPK8WM3duDO9JvxL5vg8swFOneZR+GoG+5mXqeZlj/StvzUaGIe92bpFtDDHE2eCBxtRsnDIhAy7T6fGyWgyBm0lVM52jplmZY8uPc7tGMUb77mR7zf9ep1WyoBIucPEz4SuZq+i6/gCdEpkYAMyZCcK1oKI8hI8DkU0D0FoQyCOlifpJOVPTCgrcAs0WF8Rw1mVw9KmSgVFxaQOY35y+M5ZEP2vKz5qAGfygDl419sBwby5O9yzPzS4t5bj6STmKoxJTY9b0LxXnlY+gbz91s5dE/SXbk+Vu+UxBKD/eiYXCzEYlPnC7MWtQhmOZOFejRW7XejpBlTEWiVl6NhwuzkDsA9TKcmzpxGlbBscOzucXF/Jwe6sniQY7wIr6DjsbT8bjHkfwcLyBFxU2EzuRhUay9FqIdpKiHMCwSHsDIwL2eTD1h8uJRkIah/MKMHuwd3wf/KdNz3NKRfRaYMkNKQP24ymrJoHupMDuVtyyDRmTAGKxV6WmbheIS1BEuGvBgUmFuie+DBPHYBVYl65EkPQJTT+YubYYj0ZIjt/XI84FWTskoIzksf34yL06qcIy2KHKYHCXmUGn4NskFPK9VWjqTP1FYPG0GEJ5dNANZ7vovFPKzU+p8EfnSs7OmIWw46lZXmyAOPXQvDo1x256V3wMIjy2dUnVgkhlS/jSBQRZKEaq3KW4j+uzauXZc1gxUqKhlFdisB1raOs31EBacWEwTvcU50BAOH84VcJsmxn1DubkLqpQaLBxHRDlCEYS5n3vcTVtGTqGmWHpyiitOmi8/W/DEFpWa1DHaWGNSveam8wu8rCq+QrFNdk1tT2z7u21tcskqH6HYY4YX8vOzuUle2eGs5gnCgreIDxWY+fPz0hLpaslvu03UHZVfs/BnstmRrMiaKnMunGxQlYRbLQmcqUXytv6GzfAuwlIDUmi1jq/HFyKUj78XsexZIf+p2eLkzaCHgufItNzk8eERRB/Uu2nmSkrbAbb6yFypVJwsYKOjU4l1o7kCjA4K2w3aQi1IKaQZ0QLHi6ZnyDTFMTdkEJ7KY6cuXptSpEBoxaNaixBbNXo02EKBPJiDnOY08798c8nNpmlEkI5ME0mD8spnQfjGUFThub9e+a234S1W5BU7OFZM7g9Onl6auxnqhm8Q8wdJ6Fn6yKQcnkdoDFGGj6PYjPrnYAjklnYtU7JTYhQ0TQlBocPgI4fVKTmwmSERJ70oz/g1KMzIQma2BOok3vQQ44UWTCZOA9M0zJkR7opux/kqVYMtFOu4x2wUdaxtMTNBZu1TwnBKbd2MOYOASYjjoNeRyYv3q2R6wgukYYUAj8E9aPx1mk5C4u8gHo0TdrHD5IgcUh+JihgSAMRbI/rNMdVAVFuomy7CIBEUj3mZIWWcF5rN5CSwhmBZSvrTXtASMrlJGHVyvCyiAiFpgzMwKs5DRYYEgLkSRcg/KhAeenes7CMCloeZp7n97iBVMjTnegEc5vkVPiqDwE3FAprW9aRhIoQjpJmex2PPlLvAqaVprA6YEOCJZ2UJXDX/AN8JNIPzxdIiAv5Z3EXGaQPklbrpep6A4ysFt0Uext9+IaSJHlELvjNQAyb8yPJotGBZ601lKMhGvYUEH3KQ5PUWDCH+M1SzkM55mzFvwJ+HEg2CQ70M7b+LrEs6MoQNAysQF+aIuDBHxOhfKpH96KWSPMleN4ejbKA4R/UdhGqmugkBp8UC76bnZyFWGH9lJJiMTC3hLHHMjHBQFkQ991Y3dxxdgAoqLOSHi0hVgg5mEs+/46/kY6Iny1NptGAZHChBLeEzddyVzb8EvReEGtyFvMck1JsvTYLa0CNEHKdhTI6hQvLBjAsUaumM6G3DBIqe1iQP714NgukjDEHcyjeBvBflBsqFSW4ewOEqBso5KxFR48hhadebyyQ8fvBATsPkCDlDi3I+ZtYvFvXPZotFuWIJLBappUYWi3rDrVdeJDI12L9YRMdH8NLcrYV50zgHbRXfdxSm/6OkNbnZE4SG7JyDIuUTRh/Si49Y3IB9GDBY5DT9bXBM2c02nJjYputt9F3NmpQwW+gV41e5mbYOSyK0bl1/TPPFPuV3PWHsUU9CGnTSV34EMMXJX3miuEH4G4W/SdA5H/1rFeHyxLE8abxB+O0PMVkGsOXngW0iXJ40tn8uqBOGsD1sjwh3Grq+VOSmy0Tz1tLMtTRrLc8Ny3PJfYLrkKCTZqZHBH1WuMeEe1y4J4R7UqR2I/h2qU8FU45PBdPCvUm4RXJ3iVPDq+iUcBCkoOPAQUA81SMwT5eY50rgefLI8PPxyPAhdo8MuFcCL5XAyyWXV3FgF3u9DHq3DHqvDHq/DPqcDPqyBL4qk/wOJnmEfVeS/kACP5HA7yXw7yorXgG8WAIvkcDLJPAKCbzKK5J8swTeyoFD7AEAEv+dTeyX54r7fEkfvcjoSzUDYdD6BAEh/uRqOjTtNXbjw7+v8sjNMQwTsQ4YITaZ2GF4tHjrJZw0kxvFrlFrci0y2oM/ey3jPB0xwxilTa5r7zEOGknwzpD3dGydUYjFjXB3s7EvFjBujnkNPNo8S6FnYrCIpsdpUl3zQkAfCnhLWbb+VgIuVBWw5CpgC1t0yocFu4MtaWjcOvN1epOtqSg7mzC5eBCyGkmvrkh6TidNNUNUxukU1kAG11RgYLDzdHjd5x4V99G9xn7kMAFaUq4FHnbrigs5WF7GWEoTzO9Si49hAjvYE8sSiLHBhPhSBdgD7fCLmU2yv0t4k4wTdapIQL6en2vro0c9kwyKCN8drUusoVsHZTEwKOkeVIXZRvZkJekWN5ZteHPBkRdF4ecPwVeh8Fntuy5xjD3FI+QI0+++5CWcvh0/gYfb8RP4Pk3uDexAIiHkZjF7zIMqDz3sDjtbn52trSCiekH0hRWTJziZLCebC6tUE3uax4bcp/jfwO70JKA0PDama4DpXZ7OGOjFKkqZu77kpVpKBrubR60i/nlX9iQzJOJzS2Rf7YlUy1iRPeOxSrm26h5jz3SvqTClLesoDKyb2LOcpIa4pWNrsXWJM+zZWi4Ep0rVY8kftslfe3Lb2HM8CTQTz7uXy/ilnahxOfTqL/DQ6boXelwIu1wIX+RGeIUL4YvdCKMuhC9xI7zShfBlboRXuRC+ggjT7JUe2/h/dXl/kQqyVyO3KPKIQLmFoNyQxWuIxeOQBSfeIiNTZW1xYZGKg0I16+mJiIY78zb22io9GfZ1O9nrPNTDhjAMO7ZrbOm+AW95+cgkH3bUeM0o6t5RuwZV6ajb2BurylaXuJzdV0ZR1gE2sTd5nK2b1+GaytxT/CW6KBIeYG+uIodbBjDWZvYWKhmX2n6rR7LuYm+rTgTSv11InxSJcPZb2Tv4zbjqCRxg77wI2Y+yd1WLtQNibY21xJqSUVT6tKX0b/XYmK1FZtPsPdhZ3C97y0aon/s9nabq+LvLe8b7PStIRKjLdvY+TyISC8WCfVtQTXtAclzDbIl7OvmxA5+gvJx9QEgkwp0ybQGZRBRLIhH5APvgRZRoB3vA4zZH7LQmmKTRV7EPCdEagcReTBDLUx7LEhDjj7APX0xhV26EI+wjjy3DLvbRSorrFkmbS3Wxj11kzAT7uGszw7B9FcKqZGEd+0QFQTB0f8XQKiyvYZ9cvpPnfTuPLnt4oOYa9jj2KVtFUWSoLq9Tsd2qqyJnIV6aXVeDdEEXHn7g4cVxpEuxsJqNPjBucRlDP+3BmFuXiSkGqpPsH7Ait1QcIT9DwalO9o8e3rNgP2HrWR7UehaQfa2a7322Js5p5HxFpT6rhgR7RYIp9nnswc0yBWpiX7CNZbBKk1XUz/7JPU4nxqmhJzVVfvvZFz2iKsO2qcvK1xhTbqz2OVk92pVGjn3JZUK+nk9lW9VU1spKZsWrjSe5JsHn/Ov5nL88oX0rSahaBo+xrzjnMIcr1AVuOZVnAjtDffb3NRotDrOvVxvLxNxDb2ni8J9tbo/r4W/QjKP6HJH3tt/0rHAauI99a6VRnswewnL+tqysEJTRtz0wcvbZKuN7nCgVglr8PqbRT+DDFvhDC/wRn48h+AjHttJhUaZJ0B/38M64wH6MNANlMj/2SSXYT6uMbe5hVYpuO/tZjVW5jv286ihYKbRK4ofYL5YfBWNQErp6b+HlcC375fJxd0Dc5btC7PqR5Qn2z+UsDWKJkzCL7U5gu606Wz5fE4wX2L/YxmrFs9bxeiUJirKdZb+6+PlB7eWm5jO/rq3omjW9liKL+cxvHl0ZuXJW/elvL74wXBRQsO1gv5NKH7Up/VF749gu6JybHOU9tKK8wr7LUU7Zy/7V1uBAAkv3t+gSlK+IrRzsZn+o1Gwb2L95Eta8f5Bn+I81ZviPNWf4jzVn+E+PSYb/YyUZ3sX+s9qI6dgO2V+dOmrfHxeR9lWPVC/Pt+OceeVRfCrKf9WUEdsq6s+eStvw+yqEVensj7C/VJ98uEx1XRXhMvbXckYm99O15rL9SPX5rZ/9tyeRsG2X6fPdgyvIzi72PyvSjKrUlTSjaiR3zag5iqUZ/7tSzTjJ/g/7xtu87fgxFpwQ7VQgRou5C5dH22KtsWbAV1oI+WMYS1t6PcW7POce5HxVpfGppgTl0muO3e5N+KE/eEwz46qBQ7wHvcNby8bQLexp3mWnNxe1xnVO6JVoT/ewO1eQ5mOw+q0oyi3sLm8iJMvT9xjWTLXcP73mNB8TBawoSoLd7a08xXcPq7p99QxvtYl7pdAqLDvZM3UtrjoXGGTP8jr7lypj92pYz8LoXWkmN8ie/Rhy62TPqTkf+9hzy1JeZvawjT3Pi4urKt/Anu/VCKt9A7tHJ3RMlmyEL/C6JO32DeyFOuGVVb6BvciNo9s3sHu9fE+bCIcF4QgS0iECG+1LvS7qP/qA4XfGH3aP//Ll4l8r4l/rHv+VtaafdY//6orxU+w1XtcNDOe0FGrFUDuAryUFWD5Ol4qzja2t9YPW66ppboVPGF3s9d6VfwngH/LeYKUXcut02tgbLYqr3Snusygy7hRvsijG3CneYlGMu1H0srd5K8wHt1jzQTEGNqsv9nIEO8h3ok+wt3tr/uhL2zzv8CrwnQgy96+1tyDj5QfkaoxX+oG4g73Lnpc17p9ie9m7vQnXEqkgZoS9R8sLvcdUlziHXDhynz1m2RaxPX7qEGTrIM0yfI6B9n6v6+TjvV6RzFreR72vXHyfJb6VsHsxLWL85WpmWRmdaCGjmKWVpdq+ml2fCCSjN3lv3HTy9nG8x+1jBl5sXc0eVxZg8oDHlwV4ecANZQF1POAJZQGreMBEWUAAAjqvM4Ls/TCH4Ns2IvfrUwrq7jKSkJEZysgHvLH1RiG2xgh3t2hn/kLGLAV/0Ksf+uusByW4ph01Gv61l6+OGqvi3k5+6kyVN12O9avLsWgMIKh8+HoTWSYwOQIXiidvj6LJgTvwNaMA50a20MKKZ7C7HXhGLC4xtZGvjLEZAwaLkeGs5mxLeSje8G1gTBncC3GExpNscHjab4U8hV2l8Dmk8LlKUZbbisJonETa9+LF6HpngSoo0t1qL9pYgJ/uGGiVhyoQK8ecvtYyYYBwrRuhMFQb5YL5ywQ7YtwYjzjlqpBqR4VEOpDRImSwoUxj2h3ZUkMhLzIcCt3KtYyokvjHjE97443qeS+fgrhlBwb58CYb3coNaKjcGFku0UiQ7d1YXU1ludnlyA1arsDXItijyleI86iUxQ+iLM2a3m4h84niZZS+rSDXFWWl3OFUzJj6mtyljqd20Rt1mpz8Dbbs2kqkbiIK48LOVoCS34btvqVTO7+rSrIjFmU75GFg4LQ61sx28lUEvrIlsC5l2GiPxu/9u8RU+rFKmIv1pRyDbllv1qKfLEcrsjxFtzp5G9ZJgvjupTpJUp3sS6mhtvtgDI22WHVSL60FQwH5Yup8gMM249ry2mjQ2fAa0DghYm0lZkJaNIPrI4uePjJQ6uw97vOiaZS/YG2tc+i8Ncr4RdMykxu7V0GPjGYR2vu8AyHWQ/OrexHstR5dyxDoHVjDDmPfnapnRxKSw2Z6A2agmfVTUIAN8HjXIDZBz8RgBFvVY1g2zA4l1FtOjewKbbDx4+MxjexKjkqagNp48s4oRLlKmH2G8Ai72hpi5XiHY+8rPMa2+HpRRquwjKD/KJfwPoeEg0rCLX13VpHeGU/TKB5PPQXjNbaWHwbHN2xWxbdVGT42lA0fY9ibgTv+2AwjYT6MdHXzHmu80pgCYWMiTI172/9/OO7hcLXj//Xh6k4sjk69L0+pOW73dkficehYqVkn7d2r3kd43Pso6BIqxBWCvBUF2VlBkPJSKOvhB/aoM0RbaXqOA5LLEAOheGBpVQ0iVxxH7jEeb64ym2Eaeyxm2yH4kLcivmbsh72x//2Wx3zbbmWzpfw2LjflmSOEtEtRh9dxHZdydYMSZOrEsioRR8Lc5GJ+oaeINzMz0nKGGbJAZVhBXtatYsmiwgXU1b15ugicn8rm5mbymr0AyxKNZW0msEBEZGqR6PF6+vzSorxNLI2cDOUWJ0/rdkgc9875bf76yaWFBZCH55gbJKhgYGJZezYmJUnXq23mOrkpTmk6VFmHKbMhaplnbbY4addFdYur9CaOuJe/hqgxU1POKHTFO0zhwlJJfW+e23BdWshP4Q1mLCV3MxxhKw/JmmyOWvAlGnxQgy/V4C4NvkxdgOVGDuqndCnDdH2drAyUzAB5Sqaf9EBYavFn8zNQEtqDPZF5vIW/MJcpTeag8tAybwCIQAPNRmHcA/VQBAfy3A3OUiXPmo0ckbUozfD0QvHMoAgPCvZmoMjbQZgkGBGNgiNL/HpuBA1UnM2PihgN0kwDVUv/nLA0EMRftBkTpjrJzC0WFvJ4txw8aMJBCO1qZAfqWMsTXvsmD7/B7y/NQ67McP+R4ZFsZqInPZYxQ0PHBsf7B/uH5TNOEa558r6vAZnPTaJFUG57B2+Zz+bnZtD0TUk8X2QZWg3zboa3xkYQd/JmUXAcxS0w+SdB7YH1VH4WGmF6Ea13IMRpotDioLJ7ZLoNZwpzhTNLZxRC2ScIQNHlF8gyAbo8us04AJQV9jt5/pgW9CKLg1z20Fz+nAANwIqoJc2+Tgg8IoPhxaKWRd3SSKPmGZmexkRMiHNmvDiGtjlM6C6KMwu5+dNYNLNniqXFDLZ905c7M49mEqB5gqJP5vkTUvMXFgozp6GAp3IzM2gOeSo/s5AHnZyCdoz9NbdT28tDhdVaNMCbR/NCs4X5UqFk1uWXFopoCCKfQ5MbUQGMLPCU607nZqfNhtn89CK/lH7tUhGN5yLiCNQ5WhJAYyboH6NL/JygbjaP17bxV7KKzhbP2XkUz+lR/GemoEMzQ2cKU1MgdRGNGpwqzZv+OcIbc0VRGmjUIEfFBODsUmmI7CH459EeMjiUQf8txNNcyM9At5DHzoBRaekSNBBGywYn0YUKlkSH6F8EtiXTu3jGjA2lT050XzeeGZsYzWQnevrSWXNNNjM6mO7JDGWGxylsYixz7bEMvoSmGSFmOhXFWz82nu0fPkKNa6J/eAyfTBvvP56ZGMn2ZrI2YxCtFWjIogsqeQHHu5DSZzNIPctE0mbPaNPoQvFsYSo/1QY9QdspUMaFC21kfmJR2qquaHso0Nff25sZVgab63kCpVP7b0ltkcntMyMcOLjv1vlifgs0X2gM0IkWucKHueUi3lQcFppM3gXkptDGxwI59aNQX4XS6fwUmZyYhPFutAijzmHoU1OmH606l7izz2RktXhkbgh0Fo2dTTno9zv8B8xWm38MhvQivRNXdxoUwTSn8hh+bHG6ywxOFWYKi9BH1GF2TBMavQxqJMtpU9AqlU2kQIH8oMxKFG5+p5Gbaj4MuNxiBpJbsKy7kR0kzRwcmUTyjCszScVTN5kb0Z4C7zW309zsUBvM167eIe0pmCs0QNWk82q7sg3S2GEGT6Szw6CVZoSHSnshyhqQbqfJqMlik+coWn+zWWyymeVbofmmR2GxyYQRqgDTSKwNZSHJk4XRlcOWFSxoFWeKc6Nke4abaSnMzBVxqCmp0LGlaRka4kZcUKQAjH1QhTCMLC6gzqFHGaexrC35F2jyIewFwtRFEy3KdU/FahW63T8H+StYUioDgwYCZGwnIiFhj8nVNNNKbTI1coUfL1q9GU74S9yqXYmKoZLhJjdLTZqdpQp2lEI0r5m7gOMyH1lLwqCPZVspIiFORwHcDh/OuWo2veRiNuoiTS6FEJ+lYZkpUJlbWs4eUwh6ElEdHOQSX5yVphisD1SPhusTqPVgYbp7Njd3s27cURlyCvNO60RhinSdz4lwNVjFsFOwUOIMAeBcGgqlPsi01ZdGC6VBGOmV31+A0WMYXw6AGueROczjRwCGXI8s8CDllTJaeQK5SqDXMADM4/yWlqdqTRXV5nWYB93uUz2uVCxznbNkOfL/VWNQwgCUbhPKsqXmahbK1RRUlC8QMrIdekpyzSBntF5cymJb4FOCRh46qM15RQQxUpiMe8dwcc+ZGvPFkjAhZTMy5Rmz7EwF5nNTGVyLgEt7BQYAxKPcBFUEBp95sVdARqhyc1PQVgNZ7tZzv+x2+KJdLfSx0KaEBycVwoJVVfNVYe7jrTKmeVRNazgRJ4ITx+LckFhEmTBCl8SMPUzLb+FptNHxFzwW8mL0j3Fjnzi3z8C8/wzqbCMPS09ZBhQFqmdJs7C4kD9ThJUft3sm7Z+FOZavPgQJH4BQDu6DtrHEzWGFVDlhMc3DtB7qa5ZXTxDWM7yeAMN7fANQHJKrwPQ0xm05UyiheS5ZBQvCCKxOxPtigenOQ6+WV4tl7rVRiJrHRZUAW2wh3ReGcmhBFhsQuqIYpFw8/4ZYq009ZnbH/KVZmEKbDbTshYHXvtPFG4OfYNOHm2O7cS5mvdHdhvtCU23WtlgbKHKb3BTbY+7VlovbNaoreZRdihQwAO4wo2pJyWsiZvdTkTYonCj2JgeCmyB0MS6mDFaSYWIDf3klSUhMGSwbZKHFotyCCizSPEBYu6znPtm72kyVGYtFkVBUQnJYWyxyE2zyRRThF8GajTNlntm/WMSdxjA50lrcYpGsqnHLmPXcJ1s++s7lF2jG5rCQBsnzvR9hEA38whIbdyLCL5VjWaNvdbq9N2njDbjyiBEBWFITeT13rSLh0SMCEHgoRMEvKiErh8fwMSDKYR3uJQAT+MXOmLYWRAMjWLSqEMK8c17O8huT4dbE3rIFZ7f6TJbhXEzCkSlUF5NuyjpqiM9w0bJbEPskBMxjChl7j7uBt1X0hDS69sejne+9WI9HRx3vvsQEXZMwdtYMvoh69aUVfA3i1ZdVbK1w7Q9Mc3NvSN0OvhZl7G2LzdibNPLWooy8JYWbIncdvQ2DXC4hY20HBXVaUPFHpDeRUTekGgDfZvV09Jiglu++8PddtrJTwpXvu0wJemm8TRptO0OGyDyWkba3S+BdHiIJUcKIULbUHuDAZvZhifmMBB6SwPcl8CMOtLBfSuBXEvg3CdwnLaW93SswH5DAAzLoIxLzRYn5vlcYcPuTF/w97D9kwHt8UlAJfNwnIn9KYv5RAl+UwJcl8BUJfFUCX5PA1yWfX/hE2r/2gf9a9hsecC37LQCJD9/hSQygRQlvclMqwK4FN8TfMExuxcNYa41ULGRE+BkmT6ze+KAnFjTM5P6uD3nwqNYBCF1PoR/xoH2sbjR7oPFaGY+PEY8t9DJKKBUkkwXJXfxQmAlUjKjeA1RG4hIHFQCfQCAASZ9G1z1aD1og4JmcJuo4GhRooo9yO+l3d3IbfvBtFrcZzJgBDPCb7z5Eb3zACCV2SSbVIwvqBPs0FyxIV/dBMg+GXfKAYSYuxRP1POxBBPYC8FmZjb3CNQXF5zAgjnYGghDx8xcb8QsXF/Egv3mPwQVR8l+sJd4evFLO6UWCAWa4069C+g3sy1LAryBQZ5XbKiyy3eyrkk1B1GQ1dpvY16RlGf6Abii5DUi+TjKhhOFEB7/XjTG/ac+RPSfN/Ir2QQiOU+xV+AJ8B/s20XR6k/5UE/uOTK2OfuPJbXRuOZKIsu8qOvR3aP5q8VKsLuHr+56Hrip/D693ezvRn2plfu3Jdn/yUnqyHXhHEzdCHFBJoN2ZCrEfeMTDl6iUV2qt8WFPrM34oSe21gh3rza6oFU+4qFziabxY/4h9ie29vpTj1LqrVoKdkF8QhBfdbKQIAshWRe/jr2bbp/wPKYMvFpNGW1hNyQa6QLJ9+gQTdIP8bZh6Ueh87rZvXQMSI3Kw6kf/AKK1awbMU9h5HUFvVrChQ1AdOxVnJGdnYKMjefnrdiVE68cv1ndCk/WJS+TWtKsLmcDNiqxI3izmlGR/NpDzm88yUNUer/2gONhv/GQXuGjN+uEWsVizhhNSskux5vCDTKYpyb5EaNmvKHbIDhxMhX5OoxcizSuTAD7ezv2Nxbrcbzu6+v7g0dySwC3P3g6m0AjV/H06Fw+iHs5JRFkTyb6qgIvOLlyGdvXGl5k3mwx5wAIVAv3qjk5zf79UaZZa10O4N1ihxS8NlQ1/MlFzDLNRF6TeG9YSf0brfxFsVcpoZoTieK9XuhP8SG1B4yGxF51aRd6iTbBlvfMboN6JDGIEfgdtj97km0k6589tojQw94gxPFLwm3u3PaqG7uQfLSm5P+iJR99lMlvZHOyH3ErLj+MaH+VxYX9y44Eunj14b9pPHnA8ALJ/yxHsh/vv4JknXwI3UFDqUXiPnvaiDdgRU1B3m7z0jCo5joGzN2e4hUEuyp1tAZ09xYVPTTH+0iEqnbRBownt3vVoKkmCJrYeLnXC2JoZOX5F1Qb7cyeip5NfXeZIjfeRCveWuVl5LdyGeG3WQW++pD/NK+u2Fvwpin3762cxx6Nyq10KCN3eWUtuTPZRS9sy7Fs7zJjzwF6NVNS1zpircaro1AEovzupjLBfIsAqSZ6wDMqxXiGe4wOvHIpY1QpakHHGVSle1aN/J5VE79WvJgJaKFpe7ncDJrXc8rwwOe5XsEnIAbZbbpeteEVPJw32KLpFFvY85Ht3k6xtqqkQRbVRWtQO7unalPDBuKgeYHXpaPRaEKSJmSjaYCMbxMkdaK52lNqhIxzCpoywvxqR4JDdj4d7IU11u4La6rdy9mLLH7bkW5zrCnWmAxgocWg0NZToe21RW60R+aJrDTyKLsXryG+2EsT2xd7aWJrDbAv9q6YYwd7SY1l85Iay+aly0hYNfLLLj7yLnZSayWuhFqTuYa93MtvIohGF4KoTRQ1wl7hVSN9Qmspdg0+UjMH2XcGRWwAXumVC0gvLF1f5V2R5K9+lJJvxju5mOA6iLVFrltBKrp2G0CpfDBKvU51VVwBLH+1amB4U1blBjHbbZhqcQ/hXVn3GdsamCm1iEjhmKK5TMW9Fm/Rku7wWO0xmJOCCoXFXPTPaFXHpkvLshzFS7WI0wUx2Js5MrUTb9R20N3FP9OWVUxtWb3Vq01xgadsbXm8YluZ4zXI8XL3xltLMlcqwd9Rg+A8agW+ZYK/82IFryWZK1Uv8y5Ust1CUd7ttSnKbq2jeI9Ftx3plu3ydqu87Gf3r3wQjrP3ugzCGJLG268tct0lXxCoS7bVvlSeQBatkoXURVgatT1GC+aTeCdVX2Zu4Au21db60hL8qpUsms86OYsF7Ea+gI1bCWjZqi2FqjkaZB/0OmNcrZd3q1HnKnbZ/i2fr31IXxmIuvUmhtmHhdpH5YDk7xTNwIPNgDqSKOqO6j+ucZ8bb+T8PvqY8mPsY3LJIXYtd7KSWoOo6VmlgeByjViuh8r3TcWghVH1YavTFplvulZKaBf7uFcTS+zNV6JO6dQ1jmkd7BM1Lb462CdroutlS86V0kXs/h124XIxu4BR9imlnzijbWWfVn6rl4IOjP2DxNc9YMTA/xmbn7F/VLNurEUTOD3oyqmVfdYVv4N9zqum3Bhyuzdq1uOuT9yToOvxGunnayWNsi9ocjaC/58ccm8Cb5qE4av0KNdFbXryypqmJzvZ2drbR6dGvLyKf2lFKv6lFas4Y18um1l9ucaZVTP7ite+e4Ucm9lXvfYtNcQeYF+rNAuz9qvqrP0qnkI/+3qlWNsh1pZq47NjsjHCvmFjFZKsfMSuE9h1VGMXjKENM43hNPumtq7grJafH648nRvZt1Y4B11p0RxiD1UrGv5NxCGdNUP+9kWUQlWWR9l3VpjhKhrUwQ6IC8G4orlU7Aw8tWw3cQN7nLa7IPfn6rWuS4Zb8bHTZOy7jvZzOfuewLQzXiSqaLvFTOsH3kribmIP642vgf3QK01ewSQqyddCPypL8ZFHk+KPl0txI/uJvq3yU154T7EKbzv7mZoxAMHPqdME4Bd86acoG5yUfFfXhRJ5/rJmnr+skWcH+2drv4EfG8CV6kR5fv6lPMMA/KqMY5T9WhtDUd0sf7Wus5v9BnX8t7zZ/FbO2X7rdV+guM4v4+x3PDe0PaWPp5vY7639F3FGgfr9f6VS1EhkUbiT/GF5Ln9YjkuK/ZvMj5//in2Fqt+hVRz5Ib1puT2iDezfpShyYy9kbbA3JtawP1qiooj8szxOb7eyP6lhvuK8GAdGiwyUgTy9ZZuafNfoP7U2VWEKpvjutVFX5iwmbhGYAP6XHGGZ+GrUwP7slfZN8Xu363hPyDVyN8abuKqcTxD5VJpjOONfwf5iFcgOXK1viTXHYsm6ChsKfCXYqEaOv1qxr8LYl7mPWcuzlCv9LPtvvSRXIFKlWXIEMvk/ZZnkcavw1TL5v7VlcnmWVib/zyWTtYhUOZOXs9t82vD3FJ9YQvDVW5DdLhGnE84pZANEfupKIsu1Hx6q8MKS+w4fNUs1YwSCp/EYTexOX9l5mhZ2l0/sVIbEc4qA7rvdwJa8mj3dp7qsILubPJiMCFAffVTABvYMK4Zj7cTHfVt4BmDGl4bPsBi6rblEV7zBTkfx9fDV7Jm6xPyzhhYgJdYDnqXHeLbKSps9gOfRLarkWRbVXjyOqM+RFPrntAaY2D9ew/OJU6oZVOwGUXXrRK+/Tc92h1ssORJrdJ2KDuV6rk9MAp7HAbse2mmf7xOD9j0ccNK+oKwk6qQARPtCHx8evK60oYq0L1oB33LaynzvXQHfctrKfF+8Ar7ltJX4drAba6zfGzWWy9WvTlu9ftewl1iyYtBLfXK038Je5hZE4MsVVQd7RcV+QWRE9B82OmrfevgeHu7aT0g6e8Ow0dv42TdlXqnS5ZuNr1Tx9C3mm9irfBVW0Bf50aHyKPJk9url03r0nyMqC3CcvcanTrC1PXZzgJvZa518H+2EpXJiB9j5BP8K4dwkrKP5rPtm3hXsiYkKxypE7FDVrcDXUYuzljGWf5nvcr6y73K+2naP1rM3WC0nwu6XB6ECycv4MQ0tOIjBNPJGYLb+BquF2OPpir9aJ9PjX8lyjhNfTY7Jc7u9P7GmvdjwLimLHhZz5nZ7l2WPtrcsmupB1WZ4QJ9c73GJIPpRaxqudQhXsTf6HEfJVpSvg+Xxa8pYO7tPn/1VOLthoxHTC+e2qBtNwHXTUuOnpivlI7wbjRu/hkQLe5KzD8dkrlNo5PAmPikNsjf79LK/x9irHXN+i2+5Y85v9SHrbfRitzw05zyTplVri41QibZeoVWe9N2sreXB5ZNTQ2Me0pm3s7e5TArsA7wbjXMS0M7eXgOfcppyPu+ogU85TTmfd9bAp5ymfHLzLlIB0ch+YN+vCWh7j+9Guow7XUbRrWb32ybu2lG1+23Tci3gvZVivNc9Rgd7nxWj6qes91kMqtK9v0Z+76+JX5R9QDVX/IQUZR9E/2HpX6351S0NDNjEPsQHHApybprsw2sTnTYS646HG+1m9vfY5bnxss6rXWoRrexM6VGKKMf2JyMT0q3bPIqDW1/gPmjvZB/28X3yRv7d19q2te+P8/L9iNRFKk/GPsrLRGFa2ceQ4oh9Bmkm4uwTnLIspJl90poW9ckZQJR9WrYOUXOW31Fz/8AZB6rUnE5Sveaa2DX2ORoX5jOYeL8ljOV3CPMgT6m/ijA6SXVhWtln5QSqziqymMQ7pukGFOXnrKK8yprUfx6pN9mpm2AJY+FT9WxcxNya7NCpNuhU8qKdFt7MvmCl2WGV2D9hrAGrxCy/o8S+xItjoEqJ6STVS2wP2ykK5rBFyB/Z1I+GK+XbrugDNsbOk+Q6ZX9VymZNhoGaZNir6I9qnOkli7ImO/iA0aJFGFpphOGVRhipLcI29g2s36O8EqsQJjXC2ljvYN/k1b8885SNtFbJv4UCDdUguUVYq+QPcXGWZ56ykdYq+bdRoOEaJLcIa5X8O1yc5ZmnbKS1Sv5dFGikBsktwlol/x4XZ3nmKRtpbexb2fcr9Mjfd+2Ro+wH2gYLTvp+UMOEx5tYq9OFxZGNdvExrJUHOhJTzJeZJSnmnM7JPMoedkj8cI0SP1xN4ocrSPxwjRI/XE3iH6pA3HRbw35k35qz9uOi7BFH5h6pMXOPVMvcIxUy90iNmXukcuYy7Me+ClfLKG8/8SnwpzT1db+jdQrZLHPhzJXdCu6BZdjPnGv/ixP1Z77lLqc9WlET7Oc+y0g/TFxGrQusO9kvfdaTM2qzrUmUvvgiRQ/joLC/lML+RparOAorP11dBlJd4rab988+N+y/+CS3RvUd+1dVBHLP4E0Yx72+L04etWlbllZ7M3sr1Yr+2kywPcLeRrfeyfh2sL2VvYP2dIgIrWX85f+CiG9i77TuLiaJ2Gjfwd6tIUHqfV2HT95V53LBr52JPTnMWtdhfICAsffKe4Ico71Hc8yYjntT3qRvgNE9b6/aE+0YiAmMOgQJuHYnrmwfpANfptlrrI4Hga3R7TVau0GrWITf9nFfdHnav4OPJNSn1Ffz7vEYv+rgj4kEYmIbL3aIJRIHhVK77BNvoJu1tGPAf/HGRZJSah5oYJvUl/lWtJZ+5cUz40b5SUYOruF1jqAhQCz+gnGnEV+NZdxtxMSe8UCIbUW370HfQBPrAHA1rU35hvKDHkDSZSl1TcrX95APInVSET/kAZDmowBmBUt8zmA71OaalHjGI7k6mQA+eyj+anUVDR+lqIMKmomvBZnW2CjWE8/7vGXriLr2z3ni6ykPJqyFA+wAUK4biIpciPMg4L/U4e9y+C9z+A85/Jc7/Fc4/Fc6/Fc5/Ffb/PVq7QpDRVZI3X4dlNI6zMshz/4Bkx3m12v6OrJh1g0E6/krGA2sx4p78j6s1V4IXcNB2tTjIJU+gFhKY8advng7lRM+kxNlQwm+ShymWo+yEYd/NMG/4JEfmOGzGFu4Dg0KsP273vimtj4ucF93zGiNCdMsMbH6hDpRuG4r1LaChbROJPhuOKnsQEJcwVonMdY2ycAG+QhBcl0y6hLO2PX2uAON/Byf9MNgMLCVfzdW0WMun67vNAZaHWTiaybgb3TFb9A38G2yUfsbMETLwJcqjsvStBVFVhQQtpiQ8aAnvh3KdisHdxC4x7jTExcPAUGMTihgr2y6sr3d5DVOwf8kcnlefXxnCrtFEEVUBpmmEfAMikg9oSF8IdHdWnYmfAMbBYbzL7/WqaLIHrp1YIsNU+G6tujHNZMWELPdiSvrx1sdApXv2w0c4PYyKp61dxfnoIi1QvMeA+t4mVYIbWOzELrb5SMdNyXkHVjNb+WXZ2MLv2itekj3BHbxC9Y1CruF3SLEWahC1Qh9Lz8YwFO+1wsRS4J9wbXQpTA2KvWtwp16D1tMuN1q8FXkbqevpJHVqOtWRF1JdStJ7l8R90qleAW/8eGUpcYqvsoRe6X6vIVfWFi2ps+uoKYD7BzKNLCbf+wu/9DtrSDKBUF+axXmB/i38Irfwd1jxfnXPpf+ZQv/TLZMlnbZqZYp1B7+JaDWrwDuTNQQMrCePYWsGrkTwoSBOhc+YQjxGqK3Gf3tbwsYD3rje+RUINvEnsqn+3eK6f7z7vZkG9kdFhJfCxoEuqfZ6T5zmycbY3daSLx99hkv4O6y476OiTzdHvmTFPluO+Ej+NrbM+wJ90HcZ9rjfhriNrFn2ZG/IOSz7cgvEvI5duR3bsf8PdeezJOA7nl2ui/cjSI+3y7iXzAv99gJH6C8vMBO+BASvtBO+O7bMOUX2VM+D3T32uk+dzeK/WI78qOUl5fYke8j5EvtyDeTPC+zy/M7rJiX23GfRBlfYY98H3F8paO2qCheZY/9G+T4ajvuJ4h7jR33IKbyWjvDn1FJvM5eEr0Q9/X2uD/AuG+wx/0wZe+NdsL/QML77IT3E+Gb7IRfRgnfbMe90weR3+LQ7jtg0QqLrm94zFXw1xTzGtlYxBhTq+3f+ShA/lUgcEU/SqR7cr+vmNwqs8GG+ldf7Ofd5ndbtAew8LmQeBqN5uYmxfMg44AbKy4tTObNqIUZyi3cbBoKCpHZ3vxUelHZ0jUXrYjyvQujd0kYjjfzs7n5EpoOPydMYRtTKkxLsm4JX72pl/HoDZzgGUiSIi7QKw+V38piuoVa5Gq2ysyhRVktnXrpp+xw+7ksPXXTUglyZeExZdPMEZ5ef2jszS3mQRaNlfUClXzNS3tRiV4UM/qHD/cP949nzLrrM9kReh7oLL7GI54YM0vEiTJrQsHO5Bc5rJlIj+ROlYqzS4t5bnE2ehqilHrkU1D8FTL7eyGBwlxv7kIJ7fj3IbEZLcwNFSYXiqU8pD8l/LMQQfhD6J9bwkdFIoW54dxcUQsZEyA7w0mspJvnLEoLy8ow2hsR4hUv31ThrOkvTebQJLPzpS/tia9C6TC+RZBHW/n9c9MKHs7PkMF2hEfJUPvZPNmJB/XCt0QmCyXt+RqyzSyEKeHbIvIlAvUewCXuz53VTWEx+qnEyf48FVFQFk54Ti8pyeuA7WUE60E1yya0ZtC5pDRIGHSOcddWPY0cp9eLMQV5PIPFZi7hYzb8NaDwcHp4ZCzTMzLcO2bWD/X3ZHXf4GC/9AUVMNQ/fGw8M2b6+0aOZcfMut70dWPikSszPTdXXOQttV5vX/KtHD9/IMefyWZHsvgAzi1LhYV8aWR+sR/ads6KzYagFXXne4uTS8gB33zI5vGZLHqMxUrGQga6+4fT2evMwDg1CjOam51Fi8zcC8poRRIU/p7B9NgYBAwPj4ynx/tHhic4xhjNjoxmsuPXmf7D/ZnBXjM6ONKTHpw4ns72p7sHM2bD8fTgsczEaDqbHsqMZ7JmGMpmbDx7rGccsmUcPjbcg+zMBslo4khmHOksxBhHhMavG82kB/vTUN59C1pPEZxfKE7i21DBUQE0DRUhA8W5wqTeN4FeQlsQvpbR/AI+C5ODTk8jCs9baNNXXJgxfef2T5phjdoMnF6gHl48ohMdz5cWdXGwO6VXWYrQG03PYg/L+x3soNMlNPBtNkAzHC4ujuZKoveuB4TlC6kM8G5cGMTWX/LTH8Hjr/qFS4vFhdwM7/Dqz+h9Evg0lW8SHaVtOGCUv8WxyQJqyTSk3MIx48XMeRzGZJuIcfSx+fGiwoXP5HP4ZBoNDv5Ts8VJ23sgjVqwfBvA9Zk//Vkp9ZrjCz28w4YybYMMt8lxpG2x2AatFvu8tkKpDaC2XNu5/Oxs21QeerP8VJt6YaXtFDBdKuXbgBh/gUMbDkKltsni0uxU2+nc2TzQ5OfaiqfwIR18y2qheAbJ26YK09N5fJeRR+ODSmmPy2NWL/GMLZ2iYbFMVOL2/6GwoRJaeKfe14SuUs4RmuyTlB6quK34CEGl2Yt8FWpPLc9CbeEzoj0oy56K8yH98ahGfWLBxdmsi2Ofb1jCtLul5Jic+Dm/TcjPxgMUcTqnc2vVuWkcQsSB5jBrJReq3km0P2/Fb3bG57M7bNSuMuxRzV3j4RYMnSB0NpwHl8DW91ixEzYJ7B3Usubzo3rHcHQx9q46V3P5XmEu38PqbGbzPcpcfkS4TvP4LcJtJTesTOLHBX6NcKVp/A3kBmwm8tHdJtxO4e4U7uXCPSLcPuGOCHdUuNeSa7Drhfs44T5euDcI9wnCnRDujSJ+TrinhDspDORLg/gz5G4jP5beafDtYAXC7hDm8newm4V7RrhFkfsnCvfvhPv3wqz+bWji3sdu95h+Yz97KjoH2FM8EHYJu0OayL/TI6jvkphncCAIC3hiGKTiRJLnSpJXeIQF+lcht6tgOSoCXiOB10vgrZL0Yx4ylP9xHtDDPgFA4oOxRBdfhuOG0Bbh4kckA1z8DmagafV6IxQzjCbaamnGrRbzAaMu0czX6kzG5NbB1/HFOtP4nQS3WYa+tEroNXz5HkhFcM3Ot/svo1sk9HS4aaKpay/ztFWQKZDoxzU8f5E5k7yiHSszo3ED5JVkTKUGVsPsIErWyTeEL03IiykQ7BLl6nuMhHFNzDRey8+/v84D8FQsYJjJdNf0A4Yn0SsyBwyDF5/BIZcMOjiuJJPX0vv2AUcm6XxRbfl8Q1k+t/BNCvzgXVF5jMQB1pPwKvMw9bT7JxIuj0AJo2E9K1bzCmLt5VskMrEoqXWwQixHhOaVRojUEqGd8Y0zo+vTXvos7WvfwQakjHSWoEpki7S5dtLI8qRHaxfgaO0CHK1VgE6+cViTBBrtsiJotDXI8KIVyPCiFcjwoppl2EGfmmusiMHaK2KwdgGGaxdguHYBhmsXYKh2AYZqF2CoRgE6T8Co+yZPO/+E7O22EXUDTfdBvQ98syfWYbzFE9tkhLvXG92xqPE2Tyxk1A9g4NsRfIeH4nqJ8TuRcRgYh5dj/K5qjN+tMW4lxu9BxnjMJ7gc4/urMX6vxjhCjN/nobtx8L8c4/dXY/wBjXFd50lg/EFkfAgYH3JhfKnO+AFPbBsybgfGG1wkNpExwh/yEOcPI+cu4Ny1HOePVOP8UY3zXR7toFbJ8MZ9VCJrxUkEPBkVBNcrT0iBfg2E5dc19DSzcIIPtHzkutcL2Gy9Op2EPn5+RZxgInYAinTbs8Y2Oh0WPOThh5dooBkwGEvwAwgGa6SZ2BaITGEn75CR3VV9FWWk3paRiMhI+DHISMTKSNiRkTDPyOoqGYmsJCOnDF88ShlpAoYJZATu2hVkIKSos4KBSpLS8LR3GZ/yxhuoT8DzRLK4mwHCs1qsr9VdOm/7AJ5EaoSYMYq5gW2uNukGUTZJUUKsXYCy9O42jLuuiQfaNqbkleCmQ56N3RE6CUb8eB5p/iqmdSKPgO1K8M+2l5Hod7pgm21Yv+LAsU10SKw1ZQAWv6/H+FG4KyjiQ56BAB0KawX3KuFeLdxryG3mU04HV14jTiyjE2DNaoXhBboeV/l7XOS/04NHxPoyYhmwxA4nbqFThc1YS3GopX6qpQE35FE35KAbcsgNOSxm4qvxTNUtNjluBDke/zdMcg0m+XhbkkchySOPDfcEcj9i434QuKcoTmQFjNYioyidmFOzcvCPJbRJNyjNOLYrwB9LaHNrwONZsgi4J8hV7W8gziFJSYcLaIk5UM+us1QrG2bb0dd1GD2MjkI3d11z8il12GRbsgbblaDpB0C7FbRHQXsVlFTQPgWlBMTYfgdfRoce7ZhLHJgQ1/aTt9VZjb7SpIZOyeHpSYOD6y1wgwVutMA2C9xkge0EXmfc5YkbolcxkpvFOTtqaSDVZUKqm7zG9fD/OPh/PPzfAP9PgP8J+L+xwmZB+4c9xl3euAnJbOmGaVfU2KrWjR1d04jYphDbEeE1OhG7E7BbCLura/Ye45SxO/YEYy52PYzPiNzTNS/cW4S7INyScBeFuyTcs8I9J9zzwr0g3FsdOcDDIxnDE99L8yocq/D8TNI2Vgndy4qwSmPAZTh67CM+fPQQHKBo8XRMEAbISlGPgAQpGndCsSA/BHPQbfjJysBKjHYbj7B4EsehgY14tMUQZz8vTUWhoWh+PDjubb/ZCMa7aKqKnSwdXLlMjZrUybbwcyoWlve9cgBvzpr8EAzMBKLLTkW2xetoiLSG6w5kFuTHXloBeLZHG0QcA7j7sF41UU97O54LOqQqJSQq5V6PVajtERy8L5eDd3vSmIkH27BNxQ75Nj7Ho2qyo1IinwHtN+JXdPL+Evk08aG6C4fsejlHMekwTtcqPIYe4WdwAgBj0DY8fkOV07UqeQX1ahSdIJ7bBz21DM8hkauHPKB2MuWsEKZqWQXuMbbaDn/IExm9sYiRgSlzP02TP+mJfeNjHvPHGf5dLnjz6YXiXLFk+s/lT83MmmH6Gte9hN8/9KMC8lQGHRkIFErHC/lz1udwcVSA8Xi9ucWcPGsxm5+bWTzNTwCYpy4s5gc5Qjzp7D+Vx4dv6dXmBi1pYh84xcWgeCPy0AYwp1BzJr9IzxLvT8mHiutnC4uLs/jqegGEUgQHD6hzIAbgQJR9B+VjwgIBPIIc6hJPJ4fwnEOBSCUIRIYAu0yzZCUvPkyWrPSMkkxHQJhASSQQKlmsSxbrkmRdL/jyD6ON3deNZ8YmRjPZicxgZigzPG76cxQivpz6sFzUoZbS0ikRyh/ErhcicVqThLJgmUgIBVMfYs/3n8nNqG+5XFQeGObCCgYkrpCS4J7Z3Jn5/BRHNZzInzoymJ7kr95PF8WBBXkOpa5UuBVfRr4wD2kQqdA67hk5dVN+ctFsJU9PcW4xf34xvQhRT9EBB39udv50zgzl5vBV5EIOMFP5eVCsddO5wmz/9FDupuKC9rm5J3cW31nfiA+25xcGi+dG8fnp8WJfYea0/lU6BgRn8IPO/GwBMkKJtOB3tfzC2XzvQu4cvt/N5QyWFvNzk4VZs1GXMXOWjpOkxyfG09kjmXEz2n2su3uwf/jIxGhfeixjNvSkR8ePZS1E3fDIcIZ/IPdNFc+YgfxZOgTiF6zI248a1lKWEKEjUNOLS6Uh8aE3ZIUwinAYT42ItlRPmNGF4gwgheRZaH35BUHQoqEgryIxszHdM95/PDORHh/P9nfTcYyoQI1nTkJ+IGPCf2y4//BIdmjMjNMxg0zvBOQ+M3Giv3e8byKbHj6SsUJGR/qHxyfG+q/PiBB/ehBKxTTJmejuHx8zA+nBE3jioz6dzaavm+g+dvhwJms26z4gHO6FEjUZyJfu6QPOY33p3gyeFulO9xw1/d2DmeFeM0zORM/I4EjWbOCe3rHxCZ5oxEJkj3RDxZE3c+0xOqphNtv9IlLMgcWYgvNYtsfOGREYHurGwxyUubrukZFBQMDvxPFMT8oC91vgAbOlOztyYgwy2ps5nD42OD5xItN9ZBDyw7OPBWjWC8+xsTQUZB12G6avp+eEGekZTA+NToyPTGR6IaSRsj/BSwr7k6TJOEoV5rgk6hnMpLMTdPgEFJdQJ7L945mh9NhRM9ozMjTaP5iZGBtPjx8bMxPoz2bGsGKFUkygJqQhn1E6r5IelmVt+XllxMCPcSYGR8Zk7kI9xwYHJw6nezJALsGJoZFelOVYNguiT4xmR45k00Nmi0Qcz2SBj9BT0wvZr+vN9GTNEP6C8OlRM9ILHem4Epv1ZkZBM63yME2OoQoSoXrRcIytaAQK8g9tediikQjo6gVTPKpjhjnMVT7CPWPjmeGe/kEzbvO6iAVtb1ymaFVGoLd/vA/P9/SOYKGmoUGGLNUmkJd0fe91w+mh/p6J3mz6hNksxpQJW+Na54ZVjcyPyj5oBg+nx0gW/+HBkTSIR84EVHdKg/dr8AEJk6Zb8H4NPmA2HM6mj1DqvA2b4cN46kmI1q55tMKZGOkeyPSMT0DWMsvR4Akoc1cFGqm4Pce6QdfSo1z/tixDPZg5nhk0m3QqWVrNOhIVAnXP3KRj+4clXq/uSiS9/RA8Bn3NmLmjAslQ/9gYDjAat9U66bHhsWOjoyPQUnqh9rKgMWaUnIk0dFPUY5rcT7mn82UT6d5es4WgLOQ2OwYN6Fj3eBZ6fTNCaOVtPpIZzmTTJMgolmEf9PJm4IjQmyPZTBqPopkAZIZ5MzP7+o9A4yBFMgjGKG39mCGUX5yWox4IoveKjsXcUJmCqrkOSgUaBf7yxu9Dvkb/sFBCCe1X0AGzvn8YmnU/dOrDx4bM9dKnFyCeqeOjQqMMtlARieKdQwC80CmZdUczmVEzMMhLoW4QOkrwwdCYhtGMu7K8BLbFjkWY2huix8wQDauDIyOjpkngGHR5EqbR1gwDfFT2c6HBkROihIMIYkGEBo8N9Q+nh6GSGxQo+oy2ofRJVFhQZK1D7x+C0QXHeKi0NUQhG4qkoMFoHQaphiymBFi84yMwKLdgKHTX0Lr1EWw1ot0SYnoAkTYh5ng6ex2quWQbI6Q+AIyZGzScG+uEFu4Us5HC+jMnsKlgu8Mzqpne/mNDohxN4cOibBjqxzOmUFTZzGgGC1nWV4sAHLXb6kCr6h3G5mUGhvt70GsMj4xzlQFogp9j9eGMMQ4/E3g2dmzCMbi6hfDOv8kKsQYHB7KM0prHOJCcMjJyDLrWwxNDmaGR7HVmdBS6D6DvPzJMHU+A5nhQ56Mjg9cdgSY6cvjwWIZ6Fjy72uRE9w8Oms0OJK8qAwuXeot6XXfM1TZN4jNHUpJmW4DskFvtWJyKce2z4cUoXB7AOy2uhLaAvgx0W+PmOhsSsp7JDqcHZX/VYgvFDBGnNfbGIMZ+CorZgni7NjgOtUQqG7iD2Ff7cIIZgJ9LDl4CWHAn0vvMOgDSph9/YRAeS2OnmZ1I9Zr1EsZmbAa5D6buHBCFCTPHnhHQSZxXRkUIl2fMbBB+RdDqQEyI7q/Fiee9Y3isBwYrnHyOnARphIfmFWE+/vOOPI4ebOyDMGk6RvEheexu/WN90DzNkKWmMQVOjEHXhyMRD+YKG8YOUU6AYi4TrUaJw5EQFBVmZQ4UTuLW2VCj6bExoTQUoWLoKB0Bt4VmM4fN1TYMP+5NE7tWW4A14atXeGwRKhvaRLVJ4vSpqopGUlo+zFFE+qClZE5CVeveLktEZ17dAiibYRmAOVRpUeUqgbWsqkK2cgkcYDAf4nUVgRnGaP/JjMhzUK48DQEkFbTPDEkoaYEaNmWB+y3wgAVeYoEHLfBSC+yywMtUuhbblJVuyko3pRFY6aasdFNWuikr3ZSVbspKN2Wla/Hab6W7f58KP6CgSxR0UEGXKqhLQZeZphwuoZuISVh0ooiLO3FyJmAy5yTaXFs2rR7OHEnTdsHJaoHXVQu83iVwdGSsvyJbFejGVgVeb+UW5gk4IOFk1cL1D0tcVOJwZjkx5vBDlwRTEOitsEOtlyC0mGEglD4+Z2PHhh2jZrvAUI81NooLXxjKRZcn1sdNgubwYP/oxHUCuUEgYSE+dGxwvH908DrRFfLwCMz9IREcSXGDoF55cQ4TVT7ep7ba/RMH+F8Z/hL622c2l+EPTlxCl1f6e9PWijtwHIYv6IiDsgtvt03a3Feda91oMsN4PabX3OAWOIxD7iCMob3ukWliAtUYdwuksTfhGgJwb8Y9Fg1VEREilq+GnEGKC3ZrXHfYunOlvMnK9t0Ck7m5s7mS2dg3PjTYQ3BmNk+3/Zqm9O3Ivnxh5vSiGbMhTxSmFk+bkRztwY4Dv6WFvBlcFEB9bnExN3l67HRuCrcz58WmYKDEEXwfVoTGThXmpvj+62CR39Yw/YDKnzdNDBJ7ogF+QdBsQJy+7xie1jwMQ227jvULui+M4VJcvmMpfeapWaDsKc4WF0zfQn7K9M8s5PNzZt0p/AARodDMLUtcwLozeEOvxYYcy+OlxUUoBgyk3TgE+E5viEjxxo0ZLE1DsUEqwSkBNKpAxSNQWpik+dZUaRFdA/yckwEYDpmn1EcR079EO7R1U+iJ8ICxpVMU1jp5Oj95s1ZmY7Sra/onZ/O5BbztWbrZNMnDs8/hXtr1rid4TGxIe0p4nxFohjBOBK84FWbzoiab0YsXRfJTcqcfOnNxXS4q7xPx20mm/xxpUOA0167AqeIC8lht4wE5kGyC58V3iOAFAQQEpyhertIS9Jw3PRfMRoHVWNRPLuShbIVCNXKfrkoRjpJ72DHutasTx4kciwhShYzJpdnZwzm8yzaVn81bSXGfLSmOUklxrz0pjpNJcZ9MKkTfJEif6qbxlyOoWuqmZ3MzpkmIbG4O1MJ/6zDV9K2Hc8RXb5xThRLdtPVN5ubNuPAdzy9AW+atUnySweZPICjOdGGhBFU4WVzC67cYIrqOkhnIzxG71dwtZxTAi6yl08Bkdgmc1VrztWXf5H0IdUgxvRGLjqBZiyhKBeo4hF0QJwhNL0BXR9URncnP4eWt/FBh/gxkswHC+ecjLpnJFOLYXAH1yowhhiTIT/Gigq6S4/SeCsl4LasrtKZ/nj5HNUNQ+ecl/M6XWViAVlaP0HloWHSxKjhcXDyNX69i4mZQ7wXgUpgcx69Ym/CDo5XdtCoZK1HkZvlQUqFb+IFssDhjNlkoiy4OSL3UrRAsEZ5vySCmMPb4AifvHR/mrTKh9fHOMJOPA/SBLqIuLJO3QTEUHwlbEbE0j/fV8lOquEpECNVuiWLy6+NUecasrJ9mEkPgbbXmxCFDXVvNFgdCfCeug1paxMvZonFHCiVRy4NFaBShQilDmj+FIXqThxDZ3KOFkk3XgZtojkCkmjjeuuTjbBjAm2Xk8HzhfH52DAaOfAF0DQsASrE4e2GmODciu0Y+sPjRrEDJNPHG6yjGgvY5z90mvUmN8YupZrSUOzM/m+/Bi7HoDxT4hf1gCaqohDpb0usmUBIfcsX3SuqOYOycNps0jBrT6vASnyKmrqpJ8yi6kECOzGMUGHX8twpnHq/BNapgFcNctLr/yKKmFdN2b4G82pAQWuJasG8ar5IL8KzpOWuFFKyQgoVOWRFS0xraok5p1PunTc+tKmS/FmG/FWG/FuEARDinQg5oEQ5YEQ5ABCbgoRyo6HkSZXEhN1eaL+KkzxaIydoxyNdcKqlRqOFsbrYwpY2A0bOa/kMZNdj9Z80AHc8o2QlTDkKUykaw30Gw30lwwEGAgjbpiNEiTSdMcw57lNnCrdDcAiUIQbsJZwv5c9hf6MYQjAUcCIdy5yVUmKtwxTl4aukUNF9oNZP43X6WRjODLnPDpMT0Qa8Qu1O/cIm2XLzadUsfXbf0Mj/AfnHl0s8McSXTFP564W8UbrPAtwp3jXDXCneDcDcLen6VslFc7fSzPQK/n9xmgfeyA+S2Kv8l5MaV/yC5CeW/VLhd5K5X+MvI3aj8h8jdpPz8Sudm5b9CyHWV8KeF2y3cHuEOkttJ8bA8r4XfXSwLv7sZrOeMPWxcUB4ndzc7KfzXCfd64T5OuPxy6CXEMQj+p/kI2M3u5PVzqQjZzZ7uEyTPk8DLOOBn/ykxT5Fs7q6jC5V+9nAd+K9hPwR/4kuBxC10BHlHygSaXjp5FST4sAYf1eCMBvdr8IAG92nwEQ4L+83pB4xViV46BJuk4BMU3JEKA/yjOhEPPY/onh/XlXPZyH6CdgXrO73JRvXOnLjpqBNE6DZcFQK0qNxajQANSMerETQAQWK5JNYvl8TG5ZLYtBzBZleCDjr0y2zllAqwEBaeO12zky7iTtfqpIu608WddBXkSzjpGtzp1teY7sYa091UY7qbq9G9xPC2b8QDl3gUNECHMhldIAmmDCCmZ1LarzHuZXFfG5IYhzx1dC4Xz36GBuJ07tsHjBsoATwfiacz0ZprBN2T99bhYdPdxi8YnUfGyxYxjMLNx3IaApsS0pLsqvZ6JDdQIvQ9tQ7TxxssZvc6SJrixzApikNQRIjTgvoB4jQpcVZjZiAkLo60l4fg5ZOoa8g6UWrOkCgd62yQIUC5sSKPtoo8Ntl4tNHNE6Yoha5rMdropLqTImKj2OpCEbVRdLhQ6HK1kvFlJ0UDxNy+LO8dy/LudOOtdOLeOk1vlE5wFWpBLY1JLc0G6MpAqP27HlSORlJOE5WTW50l9RQw3iho7GYA1wPMz1zXJ5u6N1ComzZx5d7Am1DKFotykxS1vlfkhlLQQlrpdkIjhKREPmWjqJ5PAMPOLLdUyHLzclludmQ5clFZjlTJcnNZlpsfkyyvrpDl1uWy3OrIcvSishytkuXWsiy3PiZZXlMhy/Hlshx3ZDl0UVkOVclyvCzL8ccky2srZDmxXJYTjiw3XFSWG6pkOVGW5cSjzTINaevkkEYFsKFCAaxfrgDW/83VfH1ZAax/TOq8rUKWNy6X5Y1/czXfWJbljY9JltsrZHnTclne9DdX801lWd70mGR5S4Usb14uy5v/5lneXJblzY82y3uN+1h8K2UZ7w/jfdwOTnW1FeEaLUIUI2yDCNu7V6H/Zx7sG9D4fiC7Ri1n5fQ72HX8muMn741CUKZy0OHKQUcqB/VVDuqvHDRQOehohSC+BgDV2KmpBhqIiGb58w/ojggXn4WItidRYzpJY/aixsRi/E5zB9U9XlBNQrmeEKWNCWzDYsTbdvtAErlEl5J0aJJQBaSsCiD/dl6Dyr/fEX7A8n+vGbNyUMvKDaQ4AfYE4U4I90bh5oR7SriTwp0Sbl6408KdEe5p4RaEe5NwbxburHDPCHdOuEXhzgv3FuEuCLck3EXhLgn3rHDPCfe8cC8I91bhPlG4TxLu3wn374X7ZHKD3Pp4SN6TROB2CTxVAndI4GkSuFMCd0ng6RK4WwLPkMAzJfAsCTxbAs+RwHMl8DwJPF8C90jgBRJ4oQReJIF7JfBiCbxEAi+VwMsk8HIJvEICr5TAqyTwagm8RgKvlcDrJPB6CbxBAm+UwH0SeJME3iyBt0jgrRJ4mwTeLoF3SOCdEniXBN4tgfdI4H4JvFcC75PA+yXwAQl8UAIPSOBDEviwBD4igY9K4GMS+LgEPiGBT0rgUxL4tAT+QQKfkcA/SuBBCXxWAp+TwOcl8AUJ/JMEviiBL0ngyxL4igS+KoGvSeDrEviGBL4pgW9J4CEJfFsC35HAdyXwPQl8XwI/kMDDEvihBH4kgUck8GMJ/EQCP5XAzyTwcwn8QgK/lMA/S+BfJPArCfxaAr+RwG8l8DsJ/F4C/+oRHcCoQPxBhvybBP5dAn+UwJ8k8B8S+E8J/JcE/iyBv0jgrxL4bwn8jwT+VwL/J4HbvAJ4igRul8BTJXCHBJ4mgTslcJcEni6BuyXwDAk8UwLPksCzJfAcCTxXAs+TwPMlcI8EXiCBF0rgRRK4VwIvlsBLJPBSCbxMAi+XwCsk8EoJvEoCr5bAayTwWgm8TgKvl8AbJPBGCdwngTdJ4M0SeIsE3iqBt0ng7RJ4hwTeKYF3SeDdEniPBO6XwHsl8D4JvF8CH5DAByXwgAQ+JIEPS+AjEvioBD4mgY9L4BMS+KQEPiWBT0vgHyTwGQn8owQelMBnJfA5CXxeAl+QwD9J4IsS+JIEviyBr0jgqxL4mgS+LoFvSOCbEviWBB6SwLcl8B0JfFcC35PA9yXwAwk8LIEfSuBHEnhEAj+WwE8k8FMJ/EwCP5fALyTwSwn8swT+RQK/ksCvJfAbCfxWAr+TwO8l8K8S+IME/k0C/y6BP0rgTxL4Dwn8pwT+SwJ/lsBfJPBXCfw/7L13fFvHkTgeEAABPIDkElSlZEuRHSWxrUSmncSX5BKzySIjiQopuSS5OBAJiYgpgiFIlVxy5y43ucm23Itsy71Klovcm9zk3uXee+/1N2XnvX0oD6Bz9zn+Pl/9QWJ2dnbeltndmdn2lQBfC/CNAN8KsLdfxh8B9hVgPwH2J2DSaFQ2f0Z67y/wRi3UfQ2t8982a52btc7NWmf7Zq2TgM1aZ/tmrZPGIQE2a53tm7VOAjZrne2btU4ef4pqnat/hM7TX5DaWQ4qZ2tcHYoxqg6GFt6cM7l1glrOuIg63E9e1R0APILBXwHBD9RROQTG5hNyjQPZeLVCeB/DcWEVJ/IfQuwW6tis2Ig6jrnVUfTKnOjjOXpHij4hJ/owjv41RG+nTpLokxGIAXCKAKcyUE5vHcfoEfDThPp0qYRx6gzBreIPwGjlRJ4lkWdL5GqJnKLOkchzJfI8Ac4X4AIh30pdmFUSvtwTiS4Sosk5RBF1MRc3bNL9QF2Sw2xqFj0V+FLJxzGSNK4uk6SXC247tWYI1Vit1jJ1uZpm1+wVwmCdw/RKF9OQMA0J05BmGgLqEeoqkTVDAqerq7PKCYOvAOsFuFaA6wS4XoCLEbCA0+/VDYU53SjATYVZ3pyH5S0lZO5WAW4rll1ieftQclmUN7CMqg1+uzNG1R1O14uqO3WvpsBdTq+rUXfrNqjjVRpmdI/T8eJqY05XqlH3Ms7s/iPUfdKuRq8foe7PHlkI+4BgjSFghHowj2SMUA8J9jAzWw9Lth5xBP5RwT3m19I2Tj0uuCdEzp/0a2GeoDZ5j4tx9ZSkftr5yjOCO1pwW6tn3ZUEwHMCPC9U26oXcqiel069s9m56TMv5vn0SzmfjqiXCUfgKwL+VL2aI16vCfB6nuF3J/VG4QRvZg/ItrBSpt7KEZC4etvNjSr7HU79g3yzDBG8600wXr3nr7VoqfhXEFfjlqnx6n3Jpp3Ymbq2UB8wstws4YdO3/mIo39M9fix4GvVJ/7a6MTP/NtQ2qn/brCcrD7Pw/K1HN4j1BcOnY0dpb7066VOVzEmqK+E2lULdsIt1NdeJRmlvnH4GqI8QX3r8BW8m+/evO/5N4DdN6D57hew+e4fyMe3Wh0Q0I0yGRuFOB0Y8Mjh99WyQG4JI+ogxv4WSLZUh+hAodY81PnC0TlfGKcOk/zni1weyJZ0Y2Q7PFDLm2idkQ3KG9DDSVwdGdAT29NO+x7FuKyB72jBuga+FYJ1DXzHCNY18B0rWNfAd5xk/1oZx0aolYHcQXacOl4oP5SCnhCwa+FEiTwpoMfFkwOaX4s6RSJLmdRudo9hEXUqN45FutNpObVdaDqn/nY6k8suWrAxpe6nqFUl54pk5EypFEPczwpoEdpanS3cHpG0q0VqbH0JVD+hOlciPcjj6jwhv9yRt/NzWNiRW6sLJPJCibxIgIsDdi4uyWHhQf5HdWlOnQ9Jl/Jq0J1LYp7D4SzmMJ7KfFkOB7eAxojq8iJUXNQ1hXMzBGUvb1Fbhsbcq8xbqLUijDLMiRjHyGS4Iie6Qq0LONuXiUcuUQiJyqZWU/SVhT7BVslVXp+I6E/kEulPjKEZ7+qCpZDOyMW5ppTi5BIZxZms1hcsjt3x6VvXllKuXCKjXD9V1xUvF3aQgF3AG0opYC6RUcCfqhuLF1A+yiW9qZSS5hIZJd1J3TyEkgJwi1PkW0spci6RUeSd1G1DKLJ8nct+eyllzyUyyr6t2pAn+g6eY2Mw35gl+YEXMU9O1cTzzqHw9CA2ed41FJ4exA7PEeruPBrCCHVPXr1howx7tvZkj1Rbq3uzIpW6L+BSkYnq/gIszGFia/VACbymqAeL8TK75tbqoRKY/lw9XDJTsxdsrR4pgfuv1aNZVOIBkskBLFTRIx8P6Bix/KaoJ4ag57RbahmCv8TTWJY6mNAMHyKwvRfyV85eyDoM/0bvfrXUk5QL3PNqqU0G/JTANo9fZ+2v/K29//LocJn1vfj+UevroPHatL8TX2PFa1PowoaOXXdp7En1zU4MdMsNOoXut6+0b7necxbeNqzvio83NtXPqd+zo5ne2uaoWGPbTLrikkKjmtoa51LQvvqS8BU2noJb2kG+dIruLZ01p76Fr2WyagvGd+RL29TSAdGzIFt401Fu/LS2GTPadsM7lH6cG5l1f2rH7ObGlmktjfn4zG5vbmymu5jidiReeKRrQu4MplAUoJY5e3BgpA60N09rbm/GG0a5VuxX0Ck4bnZ7W2MzX1zboh83tyMnQPPRNZD8Rb7Jt6FtLt0NhVcHjnQTzJ31u1ltu82yxmehO5r5Nq22WQDyTWn8Abp63Z9ZtMCyIIlISAxgvNwf7/fIWBWdWoDm0oUNoyCyvje1EN/Zxtfo9cPT+mw/XXExxiCZI9gZqcyAVQkxeJ+CfEmu2Kk2Uui3EhTKMN1e0TvAX44ghkF9Qw9dpxP/r5wD7wE88G4fdy8PB1SQjr2X00vAIf0icISOdfvUlvA/oiYAztKvA1vq+/p3K/37A318fjL9VhE/xP9ozPdq/ceH/ZOu8OG2k6C82dHOz5SF4dfSv1H9G9O/Ffq3Uv9W6V+lf6v1b1z/1ujfEfp3pP4dpX9H698x+nes/q3Vv+P073j9i2czw5Om4KASmIgZx6OjsV/6gg3yvlcFb8rH45SVekziYqr/3xVzDyxmVW4x8RBnNRfzx06Jt3HAbR2C7RxwigbtYfisk8qtD8/ymQMxdq1KeU58t3T/XnhTmDng6vdD7Lfut89+BMHz3p1QujdJd/WMru/qInrsYXiXUFvfAF1DMyIv1n6+JJDGpx9CeG9JalHSUvV9fT0pvnCmEa8WMieKcOP05sbf0TXoPCtEm2CcmdFGl5NagZamGc1WuK2ho42u+Q7PndVI7xFY0bmz8Qo8vJl6DxgdMT9z+AakMHydLjCyLIDwEjAsaEW6tyu9uLcnnejCIET1pgf7uugelXRvel4mjRdNIUz3tiVhrvMv6e63KmbrIFccsOFUeLnMUrx9gy8VS8zDvPPDJZHM4kQfF7Rcf2JEPVTFgt5k16x0VzJjV9j8nsTAAN62hvd75EyTm+fH/7v50ZjJAthmVgQvV+qZ5XpxhS68iuH/TF+iMzm3vcWKgYwl+2USCtmzEb6TkloCotGX7EzNT+FFe/WDXam0VT29fle8NZNfW8AGtxShmme1zd1luomZNpcuwyRMBWFmNs+pp2CMglC+6VhdFbOa5+zW1v67PZtnzp6zhxWTIHWmKglJH6sWxKy2PTva5rY3NsP35sycQfmTAvgz/Z1WLKGluKMnPWBVIRFCQlPd2Z3q6dKhRroljd4pChO+H+S8km5dTPf0JDv59qlOnoWbu1IDdONMNd2xJiwwmVWtb5oyqFRPIoso3osvuDCmIzWvB5sHhjHuleXp3nk9g/2WNS3dOaj7MQ0SeNGNFSGoryex1FI2ONDdnx5c0E1k3XSZHHADbaVzL8uamR7MJPUwiki8cwiGhU6+DgtyMIhfxIv4rAgqOPPSif4uq7JRQE4aBZLBpGYexMAADj5d83r4M8Ciqz+xwIo0wX/9cg2j8G2nqIB0HZAOLEkNSAQMw4uSEoH3WkkEP2JEzNN9WOCuQdaydE7gG8mFMDyBgOI00NsFgD2N/Axx87ESrZp074L0QB9fSNSZ6KO7uyp0WM81MX1fkV1Xqd4+LGUL/thFSvXS/UsI7pVcimO0VfG75FKjqiyKofsRkQvAg31YBBzLocPRb7KL7oBUElqYHEgQJqIxXGkIchWMwEAmuwRAshCbl7IR0wGuZQlx1QrhwjTXMwXSgwN2BFV6RAcgv5BxmA8HkgwADktAUhfhXxTZKgAlQyScFTaCclRpBzlPTphz5ZBTvmJ2EHPmRIpA6CDkDijxSjFH1vGFJuolAOC7UgBlOvuh5xKUTO6VpBZDCDNOSOzVWKpMd3oxRQ4kevBGOIwcnLcwRc2dGYQhsJfabSC1MKnnRyAZSC8AscUiLUr3gPLvCOTiRGpAd+jF3UmoFWs3/GHhGAVysSgFlZzV+4OZgaV0vyMITU1jR0cHBpuSnT0JbVUEE/Pp2sJenJHl7a/yRB/lrnxeEiyLJF7uSXfBkSRP608vpLkg3NQ2kzBWkKrQigmCXokKzAdCyK2e5cc0Mo/GdLofdA8orsz/NZr77wcTXTbzEPBChBX4G/4XmnaoXJsm0I9VXQWUiG4HVYQu8YritYzpJZg6Y1VqyFY2oKKobBV/G0z2L+2g5gIlL5LRUMZSrph6bGz8HNlX5f0s61Hg0gOT3W4psJIsmiPAEIMBa/Jc1OccRBvdT6nBXVNdSU0XSuqLAsug0wdAemAq7EnMg2YN90CLD9KNfA4b/rh+9g46WqKra4D4WBRta2WcPY7CWyEptmFpC4xjDYn+2TjahRalMimaZRqodefScPBdHxiDioAho3dX0rStBmjY/qWkPlsgbVD3BPvnpZfgRYSg5+GNwWlLNfTDNzthJGgE+e7l+Wehfmkspp8c4ywFeWqJ9sEwJW+RhWxS0g079DwamENvijUmemfDSIJfbk9mBnsYtSiRaaR73LgXRRf0pOclevgyXXnHbwwjhQ4kVIzvKubQlOqXOVsj+hOL6T5BK9Jlg8EU/eivmq/elXUtgb+l8LcY/rqtsgyEMxDOQDjTDdOjzRUdAlaEHjIkMICTqBWen+rpaR/EEYJJp0k40IdU5Uhb1wSdD/B4CaXuj8SCL8etspGgwKX3gpzTKIcTM12jh6hRDnMmonEjY0XmEwaHlGjGiYABgu7CnZHqTSb6d+kH4wKbTmfRDpctmWqVLYW/JdvD7/b2lbuo/ffDfMfkErSwow6k+CZPfRsvMEr0OPz6gVf/9pIQcjuAN7WWzycA9LQuvtK5YyDdZz9lGKQrjKX9pqdg3FiAn0BqJ6RsUAaOKroL2UYDgvuak6bKaG+6e7mKc+0gIgZIMkJzM/ZTJyIGWoETKu9K9Q8s3V3/7mFZ9KsvBiVY39A9whS2hWlt145MucJyOWkWGsbHntTAUmtkS150NaEbUgMLE31ajnWNY3s3JvqkoTHYCqIFfV9astvyJ0BlLscmA33JIq2jvhenuDCMwgxV4HOL0M0791qcgq4ehBQwRpQtqQMpqbNCnHZ3Afawwv3pAe6WFfOSf08l+xsH+2lYCXT2bb+E/i/F/3UE15ECCmMIZSeU7AFBR70DL32ENOXYiDgk4TyDvb1TuPk7+5bgv6V4Haev2xrtlEo/2ah7RahH6gGBpkSmW54V7ZEaMe5ztUAFSPbPSKEmgFPVDJ0GepQRCGeSC/hS5ViGhnHt+jO8gLqWce7DEoJ0EshDBEIWd1GCxwix+yZ4GCqiHIP3gidFhp3vxXVsdwJUL13eGsbNzeD9wHjRKl7tqnNDQ/BoB3bX1JBuop9YKMsdyQEcw+3nOulK4fTiBrRuogzzXeYVHODW2N0d3APkKZnBi3StQAa1Rqo3yn6AchZemFiiO9rCZCIDejFFRvH/TJhiU50ZqWGKqHIKXd8D9qFU3Rx9DT9KAMwS9gwSmJ/GGXfApo8NmJR69pZmByWH7221Kmm4dqLKqTdgt6HOFMyAgZ60fAnLN8/ydVq+LssHwflacnqQtBrnKjIDW+bPSibRuoF+wbUeZwUXpRwaN02P4kJ3h2l+Ns2dkHOLh1LSwSoW0NQBKUnMQloZgyTdCfTL6Svqx8xK9zbBB/ETODGTvcoeBQfkC+wtVj4pmcUXn/Mt93zjuJUCHbt/gFCihVGgArTrDLkkOGkj9nnWIfg52Ar7ydOmVCfOTjYB66udmAdQ8BIZdMgtBn2B3HjGw6cjeDpBLwdrs3x7N+gL7OdAjRd0His4kMafkY2DIGALtTzjLAH5A+26KzkfWzjaicZB/yDrn2JdTrXG6ARNSEY1LnMQ3j9rRUH776U41B7/CsMPqHULceCM6u9RmauMAGW+HK9+T/XA/A8hkzLvpbfV0JAteB805oQH20qezqQZrejuM2fYgYjt/0HNGiYO9O6QnyjUle6k+o+ZAiAX7Ltw4T5Qw1KdoK2GM0vBSlwIkKbD4cH+WNiGgqAgQG6tbpj+gQyN12q7q9gWQcWAa5EkCPMb3n5PLxrjE8pZr1W7X0pmsp/vmPXmcWXv4MJ5yf6OJFgL6Of1L9x+e/xXh/92wH87wr86xNUhrg5xdYjbAXE7IG4HxO2AuB0RtyPidkTcjjuinKPBA2bIfCum3w5eSqEqMGFmmogaHgHql6QyNKES0vd3awTj0V7alWwZirAYS3Ao3Z8CBXN3AfaA8ROHjx26zOg/WDWEhT6sL06n2HJC7q5/99C/fwBTCn+JpBKGCW4LNhAimb2Si3enKAL3ILDCHpkoWDYASjHoHWUDf7cCqQxMUVYq09IFzY3aSHA+zN+78w+M4VRLIPthqSLQy9y1YansasArzamQVlVWuWD0xAzyzx5W5UDaJQoStmXAliu2g5UYwLbkVS2k0hujNSOssj7QgftAw+nbAf52RH8/DZzcVefBUNeVyX4nQ2hIiCtaoH9QNmakQGMPgFKxUN5OgfQD0L2tQE9yPoh7P6X2oxaMJjr7bWcmODQH5q9e4ugHDdgqH8BwBi+9hn4PYy0OZoDB2ZLGWivcm1xMifBVcLqbP4OpyG0RhDLiCxg4AnOZ0TGHTrbm+fNpWkjSLxjV6cXo/YU5F99FANWd7esgFiNjjTAZYEE5coDWS1nXYfVYPwOCr6wTAl9DZzUagf7EArbIVDY/en29Hk0GqDr6HyWE9mlH9gS56JmHVrR+KKW2KdmFizfJLl5p2oUsxY7ONAxb1bmo8ICUvobRNNROT/R29aCJMkEGsPpe8RS7CUaATOqI2Ql0c9EEOUKStfWzQtYOqrplGRQVuyTTC0E5WTp3INUDE8bc9hnyUI+oVVYCHxTQb91AKVn1ghYxPNIhmAi60RcSgskYZmAA5i3gJIF5aTBgo5jGXs7ulLm+A99owRBqvxbem54YmIn5imoXNw3z5Z3p9F4pyGznYD/mvKOzP9U3YI1CnlCyXXdhhLCPwnyZgN5Nqkj5bilcwULNAJ3wxNwPSpVV1aXrxkmmEbggUd6VXgjSbJUnYdDuwjUnXRyUWBA4a/5gTw9oPvjoT7UD2z59A6VtqEA39HH2/k8HyF7iINMqY1Wm3JNnBXl9m3tByUABi6HvHjLPiyARp0WCCGaMRyzCzsMV6V4nG9ovWG3ieLkyjl6gRNdSXJMT92E5D+RWqK9ncAF2anoVYinr/HGRqnYHF6YH7fvRQdqfdtY2aCdDBbaQs5kBBlNsLVDuWXNEO1OagLyPHd1JlKDKDjtAvdla5JQ6AsLcxxIc6CU51q7oZvahj+o0FVAcyXnA1Ra2/cSKPOxjI2Z1iALh8hRpz4MobqPcusg0GDcIr3IwOqEUcJQsvyDW5SwwySATUY1gL1vKtpp05rDkMCyB+YnvbLhCgX7q44u7EwNz0h3oU7Ywnp0d1jj71aLOZCYDVd+iVUos5cj8aHlNKypOFVp74Z9K51GjWdxvOZwe7Oy2gvwTwDcWYE6mGRnkFx+9AZnfnX/2IIEAadxdgD2kOig5tX3EAUMDCKJtqIkgyW6JHlzMtwxYafvEaftqjck4qGhySbITGxWGUXyrioAWfB0C6m1ui1WJi0PTnJ5eia/wMBfykUY0SwBHOVGZhqWN0F0zpM1anQLyk0AODUVHNYdZ8giQEz8nsYCwo/JhQUTCqMPSqpIFYwdMq9omSib7rADMKb2Wf7C/B8xU1nPBDCc/tS6uDEsjTGQLaAO4CmJVm1ju4SNdKHlkx03JSltFP672ZKQvBhf3p3ABh356oC/ZS3Oku8S6zLm/0lkmpNgwrpSSgTGeHOW6Itr6s5ZEx7lj0fGXtp3wY9yRxkrkVu6Y/PKPj0vJi0wxrHyyPlEfilDjsoTa7YyvoKF9qx1tFodmoGYVYXgOKFZRBtlhAB0cBmMskhVJw3cYjPH4KHw4xHwYJj4MaldRxpjljRk/kMGV59CAlijjxT0YHgJo38Foa5NTxYfIBQYFi9nvWOF4WWmGQAirXWGScuVCoUzGszGQcCQtuoDWio4axx9Q6XIPQH2DkBtfN0PApMIMQ/+CoF48bdQrkxG9WNeCTkxyBNR3/RUGUmfaD4J5DIRxdyw1QLhPPBhZseS/CYEiSQPRSC3vWZ/W/l5jrslCQAFqslHUhVHekBq6VsYcfsr1WmJVh25+mT7CHNEAFgZDtifGD0O3RM9Jk5ZrVGfG3Zgqk9Ny2Rhs8kxyIKuoI8EO3iuFlhtWiL1GZs92WRsRylKgUCXxeS7QrCx64Iy7Y6UDkxCi7703bQVZUUGHW5I2j5AvFiKcl3ZC9lI0pZY3pxpntHU0gz2oN97Q3qi22c2zrJqkQ2Z7eKqa3UhclaWBtGpxaqAb5myawRKgJ4fxcTF6Dai6vgts30R/ZzcMHotS+CzX2JaMG9Nir+nGd0kOYBfDqpTGi2KR2vpbyBIjt0gXWRysZpNeLbI6lrRHUIn7URXSWNbcUUfuh+oMy3YtmB9AJ8O1QSvQhypkpahos9M9qc6l+PZWD1ppPWzM9ScXgRnbnUD7hL5MiryttO2ZnvdX7KDBBPkewRAYQE9HZzduVQujK4yeDi3vZp9O+SL+JX23HiZqW9/tTU/HR79or8xMsJHsmArENLRLkFIiT0EEsDwaDSaF/f4oK/hucyiYmAEVZFlokS3ox2EGbFvEBBdRBJWwYRCMXltljyQGB9K8SyOsHzbsQp8rzIb0TXyOzjaJEF3Ps0MUYdDTyWVFETOTA93pLqsS4VnpXfUzWRynN9uV09JtxgrQvpcqroveQdt80G9rAX9ZwgwTCh0aFbtqiOfl2OJUT4/9kQrauScU2OY4T9th7LvsynNI5DVM3Wcs5yVCVIkIQFUHMj6oX20cSDeAjWoF6H/ob3rZJzKQRqsZLUhq3CaUK1t+yLbr1M2KdHb7CcIkjxOS/I+2e5/arAm6X9q2FwK0Z6KcjU+YFSEENhL0yhFM20/jkC0qlYxdJOGRMj51dPCbXrw4GUl0ohbwuyRUjg3OoLX2qK4QbCwrhJoLGq64lLtgAb/9hb6Lv6d7sSekumC80HM7rxNQb4yxN1ymdQ7RtK5j2DwHTYBCNMkzKJN8X7Knh9rZCsOAygNHgPZqBXkXVJDluIq8Kx1I3kjk1C7NaNHaVYIvJu66i+0fpdaYlkr2wKBmt0ZYNGfpCc7syc/0BWizS610ExQfmHAyhn5WgRXZh6v3ZOqXJxgdw06HokG7SMNJMXdDSd2hyhdyZ7J6nY4U5F025Xp3DBWK3k60hw7tPLBLVaER2hfArwA38COyYDn3LmhKZjqt2EKQ8VSvbpgoh7jOw73pdt7RE7GNVl1XyMqoqwBMWRk0whZneESbbo9ood40PdzI0o1OAMP0ZcfAwMIem1qWCwLduL4X6MYHI8P4n6bAMG4TXgxFQGigm3ABesgu3NefxkrtgRqiacgKg77bTxTUh1rclZVA35pp5BACF+toeAarDEZV3JCBzwx3pTu5wmnIsDuS7YlxoeWd3rDdwmAepjOZNnYuWOLO6e+0gqkMKtTl8GXcMlnRizZLQnTfmA5yYwSxITKUHZIDKB2m5WyR10S+z0KHHiaQfhjOK7VnqFGHY+IpIrsl1JXqJ/24IqXtINp2hD0YmJLnCCYRnCsXJpbg4Ycl+mSEfyGu2MI/HRbfMm3m5s0JUfKFdqd7qD76xd0bRiUvhQ9Ix3k/ETS4s2ckZuOaYQKrtEMdtBUvkBkASy9Ke9brM000+uvALFpqwPanzWWo9ZG5zguS2jHL2i9v6/PTDif7A1TWig5XEKcOG8PGfxhz0IQ77HyonEJgbh+LGAyYCxxvWKSzG9Uf2iO3V3IpL64h2YwWIaHGozHWmDFoFLFC3dArpuHL10STxJ2crl4zw9GFrAgGeBgvS+Djw0lQSa14O+vS0M0HsE1pI9tCku5gL+26D2bIDWstJs8sb0jazYFp5gAhs42GBC77cUeemegH5rbQh+cluxOLUuiJ6UnD2B1O96J3vpN26+nnjEO0y69/QEy8+oW0VKltuaYk7W8E+xPHbtRCMuiKjybs3V2gouDASfsgw/wqK+7bn5NayN4Z7Y7HMRi6HPcyjLQFfuYg2u41OoS7n1BTaidPnmxtBbWb9rFarKWRCh5cSAljvckBrCnWQMppYyZg+0w+5RhCzbwPVEzSR3HXI02SIdn/GIEu3MZ6Jb7KOqALV2FvgSPVNLrI3gaXsSqdPXG8x423PdJ2HDuZFXFAh9nvcNNctNPZ7QUWRSIDQp3cywoMUPXgbIgNQ70pQNkO8rbTAFV2jWhqqKHbkqqrESzpTnQX4LaTNGqdfaLZOdpOSM9EVqR7YKCvGTr/IjTruiFWVOIBZyN8oBuGP8sPgyLvi1w4uFCLYrrLmXBS1GroCksJlzZTmQrjzuJ+bCHqQVzhdiSq7nx+pYu2eWLzDOCIj8uggJ8J6iIZdlx4sFp2waJJ+m3Jg5Inhl00bOS4VDg3qkpXHg8tSRITDY10qF2qhBCw4sM8BweMcZ+0P3zHd0F/oq/bNcTQ6772YEHDJa8uUyQYgehDNtXF2U64hsP6XIvJ9feDacfHSxlyr0gEE5mlvTDJdaEFBv1qkUNHZbErQ4omtmFFwjwAo5OQnu4aATv6Er2uDNEIKJjRiJmDPQ/tdaPuRzgRoCLaApWYNw8Gr8SSFC6dJdGZgPVchg7dTtyphELcg5+EoTnJj52DVbcb1DWYk+nFFFO+iPeo1DifSDtfyCCJsqOczsH5g06axB0lXaQLUgD3UND+ZFLdQAUcpI1UmcGFoKYttUIDYBKmcEPywDR0eDlF1h58uyUGUO+y/fn299iV3EBLVTpAjCTAqXh3iaSKcLAdNUoGdRodoDQR9hwhkVMXELIzhKXL4Ba1xVzPIAM8xQpC72nBJpLNLAQzuyRoVsYCg0YuGTBtbhpbtW4SWIztRFKDw4VLaubg3gg3hjYLS1ab29vb2q1yPAHT3GSF5CRMCEZxsmyCvI+YUs7NMefm9u7VC7qCiz8N5vbqDw6xGbbEYPoATReXk2jwF2OJAqwFVk0HtbiRlqvYeVSThWAPTm9yMVqk5aB54W9oegr3cKElTHNtO23p4vmuuiMHFaRFMTCuaAs2mFOL8VBK2YI09uUe3JbZN5jp1oa41qv0pAjTLj6CDto5zr4tTWgT4Io3LzBHjT2SVtwI2GcFO/NtHVJECfpzUtYJVSoHA0OWbG7g7cqqLxsT4/MJulor2LaR/ZsV/a5glINc6+OMrObszRsti9i4wmIWsHwe/27lkdrepFc9N9U7sFNjT2JhX7KL90345oCZAioUNgwbDzDk8NCIG7Bonq6e2dzUUr8nyOie9Q1t7XjITjmopuZGPJRmEOnjW9Y4B9XR3oiHwfbsmDt7NnOoJN3n97jEwaoIjElyfhN3a2qownWwE70u6NW1wzVuLiyuo/MgSWQrtctHdroH0arb3opq9Gy08QhXBwU0dr5T4iid8aJgF1OhocSenS1oqjbYtPWzQQxz2pKlIEnAwLWVPsTacMaakJuyI9m/KNWZ1Mdof0gE7Lhv6/cgDM+EQYdmXBgleSGY5nR9umE2LTdb5fo3nAHdNrUEz7xLOhYIBQosL6DOg/FwEdmYsgHD3hlXB1WpydqTnWgqW10p0POhVnHnYZqTWiOyeXFFDiRoJyw5VavsFSC9jFptI9p6ZNWr07WBcaQraFNF6FAfL2RmBucNgMVtWSBUMsNXJMzFFCvuCrJLNYqH9uS8TjgtnKvkRI9ExVgKNWNUbWfZvuVKMzSrQ9YqHILqLATQoBVpcMi4OURmgdGzgFagozYIo161HZghx1SqbFRbL+5ftkbaCLlegFzaykDj/g8TM1vvSxhnJtWWznQYoxejIhtpdM4RgrVOa8i0cgHVQdZfUxJFU0KyhBCbacZVZFwCPMolz4286QkPD0CNOj4TvVUzQd8aRbgOaOsEusZsfFVmkLyLjSK5UYMQugRaXHZcaFFqHp41s2q6dfHsAncutcq1xV9rn/rUrnDeRErmYXihdL1xqcxs7SPKJRvVr2E3I2u04LOSWmMGewskGevEZCeq4C09sgodTfT1NeLyEm0AhQCvnQOwq575gulMZ98gTKeg7ZBTHuzKdNcgWo4a6BicZ0XQ01W/gJw/MIR1oVeYfzE2hm01IN+MyLmpDK7zkCBGpIrAbGYJ4+Em+tfEooSkC81LZOjQstUpO5FxPxCewOVTtVFqhF42YiI9CcGHe6WEBFFTRBDSAwidgXZ8lqw42Dpcn7NpK4rzpa5rqjooIX8CDy708tLdaPK499ubVOzd2LhxTdagaAW10SlGjPVLPuiF6j6dEk5lmthIMwahVKYZHf+8JZv2xxJopTIduD2BFg97oI0H++xEdNCbcbP1ue5e3I7Xg37VKA84XAxRpThUMa1lxpxmmNYbG5tnz7GD7c14+YoV1cGO37XMtsId09t227N+xgyrkiG5GsCKU9h1NYAVYxxfDWBVUEiOzENHN4P2TQGaketkvWakT9ZbUQ7RYXprpBFwTtbrj8nJemscBfOfrLciFIkn66FHkEeTqrdWL21zY7WjaYkbi7lZ+11B2sqNjuBe2acTk9mC41nrtGpmQ3egvRgkKlpRyYOkKTLSh30zg1IeRB807v7r6uJTM/B9UBu7rYrZ6T5SiJlXtStIXEbq3ejtyb9qU40ox+ZF89aEPr1/vcK9zcNqntW055w2qOwmK6bhjjn17XOgffBH4irtEMdGYFzqSfShgwQ7zcJ0b73WNY3hHbuYHYpASB/ZqSRHnhMVpbCOrKDuqHsq7pfHoPadykdxQxM7dEfqHkvbIsCq1VOVH9e4oqzDcdqYJuRNTGNkbxqp0dAn7c1n4fkCVWobUnJSBZSonThZ445P0lBJYoVmaEaH5QAgf95iL4VsEBDY5lUORUeHdZR/6+nAcIwDemQJZ7SjDadXhpisUoKaUGVgisP6sLlHwKLTK2SxdjwhmtRnUZUZIkGp6GeMLLp28AJHFAbzlL2thgJ6ZY1sriboYAD3gd7Zw3AlG4YN4tgd2eHaZGE7axgtQU01I70gBbqpPfwG5+HBNas8xXZuYCFVsbP7hpztMQj3y9ZhWnMCRZn25jJKvjHapDP3E6tEzuUxdNcCq74daOCiNx5PEqI2598ruRT3eOIQTAjcF01ATNPqOjZDvEELmoPnr2iG49DzYEUWd4O1S+sNkQzkhLfMjAaRAwGVfT8N6SX1GdxPY43JicAVOVpayomhpdJROeh2as44nfCalxxIddonoyqTC7mx9ceqJGx/A09W5WZqVBZayKvQx4Ao+UANeiXI12h81eJd1I2DqLfaPmgI0lgV6ET8hFRvAyhEM/WtC0TRlILJcqCzm9QDx3lNYlGOJ1QH8Xg+/IuZTPFQLs2fuI4FoxO5gukqCuxVoN/wNRfky27rbV5C9+1gPyNCWvMfTPK5b96YtrsAe6CFTedVLVKgtWk4t4WB8kTPAK2U887hrjl6d2aoc6C/ByNCeKcEAuFMd2o+0VbwhlIhrXSOpLPppfV4vjRgXqKLFvUQTWeQaCGiSi+szUxlaBsW9HX8fBuYb/PRXV5JwbnoYqBwDFenbGIYctMz0mg+AcD3J8XI1y0EQb5cI0YOYsBm6PIj4zh+ZLfkvA7ox7h/HTcZoR8sIguvMJzOcw62V8oCjV7lsWjnU4b6byBDN2yQltlAZFaVEaAtXGPZSAdjPaeXj+CoDtyziMuC3KvjjMV94D2Ci8JcTWcfcCGqmnnMNlDltN0P7KRO8wgaSG4XmUGzcTBsx9EENxjJqaqkbIKKzTdXlMspBCLQrX1tUd7eqAdcCuiDkrJrfV6iHwWldxCBSK9tSpbj9iu6dYN2RcqWCQxoDrSTWE+3FNhDB8pZYaaSZ9KQS2Rdrte4Q+z9212APWR7JRBRq9CBI7qkirIGYsLpF/MOgmACjJgBawQfgOOL8mijOe1O6yYjh9Z6wCxYSDsi8Y4AXDvjtUl/sgf1p0xysCvdDKBFYse2Y5B21PI544alaLRgZ9Fr5sG+fpzzy1EF6hvArYe0sJmVgzC77BqWCoRb/6AOcIplBhVQ5zTDcrBSgoP29TC460CfBsDrYbSt5Fwvkp4/n8a5MIA8leElYEDSneqyYdqfg3C6jz2pdNhAa3RcTXwhihbTEeneQcHbdPgJyVePKdTldGEZWC00wwk2AJIzzwrMG0gnUAFLJvjQ8SKUUwrikIc3u1Qbx+21ozLcDqYKXsqCJ6No0NErxzww4aQovELd2pQNDWh+Fu7W0TDoMa4+WS5TubOtoJJR9nGNKg47fpQK3tbdoY9LBAb7YWSRpWxzNyIuUtgBq37G7On1Dc1zWhphYGlvr9+jYe40MDusQP3cOW1WsKF51+YZVqBhRluDVd7Q1t4EUfA7Z07bTMDOnTPHCuPNHWB4dFjljWC4QHy4cTqgmts7cLCrBwulEVBteCUZWFYhvPQM7Z5QU/O0+rkzQN1uau5obG/RTMJNLR31DTOam6wgX6zlRyU8BNmY1dYEyGkzWmbvYYWm18/aBUfR8uktTU3Ns6zA9JZdplvRlqbmtl3a62dPh2+GWmZNb25vmYMAqO5oarVg/urBTtq12QrMaJ42x/LPaNsN/s2BUs2snzW3fgb+tgNrKzgT6qIZgs1NLXNnWmH7GrDymfDJGc1A0IKlLZ/Z1jQXgqFZzfXtzR3wuVlts/7Q3N5mhWbXN9GSR2R2y+7NM+rRRRyd3d48E0rdMnvGHlYYAh3N7ZAZgNoaoNh7WMF2KMgc+MFrQi1/+xzIUQfYimC7htCyo0J3zGxrmzMdfn8/F75pBbVl0jG3AQzHGc0dln9O22zLn8jsaVmglPYn6WiZVT03k5z4l0TmLxNBfx9IJrp+ghLr3DQTYhHK4KRDN0HRhiJMYPlTwIvTp8z0AQxaYbIBcGy3eEGGtquUz6Mtk3gCGH9heljIR5L663sGdkEFyME0gnEzAzVdSzDTeq1KB6a4CgnTplarSoKzBhdSfFwQokubaToGMY3NsmPpwnnpHiMJhSlJeYI36Uc77WVk6E+875XmCr50SB8UyOMht7bBivL0n9s1GH93Us79p+V4/yndeBqwbz/F3xDdeFqmwhAK0f2niLXot0xV6N9Kja/S4Tj9VqgajR9JvyE1Tt+fOglC1fqm1ID6oU61jf7djn5H6tRl6rearl6Hm/XvdPqttena9e9cTb+bDu+hv57Qvwt0maDaw5NUj6b6m071Dx3731YoPFnt7YNgKIwP3WrgAAEuQyAIlGt9EN5WXcERAXUVA2XqWgGuF+AmAW4RYIMAdwpwrwAPCPCgAI8LsEmAZwR4zkf5/yXVBiJeYcSvbcSrQvqGAG8J8B7T1tu07zPiNzbiA0Y024gPpbQfC5NPmaTFJvlMYr4UYP8yDRwkwCFllGiWnehoiTlOgJMFOEOA1QKcK8AFAlwkwBUCXCXA1QJcw9/8k/3N9Yz4s424VkgfFeB5AV4W4BUBXhXgNQFeF+ANAd4U4C0B3hHgXQG+FOBrzk6vnZ1vGNFnI/b3a2CFAMcJsNJPtIM27fESc4IAZzDJUpvkLIk5V4DzmOSfNsn5jPhvG3GRX7f/pZLmMj/1h4Ba67fC4f196gqJWcfAgT479ZUSda0A1wtwswAbBLiLGX9P3Ys3NB/uU/fhB47wqfsxgqAHhfaQgAaOEuBYAY4T4BQBThXg3AB9wacuCAC/E3zqQom5WIArAvQtiLtSUOsFuJaBw5zyXS9RNwhwowA3CXCzALcIcIcAGwV4WIBHBXhRgDcF+CCgx6GPMfMX+9QnHLOt+kJIDghqYJkAhwlwhABHCXCMACsFOE2AVQxcJgW9SIBDfXoU3tqughuYNqRu4rlkrB1zs7C7RYBbBbgtqLN+u2DuEOBRATYJ8IkA+5RLv2DgbqchDpCowxi414k6SqKOEWClACcy8JBDfJJEnc3Ao07URYx5XKpgvB1ziSS6lIGnnESXMeYZB7OGMc85mLWS/GoGXnSirpOo2wS4o5w+vheRUJ/YWC4S+6AQPcLAmw6jxxjztoN5nDHvOpgnGPO+g3mSMR86mGcY87GDeZYxnwrmXAG2Vc9Jfj5m4Esn1aeM+drBfM6Ybx3MV4x52cEcGCJgvzIbcwRjDnAwRzNmmWAucJIfw1GHOMTHMuYwB3M6Yw53MGcz5kgHszqkgcsZWOFE3S9RjzBwnBP1OGOOdzBPMOZEB/MUY052ME8z5tQyu1afCY3hQey5EDT7GTBnyTdfEeBVBs5y2LzOmNWC2eTUyieS6msBDgpr4BABlgtwOAOvOMmPY8ylzrdOZMzlDuZUxqx1MKsYs86oZsZc5WDOYcw1DuZCxlzrYC6SjF3MwA1O1GUStYaBm52otYy51cFcwZjbHcyVjLnDwVzFmLsczNWMucfBXMOYex3Mesbc72BuYMyDZXog2cIZMTnmEYf2FsY85mBuZcwTDuY2xmxyMLcz5mkH8wBjnnUwDzHmeUP4pMJeZeAliXrRoXmbo151MO8w5nUH8z5j3nQwHzDmbQfzIWPedTCfM+Z9B/MFYz50MF8y5mMHs3eERx8Hs09EA/sLcKAARzHwlTFYSNQKAY4VYKUAJwpwigCnI0Bj7xmM2tuvm/IPmvP5zifOZ5KQukiSX8LAoX6b5lKJukyANWyC7ewIqMRcHdHdf30E8rDCr67l3AB0ndBcL8BNAtwiwK0MBNTtgtkgwF0CPCvAcwI8L8ALArwowEsCvCzAKwxMUq9yVkE/xqyu9qs37ay+zRDg3rOhDyRrnwin5WyAjta1sNYZdW6yCLjEqcObGXOZg7nF0sAdDKx1ou5kzD6CucLhfBdHXe0Q3y18NjKwziF+nzHXO8QfMGZfB/ORJP+cgVucqC8k6ksBvmJgg9B8KYJ0rAAbnK/vHeXhx2G4T1QD+wmwvwDLBDiMgQedVMujVM2NzngttGcIcBYDF0suHnNSX8JRmwQTUpcyv52csVTY3CrAbQw873f0mHuiAm0UqnsFuE+A+6Na+h+IAu1rfvVgVETqiBhBMCEea0MrY9J3BThNgNNtojMZdaaU7RCp4YB6JqaB52Jj2Oh5NQaJPvar1wTxCSI+9atPAVG7abvaX9C7JladBd+opre8YgQrDUcBPrScA9OXhY8O+8Of+K8Kf692S3pcZAQRb5snfgd1pw8IdiAOr/n0E7HVOLn7aq2JUXr3Kjg14ko0EexOSNRDid4ry8M2wS+u/ydRnOM3cnk2B6oosJoDYyhwjUm23gwckq9kU9RNmPOpRHGBX+ccAxfqgIt8Oj5j7p96kI9IrmKS4Hf58C7qevzwT4liOZd+OgUONwOv+Y3AwzomK0tHBSBLK3xFOK0IGIFjAnk4wcBwQxBYXe+riwHNjcHaINAcz4xPDlKKLSlwihm4MGoELjIDr8eMVnrDDHxoUUBR4OKo0X5rokbNXWEGLjMDa83AmzEj8JYZeNsMvGMG3jUD75mB983AB2bgQzPwkQSwro7nujrfJRdbfhe5+D4YyNAGlzOnfZlkTBbJZSiE+zHJfvlI/gFWJ5BsZJJ3fUYFH1RuBA4uN3J6oBlYVv7dZfuX6lzst//4Lmkn0JtL0cJj0ffBaoai3c9FW5GfZCWSPOgr/Jm5oIwByedlXIcRo072NQNDzP1/qnNxTNuVK5e7XxvXJwdmcUc2G+QI83uHm4EnQxQYS4FHzTRHRvI0ehJURSjTt2UkksdFSCT39rOAcmgfP3d/Tv5P7tkRo9lPkAAmOokT7evPqt3T8TP7+wsP3HNBbQSS5UzyQsjI+TtBow6HWLvo0EO+RzHfE83h992A8ZF1UotYiqu4FEf76+I430dqo/Fg3D/1CD8gp3yXbAyCOgq5OJlzcX/EoN9glu5eM+YBM7DRDNwnAZwv74noh9LHYO6yBvpbLPjsGv7srdZ3r8fpoGQCp3XMaVnku/f0P4EGCpzWQ92qe6zainh5nHjB3wE+c3L+Ttyng8oK3G/0584ZQ+T0G9BngdNt3Bm+tkgiNnDoG1fojRCFbnHL/CRQgyH97V40v1af4Mh9J5f7RHO6PVkChVNPVJsw9R2+Okt9yzm6x03xT1CGgeJhro2DzUnzUdcQYsZcETR6whFR4vuA/7s1xpX4+Wc58WdhIvn5d+E0FUwA4HQfV+YqP2XqTB61zopR6D130X+gPo5Bv4BuO31VZOpn/knoil8V2cZGHeu7KuyDVrqcP/6zbcqm/qIuxI/bbzl9meWw2kpoBrbxTz3Gl5/IZjQGiI7z1ZWrBnogOC8jpFlZgNHWSIQFOtkHVCcVoPoRUhlqMpAeVuSjY4HmnALstpKP3uxjqnycJjmcyqZOyM/o+26aohl6uViGbvExVVFOD5YVqc/j/EB1vL/I94TK83sjgeZ2r5y7iOhN9wJVORqqacdSMr6ypIyvzJ9xm9VKJLqwGCuhKirDDyCng6OFv/c4cnq0wPdsqovKgOqCYu13JUrCVcV6zXOU9wK88vSa8/OL1o/UZ/iwZ42rM8NveQ7lFIfyJuezMCR/zuPSDWWFyB8sgfzHDrlR2fkyMqlanY2kfSBRf9vp9jJGrUbUrwH17xpVo86JwUh6C1bTrX438ktshzv9duJzMfGfIfGeNuq8bH7V6nxE/QZQTTbqgtyMXIioPwHqP+xvXoTfvBi/+YTzzYuRrhfo0jbdxUi3ATN8h5PhS3IT16hLEXkmIt93kMtRsb8Hk290kJch5UUoUet99rcvzy3JGkT9E1D/ZSddg0n3QX5XOvzW5svOFYh8DCmfdAq4Djk2A8dpNurK3DJfma/MhDwWP3KXw+8qTDwLEs+26a5Gur0x8YEO3TXZbVKj1ufmL66uRbo/AG6Z8+FrkXBfJLzJYXhdbiNfj6gWQLXaSW/IJ2035qv9m3Jr4ZNwDl1c3Zwngzfny+Atubm5NZ+Y35bb7LdnN1Jcbcjz2Q25n61Rd+QT6ztzK+uu7N5Vo+7OJ7/35IpCtXrJlyOXgMpudY10C2u12pgrMkfkdpJqdW92xdSo+/KV+P58PeKBfML6YK7wP5Td7NXq4eyxQqPcQ9Ejuc37aO43a9RjuVJeox7PFctq9UTud5/MFcon83XNJ/N9eVM+SXgqWxLmqqeRbhXSnYpTQjmFdpq287Tdl1UeHa4Lf+iPW+F3ffFgOPyjZ2Px74fv98XHh6MNY8If+eOh8POxeFk4BiQvxIjkxdhV4bJJu6mXYvZEfbmvLqy0F6cA45eLM34FGW/TGA6pL2KT/Gge478GN58vi/O5OnI8ZLAt/Ioa468rmxpsr1ex2jFkw4bjQOdM0PC/vG485Lxg7E677rzr7sdVYkU2IEMLX75uH2s7qKXYMU0IUdUFopDHv+Oz35WYKf3sNz7PXaWf5a7Sz3JX6We5q/Sz3FX6We6qSdeX4fvbFRNrgIP6pa+m4Xut5WoyTuDw+yP9iw9w17RPUOMLlwozOkFtUYxgy2IEHtXKBBOKEUwsRvB9TRAvRLC1N4eI+gFWnX53/YfYhiNIKMbKukHehjqFHmgfZbTUFN0SP9G/P9W/U/Xv9vq3Tv/uoH931L8/078/17+/0L876d9/07+/1L+/0r+/1r//rn9/Q5IwHwVhJAnCaBIEKOjOqLPxw+oNAkZVI3dLDjSxPcOBaU5MRO0CKWIMlnNiqoeXqR7GDYN6aNG/rfr3d/p3hv6dqX9n6d82/Ttb//7esz5vHhM+DjodVeh4rFArHgbjvwOrovUnah3OhzV1W6krfbXxeGXYZ4ra1CmTzBWlUUB/9RDprxkS/XZqPdL/BAbz63jJpkrd4FrWQrOQVpGAekd1M4LbA9GtbiKvVNup2zhVSN2OQJ0n9Rh1h682TP1w+6lTJGYHKttdQyrbCHW3T/uYQ+oeH5kho1rjaiOCO5q4iLqPONNH7h/KR0D259A3tmCB3xVtJAZ3B3ACg3/Q3QCo/+h0m4j6k/SUqPoPszv92QlMUHsWG9f+ogkmFiKYV4xDZzGCrmIEyWIE8zXB9wsRdBfjkCrG4a+aYKtCBAuLfaK3GId0sTz0aYKtCxH0FyPIFCMYKEYwWIxgUTGCxcUIlhQjWFqsqv9ejOA/vQlQEfulO4qXFuj/lvq/9tjnsPgBf+OfxXrOf2mCH+YnmKj28WmKHxWi2M/nXZCJan+h+HEhigOLUiwrSnFQ0XwcXJTikKIUhxalOEwoCqhhE9VyX7FaP9zn3Q8nqiOKUhxZlOKoohRHF6VYUZTimKIUxwpFgWFpojquaK2vLEpxfFGKE4q2y4lFKU4qSnFyUYpTilKcWpTitKIUpxehKGpPTFRnFK3SVUUpzixKcVZRirOLUqwuSnFOUYpzi1KcV5Ti/KIUFxSluLAoxUVFKS4uSnFJUYpLhWKb/BQxdbnP0fMstQb1zu20ddmKRtnPwIL4OdhjlnrIx5piJcAP+8Qis9QjBvyoAT8mMPJa4UNmv0BDH6z8uHqaP/sz0ICZFyR4wieK60T1pGR8p++o7U1UT3mzwFzVYqb+jaxBLOGzuoSU4+3RUvyVbSmG1PM+MrFC6gUBXhSA/ItVkyag0fVLMrrCbMVa6mWuhQPpexXI89+F56RqNN9/TfRBoEeK2YjagSz6Wmejn5j0vxG3zOSsfX91lUBhhA3T/y+Yqd9SxYfjemmmNaTeJgsDWuIdNjUisokpaNrbE9WbUos756nFAw3nQsMwMKrzG8M1WAP1VM2N1Cx2UzS5m+I3rqYgimluimYXxdaI2oUay1IfYT1O3301do9PuNFXO43e6ubT4uJzuw9xv0NM69bqc26QkPoCgRkAfEWsAfiagOmTW39enAqAbwT4VtL9IU+6vcs01T4C7CvAfgKUwBsLsqEMCzKTChJRB5SRPTsZjOADy1jIeJ9W2dRZgN1CsCHcyFU2tc0dPUIdmjfRoV6JJqvDEIxB9HLJ++EMuOh+6tBpNkUSjFNHFGAMkVs7kYW4AVVEHSkVElFHCRjXoJ2Wa5KEZrZbaGa5hOZNEprfU11PUcdi2nZgslK+e7wAJwhwouRkC3USbyrrMOXglDLyRExu/a06tTC30wqwBeB0zR9GpxVlJYxOQHdMKXRY2jFY2Dm6q60qM7rXj3EMb+cxvHWsOlNq8yzJ1tlEjaT1yGQu1dgIdY4jXeTd2ZXa5TynXc4XTjxBcbs8RbW+G/EYpy5Ekt1zewyltyMvJgBwU9Qlgiva6UisLpUsXCzpcoeC6cWpALhMuF8uwBoB1pY5HZhGtD10Na8joeYR7UqE/6CrPIZUM4Dqj7ao/odbVP+UO5Lu6ab4s4vikADi/kLVWq+ukwJld8mQul6AGwS40emtN1GGaXi8WVjkiuktAtzqZkp1OaR0twlwuwAbhNNv1R3C6U6JvEuAuwW4R4B8o8VGEcUOdW/hCimUh2JVNE7dV4ApRd5fOHKKekAiH5TIhwoXZAo7XPPn/mEBHjGEMIOykCBZqFJPlWlH7PSpU4DbGPU0f7xCPeOKQYUTY/7E8vo48WP4CYT/zPCTBn6TwPjRbXAY6dDDSK16lr+CO0afc41RSHsCDQLz9ND7QuHGySkekL84NPKXhkCOefszlqMTstYFf0n4Q/0EezTOFPPhDwdRzDrO0gvgrxv+UPXAcRHHNaz4FPxhZ/wrqbBvI/u9tFr8Iyx6j1ZQZW9y3jWnXyPlfD2WvG/U+wcyfAP8oYH/yGyPSZi6S2sSHzsT5ycaRJp9qR26iein6lOpqc+If4EZ/XNngP4CwYV2AlILvhoSE3twS7sHt97c4e9vboo+FwVVVUpX1bfIvIWrZG+/U1X7INzL8L4I9+mqOpK0rqSuq/0wqp/q6gC/PZkd6NflWua3+/hB/vyiBZHjC3cAGtyelWo62K+THiLAoQIcJsByAQ6Xb/8Wef4rDEAdK5h5rJI/YY0soBqJqyOF9CgExlJyG2crbHZkRB3t1NvRbjrmvj32sYweKyLqWL3fFdqFlI4t2f49BpOO1t2GbaRFw9ZGuobs80FegYW/xfC3hJfklTpJKuFEEkfQsk4WDBcYtUfEbAlRp+ZE6VST1GkFUpmcT/frfpdFAxXKNOyAsH0FWLnn0DiwhJp7aIubk4e4WDnZWaabPMRlusm2U+HvQ3Iq/A6t16WOU2FEPIRbunGVAYeiM+kAH9TI2QhUseit1jWF8DkIi1PjL1hR/wms/gGjt33GT0bvKlHMa50jf85GGDvOPiiYb9Snwe6/3IPdP12D3anUFfb2Ddu+8LAPq/y/KdODWOVRqmktokNfPR/aavi/tA5sLNq6XHtY703YFFP1zG2fxMxxLdXaBzNz4pBLGseJfXx68NtBXcx9Wvb8jlKX+Gur3a6iqfv66GDrjT46VNdaLZuig5KsdZRa46/lxbMaPNii8fjBOpSWZb4h9Zn52IAH+pxOM9LpNBZ3GjxjCurV1TIkrZJx5xrqLwCsZyBin0KFKhVQV+mPsUoP8un+ZJ9WlXoLGvX2X1hvB0u9baOuwywc4gP2N0hXk73vdE7jJt6gfaivdSt1C9Ie6myORxtEgNtYKmvU7Uh0mI/0kzsYCbYHlQG//00Q66S/zj91ua8hGh4FFXI3UTXEIBBW92ByiOLQRgwdKaEHMHSUr6EaQhXqIb+jd0NRoNJJ44B54mUC0K4RzCtZmG3Vq4LJ1Wdfk2medRSYDF4vQNw6Wb0hUUxMxX7TAd9iFturt4XuIA86At/hJLuodyXJe07k+w74QYmMJqsPS/k21NJHQsctApiPBcN+AsB8Ihh2GLRurT4VzGdSb587vL8gEIZ/1q940jzEgA814MMMeLkBH27ADxvwIwb8qAE/ZsCPG/ATBvykAW8y4KcM+GkDfsaAnzXg5wz4eQN+wYBfFBg7wPvUAZZzD6zKkmOQ4q9ZQkPqGwG+FSneO+CW4smsTheVvm3VPpKyFGnftwAxfO+gkiRpe7VfoAQ6t7TvL0n+NWlX6gBhZMvsgYLRMhtWywI0rgB0UIDGFFCxD0aqnxAv3v6F/tQhyXbAkO2AIdsBQ7YDhmwHDNlG+EtRkQD+yoAfNmgeMeBHDfgxA37cgJ8w4CcNeJMBP2XATxvwMwb8rAE/Z8DPG/ALBiwyT/PT31Hkf4L7jmXM5xpu+AkEsCpZ0gg83AFZNAlkHwPWRZkxRhjw4Qb8mtnf/oFz40+1uiEXK9hT43RH3VjuEXe4R5x9c0N2HH59EZb8aO7sW8elS8WlS8Wl/8XFjQJayaEsiGF1WIDmQqPUAaPUAaPUAaPUVOMHku64PX3XrmTk+1OuZAc8wgGPJFBPtrf76LIJYHw0ouv0xylv+uMGfIQBHykwZuSvmI8ByEddw3YeTb0iYIPHBHRTM8BNuiJQpNnxW//Epl7h020tV1/ka7MVHnHfSQ7YdQefPwY0HxrNB6Ye62sdoVbylwbq7KNtZIAdTe1T5yEXukZCTn2cEHAa+xgDPtGATzLgkw14RaCIAGGmqlA3PE7rhoi4j6zxlVKkMVAk0LTGq9OQW01djTo9UGvFy8EcwMgpk1hpOANjUXNdhcAYpxLGOJUwCriwfZGfy1h1Jn9DuKAlzuyUOjvrA+PUajeGhudzCJe18Zr9C8eL/htXl/JnMMFlwv9y+aLGjFVrJDOXSZTtTFgrUbSANVamzS1l2kSPwXmBWttjcL4NR9UF2MFP9PFG14swcBIF4uoSV5Xo9unAvJ8sebfUugDp5qf4WrdUV3E2RqqrA7XK2P1XgwvkWbsj2MawOygwPUmYUtvyOWa7kLZVAi3pxIYx1o8fB1uFPg41d5+42LmZsx0k3fitU30wEZzmI5Vdr/5vm7v6Xzca52Esi9uGm1JsLwC3Mxv3pw9f4/6FrXEAOMynPV3+qWdgtazCf2fiv7Pw39n4b7VP/F9fYaWOhtr9moAhb4gHnZIbapz6lntkJo+WZzen3TzDb2N8ldo7COBIMNB31kPAPozIY8dCze2LkfVOt1VqP8T8t4MJq/3xWobLfMDqwCD1ZM3b8Rlc7mv9oTqII/PZyyahUgcjYRg9ykH6ws/UofiFNdixlgepJWkSDNJogeK+qkx33dH0vwrlGUx0r2QxToZ9cq2vtVYdibRXIO3RQfdIFVYrMG4dZu1YjGt04qar4zDuSuzVxyN0vs1BAXBCUA9oJwpwkgAnC3AKAa0T1KmY/iofjESnB2uj8RDIJHIGYcQfqIUzkODqIdeCVzJ3LYxTZwbtsw7Z0j1BnRXU9tZYOlKRTfADdXZQTyarg85kwjg8vELTSWulOjdoeIo8jmqMUOc52TmfWAJWqQsQxAsZLgxqmbwIATyMcbFgLhEaLcm16lLGGOInXQAmJ8oklP/yoGugoBKs4cgt1dqg46DR3iZy4AZkQrMF4Aouv/jUQmod52uoh0+UutJdpYC5KgdzdQ7mmhzMehFqjSn9WEtIXRukwWy8uo4A0Ds+K8vRO8ar6wvHwnR2a0Cm0Zi6LWBuWbydYw7EeX0DTuXn+DjiToyYwPBdBny3naBC3cPT6rk+DFrqXvsrlrrPhvOfqLHU/Qb1Awb8oPGBh/gD51GeKtQjAX2NmTYebUowHo1UtvOPC/yEq8BPGp/aZDB4yijj00al/NFM/IxB9CwpavyJ51yfeN6OqVAvcJYv0Fl+yWYQVS9jdR+sI16xs+U6SGSpV438vmbk93WbU4V6gz9yoW/zcaPNx402Hzf6vztuNFG9FfDIxYFI8XYRis1HljYfWdp8ZGnzkaUCo9z/wJGld4qOUZsPNf2/e6jJwrtKbZXzPUNhfT9ANyRxxIc2UYX6iPXPS3TUp3aamPrM0Iyj6nPkcKkm42V21ma/FM0WvWCP0YakVewRr/fS0ozrWvLEigO83ktNK41Fg+d4WBIPx793zfD1771DDv7LHP/emezQY1/eUD13+X0I/2uXQBQwNV02nGldYYtsgaJ2FotapW3H7bSrjq7E9lpvt9ekOJJf5MuzI+va4duov0L/9aE+e3fiErkjpsHp57f6Hfg209FOG4iuG9oGol+gEG1N3/t+of1D1/tg4LDvcNcf2w6r93oUuRt87eONK95xOYTBnN504/Ct+I/DWPNj7c50NmaV9oZC4Cb2ksO/m/HfLfjvVvx3m+5tcfUE+rQ2oHvzSb58F3BPBbP6Ah4HDWb7jserZwSXx+dWoZ4Vb+KYqVOAwXNMPNJk8Lzg8jrtXsDePACcXhROA8Apn3twKM5ApV4S55lN/TJj8ubiFfYOKvWqJHuNHbrj1OtOPb0h7jfepNw6Vr3J3rKQekuieMM6RL0tUXYq2/n+jnxEV7xS7wqx/qxS7wnGzv/7jMlb2g/Y+x9SHxLQWqk+crlnx6qPhV+2w7dGomz3/Z1I/2lh+k9z6aHc7F4co4G6KvV50Fy+AJZfFGb5RS7LMepLdxXU6ftDW7dSX+VURQ5RXH3tyKKulbj6Jgen1Lc5db93uat90KOJ3eZ2vVJ5JwZWauXjrmCtvbZ5d7DW3nZ+jwFvNOB7DViOb2Pa+2w+xpVbrnu2LHW/TeO6ZstSDxhMH0RYbw94yIAftmkq1CM8Hm4Q/6dRhseDxpi9FQ6jd/GkJlcXra60byta7ey+vFy2HchLDjk7lm3S/YR0Py9Smi7uGdp0sQCni7uL7DfdiHs6DiyXyojZL0BwXRxU7sxfB5c71fqueYyeTx5tlB2n9oMSUpAtnS0T9vsS2btRIe6gQhUAcQd78LTfuchXcbS3/B+6iq8ptEcc4tZ7xMl95nn3ltPZo6j+wqFelD/GRrzPbMTl5brJDhfgCAImrSeF8V6fcwshNh4vwVDjHcmvYdjLskUuCiTzs8ipefSBeNzSyBbF+2hR6A39VwQd4VhBg4S5A/l+EewVXnVCfeoBIsVDK8iFj1Qdp0EkuokEbDVT/aT4+rN9fHYqH7ssdQXale4nxdegXfS17jU/O24HLgPVyYNSJ54SdcxkpD1DDDWPdYeS7tUEFh4rEwaLPLEOC4+1i1Jz4bG6USoLj/WPUll4rJCUysJjDcVgkSfWYeGxylJqLjzWYUrNhcdCTKm58FiJKTUXHms1Bos8sQ4Lj9WcUll4rPeUysJjRahUFh5rRqWy8FhVKpWFx7pTqSw8VqZKZeGxdlWqdHqsbpXKwmP9qzQWB/j+tSWyut/AV/6F9E5RPJbZSp0GPBbRDBZ5Yh2Xn9cym8EjT6zDw2shrrRWafBcqjN45Il1eHgt5pXKw2u5r1QeXguCpdaH15JhqTy8FhVL5eG17FgqD6+FSYNHnliHh9fSZamy7rW4Wdr02OC5/FkqD68F0lJ5eC2hlsrDa5G1VB5ey7Cl8vBaqC2Vh9dCbaly6rWUWyoPr8XeUnl4LQeXKuteC8al8vBaUi6Vh9eic6k8vJalS+XhtXBdKg+vpe1SeXgtfpfGo95rebzU4dRrAb1UMfVaQC+Vh9cSe6k8vBbhS+XhtUxfKg+vhfxSeXgt9ZfKw2szQKk8vLYLlMrDa0NBqTy8thyUysNrU0KpPLy2LZTKw2tjQ6k8vLY+lMrDa3OEwSNPrOEWm4arfufI2aSReI6MnzskX9vxstBxQrmg9Vb17HNHvL758PBd37yZjqU9hM5f/9Rzce3yEZ/c3CobwCvxSF+5A59iwKfasL0WjejTDJLTDfgMG46qVeXGYs6ZBtFZBny0sUDCC3wMy0kyYxX5seFby8dTLT8qtSwVvNoo6DkGfK4Bn2fAZ/sd+HwDf4zRUBfolZOsBrnQRusjme66e2L41h1fnPx4Xgk1K6qQhF6sVwu+k1jmFUWstleo2p4cDtX2v/uQzgis/fFU+Zt89uXBLDVPD4fi58/29zHbT2V3uGtyJf/Z4VuGKViGZ7LLcHkhkeTyPD98yzMPy/Oc0ZFfsAt1hVGodQZ8tzGyXWngzangqvKcSnhp+FbCNzScvehq1daQuotGKQDuZkCpe2hRsi6E69isWVxjjGTrbbhCXctayMt6zLreqKcbDPhGA77JYHWzgb8F4R15q8KtzPYVX85kssqYh263V+2jagMOna/6dne9OoYH0cwFW26h14ZvC11LLbSXiCneDe2f+rpuqW3VvbyI+ldomfuojHWj1f3ltbF4OOxjt/jUKZPot/UX6gFuxFF4OL46Hopjhb7hIwW0BtRR4yQkvmX+kN6n0DpBPcysCxDInG9O6FvqHtCIuZ+gL04YO/VY3p4GWbdvQxhr3oZQjUosY407x7iR3hq+jUTj+5vZY+OjItZOGd4ZvmWYiGV4210G96URXIT3hm8RqBnezW4G2oswwdXfPxjmZXg/uwxrgzmi9NHwLcNeWIYP3ZNKXG/XoUGEX+ForVGbeETCfT1P4XB9qw+QT+cgzRpotx/xMGvjk+FbG9SiH5cwOHw2zMvwaXYZzskdHT4fvmW4kp63PZd3lo11XTVyF/77wlZ/3icBBOADAT4U4CMC8Ey2oVG8YGsdFepFU0+JqpdQgI/TutDjhv74sq3zRNUrppH3qqEMvWZ85HUDfsPYkPimsYXxrXLzpPfbBtU75hZG4wvvGZb4HYYidYQ/Rzy/Gr5NuwBb9kv3gGOpT7gpDvNlOTQcB4WhR0b4NdZclTKPf+Kb4VsTJ5O6+PV3UejXG2LxGcL6MgCXQp9X8w4U1rzzqtt7lw3b+vs3rL5vswe6sw0D7wtDkr40B0C6NmwfLNoE0y2x7/At7HUkLC8XE5aQ2j+kh78DQnr4+9qohW8M+FvDd/UZisE+ZSwGe4ccon0M2HllzFL72niXmO0XcgQzj49h/+FbwUdRBe9X5hKnCrUspAcm7mAHhVy3kBxs1M4hBnyoAR+Wv6aWGzV1uEHSkVNpBw7fSqvDOjugLJ9j5kijCo4K5RTqoOFbqN9joZaVFVKgssaYFUY7fmnQ5JmLDh6+ZR6JZb7ANbo4+T50+OablN1DCraVU4blw7wMh2WX4TizzxxFZwse4c32llrJcfSeyfEGfIIBa28vwfpQ92q6etOgOcmATzbgUwz4VAM+TWCnXo8YvvX6AY3oh5eVqGqeYXTkVTY8lBnAXE0b4mxwujEXnxkyTIx8UwMuLxks84w0Rw3fVllDpt2RxpxxdJnjJvVYzzzHKPK5un3QkDovJMfqaHVTU9k3zm6ZvboJsNHSZjtdmL9tLgrV2mrPxQZsrgNekr+ZLjW4X2Z+KXtRVcPLjUdwDhfYadZjhm+znlSOzbqirKh+ehfrpzlWDWDuDmnMPVRVrT/JxgCwkRoAgHsZQM/Tfdhhji1r3Vo9IPTZZOjJ+paP+cbVg0yFuIcoGnAPZ+OgBdYYLVZIKr81YHOZZa0hY1cY8DqD55UGbC7LXMB7Rk705THq/rVVGrNHXGXk6mojJ+ZKzjUhueSPPr3eILs25LC6zsBfb+BvsD/h6lA3GuQ3GfDNRo5useGYutXo4TF1G4e25NDtRkgrYFvmdMMNxkdMf4HZJYsvR8XVHSHzZJ1eokIe5pXfWxZculo5fLvvjTRXHles+xZbXHy0gERnifBjecXtf8RfccLwrePt6B7vbD3PkUcWNVmN4+KcNHyL81sszonZ9vKT5oiR0/Cbcg3BU4ZvCafS5eWFDUF38ZwinTZ8i/Qc9fNTDe3r9DIuWFQ9i9PoqjLuf84WvmwNy9xGcqoBv2B06hcNeMi7+F4KOUSXmLqwuaXP6TZR9TISnVnmEquzh28b0DhwVrZYvYalnuAeB53inDN8i3MUKfSrs6eOjeKH/ED8kG8YQmFuz/nW8Kbk35BoqTdtrWKieitUeDcvU7xdlOKdIhRgMxt6zHsG/L6hpBTcG8mb/M4dDo32v7vJ700/Nv4mt1v6R+qwMN4WV1YXxkcc/FMvLiPF+lFaCybwMblF54gwAM3Oew1KHYkYenMUgemtVerosOtWmpBaEdaydQwDlerYsHF1DrTGh9hKv+Bh4yO7xaLqYxwqztN+7k8NHbOwFfmZoeB9bjT+Fwb+Sw3TM0i2bVqBShI5C/QH3zSSf2PA3yKs76vYOyzJLbVPWD4RVfuGjZzvF3a6iXPZRVTtbxIdYHMylOG4OjCcrcRG1TJMd0EZMzkYAxdqJodKFpyx6JLhINYeS0KvFFy/R9i4vyfPVvDLhm/ZUli2S7OnDdPOXBl2YHOF8HhDWszynxD2rIs1w7cumrAuLs+ui5OM8pxswy6z4pRwTjGvGL7FpMdn1mYX8zR7VDCtJ1C0DPx6Y3C6zoDPsGnY2nD37CuHb1XQluZ12VVxptHiZ+U27dXDtzzNWJ6rsstjjlSrjd680VBA8vTU9cO3nC+QdnhNAceC4Y33djKY7jfzYIvpFC50yOVcW0iKOfPNZ7LPs6s/x4ot4dTM+fmGViQ3GrUE71MBFTO/6+O64SsFtE58rWF1Xl8mIr8+3+Rs3PA5fAv1DyzUDXkLdUnemThHkI7X/sJA1sR8qZHcObDg3uG7J379Jr2FpXVreeAujBddYlbqqkHNvsZ1FZjna2dk2odrHQdUBS45Ho0fmGEHz6MVSKd1bhm+rbOWPB03fxePpuOjz2qxKDqwHH/Ed3ddFjvkcNvwrVdarb61hBX3DcO3DHTS4XZ3GQqcU3G11LpcFePO4VtK2tNxR1n+PR13D998k4TdlS1hrqMqXIaNw7cMZKDck10GU1s3NfS39J2vgbxa+X3Dt5jUVPcW1MqdMjwwfMvAx4TvN+bx8+ySXGtMxIU94tcZVNcbit+mvB5x18pkkZPpDw3fatuHPH8P2tXmHBvjqbY0jcSekPOfMbMvSrihrE4fMstVYrwn80IL9B5qmdlNTfUo73J2lG+/vkn7y24x/DG2OgXwjQjr1+O+NHT6/wFl4eHhKyTkj9vCpYKNUTeF9Q20o80baEfkXfd4dPiWbTaW7ZHssc9cBSthU1CePv/48C0yaRSPFdAonhy++f4N5vuJPIuehVct8zTMU8O3gDQPbypBKX9m+JbhTpqHn84uxAZjQjW9QHcYeHM18U496NJF/yaNAd9jDMwbDbzp2LnXnPoN+pcMIbnfSJtnF+Zzw7ey/wPr+lmvPe6F6u5Boy6KlP+F4Vv+S8kt+bzbOxBWz+DS16YygJ5F6EWEnrOh5zUUUi/wuqNSL8pipa2KvCRrky8zUKNewWQv8RKo7XYxq9oU33MM38PDYVJLNuktGY+YyzgG/JgBH2XvIrDU4wb+CQN+0lZFKtQm/sSLZfzFp81g3jZ9efi2KZ+ne8ndpkq9mdVENeotbJBzfaU1yGuG4laoT7xujDlvGLDdP5z6e2X41t8Sul8ku/qyJVzLs1f1FaomUzjzVM1rw7dqJmHVvOoeLqO43uifepl779cbw7cQb5DF9vrw36LtYbUdaSyElbKVOsuyy7/P2b2Z2dnA7HIJFt+orAVcb0wufdPyu8aI8Z3NQYDfy+1Sbw1faeR7WLI1kDyLuO8M8zK8nV0G26eDZbiZL2L5vy9DSH0U1sDHAnwiAD/GVLCctPXk3exymttNHjFWr8yVLGdzkssE/tSeFaLqM94r5r705f++vjw3IrzvtXCfx3T8aPiWh2z6D3Nset7B+MlwyPf/7g7G+XTlS5m+p9B9aVe7+8TMV4bAf23oNd8YA/i3BuxasqDH0T5z6rOUx9Hq8X2tT8u8H0f7vAw+tW+k1p439hMYP9uMy7af42fx1TMgo0kp3+tl+xWKQzaXkm79RZm+1zakDsKPoJlzMANxdQgBNI0fiuCWuA9U43BnBbl8Ybq/w7mV7Ar9TiVQLi+Nst28hSCqDohABXxZxrPqsoj9KBxm+S06M7trHb9l9WRIe5eldGOdkh/uUSvLyggzy46b5cQ9XOhNN4h71CPuCI/vHczfa7Pj2py4I71aiAear4dDh83f0e4fg9L8Ffe0I8kBNyqO0sLdhEDubaBVrhvSK8FDfZv4J7gMMQT67Yq/5haSN9ZGte5Y+ltuRqrtir/kZlCPcb/jFpJX3P4XX1hujeiFF/rI/UP5CPTUOfSNLVgTyPdSs7xVSTqB8WizPFyZ9X4zBP7sBCZ4vT+HLCd4vS7HBB5vxzGBx8twTODx7hsTeLzqxgQeb7YxgceLbEzg8d4aE3i8qM4EHs+tMYHHg+pM4PHaGhP0FX5Yiwk8XkpjAo930JjA45UzJvB4w4wJPF4oYwKP98eYwON1MSbweDuMCTxeBmMCj3e/kKD+X3vUi7/h8SAXE3g8t4UEEz0f02IKr6eymMLrISym8Hrmiim8HrFiCq8nqpjC6wEqpvB6XoopvB6PYgqvp6GYwuvhJ6bwetaJKbwebWIKryeZmMLrwSWm8HpOiSm8HktiCq+nkJjiWKEoMCxN9HwKiSm8HjpiCq9njJjC65EipvB6gogpvB4YYgqv54OYwutxIKbwevqHKbwe9mEKr2d7eHDweJSHWXg9ucMUXg/qMIXXczlM4fUYDlN4PXXDFF4P2TCF1zM1TOH1CA1TeD0xwxReD8gwhdfzMEzh9fgLU3g97cIUXg+3MIXXsyxM4fXoCpt1l/vMizLXoN65nTbxfoZG6TdlttFOlql+atox3U1TnJKtJ8vw2zJtGh7DZtU/bbPqn2JyjVfHRch/vLe/Dt2uDDqxx3PsPk7sPn7HXDshUug58PHqJE65r5NyXyPlyYVSYu7pVPp+fm2J16hT2XK21GnM8xv0B7yNPsi9djdeut7fr4v7XpnHq84xJP2jbPLuRYttdwj9kat3RHhUPKT2pYtpANiPgIaJgA2j3e6feoDfiUd7jilAV9ex7nt5chqmkq6784sJOymOudnbT/6PIBiMNs0yh6Yaaf7gItkJUcf6tgmFv6dWRSbyi9yywWyn7zkbzCY77oTVkAGfvsH9Qnm+R6mzuHLlVXMQr7PZ36HUmQFXVHtcnRmpteLlYApBcOoULt9KY9ngeAM+wYDNE/X6qi5Ke5JBc7IBn2LAp5o3KpCP6SC7btpDanVEe5TOEeBcAc4jgO8SP7/MrkC+RBM9L1W6VS6nSjkY2SqolC3VBVwpI9WFkVqluzedvcVOCxJ5gUjkhSyRh/gh0cVFEl2ckwjy8U6w1l7ekJ06gaKGlF0Vh5lVUaK77VC/t7ttecF82e625X7tbnsnWKCrQdwLIQ9nzo8xJ4frPg7d53L0cx3hZ7t3rR2wC3rk0Ap6nw/57+xd0KP8rX9U14j867cEQuoaum0YgPUMuDx2LL0ArCMfJLTmVdyaR/vrKtWVkdpIPBjHzE+dAiO7JOR6XGe4MJ1eUIOpovEQ9CpOx/sWbLa6Fs6jIf0oqXg7S1K5Qafi13l4394NFIr7EeeDcw8RU+qqgMREOIO7U2YZ3I/2G43739idjqDuhLef+eHfMfjvWL8xf7Vuq97Rl7Crd326NKOhba4LQPdxSf3UKfZ1CzChvikT6s4F+8bOdNePSJelbrBrPqpuROFaqQfqm40msVcmkUMDXWXjr7Oo/MdB3n3ma2fAO98mXkAbL0X8FWXwBM7F1vFJ6rZI7RbxaJwl5CRoaQJO8Otj/Sf6oZR38OA7Xt0pckl3goymNWbah3uyv7VS3S2ChmzwW0+TeJzMU+BkdQ8O1GQHU0tWQisZYUccNkYK998NHn37Xo9093nE3e8R90ChOCzfATREn+Q06YNYPzvyBXkPRWQlGkMPu0KPcGg0hx51xT1mxFnqcZujvohldB654ENXt8tu8JEsF3H1BLMaiY5KvudhvHpScBF1g193u3K1M8Xau8FHmoKk1CbMhMGlVj3FmDw84upp56sfYo5HAu6ZbBxmm2+/OgU74an47zT8dzr+OwP/rcJ/Z+K/s7CLNql3WPrC6l3sLef560ao9yO1VSRy54vAlteNUx9Gakflcb9AZOsY9VGEBtAqvA/NoIA63Qu4nq374GsRZ7njdfzcOXoaeAsD58oAWIsCfhYLeFR9jHEX+Emr+d6kjST9Z1Bk6zj1aUQP0p8JwBrM9MkQ+bng+KS8Gbm1+kJ6XVZKe62GqL4UqiwWJtU49VUBXhT5dQEW0ydjecZicVZxWS31DVWjLuqRVNRTuagRdbCFcaTnfctjGd2BurflwPsY8L4GvJ8B72/ABxjwgQa8zIAPEhizNAVzdJrkli8+QbK4OsRy6YtMToU7XcgPtYzC1WHUmVK2w6VsUXWYBc19PDY3BN4L4PUd0va8LHSRox8Mt2WhD2hX0mjSRZRsOjvJolE9pL7Gvj8a+u3JjEGjYg0pX0B1CuKqcInCr6nOCGid5B4eDUajfWS5Z4gH8aj5aVR5IGmnu78ESc+wdNK4WmVpdjK4AO5MwZ3l0J2dg6tRqy1blZimE49Q5wjSYAkquVXLJsV5kpkzCGgdq87Pyp5EgWgcYTmT85GWM9wfZZnD9tGWaKoxtcIyB/tHXMP7MQa3Y6lemeo4y9nGVKFWWsbx+Zg63nJM85g6wcX+MdfMcqLDxpHKi02t9QJL66gXCnCRABcjsCUAlwhwqQCXCXC5AGsEWCvAFQKsE+BKAa4S4GoBriFg0mTsamt9tlUEjbxepI2bgoeihSi8a8ReDKnruSmheUUSIupGDUL9rSqj+lurt6NdazeOpa6znDl1uTG/Hh6sdQzkbfFzO+rZdTTPrvZcOdqYK5kYyrCYBpIKWSzbaVfkWmk7VSiMxFvR2CKm8nlBe0nwfGPg5Wa7dPgOJi/TGvMlflpjvoHWmLclRwTvyYqHASRjm5B8Sp9APnG/eeG5dvPC85jNC8+bF543LzxvXnjevPC8eeF588Lz5oVnL4rNC8//Ty4806LL5UNbdPkZmiaXFVldWoOrS7eKWWgv3q6RhY1bLQ8v8N3k/DqbjbihmSaTh6i+T86rvk/Oo75PttXu1Y7avRrXcP5omqQVomLbFunLAaywNijMXxqitPB8MBpxbQ3jIVChbrO0GdI2dQqZcMswdpYmPYzqFazjrdTtZJLXSXK6heS5MtctJL9V15VpInqBZToAhwtwvQA3CHCjADchEAOz5OfqZmFwgkSeKMAtAtzqZgnppg8t3W0C3C7ABuH0W3WHcLpTIu8S4G4B7hEgq5hkZG0s00bW79W9haujUB68K2icuq8AS4q8v3DkFPWARD4okQ8VLsYUNmLz5/1hAR7R5ChnSfSprPzua1muBTRLHWSf2rOPD5I470o7C+QzK7M/szL/Z1banwHcBpZkFHbahRCzh6IrhjYU/QJ71toiQ9E6f+6ZChqM1slgJJE5q6z2Po0rs/Zy7OPey8H+pKuGrz9pG2y0K9gNOEj3hsC/2+zDQfIggTMnXDO0hmjFhrjaaIgapyHC3Azr/e016h6rNirW0tQDtPd1td/VNrthBa/nttkOU1RICvg7wFdXDY3kRjmLi6sLrZcj4wl0eScy3hFKf4sv57F5Kvl1ZsnvFdftfQLcL8ADBEz62I9FX+cz9p20htXjFp2oBugJhNb5QOqfdKR+E3vta9VT4ot9moGwekbTj1XPuv20AJxFu5Baq9VzzB5Q/197XwIf51XdGy2z6M5o9Gm0WJIX2fLu2I6tOE7ibIykkS1ZGyPJSyA4o9Ena+LRjJgZ2Ra0FAIJawKEACFAwlYKFGjZSmhpy1a2Qtuwl7KvhZatLaWlLbx7zj333vPNIikh79V97/3009z/Pfd8d1/O3c79Ji53gyYHtWBrVm6DzrcpDtINirc43Oh820djTfHAvmHH+Y4eUWh3wnG+qzYADKXT+Z6XYmPhON8v+/zvSyidzg+8FP75D8s+/4eyz/+x+uc/Kvv8x2WUn2jKT/Vmw2fYSvVn2Ur15xj+PC6dkzZTRv+ippu68uePorv6s1W6qw9Ad/XPSjxyeHf1Ad1daUdTyZ3Sg2+39dLBN+y8PljSed3u7bxOon5Ru+X+c5b8f2X4Fwzzk2//xujlp+A+UhL4h72BDwPtL2BL+qN1iQ3Of6l9mY/ZEycfY8cUf1Xd1YT38ZLwPuYND/cSPqp2JTfASx7gy4ethx8u8/ATJR7+R63Hw0GgfaJGJaDLuV9tYRwzZXOMnYas5mbC+mRJWC+trTDM/OWlO8zgwbOPqWcL3gF58gYaYsLON+r5JARPENIq9K+hn/qU3v/HAvp4DRXQr1WJf8oW0KfKCujTJZn2KW+J3wpx+it1Sqn2QF1ft2xzt4e69C5Kn2l9uKn613Vyxh1eec4VgkOM7ORaAvUu4nmLkpO7d0A4jV4ZCtbZQqse+9sAKflgDW160dq/mVKghpOH9dHZgPPHeIRTjjHPCdG+rJwlhEjaeq6lkeoTx3leiDpG4upwnu+lSGlNKx4091RNt/fZR9bt4enbz6zS7X0Ouj0dVSUX3O2x8TM9jc4LQ1gbHqbDJe/hAswrcfr4Od1dmvRXOCd39wpuX6h6vm6DDd7Uy4fZsWd9yXeF+62fv3Qb8XtQouk3suIHoSG/ERtyCCeoSrv8o9hj/L93z/DR7+zJxvhiaHH9Rrbx7vV5dulK13JeFGLV/gE8/LVgxvF7wJHe8nkJw/cy/FKGX8bwyxm+j+FXMHw/w69k+FU83HrCpEJERvBttdQVH5ZdV7PzOtXvyElCSPYCX6qTpN8tIcnm/mrV3r5Qp1r/g9wq4P66mba+RmeJzDl6s4kkOcb0xRrLhMPPF+vWsnUHibgHE/ElOkQu/XojJTfCIoIrmSt38rCSuQqHcN4c6jKKGt5iwmkEVSOQfqNsBK9SfMFepfh9lT9fgrm4ilNpP44j59+WjJxv94obL8Wk/n6tSqr09qs1FGxFb2WKvqzXIq95lBu4m52vrOyFifuXS+L+Re+oj486vlmreXCUbqZjfAj8tJdSmkG/DR68t8a0preGrJT7NoZf4bP4foZfaXDYeTsbyGT7YFyvZhgn4Vrix3H2K49snM1Av/136szIV+v03P4dVIegrr8TGtRDdGjnXcZBOO9m+D3sgz+yH4Sc1/i0BWK4Hx9+qaF1oPfWlKwDvbem13uKB1P0tUeWosOQomtWFhy+DoKDbBCQw4f5fOnrWgDQjmY4PsyG4xdiJX+fPvnUYI6dSfgSC9kxKH3eTMJXlB+OklCfGJN5+RDk5TrVaEvOTFU9G4UzuMN6BofPVXyoxmP9iNf6Ya/1z2o91nvqtFUpCP++rdPvY6X+xwz/CcPvZ/hPGf4zhv+c4Q8w/EGGP8TwhzWGWB2HSH2jTg0IJZ355xmu3H+zN0bAs9eqe09lXdY3KveE/0e6rIRVoG2b9rd4Q7jLT9X+oyECd2vKCxH0/KAWWsI36+zp0g1RfZY4ChsBHwt5NgI20hxErbHiJSiEb9SPE/6lFvdJmGvWFLoA9+26MtJ3ykk/hCcKPw6k60/dCROjT4TUeW0smU+aoXjlYzd3RlaZc90ZWe0+CHLc41/ZD3vhDGJnNXqVTB8+EMSbZDW96l7La0H8/Rb8fBemeN+Dn+/Dzw/q8NYLTsB+gtkCK046X3+ClU06/cxPTj/VTj/D4UM6/UpN28xVmajzT9gysKiMB/+sPNjo/DM47pUe/AuATtQn9HMaWmTR/Cvk/XOhov9CTeo6nX/TQeIWwia9hbBJOnl3KpjT5c67ffSYFMaDzrwDvMfCP1LXCA9VuNwTcP5dTSFXuOXzS5Vf3c5/6AmYTTJC1MkGqX+/r0vdlPlPzLXeFrhfE8FiPmbuIHQ6/1U9pb+q7vRzH3eyWyyy4yAnszDwCViS/UV1/l9U4v9ldf5flvOzJ2btwoFwPsvG489BGT+DRpDPG0E75HwBHF5AA/UXwfIwra5/KcSP/P0tOL2F+L4Mll+SfPx3TKj5CsNcTdUP8Ug+Bf9VYLpW4a8Z7HlR4OsQwKvrVES+EdLL/NAUv8mC+BbD32azh++wBH7XRlw43zPBhZzvg8OH6laWrf6e+foDhn/IPPoHG0KDs10nQjj/yNL5I8b/qnqWlT82H0MX8twgjLzfUss3fc6vVxD0ezc4K3Rbek2hz3n6Ch3k2vw47DwjLOejwHWEtk868Ot2+XUFuv5uwLk93NWJUt4vaisEvlF+Xt3ZpuCZv3EK+lYcBJgfFVytH896DOJxx2/sx4Bzp87Vd9StmKuVnK0vz35MfHmO9uXdK/tSydnmynMfg1x5no7JZ1aOSSVn68vztS/vW9mXSs42PS/4TdNjLrR9X19ouysMXbO51FQHjt9VN6GizovCXeqS2P36elnUeXEZrdW5J2xkOyVLIPUlFajDzr3hLjVD+1UtbJ7KoRf68ydI8HQ9HD5Dg9s1UOoO7OD061rp146qfnn59jvfCBDfP9QBX5PzsrBnSQ34vwyTyX+sk/w3OveFMbgm5xVePlxsVG7rnL/xd4WjwWANbR7v60ETv3/lb/K9LJS7oVB+WKfuvNGV7Tfa24jf04X3Kk/hvRYvn//I7iy02Z0Ftp/wSC9AP4DFuPouxKoSMcTxU/g8wINalv2uklulyLrBea2qLi3O68L89l4PTJFopP8x3dDEYfwnaHkMzkNvXnEkoLPKq3Ks1APTOeNVOLas3EsoCQaFggf1uP5UyM0f263Sl7P5xH0Mv4Lhd/otrqQUA8UWhvkc5QGukmEvKi+ucLcXLvOW3aMdgpr713qj8w1hFOl/avcrfsr2VV9Xh6TX1xrX19eW7rL9rGS97fWVtib/6dLd1WiDxvo8tTX5AqMe+J6gX1wGf9EvB8Qf1Im6XP6sqLtwZUrUzeYWREMqk16cySXzs6Kh30C/e97NFgsiFAdzKpk/6xZFfd5NSqdzuWImnRW1txVEYCKfW0gXXBEeSBaTU/lktjDn5kUQGKfci0Xhnyzm09mzwnchny66on46m5b+zEpm0YAk5IqYgDE4GZHcwmIym85lRV0suywaYlNnpmKJo/Ep4Zucz+XlF33TfX0jQ2NHz0wci03GRVN/bGJqOmEJ9WPjY3HhU/7VF5cXXdGIaRqSMRhIp4oi6g0U6KLRZMYARtG6+M4nM0uu2Gg+mnDzMuUFGccBt5DKpxeLubwI9OVyGTeZFS3JTCZ34WS6OJ9bKh51C8WlvCsCM0szMxm3IEQqmU25maS0iGBKpjVXcGdFMJ0tuvlsMiPEUFbmsDuezSxH31ojap3LRH3wMqdG/tY4tfK31qkT/mCdU99xGdp80uZz/NJW6wQlJeA0SErQEZLil+4hNANOI5lNaNY5UTQbnRait5LZjqbP6SK+jeRPN9m3EF8Phh9wdkpbu7Or47IutyvmbJS1MYoj4CYcCwTibXSZH/B2hncofOzZwXuCtcF1ssZ2bXS2SC9a0XlrmfN9wTp1Qq9etkS/7OjDToC2rMSBBmkLky0kba1OhGxhOVr6HUd6LCS1uYwaUhfAZROPSH+bqIW3SRdHmuvI7CCzE8yeXmhxjdhLNEN7i0b9znrwC/fdN0A+yF6LcoF6rZ3QtUR7YQDsNBkUdDYrxPokZGyFuEhGygbD2GYZZb7Ixv2zuLhjc2njrksVCqKuf3KSNyndgLFp+WXlTcrGYRpqehZaTJP85mg+t7QoaYklWU3D/cdiicn41JnE9EjctMLB8bGpM4Ox/rgih4ZGJ8YTxBMalS12aExZxGh8YCimcGQsNhqfnDBfNUzEjhIUk1OnRwgHZBQw6KBMBADZGxFpJF0oCjHrZtyiiyyqX/Gls7PuRVE3JBMg0tmCmy8q1zz8NsqPh2RT08T5vDsnfAvubFo29FEwlLeF4nLGnZx3ZYcHn0x6raOyK0xnlQ/Z5IIrfMgvWjTrgJvKJPPJIuR0GD4An5HfkbYx+UlhMZlS0Q5ntVV2XcK/KGOUvoipnEieJZaCTGVK9i3YUQZkViAQi8m8LCflr8IsotTfDRXdhVg+n1weSZ+T0ZW97YJoP5OSYWbkr+xyziSLstRnlmTP3HxmNlmY95DWnbngzpxLF8t4w8lM+my2Pye7K8hptEFYBdGAeNLNzEmYTS+obIgYOCA7vWURtfZ0XiYOeJotbYlyz5IG05nMaG5WRsmQZHiKrT+3JCPRaBwgh1kIEzLAyWKyyL+dSi/Iaj24lFVBR2eSqXNzshBOpAvpmXQmXVwWAmhnZQPIzopWi2PFYjI1vwDJjlgqjAmiidlzGTkWMMLQgixO4VjCeD4ta5EKWVEmcoU0xoZxJdxFN+kJaTL9FNlUZ3L5WTnKhpXZlysWZVNv5jYVg3ZOGnHnionkbHqpINZxeiJ9dl47ePzA+uQlnUzPFudlfJAkw8gkF+XYHzJ2GSZZVIqbmWV8qViQVZOTKH0OI01m0invd5O5pXzK9TCpaAhFgXTJvDZYZ74hqHQwgvqcco9STtHGzNBhoUV5xynKP05RHjYqyqRsztCRko+Ku0FZpnKLOvckVF63GDsroVZD5MVjP1W+WruKAQWpLLKWYL2IzuQuyj4pp1pLn5TMzkF0Lk7OJ2dzFxRMPwViLGbAMTYnW5b0CnCfO5fLu2QZyhbk2CBCcrgAnybB4ktJaScv6kFskhZVA6SxtEDtUigLNGApaSI+mlzUZOy+miymsrMEKjtLoKJXBJnVWR2ccggoSwGA6p2cFMRDVpxsKu9iww0TJeFCfYTBZTCTk9XQn1rKF2TwDbOmUwrMpguL0GMJd2GxuNzvZjIF4Z9LZyCL6ucycrBpgN++ZCFdEI0AbY8WBKv0+oJCcjS9IASgyXk50p5T1JN5mRv1cznIKvgdTC6kM8uiBbFsHFJsnHSLRVk8so4C8biUEKGwWsEyksyeXYK2dd7N56E8gkDFTiKiUWz2tiU5rOHHcox3i6l5GekcjRcy0gCXs8V5F9KAbCeS+XRSxqiNWWIZlE2LchRuYuR+2QOouBAhniwUYwWJPNSR9FlMS0FEGXVsacHNp1MqtUQz/SBmx0kXG2R0XiZUpnoCuuwlNTr455VbYH55cd6VRe6ksZvJp2Uh07iTVr2MlApQtmkie0FWElW+6QUXx5UI5FF6blmPafUZ6FUapXxRtC26AWRy1YAEwGMqApJcoMyMGEj9n7GbZDUa0hSM0f4FlCdEWJnUlwtlw64tpLDqmRqUBfqRegnPIYGaLHykW6wPsMwSaTx5yXVtpdQUGBZVCw0TZXLRlXMQY8P0yDAKsqLCL8ZWhnaRUi2JF1Wba5CDqSGmdUPMJs8P5C7IViDBEIplQMIUAUklxyfR9KJoyM3cJuM3KEW4iIImuwI5yHw5IPvUmBfI5RdlZZANXM6roBBEmIDqOxrJNj43B61bO6rkaBsNADnZauZglgZtsEHbTll4WgQWk7OzUPaNBKiAQmTF9ITJotIkyIZ9/aKsBX22V20ydionS9C966KbLyxCYZ2X1YdZSGIILs7nsrIfK0ik88j/5KUctEu/bF/Q9OU0XTb4BvilmgFQ14y8ajXF5Az2E6EizEJHkssyb0RDUcqWMRDhRKOBI7JFiyhY5RRiRmbf9KLyIwI0O7SIFq9dFUjUSxyBIithVIUjgAg1RdbJEOBh1SRFE1h4sw4jgcpIfUeDGUZarULk8guiDazT0Pqh1E2dqivKomkoGrYmAymTI4agowZ29XGTxSTMMoKWXBltIp+TpSgrcIellcifoaVsOiV7ob70bFo0ynQV06lkRhWDOG9l0vD5nBSO+pIZWDyQjGAzQQq0TqShe2+yOCE7TtlukZAAKTiEEAYCOTNUlhMwZspUXpiXMwTo7GS3dCEt87MgfBdUE78gW5/q+UIAdY8YBAs2nxAs5kgS9qb+p6gW33LWLer0T+TTuTykIrioc8RhzidwdSUih2jZ+EyehQqWQ6/AyO/Jp5ZCBe+dQqmnYT0zQ2lDsGlSg+ygpBwA5LZ4BqUDmCNmbY/RIOvrOQV9BfUNThhxDhZOLi7KsQUmeEsLsidXZlhNS4kalBIENLBZuzSkQh2DjNo6DRNyCno8L+OdksUis1H2BsX8kqoevmK6CGOLjTjOU+tgRa7yktEHa1dZMvIH6x0fLhb5JfY7AaT5nQZa3lHLRQ3IA/RGoreRuY7onWSuJ/omNB36Ti8T1TlbydyGZqtx30nmLjTXGfpuNDuNfS+a68keJrPW6ZVmQLq/phYJ3egAhNfWEni9Bm9QwO/8vqa8TYM/AOCTTu+olfadzjulvev5NV2bnT8k9dt7ag809vqdLlhlPfZsAQtRu2CdynAEJUf7qhzRFTm2SI4dFThguWsjLEv5emsPBGBZajjiwNGRoGSGe0nBnhZcDduMDEdqfOpVuFH4RuhvEn4HNkNC0oyQ2USmQ2YzmVEyW8hsBbNnEMJowDDCGIaMBSyGRXSUh9txwatJ2jdS7JCeaHDa6aSHiVbzYxatQxAth0VLBtcNwaszDpthCU7BHtgL4pFoe8wisRsi0eqNxHYbiR0StvOQOx6zkDcphYwQcoMOWafZBNf12Ca005vQPTahlxM0IW94bENe703oPhVcpFIWb3zMQu6HkMOsccng9uuQQ84VqotQu4gH0NKicgM2f0IUp13gSWOvXnPehJp2ryT9ELrN4xniN7UDazuxBpHVcV5ei00q4NyHQFJeUUa5krc6vHVxfwnPNueVtdhkNUWCVykA+8ivVlydzgNlXMbpwSoeyPQessVxlYWHLbzawmssvNbCIxZeZ+H1Ft5g4Y0W3mTh4yyMWdhnYb+FAxbGLRy08KiFxywcsnDYwuMWjlg4auGYheMWTlj4eAsTFk5aOGXhtIUnLDxp4SkLT1t4s4VPsPCJFt5i4ZMsPGPhrRYmLZyxMGXhrIWuhXMWnrVw3sK0hbdZeM7CjIULFmYtzFm4aOGTLcxbWLCwaOGShectvGDhRQuXLXyKhU+18Lcs/G0Ln2bh72gonKfXWPwMhm9n+JkMP4vhOxi+s8Z6v9+Sn81YnsPwcxl+HsPPZ/gFDN/F8N0Mv5DhFzH8YobvYfglDN/L8EsZfhnDL2f4PoZfwfD9DL+S4Vcx/GqGH2D4QYZfw/BrGX4dw69n+A0M/y7Db2T49xh+E8NvZvgtDP8+w29l+G0Mv53hP2D4Dxl+B8PvZPhdDL+b4fcw/EcMv5fhhxh+H8N/zPCfMPx+hv+U4T9j+M8Z/gDDH2T4Qwx/mOGPMPwXDH+U4Y8x/HGGP8HwJxn+S4Y/xfCnGf4rhv+a4b9h+GGGP8PwZxn+HMOfZ/gLDH+R4S8x/LcMf5nhv2P4Kwx/leGvMfx1hr/B8DcN9gg8Ql1rIqZvM/wdhr/L8PcY/j7Df8/wDxj+IcP/wPA/Mvwjhn/M8E8Y/inDP2P4nxj+Z4b/heGfM/yvDP+C4X9j+N8Z/iXD/8HwfzL8Xwz/iuFfM4wHGQk/g+HbGX4mw89i+A6G72T42Qw/h+HnMvw8hp/P8AsYvovhuxl+IcMvYvjFDN/D8EsYvpfhlzL8Mo2NoL/5sZ1idHsnN1WmGOPACqc+tjyqeXAiDDfldDMCD9fBWY8eSIoJSZ3ARCUJW9Eh4vwurRQYJQmnIB7RkrnC72kR/U16ZvDmEoqeerDZAgxUPG/xqfUtmLdwCvAt4LZNdQDd6tuSCXbYeauK3XY+FdpCt0Nr+TcHVTh2YrSDUrDFMzHa4p0Y4Z3B7RAjc+blrb3iM6HSMy/66JrTjwercMW17FiZ5wzMoz5eFpge4gfM9BmakoNmraURGbKH4ELkAz9jRofW2OEzc3DMLCJWPkHWmFrK5+15Pc/hPWfWnUsuZYoTeYyd5BYIJuaTBVc0pAtT+aUCkP1F9UFDMb3gThaTC4vCP7a0MAMnDnRIE8nivPDh2RL5qYwiZQMew4ksqiAGVICio1DMLQ4t4MJpERd3k2fVonUTuHBCI/oD65tuFnah55PZ2YyrPPehp6LVw3IMGfIiME+gQS+rHxTBYo4KpBm/Gc3NpufSsBUsI+lPZorH3WURSBXzGQQLbjEJwFkgvlimeDSfXJy3FNjtHMmlzgmhKYNZEbEY3Rq1/ZisE3nRpK0yD9E9qgmTqXwuk/F+M7kE3xgvJ5cXZnIZ9gna8ZNgYT49h0lwkrOz3nwLppKZDJwagf0zyAxZc8ZyxXnIi6iq+fsHlrPJhXQK9/UaYZ87WUzNq5xuUcvwXj/FYC61VFAMEYvVscm8rIqy7lBVE0PZxSWqEhGLkTWULlBzgIYio8+OfbYNjI+eOR4/fWZkvD82NTQ+dmYkPjilznOtK3Mbmx6diA2I9jKHxNDRY1Ois4w+ORUbG4glBkSzJ1iMVjA1n8z3w5p8PWzFiLpzUCXkD9KCmVyKdp3z6syK78J8OjWPWxi6WqlTRn75TUz2R2I0t1SgmtvhXeZnLhGLVa2cWSoWYdtTmXCOIQMbX6c0OC1LFLc2Twn/QG4Jmj8RTgsfbCaeUsZpiOlZ3EEtpPKumz2lwWlRc1HULAv/rKzv6YyoP592Lwj/yXQWdtDEyXnXzVDkIAcH4iNTsTOyK4xzO5zYE03MPnQqPiIi9mNMTcOsmykm1ZYQwlNknibz5iobGD/9TTcwGsmuz7k2k9ni2choNBsJ7cTfQe4byN5D5jYyd5D7HjL3Ef0Ksh8kez/Zj6LZZTYyjpE5jOZGQz9O5iiam83GyzjRJ8m8Bc1tJt5PIvoZ4nc9Gze1ziK5PxnNy014S3hu1+88Rdr2O0/tuKzr/sau00o+wlO3UXZwN4d4D+Is4h7E60hFG+BOhrsUphO7V6gDvbBK3NYbdfbTxdZG/G09sO6hYE3Xz2tQJujAz69kXt3EcC/Dhxi+iuHDDF/N8DUMX8vwEYavY/h6hm9g+EaGH4NsOY3rihvQeQidmx8rr11ckewuK8yRxzYF76jFFcqt6H6ChTPN8Cnm92nmH4/L/0Ol/vlaXFHdie63MT/OMTzDcIrhW0lwB5xkmFefNMv7/4fydRTnc+HHyrs76nAZeB+6X0D3XYgvMrzM8HkWzv8v1seqWGH7e59n+1tO2HH7O0Hb39IMkQkLAMGeA3Aro97uFcKtDFgSEHgrQy0GNOAigOdORggm/olO010GnVaF2J0Mcz9kbTH5ao26IGI2D8uj0jQcdrbSZZTmAy3Dm3DnuLWX+Hrp6kkvXTkZ9js7wV2au8jcDaZMEPKpGXanhV0ahpz1qjIp+kbLsonm47R1TtybOfeWLrOPHmH5tgnyDffRhx3c/YV474VVDvUI2VSwtqNdOrf1tUYrjP1lH7UPB/HunDjWnmgr5z91O778fSdeKe6g4tJVXheX1hQrna6s7nSoutNV1Z0OV3e6urrTNdWdrq3udKS603XVna6v7nRDdacbqzvdVMUJivd7qIpIHea4bPgw7r7amtvqxOj1cCrADnj3zgmCQlKxeQAvogYOdA7vKfkuKL8Dt7YKvBHcqnV0hZFhDj7KMAfXGqZp9uvX3OzxWljXSh3QBtnAhkwDM13QBqrTutvXmd5c2gVtWnNcroO4bFwpLt2sM6Tta62irQ8i1b1KvyidRlaoJLhKu2UN8YUd8h5pTpD5eDITZKr0vA+71M0rJWirrCZPoGoCm9tCpqrXdnewj96j4LRN9pWWYcTCE5bhpP3slIWHLO9pC2+y8GbiJe1ktJrbITNt+pHnp3Q6Uf0rLWdrpx7rdHqFAsIKtX3NFeqZqKdrmyoA+b+jciHsXLkQbrVjTtLCGZuxKQtZ0bDshuMFuxScs/CshfMahrTopCy23dERAwrmnIWs/DLWwwWCkGnfwaLcSUWpxTedvUGb88nqTjPVyytV3SldvQJU6zak023VPTxXxcnUjd1rrhs3QNVQhwQbK1eLMB3V6FFlQfIh727CdOM1Wz3GWqrUTntYjOMQ471riHGeupUCmUVPN/N4SMnlmJJtlVOyjw6HUJW5YOvJRQuXWZW5CKnbJz3cKZNwvnrq9FxDO+2yTherOy1XccLNknq8///px4kHG0u3S8K4Lg+XuuCKerg/uZjE8+ZpuFHAd0m6+nNwKjkJt1RwE2IimU8uuEU3X9A7F2Z7wudeTKaKeJk4mREbzJcD46NqSZ59u+LKdKv9FFc71Xn2ELfoddAWwzo9ksueVY6CYVxHth7C3slEEi74ZPmugd4+ol2Y5lwWroOk9FfurHCSi4uZZeOP5PWoQlCbIKEUcw9x5qazbtGTyxEgcG5pN5e+ggY1Wh5J07svweTsedgKmhV1C8mL8kcWVxOuuQ+459Mpdyg7lxNNeAmZEdqRMJVPps55ohKcVTyzZi8rABdPFyWh/lw6O+vx6TgQfJnkjJsR/mJueHJ8jG+xhRlriSKJSC6rAkrNY8k4bhaugiWLrmZfB3mwtAi3td1ZnjmbbMwruoflh9MFN49sIoQG3HZILlCilYV/4i8od38RfC0Ih/FhQMKfVBdyatOzQuSyydlZZBVtpZyqzjTmsmoHRXHJIppV/vgUwZfK5LIulntsaTadm1LhQtQR9i3L/A4grwQNmqxqygnZpvQXIRUMeZ4Ev2RTBAYRcLPq3oFvYQl29QIyRJnpsmBzWaCIYC67pJAAbR10SbosRZys6gvLuSgrDF1N6wt4vebRbqlWVNXRWTGf1R4D21pK4mWpBOzUiKbkUjF3VEYTrvTlcxkRhrqWdTPq1psjq16uH/dQM3SBZg7vtOBuRcMc9E54X8ZcM4QNrmxqWTjZnGzlUPfgCg1+qe5d4ZeikFxYzKhPCas72+fVJRu6ULOuUn5Cq+4c93Y28Xw+l1e1amNVJ7V57IJdtGD9GDRpicuWRcSEiSYSRWx6YGh8aGxiekqEEI9PT4El0p8YnzgTGxs4M9kfA2UP8bGB+IBswWMnhhLjY6PxsSlRjztz9SNDJ6S72nCrn56MJ4Q4MTQQJ18rbu6sogUl+tG6VfZ+uLYToAVIV4ne+wmTXV9a0XtADtH1XlDUsyfkI90nem/Ih3tCEPI6aWvBnaF6SV0vbW20P+QjvSh1Ri+K96KLz9nuudBi940uJ/d9ZD9A+z5Xkv0Qmi3OVWS/lszryLyezJvI1PtNJ8g8SeYpNHeRvz7nCURP0v7QDJq7TbhPJjOPZq+hF9i+kT94laGfR/NqtPuk/8+oEYHgtc7tNR2XdX3Q6Wp2QBlUPa3mHYFV1d0O6HsK4GKfYAudSnFmkLNehaJYA87IhZyRR3BG7peir4MfMAr/LKaO/bAQGlkICu9keJfCXi9gPhxhXjjMC4d54TAvHO5Fs7NNetHFSVtxda0DY7+jS+D6RJf8br03f1BKXkssr8KT8TvQv/Gy/Bmrlj99OOHaLwXFQfRzJyrZfWYNFQZYnsUtd9SUF81PanDhTqnPW0T3JrZG3cTWt1VS5glDzM5S2rsh7UjJeCh23Vh9u8D8zBKGr+boq6DxZ7aMcs5DsSvzymeX+bwXsdow268wT/E7avEA+UH0dbEst9NllFQZZb6McraMkimj5MooC2WUbBllrowyW0Y5V0a5rYzillH2llH2V6tpH67FRZM9nhp/0JTN/8/FNeXiwzW43nQ5a2sOa2sOa2uNrK0pfJbV6gzDOcazwPzJMjzHuudZhs8xfBvzx2XfrtKaZJrg2s82lqYgS1OQpSnI0hRkaQqyNAVZmoIsTUGWpuAjTFOQpSnI0hRkafL0icO4knAIC7PoKd5H3r82O1ulX53egQF2N5vWMPb0OLgYsXlP7YEt13y0VlEullFgaeJqSbnGUOD6ym5JOWAocIvlKkk5bCi/VUb57bKvnlTm89PKvvqdEkqzuvrCoggbf3jmE9W8meWhANgSnUZ4CDrB0nW1UBUn8ONm8KMB/dheIlXArVpm1/5t94oaVdhM/PQuohY9dCQaS+NX7mT8iNASmH0EMVi6DByq4gR+PBvXJmFbxj/c4XTR5uK6A+29sHYFu32gYzeIZ3frEW0xtB6sdzsSMaeTVIu2ot5Qk175G+3dIEOt6lr6UmOXLr8r9bZdl8xUjwSkMtXaSzMkTIW+s3qm7lohU/FKJeytbOy7bNiP6d70EL7MKOkbSYtgxOnl5ZpowC2mbrWOt99C0PG52R5k7qbVvUa9zeFHBaLNEO3Nm68EwpGaK4EjBaHBGe+teMj56q5IVERV2Ww8sP5A+7DS+7ltuN05QmW2nZXZjkS3c7h6rlNS/x63R7ZjKCLYHlU6Qrf3ORKHnRvJ350H1mOKYTNtXa8fN8N2yvDhxuP24bBzzPINO7SsvFPywYXHbul+nLmHnRFmi+CdR+OnvZJZT1cyMRe7nT5Kya4KKcHHMgZWZDBNeQc15bG1NeXxNTble1Gp8E4qrPaKjWgPZdhOXaWkuYXo0IwulybsCa3z3vOMeatSt7cq2YugkEuJFctbMkyuxrBCK1YMUyszqD2y3VTJ9+nFdT8trt+MC+FqhwfMW8iEIWBfz36oi7uwEbTKRtDnyOoIR5+6pQkbQPvpvu1Ovge6X3JfIRu0np3oBr2TFQ82tgPexrbb09j+Dc8IbKJ+Q09FtF9hWyO8cwbbDwVZPyR90FMF7UOTddKyjnbqtp7PrcXz7SUzIsvW7Y3DfLVUdGoZqzwOnWZKViHmt1XPlnNri3lmbTFfqB6HbHWnXPX0Llb5Cor+P+uh6A9Sx5BaW8cwuzY2d21se9fGNrc2trNrY5tfG9v+tbGl18Z229rYzq2NLbM2toW1sWXXxpZbG9viGocOlHL2yNp3kEk5B0vax8ESKef92F1d7umuKoo5etJSQezV868K0mLVLqrTzIgqeHi2+lfz1WO4aldUMYa3VffwXPUYZqqHtVA9rGx1p1z1aCxW+coW3zZP8VWM8KrFV9Fpb3WnVYuvotN8daf91Z3S1Z1uq+60avFVdFqo7pSt7pSr7rRYxcmINVeuWazBJxt7q4s1hxLN3hUAEm+wZziE4s32kiWC6t0JTqE6PVPgJs9sqGI93rVCZUXh6bBXeLrKIzwhxzVejqs5h7p++eVa8eaa0vMEgcVkHi93NQyMj05I7Oa95wiagMEdzIOGYdxiDg7kUkuomrWuUMybnWe1E7jyvbVToyOTbj6dzKSfIoNpLmg8pW/+1edzuaKoB21r0cQj2liqdYK0aSLIDNOmR4Tcmzsu66qDVQoUc7Uy+k20weF3GkCOlyULyweNVLIN6tSs5Bdm2tnUpW4JayX0KnPfHBEf95VmbuNiDvfU6IxCeEJZ/zddb9VHIfhdthVvujo8PupCG22f6kMaDenCRD69kMwvM4V4lKihWXVEI0R2LOIgbrPC0RSfUtMbLcKRgWxRFvSEcSqmM8VTyjgtjQugII+2Wkuv2OmjKmXX4sqv2pXdxiu55+g502Du2+kLpfaCprlr+j/siqn3aqC+MPioXrF4YLVXLFa60QecjXivLUJUx7OH66e9W3/JPT6tmLCBFBE20P5rLe6jwv23x6E6wphsyJ+t6/p0HW77hdkFBbXcupmEAsAtDHexZdgNDG9k325iuJthdelB7VK2IVbbjVsZzzaGtzO8g+GdNKzZpWCFdyNWr3BczsLay8Lax/B+hq9g+ADDBxnuZfhKhg8xfBXDhxm+muFrGL6WYXX6vYVdNGliF00i7KJJhF2CidAyeNujuzjykhp7c0ToU3+4m4yn/prp/CIsxDeqtRp4HiSiIFy/aLLXL0Il1y8aUCuEYy9fNNnLF0328kWTVaugNSbeX6uXQJvlyK4rICzVlkiouh5pp4h10tVZO7FZtq6J2ilknXQF105MwNhQ3Wlj9bA2VXfqru60uUqSzVh535tqxO/uK3v8pHD+rIgcdYuTJ44aEcMzMsJ5Ku5oJZGQJMfoxjYfWCOxqanEUN/0VPzM2PiAeQgl2j8Qm4qdmYz3q6vp4BTuHx+FszLK1j4w3j+N1sFE7KilNxo6WjcZ68T45BB61j8+NhUbGosPnOk7Lbqquk9W+nZgaFI6j8loxQfE+nL3wfGRkfGTctwXu8sdh0YnRuJAouvzE/H+ocGh/kr+TCTi/fEB8CdqHKdOT1AmhePKH2ULSTQ0dVpZ2siSiA/GE/GxfvqicWycQkXr+onEeH98chIEFJnSqcQ0y+eGqfgp8joqSw3H03SqoAuvSdKkaJNw56TYBIqTg3Iwy0pRYlY0QyHjoyDurJZF4VWYjJQwRJ0c60VA/qC2Xa0UQ4k/QfzwLDyPIdGZ2NjRkTgmdyB+FCPBSEcTsYFSNiC1eUnTY8fHxk+Oic5SMmW7LL/gkpRfUCjSikKURNSItliBkqBlszYkD2UnF90UjOyzcC61INalclnQMS1FZK+DOrfannUvoN7kEleH5ZVKegDeU5GsUiBIFlwAUcajhTsj5bUzxzgd90Rd2YwupT/3rBROUAzkpTPiZs+CHmpJIthW5orl1Gg40Mr9IB0mbWUk8yGz8g9RqC3oV2yMPSxZEKoKsqiom/iHUj518+dl0dhziZANlehN7LuEpKJ2BQAJNzmrzs0RQXQwVqPsHCMBheSlQGr74OUY1F1/cVxrA4EHOxaltFY/By9zBOC5ADiLDUdhc+dc9Kg/nU9lXN2MsGm5OSnB5pc1rTZ1Uf4vi5q8+gDfz9COQlI0VhonItDVunOmZSp7IaXtAQ3w1aoqGrlbjmZyM0mlZIKUvxQwcsQOmrNRP3oA9OvgGwDm0PloclE0ofZtFjcoeGYNFpMzSnt5E0i/cMBYO9XPZJbywjcHuk9EayqXl8W4mMOs1SzrPNTpgstDYdZmDFGWgSXV5mVmymkRVIRB2c5zJ2TwsshEy2KF6hI4T67rgD2Xl7Os7Dg+naD90zMvmgbBgGYSKRaTsoGohoRa2KHuxopECcLEHSiovVzlJoyUU7liMkM8jXIeByxD6mkXH9Z+0WSok6oeUYc8C/MpHXgr9HCTcsSIDYzGp46ND5wBNS4dZVQ5JIzIgQtTWOoyEY9NVfhEd6Ld4DI9NkSD0HjfsPSob3x6DIaovvFTqvO1DPq7DSXkyXgC3ykbH5MQG/w0dcEF0XyW0mXfG2jUJNVlhguLcLJ61C3O52ZxzJhyC5LOnh4IyGztg2I0enr8cBlgahRXT0aTstpexHPhkzhJBQeoH8dQVw/lZ4smQKHyUQ/fINGEtmNToyPj+VJySE4QCwV69wBHqZH42NGpY5j+/lE1mDFSfHSynHZqsuzTobEy0uioynZGGpse7Ysnyjgn+tUwyEnxRD9IIkfj5dxT5aRT2M9yki5if4YqcBY7+/E59XCZULr8wSICcghEQK8bQSEpu3pfToDCK7XOJBz1zBw40wMbQp3Jxw9CeXcxk0wpC3R38PyFafAXD8r/XlG7LM3lXqzO4J7Ml7YY6FxHsYfWlPWQutFY4ng8AdV18oyUicaPx08ODUwdUw2GO+q0bypz8FZw9uGZ8cQQSGwoiajMLHGYnhpXpeSl67DCakihh2FCyqbaBVnomaocvuwhQspUooVQFpR16qVAdgp/T+PjDuolkKmc4vQl0WjiDkvFHGb2qFsw7aGd7KVZ20L0Rd6imomYz13gw59syEkYVEzbAZEhuaBeI1xxnbLBCBcYsQnWUJuVHZZMTJwWlZ0eIyL5i4i2twkTRbmjP7nM8lmjaArjDKQMq3TY+Y7G41PjicmRISluA1btklPxl+oDI3v6SdnxyupzIh4DCXUqAeL6GVw27K7mqj/fXI3h1Gjs1Gn5vxrH0MCqHCuGMjSwWijAsXIoyLFyKGOrhjK2aihjGIoP31WULceFeq4eyYP+Ah6GS2ZKK3XtXF7+S3FiTgldCSYWYFO+eXx8NDY2MBHDGWKsTzdxRh+NHR0bGjxdRtdlCALNzbncQiw7OwHv3apFQq9YFiZ1hJOpJLyYp5UTQg2GZVThaEHDyLiR1LybOhfPpjI5XNgNuFr2ggesRDM6wywhX6AHrSJyYJR+mQlZk7GTpGIJNJxagm6ShqCknkZjR3E7aqys7XlsG8o5YHuDwvMvKLPZjOgmuaFZVz3vGZMyVEh+l3IT7mw+eQHlLSoyvA3WQBkhIQhsJoew7wnC9oaaAOT1NNd0JjB4sQxTk53CUgGGOwqsBd7ySqaLo1KUS0s+Kb0WRNNS1svVRFZVvLLaRks4IBEwVE3ia8imwhnBw0uHnmgyl0nP4quBfE4wWcwtGilWKbdTUjoK8ZiAJrQu2+kJf6hHPelKz+ZghC6kWe+OFFzk5sLSFDwmaOKmBIfYwPD05NQZGCFhaWNjJapsFkdHTk8cmyz5iM/n4bUg/foUmyxE8+6Tl9J5OR2+KPv5Aop/kcJyQQoL+mE/7Jmn8OktHAv0p2ElxdDbfvgEFlX3VpAf55OwFRCzz6i14RXThUW4CjjlZY7bt0fH5+BLOTmUv3BDDG6qYtyK5AJVb4zkJiCAFOwWEzn1MBcxtYO4WkzmiyXeRvFK5wyVooqAP5tCb5pUMzDOWA8gonwsw2xkQ2cnLPxMxKaOnVHiP8p5sZGho2NifSUnKSPFp/qPVXY05WUcqYCVryDtdFV0ip+KyUnKhopuRuhcUHOAQEE/DlqADKJH6mpnZVc9uyz8+RxetsTqCJXXM2jLIWFscnA8MSq75qnE0KlSagJWzOIo0DCqusFXSpSS4qlKxNNqyLdERCPgb5vXQaesQSaA+jmACZWCYMGlTr+2INNWWFaUc+6FUwadhqeN2WBQW5Sc8OYXXHGEfgGI6pHmZpx4ncvKqbvJkqRZMlIz1ATs84bT3LbOM+dWT8Shg2AYKhrMtM3U+Cl2UGtSfDHzkLG/oB6jbZAzBNr2a1Iky1P50iO+1lUnExx9WDyqbeg6ut8YLNuO3lRyB1E/uqUe14oY/ivIPEjmIeI77Llj6HOOVLxr6HNuIPuNJXcPH0dmjMy+kjuJA2TGPTox65whjy5MrQOz1hkhc5ToY2RqXZgTZE6juYfSZ+8+3ozmPkPXdx6VrswDhn6G7jgq+xVk1jq30o5jUtoO0w3JWidFX82SfY7s82TmyFQaN28woeibk+qm5OMMfRnNPrLvNaH/Vod6lAyuUErCIDoA4XmKEDKEu2sQ1DovqSHKSxXLiGF5mSKMGcLLFWGCCLXOfYrQZTj+UBGmDOE9inDCEP5IEU4ZwscV4WZD+IQiPNEQPqkITzKEv1SEWw3hU4owYwifVonyOX+lU/c3GjyseM8a3s8oQtoQvqAI5wzhi4qwQNm81Tj8vXJYNIR/VIQ8cV5nHH6qs/tnGvyLjtDTa4nyTA2eq9+We7F6me6pJsPv0S4vUS5PMwHcq1yeXmOLT/O+XIFnaqfDzn3a6ZUK3Gm/epWiPMdSXq0oz7OU15Y8i3eXdXqnorzQUt6lKC/WlBdYpw8op3trKLsuknnMcHxOcdynOa63ZaJcXllj8uZLOlZ/q8AD+qMl89Hfqbf6fM7Xa0Uw+Loa5xvwWN+76rv68Ij9btwLTuAuYRviKYYnGX68wrhfXBd8fQ1csepxvqn01HftAa2sAfX8Sge+xad5dgNPaPNf19CBHleyzlZmNd7N7QFNrCvzxOHiU2WerZqneU/dgdtrVvHoovRoV7W4fwvU+Ec9qYNXAWrUVWXG2mtZbep6HWDlia/mfXeZ93PVWLeUscY9rHs0qyftmre5mre7ylgvclY4HNBuLpcNB9WhLaW08NU1cGqggR0HhFMCQpqNZEbIbCLTIbOZzCiZLWS2ktlGZjuZ68jsILOTzC4y15O5gUw4NiB6TsPVlOBmOECGl82O1Ajz7l+jfeuQ4FYLt1m43cId7KjBVZDyJpbyXRTybjL3kHk5mXsxRmchRhGMkR9jMxxBpV3w4CW8oCGG2/FJOGOXJuoCoxc2hL1k5ahLJ6AEsllBUhqGRxe36Xc3/Jjiq+3pi2sIGq5WD1eb5WrjfrV7uITlEpxrnYerw3J1cK5OD1eX5eri8Vrv4dpguTZwro0eLsdyeXJik4er23LpS2k9eAsNj4uqmzZbTr0ReI4RND71eHzaan3aymO1zcO13XLt4FyNHq5my9XM477Tw7XLcnnUZe2mo67UXfcG6aBSmz0dkqjuNFndaaqKk+0ALr9kOwB883QPNre9uvHDRftOq52w06ok7KT8VKnaf8mmah+kah+m6grerT3RJueWsuQcvGSTg2/yHlC9NCbFRvrKSzvSvaoMSiJ96JKN9BmI9BUY6avk/9XyH86uX6tGIj/qdYxKEzQ5RhPqMcojSv2guiJxnapdaerQJV1dZ7iCqtoe6ImuxZ6okS4mXIFPMEmruoxwvXmRSWXWjZdsZt0EmXXDWvqOJ1uYZ+0Oh5SbaEhBnYlqSAFd6dtoSFGZELu0M+FxrG2S/sZOq7+R4IqdT/8lm0Bsx30VO5+BSzbSKNfuZZGWUiQooIj3+lHJBOg+fxqaTag+ok1K9qg0Ij7sqMdSLSWhHmPdSOX1FUz60Usu6QH1mCuAZ2lwhwZ3avBsDZ6jwXNryuvzoB065f8xVa/pCVe4YJ2gJ1zbFb5LY1s1hi65/NEJHIUEhkwCh1X1iKo3Znfg49X4xOzu4QZ4Xxa65OMS3kswQS/T7vQkd/SSTS4235GKw/D4pR3psYqRfvwlG+lbIdITdi4t/xOq5YThUWFcdVHTUDY+qFFvjUPFImTApMmAgHqfGBrxKzV4lQav1uABDR7U4DUavFaD12nweg3wBWKajXf9H5iNv61G61Xxq4cncR3JLCgNB9S7xlHp9BbtpNZkJOWtJcyd6lFjS+HMby+hdKqXjisw68eXO1Qv90aNbWWcvmQrYz9k5xSXzejl5k6VmHcy/C6G362xHepOXnKJfIyGOsyjE5hHg486jz6LeXT6Esyj9+pkP6TB+zT4Yw3+RIP3e7PmHmyOp8woeZNq/I56DTsqmwg+hR2R7RLfwY7qh7gpi/6MSQd/zuj4EDc2f3qIu0XRP8T4P8z4P8KzWrW5J1xyWa0zbR3k2c2qzZlVB9uObrnkIv4YtSMcrZ/I2pEtrDOXXJo9kX5SRREjeWlH+taKkU5d2pGeKYn0s1Ep1iyN9z0w3vPNoPLtISsBdIIE4GE2Y3kPiAKr+HM5CAcr83Dh4O3VnC4HuWGN/qwkSXRCRsyZFWwtKlmhqNsrFM2ZbbAyoWiuTChizCQUWUqZUDTXWyoUVWBeXSiav7Rr4lkmFEGkH8JI33bJRXoNHW8O0pO2g7R3vs7mGcL5LBtgP8em8Z839LVMQFSF3OKtkHGz2VpWIeNlFZIxU4W0lLIKGS+rkBWYV6+QmUuubD0SwzkjMWwu6dOzl3bEFypE/PkY8Rybo35JV96/1eDLGvydBl/R4KsafE2Dr2vwDQ2+qcG3NPi2Bt/R4Ltq+no5RHMrm77KCvI9dFIi6Pc1tlLaky+5PH+MpLRTkBeLfLZTebVeOD9gAvgPGf6HGstevhtYuOQyTqd8GlKe9+5TsCWYCpsTa+oM1cBRvOSSHXB+pKvAjzX4ibcu/Bylr+vMWhWMHEvy/7ya5nU6Pwd+WAL/VwBXSPALANul079Vcwo4/67nhL/EhRQJ/gPAcQn+U0ss/6VHil8B2CHBrwFchHV3OHBzUXp4O4Bl6fQsPIIjwR0KOM6dAK6SPM8G0Dy83nkOgKeYaPQ2OM9Tp5eukI7Pr+7oOC8ARzjTcxcCSbkbg5GUFypKwHkRUmTl/yfwwFHdxj8DvmDf6nqEez2/dclVGc9pgKd6Fv9/u/ISJpz0afaccfidSzZVKPY9rWQC8gBG+hk1l2ysN0Osn17Doi1r3kuhOuqdqLejNHZ7jVccazbn2crEseYycYwxkzhmKWXiGKOQOFaBeSVxTOX5sy7dPL8eMvSZlOe9dQfuqNEZ/4raLrNwdb/B3nagkvfsSzd5rZC8O2tK9nJVtJ976Ua7A6L9nBo7Wpmovw+j/vz//qgHnAdqCTyowWtqV0xVG6TqeZCqugMvqDFJ2gFnIobxTETIeV1tFxxVhVMRIef1xmKTfvf/yKT/FXZcd/GKCL2XHo6frkWENwHFkU5vBgBTvrfokfr3AeywlIDzVu30NvyKM7+95HPZe3l5JPhD7fQOLQOUOEHHBoAm0W8ErMd1VRgv+h9ZGFgPX1hWD3+CSbrnf1SSAs67Ncd7NPgjDd6rwUMavK/WkxE3QEa8WGXEXTX22KBw/piV+58w/P7yOvCS/1EZppM+Dkl/gU66TvafwkfraUOH4T8HvMkKuuutoLveM9K/9L8/M1YcCu+tKREK8X3xl9lYB5wP6hz8kAYf1uAjGvyFBh/V4GMIej6C/dxFvn3uOB/X/QvNcjY7n9AU3FODR65PknkK+79O55Oa4y91v/Up3TV+2vuxpPxVCaXT+WtN+Rv9+cMIZFl+lKY1UK4YoeP2JL/WNfxJTMYur5h5UYt+F62Y2eB8hi6OVJjNkQx6sUwGZT6RDGopZTIoo5AMWoF5JRm0w74BI5zPQtQaaUTdDYX/cl741dZUlBbjY6ZcbY1/xSVe4++rLPzdf+lGG0/kXl96QyXsfL7WnKvls/Cw8wWPw+pzcpUDr7p0c6ANFIm+UnXOr64pkX0fvPTivYb1pw1QqA/UeHYulkzKsCG+hjfEah72bISGuGQaomzSX8au99QbcUZ2DLLutcqnbVHH+Yr3vp2kfNVLSbQ4X/NSVC1RukHfGRB31ZWpBl3KZ0TddGKkutJspdNjMMcUks9kcjPCN5cG5cf1fWAhXSJK8xp41yh9T6azU7nYZP/QkPArq2jS5OlsOgXvBDfl3fO5c+xDpX2xHlQpivr5ZGFe/uZAtwf8ZpML+i486EsCXV3BxWShcCGXnwVUnFccoK0ONGbnirlULiP8BTeZT83DRXsw8c31gmiSwU1yQnCpABfWwQPQbLWyKiO/UpQl6vEDUkTpn3UzbtFVt9xBgxmoAqEHyutkYqwWSLwCv/gb6YKucUKoyzlMVP2ObzfZe8jcQ+Zerab9Fo8y4OGIUgbcq5QBC2lvLLFHyI4K2qXdKbFDkwxJex3Ye97MlAcHtPJgdELlwdBeg7Ibg/YahCeulPJggu0WrrOwo8s8ndVpqV0Wrrdwg4UbLQTtwuFTRqVwkJ7Oug/jGsa8iEbhxcItXWLzVmw/gQONw+14VxDStp3SvIPSvJPT5QCvdU5rSquzm57KCh6IGGoELww2GXs7HjQs89802u9tEt8IsEbrm3OLsiLX9+VATwZvp8EZSZoGxeOmjoWSUPH6lubm3LyovU3Wvol8biEtG1bg3Hw+l80VhO+CO3M2I0IxxlmheQdBlc9AspgUdRfn8yI4qK31txVkh1EPeldM9xA45iZnQe3RI2lFqtVXbUvYeKDNiEDCffKSC2rt09nFpaIIkV3ptE8lU/OuCBOtH20h2TfNKkX5BRHVTowG2oeK6SypYSWGAUYLzFOKGkCnxdl8uij7xXOuu5jMpM+7RqtJ/QL0aDpC+Ax6UAaTRpVNTUROaEIQVRTlQe+SRhO5TDq1TLp1tT+YT9hP+1KZXNblPXX9DNaDC0oxfTCBGjdl+dIb6P5CMVlcKmjlzGHtjnlVmzsHOvpUbGS1EYoZlMuIADytnpFRM58odbv4Orrw9cUmh/pFff94YlIEBuKDsemRKdCWqRQeC198tC8+AMbE1GlpJBLjCeFXKpZF/eC4ZAkNjif642f6Y/3H4sI3NAr6DANDY/0j0wNxERyNjQ0NxienhF+i6diI8I3GB4ZiIjgWOzF0FLSwBMfG6eMAIIgIkCanxhNx4Vd6LkX9+OjQlIiMj42cPjM0qPgHpOtE7PHTcUlHMyF9TgC3PxEfGY8NgDkxnpBRnIyNxkGb39GhMVm3+xNDE1OiEVSTDfXHT46Drj8RnjwWkx6QzTc5dRqeiZ9KxPqPCx8+AC/85Fh/anKkykvw0YdqywYCUIFRh11/vRkGwAxg11/vNEhbALUBwFch+SsHAkkT+Nw7+NEkbWF8IABsUVSB0kK+tJOSjXVk7yRzA9G3krmdzJ1k7ibzcjIPknklmVej2U6qU9aR2UFmJ5ldZK4ns5ZUqvSQvZ5UqdSSKpVaZxDNHegOqT8n4DH3jBzQXhPselcNdp5tTGW/Y94W7sKu3CcnkEC5zkOxavoV/1Vlrkrpfyd7VGAde3ignT0A0MUeEnDYQwJ+prjfR0r5d8MV/evw/cPtTGe/egR4oFoC2Mc9Dr63uN7zjC1cZd4hKTsNZQgmCqCEwEPx8sBDlu2gB8FD8fIcl5QOSdlkKCNllNGKFG8MxyQFNEps9lC8YY2X8UyU+TxR5vPjy1KRKPsqUfbVpKSsk5SNhjJV9tV0WXxOlPGcLMvnU2XxOV3Gc3MZzxPKfH5iWQxvKfvqSWV5eKaMcmvZV8mysGbKwpopi3Oq7KtUWa7OlvG4ZZS5ihSvP2fLKPNllHSZP7d5KfcFa3vSMM2qkyKeD0VdJZSFDgSP7UDRVtkbyd5M9ia0O1JKFVF/VDVBxdFGHA7YpTjplyH6aRXmdhQn4cFhH4mTHbwJS3EPBNWWXjWVhEUykEsd6Ws3p8twN1M3oCkRfFHVb+ztqNqizCeIxBtqIRKg9qGurysakRIsiwKK4CBOt5VkRntJZsArvPA0eWtJprSXZUp7Saa0m0wxi3F0Rg+UaKxTEPRnkP4IUJ1ByhFAGHbsrRvy4QpLhQs4tAwCF3BIt8QhzdDs7cOV6+Eus8pLiiPsO8UbsKjM217tm48A4UjNEcOx0cuxrpxjk5ejw8PxL/hmSRtQEttLxp+ILDNmtzoZ9PASpHdC2kvfM1tnnNZ539pcg+d6jNI+OKVP3vmNk986XVH9Kz1IaqdO66THRu3UZZ0OVfNwe8k4XDUhNKgaH3ylT7t1ewums7zoNns5uso5tng51ns4rgCOrZpDNpgbZf3qGe7AutnTq56xdvCd5Jsk2tZzBzbNHvSkTnrStyFaJpaYFrp9jS2051G00GZvmKp1sEbL2mSfpfZbiOlRcEC3viYnToE069k6tL0d5W0Pu+Tt1CjWWG+1kKSLe5t1GqhSl0wp7vSW4g5eimqi/bWIeMjnmWiz6S8ulTWjvvi+dHEhuThJ6g9hpjyRzBcLZi5Oiz1m0otz80ozX6PovgmCkBPzRTdfXO5LnpVzhEJ/JueZydcXQMe6n/T0ep+eg1khrJXhDNpXQJXIPlSrqZ4PqYP5NSiTLGpN4jTBrh9Mw4NlkNA+0JyNCPR4iyZw4VEKZ5I4ocV3UGiaHgQmpUUX1LpjukfS52DxjOuIB64ETp89E9cBUJBN81KaKAZg+gX6ZfVze55n5WhKG8hlkzPwUcPgUhYV+R6U3+OLfNKJpr059axNgzIx/QpStsAaRqNM31l4N099LHLZRSLArDg5uzyJGjz9krKUkcGrUJvBKVYoXy6JKoe+dDaZX9aPAioaLJTAyqZQVpxg+zLJGTcjIjZ3JpezqZXXZaor1Iw+vfoEEmx2ClnrBHAtMMhWEsHUWhcbyd5EZjOZLWS2kdlB/HrC2E1mD03g9ARyB5qtNIH04wQSJnB7cXq4j6gHaLp4kOJ7GCeHV5MffTTJ7Ze/mxw5QQ92ow5NeLduUNq2gCbNrmzXRrV1gLOoqHofi+ZMPQ+hTjSQsZrZQ3ZN1Vi75WQK+5E96nIwTC+bUGuaYgCp8negJ0epsq8n2i798Xc5+HJ8CLuuhgPBAwHsysO4iKr2JyLD23CFsw7HBHwoDVGnQbCm2Sh7S1hypZfTHLt0CXseWkUZvhEPewcNsgeMmpfB1pe+DNYzAjF1UBzcFW2V8mJ5PJX02Gji20zLpPQI2xYW7C7Y/Yj26sGkBdUPbDPSqsqqdhNBkIWFebqsyUSQv1O+HbpoEJEamLK19oRSsgYmrJm293xFybWboTPvOFKzE3XaXIe5GpHCQC0us94AuSvtN5bYb/LYO5zHcTvmfAxzvhmfBTd5A+nvlsJPBya3y5txIOvA6nK3HO9XYbhyNYZDqzFcRQwbqjFcszJDA8oK7UpKPlKSRiiFU5C7G7EULqMM3VySoY0lGdpYkqGN5RlqBtgft4vP+tkA25jNFeVwkkqqUbD9qFscYxT9QJNnjVuvDFP/WleEoYl/xYcYsZC8GEspX3AgFHI4W0gXQL+4aOdfTVh6c14tujKSZ+E8Ousu5t0UKFzuT2YyM8nUOT4SqUEYxYXKg5jSxW7G/pZKSQ4kKdYkS0Q5k0qR8M0kZ8+6tP5bP4sr87PpvGjjvAO4tIvDbToFH6VBghH1+KxbUA4z+JaOlTLkAJqS4sM5zzu3Ky7fmyGXhuBg3sViXTY63VHlvkqQ8BfkaJcFIQUe4oLVaRnYsmgophdklicXFo2EEzifnsnD8EvCjZ98aObJo8d+H+2jvoELOfXWVxOqdp+F51v5074lT/q2lQWNq+hhXo1FS4lXyFKPStPNOrl/ID4Gr9gFjiZiY/AcYd3IVELUJaZGqozwK78zG73/kS0eg5sa9QM06tfTDmItvioLo7OD+pWbyVUvGrfS6Nwmf5ucdklzaAFZDlslC8gbS+QBNf47tIBcT3uSDkkA9aSDu83IIdegucHE8AiFfSOO/jcxyQDsSrO2oOXweue4tG0D/dldv6yTYkEddkkw1qs3wP001m+Hsf4gLqC0yoHpajP77WBLt1vLPzmOc6ItkrEfHQPsMVf10ShbHx5jeFxh7tkPanDMV+vNW5hi3u3Mv26GgwxvK48oe2zXzx6r9ZsV7stpatXBnqztYivW7Wzlu71stfuKspXvdiZR+TCU9XLyCSNRq6S0sLT2OHKCWHugTUpV682CHSjjFJKy1VCOllGOlVGGyvwZ9lJARNtpFv6kABI0pev3rG3A1zEQQIJmHt/jNNE8VhwI97aijBhRdvyNSDlBnVdp0OdVej6GwkkAD3M0w2EQ2PSGWbw/qgU8UL0H8+GIHIAhi/zBGsgkpUVC7VDT5Lpbw5DOVyuHkQLXrZZ7m4XbKyy7dUtxSkkG61AyMOUPYqISHfYSQ2dlBrUY124X49rtYhzBgzbgXksNWuqVdrWuQ1NxtY6yoQGzAQrjFii1Viq1q6uUmnTaWt2pY4WyxvWA9d71gDYsNh8dhtvnWfZLqEWWTQkla4J5PZkg6mzquRYKfgP6gDdJHVnwj8OC96MItIU0u7I1lAAltQ8ChxWmnpWTqrsZ7RRg6flJHXgSpbUUT9PrjUh+Zi99frhiWN3VnXQb104+66Q7Lu3UtqZy2lbdaXt1J7s66i9dHd1f3emK6k4HqjsdrB6N3upfVetrpJPub7VTl3fZ03bOWHbWXlqDt3prsOA1WAncdzSIH9UzgTskxV84xoHPWDar10MnGMkjaYe4S3V5VmST59NnlezTxj4Zs2S/lO5AfGxmzlOKVJfNXZDiUG4JBBomuTfjmzF9sf7jZwbHEydjiQEt2jWq1xL1KYCQekRY7ds3kgUfDxuAxRd1tKFfCptaphNSDM7CI2AgfpKsGSYaPtUjQjKtEBM8etKBFlw4G4GFpFlMO3zcVdFFeRGRbkbsPS8DlXZggiTT+beRXO7c0iJ41MwJ6nuBZ3wUDsOqlQk1YmzKtclmP8VeJxq4TQ6QVzS1MZzqYAdxKotyayu4qaW826/yxXgeWcp6YuMwO3JUOM9WWRKtxTddgCMgfwNOUMB7Lg3kFvKsRdXTWpTAowxgj9pDC3CerbZnnR3nG5xath23F9Yq/DSlVSdK4dl6PNameuMwLbOYfr+R9fvNOFirE6YROmEaoROmkZ7d4LnY7Kh25+DFbFjbIT3s67qsHvaf4xn0EHp9GY2AtLTSZeF6CzdYuNHCTRZ2W1iyTkOwx8KtFm6zcLuFOyzcaeEuC3dbuMfCyy3ca+E+gqYfeu8R8bDD+iEz7/Kp41mefqcuOTvrnXGrKXWAKu9qp8lmZ+HEZZC4zRRanyVjU12abDdjJB6/5OaX9fy7/py7XNAn7exxswV4GVME0cBAzGmrOjiHFtRtSLSgl33AN76oX/cuWbpQ3VEDHlfDJfdw+mw2l3fpjVyyqdOpQijbiWR+WYTR88liLg9TeTwWV59blLN4f38G3w/dOQ19qLKM50fdQkEyTsjOczw/6ebPp1PuScx/0TCXlwGrZzkHDaxNz6rDZiE5uyzS5yKwQCConuyVn0dVEJ6ca0lnU5mlWXc6C9sN+VwmA+fKFKMKyHbyAUUuwBQ/mV5Qx/wEJEW9oCjCyqRklU3SH/W83zOa0bpFyVy/4jS+4UIyXZzOFtMZUTMnGqxDu+Wm/FKedlWmqzUBXLIJwbaKIs6aA80+OLwsx1lWdOa9LTEIlVJ5H7EYvQymMKekT8F0IeHiDgj18rMn08V5eJ28mV7IZt60lZHQt1ZONjW9hVPNepWKODyansrBi9DmuGSTXhmjd8pFGF8py5CtNe+eTRfkQMl9FS0JpOY9a2I+9FoIVXexLjV6q7NHLonEZsCHVJEcu7FRrNAYGnMQsaKbmk9mz7p8Sa+hgK81wgaOD1lE1POp2iZq99BAMpCDuvRXmIYgW0zONou8DiiX1U0r7Kk8PtyDEp0ef3nO4KOEHkKDqgAQU6fErQDdk8pr0YibYBRYQXR4QlBi4SRmdnM5KZCiRitkmYJ0A2kP5LKqr4xIoEpS2Zul3VQAV7VaePgRq4BokeIFWztTK48lq8IV1vvKPoP1wXCeZ0SocC69CO94Qk/rzUFPHm+s6qQaVGxiaHIxmaLlR5DkKO64uZfLLi3C23xzuJgZuEDh4dOQnkR4V6j9c+kMFEO1BW+hDhPjoOAU5nMXPF/TAnLFdWOxlDWF7FdxE4G5XGoJtpKbzqcL6Zl0Jl2kjU0fuoggiZCyKsb6p4ZOxGBFUhCEzdi62MiIdJs+NTQyFEucFg1DY5NTkgZsBHHPdiw+CZ82JOID02MDsbGpksOxDVPjE2dG4ifiI8J/cmhsYPykORr7qJY9H65fk7AJy4F8y7OexMx6EjO1eFlPy521uNypljn9wUY6KdtIJ2T1hmc9PTZY62wrOSG7i8w9ZB4gs5e2OPVJ2UOehc5aenRwPbnX46ODEIubcNPzcbjMqU/DqgcFN9Gp2Fp6SHCr8fsYuY+SXT0YuNO4T5CpHw7U9BNkniTzFC3KavcnonnA2G9Bs9fYz1C4SbLP0PJsiuj6yUCX0niW7LeReY74cmR/MpkXiH6xA548q3GeXiMCwZjzDP3+3B3qqbp+jAgQ7lQuMecuDV6owUsU73XI65OReCN4Nuz8nqR3vS7YFUPZ22GrrmrHWCCOIF5ftnscplXO47CiG8MJQxide9A5xBZ3Q2yxNsSWTpu5F7vV2hpbvw2xGK3jrNfgitKW3pB0flMN8YLlzdzyFrLwL5+C66rqBPIQLe0APs6SPcywWshuxSXeEVpX2iEp4lGEfTO9Uhf0ZOzjWWgJ5sMj83sMj+juLfFbp+qR+3cQj/Pu7404N1OqmzHVEec0t/NPrsUzwfvsbrcnCpCBT6j26W48vnsIP7iV5Ycq+qs461OVArX4IyzBax+LEuxpVvrbr9tTe2CIFuGblSZ3Lwl1usO54g5DQu3usFZ/hSE9UP7hg+Wk15R+6OC2tNer15Z/97ryOLy+PA5vKOf63RISrDa8CdWPqZMflw1vcPzmmldAVgnRJTaHadGuYbjHaWSurU6Ezl4YjgNieIfjmEN+ZT7gRjqc+ggP73dauyJREQ3SHoSQ3A72TJX5dznr2CHAlX3uYD43rerzNqerepp71Y3aJshAfLnMoaV86illm9iokF0U1e1UO0Wsk24/2qmpdKW62Tg1szXSi/qivM+sW5czmnXrkHEKWaee6k5bqzhByHfXqAMyqnq0egrXj4s1zZK6vQI16ingZiiGR1CIrc4O8rPO+gkROq2fCmyV8dmF6zNB89qbr7cdN/XKqiWt+rTZpZ5m78lQs3/RTrl8sHp+0bBlnNaVrmZ3lB6yvlKtql0JHLfpNwUhQ8POVbbuDbc7hz3Zo44KNctWyWt0C9ZonVXt8qurzVdd+NVenVn7PIfCE37niHTZSHs+G2nPB0zodzb23AB7P+sxtptlbHHTD0+Z4aYf7hLL0AYwyyNOnMcVQgub/R8T9rY1h30bhL0Vw15fOeztiZAeFlTZDdtiPK5hixwJwrQJh2OB2nekwZ4K+sEafWB3iyxOPdTo4mT7QMPVm9rxak7bS8aiiGRgduuDFkC0D62sGmHm7Vpz5j0RMm+nzTzHZJ4fs263bE+TWGxhZ8qcrQ7IjCEZReViosuc0hNsvfcW/WLjFvNiY8UsSVRvMtW6RJPWy9ec1nFI657qad1bIa37ZFpZJfEmD5v9Xkpe1WJdOQ03gx/7adfydIlctZHbbTUpFb8qsZnT5fvI7yesxe8Vk1FtCDK91xWlu8m899qnX2dcW2G1QGEdsIV1mfHjyjX7cRX40btSz7BlOIL3xuDCOfSJ+02xHqLe/Nbq+UGSqHG6iuXHU6GvPtzLHh98xANPtzNHxxE2e93k7xGlt3De1ku4AXYd1Uulseh6CF2G2OHkPWMDpL1AA22RjQ434kC7yVnq0nYYETAIM2YcGvY75yH+sgPIYPwPq6MVCytHtdvJEsMNlRmanEUbLCXjT1HABK0ij5PJaAS9yWbEkyle7qIrUN3OU1YL/anEsLMaw2+t5sNvr8bwtN8wB7qd3yGGvsoMm53ba1bmEErH9I18H2/gkY2j/SuN4fHfeBy91jOOxunEx3/vOHqt8eFa1oB/im3oRmpDm+ClPNtUBlGQgkfm7oYMPzrcBg/PlTbhwPBmeITOzhAC8BQdb07HZK2+t8aKwNL6Ul7Jo6C8inmpdCM9p8a2vDAoszK2zc7zalbrM27VBRWGlwD1p6YPH/L24dd5+vCwOZJkbNdq2xQ+MiZtLdhY79PpkIKlzJ5XMKuWM2V9fVmNFhyizstLk2p2Tv+lVdwb5Bp7vLo3PBun9XC2Qu1tNR2bGh0BrnjGXYB17kpKNsztIbUvWaLtA87pIhfXwbHy1utqym5KL9ywrcBHvZVXsotX8dxusydYXNh3ZOrOFuchAktFXFb24z0heybEV8wVkxm+yRc5NTpyrFhc1NvB6gKTcyweG4gnJs8k4v3xITh2Yi8xjU/Ex0DdxPTYJCjF6PR6wHerorks7vZU2YHi15HsLnNYI7xPZG2QBV3esDw6PMzBD9gnMhb5gQgO5FJLqsKQ3hCvSpD0gptboktl/qVF3GBs9YY0rahNF9Iye5mGFbo91aYqiY6P1hPTjLtVnKb3tEmxitJ+kizAFSmrpMlqfnJy5918Pj3rjqZpG7t+IQ1qnApY7fGQvFOAQDCWFIZnx9DcK1vzLTJ+Y0zy6OwJxRKJ2Om+6cFBUPrRNzLe59WMAjfd6ocnx8dE/VT81NQq2xxVFIY8a21nvtUJG775wU98g2sET9boLRCvepB6c8tLne5uctYTfSPdvtoibVE6462VhdTTFojfbIFcTlsf68l+kPj0tsE1xH8d0fXpbrXdEXUeT1sj62k7ZwbvfKU6Luv6ZE3XaTzI0srOKavl3p2I1Unq3QyfYTy3MpxUmN0CI6UN6z3KH24uozyhjPLEMsotZZQneSmwrvitGnujTKDsAfdxYY2jgSR1PHHcq04cN8hBthI9hIOsgxxKMZfhkD5F5VDTSkNN2NA3OG00iBs3vMoTIl/wKBPzpbNKfCrRWXyMbOYw2WwDjojq/hmY3WTi8lXPIGRJ02Y4rttypGY9ymZwnKkB8wdOM7XS+aWIPb/UZg8ttZWeKW4350dhWtpYutqoa412YsdYd1dxAu+v8qxhJfQ4r14VBXM/mVeQie+I9nwXz4yvw+R1QvLgkBrs5gSlOYCZCifmIbQGlv2DlM1HKZuPIf1wZbo0h7D47F5AA9sjgOIdoe9G0Z8OVMoSxAXgcV5dZMgTlQqeXX9r8VYiWF5T58cPaeEr5FzFBWk4Dt+gIByRXm8vqjUo7iPIvUGxXG/F7hvshyjFqw/h2PUme2s9Qkre1PE7WEHs7rtMRjexQnRxRjK5GsPUagzTqzGcIIamagwnV2M4tWIQ1VQcrMfaJgXb9cARgYwB/RWduNCAYmcXyZX/C9kbbNyNxgcA"); // Kotlin.kotlin_module_metadata(393729, "kotlin", "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"); diff --git a/assets/v2/general/kt/src/org/bh/scripts/components/themeSwatches/Test.java b/assets/v2/general/kt/src/org/bh/scripts/components/themeSwatches/Test.java deleted file mode 100644 index 4152eb8..0000000 --- a/assets/v2/general/kt/src/org/bh/scripts/components/themeSwatches/Test.java +++ /dev/null @@ -1,8 +0,0 @@ - -class Foo { - void bar() { - if (3 == 3 == 3) { - System.out.println("Oh") - } - } -} \ No newline at end of file diff --git a/assets/v2/general/kt/src/org/bh/scripts/general/Main.kt b/assets/v2/general/kt/src/org/bh/scripts/general/Main.kt index 83ed4ee..72efd05 100644 --- a/assets/v2/general/kt/src/org/bh/scripts/general/Main.kt +++ b/assets/v2/general/kt/src/org/bh/scripts/general/Main.kt @@ -23,6 +23,7 @@ fun main(args: Array) { jq(document).ready { Setup.performCommonPageConnections() Setup.reloadStates() + Setup.showJsOnlyElements() } } @@ -34,6 +35,9 @@ private object Setup { private val themeSwatchControllers = mutableListOf() + + // MARK: - Connect + fun performCommonPageConnections() { connectAllSidebarsToSidebarButtons() connectAllThemeSwatches() @@ -73,6 +77,9 @@ private object Setup { } + + // MARK: - Reload + fun reloadStates() { reloadTheme() } @@ -81,4 +88,12 @@ private object Setup { private fun reloadTheme() { ThemeController.reloadTheme() } + + + + // MARK: - JS Requirement Communication + + fun showJsOnlyElements() { + jq(".show-js").removeClass("show-js") + } }