package com.jackchapman.codingchallenges.hackerrank

typealias Plus = List<Pair<Int, Int>>

/**
 * Problem: [Ema's Supercomputer](https://www.hackerrank.com/challenges/two-pluses/)
 *
 * Given a matrix of good (`G`) cells and bad (`B`) cells, find 2 pluses made of
 * good cells whose area has the greatest product
 * @param grid A 2D character matrix made of good and bad cells
 * @return The product of the 2 largest pluses
 */
fun twoPluses(grid: Array<String>): Int {
    val m = grid.map { it.toCharArray() }
    return m.maxOf { i, j ->
        var firstRadius = 0
        var curMax = 0
        var firstPlus = cross(i, j, firstRadius)
        while (firstPlus.isValid(m)) {
            curMax = maxOf(curMax, firstPlus.size * m.maxOf(i, j) { y, x ->
                var secondRadius = 0
                var secondPlus: Plus
                do secondPlus = cross(y, x, secondRadius++)
                while (secondPlus.isValid(m) && secondPlus.none { it in firstPlus })
                secondPlus.size - 4
            })
            firstPlus = cross(i, j, ++firstRadius)
        }
        curMax
    }
}

/**
 * Returns the largest value among all values produced by selector function applied to each element in the matrix
 * @see Iterable.maxOf
 */
private inline fun List<CharArray>.maxOf(startY: Int = 0, startX: Int = 0, receiver: (Int, Int) -> Int) =
    (startY until size).maxOf { i -> (startX until first().size).maxOf { j -> receiver(i, j) } }

/**
 * Ensures that each index in a list of indices is inside a given matrix and is a 'good' cell
 */
private fun Plus.isValid(matrix: List<CharArray>): Boolean =
    none { (y, x) -> y !in matrix.indices || x !in matrix[0].indices } && map { (y, x) -> matrix[y][x] }.none { it != 'G' }

/**
 * Given an index of the centre of a plus, determine all the indices of each of the cells in the plus
 */
private fun cross(row: Int, col: Int, n: Int): Plus =
    ((col - n until col) + (col + 1..col + n)).map { row to it } + (row - n..row + n).map { it to col }

