Exit Full View

Games Cupboard / build / js / node_modules / GamesCupboard-gamescupboard-common-js-legacy / kotlin / GamesCupboard-gamescupboard-common-js-legacy.js

(function (root, factory) {
  if (typeof define === 'function' && define.amd)
    define(['exports', 'kotlin', 'kotlinx-serialization-kotlinx-serialization-json-js-legacy', 'kotlinx-serialization-kotlinx-serialization-core-js-legacy', 'klock-root-klock-js-legacy'], factory);
  else if (typeof exports === 'object')
    factory(module.exports, require('kotlin'), require('kotlinx-serialization-kotlinx-serialization-json-js-legacy'), require('kotlinx-serialization-kotlinx-serialization-core-js-legacy'), require('klock-root-klock-js-legacy'));
  else {
    if (typeof kotlin === 'undefined') {
      throw new Error("Error loading module 'GamesCupboard-gamescupboard-common-js-legacy'. Its dependency 'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to 'GamesCupboard-gamescupboard-common-js-legacy'.");
    }
    if (typeof this['kotlinx-serialization-kotlinx-serialization-json-js-legacy'] === 'undefined') {
      throw new Error("Error loading module 'GamesCupboard-gamescupboard-common-js-legacy'. Its dependency 'kotlinx-serialization-kotlinx-serialization-json-js-legacy' was not found. Please, check whether 'kotlinx-serialization-kotlinx-serialization-json-js-legacy' is loaded prior to 'GamesCupboard-gamescupboard-common-js-legacy'.");
    }
    if (typeof this['kotlinx-serialization-kotlinx-serialization-core-js-legacy'] === 'undefined') {
      throw new Error("Error loading module 'GamesCupboard-gamescupboard-common-js-legacy'. Its dependency 'kotlinx-serialization-kotlinx-serialization-core-js-legacy' was not found. Please, check whether 'kotlinx-serialization-kotlinx-serialization-core-js-legacy' is loaded prior to 'GamesCupboard-gamescupboard-common-js-legacy'.");
    }
    if (typeof this['klock-root-klock-js-legacy'] === 'undefined') {
      throw new Error("Error loading module 'GamesCupboard-gamescupboard-common-js-legacy'. Its dependency 'klock-root-klock-js-legacy' was not found. Please, check whether 'klock-root-klock-js-legacy' is loaded prior to 'GamesCupboard-gamescupboard-common-js-legacy'.");
    }
    root['GamesCupboard-gamescupboard-common-js-legacy'] = factory(typeof this['GamesCupboard-gamescupboard-common-js-legacy'] === 'undefined' ? {} : this['GamesCupboard-gamescupboard-common-js-legacy'], kotlin, this['kotlinx-serialization-kotlinx-serialization-json-js-legacy'], this['kotlinx-serialization-kotlinx-serialization-core-js-legacy'], this['klock-root-klock-js-legacy']);
  }
}(this, function (_, Kotlin, $module$kotlinx_serialization_kotlinx_serialization_json_js_legacy, $module$kotlinx_serialization_kotlinx_serialization_core_js_legacy, $module$klock_root_klock_js_legacy) {
  'use strict';
  var $$importsForInline$$ = _.$$importsForInline$$ || (_.$$importsForInline$$ = {});
  var Json = $module$kotlinx_serialization_kotlinx_serialization_json_js_legacy.kotlinx.serialization.json.Json;
  var NullableSerializer = $module$kotlinx_serialization_kotlinx_serialization_core_js_legacy.kotlinx.serialization.internal.NullableSerializer;
  var Kind_OBJECT = Kotlin.Kind.OBJECT;
  var PluginGeneratedSerialDescriptor = $module$kotlinx_serialization_kotlinx_serialization_core_js_legacy.kotlinx.serialization.internal.PluginGeneratedSerialDescriptor;
  var getKClass = Kotlin.getKClass;
  var ObjectSerializer = $module$kotlinx_serialization_kotlinx_serialization_core_js_legacy.kotlinx.serialization.internal.ObjectSerializer;
  var SealedClassSerializer = $module$kotlinx_serialization_kotlinx_serialization_core_js_legacy.kotlinx.serialization.SealedClassSerializer;
  var DateTime = $module$klock_root_klock_js_legacy.com.soywiz.klock.DateTime;
  var equals = Kotlin.equals;
  var UnknownFieldException = $module$kotlinx_serialization_kotlinx_serialization_core_js_legacy.kotlinx.serialization.UnknownFieldException;
  var internal = $module$kotlinx_serialization_kotlinx_serialization_core_js_legacy.kotlinx.serialization.internal;
  var GeneratedSerializer = $module$kotlinx_serialization_kotlinx_serialization_core_js_legacy.kotlinx.serialization.internal.GeneratedSerializer;
  var MissingFieldException_init = $module$kotlinx_serialization_kotlinx_serialization_core_js_legacy.kotlinx.serialization.MissingFieldException_init_61zpoe$;
  var Kind_CLASS = Kotlin.Kind.CLASS;
  var createKType = Kotlin.createKType;
  var SerializerFactory = $module$kotlinx_serialization_kotlinx_serialization_core_js_legacy.kotlinx.serialization.internal.SerializerFactory;
  var ArrayListSerializer = $module$kotlinx_serialization_kotlinx_serialization_core_js_legacy.kotlinx.serialization.internal.ArrayListSerializer;
  var EnumDescriptor = $module$kotlinx_serialization_kotlinx_serialization_core_js_legacy.kotlinx.serialization.internal.EnumDescriptor;
  var Enum = Kotlin.kotlin.Enum;
  var throwISE = Kotlin.throwISE;
  var numberToInt = Kotlin.numberToInt;
  var serializer = $module$kotlinx_serialization_kotlinx_serialization_core_js_legacy.kotlinx.serialization.serializer_ca95z9$;
  var KSerializer = $module$kotlinx_serialization_kotlinx_serialization_core_js_legacy.kotlinx.serialization.KSerializer;
  var throwCCE = Kotlin.throwCCE;
  var emptyList = Kotlin.kotlin.collections.emptyList_287e2$;
  var listOf = Kotlin.kotlin.collections.listOf_mh5how$;
  var Kind_INTERFACE = Kotlin.Kind.INTERFACE;
  var Pair = Kotlin.kotlin.Pair;
  var LinkedHashMapSerializer = $module$kotlinx_serialization_kotlinx_serialization_core_js_legacy.kotlinx.serialization.internal.LinkedHashMapSerializer;
  var LinkedHashMap_init = Kotlin.kotlin.collections.LinkedHashMap_init_q3lmfv$;
  var EnumSerializer = $module$kotlinx_serialization_kotlinx_serialization_core_js_legacy.kotlinx.serialization.internal.EnumSerializer;
  var ArrayList_init = Kotlin.kotlin.collections.ArrayList_init_287e2$;
  var defineInlineFunction = Kotlin.defineInlineFunction;
  var wrapFunction = Kotlin.wrapFunction;
  NotInvited.prototype = Object.create(Message.prototype);
  NotInvited.prototype.constructor = NotInvited;
  GameInfo.prototype = Object.create(Message.prototype);
  GameInfo.prototype.constructor = GameInfo;
  ResetGame.prototype = Object.create(Message.prototype);
  ResetGame.prototype.constructor = ResetGame;
  PlayerJoined.prototype = Object.create(Message.prototype);
  PlayerJoined.prototype.constructor = PlayerJoined;
  PlayerLeft.prototype = Object.create(Message.prototype);
  PlayerLeft.prototype.constructor = PlayerLeft;
  RenamePlayer.prototype = Object.create(Message.prototype);
  RenamePlayer.prototype.constructor = RenamePlayer;
  AddObjects.prototype = Object.create(Message.prototype);
  AddObjects.prototype.constructor = AddObjects;
  RemoveObjects.prototype = Object.create(Message.prototype);
  RemoveObjects.prototype.constructor = RemoveObjects;
  ScaleObject.prototype = Object.create(Message.prototype);
  ScaleObject.prototype.constructor = ScaleObject;
  CycleText.prototype = Object.create(Message.prototype);
  CycleText.prototype.constructor = CycleText;
  ChangeImage.prototype = Object.create(Message.prototype);
  ChangeImage.prototype.constructor = ChangeImage;
  ChangeZOrder.prototype = Object.create(Enum.prototype);
  ChangeZOrder.prototype.constructor = ChangeZOrder;
  MoveObject.prototype = Object.create(Message.prototype);
  MoveObject.prototype.constructor = MoveObject;
  DragObject.prototype = Object.create(Message.prototype);
  DragObject.prototype.constructor = DragObject;
  ChangePrivacy.prototype = Object.create(Message.prototype);
  ChangePrivacy.prototype.constructor = ChangePrivacy;
  FaceUpOrDown.prototype = Object.create(Message.prototype);
  FaceUpOrDown.prototype.constructor = FaceUpOrDown;
  RunCommand.prototype = Object.create(Message.prototype);
  RunCommand.prototype.constructor = RunCommand;
  CommandOk.prototype = Object.create(Message.prototype);
  CommandOk.prototype.constructor = CommandOk;
  CommandError.prototype = Object.create(Message.prototype);
  CommandError.prototype.constructor = CommandError;
  ChatMessage.prototype = Object.create(Message.prototype);
  ChatMessage.prototype.constructor = ChatMessage;
  ScoreSheetData.prototype = Object.create(Message.prototype);
  ScoreSheetData.prototype.constructor = ScoreSheetData;
  HighlightMouse.prototype = Object.create(Message.prototype);
  HighlightMouse.prototype.constructor = HighlightMouse;
  AddBin.prototype = Object.create(Message.prototype);
  AddBin.prototype.constructor = AddBin;
  AddToBin.prototype = Object.create(Message.prototype);
  AddToBin.prototype.constructor = AddToBin;
  RestoreFromBin.prototype = Object.create(Message.prototype);
  RestoreFromBin.prototype.constructor = RestoreFromBin;
  RectangularSnapToGrid.prototype = Object.create(SnapToGrid.prototype);
  RectangularSnapToGrid.prototype.constructor = RectangularSnapToGrid;
  HexSnap.prototype = Object.create(SnapToGrid.prototype);
  HexSnap.prototype.constructor = HexSnap;
  AreaType.prototype = Object.create(Enum.prototype);
  AreaType.prototype.constructor = AreaType;
  TextStyle.prototype = Object.create(Enum.prototype);
  TextStyle.prototype.constructor = TextStyle;
  var json;
  function Packet(m, time) {
    Packet$Companion_getInstance();
    if (time === void 0)
      time = DateTime.Companion.nowUnixLong();
    this.m = m;
    this.time = time;
  }
  function Packet$Companion() {
    Packet$Companion_instance = this;
  }
  Packet$Companion.prototype.serializer = function () {
    return Packet$$serializer_getInstance();
  };
  Packet$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var Packet$Companion_instance = null;
  function Packet$Companion_getInstance() {
    if (Packet$Companion_instance === null) {
      new Packet$Companion();
    }
    return Packet$Companion_instance;
  }
  function Packet$$serializer() {
    this.descriptor_p44tgt$_0 = new PluginGeneratedSerialDescriptor('Packet', this, 2);
    this.descriptor.addElement_ivxn3r$('m', false);
    this.descriptor.addElement_ivxn3r$('time', true);
    Packet$$serializer_instance = this;
  }
  Object.defineProperty(Packet$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_p44tgt$_0;
    }
  });
  Packet$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 0, new SealedClassSerializer('Message', getKClass(Message), [getKClass(AddBin), getKClass(AddObjects), getKClass(AddToBin), getKClass(ChangeImage), getKClass(ChangePrivacy), getKClass(ChatMessage), getKClass(CommandError), getKClass(CommandOk), getKClass(CycleText), getKClass(DragObject), getKClass(FaceUpOrDown), getKClass(GameInfo), getKClass(HighlightMouse), getKClass(MoveObject), getKClass(NotInvited), getKClass(PlayerJoined), getKClass(PlayerLeft), getKClass(RemoveObjects), getKClass(RenamePlayer), getKClass(ResetGame), getKClass(RestoreFromBin), getKClass(RunCommand), getKClass(ScaleObject), getKClass(ScoreSheetData)], [new ObjectSerializer('AddBin', AddBin_getInstance()), AddObjects$$serializer_getInstance(), AddToBin$$serializer_getInstance(), ChangeImage$$serializer_getInstance(), ChangePrivacy$$serializer_getInstance(), ChatMessage$$serializer_getInstance(), CommandError$$serializer_getInstance(), new ObjectSerializer('CommandOk', CommandOk_getInstance()), CycleText$$serializer_getInstance(), DragObject$$serializer_getInstance(), FaceUpOrDown$$serializer_getInstance(), GameInfo$$serializer_getInstance(), HighlightMouse$$serializer_getInstance(), MoveObject$$serializer_getInstance(), new ObjectSerializer('NotInvited', NotInvited_getInstance()), PlayerJoined$$serializer_getInstance(), PlayerLeft$$serializer_getInstance(), RemoveObjects$$serializer_getInstance(), RenamePlayer$$serializer_getInstance(), ResetGame$$serializer_getInstance(), new ObjectSerializer('RestoreFromBin', RestoreFromBin_getInstance()), RunCommand$$serializer_getInstance(), ScaleObject$$serializer_getInstance(), ScoreSheetData$$serializer_getInstance()]), value.m);
    if (!equals(value.time, DateTime.Companion.nowUnixLong()) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 1))
      output.encodeLongElement_j0o2mv$(this.descriptor, 1, value.time);
    output.endStructure_24f42q$(this.descriptor);
  };
  Packet$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeSerializableElement_12e8id$(this.descriptor, 0, new SealedClassSerializer('Message', getKClass(Message), [getKClass(AddBin), getKClass(AddObjects), getKClass(AddToBin), getKClass(ChangeImage), getKClass(ChangePrivacy), getKClass(ChatMessage), getKClass(CommandError), getKClass(CommandOk), getKClass(CycleText), getKClass(DragObject), getKClass(FaceUpOrDown), getKClass(GameInfo), getKClass(HighlightMouse), getKClass(MoveObject), getKClass(NotInvited), getKClass(PlayerJoined), getKClass(PlayerLeft), getKClass(RemoveObjects), getKClass(RenamePlayer), getKClass(ResetGame), getKClass(RestoreFromBin), getKClass(RunCommand), getKClass(ScaleObject), getKClass(ScoreSheetData)], [new ObjectSerializer('AddBin', AddBin_getInstance()), AddObjects$$serializer_getInstance(), AddToBin$$serializer_getInstance(), ChangeImage$$serializer_getInstance(), ChangePrivacy$$serializer_getInstance(), ChatMessage$$serializer_getInstance(), CommandError$$serializer_getInstance(), new ObjectSerializer('CommandOk', CommandOk_getInstance()), CycleText$$serializer_getInstance(), DragObject$$serializer_getInstance(), FaceUpOrDown$$serializer_getInstance(), GameInfo$$serializer_getInstance(), HighlightMouse$$serializer_getInstance(), MoveObject$$serializer_getInstance(), new ObjectSerializer('NotInvited', NotInvited_getInstance()), PlayerJoined$$serializer_getInstance(), PlayerLeft$$serializer_getInstance(), RemoveObjects$$serializer_getInstance(), RenamePlayer$$serializer_getInstance(), ResetGame$$serializer_getInstance(), new ObjectSerializer('RestoreFromBin', RestoreFromBin_getInstance()), RunCommand$$serializer_getInstance(), ScaleObject$$serializer_getInstance(), ScoreSheetData$$serializer_getInstance()]), local0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeLongElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return Packet_init(bitMask0, local0, local1, null);
  };
  Packet$$serializer.prototype.childSerializers = function () {
    return [new SealedClassSerializer('Message', getKClass(Message), [getKClass(AddBin), getKClass(AddObjects), getKClass(AddToBin), getKClass(ChangeImage), getKClass(ChangePrivacy), getKClass(ChatMessage), getKClass(CommandError), getKClass(CommandOk), getKClass(CycleText), getKClass(DragObject), getKClass(FaceUpOrDown), getKClass(GameInfo), getKClass(HighlightMouse), getKClass(MoveObject), getKClass(NotInvited), getKClass(PlayerJoined), getKClass(PlayerLeft), getKClass(RemoveObjects), getKClass(RenamePlayer), getKClass(ResetGame), getKClass(RestoreFromBin), getKClass(RunCommand), getKClass(ScaleObject), getKClass(ScoreSheetData)], [new ObjectSerializer('AddBin', AddBin_getInstance()), AddObjects$$serializer_getInstance(), AddToBin$$serializer_getInstance(), ChangeImage$$serializer_getInstance(), ChangePrivacy$$serializer_getInstance(), ChatMessage$$serializer_getInstance(), CommandError$$serializer_getInstance(), new ObjectSerializer('CommandOk', CommandOk_getInstance()), CycleText$$serializer_getInstance(), DragObject$$serializer_getInstance(), FaceUpOrDown$$serializer_getInstance(), GameInfo$$serializer_getInstance(), HighlightMouse$$serializer_getInstance(), MoveObject$$serializer_getInstance(), new ObjectSerializer('NotInvited', NotInvited_getInstance()), PlayerJoined$$serializer_getInstance(), PlayerLeft$$serializer_getInstance(), RemoveObjects$$serializer_getInstance(), RenamePlayer$$serializer_getInstance(), ResetGame$$serializer_getInstance(), new ObjectSerializer('RestoreFromBin', RestoreFromBin_getInstance()), RunCommand$$serializer_getInstance(), ScaleObject$$serializer_getInstance(), ScoreSheetData$$serializer_getInstance()]), internal.LongSerializer];
  };
  Packet$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var Packet$$serializer_instance = null;
  function Packet$$serializer_getInstance() {
    if (Packet$$serializer_instance === null) {
      new Packet$$serializer();
    }
    return Packet$$serializer_instance;
  }
  function Packet_init(seen1, m, time, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(Packet.prototype);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('m');
    else
      $this.m = m;
    if ((seen1 & 2) === 0)
      $this.time = DateTime.Companion.nowUnixLong();
    else
      $this.time = time;
    return $this;
  }
  Packet.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'Packet',
    interfaces: []
  };
  Packet.prototype.component1 = function () {
    return this.m;
  };
  Packet.prototype.component2 = function () {
    return this.time;
  };
  Packet.prototype.copy_54xtcs$ = function (m, time) {
    return new Packet(m === void 0 ? this.m : m, time === void 0 ? this.time : time);
  };
  Packet.prototype.toString = function () {
    return 'Packet(m=' + Kotlin.toString(this.m) + (', time=' + Kotlin.toString(this.time)) + ')';
  };
  Packet.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.m) | 0;
    result = result * 31 + Kotlin.hashCode(this.time) | 0;
    return result;
  };
  Packet.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.m, other.m) && Kotlin.equals(this.time, other.time)))));
  };
  function Message() {
    Message$Companion_getInstance();
  }
  Message.prototype.toJsonPacket = function () {
    var $receiver = json;
    var value = new Packet(this);
    var tmp$;
    return $receiver.encodeToString_tf03ej$(Kotlin.isType(tmp$ = serializer($receiver.serializersModule, createKType(getKClass(Packet), [], false)), KSerializer) ? tmp$ : throwCCE(), value);
  };
  function Message$Companion() {
    Message$Companion_instance = this;
  }
  Message$Companion.prototype.serializer = function () {
    return new SealedClassSerializer('Message', getKClass(Message), [getKClass(AddBin), getKClass(AddObjects), getKClass(AddToBin), getKClass(ChangeImage), getKClass(ChangePrivacy), getKClass(ChatMessage), getKClass(CommandError), getKClass(CommandOk), getKClass(CycleText), getKClass(DragObject), getKClass(FaceUpOrDown), getKClass(GameInfo), getKClass(HighlightMouse), getKClass(MoveObject), getKClass(NotInvited), getKClass(PlayerJoined), getKClass(PlayerLeft), getKClass(RemoveObjects), getKClass(RenamePlayer), getKClass(ResetGame), getKClass(RestoreFromBin), getKClass(RunCommand), getKClass(ScaleObject), getKClass(ScoreSheetData)], [new ObjectSerializer('AddBin', AddBin_getInstance()), AddObjects$$serializer_getInstance(), AddToBin$$serializer_getInstance(), ChangeImage$$serializer_getInstance(), ChangePrivacy$$serializer_getInstance(), ChatMessage$$serializer_getInstance(), CommandError$$serializer_getInstance(), new ObjectSerializer('CommandOk', CommandOk_getInstance()), CycleText$$serializer_getInstance(), DragObject$$serializer_getInstance(), FaceUpOrDown$$serializer_getInstance(), GameInfo$$serializer_getInstance(), HighlightMouse$$serializer_getInstance(), MoveObject$$serializer_getInstance(), new ObjectSerializer('NotInvited', NotInvited_getInstance()), PlayerJoined$$serializer_getInstance(), PlayerLeft$$serializer_getInstance(), RemoveObjects$$serializer_getInstance(), RenamePlayer$$serializer_getInstance(), ResetGame$$serializer_getInstance(), new ObjectSerializer('RestoreFromBin', RestoreFromBin_getInstance()), RunCommand$$serializer_getInstance(), ScaleObject$$serializer_getInstance(), ScoreSheetData$$serializer_getInstance()]);
  };
  Message$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: [SerializerFactory]
  };
  var Message$Companion_instance = null;
  function Message$Companion_getInstance() {
    if (Message$Companion_instance === null) {
      new Message$Companion();
    }
    return Message$Companion_instance;
  }
  function Message_init(seen1, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(Message.prototype);
    return $this;
  }
  Message.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'Message',
    interfaces: []
  };
  function NotInvited() {
    NotInvited_instance = this;
    Message.call(this);
  }
  NotInvited.prototype.serializer = function () {
    return new ObjectSerializer('NotInvited', NotInvited_getInstance());
  };
  NotInvited.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'NotInvited',
    interfaces: [SerializerFactory, Message]
  };
  var NotInvited_instance = null;
  function NotInvited_getInstance() {
    if (NotInvited_instance === null) {
      new NotInvited();
    }
    return NotInvited_instance;
  }
  function GameInfo(p, seatCount, otherPlayers, gameTypeLabel, variationLabel, gameLabel, bgColor, grids, specialAreas, specialPoints, commands, commandPrototypes, backgroundObjects, playingObjects, foregroundObjects, rules, buttons, mirrorX, mirrorY, playerColors, scoreSheetHasBidColumn) {
    GameInfo$Companion_getInstance();
    Message.call(this);
    this.p = p;
    this.seatCount = seatCount;
    this.otherPlayers = otherPlayers;
    this.gameTypeLabel = gameTypeLabel;
    this.variationLabel = variationLabel;
    this.gameLabel = gameLabel;
    this.bgColor = bgColor;
    this.grids = grids;
    this.specialAreas = specialAreas;
    this.specialPoints = specialPoints;
    this.commands = commands;
    this.commandPrototypes = commandPrototypes;
    this.backgroundObjects = backgroundObjects;
    this.playingObjects = playingObjects;
    this.foregroundObjects = foregroundObjects;
    this.rules = rules;
    this.buttons = buttons;
    this.mirrorX = mirrorX;
    this.mirrorY = mirrorY;
    this.playerColors = playerColors;
    this.scoreSheetHasBidColumn = scoreSheetHasBidColumn;
  }
  function GameInfo$Companion() {
    GameInfo$Companion_instance = this;
  }
  GameInfo$Companion.prototype.serializer = function () {
    return GameInfo$$serializer_getInstance();
  };
  GameInfo$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var GameInfo$Companion_instance = null;
  function GameInfo$Companion_getInstance() {
    if (GameInfo$Companion_instance === null) {
      new GameInfo$Companion();
    }
    return GameInfo$Companion_instance;
  }
  function GameInfo$$serializer() {
    this.descriptor_t05z6t$_0 = new PluginGeneratedSerialDescriptor('GameInfo', this, 21);
    this.descriptor.addElement_ivxn3r$('p', false);
    this.descriptor.addElement_ivxn3r$('seatCount', false);
    this.descriptor.addElement_ivxn3r$('otherPlayers', false);
    this.descriptor.addElement_ivxn3r$('gameTypeLabel', false);
    this.descriptor.addElement_ivxn3r$('variationLabel', false);
    this.descriptor.addElement_ivxn3r$('gameLabel', false);
    this.descriptor.addElement_ivxn3r$('bgColor', false);
    this.descriptor.addElement_ivxn3r$('grids', false);
    this.descriptor.addElement_ivxn3r$('specialAreas', false);
    this.descriptor.addElement_ivxn3r$('specialPoints', false);
    this.descriptor.addElement_ivxn3r$('commands', false);
    this.descriptor.addElement_ivxn3r$('commandPrototypes', false);
    this.descriptor.addElement_ivxn3r$('backgroundObjects', false);
    this.descriptor.addElement_ivxn3r$('playingObjects', false);
    this.descriptor.addElement_ivxn3r$('foregroundObjects', false);
    this.descriptor.addElement_ivxn3r$('rules', false);
    this.descriptor.addElement_ivxn3r$('buttons', false);
    this.descriptor.addElement_ivxn3r$('mirrorX', false);
    this.descriptor.addElement_ivxn3r$('mirrorY', false);
    this.descriptor.addElement_ivxn3r$('playerColors', false);
    this.descriptor.addElement_ivxn3r$('scoreSheetHasBidColumn', false);
    GameInfo$$serializer_instance = this;
  }
  Object.defineProperty(GameInfo$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_t05z6t$_0;
    }
  });
  GameInfo$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 0, Player$$serializer_getInstance(), value.p);
    output.encodeIntElement_ptg7oe$(this.descriptor, 1, value.seatCount);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 2, new ArrayListSerializer(Player$$serializer_getInstance()), value.otherPlayers);
    output.encodeStringElement_iij8qq$(this.descriptor, 3, value.gameTypeLabel);
    output.encodeStringElement_iij8qq$(this.descriptor, 4, value.variationLabel);
    output.encodeStringElement_iij8qq$(this.descriptor, 5, value.gameLabel);
    output.encodeStringElement_iij8qq$(this.descriptor, 6, value.bgColor);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 7, new ArrayListSerializer(Grid$$serializer_getInstance()), value.grids);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 8, new ArrayListSerializer(SpecialArea$$serializer_getInstance()), value.specialAreas);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 9, new ArrayListSerializer(SpecialPoint$$serializer_getInstance()), value.specialPoints);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 10, new ArrayListSerializer(CommandInfo$$serializer_getInstance()), value.commands);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 11, new ArrayListSerializer(CommandPrototype$$serializer_getInstance()), value.commandPrototypes);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 12, new ArrayListSerializer(new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.GameObject', getKClass(GameObject), [getKClass(Avatar), getKClass(FlippableImageObject), getKClass(GridImageObject), getKClass(ImageObject), getKClass(MultipleGridImageObject), getKClass(PieceAtPointCounter), getKClass(FlippableImageObject), getKClass(ImageObject), getKClass(TextObject)], [Avatar$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), GridImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), MultipleGridImageObject$$serializer_getInstance(), PieceAtPointCounter$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), TextObject$$serializer_getInstance()])), value.backgroundObjects);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 13, new ArrayListSerializer(new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.GameObject', getKClass(GameObject), [getKClass(Avatar), getKClass(FlippableImageObject), getKClass(GridImageObject), getKClass(ImageObject), getKClass(MultipleGridImageObject), getKClass(PieceAtPointCounter), getKClass(FlippableImageObject), getKClass(ImageObject), getKClass(TextObject)], [Avatar$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), GridImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), MultipleGridImageObject$$serializer_getInstance(), PieceAtPointCounter$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), TextObject$$serializer_getInstance()])), value.playingObjects);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 14, new ArrayListSerializer(new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.GameObject', getKClass(GameObject), [getKClass(Avatar), getKClass(FlippableImageObject), getKClass(GridImageObject), getKClass(ImageObject), getKClass(MultipleGridImageObject), getKClass(PieceAtPointCounter), getKClass(FlippableImageObject), getKClass(ImageObject), getKClass(TextObject)], [Avatar$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), GridImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), MultipleGridImageObject$$serializer_getInstance(), PieceAtPointCounter$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), TextObject$$serializer_getInstance()])), value.foregroundObjects);
    output.encodeStringElement_iij8qq$(this.descriptor, 15, value.rules);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 16, new ArrayListSerializer(CommandButton$$serializer_getInstance()), value.buttons);
    output.encodeIntElement_ptg7oe$(this.descriptor, 17, value.mirrorX);
    output.encodeIntElement_ptg7oe$(this.descriptor, 18, value.mirrorY);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 19, new ArrayListSerializer(internal.StringSerializer), value.playerColors);
    output.encodeBooleanElement_qh7jdn$(this.descriptor, 20, value.scoreSheetHasBidColumn);
    output.endStructure_24f42q$(this.descriptor);
  };
  GameInfo$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3
    , local4
    , local5
    , local6
    , local7
    , local8
    , local9
    , local10
    , local11
    , local12
    , local13
    , local14
    , local15
    , local16
    , local17
    , local18
    , local19
    , local20;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeSerializableElement_12e8id$(this.descriptor, 0, Player$$serializer_getInstance(), local0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeIntElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeSerializableElement_12e8id$(this.descriptor, 2, new ArrayListSerializer(Player$$serializer_getInstance()), local2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeStringElement_szpzho$(this.descriptor, 3);
          bitMask0 |= 8;
          break;
        case 4:
          local4 = input.decodeStringElement_szpzho$(this.descriptor, 4);
          bitMask0 |= 16;
          break;
        case 5:
          local5 = input.decodeStringElement_szpzho$(this.descriptor, 5);
          bitMask0 |= 32;
          break;
        case 6:
          local6 = input.decodeStringElement_szpzho$(this.descriptor, 6);
          bitMask0 |= 64;
          break;
        case 7:
          local7 = input.decodeSerializableElement_12e8id$(this.descriptor, 7, new ArrayListSerializer(Grid$$serializer_getInstance()), local7);
          bitMask0 |= 128;
          break;
        case 8:
          local8 = input.decodeSerializableElement_12e8id$(this.descriptor, 8, new ArrayListSerializer(SpecialArea$$serializer_getInstance()), local8);
          bitMask0 |= 256;
          break;
        case 9:
          local9 = input.decodeSerializableElement_12e8id$(this.descriptor, 9, new ArrayListSerializer(SpecialPoint$$serializer_getInstance()), local9);
          bitMask0 |= 512;
          break;
        case 10:
          local10 = input.decodeSerializableElement_12e8id$(this.descriptor, 10, new ArrayListSerializer(CommandInfo$$serializer_getInstance()), local10);
          bitMask0 |= 1024;
          break;
        case 11:
          local11 = input.decodeSerializableElement_12e8id$(this.descriptor, 11, new ArrayListSerializer(CommandPrototype$$serializer_getInstance()), local11);
          bitMask0 |= 2048;
          break;
        case 12:
          local12 = input.decodeSerializableElement_12e8id$(this.descriptor, 12, new ArrayListSerializer(new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.GameObject', getKClass(GameObject), [getKClass(Avatar), getKClass(FlippableImageObject), getKClass(GridImageObject), getKClass(ImageObject), getKClass(MultipleGridImageObject), getKClass(PieceAtPointCounter), getKClass(FlippableImageObject), getKClass(ImageObject), getKClass(TextObject)], [Avatar$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), GridImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), MultipleGridImageObject$$serializer_getInstance(), PieceAtPointCounter$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), TextObject$$serializer_getInstance()])), local12);
          bitMask0 |= 4096;
          break;
        case 13:
          local13 = input.decodeSerializableElement_12e8id$(this.descriptor, 13, new ArrayListSerializer(new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.GameObject', getKClass(GameObject), [getKClass(Avatar), getKClass(FlippableImageObject), getKClass(GridImageObject), getKClass(ImageObject), getKClass(MultipleGridImageObject), getKClass(PieceAtPointCounter), getKClass(FlippableImageObject), getKClass(ImageObject), getKClass(TextObject)], [Avatar$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), GridImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), MultipleGridImageObject$$serializer_getInstance(), PieceAtPointCounter$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), TextObject$$serializer_getInstance()])), local13);
          bitMask0 |= 8192;
          break;
        case 14:
          local14 = input.decodeSerializableElement_12e8id$(this.descriptor, 14, new ArrayListSerializer(new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.GameObject', getKClass(GameObject), [getKClass(Avatar), getKClass(FlippableImageObject), getKClass(GridImageObject), getKClass(ImageObject), getKClass(MultipleGridImageObject), getKClass(PieceAtPointCounter), getKClass(FlippableImageObject), getKClass(ImageObject), getKClass(TextObject)], [Avatar$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), GridImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), MultipleGridImageObject$$serializer_getInstance(), PieceAtPointCounter$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), TextObject$$serializer_getInstance()])), local14);
          bitMask0 |= 16384;
          break;
        case 15:
          local15 = input.decodeStringElement_szpzho$(this.descriptor, 15);
          bitMask0 |= 32768;
          break;
        case 16:
          local16 = input.decodeSerializableElement_12e8id$(this.descriptor, 16, new ArrayListSerializer(CommandButton$$serializer_getInstance()), local16);
          bitMask0 |= 65536;
          break;
        case 17:
          local17 = input.decodeIntElement_szpzho$(this.descriptor, 17);
          bitMask0 |= 131072;
          break;
        case 18:
          local18 = input.decodeIntElement_szpzho$(this.descriptor, 18);
          bitMask0 |= 262144;
          break;
        case 19:
          local19 = input.decodeSerializableElement_12e8id$(this.descriptor, 19, new ArrayListSerializer(internal.StringSerializer), local19);
          bitMask0 |= 524288;
          break;
        case 20:
          local20 = input.decodeBooleanElement_szpzho$(this.descriptor, 20);
          bitMask0 |= 1048576;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return GameInfo_init(bitMask0, local0, local1, local2, local3, local4, local5, local6, local7, local8, local9, local10, local11, local12, local13, local14, local15, local16, local17, local18, local19, local20, null);
  };
  GameInfo$$serializer.prototype.childSerializers = function () {
    return [Player$$serializer_getInstance(), internal.IntSerializer, new ArrayListSerializer(Player$$serializer_getInstance()), internal.StringSerializer, internal.StringSerializer, internal.StringSerializer, internal.StringSerializer, new ArrayListSerializer(Grid$$serializer_getInstance()), new ArrayListSerializer(SpecialArea$$serializer_getInstance()), new ArrayListSerializer(SpecialPoint$$serializer_getInstance()), new ArrayListSerializer(CommandInfo$$serializer_getInstance()), new ArrayListSerializer(CommandPrototype$$serializer_getInstance()), new ArrayListSerializer(new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.GameObject', getKClass(GameObject), [getKClass(Avatar), getKClass(FlippableImageObject), getKClass(GridImageObject), getKClass(ImageObject), getKClass(MultipleGridImageObject), getKClass(PieceAtPointCounter), getKClass(FlippableImageObject), getKClass(ImageObject), getKClass(TextObject)], [Avatar$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), GridImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), MultipleGridImageObject$$serializer_getInstance(), PieceAtPointCounter$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), TextObject$$serializer_getInstance()])), new ArrayListSerializer(new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.GameObject', getKClass(GameObject), [getKClass(Avatar), getKClass(FlippableImageObject), getKClass(GridImageObject), getKClass(ImageObject), getKClass(MultipleGridImageObject), getKClass(PieceAtPointCounter), getKClass(FlippableImageObject), getKClass(ImageObject), getKClass(TextObject)], [Avatar$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), GridImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), MultipleGridImageObject$$serializer_getInstance(), PieceAtPointCounter$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), TextObject$$serializer_getInstance()])), new ArrayListSerializer(new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.GameObject', getKClass(GameObject), [getKClass(Avatar), getKClass(FlippableImageObject), getKClass(GridImageObject), getKClass(ImageObject), getKClass(MultipleGridImageObject), getKClass(PieceAtPointCounter), getKClass(FlippableImageObject), getKClass(ImageObject), getKClass(TextObject)], [Avatar$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), GridImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), MultipleGridImageObject$$serializer_getInstance(), PieceAtPointCounter$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), TextObject$$serializer_getInstance()])), internal.StringSerializer, new ArrayListSerializer(CommandButton$$serializer_getInstance()), internal.IntSerializer, internal.IntSerializer, new ArrayListSerializer(internal.StringSerializer), internal.BooleanSerializer];
  };
  GameInfo$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var GameInfo$$serializer_instance = null;
  function GameInfo$$serializer_getInstance() {
    if (GameInfo$$serializer_instance === null) {
      new GameInfo$$serializer();
    }
    return GameInfo$$serializer_instance;
  }
  function GameInfo_init(seen1, p, seatCount, otherPlayers, gameTypeLabel, variationLabel, gameLabel, bgColor, grids, specialAreas, specialPoints, commands, commandPrototypes, backgroundObjects, playingObjects, foregroundObjects, rules, buttons, mirrorX, mirrorY, playerColors, scoreSheetHasBidColumn, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(GameInfo.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('p');
    else
      $this.p = p;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('seatCount');
    else
      $this.seatCount = seatCount;
    if ((seen1 & 4) === 0)
      throw MissingFieldException_init('otherPlayers');
    else
      $this.otherPlayers = otherPlayers;
    if ((seen1 & 8) === 0)
      throw MissingFieldException_init('gameTypeLabel');
    else
      $this.gameTypeLabel = gameTypeLabel;
    if ((seen1 & 16) === 0)
      throw MissingFieldException_init('variationLabel');
    else
      $this.variationLabel = variationLabel;
    if ((seen1 & 32) === 0)
      throw MissingFieldException_init('gameLabel');
    else
      $this.gameLabel = gameLabel;
    if ((seen1 & 64) === 0)
      throw MissingFieldException_init('bgColor');
    else
      $this.bgColor = bgColor;
    if ((seen1 & 128) === 0)
      throw MissingFieldException_init('grids');
    else
      $this.grids = grids;
    if ((seen1 & 256) === 0)
      throw MissingFieldException_init('specialAreas');
    else
      $this.specialAreas = specialAreas;
    if ((seen1 & 512) === 0)
      throw MissingFieldException_init('specialPoints');
    else
      $this.specialPoints = specialPoints;
    if ((seen1 & 1024) === 0)
      throw MissingFieldException_init('commands');
    else
      $this.commands = commands;
    if ((seen1 & 2048) === 0)
      throw MissingFieldException_init('commandPrototypes');
    else
      $this.commandPrototypes = commandPrototypes;
    if ((seen1 & 4096) === 0)
      throw MissingFieldException_init('backgroundObjects');
    else
      $this.backgroundObjects = backgroundObjects;
    if ((seen1 & 8192) === 0)
      throw MissingFieldException_init('playingObjects');
    else
      $this.playingObjects = playingObjects;
    if ((seen1 & 16384) === 0)
      throw MissingFieldException_init('foregroundObjects');
    else
      $this.foregroundObjects = foregroundObjects;
    if ((seen1 & 32768) === 0)
      throw MissingFieldException_init('rules');
    else
      $this.rules = rules;
    if ((seen1 & 65536) === 0)
      throw MissingFieldException_init('buttons');
    else
      $this.buttons = buttons;
    if ((seen1 & 131072) === 0)
      throw MissingFieldException_init('mirrorX');
    else
      $this.mirrorX = mirrorX;
    if ((seen1 & 262144) === 0)
      throw MissingFieldException_init('mirrorY');
    else
      $this.mirrorY = mirrorY;
    if ((seen1 & 524288) === 0)
      throw MissingFieldException_init('playerColors');
    else
      $this.playerColors = playerColors;
    if ((seen1 & 1048576) === 0)
      throw MissingFieldException_init('scoreSheetHasBidColumn');
    else
      $this.scoreSheetHasBidColumn = scoreSheetHasBidColumn;
    return $this;
  }
  GameInfo.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'GameInfo',
    interfaces: [Message]
  };
  function ResetGame(removeIds, gameObjects) {
    ResetGame$Companion_getInstance();
    Message.call(this);
    this.removeIds = removeIds;
    this.gameObjects = gameObjects;
  }
  function ResetGame$Companion() {
    ResetGame$Companion_instance = this;
  }
  ResetGame$Companion.prototype.serializer = function () {
    return ResetGame$$serializer_getInstance();
  };
  ResetGame$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var ResetGame$Companion_instance = null;
  function ResetGame$Companion_getInstance() {
    if (ResetGame$Companion_instance === null) {
      new ResetGame$Companion();
    }
    return ResetGame$Companion_instance;
  }
  function ResetGame$$serializer() {
    this.descriptor_pggqt6$_0 = new PluginGeneratedSerialDescriptor('ResetGame', this, 2);
    this.descriptor.addElement_ivxn3r$('removeIds', false);
    this.descriptor.addElement_ivxn3r$('gameObjects', false);
    ResetGame$$serializer_instance = this;
  }
  Object.defineProperty(ResetGame$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_pggqt6$_0;
    }
  });
  ResetGame$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 0, new ArrayListSerializer(internal.IntSerializer), value.removeIds);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 1, new ArrayListSerializer(new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.GameObject', getKClass(GameObject), [getKClass(Avatar), getKClass(FlippableImageObject), getKClass(GridImageObject), getKClass(ImageObject), getKClass(MultipleGridImageObject), getKClass(PieceAtPointCounter), getKClass(FlippableImageObject), getKClass(ImageObject), getKClass(TextObject)], [Avatar$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), GridImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), MultipleGridImageObject$$serializer_getInstance(), PieceAtPointCounter$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), TextObject$$serializer_getInstance()])), value.gameObjects);
    output.endStructure_24f42q$(this.descriptor);
  };
  ResetGame$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeSerializableElement_12e8id$(this.descriptor, 0, new ArrayListSerializer(internal.IntSerializer), local0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeSerializableElement_12e8id$(this.descriptor, 1, new ArrayListSerializer(new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.GameObject', getKClass(GameObject), [getKClass(Avatar), getKClass(FlippableImageObject), getKClass(GridImageObject), getKClass(ImageObject), getKClass(MultipleGridImageObject), getKClass(PieceAtPointCounter), getKClass(FlippableImageObject), getKClass(ImageObject), getKClass(TextObject)], [Avatar$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), GridImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), MultipleGridImageObject$$serializer_getInstance(), PieceAtPointCounter$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), TextObject$$serializer_getInstance()])), local1);
          bitMask0 |= 2;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return ResetGame_init(bitMask0, local0, local1, null);
  };
  ResetGame$$serializer.prototype.childSerializers = function () {
    return [new ArrayListSerializer(internal.IntSerializer), new ArrayListSerializer(new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.GameObject', getKClass(GameObject), [getKClass(Avatar), getKClass(FlippableImageObject), getKClass(GridImageObject), getKClass(ImageObject), getKClass(MultipleGridImageObject), getKClass(PieceAtPointCounter), getKClass(FlippableImageObject), getKClass(ImageObject), getKClass(TextObject)], [Avatar$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), GridImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), MultipleGridImageObject$$serializer_getInstance(), PieceAtPointCounter$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), TextObject$$serializer_getInstance()]))];
  };
  ResetGame$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var ResetGame$$serializer_instance = null;
  function ResetGame$$serializer_getInstance() {
    if (ResetGame$$serializer_instance === null) {
      new ResetGame$$serializer();
    }
    return ResetGame$$serializer_instance;
  }
  function ResetGame_init(seen1, removeIds, gameObjects, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(ResetGame.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('removeIds');
    else
      $this.removeIds = removeIds;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('gameObjects');
    else
      $this.gameObjects = gameObjects;
    return $this;
  }
  ResetGame.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'ResetGame',
    interfaces: [Message]
  };
  ResetGame.prototype.component1 = function () {
    return this.removeIds;
  };
  ResetGame.prototype.component2 = function () {
    return this.gameObjects;
  };
  ResetGame.prototype.copy_ebamuk$ = function (removeIds, gameObjects) {
    return new ResetGame(removeIds === void 0 ? this.removeIds : removeIds, gameObjects === void 0 ? this.gameObjects : gameObjects);
  };
  ResetGame.prototype.toString = function () {
    return 'ResetGame(removeIds=' + Kotlin.toString(this.removeIds) + (', gameObjects=' + Kotlin.toString(this.gameObjects)) + ')';
  };
  ResetGame.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.removeIds) | 0;
    result = result * 31 + Kotlin.hashCode(this.gameObjects) | 0;
    return result;
  };
  ResetGame.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.removeIds, other.removeIds) && Kotlin.equals(this.gameObjects, other.gameObjects)))));
  };
  function PlayerJoined(p) {
    PlayerJoined$Companion_getInstance();
    Message.call(this);
    this.p = p;
  }
  function PlayerJoined$Companion() {
    PlayerJoined$Companion_instance = this;
  }
  PlayerJoined$Companion.prototype.serializer = function () {
    return PlayerJoined$$serializer_getInstance();
  };
  PlayerJoined$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var PlayerJoined$Companion_instance = null;
  function PlayerJoined$Companion_getInstance() {
    if (PlayerJoined$Companion_instance === null) {
      new PlayerJoined$Companion();
    }
    return PlayerJoined$Companion_instance;
  }
  function PlayerJoined$$serializer() {
    this.descriptor_3hivjj$_0 = new PluginGeneratedSerialDescriptor('PlayerJoined', this, 1);
    this.descriptor.addElement_ivxn3r$('p', false);
    PlayerJoined$$serializer_instance = this;
  }
  Object.defineProperty(PlayerJoined$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_3hivjj$_0;
    }
  });
  PlayerJoined$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 0, Player$$serializer_getInstance(), value.p);
    output.endStructure_24f42q$(this.descriptor);
  };
  PlayerJoined$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeSerializableElement_12e8id$(this.descriptor, 0, Player$$serializer_getInstance(), local0);
          bitMask0 |= 1;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return PlayerJoined_init(bitMask0, local0, null);
  };
  PlayerJoined$$serializer.prototype.childSerializers = function () {
    return [Player$$serializer_getInstance()];
  };
  PlayerJoined$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var PlayerJoined$$serializer_instance = null;
  function PlayerJoined$$serializer_getInstance() {
    if (PlayerJoined$$serializer_instance === null) {
      new PlayerJoined$$serializer();
    }
    return PlayerJoined$$serializer_instance;
  }
  function PlayerJoined_init(seen1, p, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(PlayerJoined.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('p');
    else
      $this.p = p;
    return $this;
  }
  PlayerJoined.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'PlayerJoined',
    interfaces: [Message]
  };
  PlayerJoined.prototype.component1 = function () {
    return this.p;
  };
  PlayerJoined.prototype.copy_fdbwcy$ = function (p) {
    return new PlayerJoined(p === void 0 ? this.p : p);
  };
  PlayerJoined.prototype.toString = function () {
    return 'PlayerJoined(p=' + Kotlin.toString(this.p) + ')';
  };
  PlayerJoined.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.p) | 0;
    return result;
  };
  PlayerJoined.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && Kotlin.equals(this.p, other.p))));
  };
  function PlayerLeft(id) {
    PlayerLeft$Companion_getInstance();
    Message.call(this);
    this.id = id;
  }
  function PlayerLeft$Companion() {
    PlayerLeft$Companion_instance = this;
  }
  PlayerLeft$Companion.prototype.serializer = function () {
    return PlayerLeft$$serializer_getInstance();
  };
  PlayerLeft$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var PlayerLeft$Companion_instance = null;
  function PlayerLeft$Companion_getInstance() {
    if (PlayerLeft$Companion_instance === null) {
      new PlayerLeft$Companion();
    }
    return PlayerLeft$Companion_instance;
  }
  function PlayerLeft$$serializer() {
    this.descriptor_a5kdsj$_0 = new PluginGeneratedSerialDescriptor('PlayerLeft', this, 1);
    this.descriptor.addElement_ivxn3r$('id', false);
    PlayerLeft$$serializer_instance = this;
  }
  Object.defineProperty(PlayerLeft$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_a5kdsj$_0;
    }
  });
  PlayerLeft$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.endStructure_24f42q$(this.descriptor);
  };
  PlayerLeft$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return PlayerLeft_init(bitMask0, local0, null);
  };
  PlayerLeft$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer];
  };
  PlayerLeft$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var PlayerLeft$$serializer_instance = null;
  function PlayerLeft$$serializer_getInstance() {
    if (PlayerLeft$$serializer_instance === null) {
      new PlayerLeft$$serializer();
    }
    return PlayerLeft$$serializer_instance;
  }
  function PlayerLeft_init(seen1, id, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(PlayerLeft.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id = id;
    return $this;
  }
  PlayerLeft.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'PlayerLeft',
    interfaces: [Message]
  };
  PlayerLeft.prototype.component1 = function () {
    return this.id;
  };
  PlayerLeft.prototype.copy_za3lpa$ = function (id) {
    return new PlayerLeft(id === void 0 ? this.id : id);
  };
  PlayerLeft.prototype.toString = function () {
    return 'PlayerLeft(id=' + Kotlin.toString(this.id) + ')';
  };
  PlayerLeft.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.id) | 0;
    return result;
  };
  PlayerLeft.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && Kotlin.equals(this.id, other.id))));
  };
  function RenamePlayer(id, name) {
    RenamePlayer$Companion_getInstance();
    Message.call(this);
    this.id = id;
    this.name = name;
  }
  function RenamePlayer$Companion() {
    RenamePlayer$Companion_instance = this;
  }
  RenamePlayer$Companion.prototype.serializer = function () {
    return RenamePlayer$$serializer_getInstance();
  };
  RenamePlayer$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var RenamePlayer$Companion_instance = null;
  function RenamePlayer$Companion_getInstance() {
    if (RenamePlayer$Companion_instance === null) {
      new RenamePlayer$Companion();
    }
    return RenamePlayer$Companion_instance;
  }
  function RenamePlayer$$serializer() {
    this.descriptor_oe4llw$_0 = new PluginGeneratedSerialDescriptor('RenamePlayer', this, 2);
    this.descriptor.addElement_ivxn3r$('id', false);
    this.descriptor.addElement_ivxn3r$('name', false);
    RenamePlayer$$serializer_instance = this;
  }
  Object.defineProperty(RenamePlayer$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_oe4llw$_0;
    }
  });
  RenamePlayer$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.encodeStringElement_iij8qq$(this.descriptor, 1, value.name);
    output.endStructure_24f42q$(this.descriptor);
  };
  RenamePlayer$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeStringElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return RenamePlayer_init(bitMask0, local0, local1, null);
  };
  RenamePlayer$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.StringSerializer];
  };
  RenamePlayer$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var RenamePlayer$$serializer_instance = null;
  function RenamePlayer$$serializer_getInstance() {
    if (RenamePlayer$$serializer_instance === null) {
      new RenamePlayer$$serializer();
    }
    return RenamePlayer$$serializer_instance;
  }
  function RenamePlayer_init(seen1, id, name, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(RenamePlayer.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id = id;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('name');
    else
      $this.name = name;
    return $this;
  }
  RenamePlayer.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'RenamePlayer',
    interfaces: [Message]
  };
  RenamePlayer.prototype.component1 = function () {
    return this.id;
  };
  RenamePlayer.prototype.component2 = function () {
    return this.name;
  };
  RenamePlayer.prototype.copy_19mbxw$ = function (id, name) {
    return new RenamePlayer(id === void 0 ? this.id : id, name === void 0 ? this.name : name);
  };
  RenamePlayer.prototype.toString = function () {
    return 'RenamePlayer(id=' + Kotlin.toString(this.id) + (', name=' + Kotlin.toString(this.name)) + ')';
  };
  RenamePlayer.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.id) | 0;
    result = result * 31 + Kotlin.hashCode(this.name) | 0;
    return result;
  };
  RenamePlayer.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.id, other.id) && Kotlin.equals(this.name, other.name)))));
  };
  function AddObjects(gameObjects) {
    AddObjects$Companion_getInstance();
    Message.call(this);
    this.gameObjects = gameObjects;
  }
  function AddObjects$Companion() {
    AddObjects$Companion_instance = this;
  }
  AddObjects$Companion.prototype.serializer = function () {
    return AddObjects$$serializer_getInstance();
  };
  AddObjects$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var AddObjects$Companion_instance = null;
  function AddObjects$Companion_getInstance() {
    if (AddObjects$Companion_instance === null) {
      new AddObjects$Companion();
    }
    return AddObjects$Companion_instance;
  }
  function AddObjects$$serializer() {
    this.descriptor_9ob86g$_0 = new PluginGeneratedSerialDescriptor('AddObjects', this, 1);
    this.descriptor.addElement_ivxn3r$('gameObjects', false);
    AddObjects$$serializer_instance = this;
  }
  Object.defineProperty(AddObjects$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_9ob86g$_0;
    }
  });
  AddObjects$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 0, new ArrayListSerializer(new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.GameObject', getKClass(GameObject), [getKClass(Avatar), getKClass(FlippableImageObject), getKClass(GridImageObject), getKClass(ImageObject), getKClass(MultipleGridImageObject), getKClass(PieceAtPointCounter), getKClass(FlippableImageObject), getKClass(ImageObject), getKClass(TextObject)], [Avatar$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), GridImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), MultipleGridImageObject$$serializer_getInstance(), PieceAtPointCounter$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), TextObject$$serializer_getInstance()])), value.gameObjects);
    output.endStructure_24f42q$(this.descriptor);
  };
  AddObjects$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeSerializableElement_12e8id$(this.descriptor, 0, new ArrayListSerializer(new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.GameObject', getKClass(GameObject), [getKClass(Avatar), getKClass(FlippableImageObject), getKClass(GridImageObject), getKClass(ImageObject), getKClass(MultipleGridImageObject), getKClass(PieceAtPointCounter), getKClass(FlippableImageObject), getKClass(ImageObject), getKClass(TextObject)], [Avatar$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), GridImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), MultipleGridImageObject$$serializer_getInstance(), PieceAtPointCounter$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), TextObject$$serializer_getInstance()])), local0);
          bitMask0 |= 1;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return AddObjects_init(bitMask0, local0, null);
  };
  AddObjects$$serializer.prototype.childSerializers = function () {
    return [new ArrayListSerializer(new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.GameObject', getKClass(GameObject), [getKClass(Avatar), getKClass(FlippableImageObject), getKClass(GridImageObject), getKClass(ImageObject), getKClass(MultipleGridImageObject), getKClass(PieceAtPointCounter), getKClass(FlippableImageObject), getKClass(ImageObject), getKClass(TextObject)], [Avatar$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), GridImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), MultipleGridImageObject$$serializer_getInstance(), PieceAtPointCounter$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), TextObject$$serializer_getInstance()]))];
  };
  AddObjects$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var AddObjects$$serializer_instance = null;
  function AddObjects$$serializer_getInstance() {
    if (AddObjects$$serializer_instance === null) {
      new AddObjects$$serializer();
    }
    return AddObjects$$serializer_instance;
  }
  function AddObjects_init(seen1, gameObjects, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(AddObjects.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('gameObjects');
    else
      $this.gameObjects = gameObjects;
    return $this;
  }
  AddObjects.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'AddObjects',
    interfaces: [Message]
  };
  AddObjects.prototype.component1 = function () {
    return this.gameObjects;
  };
  AddObjects.prototype.copy_j99dw7$ = function (gameObjects) {
    return new AddObjects(gameObjects === void 0 ? this.gameObjects : gameObjects);
  };
  AddObjects.prototype.toString = function () {
    return 'AddObjects(gameObjects=' + Kotlin.toString(this.gameObjects) + ')';
  };
  AddObjects.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.gameObjects) | 0;
    return result;
  };
  AddObjects.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && Kotlin.equals(this.gameObjects, other.gameObjects))));
  };
  function RemoveObjects(ids, saveToBin) {
    RemoveObjects$Companion_getInstance();
    if (saveToBin === void 0)
      saveToBin = false;
    Message.call(this);
    this.ids = ids;
    this.saveToBin = saveToBin;
  }
  function RemoveObjects$Companion() {
    RemoveObjects$Companion_instance = this;
  }
  RemoveObjects$Companion.prototype.serializer = function () {
    return RemoveObjects$$serializer_getInstance();
  };
  RemoveObjects$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var RemoveObjects$Companion_instance = null;
  function RemoveObjects$Companion_getInstance() {
    if (RemoveObjects$Companion_instance === null) {
      new RemoveObjects$Companion();
    }
    return RemoveObjects$Companion_instance;
  }
  function RemoveObjects$$serializer() {
    this.descriptor_cjb13p$_0 = new PluginGeneratedSerialDescriptor('RemoveObjects', this, 2);
    this.descriptor.addElement_ivxn3r$('ids', false);
    this.descriptor.addElement_ivxn3r$('saveToBin', true);
    RemoveObjects$$serializer_instance = this;
  }
  Object.defineProperty(RemoveObjects$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_cjb13p$_0;
    }
  });
  RemoveObjects$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 0, new ArrayListSerializer(internal.IntSerializer), value.ids);
    if (!equals(value.saveToBin, false) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 1))
      output.encodeBooleanElement_qh7jdn$(this.descriptor, 1, value.saveToBin);
    output.endStructure_24f42q$(this.descriptor);
  };
  RemoveObjects$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeSerializableElement_12e8id$(this.descriptor, 0, new ArrayListSerializer(internal.IntSerializer), local0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeBooleanElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return RemoveObjects_init(bitMask0, local0, local1, null);
  };
  RemoveObjects$$serializer.prototype.childSerializers = function () {
    return [new ArrayListSerializer(internal.IntSerializer), internal.BooleanSerializer];
  };
  RemoveObjects$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var RemoveObjects$$serializer_instance = null;
  function RemoveObjects$$serializer_getInstance() {
    if (RemoveObjects$$serializer_instance === null) {
      new RemoveObjects$$serializer();
    }
    return RemoveObjects$$serializer_instance;
  }
  function RemoveObjects_init(seen1, ids, saveToBin, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(RemoveObjects.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('ids');
    else
      $this.ids = ids;
    if ((seen1 & 2) === 0)
      $this.saveToBin = false;
    else
      $this.saveToBin = saveToBin;
    return $this;
  }
  RemoveObjects.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'RemoveObjects',
    interfaces: [Message]
  };
  RemoveObjects.prototype.component1 = function () {
    return this.ids;
  };
  RemoveObjects.prototype.component2 = function () {
    return this.saveToBin;
  };
  RemoveObjects.prototype.copy_jeguea$ = function (ids, saveToBin) {
    return new RemoveObjects(ids === void 0 ? this.ids : ids, saveToBin === void 0 ? this.saveToBin : saveToBin);
  };
  RemoveObjects.prototype.toString = function () {
    return 'RemoveObjects(ids=' + Kotlin.toString(this.ids) + (', saveToBin=' + Kotlin.toString(this.saveToBin)) + ')';
  };
  RemoveObjects.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.ids) | 0;
    result = result * 31 + Kotlin.hashCode(this.saveToBin) | 0;
    return result;
  };
  RemoveObjects.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.ids, other.ids) && Kotlin.equals(this.saveToBin, other.saveToBin)))));
  };
  function ScaleObject(id, scale) {
    ScaleObject$Companion_getInstance();
    Message.call(this);
    this.id = id;
    this.scale = scale;
  }
  function ScaleObject$Companion() {
    ScaleObject$Companion_instance = this;
  }
  ScaleObject$Companion.prototype.serializer = function () {
    return ScaleObject$$serializer_getInstance();
  };
  ScaleObject$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var ScaleObject$Companion_instance = null;
  function ScaleObject$Companion_getInstance() {
    if (ScaleObject$Companion_instance === null) {
      new ScaleObject$Companion();
    }
    return ScaleObject$Companion_instance;
  }
  function ScaleObject$$serializer() {
    this.descriptor_7pd47i$_0 = new PluginGeneratedSerialDescriptor('ScaleObject', this, 2);
    this.descriptor.addElement_ivxn3r$('id', false);
    this.descriptor.addElement_ivxn3r$('scale', false);
    ScaleObject$$serializer_instance = this;
  }
  Object.defineProperty(ScaleObject$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_7pd47i$_0;
    }
  });
  ScaleObject$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.encodeDoubleElement_powrwi$(this.descriptor, 1, value.scale);
    output.endStructure_24f42q$(this.descriptor);
  };
  ScaleObject$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeDoubleElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return ScaleObject_init(bitMask0, local0, local1, null);
  };
  ScaleObject$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.DoubleSerializer];
  };
  ScaleObject$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var ScaleObject$$serializer_instance = null;
  function ScaleObject$$serializer_getInstance() {
    if (ScaleObject$$serializer_instance === null) {
      new ScaleObject$$serializer();
    }
    return ScaleObject$$serializer_instance;
  }
  function ScaleObject_init(seen1, id, scale, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(ScaleObject.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id = id;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('scale');
    else
      $this.scale = scale;
    return $this;
  }
  ScaleObject.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'ScaleObject',
    interfaces: [Message]
  };
  ScaleObject.prototype.component1 = function () {
    return this.id;
  };
  ScaleObject.prototype.component2 = function () {
    return this.scale;
  };
  ScaleObject.prototype.copy_5wr77w$ = function (id, scale) {
    return new ScaleObject(id === void 0 ? this.id : id, scale === void 0 ? this.scale : scale);
  };
  ScaleObject.prototype.toString = function () {
    return 'ScaleObject(id=' + Kotlin.toString(this.id) + (', scale=' + Kotlin.toString(this.scale)) + ')';
  };
  ScaleObject.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.id) | 0;
    result = result * 31 + Kotlin.hashCode(this.scale) | 0;
    return result;
  };
  ScaleObject.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.id, other.id) && Kotlin.equals(this.scale, other.scale)))));
  };
  function CycleText(id, cyclicIndex) {
    CycleText$Companion_getInstance();
    Message.call(this);
    this.id = id;
    this.cyclicIndex = cyclicIndex;
  }
  function CycleText$Companion() {
    CycleText$Companion_instance = this;
  }
  CycleText$Companion.prototype.serializer = function () {
    return CycleText$$serializer_getInstance();
  };
  CycleText$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var CycleText$Companion_instance = null;
  function CycleText$Companion_getInstance() {
    if (CycleText$Companion_instance === null) {
      new CycleText$Companion();
    }
    return CycleText$Companion_instance;
  }
  function CycleText$$serializer() {
    this.descriptor_airr14$_0 = new PluginGeneratedSerialDescriptor('CycleText', this, 2);
    this.descriptor.addElement_ivxn3r$('id', false);
    this.descriptor.addElement_ivxn3r$('cyclicIndex', false);
    CycleText$$serializer_instance = this;
  }
  Object.defineProperty(CycleText$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_airr14$_0;
    }
  });
  CycleText$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.encodeIntElement_ptg7oe$(this.descriptor, 1, value.cyclicIndex);
    output.endStructure_24f42q$(this.descriptor);
  };
  CycleText$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeIntElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return CycleText_init(bitMask0, local0, local1, null);
  };
  CycleText$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.IntSerializer];
  };
  CycleText$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var CycleText$$serializer_instance = null;
  function CycleText$$serializer_getInstance() {
    if (CycleText$$serializer_instance === null) {
      new CycleText$$serializer();
    }
    return CycleText$$serializer_instance;
  }
  function CycleText_init(seen1, id, cyclicIndex, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(CycleText.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id = id;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('cyclicIndex');
    else
      $this.cyclicIndex = cyclicIndex;
    return $this;
  }
  CycleText.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'CycleText',
    interfaces: [Message]
  };
  CycleText.prototype.component1 = function () {
    return this.id;
  };
  CycleText.prototype.component2 = function () {
    return this.cyclicIndex;
  };
  CycleText.prototype.copy_vux9f0$ = function (id, cyclicIndex) {
    return new CycleText(id === void 0 ? this.id : id, cyclicIndex === void 0 ? this.cyclicIndex : cyclicIndex);
  };
  CycleText.prototype.toString = function () {
    return 'CycleText(id=' + Kotlin.toString(this.id) + (', cyclicIndex=' + Kotlin.toString(this.cyclicIndex)) + ')';
  };
  CycleText.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.id) | 0;
    result = result * 31 + Kotlin.hashCode(this.cyclicIndex) | 0;
    return result;
  };
  CycleText.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.id, other.id) && Kotlin.equals(this.cyclicIndex, other.cyclicIndex)))));
  };
  function ChangeImage(id, imageNumber) {
    ChangeImage$Companion_getInstance();
    Message.call(this);
    this.id = id;
    this.imageNumber = imageNumber;
  }
  function ChangeImage$Companion() {
    ChangeImage$Companion_instance = this;
  }
  ChangeImage$Companion.prototype.serializer = function () {
    return ChangeImage$$serializer_getInstance();
  };
  ChangeImage$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var ChangeImage$Companion_instance = null;
  function ChangeImage$Companion_getInstance() {
    if (ChangeImage$Companion_instance === null) {
      new ChangeImage$Companion();
    }
    return ChangeImage$Companion_instance;
  }
  function ChangeImage$$serializer() {
    this.descriptor_nt9628$_0 = new PluginGeneratedSerialDescriptor('ChangeImage', this, 2);
    this.descriptor.addElement_ivxn3r$('id', false);
    this.descriptor.addElement_ivxn3r$('imageNumber', false);
    ChangeImage$$serializer_instance = this;
  }
  Object.defineProperty(ChangeImage$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_nt9628$_0;
    }
  });
  ChangeImage$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.encodeIntElement_ptg7oe$(this.descriptor, 1, value.imageNumber);
    output.endStructure_24f42q$(this.descriptor);
  };
  ChangeImage$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeIntElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return ChangeImage_init(bitMask0, local0, local1, null);
  };
  ChangeImage$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.IntSerializer];
  };
  ChangeImage$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var ChangeImage$$serializer_instance = null;
  function ChangeImage$$serializer_getInstance() {
    if (ChangeImage$$serializer_instance === null) {
      new ChangeImage$$serializer();
    }
    return ChangeImage$$serializer_instance;
  }
  function ChangeImage_init(seen1, id, imageNumber, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(ChangeImage.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id = id;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('imageNumber');
    else
      $this.imageNumber = imageNumber;
    return $this;
  }
  ChangeImage.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'ChangeImage',
    interfaces: [Message]
  };
  ChangeImage.prototype.component1 = function () {
    return this.id;
  };
  ChangeImage.prototype.component2 = function () {
    return this.imageNumber;
  };
  ChangeImage.prototype.copy_vux9f0$ = function (id, imageNumber) {
    return new ChangeImage(id === void 0 ? this.id : id, imageNumber === void 0 ? this.imageNumber : imageNumber);
  };
  ChangeImage.prototype.toString = function () {
    return 'ChangeImage(id=' + Kotlin.toString(this.id) + (', imageNumber=' + Kotlin.toString(this.imageNumber)) + ')';
  };
  ChangeImage.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.id) | 0;
    result = result * 31 + Kotlin.hashCode(this.imageNumber) | 0;
    return result;
  };
  ChangeImage.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.id, other.id) && Kotlin.equals(this.imageNumber, other.imageNumber)))));
  };
  function ChangeZOrder(name, ordinal) {
    ChangeZOrder$Companion_getInstance();
    Enum.call(this);
    this.name$ = name;
    this.ordinal$ = ordinal;
  }
  function ChangeZOrder_initFields() {
    ChangeZOrder_initFields = function () {
    };
    ChangeZOrder$BOTTOM_instance = new ChangeZOrder('BOTTOM', 0);
    ChangeZOrder$NO_CHANGE_instance = new ChangeZOrder('NO_CHANGE', 1);
    ChangeZOrder$TOP_instance = new ChangeZOrder('TOP', 2);
    ChangeZOrder$Companion_getInstance();
  }
  var ChangeZOrder$BOTTOM_instance;
  function ChangeZOrder$BOTTOM_getInstance() {
    ChangeZOrder_initFields();
    return ChangeZOrder$BOTTOM_instance;
  }
  var ChangeZOrder$NO_CHANGE_instance;
  function ChangeZOrder$NO_CHANGE_getInstance() {
    ChangeZOrder_initFields();
    return ChangeZOrder$NO_CHANGE_instance;
  }
  var ChangeZOrder$TOP_instance;
  function ChangeZOrder$TOP_getInstance() {
    ChangeZOrder_initFields();
    return ChangeZOrder$TOP_instance;
  }
  function ChangeZOrder$Companion() {
    ChangeZOrder$Companion_instance = this;
  }
  ChangeZOrder$Companion.prototype.serializer = function () {
    return ChangeZOrder$$serializer_getInstance();
  };
  ChangeZOrder$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: [SerializerFactory]
  };
  var ChangeZOrder$Companion_instance = null;
  function ChangeZOrder$Companion_getInstance() {
    if (ChangeZOrder$Companion_instance === null) {
      new ChangeZOrder$Companion();
    }
    return ChangeZOrder$Companion_instance;
  }
  function ChangeZOrder$$serializer() {
    this.descriptor_x9hqax$_0 = new EnumDescriptor('ChangeZOrder', 3);
    this.descriptor.addElement_ivxn3r$('BOTTOM');
    this.descriptor.addElement_ivxn3r$('NO_CHANGE');
    this.descriptor.addElement_ivxn3r$('TOP');
    ChangeZOrder$$serializer_instance = this;
  }
  Object.defineProperty(ChangeZOrder$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_x9hqax$_0;
    }
  });
  ChangeZOrder$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    encoder.encodeEnum_szpzho$(this.descriptor, value.ordinal);
  };
  ChangeZOrder$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    return ChangeZOrder$values()[decoder.decodeEnum_24f42q$(this.descriptor)];
  };
  ChangeZOrder$$serializer.prototype.childSerializers = function () {
    return [];
  };
  ChangeZOrder$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var ChangeZOrder$$serializer_instance = null;
  function ChangeZOrder$$serializer_getInstance() {
    if (ChangeZOrder$$serializer_instance === null) {
      new ChangeZOrder$$serializer();
    }
    return ChangeZOrder$$serializer_instance;
  }
  ChangeZOrder.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'ChangeZOrder',
    interfaces: [Enum]
  };
  function ChangeZOrder$values() {
    return [ChangeZOrder$BOTTOM_getInstance(), ChangeZOrder$NO_CHANGE_getInstance(), ChangeZOrder$TOP_getInstance()];
  }
  ChangeZOrder.values = ChangeZOrder$values;
  function ChangeZOrder$valueOf(name) {
    switch (name) {
      case 'BOTTOM':
        return ChangeZOrder$BOTTOM_getInstance();
      case 'NO_CHANGE':
        return ChangeZOrder$NO_CHANGE_getInstance();
      case 'TOP':
        return ChangeZOrder$TOP_getInstance();
      default:
        throwISE('No enum constant ChangeZOrder.' + name);
    }
  }
  ChangeZOrder.valueOf_61zpoe$ = ChangeZOrder$valueOf;
  function MoveObject(id, x, y, z) {
    MoveObject$Companion_getInstance();
    if (z === void 0)
      z = ChangeZOrder$TOP_getInstance();
    Message.call(this);
    this.id = id;
    this.x = x;
    this.y = y;
    this.z = z;
  }
  function MoveObject$Companion() {
    MoveObject$Companion_instance = this;
  }
  MoveObject$Companion.prototype.serializer = function () {
    return MoveObject$$serializer_getInstance();
  };
  MoveObject$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var MoveObject$Companion_instance = null;
  function MoveObject$Companion_getInstance() {
    if (MoveObject$Companion_instance === null) {
      new MoveObject$Companion();
    }
    return MoveObject$Companion_instance;
  }
  function MoveObject$$serializer() {
    this.descriptor_kepejv$_0 = new PluginGeneratedSerialDescriptor('MoveObject', this, 4);
    this.descriptor.addElement_ivxn3r$('id', false);
    this.descriptor.addElement_ivxn3r$('x', false);
    this.descriptor.addElement_ivxn3r$('y', false);
    this.descriptor.addElement_ivxn3r$('z', true);
    MoveObject$$serializer_instance = this;
  }
  Object.defineProperty(MoveObject$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_kepejv$_0;
    }
  });
  MoveObject$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.encodeIntElement_ptg7oe$(this.descriptor, 1, value.x);
    output.encodeIntElement_ptg7oe$(this.descriptor, 2, value.y);
    if (!equals(value.z, ChangeZOrder$TOP_getInstance()) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 3))
      output.encodeSerializableElement_r4qlx7$(this.descriptor, 3, ChangeZOrder$$serializer_getInstance(), value.z);
    output.endStructure_24f42q$(this.descriptor);
  };
  MoveObject$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeIntElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeIntElement_szpzho$(this.descriptor, 2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeSerializableElement_12e8id$(this.descriptor, 3, ChangeZOrder$$serializer_getInstance(), local3);
          bitMask0 |= 8;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return MoveObject_init(bitMask0, local0, local1, local2, local3, null);
  };
  MoveObject$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, ChangeZOrder$$serializer_getInstance()];
  };
  MoveObject$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var MoveObject$$serializer_instance = null;
  function MoveObject$$serializer_getInstance() {
    if (MoveObject$$serializer_instance === null) {
      new MoveObject$$serializer();
    }
    return MoveObject$$serializer_instance;
  }
  function MoveObject_init(seen1, id, x, y, z, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(MoveObject.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id = id;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('x');
    else
      $this.x = x;
    if ((seen1 & 4) === 0)
      throw MissingFieldException_init('y');
    else
      $this.y = y;
    if ((seen1 & 8) === 0)
      $this.z = ChangeZOrder$TOP_getInstance();
    else
      $this.z = z;
    return $this;
  }
  MoveObject.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'MoveObject',
    interfaces: [Message]
  };
  function MoveObject_init_0(id, x, y, changeZOrder, $this) {
    if (changeZOrder === void 0)
      changeZOrder = ChangeZOrder$TOP_getInstance();
    $this = $this || Object.create(MoveObject.prototype);
    MoveObject.call($this, id, numberToInt(x), numberToInt(y), changeZOrder);
    return $this;
  }
  MoveObject.prototype.component1 = function () {
    return this.id;
  };
  MoveObject.prototype.component2 = function () {
    return this.x;
  };
  MoveObject.prototype.component3 = function () {
    return this.y;
  };
  MoveObject.prototype.component4 = function () {
    return this.z;
  };
  MoveObject.prototype.copy_qc489e$ = function (id, x, y, z) {
    return new MoveObject(id === void 0 ? this.id : id, x === void 0 ? this.x : x, y === void 0 ? this.y : y, z === void 0 ? this.z : z);
  };
  MoveObject.prototype.toString = function () {
    return 'MoveObject(id=' + Kotlin.toString(this.id) + (', x=' + Kotlin.toString(this.x)) + (', y=' + Kotlin.toString(this.y)) + (', z=' + Kotlin.toString(this.z)) + ')';
  };
  MoveObject.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.id) | 0;
    result = result * 31 + Kotlin.hashCode(this.x) | 0;
    result = result * 31 + Kotlin.hashCode(this.y) | 0;
    result = result * 31 + Kotlin.hashCode(this.z) | 0;
    return result;
  };
  MoveObject.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.id, other.id) && Kotlin.equals(this.x, other.x) && Kotlin.equals(this.y, other.y) && Kotlin.equals(this.z, other.z)))));
  };
  function DragObject(id, x, y, forceFaceDown) {
    DragObject$Companion_getInstance();
    Message.call(this);
    this.id = id;
    this.x = x;
    this.y = y;
    this.forceFaceDown = forceFaceDown;
  }
  function DragObject$Companion() {
    DragObject$Companion_instance = this;
  }
  DragObject$Companion.prototype.serializer = function () {
    return DragObject$$serializer_getInstance();
  };
  DragObject$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var DragObject$Companion_instance = null;
  function DragObject$Companion_getInstance() {
    if (DragObject$Companion_instance === null) {
      new DragObject$Companion();
    }
    return DragObject$Companion_instance;
  }
  function DragObject$$serializer() {
    this.descriptor_253ins$_0 = new PluginGeneratedSerialDescriptor('DragObject', this, 4);
    this.descriptor.addElement_ivxn3r$('id', false);
    this.descriptor.addElement_ivxn3r$('x', false);
    this.descriptor.addElement_ivxn3r$('y', false);
    this.descriptor.addElement_ivxn3r$('forceFaceDown', false);
    DragObject$$serializer_instance = this;
  }
  Object.defineProperty(DragObject$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_253ins$_0;
    }
  });
  DragObject$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.encodeIntElement_ptg7oe$(this.descriptor, 1, value.x);
    output.encodeIntElement_ptg7oe$(this.descriptor, 2, value.y);
    output.encodeBooleanElement_qh7jdn$(this.descriptor, 3, value.forceFaceDown);
    output.endStructure_24f42q$(this.descriptor);
  };
  DragObject$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeIntElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeIntElement_szpzho$(this.descriptor, 2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeBooleanElement_szpzho$(this.descriptor, 3);
          bitMask0 |= 8;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return DragObject_init(bitMask0, local0, local1, local2, local3, null);
  };
  DragObject$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, internal.BooleanSerializer];
  };
  DragObject$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var DragObject$$serializer_instance = null;
  function DragObject$$serializer_getInstance() {
    if (DragObject$$serializer_instance === null) {
      new DragObject$$serializer();
    }
    return DragObject$$serializer_instance;
  }
  function DragObject_init(seen1, id, x, y, forceFaceDown, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(DragObject.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id = id;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('x');
    else
      $this.x = x;
    if ((seen1 & 4) === 0)
      throw MissingFieldException_init('y');
    else
      $this.y = y;
    if ((seen1 & 8) === 0)
      throw MissingFieldException_init('forceFaceDown');
    else
      $this.forceFaceDown = forceFaceDown;
    return $this;
  }
  DragObject.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'DragObject',
    interfaces: [Message]
  };
  function DragObject_init_0(id, x, y, forceFaceDown, $this) {
    $this = $this || Object.create(DragObject.prototype);
    DragObject.call($this, id, numberToInt(x), numberToInt(y), forceFaceDown);
    return $this;
  }
  DragObject.prototype.component1 = function () {
    return this.id;
  };
  DragObject.prototype.component2 = function () {
    return this.x;
  };
  DragObject.prototype.component3 = function () {
    return this.y;
  };
  DragObject.prototype.component4 = function () {
    return this.forceFaceDown;
  };
  DragObject.prototype.copy_x84gdh$ = function (id, x, y, forceFaceDown) {
    return new DragObject(id === void 0 ? this.id : id, x === void 0 ? this.x : x, y === void 0 ? this.y : y, forceFaceDown === void 0 ? this.forceFaceDown : forceFaceDown);
  };
  DragObject.prototype.toString = function () {
    return 'DragObject(id=' + Kotlin.toString(this.id) + (', x=' + Kotlin.toString(this.x)) + (', y=' + Kotlin.toString(this.y)) + (', forceFaceDown=' + Kotlin.toString(this.forceFaceDown)) + ')';
  };
  DragObject.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.id) | 0;
    result = result * 31 + Kotlin.hashCode(this.x) | 0;
    result = result * 31 + Kotlin.hashCode(this.y) | 0;
    result = result * 31 + Kotlin.hashCode(this.forceFaceDown) | 0;
    return result;
  };
  DragObject.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.id, other.id) && Kotlin.equals(this.x, other.x) && Kotlin.equals(this.y, other.y) && Kotlin.equals(this.forceFaceDown, other.forceFaceDown)))));
  };
  function ChangePrivacy(id, privateToPlayerId) {
    ChangePrivacy$Companion_getInstance();
    Message.call(this);
    this.id = id;
    this.privateToPlayerId = privateToPlayerId;
  }
  function ChangePrivacy$Companion() {
    ChangePrivacy$Companion_instance = this;
  }
  ChangePrivacy$Companion.prototype.serializer = function () {
    return ChangePrivacy$$serializer_getInstance();
  };
  ChangePrivacy$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var ChangePrivacy$Companion_instance = null;
  function ChangePrivacy$Companion_getInstance() {
    if (ChangePrivacy$Companion_instance === null) {
      new ChangePrivacy$Companion();
    }
    return ChangePrivacy$Companion_instance;
  }
  function ChangePrivacy$$serializer() {
    this.descriptor_uxr2n1$_0 = new PluginGeneratedSerialDescriptor('ChangePrivacy', this, 2);
    this.descriptor.addElement_ivxn3r$('id', false);
    this.descriptor.addElement_ivxn3r$('privateToPlayerId', false);
    ChangePrivacy$$serializer_instance = this;
  }
  Object.defineProperty(ChangePrivacy$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_uxr2n1$_0;
    }
  });
  ChangePrivacy$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.encodeNullableSerializableElement_qw92s8$(this.descriptor, 1, internal.IntSerializer, value.privateToPlayerId);
    output.endStructure_24f42q$(this.descriptor);
  };
  ChangePrivacy$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeNullableSerializableElement_8viuyw$(this.descriptor, 1, internal.IntSerializer, local1);
          bitMask0 |= 2;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return ChangePrivacy_init(bitMask0, local0, local1, null);
  };
  ChangePrivacy$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, new NullableSerializer(internal.IntSerializer)];
  };
  ChangePrivacy$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var ChangePrivacy$$serializer_instance = null;
  function ChangePrivacy$$serializer_getInstance() {
    if (ChangePrivacy$$serializer_instance === null) {
      new ChangePrivacy$$serializer();
    }
    return ChangePrivacy$$serializer_instance;
  }
  function ChangePrivacy_init(seen1, id, privateToPlayerId, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(ChangePrivacy.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id = id;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('privateToPlayerId');
    else
      $this.privateToPlayerId = privateToPlayerId;
    return $this;
  }
  ChangePrivacy.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'ChangePrivacy',
    interfaces: [Message]
  };
  ChangePrivacy.prototype.component1 = function () {
    return this.id;
  };
  ChangePrivacy.prototype.component2 = function () {
    return this.privateToPlayerId;
  };
  ChangePrivacy.prototype.copy_6sxnot$ = function (id, privateToPlayerId) {
    return new ChangePrivacy(id === void 0 ? this.id : id, privateToPlayerId === void 0 ? this.privateToPlayerId : privateToPlayerId);
  };
  ChangePrivacy.prototype.toString = function () {
    return 'ChangePrivacy(id=' + Kotlin.toString(this.id) + (', privateToPlayerId=' + Kotlin.toString(this.privateToPlayerId)) + ')';
  };
  ChangePrivacy.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.id) | 0;
    result = result * 31 + Kotlin.hashCode(this.privateToPlayerId) | 0;
    return result;
  };
  ChangePrivacy.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.id, other.id) && Kotlin.equals(this.privateToPlayerId, other.privateToPlayerId)))));
  };
  function FaceUpOrDown(id, isFaceUp) {
    FaceUpOrDown$Companion_getInstance();
    Message.call(this);
    this.id = id;
    this.isFaceUp = isFaceUp;
  }
  function FaceUpOrDown$Companion() {
    FaceUpOrDown$Companion_instance = this;
  }
  FaceUpOrDown$Companion.prototype.serializer = function () {
    return FaceUpOrDown$$serializer_getInstance();
  };
  FaceUpOrDown$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var FaceUpOrDown$Companion_instance = null;
  function FaceUpOrDown$Companion_getInstance() {
    if (FaceUpOrDown$Companion_instance === null) {
      new FaceUpOrDown$Companion();
    }
    return FaceUpOrDown$Companion_instance;
  }
  function FaceUpOrDown$$serializer() {
    this.descriptor_j4gzia$_0 = new PluginGeneratedSerialDescriptor('FaceUpOrDown', this, 2);
    this.descriptor.addElement_ivxn3r$('id', false);
    this.descriptor.addElement_ivxn3r$('isFaceUp', false);
    FaceUpOrDown$$serializer_instance = this;
  }
  Object.defineProperty(FaceUpOrDown$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_j4gzia$_0;
    }
  });
  FaceUpOrDown$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.encodeBooleanElement_qh7jdn$(this.descriptor, 1, value.isFaceUp);
    output.endStructure_24f42q$(this.descriptor);
  };
  FaceUpOrDown$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeBooleanElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return FaceUpOrDown_init(bitMask0, local0, local1, null);
  };
  FaceUpOrDown$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.BooleanSerializer];
  };
  FaceUpOrDown$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var FaceUpOrDown$$serializer_instance = null;
  function FaceUpOrDown$$serializer_getInstance() {
    if (FaceUpOrDown$$serializer_instance === null) {
      new FaceUpOrDown$$serializer();
    }
    return FaceUpOrDown$$serializer_instance;
  }
  function FaceUpOrDown_init(seen1, id, isFaceUp, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(FaceUpOrDown.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id = id;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('isFaceUp');
    else
      $this.isFaceUp = isFaceUp;
    return $this;
  }
  FaceUpOrDown.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'FaceUpOrDown',
    interfaces: [Message]
  };
  FaceUpOrDown.prototype.component1 = function () {
    return this.id;
  };
  FaceUpOrDown.prototype.component2 = function () {
    return this.isFaceUp;
  };
  FaceUpOrDown.prototype.copy_fzusl$ = function (id, isFaceUp) {
    return new FaceUpOrDown(id === void 0 ? this.id : id, isFaceUp === void 0 ? this.isFaceUp : isFaceUp);
  };
  FaceUpOrDown.prototype.toString = function () {
    return 'FaceUpOrDown(id=' + Kotlin.toString(this.id) + (', isFaceUp=' + Kotlin.toString(this.isFaceUp)) + ')';
  };
  FaceUpOrDown.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.id) | 0;
    result = result * 31 + Kotlin.hashCode(this.isFaceUp) | 0;
    return result;
  };
  FaceUpOrDown.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.id, other.id) && Kotlin.equals(this.isFaceUp, other.isFaceUp)))));
  };
  function RunCommand(name, parameters) {
    RunCommand$Companion_getInstance();
    Message.call(this);
    this.name = name;
    this.parameters = parameters;
  }
  function RunCommand$Companion() {
    RunCommand$Companion_instance = this;
  }
  RunCommand$Companion.prototype.serializer = function () {
    return RunCommand$$serializer_getInstance();
  };
  RunCommand$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var RunCommand$Companion_instance = null;
  function RunCommand$Companion_getInstance() {
    if (RunCommand$Companion_instance === null) {
      new RunCommand$Companion();
    }
    return RunCommand$Companion_instance;
  }
  function RunCommand$$serializer() {
    this.descriptor_uay485$_0 = new PluginGeneratedSerialDescriptor('RunCommand', this, 2);
    this.descriptor.addElement_ivxn3r$('name', false);
    this.descriptor.addElement_ivxn3r$('parameters', false);
    RunCommand$$serializer_instance = this;
  }
  Object.defineProperty(RunCommand$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_uay485$_0;
    }
  });
  RunCommand$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeStringElement_iij8qq$(this.descriptor, 0, value.name);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 1, new ArrayListSerializer(internal.StringSerializer), value.parameters);
    output.endStructure_24f42q$(this.descriptor);
  };
  RunCommand$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeStringElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeSerializableElement_12e8id$(this.descriptor, 1, new ArrayListSerializer(internal.StringSerializer), local1);
          bitMask0 |= 2;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return RunCommand_init(bitMask0, local0, local1, null);
  };
  RunCommand$$serializer.prototype.childSerializers = function () {
    return [internal.StringSerializer, new ArrayListSerializer(internal.StringSerializer)];
  };
  RunCommand$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var RunCommand$$serializer_instance = null;
  function RunCommand$$serializer_getInstance() {
    if (RunCommand$$serializer_instance === null) {
      new RunCommand$$serializer();
    }
    return RunCommand$$serializer_instance;
  }
  function RunCommand_init(seen1, name, parameters, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(RunCommand.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('name');
    else
      $this.name = name;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('parameters');
    else
      $this.parameters = parameters;
    return $this;
  }
  RunCommand.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'RunCommand',
    interfaces: [Message]
  };
  function CommandOk() {
    CommandOk_instance = this;
    Message.call(this);
  }
  CommandOk.prototype.serializer = function () {
    return new ObjectSerializer('CommandOk', CommandOk_getInstance());
  };
  CommandOk.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'CommandOk',
    interfaces: [SerializerFactory, Message]
  };
  var CommandOk_instance = null;
  function CommandOk_getInstance() {
    if (CommandOk_instance === null) {
      new CommandOk();
    }
    return CommandOk_instance;
  }
  function CommandError(message) {
    CommandError$Companion_getInstance();
    Message.call(this);
    this.message = message;
  }
  function CommandError$Companion() {
    CommandError$Companion_instance = this;
  }
  CommandError$Companion.prototype.serializer = function () {
    return CommandError$$serializer_getInstance();
  };
  CommandError$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var CommandError$Companion_instance = null;
  function CommandError$Companion_getInstance() {
    if (CommandError$Companion_instance === null) {
      new CommandError$Companion();
    }
    return CommandError$Companion_instance;
  }
  function CommandError$$serializer() {
    this.descriptor_d0we72$_0 = new PluginGeneratedSerialDescriptor('CommandError', this, 1);
    this.descriptor.addElement_ivxn3r$('message', false);
    CommandError$$serializer_instance = this;
  }
  Object.defineProperty(CommandError$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_d0we72$_0;
    }
  });
  CommandError$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeStringElement_iij8qq$(this.descriptor, 0, value.message);
    output.endStructure_24f42q$(this.descriptor);
  };
  CommandError$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeStringElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return CommandError_init(bitMask0, local0, null);
  };
  CommandError$$serializer.prototype.childSerializers = function () {
    return [internal.StringSerializer];
  };
  CommandError$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var CommandError$$serializer_instance = null;
  function CommandError$$serializer_getInstance() {
    if (CommandError$$serializer_instance === null) {
      new CommandError$$serializer();
    }
    return CommandError$$serializer_instance;
  }
  function CommandError_init(seen1, message, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(CommandError.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('message');
    else
      $this.message = message;
    return $this;
  }
  CommandError.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'CommandError',
    interfaces: [Message]
  };
  function ChatMessage(fromId, str, toId) {
    ChatMessage$Companion_getInstance();
    if (toId === void 0)
      toId = null;
    Message.call(this);
    this.fromId = fromId;
    this.str = str;
    this.toId = toId;
  }
  function ChatMessage$Companion() {
    ChatMessage$Companion_instance = this;
  }
  ChatMessage$Companion.prototype.serializer = function () {
    return ChatMessage$$serializer_getInstance();
  };
  ChatMessage$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var ChatMessage$Companion_instance = null;
  function ChatMessage$Companion_getInstance() {
    if (ChatMessage$Companion_instance === null) {
      new ChatMessage$Companion();
    }
    return ChatMessage$Companion_instance;
  }
  function ChatMessage$$serializer() {
    this.descriptor_cebi18$_0 = new PluginGeneratedSerialDescriptor('ChatMessage', this, 3);
    this.descriptor.addElement_ivxn3r$('fromId', false);
    this.descriptor.addElement_ivxn3r$('str', false);
    this.descriptor.addElement_ivxn3r$('toId', true);
    ChatMessage$$serializer_instance = this;
  }
  Object.defineProperty(ChatMessage$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_cebi18$_0;
    }
  });
  ChatMessage$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.fromId);
    output.encodeStringElement_iij8qq$(this.descriptor, 1, value.str);
    if (!equals(value.toId, null) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 2))
      output.encodeNullableSerializableElement_qw92s8$(this.descriptor, 2, internal.IntSerializer, value.toId);
    output.endStructure_24f42q$(this.descriptor);
  };
  ChatMessage$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeStringElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeNullableSerializableElement_8viuyw$(this.descriptor, 2, internal.IntSerializer, local2);
          bitMask0 |= 4;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return ChatMessage_init(bitMask0, local0, local1, local2, null);
  };
  ChatMessage$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.StringSerializer, new NullableSerializer(internal.IntSerializer)];
  };
  ChatMessage$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var ChatMessage$$serializer_instance = null;
  function ChatMessage$$serializer_getInstance() {
    if (ChatMessage$$serializer_instance === null) {
      new ChatMessage$$serializer();
    }
    return ChatMessage$$serializer_instance;
  }
  function ChatMessage_init(seen1, fromId, str, toId, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(ChatMessage.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('fromId');
    else
      $this.fromId = fromId;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('str');
    else
      $this.str = str;
    if ((seen1 & 4) === 0)
      $this.toId = null;
    else
      $this.toId = toId;
    return $this;
  }
  ChatMessage.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'ChatMessage',
    interfaces: [Message]
  };
  ChatMessage.prototype.component1 = function () {
    return this.fromId;
  };
  ChatMessage.prototype.component2 = function () {
    return this.str;
  };
  ChatMessage.prototype.component3 = function () {
    return this.toId;
  };
  ChatMessage.prototype.copy_w6pxgb$ = function (fromId, str, toId) {
    return new ChatMessage(fromId === void 0 ? this.fromId : fromId, str === void 0 ? this.str : str, toId === void 0 ? this.toId : toId);
  };
  ChatMessage.prototype.toString = function () {
    return 'ChatMessage(fromId=' + Kotlin.toString(this.fromId) + (', str=' + Kotlin.toString(this.str)) + (', toId=' + Kotlin.toString(this.toId)) + ')';
  };
  ChatMessage.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.fromId) | 0;
    result = result * 31 + Kotlin.hashCode(this.str) | 0;
    result = result * 31 + Kotlin.hashCode(this.toId) | 0;
    return result;
  };
  ChatMessage.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.fromId, other.fromId) && Kotlin.equals(this.str, other.str) && Kotlin.equals(this.toId, other.toId)))));
  };
  function ScoreSheetData(scores) {
    ScoreSheetData$Companion_getInstance();
    Message.call(this);
    this.scores = scores;
  }
  function ScoreSheetData$Companion() {
    ScoreSheetData$Companion_instance = this;
  }
  ScoreSheetData$Companion.prototype.serializer = function () {
    return ScoreSheetData$$serializer_getInstance();
  };
  ScoreSheetData$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var ScoreSheetData$Companion_instance = null;
  function ScoreSheetData$Companion_getInstance() {
    if (ScoreSheetData$Companion_instance === null) {
      new ScoreSheetData$Companion();
    }
    return ScoreSheetData$Companion_instance;
  }
  function ScoreSheetData$$serializer() {
    this.descriptor_frj93w$_0 = new PluginGeneratedSerialDescriptor('ScoreSheetData', this, 1);
    this.descriptor.addElement_ivxn3r$('scores', false);
    ScoreSheetData$$serializer_instance = this;
  }
  Object.defineProperty(ScoreSheetData$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_frj93w$_0;
    }
  });
  ScoreSheetData$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 0, new ArrayListSerializer(new ArrayListSerializer(internal.DoubleSerializer)), value.scores);
    output.endStructure_24f42q$(this.descriptor);
  };
  ScoreSheetData$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeSerializableElement_12e8id$(this.descriptor, 0, new ArrayListSerializer(new ArrayListSerializer(internal.DoubleSerializer)), local0);
          bitMask0 |= 1;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return ScoreSheetData_init(bitMask0, local0, null);
  };
  ScoreSheetData$$serializer.prototype.childSerializers = function () {
    return [new ArrayListSerializer(new ArrayListSerializer(internal.DoubleSerializer))];
  };
  ScoreSheetData$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var ScoreSheetData$$serializer_instance = null;
  function ScoreSheetData$$serializer_getInstance() {
    if (ScoreSheetData$$serializer_instance === null) {
      new ScoreSheetData$$serializer();
    }
    return ScoreSheetData$$serializer_instance;
  }
  function ScoreSheetData_init(seen1, scores, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(ScoreSheetData.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('scores');
    else
      $this.scores = scores;
    return $this;
  }
  ScoreSheetData.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'ScoreSheetData',
    interfaces: [Message]
  };
  ScoreSheetData.prototype.component1 = function () {
    return this.scores;
  };
  ScoreSheetData.prototype.copy_38ehy6$ = function (scores) {
    return new ScoreSheetData(scores === void 0 ? this.scores : scores);
  };
  ScoreSheetData.prototype.toString = function () {
    return 'ScoreSheetData(scores=' + Kotlin.toString(this.scores) + ')';
  };
  ScoreSheetData.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.scores) | 0;
    return result;
  };
  ScoreSheetData.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && Kotlin.equals(this.scores, other.scores))));
  };
  function MouseHighlight(id, x, y, on) {
    MouseHighlight$Companion_getInstance();
    this.id = id;
    this.x = x;
    this.y = y;
    this.on = on;
  }
  function MouseHighlight$Companion() {
    MouseHighlight$Companion_instance = this;
  }
  MouseHighlight$Companion.prototype.serializer = function () {
    return MouseHighlight$$serializer_getInstance();
  };
  MouseHighlight$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var MouseHighlight$Companion_instance = null;
  function MouseHighlight$Companion_getInstance() {
    if (MouseHighlight$Companion_instance === null) {
      new MouseHighlight$Companion();
    }
    return MouseHighlight$Companion_instance;
  }
  function MouseHighlight$$serializer() {
    this.descriptor_9h4a8c$_0 = new PluginGeneratedSerialDescriptor('MouseHighlight', this, 4);
    this.descriptor.addElement_ivxn3r$('id', false);
    this.descriptor.addElement_ivxn3r$('x', false);
    this.descriptor.addElement_ivxn3r$('y', false);
    this.descriptor.addElement_ivxn3r$('on', false);
    MouseHighlight$$serializer_instance = this;
  }
  Object.defineProperty(MouseHighlight$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_9h4a8c$_0;
    }
  });
  MouseHighlight$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.encodeIntElement_ptg7oe$(this.descriptor, 1, value.x);
    output.encodeIntElement_ptg7oe$(this.descriptor, 2, value.y);
    output.encodeNullableSerializableElement_qw92s8$(this.descriptor, 3, internal.BooleanSerializer, value.on);
    output.endStructure_24f42q$(this.descriptor);
  };
  MouseHighlight$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeIntElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeIntElement_szpzho$(this.descriptor, 2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeNullableSerializableElement_8viuyw$(this.descriptor, 3, internal.BooleanSerializer, local3);
          bitMask0 |= 8;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return MouseHighlight_init(bitMask0, local0, local1, local2, local3, null);
  };
  MouseHighlight$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, new NullableSerializer(internal.BooleanSerializer)];
  };
  MouseHighlight$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var MouseHighlight$$serializer_instance = null;
  function MouseHighlight$$serializer_getInstance() {
    if (MouseHighlight$$serializer_instance === null) {
      new MouseHighlight$$serializer();
    }
    return MouseHighlight$$serializer_instance;
  }
  function MouseHighlight_init(seen1, id, x, y, on, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(MouseHighlight.prototype);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id = id;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('x');
    else
      $this.x = x;
    if ((seen1 & 4) === 0)
      throw MissingFieldException_init('y');
    else
      $this.y = y;
    if ((seen1 & 8) === 0)
      throw MissingFieldException_init('on');
    else
      $this.on = on;
    return $this;
  }
  MouseHighlight.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'MouseHighlight',
    interfaces: []
  };
  MouseHighlight.prototype.component1 = function () {
    return this.id;
  };
  MouseHighlight.prototype.component2 = function () {
    return this.x;
  };
  MouseHighlight.prototype.component3 = function () {
    return this.y;
  };
  MouseHighlight.prototype.component4 = function () {
    return this.on;
  };
  MouseHighlight.prototype.copy_zgupza$ = function (id, x, y, on) {
    return new MouseHighlight(id === void 0 ? this.id : id, x === void 0 ? this.x : x, y === void 0 ? this.y : y, on === void 0 ? this.on : on);
  };
  MouseHighlight.prototype.toString = function () {
    return 'MouseHighlight(id=' + Kotlin.toString(this.id) + (', x=' + Kotlin.toString(this.x)) + (', y=' + Kotlin.toString(this.y)) + (', on=' + Kotlin.toString(this.on)) + ')';
  };
  MouseHighlight.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.id) | 0;
    result = result * 31 + Kotlin.hashCode(this.x) | 0;
    result = result * 31 + Kotlin.hashCode(this.y) | 0;
    result = result * 31 + Kotlin.hashCode(this.on) | 0;
    return result;
  };
  MouseHighlight.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.id, other.id) && Kotlin.equals(this.x, other.x) && Kotlin.equals(this.y, other.y) && Kotlin.equals(this.on, other.on)))));
  };
  function HighlightMouse(playerId, x, y, state) {
    HighlightMouse$Companion_getInstance();
    Message.call(this);
    this.playerId = playerId;
    this.x = x;
    this.y = y;
    this.state = state;
  }
  function HighlightMouse$Companion() {
    HighlightMouse$Companion_instance = this;
  }
  HighlightMouse$Companion.prototype.serializer = function () {
    return HighlightMouse$$serializer_getInstance();
  };
  HighlightMouse$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var HighlightMouse$Companion_instance = null;
  function HighlightMouse$Companion_getInstance() {
    if (HighlightMouse$Companion_instance === null) {
      new HighlightMouse$Companion();
    }
    return HighlightMouse$Companion_instance;
  }
  function HighlightMouse$$serializer() {
    this.descriptor_fjch6y$_0 = new PluginGeneratedSerialDescriptor('HighlightMouse', this, 4);
    this.descriptor.addElement_ivxn3r$('playerId', false);
    this.descriptor.addElement_ivxn3r$('x', false);
    this.descriptor.addElement_ivxn3r$('y', false);
    this.descriptor.addElement_ivxn3r$('state', false);
    HighlightMouse$$serializer_instance = this;
  }
  Object.defineProperty(HighlightMouse$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_fjch6y$_0;
    }
  });
  HighlightMouse$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.playerId);
    output.encodeIntElement_ptg7oe$(this.descriptor, 1, value.x);
    output.encodeIntElement_ptg7oe$(this.descriptor, 2, value.y);
    output.encodeNullableSerializableElement_qw92s8$(this.descriptor, 3, internal.BooleanSerializer, value.state);
    output.endStructure_24f42q$(this.descriptor);
  };
  HighlightMouse$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeIntElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeIntElement_szpzho$(this.descriptor, 2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeNullableSerializableElement_8viuyw$(this.descriptor, 3, internal.BooleanSerializer, local3);
          bitMask0 |= 8;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return HighlightMouse_init(bitMask0, local0, local1, local2, local3, null);
  };
  HighlightMouse$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, new NullableSerializer(internal.BooleanSerializer)];
  };
  HighlightMouse$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var HighlightMouse$$serializer_instance = null;
  function HighlightMouse$$serializer_getInstance() {
    if (HighlightMouse$$serializer_instance === null) {
      new HighlightMouse$$serializer();
    }
    return HighlightMouse$$serializer_instance;
  }
  function HighlightMouse_init(seen1, playerId, x, y, state, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(HighlightMouse.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('playerId');
    else
      $this.playerId = playerId;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('x');
    else
      $this.x = x;
    if ((seen1 & 4) === 0)
      throw MissingFieldException_init('y');
    else
      $this.y = y;
    if ((seen1 & 8) === 0)
      throw MissingFieldException_init('state');
    else
      $this.state = state;
    return $this;
  }
  HighlightMouse.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'HighlightMouse',
    interfaces: [Message]
  };
  HighlightMouse.prototype.component1 = function () {
    return this.playerId;
  };
  HighlightMouse.prototype.component2 = function () {
    return this.x;
  };
  HighlightMouse.prototype.component3 = function () {
    return this.y;
  };
  HighlightMouse.prototype.component4 = function () {
    return this.state;
  };
  HighlightMouse.prototype.copy_zgupza$ = function (playerId, x, y, state) {
    return new HighlightMouse(playerId === void 0 ? this.playerId : playerId, x === void 0 ? this.x : x, y === void 0 ? this.y : y, state === void 0 ? this.state : state);
  };
  HighlightMouse.prototype.toString = function () {
    return 'HighlightMouse(playerId=' + Kotlin.toString(this.playerId) + (', x=' + Kotlin.toString(this.x)) + (', y=' + Kotlin.toString(this.y)) + (', state=' + Kotlin.toString(this.state)) + ')';
  };
  HighlightMouse.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.playerId) | 0;
    result = result * 31 + Kotlin.hashCode(this.x) | 0;
    result = result * 31 + Kotlin.hashCode(this.y) | 0;
    result = result * 31 + Kotlin.hashCode(this.state) | 0;
    return result;
  };
  HighlightMouse.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.playerId, other.playerId) && Kotlin.equals(this.x, other.x) && Kotlin.equals(this.y, other.y) && Kotlin.equals(this.state, other.state)))));
  };
  function AddBin() {
    AddBin_instance = this;
    Message.call(this);
  }
  AddBin.prototype.serializer = function () {
    return new ObjectSerializer('AddBin', AddBin_getInstance());
  };
  AddBin.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'AddBin',
    interfaces: [SerializerFactory, Message]
  };
  var AddBin_instance = null;
  function AddBin_getInstance() {
    if (AddBin_instance === null) {
      new AddBin();
    }
    return AddBin_instance;
  }
  function AddToBin(id) {
    AddToBin$Companion_getInstance();
    Message.call(this);
    this.id = id;
  }
  function AddToBin$Companion() {
    AddToBin$Companion_instance = this;
  }
  AddToBin$Companion.prototype.serializer = function () {
    return AddToBin$$serializer_getInstance();
  };
  AddToBin$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var AddToBin$Companion_instance = null;
  function AddToBin$Companion_getInstance() {
    if (AddToBin$Companion_instance === null) {
      new AddToBin$Companion();
    }
    return AddToBin$Companion_instance;
  }
  function AddToBin$$serializer() {
    this.descriptor_6pt7o0$_0 = new PluginGeneratedSerialDescriptor('AddToBin', this, 1);
    this.descriptor.addElement_ivxn3r$('id', false);
    AddToBin$$serializer_instance = this;
  }
  Object.defineProperty(AddToBin$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_6pt7o0$_0;
    }
  });
  AddToBin$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.endStructure_24f42q$(this.descriptor);
  };
  AddToBin$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return AddToBin_init(bitMask0, local0, null);
  };
  AddToBin$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer];
  };
  AddToBin$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var AddToBin$$serializer_instance = null;
  function AddToBin$$serializer_getInstance() {
    if (AddToBin$$serializer_instance === null) {
      new AddToBin$$serializer();
    }
    return AddToBin$$serializer_instance;
  }
  function AddToBin_init(seen1, id, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(AddToBin.prototype);
    $this = Message_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id = id;
    return $this;
  }
  AddToBin.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'AddToBin',
    interfaces: [Message]
  };
  function RestoreFromBin() {
    RestoreFromBin_instance = this;
    Message.call(this);
  }
  RestoreFromBin.prototype.serializer = function () {
    return new ObjectSerializer('RestoreFromBin', RestoreFromBin_getInstance());
  };
  RestoreFromBin.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'RestoreFromBin',
    interfaces: [SerializerFactory, Message]
  };
  var RestoreFromBin_instance = null;
  function RestoreFromBin_getInstance() {
    if (RestoreFromBin_instance === null) {
      new RestoreFromBin();
    }
    return RestoreFromBin_instance;
  }
  function Avatar(id, x, y, playerId, draggable) {
    Avatar$Companion_getInstance();
    if (draggable === void 0)
      draggable = false;
    this.id_14arob$_0 = id;
    this.x_g041ju$_0 = x;
    this.y_g041iz$_0 = y;
    this.playerId = playerId;
    this.draggable_osl9hr$_0 = draggable;
    this.privateToPlayerId_gg2070$_0 = null;
    this.draggingByPlayerId_c56ydw$_0 = null;
    this.side = 0;
  }
  Object.defineProperty(Avatar.prototype, 'id', {
    get: function () {
      return this.id_14arob$_0;
    }
  });
  Object.defineProperty(Avatar.prototype, 'x', {
    get: function () {
      return this.x_g041ju$_0;
    },
    set: function (x) {
      this.x_g041ju$_0 = x;
    }
  });
  Object.defineProperty(Avatar.prototype, 'y', {
    get: function () {
      return this.y_g041iz$_0;
    },
    set: function (y) {
      this.y_g041iz$_0 = y;
    }
  });
  Object.defineProperty(Avatar.prototype, 'draggable', {
    get: function () {
      return this.draggable_osl9hr$_0;
    },
    set: function (draggable) {
      this.draggable_osl9hr$_0 = draggable;
    }
  });
  Object.defineProperty(Avatar.prototype, 'name', {
    configurable: true,
    get: function () {
      return 'avatar' + this.playerId;
    }
  });
  Object.defineProperty(Avatar.prototype, 'privateToPlayerId', {
    configurable: true,
    get: function () {
      return this.privateToPlayerId_gg2070$_0;
    },
    set: function (privateToPlayerId) {
      this.privateToPlayerId_gg2070$_0 = privateToPlayerId;
    }
  });
  Object.defineProperty(Avatar.prototype, 'draggingByPlayerId', {
    configurable: true,
    get: function () {
      return this.draggingByPlayerId_c56ydw$_0;
    },
    set: function (draggingByPlayerId) {
      this.draggingByPlayerId_c56ydw$_0 = draggingByPlayerId;
    }
  });
  Avatar.prototype.copy_za3lpa$$default = function (newId) {
    return new Avatar(newId, this.x, this.y, this.playerId, this.draggable);
  };
  Avatar.prototype.toString = function () {
    return 'Avatar#' + this.id + ' : player#' + this.playerId + ' @ ' + this.x + ',' + this.y;
  };
  function Avatar$Companion() {
    Avatar$Companion_instance = this;
  }
  Avatar$Companion.prototype.serializer = function () {
    return Avatar$$serializer_getInstance();
  };
  Avatar$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var Avatar$Companion_instance = null;
  function Avatar$Companion_getInstance() {
    if (Avatar$Companion_instance === null) {
      new Avatar$Companion();
    }
    return Avatar$Companion_instance;
  }
  function Avatar$$serializer() {
    this.descriptor_w194en$_0 = new PluginGeneratedSerialDescriptor('uk.co.nickthecoder.gamescupboard.common.Avatar', this, 8);
    this.descriptor.addElement_ivxn3r$('id', false);
    this.descriptor.addElement_ivxn3r$('x', false);
    this.descriptor.addElement_ivxn3r$('y', false);
    this.descriptor.addElement_ivxn3r$('playerId', false);
    this.descriptor.addElement_ivxn3r$('draggable', true);
    this.descriptor.addElement_ivxn3r$('privateToPlayerId', true);
    this.descriptor.addElement_ivxn3r$('draggingByPlayerId', true);
    this.descriptor.addElement_ivxn3r$('side', true);
    Avatar$$serializer_instance = this;
  }
  Object.defineProperty(Avatar$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_w194en$_0;
    }
  });
  Avatar$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.encodeIntElement_ptg7oe$(this.descriptor, 1, value.x);
    output.encodeIntElement_ptg7oe$(this.descriptor, 2, value.y);
    output.encodeIntElement_ptg7oe$(this.descriptor, 3, value.playerId);
    if (!equals(value.draggable, false) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 4))
      output.encodeBooleanElement_qh7jdn$(this.descriptor, 4, value.draggable);
    if (!equals(value.privateToPlayerId, null) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 5))
      output.encodeNullableSerializableElement_qw92s8$(this.descriptor, 5, internal.IntSerializer, value.privateToPlayerId);
    if (!equals(value.draggingByPlayerId, null) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 6))
      output.encodeNullableSerializableElement_qw92s8$(this.descriptor, 6, internal.IntSerializer, value.draggingByPlayerId);
    if (!equals(value.side, 0) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 7))
      output.encodeIntElement_ptg7oe$(this.descriptor, 7, value.side);
    output.endStructure_24f42q$(this.descriptor);
  };
  Avatar$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3
    , local4
    , local5
    , local6
    , local7;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeIntElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeIntElement_szpzho$(this.descriptor, 2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeIntElement_szpzho$(this.descriptor, 3);
          bitMask0 |= 8;
          break;
        case 4:
          local4 = input.decodeBooleanElement_szpzho$(this.descriptor, 4);
          bitMask0 |= 16;
          break;
        case 5:
          local5 = input.decodeNullableSerializableElement_8viuyw$(this.descriptor, 5, internal.IntSerializer, local5);
          bitMask0 |= 32;
          break;
        case 6:
          local6 = input.decodeNullableSerializableElement_8viuyw$(this.descriptor, 6, internal.IntSerializer, local6);
          bitMask0 |= 64;
          break;
        case 7:
          local7 = input.decodeIntElement_szpzho$(this.descriptor, 7);
          bitMask0 |= 128;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return Avatar_init(bitMask0, local0, local1, local2, local3, local4, local5, local6, local7, null);
  };
  Avatar$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, internal.BooleanSerializer, new NullableSerializer(internal.IntSerializer), new NullableSerializer(internal.IntSerializer), internal.IntSerializer];
  };
  Avatar$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var Avatar$$serializer_instance = null;
  function Avatar$$serializer_getInstance() {
    if (Avatar$$serializer_instance === null) {
      new Avatar$$serializer();
    }
    return Avatar$$serializer_instance;
  }
  function Avatar_init(seen1, id, x, y, playerId, draggable, privateToPlayerId, draggingByPlayerId, side, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(Avatar.prototype);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id_14arob$_0 = id;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('x');
    else
      $this.x_g041ju$_0 = x;
    if ((seen1 & 4) === 0)
      throw MissingFieldException_init('y');
    else
      $this.y_g041iz$_0 = y;
    if ((seen1 & 8) === 0)
      throw MissingFieldException_init('playerId');
    else
      $this.playerId = playerId;
    if ((seen1 & 16) === 0)
      $this.draggable_osl9hr$_0 = false;
    else
      $this.draggable_osl9hr$_0 = draggable;
    if ((seen1 & 32) === 0)
      $this.privateToPlayerId_gg2070$_0 = null;
    else
      $this.privateToPlayerId_gg2070$_0 = privateToPlayerId;
    if ((seen1 & 64) === 0)
      $this.draggingByPlayerId_c56ydw$_0 = null;
    else
      $this.draggingByPlayerId_c56ydw$_0 = draggingByPlayerId;
    if ((seen1 & 128) === 0)
      $this.side = 0;
    else
      $this.side = side;
    return $this;
  }
  Avatar.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'Avatar',
    interfaces: [GameObject]
  };
  function CommandButton(label, commandPrototype, x, y) {
    CommandButton$Companion_getInstance();
    this.label = label;
    this.commandPrototype = commandPrototype;
    this.x = x;
    this.y = y;
  }
  function CommandButton$Companion() {
    CommandButton$Companion_instance = this;
  }
  CommandButton$Companion.prototype.serializer = function () {
    return CommandButton$$serializer_getInstance();
  };
  CommandButton$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var CommandButton$Companion_instance = null;
  function CommandButton$Companion_getInstance() {
    if (CommandButton$Companion_instance === null) {
      new CommandButton$Companion();
    }
    return CommandButton$Companion_instance;
  }
  function CommandButton$$serializer() {
    this.descriptor_3nq57z$_0 = new PluginGeneratedSerialDescriptor('uk.co.nickthecoder.gamescupboard.common.CommandButton', this, 4);
    this.descriptor.addElement_ivxn3r$('label', false);
    this.descriptor.addElement_ivxn3r$('commandPrototype', false);
    this.descriptor.addElement_ivxn3r$('x', false);
    this.descriptor.addElement_ivxn3r$('y', false);
    CommandButton$$serializer_instance = this;
  }
  Object.defineProperty(CommandButton$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_3nq57z$_0;
    }
  });
  CommandButton$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeStringElement_iij8qq$(this.descriptor, 0, value.label);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 1, CommandPrototype$$serializer_getInstance(), value.commandPrototype);
    output.encodeIntElement_ptg7oe$(this.descriptor, 2, value.x);
    output.encodeIntElement_ptg7oe$(this.descriptor, 3, value.y);
    output.endStructure_24f42q$(this.descriptor);
  };
  CommandButton$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeStringElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeSerializableElement_12e8id$(this.descriptor, 1, CommandPrototype$$serializer_getInstance(), local1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeIntElement_szpzho$(this.descriptor, 2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeIntElement_szpzho$(this.descriptor, 3);
          bitMask0 |= 8;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return CommandButton_init(bitMask0, local0, local1, local2, local3, null);
  };
  CommandButton$$serializer.prototype.childSerializers = function () {
    return [internal.StringSerializer, CommandPrototype$$serializer_getInstance(), internal.IntSerializer, internal.IntSerializer];
  };
  CommandButton$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var CommandButton$$serializer_instance = null;
  function CommandButton$$serializer_getInstance() {
    if (CommandButton$$serializer_instance === null) {
      new CommandButton$$serializer();
    }
    return CommandButton$$serializer_instance;
  }
  function CommandButton_init(seen1, label, commandPrototype, x, y, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(CommandButton.prototype);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('label');
    else
      $this.label = label;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('commandPrototype');
    else
      $this.commandPrototype = commandPrototype;
    if ((seen1 & 4) === 0)
      throw MissingFieldException_init('x');
    else
      $this.x = x;
    if ((seen1 & 8) === 0)
      throw MissingFieldException_init('y');
    else
      $this.y = y;
    return $this;
  }
  CommandButton.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'CommandButton',
    interfaces: []
  };
  CommandButton.prototype.component1 = function () {
    return this.label;
  };
  CommandButton.prototype.component2 = function () {
    return this.commandPrototype;
  };
  CommandButton.prototype.component3 = function () {
    return this.x;
  };
  CommandButton.prototype.component4 = function () {
    return this.y;
  };
  CommandButton.prototype.copy_dvvgqy$ = function (label, commandPrototype, x, y) {
    return new CommandButton(label === void 0 ? this.label : label, commandPrototype === void 0 ? this.commandPrototype : commandPrototype, x === void 0 ? this.x : x, y === void 0 ? this.y : y);
  };
  CommandButton.prototype.toString = function () {
    return 'CommandButton(label=' + Kotlin.toString(this.label) + (', commandPrototype=' + Kotlin.toString(this.commandPrototype)) + (', x=' + Kotlin.toString(this.x)) + (', y=' + Kotlin.toString(this.y)) + ')';
  };
  CommandButton.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.label) | 0;
    result = result * 31 + Kotlin.hashCode(this.commandPrototype) | 0;
    result = result * 31 + Kotlin.hashCode(this.x) | 0;
    result = result * 31 + Kotlin.hashCode(this.y) | 0;
    return result;
  };
  CommandButton.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.label, other.label) && Kotlin.equals(this.commandPrototype, other.commandPrototype) && Kotlin.equals(this.x, other.x) && Kotlin.equals(this.y, other.y)))));
  };
  function CommandInfo(name, helpText, minParameters, maxParameters, parameterHelp) {
    CommandInfo$Companion_getInstance();
    if (minParameters === void 0)
      minParameters = 0;
    if (maxParameters === void 0)
      maxParameters = minParameters;
    if (parameterHelp === void 0)
      parameterHelp = emptyList();
    this.name = name;
    this.helpText = helpText;
    this.minParameters = minParameters;
    this.maxParameters = maxParameters;
    this.parameterHelp = parameterHelp;
  }
  function CommandInfo$Companion() {
    CommandInfo$Companion_instance = this;
  }
  CommandInfo$Companion.prototype.serializer = function () {
    return CommandInfo$$serializer_getInstance();
  };
  CommandInfo$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var CommandInfo$Companion_instance = null;
  function CommandInfo$Companion_getInstance() {
    if (CommandInfo$Companion_instance === null) {
      new CommandInfo$Companion();
    }
    return CommandInfo$Companion_instance;
  }
  function CommandInfo$$serializer() {
    this.descriptor_2fpte5$_0 = new PluginGeneratedSerialDescriptor('uk.co.nickthecoder.gamescupboard.common.CommandInfo', this, 5);
    this.descriptor.addElement_ivxn3r$('name', false);
    this.descriptor.addElement_ivxn3r$('helpText', false);
    this.descriptor.addElement_ivxn3r$('minParameters', true);
    this.descriptor.addElement_ivxn3r$('maxParameters', true);
    this.descriptor.addElement_ivxn3r$('parameterHelp', true);
    CommandInfo$$serializer_instance = this;
  }
  Object.defineProperty(CommandInfo$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_2fpte5$_0;
    }
  });
  CommandInfo$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeStringElement_iij8qq$(this.descriptor, 0, value.name);
    output.encodeStringElement_iij8qq$(this.descriptor, 1, value.helpText);
    if (!equals(value.minParameters, 0) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 2))
      output.encodeIntElement_ptg7oe$(this.descriptor, 2, value.minParameters);
    if (!equals(value.maxParameters, minParameters) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 3))
      output.encodeIntElement_ptg7oe$(this.descriptor, 3, value.maxParameters);
    if (!equals(value.parameterHelp, emptyList()) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 4))
      output.encodeSerializableElement_r4qlx7$(this.descriptor, 4, new ArrayListSerializer(internal.StringSerializer), value.parameterHelp);
    output.endStructure_24f42q$(this.descriptor);
  };
  CommandInfo$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3
    , local4;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeStringElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeStringElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeIntElement_szpzho$(this.descriptor, 2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeIntElement_szpzho$(this.descriptor, 3);
          bitMask0 |= 8;
          break;
        case 4:
          local4 = input.decodeSerializableElement_12e8id$(this.descriptor, 4, new ArrayListSerializer(internal.StringSerializer), local4);
          bitMask0 |= 16;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return CommandInfo_init(bitMask0, local0, local1, local2, local3, local4, null);
  };
  CommandInfo$$serializer.prototype.childSerializers = function () {
    return [internal.StringSerializer, internal.StringSerializer, internal.IntSerializer, internal.IntSerializer, new ArrayListSerializer(internal.StringSerializer)];
  };
  CommandInfo$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var CommandInfo$$serializer_instance = null;
  function CommandInfo$$serializer_getInstance() {
    if (CommandInfo$$serializer_instance === null) {
      new CommandInfo$$serializer();
    }
    return CommandInfo$$serializer_instance;
  }
  function CommandInfo_init(seen1, name, helpText, minParameters_0, maxParameters, parameterHelp, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(CommandInfo.prototype);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('name');
    else
      $this.name = name;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('helpText');
    else
      $this.helpText = helpText;
    if ((seen1 & 4) === 0)
      $this.minParameters = 0;
    else
      $this.minParameters = minParameters_0;
    if ((seen1 & 8) === 0)
      $this.maxParameters = minParameters;
    else
      $this.maxParameters = maxParameters;
    if ((seen1 & 16) === 0)
      $this.parameterHelp = emptyList();
    else
      $this.parameterHelp = parameterHelp;
    return $this;
  }
  CommandInfo.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'CommandInfo',
    interfaces: []
  };
  CommandInfo.prototype.component1 = function () {
    return this.name;
  };
  CommandInfo.prototype.component2 = function () {
    return this.helpText;
  };
  CommandInfo.prototype.component3 = function () {
    return this.minParameters;
  };
  CommandInfo.prototype.component4 = function () {
    return this.maxParameters;
  };
  CommandInfo.prototype.component5 = function () {
    return this.parameterHelp;
  };
  CommandInfo.prototype.copy_uhy02x$ = function (name, helpText, minParameters, maxParameters, parameterHelp) {
    return new CommandInfo(name === void 0 ? this.name : name, helpText === void 0 ? this.helpText : helpText, minParameters === void 0 ? this.minParameters : minParameters, maxParameters === void 0 ? this.maxParameters : maxParameters, parameterHelp === void 0 ? this.parameterHelp : parameterHelp);
  };
  CommandInfo.prototype.toString = function () {
    return 'CommandInfo(name=' + Kotlin.toString(this.name) + (', helpText=' + Kotlin.toString(this.helpText)) + (', minParameters=' + Kotlin.toString(this.minParameters)) + (', maxParameters=' + Kotlin.toString(this.maxParameters)) + (', parameterHelp=' + Kotlin.toString(this.parameterHelp)) + ')';
  };
  CommandInfo.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.name) | 0;
    result = result * 31 + Kotlin.hashCode(this.helpText) | 0;
    result = result * 31 + Kotlin.hashCode(this.minParameters) | 0;
    result = result * 31 + Kotlin.hashCode(this.maxParameters) | 0;
    result = result * 31 + Kotlin.hashCode(this.parameterHelp) | 0;
    return result;
  };
  CommandInfo.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.name, other.name) && Kotlin.equals(this.helpText, other.helpText) && Kotlin.equals(this.minParameters, other.minParameters) && Kotlin.equals(this.maxParameters, other.maxParameters) && Kotlin.equals(this.parameterHelp, other.parameterHelp)))));
  };
  function CommandPrototype(label, commandName, parameters, isComplete, objectNames) {
    CommandPrototype$Companion_getInstance();
    if (parameters === void 0)
      parameters = emptyList();
    if (isComplete === void 0)
      isComplete = false;
    if (objectNames === void 0)
      objectNames = emptyList();
    this.label = label;
    this.commandName = commandName;
    this.parameters = parameters;
    this.isComplete = isComplete;
    this.objectNames = objectNames;
  }
  function CommandPrototype$Companion() {
    CommandPrototype$Companion_instance = this;
  }
  CommandPrototype$Companion.prototype.serializer = function () {
    return CommandPrototype$$serializer_getInstance();
  };
  CommandPrototype$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var CommandPrototype$Companion_instance = null;
  function CommandPrototype$Companion_getInstance() {
    if (CommandPrototype$Companion_instance === null) {
      new CommandPrototype$Companion();
    }
    return CommandPrototype$Companion_instance;
  }
  function CommandPrototype$$serializer() {
    this.descriptor_2pwoi5$_0 = new PluginGeneratedSerialDescriptor('uk.co.nickthecoder.gamescupboard.common.CommandPrototype', this, 5);
    this.descriptor.addElement_ivxn3r$('label', false);
    this.descriptor.addElement_ivxn3r$('commandName', false);
    this.descriptor.addElement_ivxn3r$('parameters', true);
    this.descriptor.addElement_ivxn3r$('isComplete', true);
    this.descriptor.addElement_ivxn3r$('objectNames', true);
    CommandPrototype$$serializer_instance = this;
  }
  Object.defineProperty(CommandPrototype$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_2pwoi5$_0;
    }
  });
  CommandPrototype$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeStringElement_iij8qq$(this.descriptor, 0, value.label);
    output.encodeStringElement_iij8qq$(this.descriptor, 1, value.commandName);
    if (!equals(value.parameters, emptyList()) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 2))
      output.encodeSerializableElement_r4qlx7$(this.descriptor, 2, new ArrayListSerializer(internal.StringSerializer), value.parameters);
    if (!equals(value.isComplete, false) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 3))
      output.encodeBooleanElement_qh7jdn$(this.descriptor, 3, value.isComplete);
    if (!equals(value.objectNames, emptyList()) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 4))
      output.encodeSerializableElement_r4qlx7$(this.descriptor, 4, new ArrayListSerializer(internal.StringSerializer), value.objectNames);
    output.endStructure_24f42q$(this.descriptor);
  };
  CommandPrototype$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3
    , local4;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeStringElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeStringElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeSerializableElement_12e8id$(this.descriptor, 2, new ArrayListSerializer(internal.StringSerializer), local2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeBooleanElement_szpzho$(this.descriptor, 3);
          bitMask0 |= 8;
          break;
        case 4:
          local4 = input.decodeSerializableElement_12e8id$(this.descriptor, 4, new ArrayListSerializer(internal.StringSerializer), local4);
          bitMask0 |= 16;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return CommandPrototype_init(bitMask0, local0, local1, local2, local3, local4, null);
  };
  CommandPrototype$$serializer.prototype.childSerializers = function () {
    return [internal.StringSerializer, internal.StringSerializer, new ArrayListSerializer(internal.StringSerializer), internal.BooleanSerializer, new ArrayListSerializer(internal.StringSerializer)];
  };
  CommandPrototype$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var CommandPrototype$$serializer_instance = null;
  function CommandPrototype$$serializer_getInstance() {
    if (CommandPrototype$$serializer_instance === null) {
      new CommandPrototype$$serializer();
    }
    return CommandPrototype$$serializer_instance;
  }
  function CommandPrototype_init(seen1, label, commandName, parameters, isComplete, objectNames, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(CommandPrototype.prototype);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('label');
    else
      $this.label = label;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('commandName');
    else
      $this.commandName = commandName;
    if ((seen1 & 4) === 0)
      $this.parameters = emptyList();
    else
      $this.parameters = parameters;
    if ((seen1 & 8) === 0)
      $this.isComplete = false;
    else
      $this.isComplete = isComplete;
    if ((seen1 & 16) === 0)
      $this.objectNames = emptyList();
    else
      $this.objectNames = objectNames;
    return $this;
  }
  CommandPrototype.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'CommandPrototype',
    interfaces: []
  };
  CommandPrototype.prototype.component1 = function () {
    return this.label;
  };
  CommandPrototype.prototype.component2 = function () {
    return this.commandName;
  };
  CommandPrototype.prototype.component3 = function () {
    return this.parameters;
  };
  CommandPrototype.prototype.component4 = function () {
    return this.isComplete;
  };
  CommandPrototype.prototype.component5 = function () {
    return this.objectNames;
  };
  CommandPrototype.prototype.copy_ap2ep5$ = function (label, commandName, parameters, isComplete, objectNames) {
    return new CommandPrototype(label === void 0 ? this.label : label, commandName === void 0 ? this.commandName : commandName, parameters === void 0 ? this.parameters : parameters, isComplete === void 0 ? this.isComplete : isComplete, objectNames === void 0 ? this.objectNames : objectNames);
  };
  CommandPrototype.prototype.toString = function () {
    return 'CommandPrototype(label=' + Kotlin.toString(this.label) + (', commandName=' + Kotlin.toString(this.commandName)) + (', parameters=' + Kotlin.toString(this.parameters)) + (', isComplete=' + Kotlin.toString(this.isComplete)) + (', objectNames=' + Kotlin.toString(this.objectNames)) + ')';
  };
  CommandPrototype.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.label) | 0;
    result = result * 31 + Kotlin.hashCode(this.commandName) | 0;
    result = result * 31 + Kotlin.hashCode(this.parameters) | 0;
    result = result * 31 + Kotlin.hashCode(this.isComplete) | 0;
    result = result * 31 + Kotlin.hashCode(this.objectNames) | 0;
    return result;
  };
  CommandPrototype.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.label, other.label) && Kotlin.equals(this.commandName, other.commandName) && Kotlin.equals(this.parameters, other.parameters) && Kotlin.equals(this.isComplete, other.isComplete) && Kotlin.equals(this.objectNames, other.objectNames)))));
  };
  function FlippableImageObject(id, x, y, name, draggable, grid, gx, gy, altX, altY, isFaceUp) {
    FlippableImageObject$Companion_getInstance();
    if (name === void 0)
      name = '';
    if (draggable === void 0)
      draggable = true;
    if (altX === void 0)
      altX = gx;
    if (altY === void 0)
      altY = gy;
    this.id_ewqu9t$_0 = id;
    this.x_52aepq$_0 = x;
    this.y_52aeov$_0 = y;
    this.name_k6z5jj$_0 = name;
    this.draggable_9yzkoj$_0 = draggable;
    this.grid = grid;
    this.gx = gx;
    this.gy = gy;
    this.altX = altX;
    this.altY = altY;
    this.isFaceUp = isFaceUp;
    this.draggingByPlayerId_9x3gag$_0 = null;
    this.privateToPlayerId_7cotk0$_0 = null;
    this.regen_bbgun7$_0 = false;
    this.isCopy_kbq0wr$_0 = false;
  }
  Object.defineProperty(FlippableImageObject.prototype, 'id', {
    get: function () {
      return this.id_ewqu9t$_0;
    }
  });
  Object.defineProperty(FlippableImageObject.prototype, 'x', {
    get: function () {
      return this.x_52aepq$_0;
    },
    set: function (x) {
      this.x_52aepq$_0 = x;
    }
  });
  Object.defineProperty(FlippableImageObject.prototype, 'y', {
    get: function () {
      return this.y_52aeov$_0;
    },
    set: function (y) {
      this.y_52aeov$_0 = y;
    }
  });
  Object.defineProperty(FlippableImageObject.prototype, 'name', {
    get: function () {
      return this.name_k6z5jj$_0;
    }
  });
  Object.defineProperty(FlippableImageObject.prototype, 'draggable', {
    get: function () {
      return this.draggable_9yzkoj$_0;
    },
    set: function (draggable) {
      this.draggable_9yzkoj$_0 = draggable;
    }
  });
  Object.defineProperty(FlippableImageObject.prototype, 'draggingByPlayerId', {
    configurable: true,
    get: function () {
      return this.draggingByPlayerId_9x3gag$_0;
    },
    set: function (draggingByPlayerId) {
      this.draggingByPlayerId_9x3gag$_0 = draggingByPlayerId;
    }
  });
  Object.defineProperty(FlippableImageObject.prototype, 'privateToPlayerId', {
    configurable: true,
    get: function () {
      return this.privateToPlayerId_7cotk0$_0;
    },
    set: function (privateToPlayerId) {
      this.privateToPlayerId_7cotk0$_0 = privateToPlayerId;
    }
  });
  Object.defineProperty(FlippableImageObject.prototype, 'regen', {
    configurable: true,
    get: function () {
      return this.regen_bbgun7$_0;
    },
    set: function (regen) {
      this.regen_bbgun7$_0 = regen;
    }
  });
  Object.defineProperty(FlippableImageObject.prototype, 'isCopy', {
    configurable: true,
    get: function () {
      return this.isCopy_kbq0wr$_0;
    },
    set: function (isCopy) {
      this.isCopy_kbq0wr$_0 = isCopy;
    }
  });
  FlippableImageObject.prototype.copy_za3lpa$$default = function (newId) {
    var $receiver = new FlippableImageObject(newId, this.x, this.y, this.name, void 0, this.grid, this.gx, this.gy, this.altX, this.altY, this.isFaceUp);
    $receiver.draggable = this.draggable;
    $receiver.privateToPlayerId = this.privateToPlayerId;
    return $receiver;
  };
  FlippableImageObject.prototype.toString = function () {
    return 'FlippableImage#' + this.id + " : '" + this.grid.path + "' @ " + this.x + ',' + this.y;
  };
  function FlippableImageObject$Companion() {
    FlippableImageObject$Companion_instance = this;
  }
  FlippableImageObject$Companion.prototype.serializer = function () {
    return FlippableImageObject$$serializer_getInstance();
  };
  FlippableImageObject$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var FlippableImageObject$Companion_instance = null;
  function FlippableImageObject$Companion_getInstance() {
    if (FlippableImageObject$Companion_instance === null) {
      new FlippableImageObject$Companion();
    }
    return FlippableImageObject$Companion_instance;
  }
  function FlippableImageObject$$serializer() {
    this.descriptor_lshnf1$_0 = new PluginGeneratedSerialDescriptor('uk.co.nickthecoder.gamescupboard.common.FlippableImageObject', this, 15);
    this.descriptor.addElement_ivxn3r$('id', false);
    this.descriptor.addElement_ivxn3r$('x', false);
    this.descriptor.addElement_ivxn3r$('y', false);
    this.descriptor.addElement_ivxn3r$('name', true);
    this.descriptor.addElement_ivxn3r$('draggable', true);
    this.descriptor.addElement_ivxn3r$('grid', false);
    this.descriptor.addElement_ivxn3r$('gx', false);
    this.descriptor.addElement_ivxn3r$('gy', false);
    this.descriptor.addElement_ivxn3r$('altX', true);
    this.descriptor.addElement_ivxn3r$('altY', true);
    this.descriptor.addElement_ivxn3r$('isFaceUp', false);
    this.descriptor.addElement_ivxn3r$('draggingByPlayerId', true);
    this.descriptor.addElement_ivxn3r$('privateToPlayerId', true);
    this.descriptor.addElement_ivxn3r$('regen', true);
    this.descriptor.addElement_ivxn3r$('isCopy', true);
    FlippableImageObject$$serializer_instance = this;
  }
  Object.defineProperty(FlippableImageObject$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_lshnf1$_0;
    }
  });
  FlippableImageObject$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.encodeIntElement_ptg7oe$(this.descriptor, 1, value.x);
    output.encodeIntElement_ptg7oe$(this.descriptor, 2, value.y);
    if (!equals(value.name, '') || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 3))
      output.encodeStringElement_iij8qq$(this.descriptor, 3, value.name);
    if (!equals(value.draggable, true) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 4))
      output.encodeBooleanElement_qh7jdn$(this.descriptor, 4, value.draggable);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 5, Grid$$serializer_getInstance(), value.grid);
    output.encodeIntElement_ptg7oe$(this.descriptor, 6, value.gx);
    output.encodeIntElement_ptg7oe$(this.descriptor, 7, value.gy);
    if (!equals(value.altX, gx) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 8))
      output.encodeIntElement_ptg7oe$(this.descriptor, 8, value.altX);
    if (!equals(value.altY, gy) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 9))
      output.encodeIntElement_ptg7oe$(this.descriptor, 9, value.altY);
    output.encodeBooleanElement_qh7jdn$(this.descriptor, 10, value.isFaceUp);
    if (!equals(value.draggingByPlayerId, null) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 11))
      output.encodeNullableSerializableElement_qw92s8$(this.descriptor, 11, internal.IntSerializer, value.draggingByPlayerId);
    if (!equals(value.privateToPlayerId, null) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 12))
      output.encodeNullableSerializableElement_qw92s8$(this.descriptor, 12, internal.IntSerializer, value.privateToPlayerId);
    if (!equals(value.regen, false) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 13))
      output.encodeBooleanElement_qh7jdn$(this.descriptor, 13, value.regen);
    if (!equals(value.isCopy, false) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 14))
      output.encodeBooleanElement_qh7jdn$(this.descriptor, 14, value.isCopy);
    output.endStructure_24f42q$(this.descriptor);
  };
  FlippableImageObject$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3
    , local4
    , local5
    , local6
    , local7
    , local8
    , local9
    , local10
    , local11
    , local12
    , local13
    , local14;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeIntElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeIntElement_szpzho$(this.descriptor, 2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeStringElement_szpzho$(this.descriptor, 3);
          bitMask0 |= 8;
          break;
        case 4:
          local4 = input.decodeBooleanElement_szpzho$(this.descriptor, 4);
          bitMask0 |= 16;
          break;
        case 5:
          local5 = input.decodeSerializableElement_12e8id$(this.descriptor, 5, Grid$$serializer_getInstance(), local5);
          bitMask0 |= 32;
          break;
        case 6:
          local6 = input.decodeIntElement_szpzho$(this.descriptor, 6);
          bitMask0 |= 64;
          break;
        case 7:
          local7 = input.decodeIntElement_szpzho$(this.descriptor, 7);
          bitMask0 |= 128;
          break;
        case 8:
          local8 = input.decodeIntElement_szpzho$(this.descriptor, 8);
          bitMask0 |= 256;
          break;
        case 9:
          local9 = input.decodeIntElement_szpzho$(this.descriptor, 9);
          bitMask0 |= 512;
          break;
        case 10:
          local10 = input.decodeBooleanElement_szpzho$(this.descriptor, 10);
          bitMask0 |= 1024;
          break;
        case 11:
          local11 = input.decodeNullableSerializableElement_8viuyw$(this.descriptor, 11, internal.IntSerializer, local11);
          bitMask0 |= 2048;
          break;
        case 12:
          local12 = input.decodeNullableSerializableElement_8viuyw$(this.descriptor, 12, internal.IntSerializer, local12);
          bitMask0 |= 4096;
          break;
        case 13:
          local13 = input.decodeBooleanElement_szpzho$(this.descriptor, 13);
          bitMask0 |= 8192;
          break;
        case 14:
          local14 = input.decodeBooleanElement_szpzho$(this.descriptor, 14);
          bitMask0 |= 16384;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return FlippableImageObject_init(bitMask0, local0, local1, local2, local3, local4, local5, local6, local7, local8, local9, local10, local11, local12, local13, local14, null);
  };
  FlippableImageObject$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, internal.StringSerializer, internal.BooleanSerializer, Grid$$serializer_getInstance(), internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, internal.BooleanSerializer, new NullableSerializer(internal.IntSerializer), new NullableSerializer(internal.IntSerializer), internal.BooleanSerializer, internal.BooleanSerializer];
  };
  FlippableImageObject$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var FlippableImageObject$$serializer_instance = null;
  function FlippableImageObject$$serializer_getInstance() {
    if (FlippableImageObject$$serializer_instance === null) {
      new FlippableImageObject$$serializer();
    }
    return FlippableImageObject$$serializer_instance;
  }
  function FlippableImageObject_init(seen1, id, x, y, name, draggable, grid, gx_0, gy_0, altX, altY, isFaceUp, draggingByPlayerId, privateToPlayerId, regen, isCopy, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(FlippableImageObject.prototype);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id_ewqu9t$_0 = id;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('x');
    else
      $this.x_52aepq$_0 = x;
    if ((seen1 & 4) === 0)
      throw MissingFieldException_init('y');
    else
      $this.y_52aeov$_0 = y;
    if ((seen1 & 8) === 0)
      $this.name_k6z5jj$_0 = '';
    else
      $this.name_k6z5jj$_0 = name;
    if ((seen1 & 16) === 0)
      $this.draggable_9yzkoj$_0 = true;
    else
      $this.draggable_9yzkoj$_0 = draggable;
    if ((seen1 & 32) === 0)
      throw MissingFieldException_init('grid');
    else
      $this.grid = grid;
    if ((seen1 & 64) === 0)
      throw MissingFieldException_init('gx');
    else
      $this.gx = gx_0;
    if ((seen1 & 128) === 0)
      throw MissingFieldException_init('gy');
    else
      $this.gy = gy_0;
    if ((seen1 & 256) === 0)
      $this.altX = gx;
    else
      $this.altX = altX;
    if ((seen1 & 512) === 0)
      $this.altY = gy;
    else
      $this.altY = altY;
    if ((seen1 & 1024) === 0)
      throw MissingFieldException_init('isFaceUp');
    else
      $this.isFaceUp = isFaceUp;
    if ((seen1 & 2048) === 0)
      $this.draggingByPlayerId_9x3gag$_0 = null;
    else
      $this.draggingByPlayerId_9x3gag$_0 = draggingByPlayerId;
    if ((seen1 & 4096) === 0)
      $this.privateToPlayerId_7cotk0$_0 = null;
    else
      $this.privateToPlayerId_7cotk0$_0 = privateToPlayerId;
    if ((seen1 & 8192) === 0)
      $this.regen_bbgun7$_0 = false;
    else
      $this.regen_bbgun7$_0 = regen;
    if ((seen1 & 16384) === 0)
      $this.isCopy_kbq0wr$_0 = false;
    else
      $this.isCopy_kbq0wr$_0 = isCopy;
    return $this;
  }
  FlippableImageObject.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'FlippableImageObject',
    interfaces: [RegenGameObject, GameObject]
  };
  function GameObject() {
    GameObject$Companion_getInstance();
  }
  GameObject.prototype.newMessage = function () {
    return new AddObjects(listOf(this));
  };
  GameObject.prototype.moveMessage = function () {
    return new MoveObject(this.id, this.x, this.y, ChangeZOrder$NO_CHANGE_getInstance());
  };
  GameObject.prototype.removeMessage = function () {
    return new RemoveObjects(listOf(this.id));
  };
  GameObject.prototype.copy_za3lpa$ = function (newId, callback$default) {
    if (newId === void 0)
      newId = this.id;
    return callback$default ? callback$default(newId) : this.copy_za3lpa$$default(newId);
  };
  function GameObject$Companion() {
    GameObject$Companion_instance = this;
  }
  GameObject$Companion.prototype.serializer = function () {
    return new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.GameObject', getKClass(GameObject), [getKClass(Avatar), getKClass(FlippableImageObject), getKClass(GridImageObject), getKClass(ImageObject), getKClass(MultipleGridImageObject), getKClass(PieceAtPointCounter), getKClass(FlippableImageObject), getKClass(ImageObject), getKClass(TextObject)], [Avatar$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), GridImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), MultipleGridImageObject$$serializer_getInstance(), PieceAtPointCounter$$serializer_getInstance(), FlippableImageObject$$serializer_getInstance(), ImageObject$$serializer_getInstance(), TextObject$$serializer_getInstance()]);
  };
  GameObject$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: [SerializerFactory]
  };
  var GameObject$Companion_instance = null;
  function GameObject$Companion_getInstance() {
    if (GameObject$Companion_instance === null) {
      new GameObject$Companion();
    }
    return GameObject$Companion_instance;
  }
  GameObject.$metadata$ = {
    kind: Kind_INTERFACE,
    simpleName: 'GameObject',
    interfaces: []
  };
  function RegenGameObject() {
  }
  RegenGameObject.$metadata$ = {
    kind: Kind_INTERFACE,
    simpleName: 'RegenGameObject',
    interfaces: [GameObject]
  };
  function Grid(name, path, across, down, itemWidth, itemHeight) {
    Grid$Companion_getInstance();
    this.name = name;
    this.path = path;
    this.across = across;
    this.down = down;
    this.itemWidth = itemWidth;
    this.itemHeight = itemHeight;
  }
  function Grid$Companion() {
    Grid$Companion_instance = this;
  }
  Grid$Companion.prototype.serializer = function () {
    return Grid$$serializer_getInstance();
  };
  Grid$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var Grid$Companion_instance = null;
  function Grid$Companion_getInstance() {
    if (Grid$Companion_instance === null) {
      new Grid$Companion();
    }
    return Grid$Companion_instance;
  }
  function Grid$$serializer() {
    this.descriptor_ign5tw$_0 = new PluginGeneratedSerialDescriptor('uk.co.nickthecoder.gamescupboard.common.Grid', this, 6);
    this.descriptor.addElement_ivxn3r$('name', false);
    this.descriptor.addElement_ivxn3r$('path', false);
    this.descriptor.addElement_ivxn3r$('across', false);
    this.descriptor.addElement_ivxn3r$('down', false);
    this.descriptor.addElement_ivxn3r$('itemWidth', false);
    this.descriptor.addElement_ivxn3r$('itemHeight', false);
    Grid$$serializer_instance = this;
  }
  Object.defineProperty(Grid$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_ign5tw$_0;
    }
  });
  Grid$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeStringElement_iij8qq$(this.descriptor, 0, value.name);
    output.encodeStringElement_iij8qq$(this.descriptor, 1, value.path);
    output.encodeIntElement_ptg7oe$(this.descriptor, 2, value.across);
    output.encodeIntElement_ptg7oe$(this.descriptor, 3, value.down);
    output.encodeIntElement_ptg7oe$(this.descriptor, 4, value.itemWidth);
    output.encodeIntElement_ptg7oe$(this.descriptor, 5, value.itemHeight);
    output.endStructure_24f42q$(this.descriptor);
  };
  Grid$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3
    , local4
    , local5;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeStringElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeStringElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeIntElement_szpzho$(this.descriptor, 2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeIntElement_szpzho$(this.descriptor, 3);
          bitMask0 |= 8;
          break;
        case 4:
          local4 = input.decodeIntElement_szpzho$(this.descriptor, 4);
          bitMask0 |= 16;
          break;
        case 5:
          local5 = input.decodeIntElement_szpzho$(this.descriptor, 5);
          bitMask0 |= 32;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return Grid_init(bitMask0, local0, local1, local2, local3, local4, local5, null);
  };
  Grid$$serializer.prototype.childSerializers = function () {
    return [internal.StringSerializer, internal.StringSerializer, internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, internal.IntSerializer];
  };
  Grid$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var Grid$$serializer_instance = null;
  function Grid$$serializer_getInstance() {
    if (Grid$$serializer_instance === null) {
      new Grid$$serializer();
    }
    return Grid$$serializer_instance;
  }
  function Grid_init(seen1, name, path, across, down, itemWidth, itemHeight, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(Grid.prototype);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('name');
    else
      $this.name = name;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('path');
    else
      $this.path = path;
    if ((seen1 & 4) === 0)
      throw MissingFieldException_init('across');
    else
      $this.across = across;
    if ((seen1 & 8) === 0)
      throw MissingFieldException_init('down');
    else
      $this.down = down;
    if ((seen1 & 16) === 0)
      throw MissingFieldException_init('itemWidth');
    else
      $this.itemWidth = itemWidth;
    if ((seen1 & 32) === 0)
      throw MissingFieldException_init('itemHeight');
    else
      $this.itemHeight = itemHeight;
    return $this;
  }
  Grid.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'Grid',
    interfaces: []
  };
  Grid.prototype.component1 = function () {
    return this.name;
  };
  Grid.prototype.component2 = function () {
    return this.path;
  };
  Grid.prototype.component3 = function () {
    return this.across;
  };
  Grid.prototype.component4 = function () {
    return this.down;
  };
  Grid.prototype.component5 = function () {
    return this.itemWidth;
  };
  Grid.prototype.component6 = function () {
    return this.itemHeight;
  };
  Grid.prototype.copy_bt8x80$ = function (name, path, across, down, itemWidth, itemHeight) {
    return new Grid(name === void 0 ? this.name : name, path === void 0 ? this.path : path, across === void 0 ? this.across : across, down === void 0 ? this.down : down, itemWidth === void 0 ? this.itemWidth : itemWidth, itemHeight === void 0 ? this.itemHeight : itemHeight);
  };
  Grid.prototype.toString = function () {
    return 'Grid(name=' + Kotlin.toString(this.name) + (', path=' + Kotlin.toString(this.path)) + (', across=' + Kotlin.toString(this.across)) + (', down=' + Kotlin.toString(this.down)) + (', itemWidth=' + Kotlin.toString(this.itemWidth)) + (', itemHeight=' + Kotlin.toString(this.itemHeight)) + ')';
  };
  Grid.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.name) | 0;
    result = result * 31 + Kotlin.hashCode(this.path) | 0;
    result = result * 31 + Kotlin.hashCode(this.across) | 0;
    result = result * 31 + Kotlin.hashCode(this.down) | 0;
    result = result * 31 + Kotlin.hashCode(this.itemWidth) | 0;
    result = result * 31 + Kotlin.hashCode(this.itemHeight) | 0;
    return result;
  };
  Grid.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.name, other.name) && Kotlin.equals(this.path, other.path) && Kotlin.equals(this.across, other.across) && Kotlin.equals(this.down, other.down) && Kotlin.equals(this.itemWidth, other.itemWidth) && Kotlin.equals(this.itemHeight, other.itemHeight)))));
  };
  function GridImageObject(id, x, y, name, draggable, grid, gx, gy) {
    GridImageObject$Companion_getInstance();
    if (name === void 0)
      name = '';
    if (draggable === void 0)
      draggable = true;
    this.id_68b4mk$_0 = id;
    this.x_djotl9$_0 = x;
    this.y_djotm4$_0 = y;
    this.name_l4vpwc$_0 = name;
    this.draggable_q35d94$_0 = draggable;
    this.grid = grid;
    this.gx = gx;
    this.gy = gy;
    this.draggingByPlayerId_8xt3gt$_0 = null;
    this.privateToPlayerId_t9z02z$_0 = null;
  }
  Object.defineProperty(GridImageObject.prototype, 'id', {
    get: function () {
      return this.id_68b4mk$_0;
    }
  });
  Object.defineProperty(GridImageObject.prototype, 'x', {
    get: function () {
      return this.x_djotl9$_0;
    },
    set: function (x) {
      this.x_djotl9$_0 = x;
    }
  });
  Object.defineProperty(GridImageObject.prototype, 'y', {
    get: function () {
      return this.y_djotm4$_0;
    },
    set: function (y) {
      this.y_djotm4$_0 = y;
    }
  });
  Object.defineProperty(GridImageObject.prototype, 'name', {
    get: function () {
      return this.name_l4vpwc$_0;
    }
  });
  Object.defineProperty(GridImageObject.prototype, 'draggable', {
    get: function () {
      return this.draggable_q35d94$_0;
    },
    set: function (draggable) {
      this.draggable_q35d94$_0 = draggable;
    }
  });
  Object.defineProperty(GridImageObject.prototype, 'draggingByPlayerId', {
    configurable: true,
    get: function () {
      return this.draggingByPlayerId_8xt3gt$_0;
    },
    set: function (draggingByPlayerId) {
      this.draggingByPlayerId_8xt3gt$_0 = draggingByPlayerId;
    }
  });
  Object.defineProperty(GridImageObject.prototype, 'privateToPlayerId', {
    configurable: true,
    get: function () {
      return this.privateToPlayerId_t9z02z$_0;
    },
    set: function (privateToPlayerId) {
      this.privateToPlayerId_t9z02z$_0 = privateToPlayerId;
    }
  });
  GridImageObject.prototype.copy_za3lpa$$default = function (newId) {
    var $receiver = new GridImageObject(newId, this.x, this.y, this.name, void 0, this.grid, this.gx, this.gy);
    $receiver.draggable = this.draggable;
    $receiver.privateToPlayerId = this.privateToPlayerId;
    return $receiver;
  };
  GridImageObject.prototype.toString = function () {
    return 'GridImage#' + this.id + ' : ' + this.name + ' @ ' + this.x + ',' + this.y;
  };
  function GridImageObject$Companion() {
    GridImageObject$Companion_instance = this;
  }
  GridImageObject$Companion.prototype.serializer = function () {
    return GridImageObject$$serializer_getInstance();
  };
  GridImageObject$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var GridImageObject$Companion_instance = null;
  function GridImageObject$Companion_getInstance() {
    if (GridImageObject$Companion_instance === null) {
      new GridImageObject$Companion();
    }
    return GridImageObject$Companion_instance;
  }
  function GridImageObject$$serializer() {
    this.descriptor_jpmurs$_0 = new PluginGeneratedSerialDescriptor('uk.co.nickthecoder.gamescupboard.common.GridImageObject', this, 10);
    this.descriptor.addElement_ivxn3r$('id', false);
    this.descriptor.addElement_ivxn3r$('x', false);
    this.descriptor.addElement_ivxn3r$('y', false);
    this.descriptor.addElement_ivxn3r$('name', true);
    this.descriptor.addElement_ivxn3r$('draggable', true);
    this.descriptor.addElement_ivxn3r$('grid', false);
    this.descriptor.addElement_ivxn3r$('gx', false);
    this.descriptor.addElement_ivxn3r$('gy', false);
    this.descriptor.addElement_ivxn3r$('draggingByPlayerId', true);
    this.descriptor.addElement_ivxn3r$('privateToPlayerId', true);
    GridImageObject$$serializer_instance = this;
  }
  Object.defineProperty(GridImageObject$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_jpmurs$_0;
    }
  });
  GridImageObject$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.encodeIntElement_ptg7oe$(this.descriptor, 1, value.x);
    output.encodeIntElement_ptg7oe$(this.descriptor, 2, value.y);
    if (!equals(value.name, '') || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 3))
      output.encodeStringElement_iij8qq$(this.descriptor, 3, value.name);
    if (!equals(value.draggable, true) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 4))
      output.encodeBooleanElement_qh7jdn$(this.descriptor, 4, value.draggable);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 5, Grid$$serializer_getInstance(), value.grid);
    output.encodeIntElement_ptg7oe$(this.descriptor, 6, value.gx);
    output.encodeIntElement_ptg7oe$(this.descriptor, 7, value.gy);
    if (!equals(value.draggingByPlayerId, null) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 8))
      output.encodeNullableSerializableElement_qw92s8$(this.descriptor, 8, internal.IntSerializer, value.draggingByPlayerId);
    if (!equals(value.privateToPlayerId, null) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 9))
      output.encodeNullableSerializableElement_qw92s8$(this.descriptor, 9, internal.IntSerializer, value.privateToPlayerId);
    output.endStructure_24f42q$(this.descriptor);
  };
  GridImageObject$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3
    , local4
    , local5
    , local6
    , local7
    , local8
    , local9;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeIntElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeIntElement_szpzho$(this.descriptor, 2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeStringElement_szpzho$(this.descriptor, 3);
          bitMask0 |= 8;
          break;
        case 4:
          local4 = input.decodeBooleanElement_szpzho$(this.descriptor, 4);
          bitMask0 |= 16;
          break;
        case 5:
          local5 = input.decodeSerializableElement_12e8id$(this.descriptor, 5, Grid$$serializer_getInstance(), local5);
          bitMask0 |= 32;
          break;
        case 6:
          local6 = input.decodeIntElement_szpzho$(this.descriptor, 6);
          bitMask0 |= 64;
          break;
        case 7:
          local7 = input.decodeIntElement_szpzho$(this.descriptor, 7);
          bitMask0 |= 128;
          break;
        case 8:
          local8 = input.decodeNullableSerializableElement_8viuyw$(this.descriptor, 8, internal.IntSerializer, local8);
          bitMask0 |= 256;
          break;
        case 9:
          local9 = input.decodeNullableSerializableElement_8viuyw$(this.descriptor, 9, internal.IntSerializer, local9);
          bitMask0 |= 512;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return GridImageObject_init(bitMask0, local0, local1, local2, local3, local4, local5, local6, local7, local8, local9, null);
  };
  GridImageObject$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, internal.StringSerializer, internal.BooleanSerializer, Grid$$serializer_getInstance(), internal.IntSerializer, internal.IntSerializer, new NullableSerializer(internal.IntSerializer), new NullableSerializer(internal.IntSerializer)];
  };
  GridImageObject$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var GridImageObject$$serializer_instance = null;
  function GridImageObject$$serializer_getInstance() {
    if (GridImageObject$$serializer_instance === null) {
      new GridImageObject$$serializer();
    }
    return GridImageObject$$serializer_instance;
  }
  function GridImageObject_init(seen1, id, x, y, name, draggable, grid, gx, gy, draggingByPlayerId, privateToPlayerId, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(GridImageObject.prototype);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id_68b4mk$_0 = id;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('x');
    else
      $this.x_djotl9$_0 = x;
    if ((seen1 & 4) === 0)
      throw MissingFieldException_init('y');
    else
      $this.y_djotm4$_0 = y;
    if ((seen1 & 8) === 0)
      $this.name_l4vpwc$_0 = '';
    else
      $this.name_l4vpwc$_0 = name;
    if ((seen1 & 16) === 0)
      $this.draggable_q35d94$_0 = true;
    else
      $this.draggable_q35d94$_0 = draggable;
    if ((seen1 & 32) === 0)
      throw MissingFieldException_init('grid');
    else
      $this.grid = grid;
    if ((seen1 & 64) === 0)
      throw MissingFieldException_init('gx');
    else
      $this.gx = gx;
    if ((seen1 & 128) === 0)
      throw MissingFieldException_init('gy');
    else
      $this.gy = gy;
    if ((seen1 & 256) === 0)
      $this.draggingByPlayerId_8xt3gt$_0 = null;
    else
      $this.draggingByPlayerId_8xt3gt$_0 = draggingByPlayerId;
    if ((seen1 & 512) === 0)
      $this.privateToPlayerId_t9z02z$_0 = null;
    else
      $this.privateToPlayerId_t9z02z$_0 = privateToPlayerId;
    return $this;
  }
  GridImageObject.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'GridImageObject',
    interfaces: [GameObject]
  };
  function ImageObject(id, x, y, name, draggable, path, mirrorX, mirrorY) {
    ImageObject$Companion_getInstance();
    if (name === void 0)
      name = '';
    if (draggable === void 0)
      draggable = true;
    if (mirrorX === void 0)
      mirrorX = false;
    if (mirrorY === void 0)
      mirrorY = false;
    this.id_4yaoai$_0 = id;
    this.x_n2mkbr$_0 = x;
    this.y_n2mkcm$_0 = y;
    this.name_j4y8a$_0 = name;
    this.draggable_gl1tla$_0 = draggable;
    this.path = path;
    this.mirrorX = mirrorX;
    this.mirrorY = mirrorY;
    this.scale = 1.0;
    this.regen_ifjcg2$_0 = false;
    this.isCopy_j6ff12$_0 = false;
    this.draggingByPlayerId_30pjt9$_0 = null;
    this.privateToPlayerId_lin22j$_0 = null;
    this.isScalable = false;
  }
  Object.defineProperty(ImageObject.prototype, 'id', {
    get: function () {
      return this.id_4yaoai$_0;
    }
  });
  Object.defineProperty(ImageObject.prototype, 'x', {
    get: function () {
      return this.x_n2mkbr$_0;
    },
    set: function (x) {
      this.x_n2mkbr$_0 = x;
    }
  });
  Object.defineProperty(ImageObject.prototype, 'y', {
    get: function () {
      return this.y_n2mkcm$_0;
    },
    set: function (y) {
      this.y_n2mkcm$_0 = y;
    }
  });
  Object.defineProperty(ImageObject.prototype, 'name', {
    get: function () {
      return this.name_j4y8a$_0;
    }
  });
  Object.defineProperty(ImageObject.prototype, 'draggable', {
    get: function () {
      return this.draggable_gl1tla$_0;
    },
    set: function (draggable) {
      this.draggable_gl1tla$_0 = draggable;
    }
  });
  Object.defineProperty(ImageObject.prototype, 'regen', {
    configurable: true,
    get: function () {
      return this.regen_ifjcg2$_0;
    },
    set: function (regen) {
      this.regen_ifjcg2$_0 = regen;
    }
  });
  Object.defineProperty(ImageObject.prototype, 'isCopy', {
    configurable: true,
    get: function () {
      return this.isCopy_j6ff12$_0;
    },
    set: function (isCopy) {
      this.isCopy_j6ff12$_0 = isCopy;
    }
  });
  Object.defineProperty(ImageObject.prototype, 'draggingByPlayerId', {
    configurable: true,
    get: function () {
      return this.draggingByPlayerId_30pjt9$_0;
    },
    set: function (draggingByPlayerId) {
      this.draggingByPlayerId_30pjt9$_0 = draggingByPlayerId;
    }
  });
  Object.defineProperty(ImageObject.prototype, 'privateToPlayerId', {
    configurable: true,
    get: function () {
      return this.privateToPlayerId_lin22j$_0;
    },
    set: function (privateToPlayerId) {
      this.privateToPlayerId_lin22j$_0 = privateToPlayerId;
    }
  });
  ImageObject.prototype.copy_za3lpa$$default = function (newId) {
    var $receiver = new ImageObject(newId, this.x, this.y, this.name, void 0, this.path);
    $receiver.scale = this.scale;
    $receiver.draggable = this.draggable;
    $receiver.privateToPlayerId = this.privateToPlayerId;
    $receiver.isScalable = this.isScalable;
    $receiver.regen = this.regen;
    return $receiver;
  };
  ImageObject.prototype.toString = function () {
    return 'Image#' + this.id + " : '" + this.path + "' @ " + this.x + ',' + this.y;
  };
  function ImageObject$Companion() {
    ImageObject$Companion_instance = this;
  }
  ImageObject$Companion.prototype.serializer = function () {
    return ImageObject$$serializer_getInstance();
  };
  ImageObject$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var ImageObject$Companion_instance = null;
  function ImageObject$Companion_getInstance() {
    if (ImageObject$Companion_instance === null) {
      new ImageObject$Companion();
    }
    return ImageObject$Companion_instance;
  }
  function ImageObject$$serializer() {
    this.descriptor_rgjfu6$_0 = new PluginGeneratedSerialDescriptor('uk.co.nickthecoder.gamescupboard.common.ImageObject', this, 14);
    this.descriptor.addElement_ivxn3r$('id', false);
    this.descriptor.addElement_ivxn3r$('x', false);
    this.descriptor.addElement_ivxn3r$('y', false);
    this.descriptor.addElement_ivxn3r$('name', true);
    this.descriptor.addElement_ivxn3r$('draggable', true);
    this.descriptor.addElement_ivxn3r$('path', false);
    this.descriptor.addElement_ivxn3r$('mirrorX', true);
    this.descriptor.addElement_ivxn3r$('mirrorY', true);
    this.descriptor.addElement_ivxn3r$('scale', true);
    this.descriptor.addElement_ivxn3r$('regen', true);
    this.descriptor.addElement_ivxn3r$('isCopy', true);
    this.descriptor.addElement_ivxn3r$('draggingByPlayerId', true);
    this.descriptor.addElement_ivxn3r$('privateToPlayerId', true);
    this.descriptor.addElement_ivxn3r$('isScalable', true);
    ImageObject$$serializer_instance = this;
  }
  Object.defineProperty(ImageObject$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_rgjfu6$_0;
    }
  });
  ImageObject$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.encodeIntElement_ptg7oe$(this.descriptor, 1, value.x);
    output.encodeIntElement_ptg7oe$(this.descriptor, 2, value.y);
    if (!equals(value.name, '') || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 3))
      output.encodeStringElement_iij8qq$(this.descriptor, 3, value.name);
    if (!equals(value.draggable, true) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 4))
      output.encodeBooleanElement_qh7jdn$(this.descriptor, 4, value.draggable);
    output.encodeStringElement_iij8qq$(this.descriptor, 5, value.path);
    if (!equals(value.mirrorX, false) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 6))
      output.encodeBooleanElement_qh7jdn$(this.descriptor, 6, value.mirrorX);
    if (!equals(value.mirrorY, false) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 7))
      output.encodeBooleanElement_qh7jdn$(this.descriptor, 7, value.mirrorY);
    if (!equals(value.scale, 1.0) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 8))
      output.encodeDoubleElement_powrwi$(this.descriptor, 8, value.scale);
    if (!equals(value.regen, false) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 9))
      output.encodeBooleanElement_qh7jdn$(this.descriptor, 9, value.regen);
    if (!equals(value.isCopy, false) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 10))
      output.encodeBooleanElement_qh7jdn$(this.descriptor, 10, value.isCopy);
    if (!equals(value.draggingByPlayerId, null) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 11))
      output.encodeNullableSerializableElement_qw92s8$(this.descriptor, 11, internal.IntSerializer, value.draggingByPlayerId);
    if (!equals(value.privateToPlayerId, null) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 12))
      output.encodeNullableSerializableElement_qw92s8$(this.descriptor, 12, internal.IntSerializer, value.privateToPlayerId);
    if (!equals(value.isScalable, false) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 13))
      output.encodeBooleanElement_qh7jdn$(this.descriptor, 13, value.isScalable);
    output.endStructure_24f42q$(this.descriptor);
  };
  ImageObject$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3
    , local4
    , local5
    , local6
    , local7
    , local8
    , local9
    , local10
    , local11
    , local12
    , local13;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeIntElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeIntElement_szpzho$(this.descriptor, 2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeStringElement_szpzho$(this.descriptor, 3);
          bitMask0 |= 8;
          break;
        case 4:
          local4 = input.decodeBooleanElement_szpzho$(this.descriptor, 4);
          bitMask0 |= 16;
          break;
        case 5:
          local5 = input.decodeStringElement_szpzho$(this.descriptor, 5);
          bitMask0 |= 32;
          break;
        case 6:
          local6 = input.decodeBooleanElement_szpzho$(this.descriptor, 6);
          bitMask0 |= 64;
          break;
        case 7:
          local7 = input.decodeBooleanElement_szpzho$(this.descriptor, 7);
          bitMask0 |= 128;
          break;
        case 8:
          local8 = input.decodeDoubleElement_szpzho$(this.descriptor, 8);
          bitMask0 |= 256;
          break;
        case 9:
          local9 = input.decodeBooleanElement_szpzho$(this.descriptor, 9);
          bitMask0 |= 512;
          break;
        case 10:
          local10 = input.decodeBooleanElement_szpzho$(this.descriptor, 10);
          bitMask0 |= 1024;
          break;
        case 11:
          local11 = input.decodeNullableSerializableElement_8viuyw$(this.descriptor, 11, internal.IntSerializer, local11);
          bitMask0 |= 2048;
          break;
        case 12:
          local12 = input.decodeNullableSerializableElement_8viuyw$(this.descriptor, 12, internal.IntSerializer, local12);
          bitMask0 |= 4096;
          break;
        case 13:
          local13 = input.decodeBooleanElement_szpzho$(this.descriptor, 13);
          bitMask0 |= 8192;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return ImageObject_init(bitMask0, local0, local1, local2, local3, local4, local5, local6, local7, local8, local9, local10, local11, local12, local13, null);
  };
  ImageObject$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, internal.StringSerializer, internal.BooleanSerializer, internal.StringSerializer, internal.BooleanSerializer, internal.BooleanSerializer, internal.DoubleSerializer, internal.BooleanSerializer, internal.BooleanSerializer, new NullableSerializer(internal.IntSerializer), new NullableSerializer(internal.IntSerializer), internal.BooleanSerializer];
  };
  ImageObject$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var ImageObject$$serializer_instance = null;
  function ImageObject$$serializer_getInstance() {
    if (ImageObject$$serializer_instance === null) {
      new ImageObject$$serializer();
    }
    return ImageObject$$serializer_instance;
  }
  function ImageObject_init(seen1, id, x, y, name, draggable, path, mirrorX, mirrorY, scale, regen, isCopy, draggingByPlayerId, privateToPlayerId, isScalable, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(ImageObject.prototype);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id_4yaoai$_0 = id;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('x');
    else
      $this.x_n2mkbr$_0 = x;
    if ((seen1 & 4) === 0)
      throw MissingFieldException_init('y');
    else
      $this.y_n2mkcm$_0 = y;
    if ((seen1 & 8) === 0)
      $this.name_j4y8a$_0 = '';
    else
      $this.name_j4y8a$_0 = name;
    if ((seen1 & 16) === 0)
      $this.draggable_gl1tla$_0 = true;
    else
      $this.draggable_gl1tla$_0 = draggable;
    if ((seen1 & 32) === 0)
      throw MissingFieldException_init('path');
    else
      $this.path = path;
    if ((seen1 & 64) === 0)
      $this.mirrorX = false;
    else
      $this.mirrorX = mirrorX;
    if ((seen1 & 128) === 0)
      $this.mirrorY = false;
    else
      $this.mirrorY = mirrorY;
    if ((seen1 & 256) === 0)
      $this.scale = 1.0;
    else
      $this.scale = scale;
    if ((seen1 & 512) === 0)
      $this.regen_ifjcg2$_0 = false;
    else
      $this.regen_ifjcg2$_0 = regen;
    if ((seen1 & 1024) === 0)
      $this.isCopy_j6ff12$_0 = false;
    else
      $this.isCopy_j6ff12$_0 = isCopy;
    if ((seen1 & 2048) === 0)
      $this.draggingByPlayerId_30pjt9$_0 = null;
    else
      $this.draggingByPlayerId_30pjt9$_0 = draggingByPlayerId;
    if ((seen1 & 4096) === 0)
      $this.privateToPlayerId_lin22j$_0 = null;
    else
      $this.privateToPlayerId_lin22j$_0 = privateToPlayerId;
    if ((seen1 & 8192) === 0)
      $this.isScalable = false;
    else
      $this.isScalable = isScalable;
    return $this;
  }
  ImageObject.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'ImageObject',
    interfaces: [RegenGameObject, GameObject]
  };
  function MultipleGridImageObject(id, x, y, name, draggable, grid, fromGX, toGX, fromGY, toGY, imageNumber) {
    MultipleGridImageObject$Companion_getInstance();
    if (name === void 0)
      name = '';
    if (draggable === void 0)
      draggable = true;
    if (toGY === void 0)
      toGY = fromGY;
    if (imageNumber === void 0)
      imageNumber = 0;
    this.id_65vgpo$_0 = id;
    this.x_dy2y9v$_0 = x;
    this.y_dy2y90$_0 = y;
    this.name_r5uex8$_0 = name;
    this.draggable_83snt4$_0 = draggable;
    this.grid = grid;
    this.fromGX = fromGX;
    this.toGX = toGX;
    this.fromGY = fromGY;
    this.toGY = toGY;
    this.imageNumber = imageNumber;
    this.draggingByPlayerId_v9duhp$_0 = null;
    this.privateToPlayerId_mpbgrp$_0 = null;
  }
  Object.defineProperty(MultipleGridImageObject.prototype, 'id', {
    get: function () {
      return this.id_65vgpo$_0;
    }
  });
  Object.defineProperty(MultipleGridImageObject.prototype, 'x', {
    get: function () {
      return this.x_dy2y9v$_0;
    },
    set: function (x) {
      this.x_dy2y9v$_0 = x;
    }
  });
  Object.defineProperty(MultipleGridImageObject.prototype, 'y', {
    get: function () {
      return this.y_dy2y90$_0;
    },
    set: function (y) {
      this.y_dy2y90$_0 = y;
    }
  });
  Object.defineProperty(MultipleGridImageObject.prototype, 'name', {
    get: function () {
      return this.name_r5uex8$_0;
    }
  });
  Object.defineProperty(MultipleGridImageObject.prototype, 'draggable', {
    get: function () {
      return this.draggable_83snt4$_0;
    },
    set: function (draggable) {
      this.draggable_83snt4$_0 = draggable;
    }
  });
  Object.defineProperty(MultipleGridImageObject.prototype, 'draggingByPlayerId', {
    configurable: true,
    get: function () {
      return this.draggingByPlayerId_v9duhp$_0;
    },
    set: function (draggingByPlayerId) {
      this.draggingByPlayerId_v9duhp$_0 = draggingByPlayerId;
    }
  });
  Object.defineProperty(MultipleGridImageObject.prototype, 'privateToPlayerId', {
    configurable: true,
    get: function () {
      return this.privateToPlayerId_mpbgrp$_0;
    },
    set: function (privateToPlayerId) {
      this.privateToPlayerId_mpbgrp$_0 = privateToPlayerId;
    }
  });
  MultipleGridImageObject.prototype.copy_za3lpa$$default = function (newId) {
    var $receiver = new MultipleGridImageObject(newId, this.x, this.y, this.name, void 0, this.grid, this.fromGX, this.toGX, this.fromGY, this.toGY, this.imageNumber);
    $receiver.draggable = this.draggable;
    $receiver.privateToPlayerId = this.privateToPlayerId;
    return $receiver;
  };
  MultipleGridImageObject.prototype.toString = function () {
    return 'MultipleGridImage#' + this.id + " : '" + this.grid.path + "' @ " + this.x + ',' + this.y;
  };
  function MultipleGridImageObject$Companion() {
    MultipleGridImageObject$Companion_instance = this;
  }
  MultipleGridImageObject$Companion.prototype.serializer = function () {
    return MultipleGridImageObject$$serializer_getInstance();
  };
  MultipleGridImageObject$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var MultipleGridImageObject$Companion_instance = null;
  function MultipleGridImageObject$Companion_getInstance() {
    if (MultipleGridImageObject$Companion_instance === null) {
      new MultipleGridImageObject$Companion();
    }
    return MultipleGridImageObject$Companion_instance;
  }
  function MultipleGridImageObject$$serializer() {
    this.descriptor_7uoumw$_0 = new PluginGeneratedSerialDescriptor('uk.co.nickthecoder.gamescupboard.common.MultipleGridImageObject', this, 13);
    this.descriptor.addElement_ivxn3r$('id', false);
    this.descriptor.addElement_ivxn3r$('x', false);
    this.descriptor.addElement_ivxn3r$('y', false);
    this.descriptor.addElement_ivxn3r$('name', true);
    this.descriptor.addElement_ivxn3r$('draggable', true);
    this.descriptor.addElement_ivxn3r$('grid', false);
    this.descriptor.addElement_ivxn3r$('fromGX', false);
    this.descriptor.addElement_ivxn3r$('toGX', false);
    this.descriptor.addElement_ivxn3r$('fromGY', false);
    this.descriptor.addElement_ivxn3r$('toGY', true);
    this.descriptor.addElement_ivxn3r$('imageNumber', true);
    this.descriptor.addElement_ivxn3r$('draggingByPlayerId', true);
    this.descriptor.addElement_ivxn3r$('privateToPlayerId', true);
    MultipleGridImageObject$$serializer_instance = this;
  }
  Object.defineProperty(MultipleGridImageObject$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_7uoumw$_0;
    }
  });
  MultipleGridImageObject$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.encodeIntElement_ptg7oe$(this.descriptor, 1, value.x);
    output.encodeIntElement_ptg7oe$(this.descriptor, 2, value.y);
    if (!equals(value.name, '') || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 3))
      output.encodeStringElement_iij8qq$(this.descriptor, 3, value.name);
    if (!equals(value.draggable, true) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 4))
      output.encodeBooleanElement_qh7jdn$(this.descriptor, 4, value.draggable);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 5, Grid$$serializer_getInstance(), value.grid);
    output.encodeIntElement_ptg7oe$(this.descriptor, 6, value.fromGX);
    output.encodeIntElement_ptg7oe$(this.descriptor, 7, value.toGX);
    output.encodeIntElement_ptg7oe$(this.descriptor, 8, value.fromGY);
    if (!equals(value.toGY, fromGY) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 9))
      output.encodeIntElement_ptg7oe$(this.descriptor, 9, value.toGY);
    if (!equals(value.imageNumber, 0) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 10))
      output.encodeIntElement_ptg7oe$(this.descriptor, 10, value.imageNumber);
    if (!equals(value.draggingByPlayerId, null) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 11))
      output.encodeNullableSerializableElement_qw92s8$(this.descriptor, 11, internal.IntSerializer, value.draggingByPlayerId);
    if (!equals(value.privateToPlayerId, null) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 12))
      output.encodeNullableSerializableElement_qw92s8$(this.descriptor, 12, internal.IntSerializer, value.privateToPlayerId);
    output.endStructure_24f42q$(this.descriptor);
  };
  MultipleGridImageObject$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3
    , local4
    , local5
    , local6
    , local7
    , local8
    , local9
    , local10
    , local11
    , local12;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeIntElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeIntElement_szpzho$(this.descriptor, 2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeStringElement_szpzho$(this.descriptor, 3);
          bitMask0 |= 8;
          break;
        case 4:
          local4 = input.decodeBooleanElement_szpzho$(this.descriptor, 4);
          bitMask0 |= 16;
          break;
        case 5:
          local5 = input.decodeSerializableElement_12e8id$(this.descriptor, 5, Grid$$serializer_getInstance(), local5);
          bitMask0 |= 32;
          break;
        case 6:
          local6 = input.decodeIntElement_szpzho$(this.descriptor, 6);
          bitMask0 |= 64;
          break;
        case 7:
          local7 = input.decodeIntElement_szpzho$(this.descriptor, 7);
          bitMask0 |= 128;
          break;
        case 8:
          local8 = input.decodeIntElement_szpzho$(this.descriptor, 8);
          bitMask0 |= 256;
          break;
        case 9:
          local9 = input.decodeIntElement_szpzho$(this.descriptor, 9);
          bitMask0 |= 512;
          break;
        case 10:
          local10 = input.decodeIntElement_szpzho$(this.descriptor, 10);
          bitMask0 |= 1024;
          break;
        case 11:
          local11 = input.decodeNullableSerializableElement_8viuyw$(this.descriptor, 11, internal.IntSerializer, local11);
          bitMask0 |= 2048;
          break;
        case 12:
          local12 = input.decodeNullableSerializableElement_8viuyw$(this.descriptor, 12, internal.IntSerializer, local12);
          bitMask0 |= 4096;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return MultipleGridImageObject_init(bitMask0, local0, local1, local2, local3, local4, local5, local6, local7, local8, local9, local10, local11, local12, null);
  };
  MultipleGridImageObject$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, internal.StringSerializer, internal.BooleanSerializer, Grid$$serializer_getInstance(), internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, new NullableSerializer(internal.IntSerializer), new NullableSerializer(internal.IntSerializer)];
  };
  MultipleGridImageObject$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var MultipleGridImageObject$$serializer_instance = null;
  function MultipleGridImageObject$$serializer_getInstance() {
    if (MultipleGridImageObject$$serializer_instance === null) {
      new MultipleGridImageObject$$serializer();
    }
    return MultipleGridImageObject$$serializer_instance;
  }
  function MultipleGridImageObject_init(seen1, id, x, y, name, draggable, grid, fromGX, toGX, fromGY_0, toGY, imageNumber, draggingByPlayerId, privateToPlayerId, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(MultipleGridImageObject.prototype);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id_65vgpo$_0 = id;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('x');
    else
      $this.x_dy2y9v$_0 = x;
    if ((seen1 & 4) === 0)
      throw MissingFieldException_init('y');
    else
      $this.y_dy2y90$_0 = y;
    if ((seen1 & 8) === 0)
      $this.name_r5uex8$_0 = '';
    else
      $this.name_r5uex8$_0 = name;
    if ((seen1 & 16) === 0)
      $this.draggable_83snt4$_0 = true;
    else
      $this.draggable_83snt4$_0 = draggable;
    if ((seen1 & 32) === 0)
      throw MissingFieldException_init('grid');
    else
      $this.grid = grid;
    if ((seen1 & 64) === 0)
      throw MissingFieldException_init('fromGX');
    else
      $this.fromGX = fromGX;
    if ((seen1 & 128) === 0)
      throw MissingFieldException_init('toGX');
    else
      $this.toGX = toGX;
    if ((seen1 & 256) === 0)
      throw MissingFieldException_init('fromGY');
    else
      $this.fromGY = fromGY_0;
    if ((seen1 & 512) === 0)
      $this.toGY = fromGY;
    else
      $this.toGY = toGY;
    if ((seen1 & 1024) === 0)
      $this.imageNumber = 0;
    else
      $this.imageNumber = imageNumber;
    if ((seen1 & 2048) === 0)
      $this.draggingByPlayerId_v9duhp$_0 = null;
    else
      $this.draggingByPlayerId_v9duhp$_0 = draggingByPlayerId;
    if ((seen1 & 4096) === 0)
      $this.privateToPlayerId_mpbgrp$_0 = null;
    else
      $this.privateToPlayerId_mpbgrp$_0 = privateToPlayerId;
    return $this;
  }
  MultipleGridImageObject.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'MultipleGridImageObject',
    interfaces: [GameObject]
  };
  function PieceAtPointCounter(id, x, y, specialPointName) {
    PieceAtPointCounter$Companion_getInstance();
    this.id_mqil03$_0 = id;
    this.x_ogyixg$_0 = x;
    this.y_ogyiyb$_0 = y;
    this.specialPointName = specialPointName;
    this.name_rrcfgd$_0 = this.specialPointName + '_counter';
  }
  Object.defineProperty(PieceAtPointCounter.prototype, 'id', {
    get: function () {
      return this.id_mqil03$_0;
    }
  });
  Object.defineProperty(PieceAtPointCounter.prototype, 'x', {
    get: function () {
      return this.x_ogyixg$_0;
    },
    set: function (x) {
      this.x_ogyixg$_0 = x;
    }
  });
  Object.defineProperty(PieceAtPointCounter.prototype, 'y', {
    get: function () {
      return this.y_ogyiyb$_0;
    },
    set: function (y) {
      this.y_ogyiyb$_0 = y;
    }
  });
  Object.defineProperty(PieceAtPointCounter.prototype, 'draggable', {
    configurable: true,
    get: function () {
      return false;
    }
  });
  Object.defineProperty(PieceAtPointCounter.prototype, 'privateToPlayerId', {
    configurable: true,
    get: function () {
      return null;
    },
    set: function (f) {
    }
  });
  Object.defineProperty(PieceAtPointCounter.prototype, 'name', {
    configurable: true,
    get: function () {
      return this.name_rrcfgd$_0;
    }
  });
  Object.defineProperty(PieceAtPointCounter.prototype, 'draggingByPlayerId', {
    configurable: true,
    get: function () {
      return null;
    },
    set: function (f) {
    }
  });
  PieceAtPointCounter.prototype.copy_za3lpa$$default = function (newId) {
    return new PieceAtPointCounter(newId, this.x, this.y, this.specialPointName);
  };
  PieceAtPointCounter.prototype.toString = function () {
    return "PieceCounter : '" + this.specialPointName + "' @ " + this.x + ',' + this.y;
  };
  function PieceAtPointCounter$Companion() {
    PieceAtPointCounter$Companion_instance = this;
  }
  PieceAtPointCounter$Companion.prototype.serializer = function () {
    return PieceAtPointCounter$$serializer_getInstance();
  };
  PieceAtPointCounter$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var PieceAtPointCounter$Companion_instance = null;
  function PieceAtPointCounter$Companion_getInstance() {
    if (PieceAtPointCounter$Companion_instance === null) {
      new PieceAtPointCounter$Companion();
    }
    return PieceAtPointCounter$Companion_instance;
  }
  function PieceAtPointCounter$$serializer() {
    this.descriptor_u95lgf$_0 = new PluginGeneratedSerialDescriptor('uk.co.nickthecoder.gamescupboard.common.PieceAtPointCounter', this, 5);
    this.descriptor.addElement_ivxn3r$('id', false);
    this.descriptor.addElement_ivxn3r$('x', false);
    this.descriptor.addElement_ivxn3r$('y', false);
    this.descriptor.addElement_ivxn3r$('specialPointName', false);
    this.descriptor.addElement_ivxn3r$('name', true);
    PieceAtPointCounter$$serializer_instance = this;
  }
  Object.defineProperty(PieceAtPointCounter$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_u95lgf$_0;
    }
  });
  PieceAtPointCounter$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.encodeIntElement_ptg7oe$(this.descriptor, 1, value.x);
    output.encodeIntElement_ptg7oe$(this.descriptor, 2, value.y);
    output.encodeStringElement_iij8qq$(this.descriptor, 3, value.specialPointName);
    if (!equals(value.name, this.specialPointName + '_counter') || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 4))
      output.encodeStringElement_iij8qq$(this.descriptor, 4, value.name);
    output.endStructure_24f42q$(this.descriptor);
  };
  PieceAtPointCounter$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3
    , local4;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeIntElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeIntElement_szpzho$(this.descriptor, 2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeStringElement_szpzho$(this.descriptor, 3);
          bitMask0 |= 8;
          break;
        case 4:
          local4 = input.decodeStringElement_szpzho$(this.descriptor, 4);
          bitMask0 |= 16;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return PieceAtPointCounter_init(bitMask0, local0, local1, local2, local3, local4, null);
  };
  PieceAtPointCounter$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, internal.StringSerializer, internal.StringSerializer];
  };
  PieceAtPointCounter$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var PieceAtPointCounter$$serializer_instance = null;
  function PieceAtPointCounter$$serializer_getInstance() {
    if (PieceAtPointCounter$$serializer_instance === null) {
      new PieceAtPointCounter$$serializer();
    }
    return PieceAtPointCounter$$serializer_instance;
  }
  function PieceAtPointCounter_init(seen1, id, x, y, specialPointName, name, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(PieceAtPointCounter.prototype);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id_mqil03$_0 = id;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('x');
    else
      $this.x_ogyixg$_0 = x;
    if ((seen1 & 4) === 0)
      throw MissingFieldException_init('y');
    else
      $this.y_ogyiyb$_0 = y;
    if ((seen1 & 8) === 0)
      throw MissingFieldException_init('specialPointName');
    else
      $this.specialPointName = specialPointName;
    if ((seen1 & 16) === 0)
      $this.name_rrcfgd$_0 = $this.specialPointName + '_counter';
    else
      $this.name_rrcfgd$_0 = name;
    return $this;
  }
  PieceAtPointCounter.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'PieceAtPointCounter',
    interfaces: [GameObject]
  };
  function Player(id, name, color, isSpectator) {
    Player$Companion_getInstance();
    this.id = id;
    this.name = name;
    this.color = color;
    this.isSpectator = isSpectator;
  }
  Player.prototype.toString = function () {
    return "Player '" + this.name + "' #" + this.id + ' (' + this.color + ')';
  };
  function Player$Companion() {
    Player$Companion_instance = this;
  }
  Player$Companion.prototype.serializer = function () {
    return Player$$serializer_getInstance();
  };
  Player$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var Player$Companion_instance = null;
  function Player$Companion_getInstance() {
    if (Player$Companion_instance === null) {
      new Player$Companion();
    }
    return Player$Companion_instance;
  }
  function Player$$serializer() {
    this.descriptor_1s8lxz$_0 = new PluginGeneratedSerialDescriptor('uk.co.nickthecoder.gamescupboard.common.Player', this, 4);
    this.descriptor.addElement_ivxn3r$('id', false);
    this.descriptor.addElement_ivxn3r$('name', false);
    this.descriptor.addElement_ivxn3r$('color', false);
    this.descriptor.addElement_ivxn3r$('isSpectator', false);
    Player$$serializer_instance = this;
  }
  Object.defineProperty(Player$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_1s8lxz$_0;
    }
  });
  Player$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.encodeStringElement_iij8qq$(this.descriptor, 1, value.name);
    output.encodeStringElement_iij8qq$(this.descriptor, 2, value.color);
    output.encodeBooleanElement_qh7jdn$(this.descriptor, 3, value.isSpectator);
    output.endStructure_24f42q$(this.descriptor);
  };
  Player$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeStringElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeStringElement_szpzho$(this.descriptor, 2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeBooleanElement_szpzho$(this.descriptor, 3);
          bitMask0 |= 8;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return Player_init(bitMask0, local0, local1, local2, local3, null);
  };
  Player$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.StringSerializer, internal.StringSerializer, internal.BooleanSerializer];
  };
  Player$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var Player$$serializer_instance = null;
  function Player$$serializer_getInstance() {
    if (Player$$serializer_instance === null) {
      new Player$$serializer();
    }
    return Player$$serializer_instance;
  }
  function Player_init(seen1, id, name, color, isSpectator, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(Player.prototype);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id = id;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('name');
    else
      $this.name = name;
    if ((seen1 & 4) === 0)
      throw MissingFieldException_init('color');
    else
      $this.color = color;
    if ((seen1 & 8) === 0)
      throw MissingFieldException_init('isSpectator');
    else
      $this.isSpectator = isSpectator;
    return $this;
  }
  Player.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'Player',
    interfaces: []
  };
  function SnapToGrid() {
    SnapToGrid$Companion_getInstance();
  }
  function SnapToGrid$Companion() {
    SnapToGrid$Companion_instance = this;
  }
  SnapToGrid$Companion.prototype.serializer = function () {
    return new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.SnapToGrid', getKClass(SnapToGrid), [getKClass(HexSnap), getKClass(RectangularSnapToGrid)], [HexSnap$$serializer_getInstance(), RectangularSnapToGrid$$serializer_getInstance()]);
  };
  SnapToGrid$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: [SerializerFactory]
  };
  var SnapToGrid$Companion_instance = null;
  function SnapToGrid$Companion_getInstance() {
    if (SnapToGrid$Companion_instance === null) {
      new SnapToGrid$Companion();
    }
    return SnapToGrid$Companion_instance;
  }
  function SnapToGrid_init(seen1, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(SnapToGrid.prototype);
    return $this;
  }
  SnapToGrid.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'SnapToGrid',
    interfaces: []
  };
  function RectangularSnapToGrid(dx, dy) {
    RectangularSnapToGrid$Companion_getInstance();
    SnapToGrid.call(this);
    this.dx = dx;
    this.dy = dy;
  }
  RectangularSnapToGrid.prototype.snap_vux9f0$ = function (x, y) {
    return new Pair(Kotlin.imul(x / this.dx | 0, this.dx) + (this.dx / 2 | 0) | 0, Kotlin.imul(y / this.dy | 0, this.dy) + (this.dy / 2 | 0) | 0);
  };
  function RectangularSnapToGrid$Companion() {
    RectangularSnapToGrid$Companion_instance = this;
  }
  RectangularSnapToGrid$Companion.prototype.serializer = function () {
    return RectangularSnapToGrid$$serializer_getInstance();
  };
  RectangularSnapToGrid$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var RectangularSnapToGrid$Companion_instance = null;
  function RectangularSnapToGrid$Companion_getInstance() {
    if (RectangularSnapToGrid$Companion_instance === null) {
      new RectangularSnapToGrid$Companion();
    }
    return RectangularSnapToGrid$Companion_instance;
  }
  function RectangularSnapToGrid$$serializer() {
    this.descriptor_41k2g3$_0 = new PluginGeneratedSerialDescriptor('uk.co.nickthecoder.gamescupboard.common.RectangularSnapToGrid', this, 2);
    this.descriptor.addElement_ivxn3r$('dx', false);
    this.descriptor.addElement_ivxn3r$('dy', false);
    RectangularSnapToGrid$$serializer_instance = this;
  }
  Object.defineProperty(RectangularSnapToGrid$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_41k2g3$_0;
    }
  });
  RectangularSnapToGrid$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.dx);
    output.encodeIntElement_ptg7oe$(this.descriptor, 1, value.dy);
    output.endStructure_24f42q$(this.descriptor);
  };
  RectangularSnapToGrid$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeIntElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return RectangularSnapToGrid_init(bitMask0, local0, local1, null);
  };
  RectangularSnapToGrid$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.IntSerializer];
  };
  RectangularSnapToGrid$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var RectangularSnapToGrid$$serializer_instance = null;
  function RectangularSnapToGrid$$serializer_getInstance() {
    if (RectangularSnapToGrid$$serializer_instance === null) {
      new RectangularSnapToGrid$$serializer();
    }
    return RectangularSnapToGrid$$serializer_instance;
  }
  function RectangularSnapToGrid_init(seen1, dx, dy, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(RectangularSnapToGrid.prototype);
    $this = SnapToGrid_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('dx');
    else
      $this.dx = dx;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('dy');
    else
      $this.dy = dy;
    return $this;
  }
  RectangularSnapToGrid.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'RectangularSnapToGrid',
    interfaces: [SnapToGrid]
  };
  function HexSnap(dx, dy) {
    HexSnap$Companion_getInstance();
    SnapToGrid.call(this);
    this.dx = dx;
    this.dy = dy;
  }
  HexSnap.prototype.snap_vux9f0$ = function (x, y) {
    var tmp$;
    var gy = numberToInt(y / this.dy);
    var gx = numberToInt((x - gy * this.dx / 2) / this.dx);
    if (gx < 0 || gy < 0 || gx >= 11 || gy >= 11) {
      tmp$ = new Pair(x, y);
    } else {
      tmp$ = new Pair(numberToInt(this.dx / 2 + gx * this.dx + gy * this.dx / 2), numberToInt(this.dy / 2 + gy * this.dy));
    }
    return tmp$;
  };
  function HexSnap$Companion() {
    HexSnap$Companion_instance = this;
  }
  HexSnap$Companion.prototype.serializer = function () {
    return HexSnap$$serializer_getInstance();
  };
  HexSnap$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var HexSnap$Companion_instance = null;
  function HexSnap$Companion_getInstance() {
    if (HexSnap$Companion_instance === null) {
      new HexSnap$Companion();
    }
    return HexSnap$Companion_instance;
  }
  function HexSnap$$serializer() {
    this.descriptor_ydt6d5$_0 = new PluginGeneratedSerialDescriptor('uk.co.nickthecoder.gamescupboard.common.HexSnap', this, 2);
    this.descriptor.addElement_ivxn3r$('dx', false);
    this.descriptor.addElement_ivxn3r$('dy', false);
    HexSnap$$serializer_instance = this;
  }
  Object.defineProperty(HexSnap$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_ydt6d5$_0;
    }
  });
  HexSnap$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeDoubleElement_powrwi$(this.descriptor, 0, value.dx);
    output.encodeDoubleElement_powrwi$(this.descriptor, 1, value.dy);
    output.endStructure_24f42q$(this.descriptor);
  };
  HexSnap$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeDoubleElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeDoubleElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return HexSnap_init(bitMask0, local0, local1, null);
  };
  HexSnap$$serializer.prototype.childSerializers = function () {
    return [internal.DoubleSerializer, internal.DoubleSerializer];
  };
  HexSnap$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var HexSnap$$serializer_instance = null;
  function HexSnap$$serializer_getInstance() {
    if (HexSnap$$serializer_instance === null) {
      new HexSnap$$serializer();
    }
    return HexSnap$$serializer_instance;
  }
  function HexSnap_init(seen1, dx, dy, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(HexSnap.prototype);
    $this = SnapToGrid_init(seen1, $this);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('dx');
    else
      $this.dx = dx;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('dy');
    else
      $this.dy = dy;
    return $this;
  }
  HexSnap.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'HexSnap',
    interfaces: [SnapToGrid]
  };
  function AreaType(name, ordinal) {
    AreaType$Companion_getInstance();
    Enum.call(this);
    this.name$ = name;
    this.ordinal$ = ordinal;
  }
  function AreaType_initFields() {
    AreaType_initFields = function () {
    };
    AreaType$PRIVATE_instance = new AreaType('PRIVATE', 0);
    AreaType$PUBLIC_instance = new AreaType('PUBLIC', 1);
    AreaType$Companion_getInstance();
  }
  var AreaType$PRIVATE_instance;
  function AreaType$PRIVATE_getInstance() {
    AreaType_initFields();
    return AreaType$PRIVATE_instance;
  }
  var AreaType$PUBLIC_instance;
  function AreaType$PUBLIC_getInstance() {
    AreaType_initFields();
    return AreaType$PUBLIC_instance;
  }
  function AreaType$Companion() {
    AreaType$Companion_instance = this;
  }
  AreaType$Companion.prototype.serializer = function () {
    return AreaType$$serializer_getInstance();
  };
  AreaType$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: [SerializerFactory]
  };
  var AreaType$Companion_instance = null;
  function AreaType$Companion_getInstance() {
    if (AreaType$Companion_instance === null) {
      new AreaType$Companion();
    }
    return AreaType$Companion_instance;
  }
  function AreaType$$serializer() {
    this.descriptor_lvvy3h$_0 = new EnumDescriptor('uk.co.nickthecoder.gamescupboard.common.AreaType', 2);
    this.descriptor.addElement_ivxn3r$('PRIVATE');
    this.descriptor.addElement_ivxn3r$('PUBLIC');
    AreaType$$serializer_instance = this;
  }
  Object.defineProperty(AreaType$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_lvvy3h$_0;
    }
  });
  AreaType$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    encoder.encodeEnum_szpzho$(this.descriptor, value.ordinal);
  };
  AreaType$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    return AreaType$values()[decoder.decodeEnum_24f42q$(this.descriptor)];
  };
  AreaType$$serializer.prototype.childSerializers = function () {
    return [];
  };
  AreaType$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var AreaType$$serializer_instance = null;
  function AreaType$$serializer_getInstance() {
    if (AreaType$$serializer_instance === null) {
      new AreaType$$serializer();
    }
    return AreaType$$serializer_instance;
  }
  AreaType.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'AreaType',
    interfaces: [Enum]
  };
  function AreaType$values() {
    return [AreaType$PRIVATE_getInstance(), AreaType$PUBLIC_getInstance()];
  }
  AreaType.values = AreaType$values;
  function AreaType$valueOf(name) {
    switch (name) {
      case 'PRIVATE':
        return AreaType$PRIVATE_getInstance();
      case 'PUBLIC':
        return AreaType$PUBLIC_getInstance();
      default:
        throwISE('No enum constant uk.co.nickthecoder.gamescupboard.common.AreaType.' + name);
    }
  }
  AreaType.valueOf_61zpoe$ = AreaType$valueOf;
  function SpecialArea(name, areaType, x, y, width, height, snap, changeZOrder, warnUsingTint) {
    SpecialArea$Companion_getInstance();
    if (snap === void 0)
      snap = null;
    if (changeZOrder === void 0)
      changeZOrder = ChangeZOrder$NO_CHANGE_getInstance();
    if (warnUsingTint === void 0)
      warnUsingTint = true;
    this.name = name;
    this.areaType = areaType;
    this.x = x;
    this.y = y;
    this.width = width;
    this.height = height;
    this.snap = snap;
    this.changeZOrder = changeZOrder;
    this.warnUsingTint = warnUsingTint;
    this.pieceCount = 0;
    this.pieceCountByOwner = LinkedHashMap_init();
  }
  SpecialArea.prototype.increment_za3lpa$ = function (byPlayerId) {
    var tmp$;
    this.pieceCount = this.pieceCount - 1 | 0;
    var $receiver = this.pieceCountByOwner;
    var value = ((tmp$ = this.pieceCountByOwner.get_11rb$(byPlayerId)) != null ? tmp$ : 0) - 1 | 0;
    $receiver.put_xwzc9p$(byPlayerId, value);
  };
  SpecialArea.prototype.decrement_za3lpa$ = function (byPlayerId) {
    var tmp$;
    this.pieceCount = this.pieceCount + 1 | 0;
    var $receiver = this.pieceCountByOwner;
    var value = ((tmp$ = this.pieceCountByOwner.get_11rb$(byPlayerId)) != null ? tmp$ : 0) + 1 | 0;
    $receiver.put_xwzc9p$(byPlayerId, value);
  };
  SpecialArea.prototype.contains_vux9f0$ = function (x, y) {
    return x >= this.x && y >= this.y && x < (this.x + this.width | 0) && y < (this.y + this.height | 0);
  };
  function SpecialArea$Companion() {
    SpecialArea$Companion_instance = this;
  }
  SpecialArea$Companion.prototype.serializer = function () {
    return SpecialArea$$serializer_getInstance();
  };
  SpecialArea$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var SpecialArea$Companion_instance = null;
  function SpecialArea$Companion_getInstance() {
    if (SpecialArea$Companion_instance === null) {
      new SpecialArea$Companion();
    }
    return SpecialArea$Companion_instance;
  }
  function SpecialArea$$serializer() {
    this.descriptor_yzb1i2$_0 = new PluginGeneratedSerialDescriptor('uk.co.nickthecoder.gamescupboard.common.SpecialArea', this, 11);
    this.descriptor.addElement_ivxn3r$('name', false);
    this.descriptor.addElement_ivxn3r$('areaType', false);
    this.descriptor.addElement_ivxn3r$('x', false);
    this.descriptor.addElement_ivxn3r$('y', false);
    this.descriptor.addElement_ivxn3r$('width', false);
    this.descriptor.addElement_ivxn3r$('height', false);
    this.descriptor.addElement_ivxn3r$('snap', true);
    this.descriptor.addElement_ivxn3r$('changeZOrder', true);
    this.descriptor.addElement_ivxn3r$('warnUsingTint', true);
    this.descriptor.addElement_ivxn3r$('pieceCount', true);
    this.descriptor.addElement_ivxn3r$('pieceCountByOwner', true);
    SpecialArea$$serializer_instance = this;
  }
  Object.defineProperty(SpecialArea$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_yzb1i2$_0;
    }
  });
  SpecialArea$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeStringElement_iij8qq$(this.descriptor, 0, value.name);
    output.encodeSerializableElement_r4qlx7$(this.descriptor, 1, AreaType$$serializer_getInstance(), value.areaType);
    output.encodeIntElement_ptg7oe$(this.descriptor, 2, value.x);
    output.encodeIntElement_ptg7oe$(this.descriptor, 3, value.y);
    output.encodeIntElement_ptg7oe$(this.descriptor, 4, value.width);
    output.encodeIntElement_ptg7oe$(this.descriptor, 5, value.height);
    if (!equals(value.snap, null) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 6))
      output.encodeNullableSerializableElement_qw92s8$(this.descriptor, 6, new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.SnapToGrid', getKClass(SnapToGrid), [getKClass(HexSnap), getKClass(RectangularSnapToGrid)], [HexSnap$$serializer_getInstance(), RectangularSnapToGrid$$serializer_getInstance()]), value.snap);
    if (!equals(value.changeZOrder, ChangeZOrder$NO_CHANGE_getInstance()) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 7))
      output.encodeSerializableElement_r4qlx7$(this.descriptor, 7, ChangeZOrder$$serializer_getInstance(), value.changeZOrder);
    if (!equals(value.warnUsingTint, true) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 8))
      output.encodeBooleanElement_qh7jdn$(this.descriptor, 8, value.warnUsingTint);
    if (!equals(value.pieceCount, 0) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 9))
      output.encodeIntElement_ptg7oe$(this.descriptor, 9, value.pieceCount);
    if (!equals(value.pieceCountByOwner, LinkedHashMap_init()) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 10))
      output.encodeSerializableElement_r4qlx7$(this.descriptor, 10, new LinkedHashMapSerializer(internal.IntSerializer, internal.IntSerializer), value.pieceCountByOwner);
    output.endStructure_24f42q$(this.descriptor);
  };
  SpecialArea$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3
    , local4
    , local5
    , local6
    , local7
    , local8
    , local9
    , local10;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeStringElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeSerializableElement_12e8id$(this.descriptor, 1, AreaType$$serializer_getInstance(), local1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeIntElement_szpzho$(this.descriptor, 2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeIntElement_szpzho$(this.descriptor, 3);
          bitMask0 |= 8;
          break;
        case 4:
          local4 = input.decodeIntElement_szpzho$(this.descriptor, 4);
          bitMask0 |= 16;
          break;
        case 5:
          local5 = input.decodeIntElement_szpzho$(this.descriptor, 5);
          bitMask0 |= 32;
          break;
        case 6:
          local6 = input.decodeNullableSerializableElement_8viuyw$(this.descriptor, 6, new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.SnapToGrid', getKClass(SnapToGrid), [getKClass(HexSnap), getKClass(RectangularSnapToGrid)], [HexSnap$$serializer_getInstance(), RectangularSnapToGrid$$serializer_getInstance()]), local6);
          bitMask0 |= 64;
          break;
        case 7:
          local7 = input.decodeSerializableElement_12e8id$(this.descriptor, 7, ChangeZOrder$$serializer_getInstance(), local7);
          bitMask0 |= 128;
          break;
        case 8:
          local8 = input.decodeBooleanElement_szpzho$(this.descriptor, 8);
          bitMask0 |= 256;
          break;
        case 9:
          local9 = input.decodeIntElement_szpzho$(this.descriptor, 9);
          bitMask0 |= 512;
          break;
        case 10:
          local10 = input.decodeSerializableElement_12e8id$(this.descriptor, 10, new LinkedHashMapSerializer(internal.IntSerializer, internal.IntSerializer), local10);
          bitMask0 |= 1024;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return SpecialArea_init(bitMask0, local0, local1, local2, local3, local4, local5, local6, local7, local8, local9, local10, null);
  };
  SpecialArea$$serializer.prototype.childSerializers = function () {
    return [internal.StringSerializer, AreaType$$serializer_getInstance(), internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, new NullableSerializer(new SealedClassSerializer('uk.co.nickthecoder.gamescupboard.common.SnapToGrid', getKClass(SnapToGrid), [getKClass(HexSnap), getKClass(RectangularSnapToGrid)], [HexSnap$$serializer_getInstance(), RectangularSnapToGrid$$serializer_getInstance()])), ChangeZOrder$$serializer_getInstance(), internal.BooleanSerializer, internal.IntSerializer, new LinkedHashMapSerializer(internal.IntSerializer, internal.IntSerializer)];
  };
  SpecialArea$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var SpecialArea$$serializer_instance = null;
  function SpecialArea$$serializer_getInstance() {
    if (SpecialArea$$serializer_instance === null) {
      new SpecialArea$$serializer();
    }
    return SpecialArea$$serializer_instance;
  }
  function SpecialArea_init(seen1, name, areaType, x, y, width, height, snap, changeZOrder, warnUsingTint, pieceCount, pieceCountByOwner, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(SpecialArea.prototype);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('name');
    else
      $this.name = name;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('areaType');
    else
      $this.areaType = areaType;
    if ((seen1 & 4) === 0)
      throw MissingFieldException_init('x');
    else
      $this.x = x;
    if ((seen1 & 8) === 0)
      throw MissingFieldException_init('y');
    else
      $this.y = y;
    if ((seen1 & 16) === 0)
      throw MissingFieldException_init('width');
    else
      $this.width = width;
    if ((seen1 & 32) === 0)
      throw MissingFieldException_init('height');
    else
      $this.height = height;
    if ((seen1 & 64) === 0)
      $this.snap = null;
    else
      $this.snap = snap;
    if ((seen1 & 128) === 0)
      $this.changeZOrder = ChangeZOrder$NO_CHANGE_getInstance();
    else
      $this.changeZOrder = changeZOrder;
    if ((seen1 & 256) === 0)
      $this.warnUsingTint = true;
    else
      $this.warnUsingTint = warnUsingTint;
    if ((seen1 & 512) === 0)
      $this.pieceCount = 0;
    else
      $this.pieceCount = pieceCount;
    if ((seen1 & 1024) === 0) {
      $this.pieceCountByOwner = LinkedHashMap_init();
    } else
      $this.pieceCountByOwner = pieceCountByOwner;
    return $this;
  }
  SpecialArea.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'SpecialArea',
    interfaces: []
  };
  SpecialArea.prototype.component1 = function () {
    return this.name;
  };
  SpecialArea.prototype.component2 = function () {
    return this.areaType;
  };
  SpecialArea.prototype.component3 = function () {
    return this.x;
  };
  SpecialArea.prototype.component4 = function () {
    return this.y;
  };
  SpecialArea.prototype.component5 = function () {
    return this.width;
  };
  SpecialArea.prototype.component6 = function () {
    return this.height;
  };
  SpecialArea.prototype.component7 = function () {
    return this.snap;
  };
  SpecialArea.prototype.component8 = function () {
    return this.changeZOrder;
  };
  SpecialArea.prototype.component9 = function () {
    return this.warnUsingTint;
  };
  SpecialArea.prototype.copy_n6egd0$ = function (name, areaType, x, y, width, height, snap, changeZOrder, warnUsingTint) {
    return new SpecialArea(name === void 0 ? this.name : name, areaType === void 0 ? this.areaType : areaType, x === void 0 ? this.x : x, y === void 0 ? this.y : y, width === void 0 ? this.width : width, height === void 0 ? this.height : height, snap === void 0 ? this.snap : snap, changeZOrder === void 0 ? this.changeZOrder : changeZOrder, warnUsingTint === void 0 ? this.warnUsingTint : warnUsingTint);
  };
  SpecialArea.prototype.toString = function () {
    return 'SpecialArea(name=' + Kotlin.toString(this.name) + (', areaType=' + Kotlin.toString(this.areaType)) + (', x=' + Kotlin.toString(this.x)) + (', y=' + Kotlin.toString(this.y)) + (', width=' + Kotlin.toString(this.width)) + (', height=' + Kotlin.toString(this.height)) + (', snap=' + Kotlin.toString(this.snap)) + (', changeZOrder=' + Kotlin.toString(this.changeZOrder)) + (', warnUsingTint=' + Kotlin.toString(this.warnUsingTint)) + ')';
  };
  SpecialArea.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.name) | 0;
    result = result * 31 + Kotlin.hashCode(this.areaType) | 0;
    result = result * 31 + Kotlin.hashCode(this.x) | 0;
    result = result * 31 + Kotlin.hashCode(this.y) | 0;
    result = result * 31 + Kotlin.hashCode(this.width) | 0;
    result = result * 31 + Kotlin.hashCode(this.height) | 0;
    result = result * 31 + Kotlin.hashCode(this.snap) | 0;
    result = result * 31 + Kotlin.hashCode(this.changeZOrder) | 0;
    result = result * 31 + Kotlin.hashCode(this.warnUsingTint) | 0;
    return result;
  };
  SpecialArea.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.name, other.name) && Kotlin.equals(this.areaType, other.areaType) && Kotlin.equals(this.x, other.x) && Kotlin.equals(this.y, other.y) && Kotlin.equals(this.width, other.width) && Kotlin.equals(this.height, other.height) && Kotlin.equals(this.snap, other.snap) && Kotlin.equals(this.changeZOrder, other.changeZOrder) && Kotlin.equals(this.warnUsingTint, other.warnUsingTint)))));
  };
  function isPublicOrNull($receiver) {
    return $receiver == null || $receiver.areaType === AreaType$PUBLIC_getInstance();
  }
  function isPublic($receiver) {
    return equals($receiver != null ? $receiver.areaType : null, AreaType$PUBLIC_getInstance());
  }
  function isPrivate($receiver) {
    return equals($receiver != null ? $receiver.areaType : null, AreaType$PRIVATE_getInstance());
  }
  function SpecialPoint(name, x, y, isFaceUp, changeZOrder, snapDistance) {
    SpecialPoint$Companion_getInstance();
    if (isFaceUp === void 0)
      isFaceUp = false;
    if (changeZOrder === void 0)
      changeZOrder = ChangeZOrder$NO_CHANGE_getInstance();
    if (snapDistance === void 0)
      snapDistance = 30;
    this.name = name;
    this.x = x;
    this.y = y;
    this.isFaceUp = isFaceUp;
    this.changeZOrder = changeZOrder;
    this.snapDistance = snapDistance;
    this.pieceCount = 0;
  }
  SpecialPoint.prototype.contains_vux9f0$ = function (x, y) {
    return x >= (this.x - this.snapDistance | 0) && y >= (this.y - this.snapDistance | 0) && x < (this.x + this.snapDistance | 0) && y < (this.y + this.snapDistance | 0);
  };
  function SpecialPoint$Companion() {
    SpecialPoint$Companion_instance = this;
  }
  SpecialPoint$Companion.prototype.serializer = function () {
    return SpecialPoint$$serializer_getInstance();
  };
  SpecialPoint$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var SpecialPoint$Companion_instance = null;
  function SpecialPoint$Companion_getInstance() {
    if (SpecialPoint$Companion_instance === null) {
      new SpecialPoint$Companion();
    }
    return SpecialPoint$Companion_instance;
  }
  function SpecialPoint$$serializer() {
    this.descriptor_v813gt$_0 = new PluginGeneratedSerialDescriptor('uk.co.nickthecoder.gamescupboard.common.SpecialPoint', this, 7);
    this.descriptor.addElement_ivxn3r$('name', false);
    this.descriptor.addElement_ivxn3r$('x', false);
    this.descriptor.addElement_ivxn3r$('y', false);
    this.descriptor.addElement_ivxn3r$('isFaceUp', true);
    this.descriptor.addElement_ivxn3r$('changeZOrder', true);
    this.descriptor.addElement_ivxn3r$('snapDistance', true);
    this.descriptor.addElement_ivxn3r$('pieceCount', true);
    SpecialPoint$$serializer_instance = this;
  }
  Object.defineProperty(SpecialPoint$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_v813gt$_0;
    }
  });
  SpecialPoint$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeStringElement_iij8qq$(this.descriptor, 0, value.name);
    output.encodeIntElement_ptg7oe$(this.descriptor, 1, value.x);
    output.encodeIntElement_ptg7oe$(this.descriptor, 2, value.y);
    if (!equals(value.isFaceUp, false) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 3))
      output.encodeBooleanElement_qh7jdn$(this.descriptor, 3, value.isFaceUp);
    if (!equals(value.changeZOrder, ChangeZOrder$NO_CHANGE_getInstance()) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 4))
      output.encodeSerializableElement_r4qlx7$(this.descriptor, 4, ChangeZOrder$$serializer_getInstance(), value.changeZOrder);
    if (!equals(value.snapDistance, 30) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 5))
      output.encodeIntElement_ptg7oe$(this.descriptor, 5, value.snapDistance);
    if (!equals(value.pieceCount, 0) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 6))
      output.encodeIntElement_ptg7oe$(this.descriptor, 6, value.pieceCount);
    output.endStructure_24f42q$(this.descriptor);
  };
  SpecialPoint$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3
    , local4
    , local5
    , local6;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeStringElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeIntElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeIntElement_szpzho$(this.descriptor, 2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeBooleanElement_szpzho$(this.descriptor, 3);
          bitMask0 |= 8;
          break;
        case 4:
          local4 = input.decodeSerializableElement_12e8id$(this.descriptor, 4, ChangeZOrder$$serializer_getInstance(), local4);
          bitMask0 |= 16;
          break;
        case 5:
          local5 = input.decodeIntElement_szpzho$(this.descriptor, 5);
          bitMask0 |= 32;
          break;
        case 6:
          local6 = input.decodeIntElement_szpzho$(this.descriptor, 6);
          bitMask0 |= 64;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return SpecialPoint_init(bitMask0, local0, local1, local2, local3, local4, local5, local6, null);
  };
  SpecialPoint$$serializer.prototype.childSerializers = function () {
    return [internal.StringSerializer, internal.IntSerializer, internal.IntSerializer, internal.BooleanSerializer, ChangeZOrder$$serializer_getInstance(), internal.IntSerializer, internal.IntSerializer];
  };
  SpecialPoint$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var SpecialPoint$$serializer_instance = null;
  function SpecialPoint$$serializer_getInstance() {
    if (SpecialPoint$$serializer_instance === null) {
      new SpecialPoint$$serializer();
    }
    return SpecialPoint$$serializer_instance;
  }
  function SpecialPoint_init(seen1, name, x, y, isFaceUp, changeZOrder, snapDistance, pieceCount, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(SpecialPoint.prototype);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('name');
    else
      $this.name = name;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('x');
    else
      $this.x = x;
    if ((seen1 & 4) === 0)
      throw MissingFieldException_init('y');
    else
      $this.y = y;
    if ((seen1 & 8) === 0)
      $this.isFaceUp = false;
    else
      $this.isFaceUp = isFaceUp;
    if ((seen1 & 16) === 0)
      $this.changeZOrder = ChangeZOrder$NO_CHANGE_getInstance();
    else
      $this.changeZOrder = changeZOrder;
    if ((seen1 & 32) === 0)
      $this.snapDistance = 30;
    else
      $this.snapDistance = snapDistance;
    if ((seen1 & 64) === 0)
      $this.pieceCount = 0;
    else
      $this.pieceCount = pieceCount;
    return $this;
  }
  SpecialPoint.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'SpecialPoint',
    interfaces: []
  };
  SpecialPoint.prototype.component1 = function () {
    return this.name;
  };
  SpecialPoint.prototype.component2 = function () {
    return this.x;
  };
  SpecialPoint.prototype.component3 = function () {
    return this.y;
  };
  SpecialPoint.prototype.component4 = function () {
    return this.isFaceUp;
  };
  SpecialPoint.prototype.component5 = function () {
    return this.changeZOrder;
  };
  SpecialPoint.prototype.component6 = function () {
    return this.snapDistance;
  };
  SpecialPoint.prototype.copy_ndcv47$ = function (name, x, y, isFaceUp, changeZOrder, snapDistance) {
    return new SpecialPoint(name === void 0 ? this.name : name, x === void 0 ? this.x : x, y === void 0 ? this.y : y, isFaceUp === void 0 ? this.isFaceUp : isFaceUp, changeZOrder === void 0 ? this.changeZOrder : changeZOrder, snapDistance === void 0 ? this.snapDistance : snapDistance);
  };
  SpecialPoint.prototype.toString = function () {
    return 'SpecialPoint(name=' + Kotlin.toString(this.name) + (', x=' + Kotlin.toString(this.x)) + (', y=' + Kotlin.toString(this.y)) + (', isFaceUp=' + Kotlin.toString(this.isFaceUp)) + (', changeZOrder=' + Kotlin.toString(this.changeZOrder)) + (', snapDistance=' + Kotlin.toString(this.snapDistance)) + ')';
  };
  SpecialPoint.prototype.hashCode = function () {
    var result = 0;
    result = result * 31 + Kotlin.hashCode(this.name) | 0;
    result = result * 31 + Kotlin.hashCode(this.x) | 0;
    result = result * 31 + Kotlin.hashCode(this.y) | 0;
    result = result * 31 + Kotlin.hashCode(this.isFaceUp) | 0;
    result = result * 31 + Kotlin.hashCode(this.changeZOrder) | 0;
    result = result * 31 + Kotlin.hashCode(this.snapDistance) | 0;
    return result;
  };
  SpecialPoint.prototype.equals = function (other) {
    return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.name, other.name) && Kotlin.equals(this.x, other.x) && Kotlin.equals(this.y, other.y) && Kotlin.equals(this.isFaceUp, other.isFaceUp) && Kotlin.equals(this.changeZOrder, other.changeZOrder) && Kotlin.equals(this.snapDistance, other.snapDistance)))));
  };
  function TextStyle(name, ordinal) {
    Enum.call(this);
    this.name$ = name;
    this.ordinal$ = ordinal;
  }
  function TextStyle_initFields() {
    TextStyle_initFields = function () {
    };
    TextStyle$PLAIN_instance = new TextStyle('PLAIN', 0);
    TextStyle$WHITE_BOX_instance = new TextStyle('WHITE_BOX', 1);
    TextStyle$LIGHT_BOX_instance = new TextStyle('LIGHT_BOX', 2);
  }
  var TextStyle$PLAIN_instance;
  function TextStyle$PLAIN_getInstance() {
    TextStyle_initFields();
    return TextStyle$PLAIN_instance;
  }
  var TextStyle$WHITE_BOX_instance;
  function TextStyle$WHITE_BOX_getInstance() {
    TextStyle_initFields();
    return TextStyle$WHITE_BOX_instance;
  }
  var TextStyle$LIGHT_BOX_instance;
  function TextStyle$LIGHT_BOX_getInstance() {
    TextStyle_initFields();
    return TextStyle$LIGHT_BOX_instance;
  }
  TextStyle.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'TextStyle',
    interfaces: [Enum]
  };
  function TextStyle$values() {
    return [TextStyle$PLAIN_getInstance(), TextStyle$WHITE_BOX_getInstance(), TextStyle$LIGHT_BOX_getInstance()];
  }
  TextStyle.values = TextStyle$values;
  function TextStyle$valueOf(name) {
    switch (name) {
      case 'PLAIN':
        return TextStyle$PLAIN_getInstance();
      case 'WHITE_BOX':
        return TextStyle$WHITE_BOX_getInstance();
      case 'LIGHT_BOX':
        return TextStyle$LIGHT_BOX_getInstance();
      default:
        throwISE('No enum constant uk.co.nickthecoder.gamescupboard.common.TextStyle.' + name);
    }
  }
  TextStyle.valueOf_61zpoe$ = TextStyle$valueOf;
  function TextObject(id, x, y, name, draggable, text, style) {
    TextObject$Companion_getInstance();
    if (name === void 0)
      name = '';
    if (draggable === void 0)
      draggable = true;
    if (style === void 0)
      style = TextStyle$PLAIN_getInstance();
    this.id_30mqz2$_0 = id;
    this.x_y9t38t$_0 = x;
    this.y_y9t37y$_0 = y;
    this.name_cbm0wy$_0 = name;
    this.draggable_dxoa1q$_0 = draggable;
    this.text = text;
    this.style = style;
    this.privateToPlayerId_s69775$_0 = null;
    this.draggingByPlayerId_p9ery1$_0 = null;
    this.cyclicText = ArrayList_init();
    this.cyclicIndex = 0;
  }
  Object.defineProperty(TextObject.prototype, 'id', {
    get: function () {
      return this.id_30mqz2$_0;
    }
  });
  Object.defineProperty(TextObject.prototype, 'x', {
    get: function () {
      return this.x_y9t38t$_0;
    },
    set: function (x) {
      this.x_y9t38t$_0 = x;
    }
  });
  Object.defineProperty(TextObject.prototype, 'y', {
    get: function () {
      return this.y_y9t37y$_0;
    },
    set: function (y) {
      this.y_y9t37y$_0 = y;
    }
  });
  Object.defineProperty(TextObject.prototype, 'name', {
    get: function () {
      return this.name_cbm0wy$_0;
    }
  });
  Object.defineProperty(TextObject.prototype, 'draggable', {
    get: function () {
      return this.draggable_dxoa1q$_0;
    },
    set: function (draggable) {
      this.draggable_dxoa1q$_0 = draggable;
    }
  });
  Object.defineProperty(TextObject.prototype, 'privateToPlayerId', {
    configurable: true,
    get: function () {
      return this.privateToPlayerId_s69775$_0;
    },
    set: function (privateToPlayerId) {
      this.privateToPlayerId_s69775$_0 = privateToPlayerId;
    }
  });
  Object.defineProperty(TextObject.prototype, 'draggingByPlayerId', {
    configurable: true,
    get: function () {
      return this.draggingByPlayerId_p9ery1$_0;
    },
    set: function (draggingByPlayerId) {
      this.draggingByPlayerId_p9ery1$_0 = draggingByPlayerId;
    }
  });
  TextObject.prototype.copy_za3lpa$$default = function (newId) {
    var $receiver = new TextObject(newId, this.x, this.y, this.name, void 0, this.text);
    $receiver.draggable = this.draggable;
    $receiver.privateToPlayerId = this.privateToPlayerId;
    return $receiver;
  };
  TextObject.prototype.toString = function () {
    return 'Text#' + this.id + " : '" + this.text + "' @ " + this.x + ',' + this.y;
  };
  function TextObject$Companion() {
    TextObject$Companion_instance = this;
  }
  TextObject$Companion.prototype.serializer = function () {
    return TextObject$$serializer_getInstance();
  };
  TextObject$Companion.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: 'Companion',
    interfaces: []
  };
  var TextObject$Companion_instance = null;
  function TextObject$Companion_getInstance() {
    if (TextObject$Companion_instance === null) {
      new TextObject$Companion();
    }
    return TextObject$Companion_instance;
  }
  function TextObject$$serializer() {
    this.descriptor_99y3k2$_0 = new PluginGeneratedSerialDescriptor('uk.co.nickthecoder.gamescupboard.common.TextObject', this, 11);
    this.descriptor.addElement_ivxn3r$('id', false);
    this.descriptor.addElement_ivxn3r$('x', false);
    this.descriptor.addElement_ivxn3r$('y', false);
    this.descriptor.addElement_ivxn3r$('name', true);
    this.descriptor.addElement_ivxn3r$('draggable', true);
    this.descriptor.addElement_ivxn3r$('text', false);
    this.descriptor.addElement_ivxn3r$('style', true);
    this.descriptor.addElement_ivxn3r$('privateToPlayerId', true);
    this.descriptor.addElement_ivxn3r$('draggingByPlayerId', true);
    this.descriptor.addElement_ivxn3r$('cyclicText', true);
    this.descriptor.addElement_ivxn3r$('cyclicIndex', true);
    TextObject$$serializer_instance = this;
  }
  Object.defineProperty(TextObject$$serializer.prototype, 'descriptor', {
    configurable: true,
    get: function () {
      return this.descriptor_99y3k2$_0;
    }
  });
  TextObject$$serializer.prototype.serialize_55azsf$ = function (encoder, value) {
    var output = encoder.beginStructure_24f42q$(this.descriptor);
    output.encodeIntElement_ptg7oe$(this.descriptor, 0, value.id);
    output.encodeIntElement_ptg7oe$(this.descriptor, 1, value.x);
    output.encodeIntElement_ptg7oe$(this.descriptor, 2, value.y);
    if (!equals(value.name, '') || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 3))
      output.encodeStringElement_iij8qq$(this.descriptor, 3, value.name);
    if (!equals(value.draggable, true) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 4))
      output.encodeBooleanElement_qh7jdn$(this.descriptor, 4, value.draggable);
    output.encodeStringElement_iij8qq$(this.descriptor, 5, value.text);
    if (!equals(value.style, TextStyle$PLAIN_getInstance()) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 6))
      output.encodeSerializableElement_r4qlx7$(this.descriptor, 6, new EnumSerializer('uk.co.nickthecoder.gamescupboard.common.TextStyle', TextStyle$values()), value.style);
    if (!equals(value.privateToPlayerId, null) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 7))
      output.encodeNullableSerializableElement_qw92s8$(this.descriptor, 7, internal.IntSerializer, value.privateToPlayerId);
    if (!equals(value.draggingByPlayerId, null) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 8))
      output.encodeNullableSerializableElement_qw92s8$(this.descriptor, 8, internal.IntSerializer, value.draggingByPlayerId);
    if (!equals(value.cyclicText, ArrayList_init()) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 9))
      output.encodeSerializableElement_r4qlx7$(this.descriptor, 9, new ArrayListSerializer(internal.StringSerializer), value.cyclicText);
    if (!equals(value.cyclicIndex, 0) || output.shouldEncodeElementDefault_szpzho$(this.descriptor, 10))
      output.encodeIntElement_ptg7oe$(this.descriptor, 10, value.cyclicIndex);
    output.endStructure_24f42q$(this.descriptor);
  };
  TextObject$$serializer.prototype.deserialize_bq71mq$ = function (decoder) {
    var index;
    var bitMask0 = 0;
    var local0
    , local1
    , local2
    , local3
    , local4
    , local5
    , local6
    , local7
    , local8
    , local9
    , local10;
    var input = decoder.beginStructure_24f42q$(this.descriptor);
    loopLabel: while (true) {
      index = input.decodeElementIndex_24f42q$(this.descriptor);
      switch (index) {
        case 0:
          local0 = input.decodeIntElement_szpzho$(this.descriptor, 0);
          bitMask0 |= 1;
          break;
        case 1:
          local1 = input.decodeIntElement_szpzho$(this.descriptor, 1);
          bitMask0 |= 2;
          break;
        case 2:
          local2 = input.decodeIntElement_szpzho$(this.descriptor, 2);
          bitMask0 |= 4;
          break;
        case 3:
          local3 = input.decodeStringElement_szpzho$(this.descriptor, 3);
          bitMask0 |= 8;
          break;
        case 4:
          local4 = input.decodeBooleanElement_szpzho$(this.descriptor, 4);
          bitMask0 |= 16;
          break;
        case 5:
          local5 = input.decodeStringElement_szpzho$(this.descriptor, 5);
          bitMask0 |= 32;
          break;
        case 6:
          local6 = input.decodeSerializableElement_12e8id$(this.descriptor, 6, new EnumSerializer('uk.co.nickthecoder.gamescupboard.common.TextStyle', TextStyle$values()), local6);
          bitMask0 |= 64;
          break;
        case 7:
          local7 = input.decodeNullableSerializableElement_8viuyw$(this.descriptor, 7, internal.IntSerializer, local7);
          bitMask0 |= 128;
          break;
        case 8:
          local8 = input.decodeNullableSerializableElement_8viuyw$(this.descriptor, 8, internal.IntSerializer, local8);
          bitMask0 |= 256;
          break;
        case 9:
          local9 = input.decodeSerializableElement_12e8id$(this.descriptor, 9, new ArrayListSerializer(internal.StringSerializer), local9);
          bitMask0 |= 512;
          break;
        case 10:
          local10 = input.decodeIntElement_szpzho$(this.descriptor, 10);
          bitMask0 |= 1024;
          break;
        case -1:
          break loopLabel;
        default:
          throw new UnknownFieldException(index);
      }
    }
    input.endStructure_24f42q$(this.descriptor);
    return TextObject_init(bitMask0, local0, local1, local2, local3, local4, local5, local6, local7, local8, local9, local10, null);
  };
  TextObject$$serializer.prototype.childSerializers = function () {
    return [internal.IntSerializer, internal.IntSerializer, internal.IntSerializer, internal.StringSerializer, internal.BooleanSerializer, internal.StringSerializer, new EnumSerializer('uk.co.nickthecoder.gamescupboard.common.TextStyle', TextStyle$values()), new NullableSerializer(internal.IntSerializer), new NullableSerializer(internal.IntSerializer), new ArrayListSerializer(internal.StringSerializer), internal.IntSerializer];
  };
  TextObject$$serializer.$metadata$ = {
    kind: Kind_OBJECT,
    simpleName: '$serializer',
    interfaces: [GeneratedSerializer]
  };
  var TextObject$$serializer_instance = null;
  function TextObject$$serializer_getInstance() {
    if (TextObject$$serializer_instance === null) {
      new TextObject$$serializer();
    }
    return TextObject$$serializer_instance;
  }
  function TextObject_init(seen1, id, x, y, name, draggable, text, style, privateToPlayerId, draggingByPlayerId, cyclicText, cyclicIndex, serializationConstructorMarker) {
    var $this = serializationConstructorMarker || Object.create(TextObject.prototype);
    if ((seen1 & 1) === 0)
      throw MissingFieldException_init('id');
    else
      $this.id_30mqz2$_0 = id;
    if ((seen1 & 2) === 0)
      throw MissingFieldException_init('x');
    else
      $this.x_y9t38t$_0 = x;
    if ((seen1 & 4) === 0)
      throw MissingFieldException_init('y');
    else
      $this.y_y9t37y$_0 = y;
    if ((seen1 & 8) === 0)
      $this.name_cbm0wy$_0 = '';
    else
      $this.name_cbm0wy$_0 = name;
    if ((seen1 & 16) === 0)
      $this.draggable_dxoa1q$_0 = true;
    else
      $this.draggable_dxoa1q$_0 = draggable;
    if ((seen1 & 32) === 0)
      throw MissingFieldException_init('text');
    else
      $this.text = text;
    if ((seen1 & 64) === 0)
      $this.style = TextStyle$PLAIN_getInstance();
    else
      $this.style = style;
    if ((seen1 & 128) === 0)
      $this.privateToPlayerId_s69775$_0 = null;
    else
      $this.privateToPlayerId_s69775$_0 = privateToPlayerId;
    if ((seen1 & 256) === 0)
      $this.draggingByPlayerId_p9ery1$_0 = null;
    else
      $this.draggingByPlayerId_p9ery1$_0 = draggingByPlayerId;
    if ((seen1 & 512) === 0) {
      $this.cyclicText = ArrayList_init();
    } else
      $this.cyclicText = cyclicText;
    if ((seen1 & 1024) === 0)
      $this.cyclicIndex = 0;
    else
      $this.cyclicIndex = cyclicIndex;
    return $this;
  }
  TextObject.$metadata$ = {
    kind: Kind_CLASS,
    simpleName: 'TextObject',
    interfaces: [GameObject]
  };
  var playingAreaWidth;
  var playingAreaHeight;
  var toolbarHeight;
  var dockWidth;
  var dockHeight;
  var stageWidth;
  var stageHeight;
  var decodeOrNull = defineInlineFunction('GamesCupboard-gamescupboard-common-js-legacy.uk.co.nickthecoder.gamescupboard.common.decodeOrNull_dg4l4e$', wrapFunction(function () {
    var getReifiedTypeParameterKType = Kotlin.getReifiedTypeParameterKType;
    var markKTypeNullable = Kotlin.markKTypeNullable;
    var Exception = Kotlin.kotlin.Exception;
    var serializer = _.$$importsForInline$$['kotlinx-serialization-kotlinx-serialization-core-js-legacy'].kotlinx.serialization.serializer_ca95z9$;
    var KSerializer = _.$$importsForInline$$['kotlinx-serialization-kotlinx-serialization-core-js-legacy'].kotlinx.serialization.KSerializer;
    var throwCCE = Kotlin.throwCCE;
    return function (T_0, isT, $receiver, string) {
      var tmp$;
      try {
        var $receiver_0 = $receiver.serializersModule;
        var tmp$_0;
        tmp$ = $receiver.decodeFromString_awif5v$(Kotlin.isType(tmp$_0 = serializer($receiver_0, markKTypeNullable(getReifiedTypeParameterKType(T_0))), KSerializer) ? tmp$_0 : throwCCE(), string);
      } catch (e) {
        if (Kotlin.isType(e, Exception)) {
          tmp$ = null;
        } else
          throw e;
      }
      return tmp$;
    };
  }));
  Object.defineProperty(Packet, 'Companion', {
    get: Packet$Companion_getInstance
  });
  Object.defineProperty(Packet, '$serializer', {
    get: Packet$$serializer_getInstance
  });
  _.Packet_init_3ylo4s$ = Packet_init;
  _.Packet = Packet;
  $$importsForInline$$['kotlinx-serialization-kotlinx-serialization-core-js-legacy'] = $module$kotlinx_serialization_kotlinx_serialization_core_js_legacy;
  Object.defineProperty(Message, 'Companion', {
    get: Message$Companion_getInstance
  });
  _.Message_init_lc88fd$ = Message_init;
  _.Message = Message;
  Object.defineProperty(_, 'NotInvited', {
    get: NotInvited_getInstance
  });
  Object.defineProperty(GameInfo, 'Companion', {
    get: GameInfo$Companion_getInstance
  });
  Object.defineProperty(GameInfo, '$serializer', {
    get: GameInfo$$serializer_getInstance
  });
  _.GameInfo_init_2g3v7y$ = GameInfo_init;
  _.GameInfo = GameInfo;
  Object.defineProperty(ResetGame, 'Companion', {
    get: ResetGame$Companion_getInstance
  });
  Object.defineProperty(ResetGame, '$serializer', {
    get: ResetGame$$serializer_getInstance
  });
  _.ResetGame_init_5ljznv$ = ResetGame_init;
  _.ResetGame = ResetGame;
  Object.defineProperty(PlayerJoined, 'Companion', {
    get: PlayerJoined$Companion_getInstance
  });
  Object.defineProperty(PlayerJoined, '$serializer', {
    get: PlayerJoined$$serializer_getInstance
  });
  _.PlayerJoined_init_fpp6bs$ = PlayerJoined_init;
  _.PlayerJoined = PlayerJoined;
  Object.defineProperty(PlayerLeft, 'Companion', {
    get: PlayerLeft$Companion_getInstance
  });
  Object.defineProperty(PlayerLeft, '$serializer', {
    get: PlayerLeft$$serializer_getInstance
  });
  _.PlayerLeft_init_4n7ppb$ = PlayerLeft_init;
  _.PlayerLeft = PlayerLeft;
  Object.defineProperty(RenamePlayer, 'Companion', {
    get: RenamePlayer$Companion_getInstance
  });
  Object.defineProperty(RenamePlayer, '$serializer', {
    get: RenamePlayer$$serializer_getInstance
  });
  _.RenamePlayer_init_woby6u$ = RenamePlayer_init;
  _.RenamePlayer = RenamePlayer;
  Object.defineProperty(AddObjects, 'Companion', {
    get: AddObjects$Companion_getInstance
  });
  Object.defineProperty(AddObjects, '$serializer', {
    get: AddObjects$$serializer_getInstance
  });
  _.AddObjects_init_kniisf$ = AddObjects_init;
  _.AddObjects = AddObjects;
  Object.defineProperty(RemoveObjects, 'Companion', {
    get: RemoveObjects$Companion_getInstance
  });
  Object.defineProperty(RemoveObjects, '$serializer', {
    get: RemoveObjects$$serializer_getInstance
  });
  _.RemoveObjects_init_sk7fio$ = RemoveObjects_init;
  _.RemoveObjects = RemoveObjects;
  Object.defineProperty(ScaleObject, 'Companion', {
    get: ScaleObject$Companion_getInstance
  });
  Object.defineProperty(ScaleObject, '$serializer', {
    get: ScaleObject$$serializer_getInstance
  });
  _.ScaleObject_init_wgg0jx$ = ScaleObject_init;
  _.ScaleObject = ScaleObject;
  Object.defineProperty(CycleText, 'Companion', {
    get: CycleText$Companion_getInstance
  });
  Object.defineProperty(CycleText, '$serializer', {
    get: CycleText$$serializer_getInstance
  });
  _.CycleText_init_tup0k7$ = CycleText_init;
  _.CycleText = CycleText;
  Object.defineProperty(ChangeImage, 'Companion', {
    get: ChangeImage$Companion_getInstance
  });
  Object.defineProperty(ChangeImage, '$serializer', {
    get: ChangeImage$$serializer_getInstance
  });
  _.ChangeImage_init_tup0k7$ = ChangeImage_init;
  _.ChangeImage = ChangeImage;
  Object.defineProperty(ChangeZOrder, 'BOTTOM', {
    get: ChangeZOrder$BOTTOM_getInstance
  });
  Object.defineProperty(ChangeZOrder, 'NO_CHANGE', {
    get: ChangeZOrder$NO_CHANGE_getInstance
  });
  Object.defineProperty(ChangeZOrder, 'TOP', {
    get: ChangeZOrder$TOP_getInstance
  });
  Object.defineProperty(ChangeZOrder, 'Companion', {
    get: ChangeZOrder$Companion_getInstance
  });
  Object.defineProperty(ChangeZOrder, '$serializer', {
    get: ChangeZOrder$$serializer_getInstance
  });
  _.ChangeZOrder = ChangeZOrder;
  Object.defineProperty(MoveObject, 'Companion', {
    get: MoveObject$Companion_getInstance
  });
  Object.defineProperty(MoveObject, '$serializer', {
    get: MoveObject$$serializer_getInstance
  });
  _.MoveObject_init_antea8$ = MoveObject_init;
  _.MoveObject_init_ev8b7a$ = MoveObject_init_0;
  _.MoveObject = MoveObject;
  Object.defineProperty(DragObject, 'Companion', {
    get: DragObject$Companion_getInstance
  });
  Object.defineProperty(DragObject, '$serializer', {
    get: DragObject$$serializer_getInstance
  });
  _.DragObject_init_c9955c$ = DragObject_init;
  _.DragObject_init_ptemf3$ = DragObject_init_0;
  _.DragObject = DragObject;
  Object.defineProperty(ChangePrivacy, 'Companion', {
    get: ChangePrivacy$Companion_getInstance
  });
  Object.defineProperty(ChangePrivacy, '$serializer', {
    get: ChangePrivacy$$serializer_getInstance
  });
  _.ChangePrivacy_init_m6p4tu$ = ChangePrivacy_init;
  _.ChangePrivacy = ChangePrivacy;
  Object.defineProperty(FaceUpOrDown, 'Companion', {
    get: FaceUpOrDown$Companion_getInstance
  });
  Object.defineProperty(FaceUpOrDown, '$serializer', {
    get: FaceUpOrDown$$serializer_getInstance
  });
  _.FaceUpOrDown_init_v6gd8w$ = FaceUpOrDown_init;
  _.FaceUpOrDown = FaceUpOrDown;
  Object.defineProperty(RunCommand, 'Companion', {
    get: RunCommand$Companion_getInstance
  });
  Object.defineProperty(RunCommand, '$serializer', {
    get: RunCommand$$serializer_getInstance
  });
  _.RunCommand_init_ac7b0e$ = RunCommand_init;
  _.RunCommand = RunCommand;
  Object.defineProperty(_, 'CommandOk', {
    get: CommandOk_getInstance
  });
  Object.defineProperty(CommandError, 'Companion', {
    get: CommandError$Companion_getInstance
  });
  Object.defineProperty(CommandError, '$serializer', {
    get: CommandError$$serializer_getInstance
  });
  _.CommandError_init_q11ckg$ = CommandError_init;
  _.CommandError = CommandError;
  Object.defineProperty(ChatMessage, 'Companion', {
    get: ChatMessage$Companion_getInstance
  });
  Object.defineProperty(ChatMessage, '$serializer', {
    get: ChatMessage$$serializer_getInstance
  });
  _.ChatMessage_init_rapwd5$ = ChatMessage_init;
  _.ChatMessage = ChatMessage;
  Object.defineProperty(ScoreSheetData, 'Companion', {
    get: ScoreSheetData$Companion_getInstance
  });
  Object.defineProperty(ScoreSheetData, '$serializer', {
    get: ScoreSheetData$$serializer_getInstance
  });
  _.ScoreSheetData_init_ngs9xc$ = ScoreSheetData_init;
  _.ScoreSheetData = ScoreSheetData;
  Object.defineProperty(MouseHighlight, 'Companion', {
    get: MouseHighlight$Companion_getInstance
  });
  Object.defineProperty(MouseHighlight, '$serializer', {
    get: MouseHighlight$$serializer_getInstance
  });
  _.MouseHighlight_init_4noslj$ = MouseHighlight_init;
  _.MouseHighlight = MouseHighlight;
  Object.defineProperty(HighlightMouse, 'Companion', {
    get: HighlightMouse$Companion_getInstance
  });
  Object.defineProperty(HighlightMouse, '$serializer', {
    get: HighlightMouse$$serializer_getInstance
  });
  _.HighlightMouse_init_4noslj$ = HighlightMouse_init;
  _.HighlightMouse = HighlightMouse;
  Object.defineProperty(_, 'AddBin', {
    get: AddBin_getInstance
  });
  Object.defineProperty(AddToBin, 'Companion', {
    get: AddToBin$Companion_getInstance
  });
  Object.defineProperty(AddToBin, '$serializer', {
    get: AddToBin$$serializer_getInstance
  });
  _.AddToBin_init_4n7ppb$ = AddToBin_init;
  _.AddToBin = AddToBin;
  Object.defineProperty(_, 'RestoreFromBin', {
    get: RestoreFromBin_getInstance
  });
  Object.defineProperty(Avatar, 'Companion', {
    get: Avatar$Companion_getInstance
  });
  Object.defineProperty(Avatar, '$serializer', {
    get: Avatar$$serializer_getInstance
  });
  var package$uk = _.uk || (_.uk = {});
  var package$co = package$uk.co || (package$uk.co = {});
  var package$nickthecoder = package$co.nickthecoder || (package$co.nickthecoder = {});
  var package$gamescupboard = package$nickthecoder.gamescupboard || (package$nickthecoder.gamescupboard = {});
  var package$common = package$gamescupboard.common || (package$gamescupboard.common = {});
  package$common.Avatar_init_littqc$ = Avatar_init;
  package$common.Avatar = Avatar;
  Object.defineProperty(CommandButton, 'Companion', {
    get: CommandButton$Companion_getInstance
  });
  Object.defineProperty(CommandButton, '$serializer', {
    get: CommandButton$$serializer_getInstance
  });
  package$common.CommandButton_init_yq22bv$ = CommandButton_init;
  package$common.CommandButton = CommandButton;
  Object.defineProperty(CommandInfo, 'Companion', {
    get: CommandInfo$Companion_getInstance
  });
  Object.defineProperty(CommandInfo, '$serializer', {
    get: CommandInfo$$serializer_getInstance
  });
  package$common.CommandInfo_init_262oxh$ = CommandInfo_init;
  package$common.CommandInfo = CommandInfo;
  Object.defineProperty(CommandPrototype, 'Companion', {
    get: CommandPrototype$Companion_getInstance
  });
  Object.defineProperty(CommandPrototype, '$serializer', {
    get: CommandPrototype$$serializer_getInstance
  });
  package$common.CommandPrototype_init_kxy0tg$ = CommandPrototype_init;
  package$common.CommandPrototype = CommandPrototype;
  Object.defineProperty(FlippableImageObject, 'Companion', {
    get: FlippableImageObject$Companion_getInstance
  });
  Object.defineProperty(FlippableImageObject, '$serializer', {
    get: FlippableImageObject$$serializer_getInstance
  });
  package$common.FlippableImageObject_init_h4sunw$ = FlippableImageObject_init;
  package$common.FlippableImageObject = FlippableImageObject;
  Object.defineProperty(GameObject, 'Companion', {
    get: GameObject$Companion_getInstance
  });
  package$common.GameObject = GameObject;
  package$common.RegenGameObject = RegenGameObject;
  Object.defineProperty(Grid, 'Companion', {
    get: Grid$Companion_getInstance
  });
  Object.defineProperty(Grid, '$serializer', {
    get: Grid$$serializer_getInstance
  });
  package$common.Grid_init_5gjfzr$ = Grid_init;
  package$common.Grid = Grid;
  Object.defineProperty(GridImageObject, 'Companion', {
    get: GridImageObject$Companion_getInstance
  });
  Object.defineProperty(GridImageObject, '$serializer', {
    get: GridImageObject$$serializer_getInstance
  });
  package$common.GridImageObject_init_axwo7b$ = GridImageObject_init;
  package$common.GridImageObject = GridImageObject;
  Object.defineProperty(ImageObject, 'Companion', {
    get: ImageObject$Companion_getInstance
  });
  Object.defineProperty(ImageObject, '$serializer', {
    get: ImageObject$$serializer_getInstance
  });
  package$common.ImageObject_init_eg3vkx$ = ImageObject_init;
  package$common.ImageObject = ImageObject;
  Object.defineProperty(MultipleGridImageObject, 'Companion', {
    get: MultipleGridImageObject$Companion_getInstance
  });
  Object.defineProperty(MultipleGridImageObject, '$serializer', {
    get: MultipleGridImageObject$$serializer_getInstance
  });
  package$common.MultipleGridImageObject_init_vlsosj$ = MultipleGridImageObject_init;
  package$common.MultipleGridImageObject = MultipleGridImageObject;
  Object.defineProperty(PieceAtPointCounter, 'Companion', {
    get: PieceAtPointCounter$Companion_getInstance
  });
  Object.defineProperty(PieceAtPointCounter, '$serializer', {
    get: PieceAtPointCounter$$serializer_getInstance
  });
  package$common.PieceAtPointCounter_init_p59jnl$ = PieceAtPointCounter_init;
  package$common.PieceAtPointCounter = PieceAtPointCounter;
  Object.defineProperty(Player, 'Companion', {
    get: Player$Companion_getInstance
  });
  Object.defineProperty(Player, '$serializer', {
    get: Player$$serializer_getInstance
  });
  package$common.Player_init_tyw6o$ = Player_init;
  package$common.Player = Player;
  Object.defineProperty(SnapToGrid, 'Companion', {
    get: SnapToGrid$Companion_getInstance
  });
  package$common.SnapToGrid_init_lc88fd$ = SnapToGrid_init;
  package$common.SnapToGrid = SnapToGrid;
  Object.defineProperty(RectangularSnapToGrid, 'Companion', {
    get: RectangularSnapToGrid$Companion_getInstance
  });
  Object.defineProperty(RectangularSnapToGrid, '$serializer', {
    get: RectangularSnapToGrid$$serializer_getInstance
  });
  package$common.RectangularSnapToGrid_init_tup0k7$ = RectangularSnapToGrid_init;
  package$common.RectangularSnapToGrid = RectangularSnapToGrid;
  Object.defineProperty(HexSnap, 'Companion', {
    get: HexSnap$Companion_getInstance
  });
  Object.defineProperty(HexSnap, '$serializer', {
    get: HexSnap$$serializer_getInstance
  });
  package$common.HexSnap_init_z3xv5n$ = HexSnap_init;
  package$common.HexSnap = HexSnap;
  Object.defineProperty(AreaType, 'PRIVATE', {
    get: AreaType$PRIVATE_getInstance
  });
  Object.defineProperty(AreaType, 'PUBLIC', {
    get: AreaType$PUBLIC_getInstance
  });
  Object.defineProperty(AreaType, 'Companion', {
    get: AreaType$Companion_getInstance
  });
  Object.defineProperty(AreaType, '$serializer', {
    get: AreaType$$serializer_getInstance
  });
  package$common.AreaType = AreaType;
  Object.defineProperty(SpecialArea, 'Companion', {
    get: SpecialArea$Companion_getInstance
  });
  Object.defineProperty(SpecialArea, '$serializer', {
    get: SpecialArea$$serializer_getInstance
  });
  package$common.SpecialArea_init_dwusx5$ = SpecialArea_init;
  package$common.SpecialArea = SpecialArea;
  package$common.isPublicOrNull_xkjecl$ = isPublicOrNull;
  package$common.isPublic_xkjecl$ = isPublic;
  package$common.isPrivate_xkjecl$ = isPrivate;
  Object.defineProperty(SpecialPoint, 'Companion', {
    get: SpecialPoint$Companion_getInstance
  });
  Object.defineProperty(SpecialPoint, '$serializer', {
    get: SpecialPoint$$serializer_getInstance
  });
  package$common.SpecialPoint_init_7dxco0$ = SpecialPoint_init;
  package$common.SpecialPoint = SpecialPoint;
  Object.defineProperty(TextStyle, 'PLAIN', {
    get: TextStyle$PLAIN_getInstance
  });
  Object.defineProperty(TextStyle, 'WHITE_BOX', {
    get: TextStyle$WHITE_BOX_getInstance
  });
  Object.defineProperty(TextStyle, 'LIGHT_BOX', {
    get: TextStyle$LIGHT_BOX_getInstance
  });
  package$common.TextStyle = TextStyle;
  Object.defineProperty(TextObject, 'Companion', {
    get: TextObject$Companion_getInstance
  });
  Object.defineProperty(TextObject, '$serializer', {
    get: TextObject$$serializer_getInstance
  });
  package$common.TextObject_init_1diiwn$ = TextObject_init;
  package$common.TextObject = TextObject;
  Object.defineProperty(package$common, 'playingAreaWidth', {
    get: function () {
      return playingAreaWidth;
    }
  });
  Object.defineProperty(package$common, 'playingAreaHeight', {
    get: function () {
      return playingAreaHeight;
    }
  });
  Object.defineProperty(package$common, 'toolbarHeight', {
    get: function () {
      return toolbarHeight;
    }
  });
  Object.defineProperty(package$common, 'dockWidth', {
    get: function () {
      return dockWidth;
    }
  });
  Object.defineProperty(package$common, 'dockHeight', {
    get: function () {
      return dockHeight;
    }
  });
  Object.defineProperty(package$common, 'stageWidth', {
    get: function () {
      return stageWidth;
    }
  });
  Object.defineProperty(package$common, 'stageHeight', {
    get: function () {
      return stageHeight;
    }
  });
  Packet$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  GameInfo$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  ResetGame$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  PlayerJoined$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  PlayerLeft$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  RenamePlayer$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  AddObjects$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  RemoveObjects$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  ScaleObject$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  CycleText$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  ChangeImage$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  ChangeZOrder$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  MoveObject$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  DragObject$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  ChangePrivacy$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  FaceUpOrDown$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  RunCommand$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  CommandError$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  ChatMessage$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  ScoreSheetData$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  MouseHighlight$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  HighlightMouse$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  AddToBin$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  Avatar$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  Avatar.prototype.newMessage = GameObject.prototype.newMessage;
  Avatar.prototype.moveMessage = GameObject.prototype.moveMessage;
  Avatar.prototype.removeMessage = GameObject.prototype.removeMessage;
  Avatar.prototype.copy_za3lpa$ = GameObject.prototype.copy_za3lpa$;
  CommandButton$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  CommandInfo$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  CommandPrototype$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  FlippableImageObject$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  RegenGameObject.prototype.newMessage = GameObject.prototype.newMessage;
  RegenGameObject.prototype.moveMessage = GameObject.prototype.moveMessage;
  RegenGameObject.prototype.removeMessage = GameObject.prototype.removeMessage;
  RegenGameObject.prototype.copy_za3lpa$ = GameObject.prototype.copy_za3lpa$;
  FlippableImageObject.prototype.newMessage = GameObject.prototype.newMessage;
  FlippableImageObject.prototype.moveMessage = GameObject.prototype.moveMessage;
  FlippableImageObject.prototype.removeMessage = GameObject.prototype.removeMessage;
  FlippableImageObject.prototype.copy_za3lpa$ = RegenGameObject.prototype.copy_za3lpa$;
  Grid$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  GridImageObject$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  GridImageObject.prototype.newMessage = GameObject.prototype.newMessage;
  GridImageObject.prototype.moveMessage = GameObject.prototype.moveMessage;
  GridImageObject.prototype.removeMessage = GameObject.prototype.removeMessage;
  GridImageObject.prototype.copy_za3lpa$ = GameObject.prototype.copy_za3lpa$;
  ImageObject$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  ImageObject.prototype.newMessage = GameObject.prototype.newMessage;
  ImageObject.prototype.moveMessage = GameObject.prototype.moveMessage;
  ImageObject.prototype.removeMessage = GameObject.prototype.removeMessage;
  ImageObject.prototype.copy_za3lpa$ = RegenGameObject.prototype.copy_za3lpa$;
  MultipleGridImageObject$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  MultipleGridImageObject.prototype.newMessage = GameObject.prototype.newMessage;
  MultipleGridImageObject.prototype.moveMessage = GameObject.prototype.moveMessage;
  MultipleGridImageObject.prototype.removeMessage = GameObject.prototype.removeMessage;
  MultipleGridImageObject.prototype.copy_za3lpa$ = GameObject.prototype.copy_za3lpa$;
  PieceAtPointCounter$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  PieceAtPointCounter.prototype.newMessage = GameObject.prototype.newMessage;
  PieceAtPointCounter.prototype.moveMessage = GameObject.prototype.moveMessage;
  PieceAtPointCounter.prototype.removeMessage = GameObject.prototype.removeMessage;
  PieceAtPointCounter.prototype.copy_za3lpa$ = GameObject.prototype.copy_za3lpa$;
  Player$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  RectangularSnapToGrid$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  HexSnap$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  AreaType$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  SpecialArea$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  SpecialPoint$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  TextObject$$serializer.prototype.typeParametersSerializers = GeneratedSerializer.prototype.typeParametersSerializers;
  TextObject.prototype.newMessage = GameObject.prototype.newMessage;
  TextObject.prototype.moveMessage = GameObject.prototype.moveMessage;
  TextObject.prototype.removeMessage = GameObject.prototype.removeMessage;
  TextObject.prototype.copy_za3lpa$ = GameObject.prototype.copy_za3lpa$;
  json = Json.Default;
  playingAreaWidth = 800;
  playingAreaHeight = 600;
  toolbarHeight = 46;
  dockWidth = 30.0;
  dockHeight = 600;
  stageWidth = 830;
  stageHeight = 646;
  Kotlin.defineModule('GamesCupboard-gamescupboard-common-js-legacy', _);
  return _;
}));

//# sourceMappingURL=GamesCupboard-gamescupboard-common-js-legacy.js.map