import kotlin.String
import kotlin.collections.List

object Day7 {

    interface CardHand : Comparable<CardHand> {
        val maxSimilarCards: Int
        val bid: Long
        val secondMaxSimilarCards: Int
        val cards: CharArray
        val cardValues: Map<Char, Int>

        fun score(rank: Int): Long {
            return bid * rank
        }

        override fun compareTo(other: CardHand): Int {
            return compareBy<CardHand> { it.maxSimilarCards }
                .thenBy { it.secondMaxSimilarCards }
                .then { first, second ->
                    val thisCardValues = first.cards.map { cardValues[it] ?: 0 }
                    val otherCardValues = second.cards.map { cardValues[it] ?: 0 }
                    thisCardValues.zip(otherCardValues).map { it.first - it.second }.firstOrNull { it != 0 } ?: 0
                }
                .compare(this, other)
        }
    }

    data class CamelCardHandWithJokers(override val cards: CharArray, override val bid: Long) : CardHand {
        override val maxSimilarCards: Int
        private val possibleCards: CharArray =
            arrayOf('J', '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'Q', 'K', 'A').toCharArray()
        override val secondMaxSimilarCards: Int
        override val cardValues = possibleCards.zip(possibleCards.indices).toMap()

        init {
            val numJokers = cards.count { it == 'J' }
            val nonJokers = cards.filter { it != 'J' }.groupBy { it }.mapValues { it.value.size }
            val values = nonJokers.values.sortedDescending()
            val maxNonJokers = values.firstOrNull() ?: 0
            val secondMaxNonJokers = values.drop(1).firstOrNull() ?: 0
            maxSimilarCards = maxNonJokers + numJokers
            secondMaxSimilarCards = secondMaxNonJokers
        }

        companion object {
            fun parse(input: String): CamelCardHandWithJokers {
                val (cards, bid) = input.split(" ")
                return CamelCardHandWithJokers(cards.toCharArray(), bid.toLong())
            }
        }
    }

    data class CamelCardHand(override val cards: CharArray, override val bid: Long) : CardHand {
        override val maxSimilarCards: Int
        override val secondMaxSimilarCards: Int
        private val possibleCards: CharArray =
            arrayOf('2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A').toCharArray()
        override val cardValues = possibleCards.zip(possibleCards.indices).toMap()

        init {
            val grouped = cards.groupBy { it }.mapValues { it.value.size }
            val values = grouped.values.sortedDescending()
            maxSimilarCards = values.first()
            secondMaxSimilarCards = values.drop(1).firstOrNull() ?: 0
        }

        companion object {
            fun parse(input: String): CamelCardHand {
                val (cards, bid) = input.split(" ")
                return CamelCardHand(cards.toCharArray(), bid.toLong())
            }
        }
    }

    fun part1(input: List<String>): String {
        val hands = input.map(CamelCardHand::parse)
        return score(hands).toString()
    }

    fun part2(input: List<String>): String {
        val hands = input.map(CamelCardHandWithJokers::parse)
        return score(hands).toString()
    }

    private fun score(hands: List<CardHand>): Long {
        val sortedHands = hands.sorted()
        return sortedHands.zip(sortedHands.indices).sumOf { (hand, index) -> hand.score(index + 1) }
    }
}

Compiled from "Comparisons.kt"
public final class Day7$CardHand$DefaultImpls$compareTo$$inlined$thenBy$1<T> implements java.util.Comparator {
  final java.util.Comparator $this_thenBy;

  public Day7$CardHand$DefaultImpls$compareTo$$inlined$thenBy$1(java.util.Comparator);
    Code:
       0: aload_0
       1: aload_1
       2: putfield      #18                 // Field $this_thenBy:Ljava/util/Comparator;
       5: aload_0
       6: invokespecial #21                 // Method java/lang/Object."<init>":()V
       9: return

  public final int compare(T, T);
    Code:
       0: aload_0
       1: getfield      #18                 // Field $this_thenBy:Ljava/util/Comparator;
       4: aload_1
       5: aload_2
       6: invokeinterface #29,  3           // InterfaceMethod java/util/Comparator.compare:(Ljava/lang/Object;Ljava/lang/Object;)I
      11: istore_3
      12: iload_3
      13: ifeq          20
      16: iload_3
      17: goto          72
      20: aload_1
      21: checkcast     #31                 // class Day7$CardHand
      24: astore        4
      26: iconst_0
      27: istore        5
      29: aload         4
      31: invokeinterface #35,  1           // InterfaceMethod Day7$CardHand.getSecondMaxSimilarCards:()I
      36: invokestatic  #41                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      39: checkcast     #43                 // class java/lang/Comparable
      42: aload_2
      43: checkcast     #31                 // class Day7$CardHand
      46: astore        4
      48: astore        6
      50: iconst_0
      51: istore        5
      53: aload         4
      55: invokeinterface #35,  1           // InterfaceMethod Day7$CardHand.getSecondMaxSimilarCards:()I
      60: invokestatic  #41                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      63: checkcast     #43                 // class java/lang/Comparable
      66: aload         6
      68: swap
      69: invokestatic  #49                 // Method kotlin/comparisons/ComparisonsKt.compareValues:(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
      72: ireturn
}

Compiled from "Day7.kt"
public final class Day7 {
  public static final Day7 INSTANCE;