Compiled from "EmasSupercomputer.kt"
public final class com.jackchapman.codingchallenges.hackerrank.EmasSupercomputerKt {
  public static final int twoPluses(java.lang.String[]);
    Code:
       0: aload_0
       1: ldc           #9                  // String grid
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: astore_2
       8: iconst_0
       9: istore_3
      10: aload_2
      11: astore        4
      13: new           #17                 // class java/util/ArrayList
      16: dup
      17: aload_2
      18: arraylength
      19: invokespecial #21                 // Method java/util/ArrayList."<init>":(I)V
      22: checkcast     #23                 // class java/util/Collection
      25: astore        5
      27: iconst_0
      28: istore        6
      30: iconst_0
      31: istore        7
      33: aload         4
      35: arraylength
      36: istore        8
      38: iload         7
      40: iload         8
      42: if_icmpge     93
      45: aload         4
      47: iload         7
      49: aaload
      50: astore        9
      52: aload         5
      54: aload         9
      56: astore        10
      58: astore        43
      60: iconst_0
      61: istore        11
      63: aload         10
      65: invokevirtual #29                 // Method java/lang/String.toCharArray:()[C
      68: dup
      69: ldc           #31                 // String toCharArray(...)
      71: invokestatic  #34                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      74: nop
      75: astore        44
      77: aload         43
      79: aload         44
      81: invokeinterface #38,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
      86: pop
      87: iinc          7, 1
      90: goto          38
      93: aload         5
      95: checkcast     #40                 // class java/util/List
      98: nop
      99: astore_1
     100: aload_1
     101: astore_2
     102: iconst_0
     103: istore_3
     104: iconst_0
     105: istore        4
     107: iconst_0
     108: istore        5
     110: iload_3
     111: aload_2
     112: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
     117: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
     120: checkcast     #52                 // class java/lang/Iterable
     123: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     128: astore        6
     130: aload         6
     132: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     137: ifne          148
     140: new           #64                 // class java/util/NoSuchElementException
     143: dup
     144: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
     147: athrow
     148: aload         6
     150: checkcast     #69                 // class kotlin/collections/IntIterator
     153: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     156: istore        7
     158: iconst_0
     159: istore        8
     161: iload         4
     163: aload_2
     164: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     167: checkcast     #80                 // class "[C"
     170: arraylength
     171: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
     174: checkcast     #52                 // class java/lang/Iterable
     177: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     182: astore        9
     184: aload         9
     186: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     191: ifne          202
     194: new           #64                 // class java/util/NoSuchElementException
     197: dup
     198: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
     201: athrow
     202: aload         9
     204: checkcast     #69                 // class kotlin/collections/IntIterator
     207: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     210: istore        10
     212: iconst_0
     213: istore        11
     215: iload         7
     217: iload         10
     219: istore        12
     221: istore        13
     223: iconst_0
     224: istore        14
     226: iconst_0
     227: istore        15
     229: iconst_0
     230: istore        16
     232: aconst_null
     233: astore        17
     235: iload         13
     237: iload         12
     239: iload         15
     241: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
     244: astore        17
     246: aload         17
     248: aload_1
     249: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
     252: ifeq          1172
     255: aload         17
     257: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
     262: aload_1
     263: astore        18
     265: istore        19
     267: iconst_0
     268: istore        20
     270: iload         13
     272: aload         18
     274: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
     279: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
     282: checkcast     #52                 // class java/lang/Iterable
     285: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     290: astore        21
     292: aload         21
     294: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     299: ifne          310
     302: new           #64                 // class java/util/NoSuchElementException
     305: dup
     306: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
     309: athrow
     310: aload         21
     312: checkcast     #69                 // class kotlin/collections/IntIterator
     315: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     318: istore        22
     320: iconst_0
     321: istore        23
     323: iload         12
     325: aload         18
     327: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     330: checkcast     #80                 // class "[C"
     333: arraylength
     334: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
     337: checkcast     #52                 // class java/lang/Iterable
     340: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     345: astore        24
     347: aload         24
     349: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     354: ifne          365
     357: new           #64                 // class java/util/NoSuchElementException
     360: dup
     361: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
     364: athrow
     365: aload         24
     367: checkcast     #69                 // class kotlin/collections/IntIterator
     370: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     373: istore        25
     375: iconst_0
     376: istore        26
     378: iload         22
     380: iload         25
     382: istore        27
     384: istore        28
     386: iconst_0
     387: istore        29
     389: iconst_0
     390: istore        30
     392: aconst_null
     393: astore        31
     395: iload         28
     397: iload         27
     399: iload         30
     401: iinc          30, 1
     404: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
     407: astore        31
     409: aload         31
     411: aload_1
     412: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
     415: ifeq          511
     418: aload         31
     420: checkcast     #52                 // class java/lang/Iterable
     423: astore        32
     425: iconst_0
     426: istore        33
     428: aload         32
     430: instanceof    #23                 // class java/util/Collection
     433: ifeq          453
     436: aload         32
     438: checkcast     #23                 // class java/util/Collection
     441: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
     446: ifeq          453
     449: iconst_1
     450: goto          508
     453: aload         32
     455: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     460: astore        34
     462: aload         34
     464: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     469: ifeq          507
     472: aload         34
     474: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     479: astore        35
     481: aload         35
     483: checkcast     #97                 // class kotlin/Pair
     486: astore        36
     488: iconst_0
     489: istore        37
     491: aload         17
     493: aload         36
     495: invokeinterface #100,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
     500: ifeq          462
     503: iconst_0
     504: goto          508
     507: iconst_1
     508: ifne          395
     511: aload         31
     513: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
     518: iconst_4
     519: isub
     520: nop
     521: istore        25
     523: aload         24
     525: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     530: ifeq          705
     533: aload         24
     535: checkcast     #69                 // class kotlin/collections/IntIterator
     538: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     541: istore        26
     543: iconst_0
     544: istore        38
     546: iload         22
     548: iload         26
     550: istore        27
     552: istore        28
     554: iconst_0
     555: istore        29
     557: iconst_0
     558: istore        30
     560: aconst_null
     561: astore        31
     563: iload         28
     565: iload         27
     567: iload         30
     569: iinc          30, 1
     572: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
     575: astore        31
     577: aload         31
     579: aload_1
     580: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
     583: ifeq          679
     586: aload         31
     588: checkcast     #52                 // class java/lang/Iterable
     591: astore        32
     593: iconst_0
     594: istore        33
     596: aload         32
     598: instanceof    #23                 // class java/util/Collection
     601: ifeq          621
     604: aload         32
     606: checkcast     #23                 // class java/util/Collection
     609: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
     614: ifeq          621
     617: iconst_1
     618: goto          676
     621: aload         32
     623: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     628: astore        34
     630: aload         34
     632: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     637: ifeq          675
     640: aload         34
     642: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     647: astore        35
     649: aload         35
     651: checkcast     #97                 // class kotlin/Pair
     654: astore        36
     656: iconst_0
     657: istore        37
     659: aload         17
     661: aload         36
     663: invokeinterface #100,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
     668: ifeq          630
     671: iconst_0
     672: goto          676
     675: iconst_1
     676: ifne          563
     679: aload         31
     681: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
     686: iconst_4
     687: isub
     688: nop
     689: istore        26
     691: iload         25
     693: iload         26
     695: if_icmpge     523
     698: iload         26
     700: istore        25
     702: goto          523
     705: iload         25
     707: nop
     708: istore        22
     710: aload         21
     712: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     717: ifeq          1134
     720: aload         21
     722: checkcast     #69                 // class kotlin/collections/IntIterator
     725: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     728: istore        23
     730: iconst_0
     731: istore        24
     733: iload         12
     735: aload         18
     737: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     740: checkcast     #80                 // class "[C"
     743: arraylength
     744: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
     747: checkcast     #52                 // class java/lang/Iterable
     750: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     755: astore        25
     757: aload         25
     759: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     764: ifne          775
     767: new           #64                 // class java/util/NoSuchElementException
     770: dup
     771: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
     774: athrow
     775: aload         25
     777: checkcast     #69                 // class kotlin/collections/IntIterator
     780: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     783: istore        26
     785: iconst_0
     786: istore        38
     788: iload         23
     790: iload         26
     792: istore        27
     794: istore        28
     796: iconst_0
     797: istore        29
     799: iconst_0
     800: istore        30
     802: aconst_null
     803: astore        31
     805: iload         28
     807: iload         27
     809: iload         30
     811: iinc          30, 1
     814: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
     817: astore        31
     819: aload         31
     821: aload_1
     822: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
     825: ifeq          921
     828: aload         31
     830: checkcast     #52                 // class java/lang/Iterable
     833: astore        32
     835: iconst_0
     836: istore        33
     838: aload         32
     840: instanceof    #23                 // class java/util/Collection
     843: ifeq          863
     846: aload         32
     848: checkcast     #23                 // class java/util/Collection
     851: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
     856: ifeq          863
     859: iconst_1
     860: goto          918
     863: aload         32
     865: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     870: astore        34
     872: aload         34
     874: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     879: ifeq          917
     882: aload         34
     884: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     889: astore        35
     891: aload         35
     893: checkcast     #97                 // class kotlin/Pair
     896: astore        36
     898: iconst_0
     899: istore        37
     901: aload         17
     903: aload         36
     905: invokeinterface #100,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
     910: ifeq          872
     913: iconst_0
     914: goto          918
     917: iconst_1
     918: ifne          805
     921: aload         31
     923: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
     928: iconst_4
     929: isub
     930: nop
     931: istore        26
     933: aload         25
     935: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     940: ifeq          1115
     943: aload         25
     945: checkcast     #69                 // class kotlin/collections/IntIterator
     948: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     951: istore        38
     953: iconst_0
     954: istore        39
     956: iload         23
     958: iload         38
     960: istore        27
     962: istore        28
     964: iconst_0
     965: istore        29
     967: iconst_0
     968: istore        30
     970: aconst_null
     971: astore        31
     973: iload         28
     975: iload         27
     977: iload         30
     979: iinc          30, 1
     982: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
     985: astore        31
     987: aload         31
     989: aload_1
     990: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
     993: ifeq          1089
     996: aload         31
     998: checkcast     #52                 // class java/lang/Iterable
    1001: astore        32
    1003: iconst_0
    1004: istore        33
    1006: aload         32
    1008: instanceof    #23                 // class java/util/Collection
    1011: ifeq          1031
    1014: aload         32
    1016: checkcast     #23                 // class java/util/Collection
    1019: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
    1024: ifeq          1031
    1027: iconst_1
    1028: goto          1086
    1031: aload         32
    1033: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1038: astore        34
    1040: aload         34
    1042: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1047: ifeq          1085
    1050: aload         34
    1052: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1057: astore        35
    1059: aload         35
    1061: checkcast     #97                 // class kotlin/Pair
    1064: astore        36
    1066: iconst_0
    1067: istore        37
    1069: aload         17
    1071: aload         36
    1073: invokeinterface #100,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    1078: ifeq          1040
    1081: iconst_0
    1082: goto          1086
    1085: iconst_1
    1086: ifne          973
    1089: aload         31
    1091: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    1096: iconst_4
    1097: isub
    1098: nop
    1099: istore        38
    1101: iload         26
    1103: iload         38
    1105: if_icmpge     933
    1108: iload         38
    1110: istore        26
    1112: goto          933
    1115: iload         26
    1117: nop
    1118: istore        23
    1120: iload         22
    1122: iload         23
    1124: if_icmpge     710
    1127: iload         23
    1129: istore        22
    1131: goto          710
    1134: iload         22
    1136: nop
    1137: istore        40
    1139: iload         19
    1141: iload         40
    1143: imul
    1144: istore        18
    1146: iload         16
    1148: iload         18
    1150: invokestatic  #106                // Method java/lang/Math.max:(II)I
    1153: istore        16
    1155: iload         13
    1157: iload         12
    1159: iinc          15, 1
    1162: iload         15
    1164: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    1167: astore        17
    1169: goto          246
    1172: iload         16
    1174: nop
    1175: istore        10
    1177: aload         9
    1179: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1184: ifeq          2176
    1187: aload         9
    1189: checkcast     #69                 // class kotlin/collections/IntIterator
    1192: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    1195: istore        11
    1197: iconst_0
    1198: istore        41
    1200: iload         7
    1202: iload         11
    1204: istore        12
    1206: istore        13
    1208: iconst_0
    1209: istore        14
    1211: iconst_0
    1212: istore        15
    1214: iconst_0
    1215: istore        16
    1217: aconst_null
    1218: astore        17
    1220: iload         13
    1222: iload         12
    1224: iload         15
    1226: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    1229: astore        17
    1231: aload         17
    1233: aload_1
    1234: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
    1237: ifeq          2157
    1240: aload         17
    1242: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    1247: aload_1
    1248: astore        18
    1250: istore        19
    1252: iconst_0
    1253: istore        20
    1255: iload         13
    1257: aload         18
    1259: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    1264: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
    1267: checkcast     #52                 // class java/lang/Iterable
    1270: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1275: astore        21
    1277: aload         21
    1279: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1284: ifne          1295
    1287: new           #64                 // class java/util/NoSuchElementException
    1290: dup
    1291: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
    1294: athrow
    1295: aload         21
    1297: checkcast     #69                 // class kotlin/collections/IntIterator
    1300: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    1303: istore        22
    1305: iconst_0
    1306: istore        23
    1308: iload         12
    1310: aload         18
    1312: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
    1315: checkcast     #80                 // class "[C"
    1318: arraylength
    1319: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
    1322: checkcast     #52                 // class java/lang/Iterable
    1325: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1330: astore        24
    1332: aload         24
    1334: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1339: ifne          1350
    1342: new           #64                 // class java/util/NoSuchElementException
    1345: dup
    1346: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
    1349: athrow
    1350: aload         24
    1352: checkcast     #69                 // class kotlin/collections/IntIterator
    1355: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    1358: istore        25
    1360: iconst_0
    1361: istore        26
    1363: iload         22
    1365: iload         25
    1367: istore        27
    1369: istore        28
    1371: iconst_0
    1372: istore        29
    1374: iconst_0
    1375: istore        30
    1377: aconst_null
    1378: astore        31
    1380: iload         28
    1382: iload         27
    1384: iload         30
    1386: iinc          30, 1
    1389: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    1392: astore        31
    1394: aload         31
    1396: aload_1
    1397: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
    1400: ifeq          1496
    1403: aload         31
    1405: checkcast     #52                 // class java/lang/Iterable
    1408: astore        32
    1410: iconst_0
    1411: istore        33
    1413: aload         32
    1415: instanceof    #23                 // class java/util/Collection
    1418: ifeq          1438
    1421: aload         32
    1423: checkcast     #23                 // class java/util/Collection
    1426: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
    1431: ifeq          1438
    1434: iconst_1
    1435: goto          1493
    1438: aload         32
    1440: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1445: astore        34
    1447: aload         34
    1449: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1454: ifeq          1492
    1457: aload         34
    1459: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1464: astore        35
    1466: aload         35
    1468: checkcast     #97                 // class kotlin/Pair
    1471: astore        36
    1473: iconst_0
    1474: istore        37
    1476: aload         17
    1478: aload         36
    1480: invokeinterface #100,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    1485: ifeq          1447
    1488: iconst_0
    1489: goto          1493
    1492: iconst_1
    1493: ifne          1380
    1496: aload         31
    1498: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    1503: iconst_4
    1504: isub
    1505: nop
    1506: istore        25
    1508: aload         24
    1510: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1515: ifeq          1690
    1518: aload         24
    1520: checkcast     #69                 // class kotlin/collections/IntIterator
    1523: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    1526: istore        26
    1528: iconst_0
    1529: istore        38
    1531: iload         22
    1533: iload         26
    1535: istore        27
    1537: istore        28
    1539: iconst_0
    1540: istore        29
    1542: iconst_0
    1543: istore        30
    1545: aconst_null
    1546: astore        31
    1548: iload         28
    1550: iload         27
    1552: iload         30
    1554: iinc          30, 1
    1557: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    1560: astore        31
    1562: aload         31
    1564: aload_1
    1565: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
    1568: ifeq          1664
    1571: aload         31
    1573: checkcast     #52                 // class java/lang/Iterable
    1576: astore        32
    1578: iconst_0
    1579: istore        33
    1581: aload         32
    1583: instanceof    #23                 // class java/util/Collection
    1586: ifeq          1606
    1589: aload         32
    1591: checkcast     #23                 // class java/util/Collection
    1594: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
    1599: ifeq          1606
    1602: iconst_1
    1603: goto          1661
    1606: aload         32
    1608: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1613: astore        34
    1615: aload         34
    1617: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1622: ifeq          1660
    1625: aload         34
    1627: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1632: astore        35
    1634: aload         35
    1636: checkcast     #97                 // class kotlin/Pair
    1639: astore        36
    1641: iconst_0
    1642: istore        37
    1644: aload         17
    1646: aload         36
    1648: invokeinterface #100,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    1653: ifeq          1615
    1656: iconst_0
    1657: goto          1661
    1660: iconst_1
    1661: ifne          1548
    1664: aload         31
    1666: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    1671: iconst_4
    1672: isub
    1673: nop
    1674: istore        26
    1676: iload         25
    1678: iload         26
    1680: if_icmpge     1508
    1683: iload         26
    1685: istore        25
    1687: goto          1508
    1690: iload         25
    1692: nop
    1693: istore        22
    1695: aload         21
    1697: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1702: ifeq          2119
    1705: aload         21
    1707: checkcast     #69                 // class kotlin/collections/IntIterator
    1710: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    1713: istore        23
    1715: iconst_0
    1716: istore        24
    1718: iload         12
    1720: aload         18
    1722: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
    1725: checkcast     #80                 // class "[C"
    1728: arraylength
    1729: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
    1732: checkcast     #52                 // class java/lang/Iterable
    1735: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1740: astore        25
    1742: aload         25
    1744: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1749: ifne          1760
    1752: new           #64                 // class java/util/NoSuchElementException
    1755: dup
    1756: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
    1759: athrow
    1760: aload         25
    1762: checkcast     #69                 // class kotlin/collections/IntIterator
    1765: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    1768: istore        26
    1770: iconst_0
    1771: istore        38
    1773: iload         23
    1775: iload         26
    1777: istore        27
    1779: istore        28
    1781: iconst_0
    1782: istore        29
    1784: iconst_0
    1785: istore        30
    1787: aconst_null
    1788: astore        31
    1790: iload         28
    1792: iload         27
    1794: iload         30
    1796: iinc          30, 1
    1799: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    1802: astore        31
    1804: aload         31
    1806: aload_1
    1807: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
    1810: ifeq          1906
    1813: aload         31
    1815: checkcast     #52                 // class java/lang/Iterable
    1818: astore        32
    1820: iconst_0
    1821: istore        33
    1823: aload         32
    1825: instanceof    #23                 // class java/util/Collection
    1828: ifeq          1848
    1831: aload         32
    1833: checkcast     #23                 // class java/util/Collection
    1836: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
    1841: ifeq          1848
    1844: iconst_1
    1845: goto          1903
    1848: aload         32
    1850: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1855: astore        34
    1857: aload         34
    1859: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1864: ifeq          1902
    1867: aload         34
    1869: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1874: astore        35
    1876: aload         35
    1878: checkcast     #97                 // class kotlin/Pair
    1881: astore        36
    1883: iconst_0
    1884: istore        37
    1886: aload         17
    1888: aload         36
    1890: invokeinterface #100,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    1895: ifeq          1857
    1898: iconst_0
    1899: goto          1903
    1902: iconst_1
    1903: ifne          1790
    1906: aload         31
    1908: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    1913: iconst_4
    1914: isub
    1915: nop
    1916: istore        26
    1918: aload         25
    1920: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1925: ifeq          2100
    1928: aload         25
    1930: checkcast     #69                 // class kotlin/collections/IntIterator
    1933: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    1936: istore        38
    1938: iconst_0
    1939: istore        39
    1941: iload         23
    1943: iload         38
    1945: istore        27
    1947: istore        28
    1949: iconst_0
    1950: istore        29
    1952: iconst_0
    1953: istore        30
    1955: aconst_null
    1956: astore        31
    1958: iload         28
    1960: iload         27
    1962: iload         30
    1964: iinc          30, 1
    1967: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    1970: astore        31
    1972: aload         31
    1974: aload_1
    1975: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
    1978: ifeq          2074
    1981: aload         31
    1983: checkcast     #52                 // class java/lang/Iterable
    1986: astore        32
    1988: iconst_0
    1989: istore        33
    1991: aload         32
    1993: instanceof    #23                 // class java/util/Collection
    1996: ifeq          2016
    1999: aload         32
    2001: checkcast     #23                 // class java/util/Collection
    2004: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
    2009: ifeq          2016
    2012: iconst_1
    2013: goto          2071
    2016: aload         32
    2018: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    2023: astore        34
    2025: aload         34
    2027: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2032: ifeq          2070
    2035: aload         34
    2037: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    2042: astore        35
    2044: aload         35
    2046: checkcast     #97                 // class kotlin/Pair
    2049: astore        36
    2051: iconst_0
    2052: istore        37
    2054: aload         17
    2056: aload         36
    2058: invokeinterface #100,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    2063: ifeq          2025
    2066: iconst_0
    2067: goto          2071
    2070: iconst_1
    2071: ifne          1958
    2074: aload         31
    2076: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    2081: iconst_4
    2082: isub
    2083: nop
    2084: istore        38
    2086: iload         26
    2088: iload         38
    2090: if_icmpge     1918
    2093: iload         38
    2095: istore        26
    2097: goto          1918
    2100: iload         26
    2102: nop
    2103: istore        23
    2105: iload         22
    2107: iload         23
    2109: if_icmpge     1695
    2112: iload         23
    2114: istore        22
    2116: goto          1695
    2119: iload         22
    2121: nop
    2122: istore        40
    2124: iload         19
    2126: iload         40
    2128: imul
    2129: istore        18
    2131: iload         16
    2133: iload         18
    2135: invokestatic  #106                // Method java/lang/Math.max:(II)I
    2138: istore        16
    2140: iload         13
    2142: iload         12
    2144: iinc          15, 1
    2147: iload         15
    2149: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    2152: astore        17
    2154: goto          1231
    2157: iload         16
    2159: nop
    2160: istore        11
    2162: iload         10
    2164: iload         11
    2166: if_icmpge     1177
    2169: iload         11
    2171: istore        10
    2173: goto          1177
    2176: iload         10
    2178: nop
    2179: istore        7
    2181: aload         6
    2183: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2188: ifeq          4238
    2191: aload         6
    2193: checkcast     #69                 // class kotlin/collections/IntIterator
    2196: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    2199: istore        8
    2201: iconst_0
    2202: istore        9
    2204: iload         4
    2206: aload_2
    2207: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
    2210: checkcast     #80                 // class "[C"
    2213: arraylength
    2214: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
    2217: checkcast     #52                 // class java/lang/Iterable
    2220: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    2225: astore        10
    2227: aload         10
    2229: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2234: ifne          2245
    2237: new           #64                 // class java/util/NoSuchElementException
    2240: dup
    2241: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
    2244: athrow
    2245: aload         10
    2247: checkcast     #69                 // class kotlin/collections/IntIterator
    2250: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    2253: istore        11
    2255: iconst_0
    2256: istore        41
    2258: iload         8
    2260: iload         11
    2262: istore        12
    2264: istore        13
    2266: iconst_0
    2267: istore        14
    2269: iconst_0
    2270: istore        15
    2272: iconst_0
    2273: istore        16
    2275: aconst_null
    2276: astore        17
    2278: iload         13
    2280: iload         12
    2282: iload         15
    2284: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    2287: astore        17
    2289: aload         17
    2291: aload_1
    2292: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
    2295: ifeq          3215
    2298: aload         17
    2300: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    2305: aload_1
    2306: astore        18
    2308: istore        19
    2310: iconst_0
    2311: istore        20
    2313: iload         13
    2315: aload         18
    2317: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    2322: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
    2325: checkcast     #52                 // class java/lang/Iterable
    2328: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    2333: astore        21
    2335: aload         21
    2337: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2342: ifne          2353
    2345: new           #64                 // class java/util/NoSuchElementException
    2348: dup
    2349: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
    2352: athrow
    2353: aload         21
    2355: checkcast     #69                 // class kotlin/collections/IntIterator
    2358: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    2361: istore        22
    2363: iconst_0
    2364: istore        23
    2366: iload         12
    2368: aload         18
    2370: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
    2373: checkcast     #80                 // class "[C"
    2376: arraylength
    2377: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
    2380: checkcast     #52                 // class java/lang/Iterable
    2383: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    2388: astore        24
    2390: aload         24
    2392: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2397: ifne          2408
    2400: new           #64                 // class java/util/NoSuchElementException
    2403: dup
    2404: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
    2407: athrow
    2408: aload         24
    2410: checkcast     #69                 // class kotlin/collections/IntIterator
    2413: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    2416: istore        25
    2418: iconst_0
    2419: istore        26
    2421: iload         22
    2423: iload         25
    2425: istore        27
    2427: istore        28
    2429: iconst_0
    2430: istore        29
    2432: iconst_0
    2433: istore        30
    2435: aconst_null
    2436: astore        31
    2438: iload         28
    2440: iload         27
    2442: iload         30
    2444: iinc          30, 1
    2447: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    2450: astore        31
    2452: aload         31
    2454: aload_1
    2455: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
    2458: ifeq          2554
    2461: aload         31
    2463: checkcast     #52                 // class java/lang/Iterable
    2466: astore        32
    2468: iconst_0
    2469: istore        33
    2471: aload         32
    2473: instanceof    #23                 // class java/util/Collection
    2476: ifeq          2496
    2479: aload         32
    2481: checkcast     #23                 // class java/util/Collection
    2484: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
    2489: ifeq          2496
    2492: iconst_1
    2493: goto          2551
    2496: aload         32
    2498: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    2503: astore        34
    2505: aload         34
    2507: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2512: ifeq          2550
    2515: aload         34
    2517: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    2522: astore        35
    2524: aload         35
    2526: checkcast     #97                 // class kotlin/Pair
    2529: astore        36
    2531: iconst_0
    2532: istore        37
    2534: aload         17
    2536: aload         36
    2538: invokeinterface #100,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    2543: ifeq          2505
    2546: iconst_0
    2547: goto          2551
    2550: iconst_1
    2551: ifne          2438
    2554: aload         31
    2556: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    2561: iconst_4
    2562: isub
    2563: nop
    2564: istore        25
    2566: aload         24
    2568: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2573: ifeq          2748
    2576: aload         24
    2578: checkcast     #69                 // class kotlin/collections/IntIterator
    2581: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    2584: istore        26
    2586: iconst_0
    2587: istore        38
    2589: iload         22
    2591: iload         26
    2593: istore        27
    2595: istore        28
    2597: iconst_0
    2598: istore        29
    2600: iconst_0
    2601: istore        30
    2603: aconst_null
    2604: astore        31
    2606: iload         28
    2608: iload         27
    2610: iload         30
    2612: iinc          30, 1
    2615: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    2618: astore        31
    2620: aload         31
    2622: aload_1
    2623: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
    2626: ifeq          2722
    2629: aload         31
    2631: checkcast     #52                 // class java/lang/Iterable
    2634: astore        32
    2636: iconst_0
    2637: istore        33
    2639: aload         32
    2641: instanceof    #23                 // class java/util/Collection
    2644: ifeq          2664
    2647: aload         32
    2649: checkcast     #23                 // class java/util/Collection
    2652: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
    2657: ifeq          2664
    2660: iconst_1
    2661: goto          2719
    2664: aload         32
    2666: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    2671: astore        34
    2673: aload         34
    2675: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2680: ifeq          2718
    2683: aload         34
    2685: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    2690: astore        35
    2692: aload         35
    2694: checkcast     #97                 // class kotlin/Pair
    2697: astore        36
    2699: iconst_0
    2700: istore        37
    2702: aload         17
    2704: aload         36
    2706: invokeinterface #100,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    2711: ifeq          2673
    2714: iconst_0
    2715: goto          2719
    2718: iconst_1
    2719: ifne          2606
    2722: aload         31
    2724: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    2729: iconst_4
    2730: isub
    2731: nop
    2732: istore        26
    2734: iload         25
    2736: iload         26
    2738: if_icmpge     2566
    2741: iload         26
    2743: istore        25
    2745: goto          2566
    2748: iload         25
    2750: nop
    2751: istore        22
    2753: aload         21
    2755: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2760: ifeq          3177
    2763: aload         21
    2765: checkcast     #69                 // class kotlin/collections/IntIterator
    2768: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    2771: istore        23
    2773: iconst_0
    2774: istore        24
    2776: iload         12
    2778: aload         18
    2780: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
    2783: checkcast     #80                 // class "[C"
    2786: arraylength
    2787: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
    2790: checkcast     #52                 // class java/lang/Iterable
    2793: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    2798: astore        25
    2800: aload         25
    2802: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2807: ifne          2818
    2810: new           #64                 // class java/util/NoSuchElementException
    2813: dup
    2814: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
    2817: athrow
    2818: aload         25
    2820: checkcast     #69                 // class kotlin/collections/IntIterator
    2823: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    2826: istore        26
    2828: iconst_0
    2829: istore        38
    2831: iload         23
    2833: iload         26
    2835: istore        27
    2837: istore        28
    2839: iconst_0
    2840: istore        29
    2842: iconst_0
    2843: istore        30
    2845: aconst_null
    2846: astore        31
    2848: iload         28
    2850: iload         27
    2852: iload         30
    2854: iinc          30, 1
    2857: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    2860: astore        31
    2862: aload         31
    2864: aload_1
    2865: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
    2868: ifeq          2964
    2871: aload         31
    2873: checkcast     #52                 // class java/lang/Iterable
    2876: astore        32
    2878: iconst_0
    2879: istore        33
    2881: aload         32
    2883: instanceof    #23                 // class java/util/Collection
    2886: ifeq          2906
    2889: aload         32
    2891: checkcast     #23                 // class java/util/Collection
    2894: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
    2899: ifeq          2906
    2902: iconst_1
    2903: goto          2961
    2906: aload         32
    2908: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    2913: astore        34
    2915: aload         34
    2917: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2922: ifeq          2960
    2925: aload         34
    2927: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    2932: astore        35
    2934: aload         35
    2936: checkcast     #97                 // class kotlin/Pair
    2939: astore        36
    2941: iconst_0
    2942: istore        37
    2944: aload         17
    2946: aload         36
    2948: invokeinterface #100,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    2953: ifeq          2915
    2956: iconst_0
    2957: goto          2961
    2960: iconst_1
    2961: ifne          2848
    2964: aload         31
    2966: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    2971: iconst_4
    2972: isub
    2973: nop
    2974: istore        26
    2976: aload         25
    2978: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2983: ifeq          3158
    2986: aload         25
    2988: checkcast     #69                 // class kotlin/collections/IntIterator
    2991: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    2994: istore        38
    2996: iconst_0
    2997: istore        39
    2999: iload         23
    3001: iload         38
    3003: istore        27
    3005: istore        28
    3007: iconst_0
    3008: istore        29
    3010: iconst_0
    3011: istore        30
    3013: aconst_null
    3014: astore        31
    3016: iload         28
    3018: iload         27
    3020: iload         30
    3022: iinc          30, 1
    3025: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    3028: astore        31
    3030: aload         31
    3032: aload_1
    3033: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
    3036: ifeq          3132
    3039: aload         31
    3041: checkcast     #52                 // class java/lang/Iterable
    3044: astore        32
    3046: iconst_0
    3047: istore        33
    3049: aload         32
    3051: instanceof    #23                 // class java/util/Collection
    3054: ifeq          3074
    3057: aload         32
    3059: checkcast     #23                 // class java/util/Collection
    3062: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
    3067: ifeq          3074
    3070: iconst_1
    3071: goto          3129
    3074: aload         32
    3076: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    3081: astore        34
    3083: aload         34
    3085: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    3090: ifeq          3128
    3093: aload         34
    3095: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    3100: astore        35
    3102: aload         35
    3104: checkcast     #97                 // class kotlin/Pair
    3107: astore        36
    3109: iconst_0
    3110: istore        37
    3112: aload         17
    3114: aload         36
    3116: invokeinterface #100,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    3121: ifeq          3083
    3124: iconst_0
    3125: goto          3129
    3128: iconst_1
    3129: ifne          3016
    3132: aload         31
    3134: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    3139: iconst_4
    3140: isub
    3141: nop
    3142: istore        38
    3144: iload         26
    3146: iload         38
    3148: if_icmpge     2976
    3151: iload         38
    3153: istore        26
    3155: goto          2976
    3158: iload         26
    3160: nop
    3161: istore        23
    3163: iload         22
    3165: iload         23
    3167: if_icmpge     2753
    3170: iload         23
    3172: istore        22
    3174: goto          2753
    3177: iload         22
    3179: nop
    3180: istore        40
    3182: iload         19
    3184: iload         40
    3186: imul
    3187: istore        18
    3189: iload         16
    3191: iload         18
    3193: invokestatic  #106                // Method java/lang/Math.max:(II)I
    3196: istore        16
    3198: iload         13
    3200: iload         12
    3202: iinc          15, 1
    3205: iload         15
    3207: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    3210: astore        17
    3212: goto          2289
    3215: iload         16
    3217: nop
    3218: istore        11
    3220: aload         10
    3222: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    3227: ifeq          4219
    3230: aload         10
    3232: checkcast     #69                 // class kotlin/collections/IntIterator
    3235: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    3238: istore        41
    3240: iconst_0
    3241: istore        42
    3243: iload         8
    3245: iload         41
    3247: istore        12
    3249: istore        13
    3251: iconst_0
    3252: istore        14
    3254: iconst_0
    3255: istore        15
    3257: iconst_0
    3258: istore        16
    3260: aconst_null
    3261: astore        17
    3263: iload         13
    3265: iload         12
    3267: iload         15
    3269: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    3272: astore        17
    3274: aload         17
    3276: aload_1
    3277: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
    3280: ifeq          4200
    3283: aload         17
    3285: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    3290: aload_1
    3291: astore        18
    3293: istore        19
    3295: iconst_0
    3296: istore        20
    3298: iload         13
    3300: aload         18
    3302: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    3307: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
    3310: checkcast     #52                 // class java/lang/Iterable
    3313: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    3318: astore        21
    3320: aload         21
    3322: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    3327: ifne          3338
    3330: new           #64                 // class java/util/NoSuchElementException
    3333: dup
    3334: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
    3337: athrow
    3338: aload         21
    3340: checkcast     #69                 // class kotlin/collections/IntIterator
    3343: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    3346: istore        22
    3348: iconst_0
    3349: istore        23
    3351: iload         12
    3353: aload         18
    3355: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
    3358: checkcast     #80                 // class "[C"
    3361: arraylength
    3362: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
    3365: checkcast     #52                 // class java/lang/Iterable
    3368: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    3373: astore        24
    3375: aload         24
    3377: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    3382: ifne          3393
    3385: new           #64                 // class java/util/NoSuchElementException
    3388: dup
    3389: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
    3392: athrow
    3393: aload         24
    3395: checkcast     #69                 // class kotlin/collections/IntIterator
    3398: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    3401: istore        25
    3403: iconst_0
    3404: istore        26
    3406: iload         22
    3408: iload         25
    3410: istore        27
    3412: istore        28
    3414: iconst_0
    3415: istore        29
    3417: iconst_0
    3418: istore        30
    3420: aconst_null
    3421: astore        31
    3423: iload         28
    3425: iload         27
    3427: iload         30
    3429: iinc          30, 1
    3432: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    3435: astore        31
    3437: aload         31
    3439: aload_1
    3440: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
    3443: ifeq          3539
    3446: aload         31
    3448: checkcast     #52                 // class java/lang/Iterable
    3451: astore        32
    3453: iconst_0
    3454: istore        33
    3456: aload         32
    3458: instanceof    #23                 // class java/util/Collection
    3461: ifeq          3481
    3464: aload         32
    3466: checkcast     #23                 // class java/util/Collection
    3469: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
    3474: ifeq          3481
    3477: iconst_1
    3478: goto          3536
    3481: aload         32
    3483: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    3488: astore        34
    3490: aload         34
    3492: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    3497: ifeq          3535
    3500: aload         34
    3502: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    3507: astore        35
    3509: aload         35
    3511: checkcast     #97                 // class kotlin/Pair
    3514: astore        36
    3516: iconst_0
    3517: istore        37
    3519: aload         17
    3521: aload         36
    3523: invokeinterface #100,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    3528: ifeq          3490
    3531: iconst_0
    3532: goto          3536
    3535: iconst_1
    3536: ifne          3423
    3539: aload         31
    3541: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    3546: iconst_4
    3547: isub
    3548: nop
    3549: istore        25
    3551: aload         24
    3553: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    3558: ifeq          3733
    3561: aload         24
    3563: checkcast     #69                 // class kotlin/collections/IntIterator
    3566: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    3569: istore        26
    3571: iconst_0
    3572: istore        38
    3574: iload         22
    3576: iload         26
    3578: istore        27
    3580: istore        28
    3582: iconst_0
    3583: istore        29
    3585: iconst_0
    3586: istore        30
    3588: aconst_null
    3589: astore        31
    3591: iload         28
    3593: iload         27
    3595: iload         30
    3597: iinc          30, 1
    3600: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    3603: astore        31
    3605: aload         31
    3607: aload_1
    3608: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
    3611: ifeq          3707
    3614: aload         31
    3616: checkcast     #52                 // class java/lang/Iterable
    3619: astore        32
    3621: iconst_0
    3622: istore        33
    3624: aload         32
    3626: instanceof    #23                 // class java/util/Collection
    3629: ifeq          3649
    3632: aload         32
    3634: checkcast     #23                 // class java/util/Collection
    3637: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
    3642: ifeq          3649
    3645: iconst_1
    3646: goto          3704
    3649: aload         32
    3651: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    3656: astore        34
    3658: aload         34
    3660: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    3665: ifeq          3703
    3668: aload         34
    3670: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    3675: astore        35
    3677: aload         35
    3679: checkcast     #97                 // class kotlin/Pair
    3682: astore        36
    3684: iconst_0
    3685: istore        37
    3687: aload         17
    3689: aload         36
    3691: invokeinterface #100,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    3696: ifeq          3658
    3699: iconst_0
    3700: goto          3704
    3703: iconst_1
    3704: ifne          3591
    3707: aload         31
    3709: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    3714: iconst_4
    3715: isub
    3716: nop
    3717: istore        26
    3719: iload         25
    3721: iload         26
    3723: if_icmpge     3551
    3726: iload         26
    3728: istore        25
    3730: goto          3551
    3733: iload         25
    3735: nop
    3736: istore        22
    3738: aload         21
    3740: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    3745: ifeq          4162
    3748: aload         21
    3750: checkcast     #69                 // class kotlin/collections/IntIterator
    3753: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    3756: istore        23
    3758: iconst_0
    3759: istore        24
    3761: iload         12
    3763: aload         18
    3765: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
    3768: checkcast     #80                 // class "[C"
    3771: arraylength
    3772: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
    3775: checkcast     #52                 // class java/lang/Iterable
    3778: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    3783: astore        25
    3785: aload         25
    3787: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    3792: ifne          3803
    3795: new           #64                 // class java/util/NoSuchElementException
    3798: dup
    3799: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
    3802: athrow
    3803: aload         25
    3805: checkcast     #69                 // class kotlin/collections/IntIterator
    3808: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    3811: istore        26
    3813: iconst_0
    3814: istore        38
    3816: iload         23
    3818: iload         26
    3820: istore        27
    3822: istore        28
    3824: iconst_0
    3825: istore        29
    3827: iconst_0
    3828: istore        30
    3830: aconst_null
    3831: astore        31
    3833: iload         28
    3835: iload         27
    3837: iload         30
    3839: iinc          30, 1
    3842: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    3845: astore        31
    3847: aload         31
    3849: aload_1
    3850: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
    3853: ifeq          3949
    3856: aload         31
    3858: checkcast     #52                 // class java/lang/Iterable
    3861: astore        32
    3863: iconst_0
    3864: istore        33
    3866: aload         32
    3868: instanceof    #23                 // class java/util/Collection
    3871: ifeq          3891
    3874: aload         32
    3876: checkcast     #23                 // class java/util/Collection
    3879: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
    3884: ifeq          3891
    3887: iconst_1
    3888: goto          3946
    3891: aload         32
    3893: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    3898: astore        34
    3900: aload         34
    3902: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    3907: ifeq          3945
    3910: aload         34
    3912: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    3917: astore        35
    3919: aload         35
    3921: checkcast     #97                 // class kotlin/Pair
    3924: astore        36
    3926: iconst_0
    3927: istore        37
    3929: aload         17
    3931: aload         36
    3933: invokeinterface #100,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    3938: ifeq          3900
    3941: iconst_0
    3942: goto          3946
    3945: iconst_1
    3946: ifne          3833
    3949: aload         31
    3951: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    3956: iconst_4
    3957: isub
    3958: nop
    3959: istore        26
    3961: aload         25
    3963: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    3968: ifeq          4143
    3971: aload         25
    3973: checkcast     #69                 // class kotlin/collections/IntIterator
    3976: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
    3979: istore        38
    3981: iconst_0
    3982: istore        39
    3984: iload         23
    3986: iload         38
    3988: istore        27
    3990: istore        28
    3992: iconst_0
    3993: istore        29
    3995: iconst_0
    3996: istore        30
    3998: aconst_null
    3999: astore        31
    4001: iload         28
    4003: iload         27
    4005: iload         30
    4007: iinc          30, 1
    4010: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    4013: astore        31
    4015: aload         31
    4017: aload_1
    4018: invokestatic  #88                 // Method isValid:(Ljava/util/List;Ljava/util/List;)Z
    4021: ifeq          4117
    4024: aload         31
    4026: checkcast     #52                 // class java/lang/Iterable
    4029: astore        32
    4031: iconst_0
    4032: istore        33
    4034: aload         32
    4036: instanceof    #23                 // class java/util/Collection
    4039: ifeq          4059
    4042: aload         32
    4044: checkcast     #23                 // class java/util/Collection
    4047: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
    4052: ifeq          4059
    4055: iconst_1
    4056: goto          4114
    4059: aload         32
    4061: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    4066: astore        34
    4068: aload         34
    4070: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    4075: ifeq          4113
    4078: aload         34
    4080: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    4085: astore        35
    4087: aload         35
    4089: checkcast     #97                 // class kotlin/Pair
    4092: astore        36
    4094: iconst_0
    4095: istore        37
    4097: aload         17
    4099: aload         36
    4101: invokeinterface #100,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    4106: ifeq          4068
    4109: iconst_0
    4110: goto          4114
    4113: iconst_1
    4114: ifne          4001
    4117: aload         31
    4119: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
    4124: iconst_4
    4125: isub
    4126: nop
    4127: istore        38
    4129: iload         26
    4131: iload         38
    4133: if_icmpge     3961
    4136: iload         38
    4138: istore        26
    4140: goto          3961
    4143: iload         26
    4145: nop
    4146: istore        23
    4148: iload         22
    4150: iload         23
    4152: if_icmpge     3738
    4155: iload         23
    4157: istore        22
    4159: goto          3738
    4162: iload         22
    4164: nop
    4165: istore        40
    4167: iload         19
    4169: iload         40
    4171: imul
    4172: istore        18
    4174: iload         16
    4176: iload         18
    4178: invokestatic  #106                // Method java/lang/Math.max:(II)I
    4181: istore        16
    4183: iload         13
    4185: iload         12
    4187: iinc          15, 1
    4190: iload         15
    4192: invokestatic  #84                 // Method cross:(III)Ljava/util/List;
    4195: astore        17
    4197: goto          3274
    4200: iload         16
    4202: nop
    4203: istore        41
    4205: iload         11
    4207: iload         41
    4209: if_icmpge     3220
    4212: iload         41
    4214: istore        11
    4216: goto          3220
    4219: iload         11
    4221: nop
    4222: istore        8
    4224: iload         7
    4226: iload         8
    4228: if_icmpge     2181
    4231: iload         8
    4233: istore        7
    4235: goto          2181
    4238: iload         7
    4240: nop
    4241: ireturn

