fun main() {
    val input = readInput("Day14")
    printTime { println(Day14.part1(input)) }
    printTime { println(Day14.part2(input)) }
}

class Day14 {
    companion object {
        fun part1(input: List<String>): Int {
            val pointMatrix = input.map { it.split(" -> ").map(::Point) }
            val points = pointMatrix.flatten()
            val minX = points.minOf { it.x }
            val maxX = points.maxOf { it.x }
            val maxY = points.maxOf { it.y }
            points.forEach { it.x -= minX }
            val lines = pointMatrix.map { it.windowed(2).map { (start, end) -> Line(start, end) } }.flatten()

            val map = (0..maxY).map { (minX..maxX).map { "." }.toTypedArray() }.toTypedArray()

            for (line in lines) {
                for (y in (line.start.y towards line.end.y)) {
                    for (x in (line.start.x towards line.end.x)) {
                        map[y][x] = "#"
                    }
                }
            }
            map[0][500 - minX] = "+"
//            map.print()

            val quickSand = mutableListOf(Point(500 - minX, 0))
            val stuckSand = mutableListOf<Point>()
            while (true) {
                try {
                    for (sandIndex in (quickSand.lastIndex downTo 0)) {
                        val sand = quickSand[sandIndex]
                        while (true) {
                            if (ifIsEmpty(map, sand.y + 1, sand.x)) {
                                map[sand.y][sand.x] = "."
                                map[++sand.y][sand.x] = "o"
                            } else if (ifIsEmpty(map, sand.y + 1, sand.x - 1)) {
                                map[sand.y][sand.x] = "."
                                map[++sand.y][--sand.x] = "o"
                            } else if (ifIsEmpty(map, sand.y + 1, sand.x + 1)) {
                                map[sand.y][sand.x] = "."
                                map[++sand.y][++sand.x] = "o"
                            } else {
                                stuckSand.add(sand)
                                break
                            }
                        }
                    }
                } catch (e: ArrayIndexOutOfBoundsException) {
                    break
                }
                if (!quickSand.removeAll(stuckSand)) break
                quickSand.add(Point(500 - minX, 0))
            }
//            map.print()
            return stuckSand.size
        }

        fun part2(input: List<String>): Int {
            val pointMatrix = input.map { it.split(" -> ").map(::Point) }
            val points = pointMatrix.flatten()
            val maxY = points.maxOf { it.y }
            val base = maxY + 2
            val lines = pointMatrix.map { it.windowed(2).map { (start, end) -> Line(start, end) } }.flatten()

            val map = (0..base).map { (0..700).map { "." }.toTypedArray() }.toTypedArray()

            for (line in lines) {
                for (y in (line.start.y towards line.end.y)) {
                    for (x in (line.start.x towards line.end.x)) {
                        map[y][x] = "#"
                    }
                }
            }
            map[base].fill("#")
            map[0][500] = "+"

            val quickSand = mutableListOf(Point(500, 0))
            val stuckSand = mutableListOf<Point>()
            while (true) {
                try {
                    for (sandIndex in (quickSand.lastIndex downTo 0)) {
                        val sand = quickSand[sandIndex]
                        while (true) {
                            if (ifIsEmpty(map, sand.y + 1, sand.x)) {
                                map[sand.y][sand.x] = "."
                                map[++sand.y][sand.x] = "o"
                            } else if (ifIsEmpty(map, sand.y + 1, sand.x - 1)) {
                                map[sand.y][sand.x] = "."
                                map[++sand.y][--sand.x] = "o"
                            } else if (ifIsEmpty(map, sand.y + 1, sand.x + 1)) {
                                map[sand.y][sand.x] = "."
                                map[++sand.y][++sand.x] = "o"
                            } else {
                                stuckSand.add(sand)
                                if (sand.y == 0) {
                                    map[0][sand.x] = "o"
                                    throw ArrayIndexOutOfBoundsException()
                                }
                                break
                            }
                        }
                    }
                    quickSand.removeAll(stuckSand)
                } catch (e: ArrayIndexOutOfBoundsException) {
                    break
                }
                quickSand.add(Point(500, 0))
            }
//            map.print()
            return stuckSand.size
        }

        private fun ifIsEmpty(map: Array<Array<String>>, y: Int = 0, x: Int = 0) = map[y][x] == "."
    }

    data class Point(var x: Int = 0, var y: Int = 0) {
        constructor(input: String) : this() {
            val (x, y) = input.split(',').map { it.toInt() }
            this.x = x
            this.y = y
        }
    }

    data class Line(val start: Point, val end: Point)
}

private fun <T> Array<Array<T>>.print() {
    this.forEach { it.forEach { print(it) }; println() }; println()
}

Compiled from "Day14.kt"
public final class Day14Kt {
  public static final void main();
    Code:
       0: ldc           #8                  // String Day14
       2: invokestatic  #14                 // Method UtilsKt.readInput:(Ljava/lang/String;)Ljava/util/List;
       5: astore_0
       6: aconst_null
       7: aconst_null
       8: aload_0
       9: invokedynamic #34,  0             // InvokeDynamic #0:invoke:(Ljava/util/List;)Lkotlin/jvm/functions/Function0;
      14: iconst_3
      15: aconst_null
      16: invokestatic  #38                 // Method UtilsKt.printTime$default:(Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V
      19: aconst_null
      20: aconst_null
      21: aload_0
      22: invokedynamic #43,  0             // InvokeDynamic #1:invoke:(Ljava/util/List;)Lkotlin/jvm/functions/Function0;
      27: iconst_3
      28: aconst_null
      29: invokestatic  #38                 // Method UtilsKt.printTime$default:(Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V
      32: return

  private static final <T> void print(T[][]);
    Code:
       0: aload_0
       1: checkcast     #50                 // class "[Ljava/lang/Object;"
       4: astore_1
       5: iconst_0
       6: istore_2
       7: iconst_0
       8: istore_3
       9: aload_1
      10: arraylength
      11: istore        4
      13: iload_3
      14: iload         4
      16: if_icmpge     101
      19: aload_1
      20: iload_3
      21: aaload
      22: astore        5
      24: aload         5
      26: checkcast     #50                 // class "[Ljava/lang/Object;"
      29: astore        6
      31: iconst_0
      32: istore        7
      34: aload         6
      36: astore        8
      38: iconst_0
      39: istore        9
      41: iconst_0
      42: istore        10
      44: aload         8
      46: arraylength
      47: istore        11
      49: iload         10
      51: iload         11
      53: if_icmpge     86
      56: aload         8
      58: iload         10
      60: aaload
      61: astore        12
      63: aload         12
      65: astore        13
      67: iconst_0
      68: istore        14
      70: getstatic     #56                 // Field java/lang/System.out:Ljava/io/PrintStream;
      73: aload         13
      75: invokevirtual #61                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
      78: nop
      79: nop
      80: iinc          10, 1
      83: goto          49
      86: nop
      87: getstatic     #56                 // Field java/lang/System.out:Ljava/io/PrintStream;
      90: invokevirtual #64                 // Method java/io/PrintStream.println:()V
      93: nop
      94: nop
      95: iinc          3, 1
      98: goto          13
     101: nop
     102: getstatic     #56                 // Field java/lang/System.out:Ljava/io/PrintStream;
     105: invokevirtual #64                 // Method java/io/PrintStream.println:()V
     108: return

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #78                 // Method main:()V
       3: return

  private static final kotlin.Unit main$lambda$0(java.util.List);
    Code:
       0: getstatic     #85                 // Field Day14.Companion:LDay14$Companion;
       3: aload_0
       4: invokevirtual #91                 // Method Day14$Companion.part1:(Ljava/util/List;)I
       7: istore_1
       8: getstatic     #56                 // Field java/lang/System.out:Ljava/io/PrintStream;
      11: iload_1
      12: invokevirtual #94                 // Method java/io/PrintStream.println:(I)V
      15: getstatic     #100                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
      18: areturn

  private static final kotlin.Unit main$lambda$1(java.util.List);
    Code:
       0: getstatic     #85                 // Field Day14.Companion:LDay14$Companion;
       3: aload_0
       4: invokevirtual #104                // Method Day14$Companion.part2:(Ljava/util/List;)I
       7: istore_1
       8: getstatic     #56                 // Field java/lang/System.out:Ljava/io/PrintStream;
      11: iload_1
      12: invokevirtual #94                 // Method java/io/PrintStream.println:(I)V
      15: getstatic     #100                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
      18: areturn
}