  private Day7();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  public final java.lang.String part1(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: ldc           #16                 // String input
       3: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: checkcast     #24                 // class java/lang/Iterable
      10: astore_3
      11: getstatic     #30                 // Field Day7$CamelCardHand.Companion:LDay7$CamelCardHand$Companion;
      14: astore        4
      16: iconst_0
      17: istore        5
      19: aload_3
      20: astore        6
      22: new           #32                 // class java/util/ArrayList
      25: dup
      26: aload_3
      27: bipush        10
      29: invokestatic  #38                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      32: invokespecial #41                 // Method java/util/ArrayList."<init>":(I)V
      35: checkcast     #43                 // class java/util/Collection
      38: astore        7
      40: iconst_0
      41: istore        8
      43: aload         6
      45: invokeinterface #47,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      50: astore        9
      52: aload         9
      54: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      59: ifeq          104
      62: aload         9
      64: invokeinterface #57,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      69: astore        10
      71: aload         7
      73: aload         10
      75: checkcast     #59                 // class java/lang/String
      78: astore        11
      80: astore        13
      82: iconst_0
      83: istore        12
      85: aload         4
      87: aload         11
      89: invokevirtual #65                 // Method Day7$CamelCardHand$Companion.parse:(Ljava/lang/String;)LDay7$CamelCardHand;
      92: aload         13
      94: swap
      95: invokeinterface #69,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     100: pop
     101: goto          52
     104: aload         7
     106: checkcast     #71                 // class java/util/List
     109: nop
     110: astore_2
     111: aload_0
     112: aload_2
     113: invokespecial #75                 // Method score:(Ljava/util/List;)J
     116: invokestatic  #79                 // Method java/lang/String.valueOf:(J)Ljava/lang/String;
     119: areturn

  public final java.lang.String part2(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: ldc           #16                 // String input
       3: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: checkcast     #24                 // class java/lang/Iterable
      10: astore_3
      11: getstatic     #100                // Field Day7$CamelCardHandWithJokers.Companion:LDay7$CamelCardHandWithJokers$Companion;
      14: astore        4
      16: iconst_0
      17: istore        5
      19: aload_3
      20: astore        6
      22: new           #32                 // class java/util/ArrayList
      25: dup
      26: aload_3
      27: bipush        10
      29: invokestatic  #38                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      32: invokespecial #41                 // Method java/util/ArrayList."<init>":(I)V
      35: checkcast     #43                 // class java/util/Collection
      38: astore        7
      40: iconst_0
      41: istore        8
      43: aload         6
      45: invokeinterface #47,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      50: astore        9
      52: aload         9
      54: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      59: ifeq          104
      62: aload         9
      64: invokeinterface #57,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      69: astore        10
      71: aload         7
      73: aload         10
      75: checkcast     #59                 // class java/lang/String
      78: astore        11
      80: astore        13
      82: iconst_0
      83: istore        12
      85: aload         4
      87: aload         11
      89: invokevirtual #105                // Method Day7$CamelCardHandWithJokers$Companion.parse:(Ljava/lang/String;)LDay7$CamelCardHandWithJokers;
      92: aload         13
      94: swap
      95: invokeinterface #69,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     100: pop
     101: goto          52
     104: aload         7
     106: checkcast     #71                 // class java/util/List
     109: nop
     110: astore_2
     111: aload_0
     112: aload_2
     113: invokespecial #75                 // Method score:(Ljava/util/List;)J
     116: invokestatic  #79                 // Method java/lang/String.valueOf:(J)Ljava/lang/String;
     119: areturn

  private final long score(java.util.List<? extends Day7$CardHand>);
    Code:
       0: aload_1
       1: checkcast     #24                 // class java/lang/Iterable
       4: invokestatic  #111                // Method kotlin/collections/CollectionsKt.sorted:(Ljava/lang/Iterable;)Ljava/util/List;
       7: astore_2
       8: aload_2
       9: checkcast     #24                 // class java/lang/Iterable
      12: aload_2
      13: checkcast     #43                 // class java/util/Collection
      16: invokestatic  #115                // Method kotlin/collections/CollectionsKt.getIndices:(Ljava/util/Collection;)Lkotlin/ranges/IntRange;
      19: checkcast     #24                 // class java/lang/Iterable
      22: invokestatic  #119                // Method kotlin/collections/CollectionsKt.zip:(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/util/List;
      25: checkcast     #24                 // class java/lang/Iterable
      28: astore_3
      29: lconst_0
      30: lstore        4
      32: aload_3
      33: invokeinterface #47,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      38: astore        6
      40: aload         6
      42: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      47: ifeq          119
      50: aload         6
      52: invokeinterface #57,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      57: astore        7
      59: lload         4
      61: aload         7
      63: checkcast     #121                // class kotlin/Pair
      66: astore        8
      68: lstore        12
      70: iconst_0
      71: istore        9
      73: aload         8
      75: invokevirtual #124                // Method kotlin/Pair.component1:()Ljava/lang/Object;
      78: checkcast     #126                // class Day7$CardHand
      81: astore        10
      83: aload         8
      85: invokevirtual #129                // Method kotlin/Pair.component2:()Ljava/lang/Object;
      88: checkcast     #131                // class java/lang/Number
      91: invokevirtual #135                // Method java/lang/Number.intValue:()I
      94: istore        11
      96: aload         10
      98: iload         11
     100: iconst_1
     101: iadd
     102: invokeinterface #138,  2          // InterfaceMethod Day7$CardHand.score:(I)J
     107: lstore        14
     109: lload         12
     111: lload         14
     113: ladd
     114: lstore        4
     116: goto          40
     119: lload         4
     121: lreturn

  static {};
    Code:
       0: new           #2                  // class Day7
       3: dup
       4: invokespecial #145                // Method "<init>":()V
       7: putstatic     #148                // Field INSTANCE:LDay7;
      10: return
}

Compiled from "Day7.kt"
public final class Day7$CamelCardHand implements Day7$CardHand {
  public static final Day7$CamelCardHand$Companion Companion;

  private final char[] cards;

  private final long bid;

  private final int maxSimilarCards;

  private final int secondMaxSimilarCards;

  private final char[] possibleCards;

  private final java.util.Map<java.lang.Character, java.lang.Integer> cardValues;

  public Day7$CamelCardHand(char[], long);
    Code:
       0: aload_1
       1: ldc           #11                 // String cards
       3: invokestatic  #17                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokespecial #20                 // Method java/lang/Object."<init>":()V
      10: aload_0
      11: aload_1
      12: putfield      #23                 // Field cards:[C
      15: aload_0
      16: lload_2
      17: putfield      #27                 // Field bid:J
      20: aload_0
      21: bipush        13
      23: anewarray     #29                 // class java/lang/Character
      26: astore        4
      28: aload         4
      30: iconst_0
      31: bipush        50
      33: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      36: aastore
      37: aload         4
      39: iconst_1
      40: bipush        51
      42: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      45: aastore
      46: aload         4
      48: iconst_2
      49: bipush        52
      51: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      54: aastore
      55: aload         4
      57: iconst_3
      58: bipush        53
      60: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      63: aastore
      64: aload         4
      66: iconst_4
      67: bipush        54
      69: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      72: aastore
      73: aload         4
      75: iconst_5
      76: bipush        55
      78: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      81: aastore
      82: aload         4
      84: bipush        6
      86: bipush        56
      88: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      91: aastore
      92: aload         4
      94: bipush        7
      96: bipush        57
      98: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     101: aastore
     102: aload         4
     104: bipush        8
     106: bipush        84
     108: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     111: aastore
     112: aload         4
     114: bipush        9
     116: bipush        74
     118: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     121: aastore
     122: aload         4
     124: bipush        10
     126: bipush        81
     128: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     131: aastore
     132: aload         4
     134: bipush        11
     136: bipush        75
     138: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     141: aastore
     142: aload         4
     144: bipush        12
     146: bipush        65
     148: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     151: aastore
     152: aload         4
     154: invokestatic  #39                 // Method kotlin/collections/ArraysKt.toCharArray:([Ljava/lang/Character;)[C
     157: putfield      #42                 // Field possibleCards:[C
     160: aload_0
     161: aload_0
     162: getfield      #42                 // Field possibleCards:[C
     165: aload_0
     166: getfield      #42                 // Field possibleCards:[C
     169: invokestatic  #46                 // Method kotlin/collections/ArraysKt.getIndices:([C)Lkotlin/ranges/IntRange;
     172: checkcast     #48                 // class java/lang/Iterable
     175: invokestatic  #52                 // Method kotlin/collections/ArraysKt.zip:([CLjava/lang/Iterable;)Ljava/util/List;
     178: checkcast     #48                 // class java/lang/Iterable
     181: invokestatic  #58                 // Method kotlin/collections/MapsKt.toMap:(Ljava/lang/Iterable;)Ljava/util/Map;
     184: putfield      #62                 // Field cardValues:Ljava/util/Map;
     187: nop
     188: aload_0
     189: invokevirtual #66                 // Method getCards:()[C
     192: astore        5
     194: iconst_0
     195: istore        6
     197: aload         5
     199: astore        7
     201: new           #68                 // class java/util/LinkedHashMap
     204: dup
     205: invokespecial #69                 // Method java/util/LinkedHashMap."<init>":()V
     208: checkcast     #71                 // class java/util/Map
     211: astore        8
     213: iconst_0
     214: istore        9
     216: iconst_0
     217: istore        10
     219: aload         7
     221: arraylength
     222: istore        11
     224: iload         10
     226: iload         11
     228: if_icmpge     334
     231: aload         7
     233: iload         10
     235: caload
     236: istore        12
     238: iload         12
     240: istore        13
     242: iconst_0
     243: istore        14
     245: iload         13
     247: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     250: astore        15
     252: aload         8
     254: astore        16
     256: iconst_0
     257: istore        17
     259: aload         16
     261: aload         15
     263: invokeinterface #75,  2           // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     268: astore        18
     270: aload         18
     272: ifnonnull     307
     275: iconst_0
     276: istore        19
     278: new           #77                 // class java/util/ArrayList
     281: dup
     282: invokespecial #78                 // Method java/util/ArrayList."<init>":()V
     285: checkcast     #80                 // class java/util/List
     288: astore        19
     290: aload         16
     292: aload         15
     294: aload         19
     296: invokeinterface #84,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     301: pop
     302: aload         19
     304: goto          309
     307: aload         18
     309: nop
     310: checkcast     #80                 // class java/util/List
     313: astore        13
     315: aload         13
     317: iload         12
     319: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     322: invokeinterface #88,  2           // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     327: pop
     328: iinc          10, 1
     331: goto          224
     334: aload         8
     336: nop
     337: astore        5
     339: nop
     340: iconst_0
     341: istore        6
     343: aload         5
     345: astore        7
     347: new           #68                 // class java/util/LinkedHashMap
     350: dup
     351: aload         5
     353: invokeinterface #92,  1           // InterfaceMethod java/util/Map.size:()I
     358: invokestatic  #96                 // Method kotlin/collections/MapsKt.mapCapacity:(I)I
     361: invokespecial #99                 // Method java/util/LinkedHashMap."<init>":(I)V
     364: checkcast     #71                 // class java/util/Map
     367: astore        8
     369: iconst_0
     370: istore        9
     372: aload         7
     374: invokeinterface #103,  1          // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set;
     379: checkcast     #48                 // class java/lang/Iterable
     382: astore        10
     384: iconst_0
     385: istore        11
     387: aload         10
     389: invokeinterface #107,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     394: astore        12
     396: aload         12
     398: invokeinterface #113,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     403: ifeq          488
     406: aload         12
     408: invokeinterface #117,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     413: astore        13
     415: aload         8
     417: aload         13
     419: checkcast     #119                // class java/util/Map$Entry
     422: astore        14
     424: astore        15
     426: iconst_0
     427: istore        16
     429: aload         14
     431: invokeinterface #122,  1          // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
     436: aload         15
     438: swap
     439: aload         13
     441: checkcast     #119                // class java/util/Map$Entry
     444: astore        17
     446: astore        21
     448: astore        20
     450: iconst_0
     451: istore        18
     453: aload         17
     455: invokeinterface #125,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     460: checkcast     #80                 // class java/util/List
     463: invokeinterface #126,  1          // InterfaceMethod java/util/List.size:()I
     468: invokestatic  #131                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     471: astore        22
     473: aload         20
     475: aload         21
     477: aload         22
     479: invokeinterface #84,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     484: pop
     485: goto          396
     488: aload         8
     490: nop
     491: nop
     492: astore        4
     494: aload         4
     496: invokeinterface #135,  1          // InterfaceMethod java/util/Map.values:()Ljava/util/Collection;
     501: checkcast     #48                 // class java/lang/Iterable
     504: invokestatic  #141                // Method kotlin/collections/CollectionsKt.sortedDescending:(Ljava/lang/Iterable;)Ljava/util/List;
     507: astore        5
     509: aload_0
     510: aload         5
     512: invokestatic  #145                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     515: checkcast     #147                // class java/lang/Number
     518: invokevirtual #150                // Method java/lang/Number.intValue:()I
     521: putfield      #154                // Field maxSimilarCards:I
     524: aload_0
     525: aload         5
     527: checkcast     #48                 // class java/lang/Iterable
     530: iconst_1
     531: invokestatic  #158                // Method kotlin/collections/CollectionsKt.drop:(Ljava/lang/Iterable;I)Ljava/util/List;
     534: invokestatic  #161                // Method kotlin/collections/CollectionsKt.firstOrNull:(Ljava/util/List;)Ljava/lang/Object;
     537: checkcast     #128                // class java/lang/Integer
     540: dup
     541: ifnull        550
     544: invokevirtual #162                // Method java/lang/Integer.intValue:()I
     547: goto          552
     550: pop
     551: iconst_0
     552: putfield      #165                // Field secondMaxSimilarCards:I
     555: nop
     556: return

  public char[] getCards();
    Code:
       0: aload_0
       1: getfield      #23                 // Field cards:[C
       4: areturn

  public long getBid();
    Code:
       0: aload_0
       1: getfield      #27                 // Field bid:J
       4: lreturn

  public int getMaxSimilarCards();
    Code:
       0: aload_0
       1: getfield      #154                // Field maxSimilarCards:I
       4: ireturn

  public int getSecondMaxSimilarCards();
    Code:
       0: aload_0
       1: getfield      #165                // Field secondMaxSimilarCards:I
       4: ireturn

  public java.util.Map<java.lang.Character, java.lang.Integer> getCardValues();
    Code:
       0: aload_0
       1: getfield      #62                 // Field cardValues:Ljava/util/Map;
       4: areturn

  public final char[] component1();
    Code:
       0: aload_0
       1: getfield      #23                 // Field cards:[C
       4: areturn

  public final long component2();
    Code:
       0: aload_0
       1: getfield      #27                 // Field bid:J
       4: lreturn

  public final Day7$CamelCardHand copy(char[], long);
    Code:
       0: aload_1
       1: ldc           #11                 // String cards
       3: invokestatic  #17                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #2                  // class Day7$CamelCardHand
       9: dup
      10: aload_1
      11: lload_2
      12: invokespecial #214                // Method "<init>":([CJ)V
      15: areturn

  public static Day7$CamelCardHand copy$default(Day7$CamelCardHand, char[], long, int, java.lang.Object);
    Code:
       0: iload         4
       2: iconst_1
       3: iand
       4: ifeq          12
       7: aload_0
       8: getfield      #23                 // Field cards:[C
      11: astore_1
      12: iload         4
      14: iconst_2
      15: iand
      16: ifeq          24
      19: aload_0
      20: getfield      #27                 // Field bid:J
      23: lstore_2
      24: aload_0
      25: aload_1
      26: lload_2
      27: invokevirtual #218                // Method copy:([CJ)LDay7$CamelCardHand;
      30: areturn

  public java.lang.String toString();
    Code:
       0: new           #222                // class java/lang/StringBuilder
       3: dup
       4: invokespecial #223                // Method java/lang/StringBuilder."<init>":()V
       7: ldc           #225                // String CamelCardHand(cards=
       9: invokevirtual #229                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      12: aload_0
      13: getfield      #23                 // Field cards:[C
      16: invokestatic  #234                // Method java/util/Arrays.toString:([C)Ljava/lang/String;
      19: invokevirtual #229                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      22: ldc           #236                // String , bid=
      24: invokevirtual #229                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      27: aload_0
      28: getfield      #27                 // Field bid:J
      31: invokevirtual #239                // Method java/lang/StringBuilder.append:(J)Ljava/lang/StringBuilder;
      34: bipush        41
      36: invokevirtual #242                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      39: invokevirtual #244                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      42: areturn

  public int hashCode();
    Code:
       0: aload_0
       1: getfield      #23                 // Field cards:[C
       4: invokestatic  #248                // Method java/util/Arrays.hashCode:([C)I
       7: istore_1
       8: iload_1
       9: bipush        31
      11: imul
      12: aload_0
      13: getfield      #27                 // Field bid:J
      16: invokestatic  #253                // Method java/lang/Long.hashCode:(J)I
      19: iadd
      20: istore_1
      21: iload_1
      22: ireturn

  public boolean equals(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: if_acmpne     7
       5: iconst_1
       6: ireturn
       7: aload_1
       8: instanceof    #2                  // class Day7$CamelCardHand
      11: ifne          16
      14: iconst_0
      15: ireturn
      16: aload_1
      17: checkcast     #2                  // class Day7$CamelCardHand
      20: astore_2
      21: aload_0
      22: getfield      #23                 // Field cards:[C
      25: aload_2
      26: getfield      #23                 // Field cards:[C
      29: invokestatic  #260                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      32: ifne          37
      35: iconst_0
      36: ireturn
      37: aload_0
      38: getfield      #27                 // Field bid:J
      41: aload_2
      42: getfield      #27                 // Field bid:J
      45: lcmp
      46: ifeq          51
      49: iconst_0
      50: ireturn
      51: iconst_1
      52: ireturn

  public long score(int);
    Code:
       0: aload_0
       1: iload_1
       2: invokestatic  #268                // Method Day7$CardHand$DefaultImpls.score:(LDay7$CardHand;I)J
       5: lreturn

  public int compareTo(Day7$CardHand);
    Code:
       0: aload_0
       1: aload_1
       2: invokestatic  #274                // Method Day7$CardHand$DefaultImpls.compareTo:(LDay7$CardHand;LDay7$CardHand;)I
       5: ireturn

  public int compareTo(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #6                  // class Day7$CardHand
       5: invokevirtual #278                // Method compareTo:(LDay7$CardHand;)I
       8: ireturn

  static {};
    Code:
       0: new           #281                // class Day7$CamelCardHand$Companion
       3: dup
       4: aconst_null
       5: invokespecial #284                // Method Day7$CamelCardHand$Companion."<init>":(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
       8: putstatic     #288                // Field Companion:LDay7$CamelCardHand$Companion;
      11: return
}

Compiled from "Day7.kt"
public final class Day7$CamelCardHand$Companion {
  private Day7$CamelCardHand$Companion();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  public final Day7$CamelCardHand parse(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #15                 // String input
       3: invokestatic  #21                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: checkcast     #23                 // class java/lang/CharSequence
      10: iconst_1
      11: anewarray     #25                 // class java/lang/String
      14: astore_3
      15: aload_3
      16: iconst_0
      17: ldc           #27                 // String
      19: aastore
      20: aload_3
      21: iconst_0
      22: iconst_0
      23: bipush        6
      25: aconst_null
      26: invokestatic  #33                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      29: astore_2
      30: aload_2
      31: iconst_0
      32: invokeinterface #39,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      37: checkcast     #25                 // class java/lang/String
      40: astore_3
      41: aload_2
      42: iconst_1
      43: invokeinterface #39,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      48: checkcast     #25                 // class java/lang/String
      51: astore        4
      53: new           #41                 // class Day7$CamelCardHand
      56: dup
      57: aload_3
      58: invokevirtual #45                 // Method java/lang/String.toCharArray:()[C
      61: dup
      62: ldc           #47                 // String toCharArray(...)
      64: invokestatic  #50                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      67: aload         4
      69: invokestatic  #56                 // Method java/lang/Long.parseLong:(Ljava/lang/String;)J
      72: invokespecial #59                 // Method Day7$CamelCardHand."<init>":([CJ)V
      75: areturn

  public Day7$CamelCardHand$Companion(kotlin.jvm.internal.DefaultConstructorMarker);
    Code:
       0: aload_0
       1: invokespecial #64                 // Method "<init>":()V
       4: return
}

Compiled from "Day7.kt"
public final class Day7$CardHand$DefaultImpls {
  public static long score(Day7$CardHand, int);
    Code:
       0: aload_0
       1: invokeinterface #13,  1           // InterfaceMethod Day7$CardHand.getBid:()J
       6: iload_1
       7: i2l
       8: lmul
       9: lreturn

  public static int compareTo(Day7$CardHand, Day7$CardHand);
    Code:
       0: aload_1
       1: ldc           #21                 // String other
       3: invokestatic  #27                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #29                 // class Day7$CardHand$DefaultImpls$compareTo$$inlined$compareBy$1
       9: dup
      10: invokespecial #33                 // Method Day7$CardHand$DefaultImpls$compareTo$$inlined$compareBy$1."<init>":()V
      13: checkcast     #35                 // class java/util/Comparator
      16: astore_2
      17: new           #37                 // class Day7$CardHand$DefaultImpls$compareTo$$inlined$thenBy$1
      20: dup
      21: aload_2
      22: invokespecial #40                 // Method Day7$CardHand$DefaultImpls$compareTo$$inlined$thenBy$1."<init>":(Ljava/util/Comparator;)V
      25: checkcast     #35                 // class java/util/Comparator
      28: aload_0
      29: invokedynamic #60,  0             // InvokeDynamic #0:invoke:(LDay7$CardHand;)Lkotlin/jvm/functions/Function2;
      34: invokedynamic #71,  0             // InvokeDynamic #1:compare:(Lkotlin/jvm/functions/Function2;)Ljava/util/Comparator;
      39: invokestatic  #77                 // Method kotlin/comparisons/ComparisonsKt.then:(Ljava/util/Comparator;Ljava/util/Comparator;)Ljava/util/Comparator;
      42: aload_0
      43: aload_1
      44: invokeinterface #79,  3           // InterfaceMethod java/util/Comparator.compare:(Ljava/lang/Object;Ljava/lang/Object;)I
      49: ireturn

  private static int compareTo$lambda$6(Day7$CardHand, Day7$CardHand, Day7$CardHand);
    Code:
       0: aload_1
       1: invokeinterface #83,  1           // InterfaceMethod Day7$CardHand.getCards:()[C
       6: astore        4
       8: iconst_0
       9: istore        5
      11: aload         4
      13: astore        6
      15: new           #85                 // class java/util/ArrayList
      18: dup
      19: aload         4
      21: arraylength
      22: invokespecial #88                 // Method java/util/ArrayList."<init>":(I)V
      25: checkcast     #90                 // class java/util/Collection
      28: astore        7
      30: iconst_0
      31: istore        8
      33: iconst_0
      34: istore        9
      36: aload         6
      38: arraylength
      39: istore        10
      41: iload         9
      43: iload         10
      45: if_icmpge     115
      48: aload         6
      50: iload         9
      52: caload
      53: istore        11
      55: aload         7
      57: iload         11
      59: istore        12
      61: astore        15
      63: iconst_0
      64: istore        13
      66: aload_0
      67: invokeinterface #94,  1           // InterfaceMethod Day7$CardHand.getCardValues:()Ljava/util/Map;
      72: iload         12
      74: invokestatic  #100                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      77: invokeinterface #106,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      82: checkcast     #108                // class java/lang/Integer
      85: dup
      86: ifnull        95
      89: invokevirtual #112                // Method java/lang/Integer.intValue:()I
      92: goto          97
      95: pop
      96: iconst_0
      97: invokestatic  #115                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     100: aload         15
     102: swap
     103: invokeinterface #119,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     108: pop
     109: iinc          9, 1
     112: goto          41
     115: aload         7
     117: checkcast     #121                // class java/util/List
     120: nop
     121: astore_3
     122: aload_2
     123: invokeinterface #83,  1           // InterfaceMethod Day7$CardHand.getCards:()[C
     128: astore        5
     130: iconst_0
     131: istore        6
     133: aload         5
     135: astore        7
     137: new           #85                 // class java/util/ArrayList
     140: dup
     141: aload         5
     143: arraylength
     144: invokespecial #88                 // Method java/util/ArrayList."<init>":(I)V
     147: checkcast     #90                 // class java/util/Collection
     150: astore        8
     152: iconst_0
     153: istore        9
     155: iconst_0
     156: istore        10
     158: aload         7
     160: arraylength
     161: istore        11
     163: iload         10
     165: iload         11
     167: if_icmpge     237
     170: aload         7
     172: iload         10
     174: caload
     175: istore        12
     177: aload         8
     179: iload         12
     181: istore        13
     183: astore        15
     185: iconst_0
     186: istore        14
     188: aload_0
     189: invokeinterface #94,  1           // InterfaceMethod Day7$CardHand.getCardValues:()Ljava/util/Map;
     194: iload         13
     196: invokestatic  #100                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     199: invokeinterface #106,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     204: checkcast     #108                // class java/lang/Integer
     207: dup
     208: ifnull        217
     211: invokevirtual #112                // Method java/lang/Integer.intValue:()I
     214: goto          219
     217: pop
     218: iconst_0
     219: invokestatic  #115                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     222: aload         15
     224: swap
     225: invokeinterface #119,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     230: pop
     231: iinc          10, 1
     234: goto          163
     237: aload         8
     239: checkcast     #121                // class java/util/List
     242: nop
     243: astore        4
     245: aload_3
     246: checkcast     #123                // class java/lang/Iterable
     249: aload         4
     251: checkcast     #123                // class java/lang/Iterable
     254: invokestatic  #129                // Method kotlin/collections/CollectionsKt.zip:(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/util/List;
     257: checkcast     #123                // class java/lang/Iterable
     260: astore        6
     262: iconst_0
     263: istore        7
     265: aload         6
     267: astore        8
     269: new           #85                 // class java/util/ArrayList
     272: dup
     273: aload         6
     275: bipush        10
     277: invokestatic  #133                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     280: invokespecial #88                 // Method java/util/ArrayList."<init>":(I)V
     283: checkcast     #90                 // class java/util/Collection
     286: astore        9
     288: iconst_0
     289: istore        10
     291: aload         8
     293: invokeinterface #137,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     298: astore        11
     300: aload         11
     302: invokeinterface #143,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     307: ifeq          371
     310: aload         11
     312: invokeinterface #147,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     317: astore        12
     319: aload         9
     321: aload         12
     323: checkcast     #149                // class kotlin/Pair
     326: astore        13
     328: astore        15
     330: iconst_0
     331: istore        14
     333: aload         13
     335: invokevirtual #152                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     338: checkcast     #154                // class java/lang/Number
     341: invokevirtual #155                // Method java/lang/Number.intValue:()I
     344: aload         13
     346: invokevirtual #158                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     349: checkcast     #154                // class java/lang/Number
     352: invokevirtual #155                // Method java/lang/Number.intValue:()I
     355: isub
     356: invokestatic  #115                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     359: aload         15
     361: swap
     362: invokeinterface #119,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     367: pop
     368: goto          300
     371: aload         9
     373: checkcast     #121                // class java/util/List
     376: nop
     377: checkcast     #123                // class java/lang/Iterable
     380: astore        6
     382: iconst_0
     383: istore        7
     385: aload         6
     387: invokeinterface #137,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     392: astore        8
     394: aload         8
     396: invokeinterface #143,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     401: ifeq          444
     404: aload         8
     406: invokeinterface #147,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     411: astore        9
     413: aload         9
     415: checkcast     #154                // class java/lang/Number
     418: invokevirtual #155                // Method java/lang/Number.intValue:()I
     421: istore        10
     423: iconst_0
     424: istore        11
     426: iload         10
     428: ifeq          435
     431: iconst_1
     432: goto          436
     435: iconst_0
     436: ifeq          394
     439: aload         9
     441: goto          445
     444: aconst_null
     445: checkcast     #108                // class java/lang/Integer
     448: dup
     449: ifnull        458
     452: invokevirtual #112                // Method java/lang/Integer.intValue:()I
     455: goto          460
     458: pop
     459: iconst_0
     460: ireturn

  private static int compareTo$lambda$7(kotlin.jvm.functions.Function2, java.lang.Object, java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: aload_2
       3: invokeinterface #189,  3          // InterfaceMethod kotlin/jvm/functions/Function2.invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
       8: checkcast     #154                // class java/lang/Number
      11: invokevirtual #155                // Method java/lang/Number.intValue:()I
      14: ireturn
}

Compiled from "Day7.kt"
public interface Day7$CardHand extends java.lang.Comparable<Day7$CardHand> {
  public abstract int getMaxSimilarCards();

  public abstract long getBid();

  public abstract int getSecondMaxSimilarCards();

  public abstract char[] getCards();

  public abstract java.util.Map<java.lang.Character, java.lang.Integer> getCardValues();

  public abstract long score(int);

  public abstract int compareTo(Day7$CardHand);
}

Compiled from "Day7.kt"
public final class Day7$CamelCardHandWithJokers$Companion {
  private Day7$CamelCardHandWithJokers$Companion();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  public final Day7$CamelCardHandWithJokers parse(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #15                 // String input
       3: invokestatic  #21                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: checkcast     #23                 // class java/lang/CharSequence
      10: iconst_1
      11: anewarray     #25                 // class java/lang/String
      14: astore_3
      15: aload_3
      16: iconst_0
      17: ldc           #27                 // String
      19: aastore
      20: aload_3
      21: iconst_0
      22: iconst_0
      23: bipush        6
      25: aconst_null
      26: invokestatic  #33                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      29: astore_2
      30: aload_2
      31: iconst_0
      32: invokeinterface #39,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      37: checkcast     #25                 // class java/lang/String
      40: astore_3
      41: aload_2
      42: iconst_1
      43: invokeinterface #39,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      48: checkcast     #25                 // class java/lang/String
      51: astore        4
      53: new           #41                 // class Day7$CamelCardHandWithJokers
      56: dup
      57: aload_3
      58: invokevirtual #45                 // Method java/lang/String.toCharArray:()[C
      61: dup
      62: ldc           #47                 // String toCharArray(...)
      64: invokestatic  #50                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      67: aload         4
      69: invokestatic  #56                 // Method java/lang/Long.parseLong:(Ljava/lang/String;)J
      72: invokespecial #59                 // Method Day7$CamelCardHandWithJokers."<init>":([CJ)V
      75: areturn

  public Day7$CamelCardHandWithJokers$Companion(kotlin.jvm.internal.DefaultConstructorMarker);
    Code:
       0: aload_0
       1: invokespecial #64                 // Method "<init>":()V
       4: return
}

Compiled from "Day7.kt"
public final class Day7$CamelCardHandWithJokers implements Day7$CardHand {
  public static final Day7$CamelCardHandWithJokers$Companion Companion;

  private final char[] cards;

  private final long bid;

  private final int maxSimilarCards;

  private final char[] possibleCards;

  private final int secondMaxSimilarCards;

  private final java.util.Map<java.lang.Character, java.lang.Integer> cardValues;

  public Day7$CamelCardHandWithJokers(char[], long);
    Code:
       0: aload_1
       1: ldc           #11                 // String cards
       3: invokestatic  #17                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokespecial #20                 // Method java/lang/Object."<init>":()V
      10: aload_0
      11: aload_1
      12: putfield      #23                 // Field cards:[C
      15: aload_0
      16: lload_2
      17: putfield      #27                 // Field bid:J
      20: aload_0
      21: bipush        13
      23: anewarray     #29                 // class java/lang/Character
      26: astore        4
      28: aload         4
      30: iconst_0
      31: bipush        74
      33: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      36: aastore
      37: aload         4
      39: iconst_1
      40: bipush        50
      42: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      45: aastore
      46: aload         4
      48: iconst_2
      49: bipush        51
      51: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      54: aastore
      55: aload         4
      57: iconst_3
      58: bipush        52
      60: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      63: aastore
      64: aload         4
      66: iconst_4
      67: bipush        53
      69: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      72: aastore
      73: aload         4
      75: iconst_5
      76: bipush        54
      78: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      81: aastore
      82: aload         4
      84: bipush        6
      86: bipush        55
      88: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      91: aastore
      92: aload         4
      94: bipush        7
      96: bipush        56
      98: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     101: aastore
     102: aload         4
     104: bipush        8
     106: bipush        57
     108: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     111: aastore
     112: aload         4
     114: bipush        9
     116: bipush        84
     118: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     121: aastore
     122: aload         4
     124: bipush        10
     126: bipush        81
     128: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     131: aastore
     132: aload         4
     134: bipush        11
     136: bipush        75
     138: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     141: aastore
     142: aload         4
     144: bipush        12
     146: bipush        65
     148: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     151: aastore
     152: aload         4
     154: invokestatic  #39                 // Method kotlin/collections/ArraysKt.toCharArray:([Ljava/lang/Character;)[C
     157: putfield      #42                 // Field possibleCards:[C
     160: aload_0
     161: aload_0
     162: getfield      #42                 // Field possibleCards:[C
     165: aload_0
     166: getfield      #42                 // Field possibleCards:[C
     169: invokestatic  #46                 // Method kotlin/collections/ArraysKt.getIndices:([C)Lkotlin/ranges/IntRange;
     172: checkcast     #48                 // class java/lang/Iterable
     175: invokestatic  #52                 // Method kotlin/collections/ArraysKt.zip:([CLjava/lang/Iterable;)Ljava/util/List;
     178: checkcast     #48                 // class java/lang/Iterable
     181: invokestatic  #58                 // Method kotlin/collections/MapsKt.toMap:(Ljava/lang/Iterable;)Ljava/util/Map;
     184: putfield      #62                 // Field cardValues:Ljava/util/Map;
     187: nop
     188: aload_0
     189: invokevirtual #66                 // Method getCards:()[C
     192: astore        5
     194: iconst_0
     195: istore        6
     197: iconst_0
     198: istore        7
     200: iconst_0
     201: istore        8
     203: aload         5
     205: arraylength
     206: istore        9
     208: iload         8
     210: iload         9
     212: if_icmpge     253
     215: aload         5
     217: iload         8
     219: caload
     220: istore        10
     222: iload         10
     224: istore        11
     226: iconst_0
     227: istore        12
     229: iload         11
     231: bipush        74
     233: if_icmpne     240
     236: iconst_1
     237: goto          241
     240: iconst_0
     241: ifeq          247
     244: iinc          7, 1
     247: iinc          8, 1
     250: goto          208
     253: iload         7
     255: istore        4
     257: aload_0
     258: invokevirtual #66                 // Method getCards:()[C
     261: astore        6
     263: iconst_0
     264: istore        7
     266: aload         6
     268: astore        8
     270: new           #68                 // class java/util/ArrayList
     273: dup
     274: invokespecial #69                 // Method java/util/ArrayList."<init>":()V
     277: checkcast     #71                 // class java/util/Collection
     280: astore        9
     282: iconst_0
     283: istore        10
     285: iconst_0
     286: istore        11
     288: aload         8
     290: arraylength
     291: istore        12
     293: iload         11
     295: iload         12
     297: if_icmpge     348
     300: aload         8
     302: iload         11
     304: caload
     305: istore        13
     307: iload         13
     309: istore        14
     311: iconst_0
     312: istore        15
     314: iload         14
     316: bipush        74
     318: if_icmpeq     325
     321: iconst_1
     322: goto          326
     325: iconst_0
     326: ifeq          342
     329: aload         9
     331: iload         13
     333: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     336: invokeinterface #75,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     341: pop
     342: iinc          11, 1
     345: goto          293
     348: aload         9
     350: checkcast     #77                 // class java/util/List
     353: nop
     354: checkcast     #48                 // class java/lang/Iterable
     357: astore        6
     359: nop
     360: iconst_0
     361: istore        7
     363: aload         6
     365: astore        8
     367: new           #79                 // class java/util/LinkedHashMap
     370: dup
     371: invokespecial #80                 // Method java/util/LinkedHashMap."<init>":()V
     374: checkcast     #82                 // class java/util/Map
     377: astore        9
     379: iconst_0
     380: istore        10
     382: aload         8
     384: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     389: astore        11
     391: aload         11
     393: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     398: ifeq          506
     401: aload         11
     403: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     408: astore        12
     410: aload         12
     412: checkcast     #29                 // class java/lang/Character
     415: invokevirtual #100                // Method java/lang/Character.charValue:()C
     418: istore        13
     420: iconst_0
     421: istore        14
     423: iload         13
     425: invokestatic  #33                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     428: astore        15
     430: aload         9
     432: astore        16
     434: iconst_0
     435: istore        17
     437: aload         16
     439: aload         15
     441: invokeinterface #104,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     446: astore        18
     448: aload         18
     450: ifnonnull     485
     453: iconst_0
     454: istore        19
     456: new           #68                 // class java/util/ArrayList
     459: dup
     460: invokespecial #69                 // Method java/util/ArrayList."<init>":()V
     463: checkcast     #77                 // class java/util/List
     466: astore        19
     468: aload         16
     470: aload         15
     472: aload         19
     474: invokeinterface #108,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     479: pop
     480: aload         19
     482: goto          487
     485: aload         18
     487: nop
     488: checkcast     #77                 // class java/util/List
     491: astore        13
     493: aload         13
     495: aload         12
     497: invokeinterface #109,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     502: pop
     503: goto          391
     506: aload         9
     508: nop
     509: astore        6
     511: nop
     512: iconst_0
     513: istore        7
     515: aload         6
     517: astore        8
     519: new           #79                 // class java/util/LinkedHashMap
     522: dup
     523: aload         6
     525: invokeinterface #113,  1          // InterfaceMethod java/util/Map.size:()I
     530: invokestatic  #117                // Method kotlin/collections/MapsKt.mapCapacity:(I)I
     533: invokespecial #120                // Method java/util/LinkedHashMap."<init>":(I)V
     536: checkcast     #82                 // class java/util/Map
     539: astore        9
     541: iconst_0
     542: istore        10
     544: aload         8
     546: invokeinterface #124,  1          // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set;
     551: checkcast     #48                 // class java/lang/Iterable
     554: astore        11
     556: iconst_0
     557: istore        12
     559: aload         11
     561: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     566: astore        13
     568: aload         13
     570: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     575: ifeq          660
     578: aload         13
     580: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     585: astore        14
     587: aload         9
     589: aload         14
     591: checkcast     #126                // class java/util/Map$Entry
     594: astore        15
     596: astore        16
     598: iconst_0
     599: istore        17
     601: aload         15
     603: invokeinterface #129,  1          // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
     608: aload         16
     610: swap
     611: aload         14
     613: checkcast     #126                // class java/util/Map$Entry
     616: astore        18
     618: astore        21
     620: astore        20
     622: iconst_0
     623: istore        19
     625: aload         18
     627: invokeinterface #132,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     632: checkcast     #77                 // class java/util/List
     635: invokeinterface #133,  1          // InterfaceMethod java/util/List.size:()I
     640: invokestatic  #138                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     643: astore        22
     645: aload         20
     647: aload         21
     649: aload         22
     651: invokeinterface #108,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     656: pop
     657: goto          568
     660: aload         9
     662: nop
     663: nop
     664: astore        5
     666: aload         5
     668: invokeinterface #142,  1          // InterfaceMethod java/util/Map.values:()Ljava/util/Collection;
     673: checkcast     #48                 // class java/lang/Iterable
     676: invokestatic  #148                // Method kotlin/collections/CollectionsKt.sortedDescending:(Ljava/lang/Iterable;)Ljava/util/List;
     679: astore        6
     681: aload         6
     683: invokestatic  #152                // Method kotlin/collections/CollectionsKt.firstOrNull:(Ljava/util/List;)Ljava/lang/Object;
     686: checkcast     #135                // class java/lang/Integer
     689: dup
     690: ifnull        699
     693: invokevirtual #155                // Method java/lang/Integer.intValue:()I
     696: goto          701
     699: pop
     700: iconst_0
     701: istore        7
     703: aload         6
     705: checkcast     #48                 // class java/lang/Iterable
     708: iconst_1
     709: invokestatic  #159                // Method kotlin/collections/CollectionsKt.drop:(Ljava/lang/Iterable;I)Ljava/util/List;
     712: invokestatic  #152                // Method kotlin/collections/CollectionsKt.firstOrNull:(Ljava/util/List;)Ljava/lang/Object;
     715: checkcast     #135                // class java/lang/Integer
     718: dup
     719: ifnull        728
     722: invokevirtual #155                // Method java/lang/Integer.intValue:()I
     725: goto          730
     728: pop
     729: iconst_0
     730: istore        8
     732: aload_0
     733: iload         7
     735: iload         4
     737: iadd
     738: putfield      #163                // Field maxSimilarCards:I
     741: aload_0
     742: iload         8
     744: putfield      #166                // Field secondMaxSimilarCards:I
     747: nop
     748: return

  public char[] getCards();
    Code:
       0: aload_0
       1: getfield      #23                 // Field cards:[C
       4: areturn

  public long getBid();
    Code:
       0: aload_0
       1: getfield      #27                 // Field bid:J
       4: lreturn

  public int getMaxSimilarCards();
    Code:
       0: aload_0
       1: getfield      #163                // Field maxSimilarCards:I
       4: ireturn

  public int getSecondMaxSimilarCards();
    Code:
       0: aload_0
       1: getfield      #166                // Field secondMaxSimilarCards:I
       4: ireturn

  public java.util.Map<java.lang.Character, java.lang.Integer> getCardValues();
    Code:
       0: aload_0
       1: getfield      #62                 // Field cardValues:Ljava/util/Map;
       4: areturn

  public final char[] component1();
    Code:
       0: aload_0
       1: getfield      #23                 // Field cards:[C
       4: areturn

  public final long component2();
    Code:
       0: aload_0
       1: getfield      #27                 // Field bid:J
       4: lreturn

  public final Day7$CamelCardHandWithJokers copy(char[], long);
    Code:
       0: aload_1
       1: ldc           #11                 // String cards
       3: invokestatic  #17                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #2                  // class Day7$CamelCardHandWithJokers
       9: dup
      10: aload_1
      11: lload_2
      12: invokespecial #229                // Method "<init>":([CJ)V
      15: areturn

  public static Day7$CamelCardHandWithJokers copy$default(Day7$CamelCardHandWithJokers, char[], long, int, java.lang.Object);
    Code:
       0: iload         4
       2: iconst_1
       3: iand
       4: ifeq          12
       7: aload_0
       8: getfield      #23                 // Field cards:[C
      11: astore_1
      12: iload         4
      14: iconst_2
      15: iand
      16: ifeq          24
      19: aload_0
      20: getfield      #27                 // Field bid:J
      23: lstore_2
      24: aload_0
      25: aload_1
      26: lload_2
      27: invokevirtual #233                // Method copy:([CJ)LDay7$CamelCardHandWithJokers;
      30: areturn

  public java.lang.String toString();
    Code:
       0: new           #237                // class java/lang/StringBuilder
       3: dup
       4: invokespecial #238                // Method java/lang/StringBuilder."<init>":()V
       7: ldc           #240                // String CamelCardHandWithJokers(cards=
       9: invokevirtual #244                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      12: aload_0
      13: getfield      #23                 // Field cards:[C
      16: invokestatic  #249                // Method java/util/Arrays.toString:([C)Ljava/lang/String;
      19: invokevirtual #244                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      22: ldc           #251                // String , bid=
      24: invokevirtual #244                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      27: aload_0
      28: getfield      #27                 // Field bid:J
      31: invokevirtual #254                // Method java/lang/StringBuilder.append:(J)Ljava/lang/StringBuilder;
      34: bipush        41
      36: invokevirtual #257                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      39: invokevirtual #259                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      42: areturn

  public int hashCode();
    Code:
       0: aload_0
       1: getfield      #23                 // Field cards:[C
       4: invokestatic  #263                // Method java/util/Arrays.hashCode:([C)I
       7: istore_1
       8: iload_1
       9: bipush        31
      11: imul
      12: aload_0
      13: getfield      #27                 // Field bid:J
      16: invokestatic  #268                // Method java/lang/Long.hashCode:(J)I
      19: iadd
      20: istore_1
      21: iload_1
      22: ireturn

  public boolean equals(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: if_acmpne     7
       5: iconst_1
       6: ireturn
       7: aload_1
       8: instanceof    #2                  // class Day7$CamelCardHandWithJokers
      11: ifne          16
      14: iconst_0
      15: ireturn
      16: aload_1
      17: checkcast     #2                  // class Day7$CamelCardHandWithJokers
      20: astore_2
      21: aload_0
      22: getfield      #23                 // Field cards:[C
      25: aload_2
      26: getfield      #23                 // Field cards:[C
      29: invokestatic  #275                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      32: ifne          37
      35: iconst_0
      36: ireturn
      37: aload_0
      38: getfield      #27                 // Field bid:J
      41: aload_2
      42: getfield      #27                 // Field bid:J
      45: lcmp
      46: ifeq          51
      49: iconst_0
      50: ireturn
      51: iconst_1
      52: ireturn

  public long score(int);
    Code:
       0: aload_0
       1: iload_1
       2: invokestatic  #283                // Method Day7$CardHand$DefaultImpls.score:(LDay7$CardHand;I)J
       5: lreturn

  public int compareTo(Day7$CardHand);
    Code:
       0: aload_0
       1: aload_1
       2: invokestatic  #289                // Method Day7$CardHand$DefaultImpls.compareTo:(LDay7$CardHand;LDay7$CardHand;)I
       5: ireturn

  public int compareTo(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #6                  // class Day7$CardHand
       5: invokevirtual #293                // Method compareTo:(LDay7$CardHand;)I
       8: ireturn

  static {};
    Code:
       0: new           #296                // class Day7$CamelCardHandWithJokers$Companion
       3: dup
       4: aconst_null
       5: invokespecial #299                // Method Day7$CamelCardHandWithJokers$Companion."<init>":(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
       8: putstatic     #303                // Field Companion:LDay7$CamelCardHandWithJokers$Companion;
      11: return
}

Compiled from "Comparisons.kt"
public final class Day7$CardHand$DefaultImpls$compareTo$$inlined$compareBy$1<T> implements java.util.Comparator {
  public Day7$CardHand$DefaultImpls$compareTo$$inlined$compareBy$1();
    Code:
       0: aload_0
       1: invokespecial #16                 // Method java/lang/Object."<init>":()V
       4: return

  public final int compare(T, T);
    Code:
       0: aload_1
       1: checkcast     #23                 // class Day7$CardHand
       4: astore_3
       5: iconst_0
       6: istore        4
       8: aload_3
       9: invokeinterface #27,  1           // InterfaceMethod Day7$CardHand.getMaxSimilarCards:()I
      14: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      17: checkcast     #35                 // class java/lang/Comparable
      20: aload_2
      21: checkcast     #23                 // class Day7$CardHand
      24: astore_3
      25: astore        5
      27: iconst_0
      28: istore        4
      30: aload_3
      31: invokeinterface #27,  1           // InterfaceMethod Day7$CardHand.getMaxSimilarCards:()I
      36: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      39: checkcast     #35                 // class java/lang/Comparable
      42: aload         5
      44: swap
      45: invokestatic  #41                 // Method kotlin/comparisons/ComparisonsKt.compareValues:(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
      48: ireturn
}