  private static final int maxOf(java.util.List<char[]>, int, int, kotlin.jvm.functions.Function2<? super java.lang.Integer, ? super java.lang.Integer, java.lang.Integer>);
    Code:
       0: iconst_0
       1: istore        4
       3: iload_1
       4: aload_0
       5: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
      10: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
      13: checkcast     #52                 // class java/lang/Iterable
      16: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      21: astore        5
      23: aload         5
      25: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      30: ifne          41
      33: new           #64                 // class java/util/NoSuchElementException
      36: dup
      37: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
      40: athrow
      41: aload         5
      43: checkcast     #69                 // class kotlin/collections/IntIterator
      46: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
      49: istore        6
      51: iconst_0
      52: istore        7
      54: iload_2
      55: aload_0
      56: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
      59: checkcast     #80                 // class "[C"
      62: arraylength
      63: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
      66: checkcast     #52                 // class java/lang/Iterable
      69: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      74: astore        8
      76: aload         8
      78: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      83: ifne          94
      86: new           #64                 // class java/util/NoSuchElementException
      89: dup
      90: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
      93: athrow
      94: aload         8
      96: checkcast     #69                 // class kotlin/collections/IntIterator
      99: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     102: istore        9
     104: iconst_0
     105: istore        10
     107: aload_3
     108: iload         6
     110: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     113: iload         9
     115: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     118: invokeinterface #164,  3          // InterfaceMethod kotlin/jvm/functions/Function2.invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     123: checkcast     #166                // class java/lang/Number
     126: invokevirtual #169                // Method java/lang/Number.intValue:()I
     129: istore        9
     131: aload         8
     133: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     138: ifeq          192
     141: aload         8
     143: checkcast     #69                 // class kotlin/collections/IntIterator
     146: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     149: istore        10
     151: iconst_0
     152: istore        11
     154: aload_3
     155: iload         6
     157: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     160: iload         10
     162: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     165: invokeinterface #164,  3          // InterfaceMethod kotlin/jvm/functions/Function2.invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     170: checkcast     #166                // class java/lang/Number
     173: invokevirtual #169                // Method java/lang/Number.intValue:()I
     176: istore        10
     178: iload         9
     180: iload         10
     182: if_icmpge     131
     185: iload         10
     187: istore        9
     189: goto          131
     192: iload         9
     194: nop
     195: istore        6
     197: aload         5
     199: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     204: ifeq          377
     207: aload         5
     209: checkcast     #69                 // class kotlin/collections/IntIterator
     212: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     215: istore        7
     217: iconst_0
     218: istore        8
     220: iload_2
     221: aload_0
     222: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     225: checkcast     #80                 // class "[C"
     228: arraylength
     229: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
     232: checkcast     #52                 // class java/lang/Iterable
     235: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     240: astore        9
     242: aload         9
     244: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     249: ifne          260
     252: new           #64                 // class java/util/NoSuchElementException
     255: dup
     256: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
     259: athrow
     260: aload         9
     262: checkcast     #69                 // class kotlin/collections/IntIterator
     265: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     268: istore        10
     270: iconst_0
     271: istore        11
     273: aload_3
     274: iload         7
     276: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     279: iload         10
     281: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     284: invokeinterface #164,  3          // InterfaceMethod kotlin/jvm/functions/Function2.invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     289: checkcast     #166                // class java/lang/Number
     292: invokevirtual #169                // Method java/lang/Number.intValue:()I
     295: istore        10
     297: aload         9
     299: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     304: ifeq          358
     307: aload         9
     309: checkcast     #69                 // class kotlin/collections/IntIterator
     312: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     315: istore        11
     317: iconst_0
     318: istore        12
     320: aload_3
     321: iload         7
     323: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     326: iload         11
     328: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     331: invokeinterface #164,  3          // InterfaceMethod kotlin/jvm/functions/Function2.invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     336: checkcast     #166                // class java/lang/Number
     339: invokevirtual #169                // Method java/lang/Number.intValue:()I
     342: istore        11
     344: iload         10
     346: iload         11
     348: if_icmpge     297
     351: iload         11
     353: istore        10
     355: goto          297
     358: iload         10
     360: nop
     361: istore        7
     363: iload         6
     365: iload         7
     367: if_icmpge     197
     370: iload         7
     372: istore        6
     374: goto          197
     377: iload         6
     379: ireturn