Compiled from "Day14.kt"
public final class Day14$Point {
  private int x;

  private int y;

  public Day14$Point(int, int);
    Code:
       0: aload_0
       1: invokespecial #9                  // Method java/lang/Object."<init>":()V
       4: aload_0
       5: iload_1
       6: putfield      #13                 // Field x:I
       9: aload_0
      10: iload_2
      11: putfield      #16                 // Field y:I
      14: return

  public Day14$Point(int, int, int, kotlin.jvm.internal.DefaultConstructorMarker);
    Code:
       0: iload_3
       1: iconst_1
       2: iand
       3: ifeq          8
       6: iconst_0
       7: istore_1
       8: iload_3
       9: iconst_2
      10: iand
      11: ifeq          16
      14: iconst_0
      15: istore_2
      16: aload_0
      17: iload_1
      18: iload_2
      19: invokespecial #21                 // Method "<init>":(II)V
      22: return

  public final int getX();
    Code:
       0: aload_0
       1: getfield      #13                 // Field x:I
       4: ireturn

  public final void setX(int);
    Code:
       0: aload_0
       1: iload_1
       2: putfield      #13                 // Field x:I
       5: return

  public final int getY();
    Code:
       0: aload_0
       1: getfield      #16                 // Field y:I
       4: ireturn

  public final void setY(int);
    Code:
       0: aload_0
       1: iload_1
       2: putfield      #16                 // Field y:I
       5: return

  public Day14$Point(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #32                 // String input
       3: invokestatic  #38                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: iconst_0
       8: iconst_0
       9: iconst_3
      10: aconst_null
      11: invokespecial #40                 // Method "<init>":(IIILkotlin/jvm/internal/DefaultConstructorMarker;)V
      14: aload_1
      15: checkcast     #42                 // class java/lang/CharSequence
      18: iconst_1
      19: newarray       char
      21: astore_3
      22: aload_3
      23: iconst_0
      24: bipush        44
      26: castore
      27: aload_3
      28: iconst_0
      29: iconst_0
      30: bipush        6
      32: aconst_null
      33: invokestatic  #48                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[CZIILjava/lang/Object;)Ljava/util/List;
      36: checkcast     #50                 // class java/lang/Iterable
      39: astore_3
      40: iconst_0
      41: istore        4
      43: aload_3
      44: astore        5
      46: new           #52                 // class java/util/ArrayList
      49: dup
      50: aload_3
      51: bipush        10
      53: invokestatic  #58                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      56: invokespecial #60                 // Method java/util/ArrayList."<init>":(I)V
      59: checkcast     #62                 // class java/util/Collection
      62: astore        6
      64: iconst_0
      65: istore        7
      67: aload         5
      69: invokeinterface #66,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      74: astore        8
      76: aload         8
      78: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      83: ifeq          130
      86: aload         8
      88: invokeinterface #76,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      93: astore        9
      95: aload         6
      97: aload         9
      99: checkcast     #78                 // class java/lang/String
     102: astore        10
     104: astore        12
     106: iconst_0
     107: istore        11
     109: aload         10
     111: invokestatic  #84                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     114: nop
     115: invokestatic  #88                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     118: aload         12
     120: swap
     121: invokeinterface #92,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     126: pop
     127: goto          76
     130: aload         6
     132: checkcast     #94                 // class java/util/List
     135: nop
     136: astore_2
     137: aload_2
     138: iconst_0
     139: invokeinterface #98,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     144: checkcast     #100                // class java/lang/Number
     147: invokevirtual #103                // Method java/lang/Number.intValue:()I
     150: istore_3
     151: aload_2
     152: iconst_1
     153: invokeinterface #98,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     158: checkcast     #100                // class java/lang/Number
     161: invokevirtual #103                // Method java/lang/Number.intValue:()I
     164: istore        4
     166: aload_0
     167: iload_3
     168: putfield      #13                 // Field x:I
     171: aload_0
     172: iload         4
     174: putfield      #16                 // Field y:I
     177: return

  public final int component1();
    Code:
       0: aload_0
       1: getfield      #13                 // Field x:I
       4: ireturn

  public final int component2();
    Code:
       0: aload_0
       1: getfield      #16                 // Field y:I
       4: ireturn

  public final Day14$Point copy(int, int);
    Code:
       0: new           #2                  // class Day14$Point
       3: dup
       4: iload_1
       5: iload_2
       6: invokespecial #21                 // Method "<init>":(II)V
       9: areturn

  public static Day14$Point copy$default(Day14$Point, int, int, int, java.lang.Object);
    Code:
       0: iload_3
       1: iconst_1
       2: iand
       3: ifeq          11
       6: aload_0
       7: getfield      #13                 // Field x:I
      10: istore_1
      11: iload_3
      12: iconst_2
      13: iand
      14: ifeq          22
      17: aload_0
      18: getfield      #16                 // Field y:I
      21: istore_2
      22: aload_0
      23: iload_1
      24: iload_2
      25: invokevirtual #123                // Method copy:(II)LDay14$Point;
      28: areturn

  public java.lang.String toString();
    Code:
       0: new           #127                // class java/lang/StringBuilder
       3: dup
       4: invokespecial #128                // Method java/lang/StringBuilder."<init>":()V
       7: ldc           #130                // String Point(x=
       9: invokevirtual #134                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      12: aload_0
      13: getfield      #13                 // Field x:I
      16: invokevirtual #137                // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      19: ldc           #139                // String , y=
      21: invokevirtual #134                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      24: aload_0
      25: getfield      #16                 // Field y:I
      28: invokevirtual #137                // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      31: bipush        41
      33: invokevirtual #142                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      36: invokevirtual #144                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      39: areturn

  public int hashCode();
    Code:
       0: aload_0
       1: getfield      #13                 // Field x:I
       4: invokestatic  #148                // Method java/lang/Integer.hashCode:(I)I
       7: istore_1
       8: iload_1
       9: bipush        31
      11: imul
      12: aload_0
      13: getfield      #16                 // Field y:I
      16: invokestatic  #148                // Method java/lang/Integer.hashCode:(I)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 Day14$Point
      11: ifne          16
      14: iconst_0
      15: ireturn
      16: aload_1
      17: checkcast     #2                  // class Day14$Point
      20: astore_2
      21: aload_0
      22: getfield      #13                 // Field x:I
      25: aload_2
      26: getfield      #13                 // Field x:I
      29: if_icmpeq     34
      32: iconst_0
      33: ireturn
      34: aload_0
      35: getfield      #16                 // Field y:I
      38: aload_2
      39: getfield      #16                 // Field y:I
      42: if_icmpeq     47
      45: iconst_0
      46: ireturn
      47: iconst_1
      48: ireturn

  public Day14$Point();
    Code:
       0: aload_0
       1: iconst_0
       2: iconst_0
       3: iconst_3
       4: aconst_null
       5: invokespecial #40                 // Method "<init>":(IIILkotlin/jvm/internal/DefaultConstructorMarker;)V
       8: return
}

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