  static int maxOf$default(java.util.List, int, int, kotlin.jvm.functions.Function2, int, java.lang.Object);
    Code:
       0: iload         4
       2: iconst_1
       3: iand
       4: ifeq          9
       7: iconst_0
       8: istore_1
       9: iload         4
      11: iconst_2
      12: iand
      13: ifeq          18
      16: iconst_0
      17: istore_2
      18: iconst_0
      19: istore        4
      21: iload_1
      22: aload_0
      23: invokeinterface #44,  1           // InterfaceMethod java/util/List.size:()I
      28: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
      31: checkcast     #52                 // class java/lang/Iterable
      34: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      39: astore        6
      41: aload         6
      43: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      48: ifne          59
      51: new           #64                 // class java/util/NoSuchElementException
      54: dup
      55: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
      58: athrow
      59: aload         6
      61: checkcast     #69                 // class kotlin/collections/IntIterator
      64: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
      67: istore        7
      69: iconst_0
      70: istore        8
      72: iload_2
      73: aload_0
      74: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
      77: checkcast     #80                 // class "[C"
      80: arraylength
      81: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
      84: checkcast     #52                 // class java/lang/Iterable
      87: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      92: astore        9
      94: aload         9
      96: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     101: ifne          112
     104: new           #64                 // class java/util/NoSuchElementException
     107: dup
     108: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
     111: athrow
     112: aload         9
     114: checkcast     #69                 // class kotlin/collections/IntIterator
     117: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     120: istore        10
     122: iconst_0
     123: istore        11
     125: aload_3
     126: iload         7
     128: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     131: iload         10
     133: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     136: invokeinterface #164,  3          // InterfaceMethod kotlin/jvm/functions/Function2.invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     141: checkcast     #166                // class java/lang/Number
     144: invokevirtual #169                // Method java/lang/Number.intValue:()I
     147: istore        10
     149: aload         9
     151: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     156: ifeq          210
     159: aload         9
     161: checkcast     #69                 // class kotlin/collections/IntIterator
     164: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     167: istore        11
     169: iconst_0
     170: istore        12
     172: aload_3
     173: iload         7
     175: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     178: iload         11
     180: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     183: invokeinterface #164,  3          // InterfaceMethod kotlin/jvm/functions/Function2.invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     188: checkcast     #166                // class java/lang/Number
     191: invokevirtual #169                // Method java/lang/Number.intValue:()I
     194: istore        11
     196: iload         10
     198: iload         11
     200: if_icmpge     149
     203: iload         11
     205: istore        10
     207: goto          149
     210: iload         10
     212: nop
     213: istore        7
     215: aload         6
     217: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     222: ifeq          395
     225: aload         6
     227: checkcast     #69                 // class kotlin/collections/IntIterator
     230: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     233: istore        8
     235: iconst_0
     236: istore        9
     238: iload_2
     239: aload_0
     240: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     243: checkcast     #80                 // class "[C"
     246: arraylength
     247: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
     250: checkcast     #52                 // class java/lang/Iterable
     253: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     258: astore        10
     260: aload         10
     262: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     267: ifne          278
     270: new           #64                 // class java/util/NoSuchElementException
     273: dup
     274: invokespecial #67                 // Method java/util/NoSuchElementException."<init>":()V
     277: athrow
     278: aload         10
     280: checkcast     #69                 // class kotlin/collections/IntIterator
     283: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     286: istore        11
     288: iconst_0
     289: istore        12
     291: aload_3
     292: iload         8
     294: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     297: iload         11
     299: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     302: invokeinterface #164,  3          // InterfaceMethod kotlin/jvm/functions/Function2.invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     307: checkcast     #166                // class java/lang/Number
     310: invokevirtual #169                // Method java/lang/Number.intValue:()I
     313: istore        11
     315: aload         10
     317: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     322: ifeq          376
     325: aload         10
     327: checkcast     #69                 // class kotlin/collections/IntIterator
     330: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     333: istore        12
     335: iconst_0
     336: istore        13
     338: aload_3
     339: iload         8
     341: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     344: iload         12
     346: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     349: invokeinterface #164,  3          // InterfaceMethod kotlin/jvm/functions/Function2.invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     354: checkcast     #166                // class java/lang/Number
     357: invokevirtual #169                // Method java/lang/Number.intValue:()I
     360: istore        12
     362: iload         11
     364: iload         12
     366: if_icmpge     315
     369: iload         12
     371: istore        11
     373: goto          315
     376: iload         11
     378: nop
     379: istore        8
     381: iload         7
     383: iload         8
     385: if_icmpge     215
     388: iload         8
     390: istore        7
     392: goto          215
     395: iload         7
     397: ireturn

  private static final boolean isValid(java.util.List<kotlin.Pair<java.lang.Integer, java.lang.Integer>>, java.util.List<char[]>);
    Code:
       0: aload_0
       1: checkcast     #52                 // class java/lang/Iterable
       4: astore_2
       5: iconst_0
       6: istore_3
       7: aload_2
       8: instanceof    #23                 // class java/util/Collection
      11: ifeq          30
      14: aload_2
      15: checkcast     #23                 // class java/util/Collection
      18: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
      23: ifeq          30
      26: iconst_1
      27: goto          172
      30: aload_2
      31: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      36: astore        4
      38: aload         4
      40: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      45: ifeq          171
      48: aload         4
      50: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      55: astore        5
      57: aload         5
      59: checkcast     #97                 // class kotlin/Pair
      62: astore        6
      64: iconst_0
      65: istore        7
      67: aload         6
      69: invokevirtual #183                // Method kotlin/Pair.component1:()Ljava/lang/Object;
      72: checkcast     #166                // class java/lang/Number
      75: invokevirtual #169                // Method java/lang/Number.intValue:()I
      78: istore        8
      80: aload         6
      82: invokevirtual #186                // Method kotlin/Pair.component2:()Ljava/lang/Object;
      85: checkcast     #166                // class java/lang/Number
      88: invokevirtual #169                // Method java/lang/Number.intValue:()I
      91: istore        9
      93: iconst_0
      94: iload         8
      96: if_icmpgt     121
      99: iload         8
     101: aload_1
     102: checkcast     #23                 // class java/util/Collection
     105: invokeinterface #187,  1          // InterfaceMethod java/util/Collection.size:()I
     110: if_icmpge     117
     113: iconst_1
     114: goto          122
     117: iconst_0
     118: goto          122
     121: iconst_0
     122: ifeq          159
     125: iconst_0
     126: iload         9
     128: if_icmpgt     155
     131: iload         9
     133: aload_1
     134: iconst_0
     135: invokeinterface #191,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     140: checkcast     #80                 // class "[C"
     143: arraylength
     144: if_icmpge     151
     147: iconst_1
     148: goto          156
     151: iconst_0
     152: goto          156
     155: iconst_0
     156: ifne          163
     159: iconst_1
     160: goto          164
     163: iconst_0
     164: ifeq          38
     167: iconst_0
     168: goto          172
     171: iconst_1
     172: ifeq          406
     175: aload_0
     176: checkcast     #52                 // class java/lang/Iterable
     179: astore_2
     180: iconst_0
     181: istore_3
     182: aload_2
     183: astore        4
     185: new           #17                 // class java/util/ArrayList
     188: dup
     189: aload_2
     190: bipush        10
     192: invokestatic  #195                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     195: invokespecial #21                 // Method java/util/ArrayList."<init>":(I)V
     198: checkcast     #23                 // class java/util/Collection
     201: astore        5
     203: iconst_0
     204: istore        6
     206: aload         4
     208: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     213: astore        7
     215: aload         7
     217: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     222: ifeq          303
     225: aload         7
     227: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     232: astore        8
     234: aload         5
     236: aload         8
     238: checkcast     #97                 // class kotlin/Pair
     241: astore        9
     243: astore        13
     245: iconst_0
     246: istore        10
     248: aload         9
     250: invokevirtual #183                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     253: checkcast     #166                // class java/lang/Number
     256: invokevirtual #169                // Method java/lang/Number.intValue:()I
     259: istore        11
     261: aload         9
     263: invokevirtual #186                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     266: checkcast     #166                // class java/lang/Number
     269: invokevirtual #169                // Method java/lang/Number.intValue:()I
     272: istore        12
     274: aload_1
     275: iload         11
     277: invokeinterface #191,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     282: checkcast     #80                 // class "[C"
     285: iload         12
     287: caload
     288: invokestatic  #200                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     291: aload         13
     293: swap
     294: invokeinterface #38,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     299: pop
     300: goto          215
     303: aload         5
     305: checkcast     #40                 // class java/util/List
     308: nop
     309: checkcast     #52                 // class java/lang/Iterable
     312: astore_2
     313: nop
     314: iconst_0
     315: istore_3
     316: aload_2
     317: instanceof    #23                 // class java/util/Collection
     320: ifeq          339
     323: aload_2
     324: checkcast     #23                 // class java/util/Collection
     327: invokeinterface #91,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
     332: ifeq          339
     335: iconst_1
     336: goto          399
     339: aload_2
     340: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     345: astore        4
     347: aload         4
     349: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     354: ifeq          398
     357: aload         4
     359: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     364: astore        5
     366: aload         5
     368: checkcast     #197                // class java/lang/Character
     371: invokevirtual #204                // Method java/lang/Character.charValue:()C
     374: istore        6
     376: iconst_0
     377: istore        7
     379: iload         6
     381: bipush        71
     383: if_icmpeq     390
     386: iconst_1
     387: goto          391
     390: iconst_0
     391: ifeq          347
     394: iconst_0
     395: goto          399
     398: iconst_1
     399: ifeq          406
     402: iconst_1
     403: goto          407
     406: iconst_0
     407: ireturn