  public final int part1(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: ldc           #18                 // String input
       3: invokestatic  #24                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: checkcast     #26                 // class java/lang/Iterable
      10: astore_3
      11: iconst_0
      12: istore        4
      14: aload_3
      15: astore        5
      17: new           #28                 // class java/util/ArrayList
      20: dup
      21: aload_3
      22: bipush        10
      24: invokestatic  #34                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      27: invokespecial #37                 // Method java/util/ArrayList."<init>":(I)V
      30: checkcast     #39                 // class java/util/Collection
      33: astore        6
      35: iconst_0
      36: istore        7
      38: aload         5
      40: invokeinterface #43,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      45: astore        8
      47: aload         8
      49: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      54: ifeq          223
      57: aload         8
      59: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      64: astore        9
      66: aload         6
      68: aload         9
      70: checkcast     #55                 // class java/lang/String
      73: astore        10
      75: astore        29
      77: iconst_0
      78: istore        11
      80: aload         10
      82: checkcast     #57                 // class java/lang/CharSequence
      85: iconst_1
      86: anewarray     #55                 // class java/lang/String
      89: astore        12
      91: aload         12
      93: iconst_0
      94: ldc           #59                 // String  ->
      96: aastore
      97: aload         12
      99: iconst_0
     100: iconst_0
     101: bipush        6
     103: aconst_null
     104: invokestatic  #65                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     107: checkcast     #26                 // class java/lang/Iterable
     110: astore        12
     112: iconst_0
     113: istore        13
     115: aload         12
     117: astore        14
     119: new           #28                 // class java/util/ArrayList
     122: dup
     123: aload         12
     125: bipush        10
     127: invokestatic  #34                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     130: invokespecial #37                 // Method java/util/ArrayList."<init>":(I)V
     133: checkcast     #39                 // class java/util/Collection
     136: astore        15
     138: iconst_0
     139: istore        16
     141: aload         14
     143: invokeinterface #43,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     148: astore        17
     150: aload         17
     152: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     157: ifeq          204
     160: aload         17
     162: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     167: astore        18
     169: aload         15
     171: aload         18
     173: checkcast     #55                 // class java/lang/String
     176: astore        19
     178: astore        20
     180: iconst_0
     181: istore        21
     183: new           #67                 // class Day14$Point
     186: dup
     187: aload         19
     189: invokespecial #70                 // Method Day14$Point."<init>":(Ljava/lang/String;)V
     192: aload         20
     194: swap
     195: invokeinterface #74,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     200: pop
     201: goto          150
     204: aload         15
     206: checkcast     #76                 // class java/util/List
     209: nop
     210: nop
     211: aload         29
     213: swap
     214: invokeinterface #74,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     219: pop
     220: goto          47
     223: aload         6
     225: checkcast     #76                 // class java/util/List
     228: nop
     229: astore_2
     230: aload_2
     231: checkcast     #26                 // class java/lang/Iterable
     234: invokestatic  #80                 // Method kotlin/collections/CollectionsKt.flatten:(Ljava/lang/Iterable;)Ljava/util/List;
     237: astore_3
     238: aload_3
     239: checkcast     #26                 // class java/lang/Iterable
     242: invokeinterface #43,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     247: astore        6
     249: aload         6
     251: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     256: ifne          267
     259: new           #82                 // class java/util/NoSuchElementException
     262: dup
     263: invokespecial #83                 // Method java/util/NoSuchElementException."<init>":()V
     266: athrow
     267: aload         6
     269: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     274: checkcast     #67                 // class Day14$Point
     277: astore        7
     279: iconst_0
     280: istore        8
     282: aload         7
     284: invokevirtual #87                 // Method Day14$Point.getX:()I
     287: istore        7
     289: aload         6
     291: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     296: ifeq          335
     299: aload         6
     301: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     306: checkcast     #67                 // class Day14$Point
     309: astore        8
     311: iconst_0
     312: istore        9
     314: aload         8
     316: invokevirtual #87                 // Method Day14$Point.getX:()I
     319: istore        8
     321: iload         7
     323: iload         8
     325: if_icmple     289
     328: iload         8
     330: istore        7
     332: goto          289
     335: iload         7
     337: istore        4
     339: aload_3
     340: checkcast     #26                 // class java/lang/Iterable
     343: invokeinterface #43,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     348: astore        7
     350: aload         7
     352: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     357: ifne          368
     360: new           #82                 // class java/util/NoSuchElementException
     363: dup
     364: invokespecial #83                 // Method java/util/NoSuchElementException."<init>":()V
     367: athrow
     368: aload         7
     370: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     375: checkcast     #67                 // class Day14$Point
     378: astore        8
     380: iconst_0
     381: istore        9
     383: aload         8
     385: invokevirtual #87                 // Method Day14$Point.getX:()I
     388: istore        8
     390: aload         7
     392: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     397: ifeq          436
     400: aload         7
     402: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     407: checkcast     #67                 // class Day14$Point
     410: astore        9
     412: iconst_0
     413: istore        10
     415: aload         9
     417: invokevirtual #87                 // Method Day14$Point.getX:()I
     420: istore        9
     422: iload         8
     424: iload         9
     426: if_icmpge     390
     429: iload         9
     431: istore        8
     433: goto          390
     436: iload         8
     438: istore        5
     440: aload_3
     441: checkcast     #26                 // class java/lang/Iterable
     444: invokeinterface #43,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     449: astore        8
     451: aload         8
     453: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     458: ifne          469
     461: new           #82                 // class java/util/NoSuchElementException
     464: dup
     465: invokespecial #83                 // Method java/util/NoSuchElementException."<init>":()V
     468: athrow
     469: aload         8
     471: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     476: checkcast     #67                 // class Day14$Point
     479: astore        9
     481: iconst_0
     482: istore        10
     484: aload         9
     486: invokevirtual #90                 // Method Day14$Point.getY:()I
     489: istore        9
     491: aload         8
     493: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     498: ifeq          537
     501: aload         8
     503: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     508: checkcast     #67                 // class Day14$Point
     511: astore        10
     513: iconst_0
     514: istore        11
     516: aload         10
     518: invokevirtual #90                 // Method Day14$Point.getY:()I
     521: istore        10
     523: iload         9
     525: iload         10
     527: if_icmpge     491
     530: iload         10
     532: istore        9
     534: goto          491
     537: iload         9
     539: istore        6
     541: aload_3
     542: checkcast     #26                 // class java/lang/Iterable
     545: astore        7
     547: iconst_0
     548: istore        8
     550: aload         7
     552: invokeinterface #43,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     557: astore        9
     559: aload         9
     561: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     566: ifeq          605
     569: aload         9
     571: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     576: astore        10
     578: aload         10
     580: checkcast     #67                 // class Day14$Point
     583: astore        11
     585: iconst_0
     586: istore        12
     588: aload         11
     590: aload         11
     592: invokevirtual #87                 // Method Day14$Point.getX:()I
     595: iload         4
     597: isub
     598: invokevirtual #93                 // Method Day14$Point.setX:(I)V
     601: nop
     602: goto          559
     605: nop
     606: aload_2
     607: checkcast     #26                 // class java/lang/Iterable
     610: astore        8
     612: iconst_0
     613: istore        9
     615: aload         8
     617: astore        10
     619: new           #28                 // class java/util/ArrayList
     622: dup
     623: aload         8
     625: bipush        10
     627: invokestatic  #34                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     630: invokespecial #37                 // Method java/util/ArrayList."<init>":(I)V
     633: checkcast     #39                 // class java/util/Collection
     636: astore        11
     638: iconst_0
     639: istore        12
     641: aload         10
     643: invokeinterface #43,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     648: astore        13
     650: aload         13
     652: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     657: ifeq          841
     660: aload         13
     662: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     667: astore        14
     669: aload         11
     671: aload         14
     673: checkcast     #76                 // class java/util/List
     676: astore        15
     678: astore        29
     680: iconst_0
     681: istore        16
     683: aload         15
     685: checkcast     #26                 // class java/lang/Iterable
     688: iconst_2
     689: iconst_0
     690: iconst_0
     691: bipush        6
     693: aconst_null
     694: invokestatic  #97                 // Method kotlin/collections/CollectionsKt.windowed$default:(Ljava/lang/Iterable;IIZILjava/lang/Object;)Ljava/util/List;
     697: checkcast     #26                 // class java/lang/Iterable
     700: astore        17
     702: iconst_0
     703: istore        18
     705: aload         17
     707: astore        19
     709: new           #28                 // class java/util/ArrayList
     712: dup
     713: aload         17
     715: bipush        10
     717: invokestatic  #34                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     720: invokespecial #37                 // Method java/util/ArrayList."<init>":(I)V
     723: checkcast     #39                 // class java/util/Collection
     726: astore        20
     728: iconst_0
     729: istore        21
     731: aload         19
     733: invokeinterface #43,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     738: astore        22
     740: aload         22
     742: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     747: ifeq          822
     750: aload         22
     752: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     757: astore        23
     759: aload         20
     761: aload         23
     763: checkcast     #76                 // class java/util/List
     766: astore        24
     768: astore        25
     770: iconst_0
     771: istore        26
     773: aload         24
     775: iconst_0
     776: invokeinterface #101,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     781: checkcast     #67                 // class Day14$Point
     784: astore        27
     786: aload         24
     788: iconst_1
     789: invokeinterface #101,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     794: checkcast     #67                 // class Day14$Point
     797: astore        28
     799: new           #103                // class Day14$Line
     802: dup
     803: aload         27
     805: aload         28
     807: invokespecial #106                // Method Day14$Line."<init>":(LDay14$Point;LDay14$Point;)V
     810: aload         25
     812: swap
     813: invokeinterface #74,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     818: pop
     819: goto          740
     822: aload         20
     824: checkcast     #76                 // class java/util/List
     827: nop
     828: nop
     829: aload         29
     831: swap
     832: invokeinterface #74,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     837: pop
     838: goto          650
     841: aload         11
     843: checkcast     #76                 // class java/util/List
     846: nop
     847: checkcast     #26                 // class java/lang/Iterable
     850: invokestatic  #80                 // Method kotlin/collections/CollectionsKt.flatten:(Ljava/lang/Iterable;)Ljava/util/List;
     853: astore        7
     855: new           #108                // class kotlin/ranges/IntRange
     858: dup
     859: iconst_0
     860: iload         6
     862: invokespecial #111                // Method kotlin/ranges/IntRange."<init>":(II)V
     865: checkcast     #26                 // class java/lang/Iterable
     868: astore        9
     870: iconst_0
     871: istore        10
     873: aload         9
     875: astore        11
     877: new           #28                 // class java/util/ArrayList
     880: dup
     881: aload         9
     883: bipush        10
     885: invokestatic  #34                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     888: invokespecial #37                 // Method java/util/ArrayList."<init>":(I)V
     891: checkcast     #39                 // class java/util/Collection
     894: astore        12
     896: iconst_0
     897: istore        13
     899: aload         11
     901: invokeinterface #43,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     906: astore        14
     908: aload         14
     910: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     915: ifeq          1084
     918: aload         14
     920: checkcast     #113                // class kotlin/collections/IntIterator
     923: invokevirtual #116                // Method kotlin/collections/IntIterator.nextInt:()I
     926: istore        15
     928: aload         12
     930: iload         15
     932: istore        16
     934: astore        29
     936: iconst_0
     937: istore        17
     939: new           #108                // class kotlin/ranges/IntRange
     942: dup
     943: iload         4
     945: iload         5
     947: invokespecial #111                // Method kotlin/ranges/IntRange."<init>":(II)V
     950: checkcast     #26                 // class java/lang/Iterable
     953: astore        18
     955: iconst_0
     956: istore        19
     958: aload         18
     960: astore        20
     962: new           #28                 // class java/util/ArrayList
     965: dup
     966: aload         18
     968: bipush        10
     970: invokestatic  #34                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     973: invokespecial #37                 // Method java/util/ArrayList."<init>":(I)V
     976: checkcast     #39                 // class java/util/Collection
     979: astore        21
     981: iconst_0
     982: istore        22
     984: aload         20
     986: invokeinterface #43,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     991: astore        23
     993: aload         23
     995: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1000: ifeq          1038
    1003: aload         23
    1005: checkcast     #113                // class kotlin/collections/IntIterator
    1008: invokevirtual #116                // Method kotlin/collections/IntIterator.nextInt:()I
    1011: istore        24
    1013: aload         21
    1015: iload         24
    1017: istore        25
    1019: astore        26
    1021: iconst_0
    1022: istore        27
    1024: ldc           #118                // String .
    1026: aload         26
    1028: swap
    1029: invokeinterface #74,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1034: pop
    1035: goto          993
    1038: aload         21
    1040: checkcast     #76                 // class java/util/List
    1043: nop
    1044: checkcast     #39                 // class java/util/Collection
    1047: astore        18
    1049: nop
    1050: iconst_0
    1051: istore        19
    1053: aload         18
    1055: astore        20
    1057: aload         20
    1059: iconst_0
    1060: anewarray     #55                 // class java/lang/String
    1063: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
    1068: checkcast     #124                // class "[Ljava/lang/String;"
    1071: nop
    1072: aload         29
    1074: swap
    1075: invokeinterface #74,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1080: pop
    1081: goto          908
    1084: aload         12
    1086: checkcast     #76                 // class java/util/List
    1089: nop
    1090: checkcast     #39                 // class java/util/Collection
    1093: astore        9
    1095: nop
    1096: iconst_0
    1097: istore        10
    1099: aload         9
    1101: astore        11
    1103: aload         11
    1105: iconst_0
    1106: anewarray     #124                // class "[Ljava/lang/String;"
    1109: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
    1114: checkcast     #126                // class "[[Ljava/lang/String;"
    1117: astore        8
    1119: aload         7
    1121: invokeinterface #127,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
    1126: astore        9
    1128: aload         9
    1130: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1135: ifeq          1326
    1138: aload         9
    1140: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1145: checkcast     #103                // class Day14$Line
    1148: astore        10
    1150: aload         10
    1152: invokevirtual #131                // Method Day14$Line.getStart:()LDay14$Point;
    1155: invokevirtual #90                 // Method Day14$Point.getY:()I
    1158: aload         10
    1160: invokevirtual #134                // Method Day14$Line.getEnd:()LDay14$Point;
    1163: invokevirtual #90                 // Method Day14$Point.getY:()I
    1166: invokestatic  #140                // Method UtilsKt.towards:(II)Lkotlin/ranges/IntProgression;
    1169: astore        11
    1171: aload         11
    1173: invokevirtual #145                // Method kotlin/ranges/IntProgression.getFirst:()I
    1176: istore        12
    1178: aload         11
    1180: invokevirtual #148                // Method kotlin/ranges/IntProgression.getLast:()I
    1183: istore        13
    1185: aload         11
    1187: invokevirtual #151                // Method kotlin/ranges/IntProgression.getStep:()I
    1190: istore        14
    1192: iload         14
    1194: ifle          1204
    1197: iload         12
    1199: iload         13
    1201: if_icmple     1216
    1204: iload         14
    1206: ifge          1128
    1209: iload         13
    1211: iload         12
    1213: if_icmpgt     1128
    1216: aload         10
    1218: invokevirtual #131                // Method Day14$Line.getStart:()LDay14$Point;
    1221: invokevirtual #87                 // Method Day14$Point.getX:()I
    1224: aload         10
    1226: invokevirtual #134                // Method Day14$Line.getEnd:()LDay14$Point;
    1229: invokevirtual #87                 // Method Day14$Point.getX:()I
    1232: invokestatic  #140                // Method UtilsKt.towards:(II)Lkotlin/ranges/IntProgression;
    1235: astore        15
    1237: aload         15
    1239: invokevirtual #145                // Method kotlin/ranges/IntProgression.getFirst:()I
    1242: istore        16
    1244: aload         15
    1246: invokevirtual #148                // Method kotlin/ranges/IntProgression.getLast:()I
    1249: istore        17
    1251: aload         15
    1253: invokevirtual #151                // Method kotlin/ranges/IntProgression.getStep:()I
    1256: istore        18
    1258: iload         18
    1260: ifle          1270
    1263: iload         16
    1265: iload         17
    1267: if_icmple     1282
    1270: iload         18
    1272: ifge          1309
    1275: iload         17
    1277: iload         16
    1279: if_icmpgt     1309
    1282: aload         8
    1284: iload         12
    1286: aaload
    1287: iload         16
    1289: ldc           #153                // String #
    1291: aastore
    1292: iload         16
    1294: iload         17
    1296: if_icmpeq     1309
    1299: iload         16
    1301: iload         18
    1303: iadd
    1304: istore        16
    1306: goto          1282
    1309: iload         12
    1311: iload         13
    1313: if_icmpeq     1128
    1316: iload         12
    1318: iload         14
    1320: iadd
    1321: istore        12
    1323: goto          1216
    1326: aload         8
    1328: iconst_0
    1329: aaload
    1330: sipush        500
    1333: iload         4
    1335: isub
    1336: ldc           #155                // String +
    1338: aastore
    1339: iconst_1
    1340: anewarray     #67                 // class Day14$Point
    1343: astore        10
    1345: aload         10
    1347: iconst_0
    1348: new           #67                 // class Day14$Point
    1351: dup
    1352: sipush        500
    1355: iload         4
    1357: isub
    1358: iconst_0
    1359: invokespecial #156                // Method Day14$Point."<init>":(II)V
    1362: aastore
    1363: aload         10
    1365: invokestatic  #160                // Method kotlin/collections/CollectionsKt.mutableListOf:([Ljava/lang/Object;)Ljava/util/List;
    1368: astore        9
    1370: new           #28                 // class java/util/ArrayList
    1373: dup
    1374: invokespecial #161                // Method java/util/ArrayList."<init>":()V
    1377: checkcast     #76                 // class java/util/List
    1380: astore        10
    1382: nop
    1383: nop
    1384: aload         9
    1386: invokestatic  #164                // Method kotlin/collections/CollectionsKt.getLastIndex:(Ljava/util/List;)I
    1389: istore        11
    1391: iconst_m1
    1392: iload         11
    1394: if_icmpge     1668
    1397: aload         9
    1399: iload         11
    1401: invokeinterface #101,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1406: checkcast     #67                 // class Day14$Point
    1409: astore        12
    1411: nop
    1412: aload_0
    1413: aload         8
    1415: aload         12
    1417: invokevirtual #90                 // Method Day14$Point.getY:()I
    1420: iconst_1
    1421: iadd
    1422: aload         12
    1424: invokevirtual #87                 // Method Day14$Point.getX:()I
    1427: invokespecial #168                // Method ifIsEmpty:([[Ljava/lang/String;II)Z
    1430: ifeq          1480
    1433: aload         8
    1435: aload         12
    1437: invokevirtual #90                 // Method Day14$Point.getY:()I
    1440: aaload
    1441: aload         12
    1443: invokevirtual #87                 // Method Day14$Point.getX:()I
    1446: ldc           #118                // String .
    1448: aastore
    1449: aload         8
    1451: aload         12
    1453: aload         12
    1455: invokevirtual #90                 // Method Day14$Point.getY:()I
    1458: iconst_1
    1459: iadd
    1460: invokevirtual #171                // Method Day14$Point.setY:(I)V
    1463: aload         12
    1465: invokevirtual #90                 // Method Day14$Point.getY:()I
    1468: aaload
    1469: aload         12
    1471: invokevirtual #87                 // Method Day14$Point.getX:()I
    1474: ldc           #173                // String o
    1476: aastore
    1477: goto          1411
    1480: aload_0
    1481: aload         8
    1483: aload         12
    1485: invokevirtual #90                 // Method Day14$Point.getY:()I
    1488: iconst_1
    1489: iadd
    1490: aload         12
    1492: invokevirtual #87                 // Method Day14$Point.getX:()I
    1495: iconst_1
    1496: isub
    1497: invokespecial #168                // Method ifIsEmpty:([[Ljava/lang/String;II)Z
    1500: ifeq          1562
    1503: aload         8
    1505: aload         12
    1507: invokevirtual #90                 // Method Day14$Point.getY:()I
    1510: aaload
    1511: aload         12
    1513: invokevirtual #87                 // Method Day14$Point.getX:()I
    1516: ldc           #118                // String .
    1518: aastore
    1519: aload         8
    1521: aload         12
    1523: aload         12
    1525: invokevirtual #90                 // Method Day14$Point.getY:()I
    1528: iconst_1
    1529: iadd
    1530: invokevirtual #171                // Method Day14$Point.setY:(I)V
    1533: aload         12
    1535: invokevirtual #90                 // Method Day14$Point.getY:()I
    1538: aaload
    1539: aload         12
    1541: aload         12
    1543: invokevirtual #87                 // Method Day14$Point.getX:()I
    1546: iconst_m1
    1547: iadd
    1548: invokevirtual #93                 // Method Day14$Point.setX:(I)V
    1551: aload         12
    1553: invokevirtual #87                 // Method Day14$Point.getX:()I
    1556: ldc           #173                // String o
    1558: aastore
    1559: goto          1411
    1562: aload_0
    1563: aload         8
    1565: aload         12
    1567: invokevirtual #90                 // Method Day14$Point.getY:()I
    1570: iconst_1
    1571: iadd
    1572: aload         12
    1574: invokevirtual #87                 // Method Day14$Point.getX:()I
    1577: iconst_1
    1578: iadd
    1579: invokespecial #168                // Method ifIsEmpty:([[Ljava/lang/String;II)Z
    1582: ifeq          1644
    1585: aload         8
    1587: aload         12
    1589: invokevirtual #90                 // Method Day14$Point.getY:()I
    1592: aaload
    1593: aload         12
    1595: invokevirtual #87                 // Method Day14$Point.getX:()I
    1598: ldc           #118                // String .
    1600: aastore
    1601: aload         8
    1603: aload         12
    1605: aload         12
    1607: invokevirtual #90                 // Method Day14$Point.getY:()I
    1610: iconst_1
    1611: iadd
    1612: invokevirtual #171                // Method Day14$Point.setY:(I)V
    1615: aload         12
    1617: invokevirtual #90                 // Method Day14$Point.getY:()I
    1620: aaload
    1621: aload         12
    1623: aload         12
    1625: invokevirtual #87                 // Method Day14$Point.getX:()I
    1628: iconst_1
    1629: iadd
    1630: invokevirtual #93                 // Method Day14$Point.setX:(I)V
    1633: aload         12
    1635: invokevirtual #87                 // Method Day14$Point.getX:()I
    1638: ldc           #173                // String o
    1640: aastore
    1641: goto          1411
    1644: aload         10
    1646: aload         12
    1648: invokeinterface #174,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
    1653: pop
    1654: goto          1657
    1657: iinc          11, -1
    1660: goto          1391
    1663: astore        11
    1665: goto          1708
    1668: aload         9
    1670: aload         10
    1672: checkcast     #39                 // class java/util/Collection
    1675: invokeinterface #178,  2          // InterfaceMethod java/util/List.removeAll:(Ljava/util/Collection;)Z
    1680: ifeq          1708
    1683: aload         9
    1685: new           #67                 // class Day14$Point
    1688: dup
    1689: sipush        500
    1692: iload         4
    1694: isub
    1695: iconst_0
    1696: invokespecial #156                // Method Day14$Point."<init>":(II)V
    1699: invokeinterface #174,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
    1704: pop
    1705: goto          1382
    1708: aload         10
    1710: invokeinterface #181,  1          // InterfaceMethod java/util/List.size:()I
    1715: ireturn
    Exception table:
       from    to  target type
        1383  1663  1663   Class java/lang/ArrayIndexOutOfBoundsException

  public final int part2(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: ldc           #18                 // String input
       3: invokestatic  #24                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: checkcast     #26                 // class java/lang/Iterable
      10: astore_3
      11: iconst_0
      12: istore        4
      14: aload_3
      15: astore        5
      17: new           #28                 // class java/util/ArrayList
      20: dup
      21: aload_3
      22: bipush        10
      24: invokestatic  #34                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      27: invokespecial #37                 // Method java/util/ArrayList."<init>":(I)V
      30: checkcast     #39                 // class java/util/Collection
      33: astore        6
      35: iconst_0
      36: istore        7
      38: aload         5
      40: invokeinterface #43,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      45: astore        8
      47: aload         8
      49: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      54: ifeq          223
      57: aload         8
      59: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      64: astore        9
      66: aload         6
      68: aload         9
      70: checkcast     #55                 // class java/lang/String
      73: astore        10
      75: astore        28
      77: iconst_0
      78: istore        11
      80: aload         10
      82: checkcast     #57                 // class java/lang/CharSequence
      85: iconst_1
      86: anewarray     #55                 // class java/lang/String
      89: astore        12
      91: aload         12
      93: iconst_0
      94: ldc           #59                 // String  ->
      96: aastore
      97: aload         12
      99: iconst_0
     100: iconst_0
     101: bipush        6
     103: aconst_null
     104: invokestatic  #65                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     107: checkcast     #26                 // class java/lang/Iterable
     110: astore        12
     112: iconst_0
     113: istore        13
     115: aload         12
     117: astore        14
     119: new           #28                 // class java/util/ArrayList
     122: dup
     123: aload         12
     125: bipush        10
     127: invokestatic  #34                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     130: invokespecial #37                 // Method java/util/ArrayList."<init>":(I)V
     133: checkcast     #39                 // class java/util/Collection
     136: astore        15
     138: iconst_0
     139: istore        16
     141: aload         14
     143: invokeinterface #43,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     148: astore        17
     150: aload         17
     152: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     157: ifeq          204
     160: aload         17
     162: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     167: astore        18
     169: aload         15
     171: aload         18
     173: checkcast     #55                 // class java/lang/String
     176: astore        19
     178: astore        20
     180: iconst_0
     181: istore        21
     183: new           #67                 // class Day14$Point
     186: dup
     187: aload         19
     189: invokespecial #70                 // Method Day14$Point."<init>":(Ljava/lang/String;)V
     192: aload         20
     194: swap
     195: invokeinterface #74,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     200: pop
     201: goto          150
     204: aload         15
     206: checkcast     #76                 // class java/util/List
     209: nop
     210: nop
     211: aload         28
     213: swap
     214: invokeinterface #74,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     219: pop
     220: goto          47
     223: aload         6
     225: checkcast     #76                 // class java/util/List
     228: nop
     229: astore_2
     230: aload_2
     231: checkcast     #26                 // class java/lang/Iterable
     234: invokestatic  #80                 // Method kotlin/collections/CollectionsKt.flatten:(Ljava/lang/Iterable;)Ljava/util/List;
     237: astore_3
     238: aload_3
     239: checkcast     #26                 // class java/lang/Iterable
     242: invokeinterface #43,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     247: astore        6
     249: aload         6
     251: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     256: ifne          267
     259: new           #82                 // class java/util/NoSuchElementException
     262: dup
     263: invokespecial #83                 // Method java/util/NoSuchElementException."<init>":()V
     266: athrow
     267: aload         6
     269: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     274: checkcast     #67                 // class Day14$Point
     277: astore        7
     279: iconst_0
     280: istore        8
     282: aload         7
     284: invokevirtual #90                 // Method Day14$Point.getY:()I
     287: istore        7
     289: aload         6
     291: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     296: ifeq          335
     299: aload         6
     301: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     306: checkcast     #67                 // class Day14$Point
     309: astore        8
     311: iconst_0
     312: istore        9
     314: aload         8
     316: invokevirtual #90                 // Method Day14$Point.getY:()I
     319: istore        8
     321: iload         7
     323: iload         8
     325: if_icmpge     289
     328: iload         8
     330: istore        7
     332: goto          289
     335: iload         7
     337: istore        4
     339: iload         4
     341: iconst_2
     342: iadd
     343: istore        5
     345: aload_2
     346: checkcast     #26                 // class java/lang/Iterable
     349: astore        7
     351: iconst_0
     352: istore        8
     354: aload         7
     356: astore        9
     358: new           #28                 // class java/util/ArrayList
     361: dup
     362: aload         7
     364: bipush        10
     366: invokestatic  #34                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     369: invokespecial #37                 // Method java/util/ArrayList."<init>":(I)V
     372: checkcast     #39                 // class java/util/Collection
     375: astore        10
     377: iconst_0
     378: istore        11
     380: aload         9
     382: invokeinterface #43,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     387: astore        12
     389: aload         12
     391: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     396: ifeq          580
     399: aload         12
     401: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     406: astore        13
     408: aload         10
     410: aload         13
     412: checkcast     #76                 // class java/util/List
     415: astore        14
     417: astore        28
     419: iconst_0
     420: istore        15
     422: aload         14
     424: checkcast     #26                 // class java/lang/Iterable
     427: iconst_2
     428: iconst_0
     429: iconst_0
     430: bipush        6
     432: aconst_null
     433: invokestatic  #97                 // Method kotlin/collections/CollectionsKt.windowed$default:(Ljava/lang/Iterable;IIZILjava/lang/Object;)Ljava/util/List;
     436: checkcast     #26                 // class java/lang/Iterable
     439: astore        16
     441: iconst_0
     442: istore        17
     444: aload         16
     446: astore        18
     448: new           #28                 // class java/util/ArrayList
     451: dup
     452: aload         16
     454: bipush        10
     456: invokestatic  #34                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     459: invokespecial #37                 // Method java/util/ArrayList."<init>":(I)V
     462: checkcast     #39                 // class java/util/Collection
     465: astore        19
     467: iconst_0
     468: istore        20
     470: aload         18
     472: invokeinterface #43,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     477: astore        21
     479: aload         21
     481: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     486: ifeq          561
     489: aload         21
     491: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     496: astore        22
     498: aload         19
     500: aload         22
     502: checkcast     #76                 // class java/util/List
     505: astore        23
     507: astore        24
     509: iconst_0
     510: istore        25
     512: aload         23
     514: iconst_0
     515: invokeinterface #101,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     520: checkcast     #67                 // class Day14$Point
     523: astore        26
     525: aload         23
     527: iconst_1
     528: invokeinterface #101,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     533: checkcast     #67                 // class Day14$Point
     536: astore        27
     538: new           #103                // class Day14$Line
     541: dup
     542: aload         26
     544: aload         27
     546: invokespecial #106                // Method Day14$Line."<init>":(LDay14$Point;LDay14$Point;)V
     549: aload         24
     551: swap
     552: invokeinterface #74,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     557: pop
     558: goto          479
     561: aload         19
     563: checkcast     #76                 // class java/util/List
     566: nop
     567: nop
     568: aload         28
     570: swap
     571: invokeinterface #74,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     576: pop
     577: goto          389
     580: aload         10
     582: checkcast     #76                 // class java/util/List
     585: nop
     586: checkcast     #26                 // class java/lang/Iterable
     589: invokestatic  #80                 // Method kotlin/collections/CollectionsKt.flatten:(Ljava/lang/Iterable;)Ljava/util/List;
     592: astore        6
     594: new           #108                // class kotlin/ranges/IntRange
     597: dup
     598: iconst_0
     599: iload         5
     601: invokespecial #111                // Method kotlin/ranges/IntRange."<init>":(II)V
     604: checkcast     #26                 // class java/lang/Iterable
     607: astore        8
     609: iconst_0
     610: istore        9
     612: aload         8
     614: astore        10
     616: new           #28                 // class java/util/ArrayList
     619: dup
     620: aload         8
     622: bipush        10
     624: invokestatic  #34                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     627: invokespecial #37                 // Method java/util/ArrayList."<init>":(I)V
     630: checkcast     #39                 // class java/util/Collection
     633: astore        11
     635: iconst_0
     636: istore        12
     638: aload         10
     640: invokeinterface #43,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     645: astore        13
     647: aload         13
     649: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     654: ifeq          823
     657: aload         13
     659: checkcast     #113                // class kotlin/collections/IntIterator
     662: invokevirtual #116                // Method kotlin/collections/IntIterator.nextInt:()I
     665: istore        14
     667: aload         11
     669: iload         14
     671: istore        15
     673: astore        28
     675: iconst_0
     676: istore        16
     678: new           #108                // class kotlin/ranges/IntRange
     681: dup
     682: iconst_0
     683: sipush        700
     686: invokespecial #111                // Method kotlin/ranges/IntRange."<init>":(II)V
     689: checkcast     #26                 // class java/lang/Iterable
     692: astore        17
     694: iconst_0
     695: istore        18
     697: aload         17
     699: astore        19
     701: new           #28                 // class java/util/ArrayList
     704: dup
     705: aload         17
     707: bipush        10
     709: invokestatic  #34                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     712: invokespecial #37                 // Method java/util/ArrayList."<init>":(I)V
     715: checkcast     #39                 // class java/util/Collection
     718: astore        20
     720: iconst_0
     721: istore        21
     723: aload         19
     725: invokeinterface #43,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     730: astore        22
     732: aload         22
     734: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     739: ifeq          777
     742: aload         22
     744: checkcast     #113                // class kotlin/collections/IntIterator
     747: invokevirtual #116                // Method kotlin/collections/IntIterator.nextInt:()I
     750: istore        23
     752: aload         20
     754: iload         23
     756: istore        24
     758: astore        25
     760: iconst_0
     761: istore        26
     763: ldc           #118                // String .
     765: aload         25
     767: swap
     768: invokeinterface #74,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     773: pop
     774: goto          732
     777: aload         20
     779: checkcast     #76                 // class java/util/List
     782: nop
     783: checkcast     #39                 // class java/util/Collection
     786: astore        17
     788: nop
     789: iconst_0
     790: istore        18
     792: aload         17
     794: astore        19
     796: aload         19
     798: iconst_0
     799: anewarray     #55                 // class java/lang/String
     802: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
     807: checkcast     #124                // class "[Ljava/lang/String;"
     810: nop
     811: aload         28
     813: swap
     814: invokeinterface #74,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     819: pop
     820: goto          647
     823: aload         11
     825: checkcast     #76                 // class java/util/List
     828: nop
     829: checkcast     #39                 // class java/util/Collection
     832: astore        8
     834: nop
     835: iconst_0
     836: istore        9
     838: aload         8
     840: astore        10
     842: aload         10
     844: iconst_0
     845: anewarray     #124                // class "[Ljava/lang/String;"
     848: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
     853: checkcast     #126                // class "[[Ljava/lang/String;"
     856: astore        7
     858: aload         6
     860: invokeinterface #127,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
     865: astore        8
     867: aload         8
     869: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     874: ifeq          1065
     877: aload         8
     879: invokeinterface #53,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     884: checkcast     #103                // class Day14$Line
     887: astore        9
     889: aload         9
     891: invokevirtual #131                // Method Day14$Line.getStart:()LDay14$Point;
     894: invokevirtual #90                 // Method Day14$Point.getY:()I
     897: aload         9
     899: invokevirtual #134                // Method Day14$Line.getEnd:()LDay14$Point;
     902: invokevirtual #90                 // Method Day14$Point.getY:()I
     905: invokestatic  #140                // Method UtilsKt.towards:(II)Lkotlin/ranges/IntProgression;
     908: astore        10
     910: aload         10
     912: invokevirtual #145                // Method kotlin/ranges/IntProgression.getFirst:()I
     915: istore        11
     917: aload         10
     919: invokevirtual #148                // Method kotlin/ranges/IntProgression.getLast:()I
     922: istore        12
     924: aload         10
     926: invokevirtual #151                // Method kotlin/ranges/IntProgression.getStep:()I
     929: istore        13
     931: iload         13
     933: ifle          943
     936: iload         11
     938: iload         12
     940: if_icmple     955
     943: iload         13
     945: ifge          867
     948: iload         12
     950: iload         11
     952: if_icmpgt     867
     955: aload         9
     957: invokevirtual #131                // Method Day14$Line.getStart:()LDay14$Point;
     960: invokevirtual #87                 // Method Day14$Point.getX:()I
     963: aload         9
     965: invokevirtual #134                // Method Day14$Line.getEnd:()LDay14$Point;
     968: invokevirtual #87                 // Method Day14$Point.getX:()I
     971: invokestatic  #140                // Method UtilsKt.towards:(II)Lkotlin/ranges/IntProgression;
     974: astore        14
     976: aload         14
     978: invokevirtual #145                // Method kotlin/ranges/IntProgression.getFirst:()I
     981: istore        15
     983: aload         14
     985: invokevirtual #148                // Method kotlin/ranges/IntProgression.getLast:()I
     988: istore        16
     990: aload         14
     992: invokevirtual #151                // Method kotlin/ranges/IntProgression.getStep:()I
     995: istore        17
     997: iload         17
     999: ifle          1009
    1002: iload         15
    1004: iload         16
    1006: if_icmple     1021
    1009: iload         17
    1011: ifge          1048
    1014: iload         16
    1016: iload         15
    1018: if_icmpgt     1048
    1021: aload         7
    1023: iload         11
    1025: aaload
    1026: iload         15
    1028: ldc           #153                // String #
    1030: aastore
    1031: iload         15
    1033: iload         16
    1035: if_icmpeq     1048
    1038: iload         15
    1040: iload         17
    1042: iadd
    1043: istore        15
    1045: goto          1021
    1048: iload         11
    1050: iload         12
    1052: if_icmpeq     867
    1055: iload         11
    1057: iload         13
    1059: iadd
    1060: istore        11
    1062: goto          955
    1065: aload         7
    1067: iload         5
    1069: aaload
    1070: ldc           #153                // String #
    1072: iconst_0
    1073: iconst_0
    1074: bipush        6
    1076: aconst_null
    1077: invokestatic  #238                // Method kotlin/collections/ArraysKt.fill$default:([Ljava/lang/Object;Ljava/lang/Object;IIILjava/lang/Object;)V
    1080: aload         7
    1082: iconst_0
    1083: aaload
    1084: sipush        500
    1087: ldc           #155                // String +
    1089: aastore
    1090: iconst_1
    1091: anewarray     #67                 // class Day14$Point
    1094: astore        9
    1096: aload         9
    1098: iconst_0
    1099: new           #67                 // class Day14$Point
    1102: dup
    1103: sipush        500
    1106: iconst_0
    1107: invokespecial #156                // Method Day14$Point."<init>":(II)V
    1110: aastore
    1111: aload         9
    1113: invokestatic  #160                // Method kotlin/collections/CollectionsKt.mutableListOf:([Ljava/lang/Object;)Ljava/util/List;
    1116: astore        8
    1118: new           #28                 // class java/util/ArrayList
    1121: dup
    1122: invokespecial #161                // Method java/util/ArrayList."<init>":()V
    1125: checkcast     #76                 // class java/util/List
    1128: astore        9
    1130: nop
    1131: nop
    1132: aload         8
    1134: invokestatic  #164                // Method kotlin/collections/CollectionsKt.getLastIndex:(Ljava/util/List;)I
    1137: istore        10
    1139: iconst_m1
    1140: iload         10
    1142: if_icmpge     1439
    1145: aload         8
    1147: iload         10
    1149: invokeinterface #101,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1154: checkcast     #67                 // class Day14$Point
    1157: astore        11
    1159: nop
    1160: aload_0
    1161: aload         7
    1163: aload         11
    1165: invokevirtual #90                 // Method Day14$Point.getY:()I
    1168: iconst_1
    1169: iadd
    1170: aload         11
    1172: invokevirtual #87                 // Method Day14$Point.getX:()I
    1175: invokespecial #168                // Method ifIsEmpty:([[Ljava/lang/String;II)Z
    1178: ifeq          1228
    1181: aload         7
    1183: aload         11
    1185: invokevirtual #90                 // Method Day14$Point.getY:()I
    1188: aaload
    1189: aload         11
    1191: invokevirtual #87                 // Method Day14$Point.getX:()I
    1194: ldc           #118                // String .
    1196: aastore
    1197: aload         7
    1199: aload         11
    1201: aload         11
    1203: invokevirtual #90                 // Method Day14$Point.getY:()I
    1206: iconst_1
    1207: iadd
    1208: invokevirtual #171                // Method Day14$Point.setY:(I)V
    1211: aload         11
    1213: invokevirtual #90                 // Method Day14$Point.getY:()I
    1216: aaload
    1217: aload         11
    1219: invokevirtual #87                 // Method Day14$Point.getX:()I
    1222: ldc           #173                // String o
    1224: aastore
    1225: goto          1159
    1228: aload_0
    1229: aload         7
    1231: aload         11
    1233: invokevirtual #90                 // Method Day14$Point.getY:()I
    1236: iconst_1
    1237: iadd
    1238: aload         11
    1240: invokevirtual #87                 // Method Day14$Point.getX:()I
    1243: iconst_1
    1244: isub
    1245: invokespecial #168                // Method ifIsEmpty:([[Ljava/lang/String;II)Z
    1248: ifeq          1310
    1251: aload         7
    1253: aload         11
    1255: invokevirtual #90                 // Method Day14$Point.getY:()I
    1258: aaload
    1259: aload         11
    1261: invokevirtual #87                 // Method Day14$Point.getX:()I
    1264: ldc           #118                // String .
    1266: aastore
    1267: aload         7
    1269: aload         11
    1271: aload         11
    1273: invokevirtual #90                 // Method Day14$Point.getY:()I
    1276: iconst_1
    1277: iadd
    1278: invokevirtual #171                // Method Day14$Point.setY:(I)V
    1281: aload         11
    1283: invokevirtual #90                 // Method Day14$Point.getY:()I
    1286: aaload
    1287: aload         11
    1289: aload         11
    1291: invokevirtual #87                 // Method Day14$Point.getX:()I
    1294: iconst_m1
    1295: iadd
    1296: invokevirtual #93                 // Method Day14$Point.setX:(I)V
    1299: aload         11
    1301: invokevirtual #87                 // Method Day14$Point.getX:()I
    1304: ldc           #173                // String o
    1306: aastore
    1307: goto          1159
    1310: aload_0
    1311: aload         7
    1313: aload         11
    1315: invokevirtual #90                 // Method Day14$Point.getY:()I
    1318: iconst_1
    1319: iadd
    1320: aload         11
    1322: invokevirtual #87                 // Method Day14$Point.getX:()I
    1325: iconst_1
    1326: iadd
    1327: invokespecial #168                // Method ifIsEmpty:([[Ljava/lang/String;II)Z
    1330: ifeq          1392
    1333: aload         7
    1335: aload         11
    1337: invokevirtual #90                 // Method Day14$Point.getY:()I
    1340: aaload
    1341: aload         11
    1343: invokevirtual #87                 // Method Day14$Point.getX:()I
    1346: ldc           #118                // String .
    1348: aastore
    1349: aload         7
    1351: aload         11
    1353: aload         11
    1355: invokevirtual #90                 // Method Day14$Point.getY:()I
    1358: iconst_1
    1359: iadd
    1360: invokevirtual #171                // Method Day14$Point.setY:(I)V
    1363: aload         11
    1365: invokevirtual #90                 // Method Day14$Point.getY:()I
    1368: aaload
    1369: aload         11
    1371: aload         11
    1373: invokevirtual #87                 // Method Day14$Point.getX:()I
    1376: iconst_1
    1377: iadd
    1378: invokevirtual #93                 // Method Day14$Point.setX:(I)V
    1381: aload         11
    1383: invokevirtual #87                 // Method Day14$Point.getX:()I
    1386: ldc           #173                // String o
    1388: aastore
    1389: goto          1159
    1392: aload         9
    1394: aload         11
    1396: invokeinterface #174,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
    1401: pop
    1402: aload         11
    1404: invokevirtual #90                 // Method Day14$Point.getY:()I
    1407: ifne          1430
    1410: aload         7
    1412: iconst_0
    1413: aaload
    1414: aload         11
    1416: invokevirtual #87                 // Method Day14$Point.getX:()I
    1419: ldc           #173                // String o
    1421: aastore
    1422: new           #16                 // class java/lang/ArrayIndexOutOfBoundsException
    1425: dup
    1426: invokespecial #239                // Method java/lang/ArrayIndexOutOfBoundsException."<init>":()V
    1429: athrow
    1430: goto          1433
    1433: iinc          10, -1
    1436: goto          1139
    1439: aload         8
    1441: aload         9
    1443: checkcast     #39                 // class java/util/Collection
    1446: invokeinterface #178,  2          // InterfaceMethod java/util/List.removeAll:(Ljava/util/Collection;)Z
    1451: pop
    1452: goto          1460
    1455: astore        11
    1457: goto          1482
    1460: aload         8
    1462: new           #67                 // class Day14$Point
    1465: dup
    1466: sipush        500
    1469: iconst_0
    1470: invokespecial #156                // Method Day14$Point."<init>":(II)V
    1473: invokeinterface #174,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
    1478: pop
    1479: goto          1130
    1482: aload         9
    1484: invokeinterface #181,  1          // InterfaceMethod java/util/List.size:()I
    1489: ireturn
    Exception table:
       from    to  target type
        1131  1452  1455   Class java/lang/ArrayIndexOutOfBoundsException

  private final boolean ifIsEmpty(java.lang.String[][], int, int);
    Code:
       0: aload_1
       1: iload_2
       2: aaload
       3: iload_3
       4: aaload
       5: ldc           #118                // String .
       7: invokestatic  #251                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      10: ireturn

  static boolean ifIsEmpty$default(Day14$Companion, java.lang.String[][], int, int, int, java.lang.Object);
    Code:
       0: iload         4
       2: iconst_2
       3: iand
       4: ifeq          9
       7: iconst_0
       8: istore_2
       9: iload         4
      11: iconst_4
      12: iand
      13: ifeq          18
      16: iconst_0
      17: istore_3
      18: aload_0
      19: aload_1
      20: iload_2
      21: iload_3
      22: invokespecial #168                // Method ifIsEmpty:([[Ljava/lang/String;II)Z
      25: ireturn

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

Compiled from "Day14.kt"
public final class Day14 {
  public static final Day14$Companion Companion;

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

  static {};
    Code:
       0: new           #13                 // class Day14$Companion
       3: dup
       4: aconst_null
       5: invokespecial #16                 // Method Day14$Companion."<init>":(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
       8: putstatic     #20                 // Field Companion:LDay14$Companion;
      11: return
}

Compiled from "Day14.kt"
public final class Day14$Line {
  private final Day14$Point start;

  private final Day14$Point end;

  public Day14$Line(Day14$Point, Day14$Point);
    Code:
       0: aload_1
       1: ldc           #9                  // String start
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #17                 // String end
       9: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: aload_0
      13: invokespecial #20                 // Method java/lang/Object."<init>":()V
      16: aload_0
      17: aload_1
      18: putfield      #23                 // Field start:LDay14$Point;
      21: aload_0
      22: aload_2
      23: putfield      #25                 // Field end:LDay14$Point;
      26: return

  public final Day14$Point getStart();
    Code:
       0: aload_0
       1: getfield      #23                 // Field start:LDay14$Point;
       4: areturn

  public final Day14$Point getEnd();
    Code:
       0: aload_0
       1: getfield      #25                 // Field end:LDay14$Point;
       4: areturn

  public final Day14$Point component1();
    Code:
       0: aload_0
       1: getfield      #23                 // Field start:LDay14$Point;
       4: areturn

  public final Day14$Point component2();
    Code:
       0: aload_0
       1: getfield      #25                 // Field end:LDay14$Point;
       4: areturn

  public final Day14$Line copy(Day14$Point, Day14$Point);
    Code:
       0: aload_1
       1: ldc           #9                  // String start
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #17                 // String end
       9: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: new           #2                  // class Day14$Line
      15: dup
      16: aload_1
      17: aload_2
      18: invokespecial #36                 // Method "<init>":(LDay14$Point;LDay14$Point;)V
      21: areturn

  public static Day14$Line copy$default(Day14$Line, Day14$Point, Day14$Point, int, java.lang.Object);
    Code:
       0: iload_3
       1: iconst_1
       2: iand
       3: ifeq          11
       6: aload_0
       7: getfield      #23                 // Field start:LDay14$Point;
      10: astore_1
      11: iload_3
      12: iconst_2
      13: iand
      14: ifeq          22
      17: aload_0
      18: getfield      #25                 // Field end:LDay14$Point;
      21: astore_2
      22: aload_0
      23: aload_1
      24: aload_2
      25: invokevirtual #40                 // Method copy:(LDay14$Point;LDay14$Point;)LDay14$Line;
      28: areturn

  public java.lang.String toString();
    Code:
       0: new           #44                 // class java/lang/StringBuilder
       3: dup
       4: invokespecial #45                 // Method java/lang/StringBuilder."<init>":()V
       7: ldc           #47                 // String Line(start=
       9: invokevirtual #51                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      12: aload_0
      13: getfield      #23                 // Field start:LDay14$Point;
      16: invokevirtual #54                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
      19: ldc           #56                 // String , end=
      21: invokevirtual #51                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      24: aload_0
      25: getfield      #25                 // Field end:LDay14$Point;
      28: invokevirtual #54                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
      31: bipush        41
      33: invokevirtual #59                 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      36: invokevirtual #61                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      39: areturn

  public int hashCode();
    Code:
       0: aload_0
       1: getfield      #23                 // Field start:LDay14$Point;
       4: invokevirtual #67                 // Method Day14$Point.hashCode:()I
       7: istore_1
       8: iload_1
       9: bipush        31
      11: imul
      12: aload_0
      13: getfield      #25                 // Field end:LDay14$Point;
      16: invokevirtual #67                 // Method Day14$Point.hashCode:()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 Day14$Line
      11: ifne          16
      14: iconst_0
      15: ireturn
      16: aload_1
      17: checkcast     #2                  // class Day14$Line
      20: astore_2
      21: aload_0
      22: getfield      #23                 // Field start:LDay14$Point;
      25: aload_2
      26: getfield      #23                 // Field start:LDay14$Point;
      29: invokestatic  #76                 // 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      #25                 // Field end:LDay14$Point;
      41: aload_2
      42: getfield      #25                 // Field end:LDay14$Point;
      45: invokestatic  #76                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      48: ifne          53
      51: iconst_0
      52: ireturn
      53: iconst_1
      54: ireturn
}