  private static final java.util.List<kotlin.Pair<java.lang.Integer, java.lang.Integer>> cross(int, int, int);
    Code:
       0: iload_1
       1: iload_2
       2: isub
       3: iload_1
       4: invokestatic  #50                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
       7: checkcast     #52                 // class java/lang/Iterable
      10: new           #213                // class kotlin/ranges/IntRange
      13: dup
      14: iload_1
      15: iconst_1
      16: iadd
      17: iload_1
      18: iload_2
      19: iadd
      20: invokespecial #216                // Method kotlin/ranges/IntRange."<init>":(II)V
      23: checkcast     #52                 // class java/lang/Iterable
      26: invokestatic  #220                // Method kotlin/collections/CollectionsKt.plus:(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/util/List;
      29: checkcast     #52                 // class java/lang/Iterable
      32: astore_3
      33: iconst_0
      34: istore        4
      36: aload_3
      37: astore        5
      39: new           #17                 // class java/util/ArrayList
      42: dup
      43: aload_3
      44: bipush        10
      46: invokestatic  #195                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      49: invokespecial #21                 // Method java/util/ArrayList."<init>":(I)V
      52: checkcast     #23                 // class java/util/Collection
      55: astore        6
      57: iconst_0
      58: istore        7
      60: aload         5
      62: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      67: astore        8
      69: aload         8
      71: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      76: ifeq          129
      79: aload         8
      81: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      86: astore        9
      88: aload         6
      90: aload         9
      92: checkcast     #166                // class java/lang/Number
      95: invokevirtual #169                // Method java/lang/Number.intValue:()I
      98: istore        10
     100: astore        12
     102: iconst_0
     103: istore        11
     105: iload_0
     106: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     109: iload         10
     111: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     114: invokestatic  #226                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     117: aload         12
     119: swap
     120: invokeinterface #38,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     125: pop
     126: goto          69
     129: aload         6
     131: checkcast     #40                 // class java/util/List
     134: nop
     135: checkcast     #23                 // class java/util/Collection
     138: new           #213                // class kotlin/ranges/IntRange
     141: dup
     142: iload_0
     143: iload_2
     144: isub
     145: iload_0
     146: iload_2
     147: iadd
     148: invokespecial #216                // Method kotlin/ranges/IntRange."<init>":(II)V
     151: checkcast     #52                 // class java/lang/Iterable
     154: astore_3
     155: astore        12
     157: iconst_0
     158: istore        4
     160: aload_3
     161: astore        5
     163: new           #17                 // class java/util/ArrayList
     166: dup
     167: aload_3
     168: bipush        10
     170: invokestatic  #195                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     173: invokespecial #21                 // Method java/util/ArrayList."<init>":(I)V
     176: checkcast     #23                 // class java/util/Collection
     179: astore        6
     181: iconst_0
     182: istore        7
     184: aload         5
     186: invokeinterface #56,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     191: astore        8
     193: aload         8
     195: invokeinterface #62,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     200: ifeq          248
     203: aload         8
     205: checkcast     #69                 // class kotlin/collections/IntIterator
     208: invokevirtual #72                 // Method kotlin/collections/IntIterator.nextInt:()I
     211: istore        9
     213: aload         6
     215: iload         9
     217: istore        10
     219: astore        13
     221: iconst_0
     222: istore        11
     224: iload         10
     226: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     229: iload_1
     230: invokestatic  #158                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     233: invokestatic  #226                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     236: aload         13
     238: swap
     239: invokeinterface #38,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     244: pop
     245: goto          193
     248: aload         6
     250: checkcast     #40                 // class java/util/List
     253: nop
     254: aload         12
     256: swap
     257: checkcast     #52                 // class java/lang/Iterable
     260: invokestatic  #229                // Method kotlin/collections/CollectionsKt.plus:(Ljava/util/Collection;Ljava/lang/Iterable;)Ljava/util/List;
     263: areturn
}