text: /**
   * @fileoverview
   * @enhanceable
   * @suppress {messageConventions} JS Compiler reports an error if a variable or
   *     field starts with 'MSG_' and isn't a translatable message.
   * @public
   */
  // GENERATED CODE -- DO NOT EDIT!
  
  var jspb = require('google-protobuf');
  var goog = jspb;
  var global = Function('return this')();
  
  var s2clientprotocol_common_pb = require('./common_pb.js');
  goog.exportSymbol('proto.SC2APIProtocol.Color', null, global);
  goog.exportSymbol('proto.SC2APIProtocol.DebugBox', null, global);
  goog.exportSymbol('proto.SC2APIProtocol.DebugCommand', null, global);
  goog.exportSymbol('proto.SC2APIProtocol.DebugCreateUnit', null, global);
  goog.exportSymbol('proto.SC2APIProtocol.DebugDraw', null, global);
  goog.exportSymbol('proto.SC2APIProtocol.DebugEndGame', null, global);
  goog.exportSymbol('proto.SC2APIProtocol.DebugEndGame.EndResult', null, global);
  goog.exportSymbol('proto.SC2APIProtocol.DebugGameState', null, global);
  goog.exportSymbol('proto.SC2APIProtocol.DebugKillUnit', null, global);
  goog.exportSymbol('proto.SC2APIProtocol.DebugLine', null, global);
  goog.exportSymbol('proto.SC2APIProtocol.DebugSetScore', null, global);
  goog.exportSymbol('proto.SC2APIProtocol.DebugSetUnitValue', null, global);
  goog.exportSymbol('proto.SC2APIProtocol.DebugSetUnitValue.UnitValue', null, global);
  goog.exportSymbol('proto.SC2APIProtocol.DebugSphere', null, global);
  goog.exportSymbol('proto.SC2APIProtocol.DebugTestProcess', null, global);
  goog.exportSymbol('proto.SC2APIProtocol.DebugTestProcess.Test', null, global);
  goog.exportSymbol('proto.SC2APIProtocol.DebugText', null, global);
  goog.exportSymbol('proto.SC2APIProtocol.Line', null, global);
  
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.SC2APIProtocol.DebugCommand = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, proto.SC2APIProtocol.DebugCommand.oneofGroups_);
  };
  goog.inherits(proto.SC2APIProtocol.DebugCommand, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.SC2APIProtocol.DebugCommand.displayName = 'proto.SC2APIProtocol.DebugCommand';
  }
  /**
   * Oneof group definitions for this message. Each group defines the field
   * numbers belonging to that group. When of these fields' value is set, all
   * other fields in the group are cleared. During deserialization, if multiple
   * fields are encountered for a group, only the last value seen will be kept.
   * @private {!Array<!Array<number>>}
   * @const
   */
  proto.SC2APIProtocol.DebugCommand.oneofGroups_ = [[1,2,3,4,5,6,7,8]];
  
  /**
   * @enum {number}
   */
  proto.SC2APIProtocol.DebugCommand.CommandCase = {
    COMMAND_NOT_SET: 0,
    DRAW: 1,
    GAME_STATE: 2,
    CREATE_UNIT: 3,
    KILL_UNIT: 4,
    TEST_PROCESS: 5,
    SCORE: 6,
    END_GAME: 7,
    UNIT_VALUE: 8
  };
  
  /**
   * @return {proto.SC2APIProtocol.DebugCommand.CommandCase}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.getCommandCase = function() {
    return /** @type {proto.SC2APIProtocol.DebugCommand.CommandCase} */(jspb.Message.computeOneofCase(this, proto.SC2APIProtocol.DebugCommand.oneofGroups_[0]));
  };
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.toObject = function(opt_includeInstance) {
    return proto.SC2APIProtocol.DebugCommand.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.SC2APIProtocol.DebugCommand} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugCommand.toObject = function(includeInstance, msg) {
    var f, obj = {
      draw: (f = msg.getDraw()) && proto.SC2APIProtocol.DebugDraw.toObject(includeInstance, f),
      gameState: jspb.Message.getField(msg, 2),
      createUnit: (f = msg.getCreateUnit()) && proto.SC2APIProtocol.DebugCreateUnit.toObject(includeInstance, f),
      killUnit: (f = msg.getKillUnit()) && proto.SC2APIProtocol.DebugKillUnit.toObject(includeInstance, f),
      testProcess: (f = msg.getTestProcess()) && proto.SC2APIProtocol.DebugTestProcess.toObject(includeInstance, f),
      score: (f = msg.getScore()) && proto.SC2APIProtocol.DebugSetScore.toObject(includeInstance, f),
      endGame: (f = msg.getEndGame()) && proto.SC2APIProtocol.DebugEndGame.toObject(includeInstance, f),
      unitValue: (f = msg.getUnitValue()) && proto.SC2APIProtocol.DebugSetUnitValue.toObject(includeInstance, f)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.SC2APIProtocol.DebugCommand}
   */
  proto.SC2APIProtocol.DebugCommand.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.SC2APIProtocol.DebugCommand;
    return proto.SC2APIProtocol.DebugCommand.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.SC2APIProtocol.DebugCommand} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.SC2APIProtocol.DebugCommand}
   */
  proto.SC2APIProtocol.DebugCommand.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.SC2APIProtocol.DebugDraw;
        reader.readMessage(value,proto.SC2APIProtocol.DebugDraw.deserializeBinaryFromReader);
        msg.setDraw(value);
        break;
      case 2:
        var value = /** @type {!proto.SC2APIProtocol.DebugGameState} */ (reader.readEnum());
        msg.setGameState(value);
        break;
      case 3:
        var value = new proto.SC2APIProtocol.DebugCreateUnit;
        reader.readMessage(value,proto.SC2APIProtocol.DebugCreateUnit.deserializeBinaryFromReader);
        msg.setCreateUnit(value);
        break;
      case 4:
        var value = new proto.SC2APIProtocol.DebugKillUnit;
        reader.readMessage(value,proto.SC2APIProtocol.DebugKillUnit.deserializeBinaryFromReader);
        msg.setKillUnit(value);
        break;
      case 5:
        var value = new proto.SC2APIProtocol.DebugTestProcess;
        reader.readMessage(value,proto.SC2APIProtocol.DebugTestProcess.deserializeBinaryFromReader);
        msg.setTestProcess(value);
        break;
      case 6:
        var value = new proto.SC2APIProtocol.DebugSetScore;
        reader.readMessage(value,proto.SC2APIProtocol.DebugSetScore.deserializeBinaryFromReader);
        msg.setScore(value);
        break;
      case 7:
        var value = new proto.SC2APIProtocol.DebugEndGame;
        reader.readMessage(value,proto.SC2APIProtocol.DebugEndGame.deserializeBinaryFromReader);
        msg.setEndGame(value);
        break;
      case 8:
        var value = new proto.SC2APIProtocol.DebugSetUnitValue;
        reader.readMessage(value,proto.SC2APIProtocol.DebugSetUnitValue.deserializeBinaryFromReader);
        msg.setUnitValue(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.SC2APIProtocol.DebugCommand.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.SC2APIProtocol.DebugCommand} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugCommand.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getDraw();
    if (f != null) {
      writer.writeMessage(
        1,
        f,
        proto.SC2APIProtocol.DebugDraw.serializeBinaryToWriter
      );
    }
    f = /** @type {!proto.SC2APIProtocol.DebugGameState} */ (jspb.Message.getField(message, 2));
    if (f != null) {
      writer.writeEnum(
        2,
        f
      );
    }
    f = message.getCreateUnit();
    if (f != null) {
      writer.writeMessage(
        3,
        f,
        proto.SC2APIProtocol.DebugCreateUnit.serializeBinaryToWriter
      );
    }
    f = message.getKillUnit();
    if (f != null) {
      writer.writeMessage(
        4,
        f,
        proto.SC2APIProtocol.DebugKillUnit.serializeBinaryToWriter
      );
    }
    f = message.getTestProcess();
    if (f != null) {
      writer.writeMessage(
        5,
        f,
        proto.SC2APIProtocol.DebugTestProcess.serializeBinaryToWriter
      );
    }
    f = message.getScore();
    if (f != null) {
      writer.writeMessage(
        6,
        f,
        proto.SC2APIProtocol.DebugSetScore.serializeBinaryToWriter
      );
    }
    f = message.getEndGame();
    if (f != null) {
      writer.writeMessage(
        7,
        f,
        proto.SC2APIProtocol.DebugEndGame.serializeBinaryToWriter
      );
    }
    f = message.getUnitValue();
    if (f != null) {
      writer.writeMessage(
        8,
        f,
        proto.SC2APIProtocol.DebugSetUnitValue.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional DebugDraw draw = 1;
   * @return {?proto.SC2APIProtocol.DebugDraw}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.getDraw = function() {
    return /** @type{?proto.SC2APIProtocol.DebugDraw} */ (
      jspb.Message.getWrapperField(this, proto.SC2APIProtocol.DebugDraw, 1));
  };
  
  
  /** @param {?proto.SC2APIProtocol.DebugDraw|undefined} value */
  proto.SC2APIProtocol.DebugCommand.prototype.setDraw = function(value) {
    jspb.Message.setOneofWrapperField(this, 1, proto.SC2APIProtocol.DebugCommand.oneofGroups_[0], value);
  };
  
  
  proto.SC2APIProtocol.DebugCommand.prototype.clearDraw = function() {
    this.setDraw(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.hasDraw = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * optional DebugGameState game_state = 2;
   * @return {!proto.SC2APIProtocol.DebugGameState}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.getGameState = function() {
    return /** @type {!proto.SC2APIProtocol.DebugGameState} */ (jspb.Message.getFieldWithDefault(this, 2, 1));
  };
  
  
  /** @param {!proto.SC2APIProtocol.DebugGameState} value */
  proto.SC2APIProtocol.DebugCommand.prototype.setGameState = function(value) {
    jspb.Message.setOneofField(this, 2, proto.SC2APIProtocol.DebugCommand.oneofGroups_[0], value);
  };
  
  
  proto.SC2APIProtocol.DebugCommand.prototype.clearGameState = function() {
    jspb.Message.setOneofField(this, 2, proto.SC2APIProtocol.DebugCommand.oneofGroups_[0], undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.hasGameState = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  /**
   * optional DebugCreateUnit create_unit = 3;
   * @return {?proto.SC2APIProtocol.DebugCreateUnit}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.getCreateUnit = function() {
    return /** @type{?proto.SC2APIProtocol.DebugCreateUnit} */ (
      jspb.Message.getWrapperField(this, proto.SC2APIProtocol.DebugCreateUnit, 3));
  };
  
  
  /** @param {?proto.SC2APIProtocol.DebugCreateUnit|undefined} value */
  proto.SC2APIProtocol.DebugCommand.prototype.setCreateUnit = function(value) {
    jspb.Message.setOneofWrapperField(this, 3, proto.SC2APIProtocol.DebugCommand.oneofGroups_[0], value);
  };
  
  
  proto.SC2APIProtocol.DebugCommand.prototype.clearCreateUnit = function() {
    this.setCreateUnit(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.hasCreateUnit = function() {
    return jspb.Message.getField(this, 3) != null;
  };
  
  
  /**
   * optional DebugKillUnit kill_unit = 4;
   * @return {?proto.SC2APIProtocol.DebugKillUnit}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.getKillUnit = function() {
    return /** @type{?proto.SC2APIProtocol.DebugKillUnit} */ (
      jspb.Message.getWrapperField(this, proto.SC2APIProtocol.DebugKillUnit, 4));
  };
  
  
  /** @param {?proto.SC2APIProtocol.DebugKillUnit|undefined} value */
  proto.SC2APIProtocol.DebugCommand.prototype.setKillUnit = function(value) {
    jspb.Message.setOneofWrapperField(this, 4, proto.SC2APIProtocol.DebugCommand.oneofGroups_[0], value);
  };
  
  
  proto.SC2APIProtocol.DebugCommand.prototype.clearKillUnit = function() {
    this.setKillUnit(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.hasKillUnit = function() {
    return jspb.Message.getField(this, 4) != null;
  };
  
  
  /**
   * optional DebugTestProcess test_process = 5;
   * @return {?proto.SC2APIProtocol.DebugTestProcess}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.getTestProcess = function() {
    return /** @type{?proto.SC2APIProtocol.DebugTestProcess} */ (
      jspb.Message.getWrapperField(this, proto.SC2APIProtocol.DebugTestProcess, 5));
  };
  
  
  /** @param {?proto.SC2APIProtocol.DebugTestProcess|undefined} value */
  proto.SC2APIProtocol.DebugCommand.prototype.setTestProcess = function(value) {
    jspb.Message.setOneofWrapperField(this, 5, proto.SC2APIProtocol.DebugCommand.oneofGroups_[0], value);
  };
  
  
  proto.SC2APIProtocol.DebugCommand.prototype.clearTestProcess = function() {
    this.setTestProcess(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.hasTestProcess = function() {
    return jspb.Message.getField(this, 5) != null;
  };
  
  
  /**
   * optional DebugSetScore score = 6;
   * @return {?proto.SC2APIProtocol.DebugSetScore}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.getScore = function() {
    return /** @type{?proto.SC2APIProtocol.DebugSetScore} */ (
      jspb.Message.getWrapperField(this, proto.SC2APIProtocol.DebugSetScore, 6));
  };
  
  
  /** @param {?proto.SC2APIProtocol.DebugSetScore|undefined} value */
  proto.SC2APIProtocol.DebugCommand.prototype.setScore = function(value) {
    jspb.Message.setOneofWrapperField(this, 6, proto.SC2APIProtocol.DebugCommand.oneofGroups_[0], value);
  };
  
  
  proto.SC2APIProtocol.DebugCommand.prototype.clearScore = function() {
    this.setScore(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.hasScore = function() {
    return jspb.Message.getField(this, 6) != null;
  };
  
  
  /**
   * optional DebugEndGame end_game = 7;
   * @return {?proto.SC2APIProtocol.DebugEndGame}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.getEndGame = function() {
    return /** @type{?proto.SC2APIProtocol.DebugEndGame} */ (
      jspb.Message.getWrapperField(this, proto.SC2APIProtocol.DebugEndGame, 7));
  };
  
  
  /** @param {?proto.SC2APIProtocol.DebugEndGame|undefined} value */
  proto.SC2APIProtocol.DebugCommand.prototype.setEndGame = function(value) {
    jspb.Message.setOneofWrapperField(this, 7, proto.SC2APIProtocol.DebugCommand.oneofGroups_[0], value);
  };
  
  
  proto.SC2APIProtocol.DebugCommand.prototype.clearEndGame = function() {
    this.setEndGame(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.hasEndGame = function() {
    return jspb.Message.getField(this, 7) != null;
  };
  
  
  /**
   * optional DebugSetUnitValue unit_value = 8;
   * @return {?proto.SC2APIProtocol.DebugSetUnitValue}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.getUnitValue = function() {
    return /** @type{?proto.SC2APIProtocol.DebugSetUnitValue} */ (
      jspb.Message.getWrapperField(this, proto.SC2APIProtocol.DebugSetUnitValue, 8));
  };
  
  
  /** @param {?proto.SC2APIProtocol.DebugSetUnitValue|undefined} value */
  proto.SC2APIProtocol.DebugCommand.prototype.setUnitValue = function(value) {
    jspb.Message.setOneofWrapperField(this, 8, proto.SC2APIProtocol.DebugCommand.oneofGroups_[0], value);
  };
  
  
  proto.SC2APIProtocol.DebugCommand.prototype.clearUnitValue = function() {
    this.setUnitValue(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugCommand.prototype.hasUnitValue = function() {
    return jspb.Message.getField(this, 8) != null;
  };
  
  
  
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.SC2APIProtocol.DebugDraw = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.SC2APIProtocol.DebugDraw.repeatedFields_, null);
  };
  goog.inherits(proto.SC2APIProtocol.DebugDraw, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.SC2APIProtocol.DebugDraw.displayName = 'proto.SC2APIProtocol.DebugDraw';
  }
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.SC2APIProtocol.DebugDraw.repeatedFields_ = [1,2,3,4];
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.SC2APIProtocol.DebugDraw.prototype.toObject = function(opt_includeInstance) {
    return proto.SC2APIProtocol.DebugDraw.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.SC2APIProtocol.DebugDraw} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugDraw.toObject = function(includeInstance, msg) {
    var f, obj = {
      textList: jspb.Message.toObjectList(msg.getTextList(),
      proto.SC2APIProtocol.DebugText.toObject, includeInstance),
      linesList: jspb.Message.toObjectList(msg.getLinesList(),
      proto.SC2APIProtocol.DebugLine.toObject, includeInstance),
      boxesList: jspb.Message.toObjectList(msg.getBoxesList(),
      proto.SC2APIProtocol.DebugBox.toObject, includeInstance),
      spheresList: jspb.Message.toObjectList(msg.getSpheresList(),
      proto.SC2APIProtocol.DebugSphere.toObject, includeInstance)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.SC2APIProtocol.DebugDraw}
   */
  proto.SC2APIProtocol.DebugDraw.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.SC2APIProtocol.DebugDraw;
    return proto.SC2APIProtocol.DebugDraw.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.SC2APIProtocol.DebugDraw} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.SC2APIProtocol.DebugDraw}
   */
  proto.SC2APIProtocol.DebugDraw.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.SC2APIProtocol.DebugText;
        reader.readMessage(value,proto.SC2APIProtocol.DebugText.deserializeBinaryFromReader);
        msg.addText(value);
        break;
      case 2:
        var value = new proto.SC2APIProtocol.DebugLine;
        reader.readMessage(value,proto.SC2APIProtocol.DebugLine.deserializeBinaryFromReader);
        msg.addLines(value);
        break;
      case 3:
        var value = new proto.SC2APIProtocol.DebugBox;
        reader.readMessage(value,proto.SC2APIProtocol.DebugBox.deserializeBinaryFromReader);
        msg.addBoxes(value);
        break;
      case 4:
        var value = new proto.SC2APIProtocol.DebugSphere;
        reader.readMessage(value,proto.SC2APIProtocol.DebugSphere.deserializeBinaryFromReader);
        msg.addSpheres(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.SC2APIProtocol.DebugDraw.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.SC2APIProtocol.DebugDraw.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.SC2APIProtocol.DebugDraw} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugDraw.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getTextList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        1,
        f,
        proto.SC2APIProtocol.DebugText.serializeBinaryToWriter
      );
    }
    f = message.getLinesList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        2,
        f,
        proto.SC2APIProtocol.DebugLine.serializeBinaryToWriter
      );
    }
    f = message.getBoxesList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        3,
        f,
        proto.SC2APIProtocol.DebugBox.serializeBinaryToWriter
      );
    }
    f = message.getSpheresList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        4,
        f,
        proto.SC2APIProtocol.DebugSphere.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * repeated DebugText text = 1;
   * @return {!Array.<!proto.SC2APIProtocol.DebugText>}
   */
  proto.SC2APIProtocol.DebugDraw.prototype.getTextList = function() {
    return /** @type{!Array.<!proto.SC2APIProtocol.DebugText>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.SC2APIProtocol.DebugText, 1));
  };
  
  
  /** @param {!Array.<!proto.SC2APIProtocol.DebugText>} value */
  proto.SC2APIProtocol.DebugDraw.prototype.setTextList = function(value) {
    jspb.Message.setRepeatedWrapperField(this, 1, value);
  };
  
  
  /**
   * @param {!proto.SC2APIProtocol.DebugText=} opt_value
   * @param {number=} opt_index
   * @return {!proto.SC2APIProtocol.DebugText}
   */
  proto.SC2APIProtocol.DebugDraw.prototype.addText = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.SC2APIProtocol.DebugText, opt_index);
  };
  
  
  proto.SC2APIProtocol.DebugDraw.prototype.clearTextList = function() {
    this.setTextList([]);
  };
  
  
  /**
   * repeated DebugLine lines = 2;
   * @return {!Array.<!proto.SC2APIProtocol.DebugLine>}
   */
  proto.SC2APIProtocol.DebugDraw.prototype.getLinesList = function() {
    return /** @type{!Array.<!proto.SC2APIProtocol.DebugLine>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.SC2APIProtocol.DebugLine, 2));
  };
  
  
  /** @param {!Array.<!proto.SC2APIProtocol.DebugLine>} value */
  proto.SC2APIProtocol.DebugDraw.prototype.setLinesList = function(value) {
    jspb.Message.setRepeatedWrapperField(this, 2, value);
  };
  
  
  /**
   * @param {!proto.SC2APIProtocol.DebugLine=} opt_value
   * @param {number=} opt_index
   * @return {!proto.SC2APIProtocol.DebugLine}
   */
  proto.SC2APIProtocol.DebugDraw.prototype.addLines = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.SC2APIProtocol.DebugLine, opt_index);
  };
  
  
  proto.SC2APIProtocol.DebugDraw.prototype.clearLinesList = function() {
    this.setLinesList([]);
  };
  
  
  /**
   * repeated DebugBox boxes = 3;
   * @return {!Array.<!proto.SC2APIProtocol.DebugBox>}
   */
  proto.SC2APIProtocol.DebugDraw.prototype.getBoxesList = function() {
    return /** @type{!Array.<!proto.SC2APIProtocol.DebugBox>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.SC2APIProtocol.DebugBox, 3));
  };
  
  
  /** @param {!Array.<!proto.SC2APIProtocol.DebugBox>} value */
  proto.SC2APIProtocol.DebugDraw.prototype.setBoxesList = function(value) {
    jspb.Message.setRepeatedWrapperField(this, 3, value);
  };
  
  
  /**
   * @param {!proto.SC2APIProtocol.DebugBox=} opt_value
   * @param {number=} opt_index
   * @return {!proto.SC2APIProtocol.DebugBox}
   */
  proto.SC2APIProtocol.DebugDraw.prototype.addBoxes = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.SC2APIProtocol.DebugBox, opt_index);
  };
  
  
  proto.SC2APIProtocol.DebugDraw.prototype.clearBoxesList = function() {
    this.setBoxesList([]);
  };
  
  
  /**
   * repeated DebugSphere spheres = 4;
   * @return {!Array.<!proto.SC2APIProtocol.DebugSphere>}
   */
  proto.SC2APIProtocol.DebugDraw.prototype.getSpheresList = function() {
    return /** @type{!Array.<!proto.SC2APIProtocol.DebugSphere>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.SC2APIProtocol.DebugSphere, 4));
  };
  
  
  /** @param {!Array.<!proto.SC2APIProtocol.DebugSphere>} value */
  proto.SC2APIProtocol.DebugDraw.prototype.setSpheresList = function(value) {
    jspb.Message.setRepeatedWrapperField(this, 4, value);
  };
  
  
  /**
   * @param {!proto.SC2APIProtocol.DebugSphere=} opt_value
   * @param {number=} opt_index
   * @return {!proto.SC2APIProtocol.DebugSphere}
   */
  proto.SC2APIProtocol.DebugDraw.prototype.addSpheres = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.SC2APIProtocol.DebugSphere, opt_index);
  };
  
  
  proto.SC2APIProtocol.DebugDraw.prototype.clearSpheresList = function() {
    this.setSpheresList([]);
  };
  
  
  
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.SC2APIProtocol.Line = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.SC2APIProtocol.Line, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.SC2APIProtocol.Line.displayName = 'proto.SC2APIProtocol.Line';
  }
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.SC2APIProtocol.Line.prototype.toObject = function(opt_includeInstance) {
    return proto.SC2APIProtocol.Line.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.SC2APIProtocol.Line} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.Line.toObject = function(includeInstance, msg) {
    var f, obj = {
      p0: (f = msg.getP0()) && s2clientprotocol_common_pb.Point.toObject(includeInstance, f),
      p1: (f = msg.getP1()) && s2clientprotocol_common_pb.Point.toObject(includeInstance, f)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.SC2APIProtocol.Line}
   */
  proto.SC2APIProtocol.Line.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.SC2APIProtocol.Line;
    return proto.SC2APIProtocol.Line.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.SC2APIProtocol.Line} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.SC2APIProtocol.Line}
   */
  proto.SC2APIProtocol.Line.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new s2clientprotocol_common_pb.Point;
        reader.readMessage(value,s2clientprotocol_common_pb.Point.deserializeBinaryFromReader);
        msg.setP0(value);
        break;
      case 2:
        var value = new s2clientprotocol_common_pb.Point;
        reader.readMessage(value,s2clientprotocol_common_pb.Point.deserializeBinaryFromReader);
        msg.setP1(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.SC2APIProtocol.Line.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.SC2APIProtocol.Line.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.SC2APIProtocol.Line} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.Line.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getP0();
    if (f != null) {
      writer.writeMessage(
        1,
        f,
        s2clientprotocol_common_pb.Point.serializeBinaryToWriter
      );
    }
    f = message.getP1();
    if (f != null) {
      writer.writeMessage(
        2,
        f,
        s2clientprotocol_common_pb.Point.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional Point p0 = 1;
   * @return {?proto.SC2APIProtocol.Point}
   */
  proto.SC2APIProtocol.Line.prototype.getP0 = function() {
    return /** @type{?proto.SC2APIProtocol.Point} */ (
      jspb.Message.getWrapperField(this, s2clientprotocol_common_pb.Point, 1));
  };
  
  
  /** @param {?proto.SC2APIProtocol.Point|undefined} value */
  proto.SC2APIProtocol.Line.prototype.setP0 = function(value) {
    jspb.Message.setWrapperField(this, 1, value);
  };
  
  
  proto.SC2APIProtocol.Line.prototype.clearP0 = function() {
    this.setP0(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.Line.prototype.hasP0 = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * optional Point p1 = 2;
   * @return {?proto.SC2APIProtocol.Point}
   */
  proto.SC2APIProtocol.Line.prototype.getP1 = function() {
    return /** @type{?proto.SC2APIProtocol.Point} */ (
      jspb.Message.getWrapperField(this, s2clientprotocol_common_pb.Point, 2));
  };
  
  
  /** @param {?proto.SC2APIProtocol.Point|undefined} value */
  proto.SC2APIProtocol.Line.prototype.setP1 = function(value) {
    jspb.Message.setWrapperField(this, 2, value);
  };
  
  
  proto.SC2APIProtocol.Line.prototype.clearP1 = function() {
    this.setP1(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.Line.prototype.hasP1 = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.SC2APIProtocol.Color = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.SC2APIProtocol.Color, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.SC2APIProtocol.Color.displayName = 'proto.SC2APIProtocol.Color';
  }
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.SC2APIProtocol.Color.prototype.toObject = function(opt_includeInstance) {
    return proto.SC2APIProtocol.Color.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.SC2APIProtocol.Color} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.Color.toObject = function(includeInstance, msg) {
    var f, obj = {
      r: jspb.Message.getField(msg, 1),
      g: jspb.Message.getField(msg, 2),
      b: jspb.Message.getField(msg, 3)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.SC2APIProtocol.Color}
   */
  proto.SC2APIProtocol.Color.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.SC2APIProtocol.Color;
    return proto.SC2APIProtocol.Color.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.SC2APIProtocol.Color} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.SC2APIProtocol.Color}
   */
  proto.SC2APIProtocol.Color.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {number} */ (reader.readUint32());
        msg.setR(value);
        break;
      case 2:
        var value = /** @type {number} */ (reader.readUint32());
        msg.setG(value);
        break;
      case 3:
        var value = /** @type {number} */ (reader.readUint32());
        msg.setB(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.SC2APIProtocol.Color.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.SC2APIProtocol.Color.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.SC2APIProtocol.Color} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.Color.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = /** @type {number} */ (jspb.Message.getField(message, 1));
    if (f != null) {
      writer.writeUint32(
        1,
        f
      );
    }
    f = /** @type {number} */ (jspb.Message.getField(message, 2));
    if (f != null) {
      writer.writeUint32(
        2,
        f
      );
    }
    f = /** @type {number} */ (jspb.Message.getField(message, 3));
    if (f != null) {
      writer.writeUint32(
        3,
        f
      );
    }
  };
  
  
  /**
   * optional uint32 r = 1;
   * @return {number}
   */
  proto.SC2APIProtocol.Color.prototype.getR = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
  };
  
  
  /** @param {number} value */
  proto.SC2APIProtocol.Color.prototype.setR = function(value) {
    jspb.Message.setField(this, 1, value);
  };
  
  
  proto.SC2APIProtocol.Color.prototype.clearR = function() {
    jspb.Message.setField(this, 1, undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.Color.prototype.hasR = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * optional uint32 g = 2;
   * @return {number}
   */
  proto.SC2APIProtocol.Color.prototype.getG = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
  };
  
  
  /** @param {number} value */
  proto.SC2APIProtocol.Color.prototype.setG = function(value) {
    jspb.Message.setField(this, 2, value);
  };
  
  
  proto.SC2APIProtocol.Color.prototype.clearG = function() {
    jspb.Message.setField(this, 2, undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.Color.prototype.hasG = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  /**
   * optional uint32 b = 3;
   * @return {number}
   */
  proto.SC2APIProtocol.Color.prototype.getB = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
  };
  
  
  /** @param {number} value */
  proto.SC2APIProtocol.Color.prototype.setB = function(value) {
    jspb.Message.setField(this, 3, value);
  };
  
  
  proto.SC2APIProtocol.Color.prototype.clearB = function() {
    jspb.Message.setField(this, 3, undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.Color.prototype.hasB = function() {
    return jspb.Message.getField(this, 3) != null;
  };
  
  
  
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.SC2APIProtocol.DebugText = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.SC2APIProtocol.DebugText, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.SC2APIProtocol.DebugText.displayName = 'proto.SC2APIProtocol.DebugText';
  }
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.SC2APIProtocol.DebugText.prototype.toObject = function(opt_includeInstance) {
    return proto.SC2APIProtocol.DebugText.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.SC2APIProtocol.DebugText} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugText.toObject = function(includeInstance, msg) {
    var f, obj = {
      color: (f = msg.getColor()) && proto.SC2APIProtocol.Color.toObject(includeInstance, f),
      text: jspb.Message.getField(msg, 2),
      virtualPos: (f = msg.getVirtualPos()) && s2clientprotocol_common_pb.Point.toObject(includeInstance, f),
      worldPos: (f = msg.getWorldPos()) && s2clientprotocol_common_pb.Point.toObject(includeInstance, f),
      size: jspb.Message.getField(msg, 5)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.SC2APIProtocol.DebugText}
   */
  proto.SC2APIProtocol.DebugText.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.SC2APIProtocol.DebugText;
    return proto.SC2APIProtocol.DebugText.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.SC2APIProtocol.DebugText} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.SC2APIProtocol.DebugText}
   */
  proto.SC2APIProtocol.DebugText.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.SC2APIProtocol.Color;
        reader.readMessage(value,proto.SC2APIProtocol.Color.deserializeBinaryFromReader);
        msg.setColor(value);
        break;
      case 2:
        var value = /** @type {string} */ (reader.readString());
        msg.setText(value);
        break;
      case 3:
        var value = new s2clientprotocol_common_pb.Point;
        reader.readMessage(value,s2clientprotocol_common_pb.Point.deserializeBinaryFromReader);
        msg.setVirtualPos(value);
        break;
      case 4:
        var value = new s2clientprotocol_common_pb.Point;
        reader.readMessage(value,s2clientprotocol_common_pb.Point.deserializeBinaryFromReader);
        msg.setWorldPos(value);
        break;
      case 5:
        var value = /** @type {number} */ (reader.readUint32());
        msg.setSize(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.SC2APIProtocol.DebugText.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.SC2APIProtocol.DebugText.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.SC2APIProtocol.DebugText} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugText.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getColor();
    if (f != null) {
      writer.writeMessage(
        1,
        f,
        proto.SC2APIProtocol.Color.serializeBinaryToWriter
      );
    }
    f = /** @type {string} */ (jspb.Message.getField(message, 2));
    if (f != null) {
      writer.writeString(
        2,
        f
      );
    }
    f = message.getVirtualPos();
    if (f != null) {
      writer.writeMessage(
        3,
        f,
        s2clientprotocol_common_pb.Point.serializeBinaryToWriter
      );
    }
    f = message.getWorldPos();
    if (f != null) {
      writer.writeMessage(
        4,
        f,
        s2clientprotocol_common_pb.Point.serializeBinaryToWriter
      );
    }
    f = /** @type {number} */ (jspb.Message.getField(message, 5));
    if (f != null) {
      writer.writeUint32(
        5,
        f
      );
    }
  };
  
  
  /**
   * optional Color color = 1;
   * @return {?proto.SC2APIProtocol.Color}
   */
  proto.SC2APIProtocol.DebugText.prototype.getColor = function() {
    return /** @type{?proto.SC2APIProtocol.Color} */ (
      jspb.Message.getWrapperField(this, proto.SC2APIProtocol.Color, 1));
  };
  
  
  /** @param {?proto.SC2APIProtocol.Color|undefined} value */
  proto.SC2APIProtocol.DebugText.prototype.setColor = function(value) {
    jspb.Message.setWrapperField(this, 1, value);
  };
  
  
  proto.SC2APIProtocol.DebugText.prototype.clearColor = function() {
    this.setColor(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugText.prototype.hasColor = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * optional string text = 2;
   * @return {string}
   */
  proto.SC2APIProtocol.DebugText.prototype.getText = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
  };
  
  
  /** @param {string} value */
  proto.SC2APIProtocol.DebugText.prototype.setText = function(value) {
    jspb.Message.setField(this, 2, value);
  };
  
  
  proto.SC2APIProtocol.DebugText.prototype.clearText = function() {
    jspb.Message.setField(this, 2, undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugText.prototype.hasText = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  /**
   * optional Point virtual_pos = 3;
   * @return {?proto.SC2APIProtocol.Point}
   */
  proto.SC2APIProtocol.DebugText.prototype.getVirtualPos = function() {
    return /** @type{?proto.SC2APIProtocol.Point} */ (
      jspb.Message.getWrapperField(this, s2clientprotocol_common_pb.Point, 3));
  };
  
  
  /** @param {?proto.SC2APIProtocol.Point|undefined} value */
  proto.SC2APIProtocol.DebugText.prototype.setVirtualPos = function(value) {
    jspb.Message.setWrapperField(this, 3, value);
  };
  
  
  proto.SC2APIProtocol.DebugText.prototype.clearVirtualPos = function() {
    this.setVirtualPos(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugText.prototype.hasVirtualPos = function() {
    return jspb.Message.getField(this, 3) != null;
  };
  
  
  /**
   * optional Point world_pos = 4;
   * @return {?proto.SC2APIProtocol.Point}
   */
  proto.SC2APIProtocol.DebugText.prototype.getWorldPos = function() {
    return /** @type{?proto.SC2APIProtocol.Point} */ (
      jspb.Message.getWrapperField(this, s2clientprotocol_common_pb.Point, 4));
  };
  
  
  /** @param {?proto.SC2APIProtocol.Point|undefined} value */
  proto.SC2APIProtocol.DebugText.prototype.setWorldPos = function(value) {
    jspb.Message.setWrapperField(this, 4, value);
  };
  
  
  proto.SC2APIProtocol.DebugText.prototype.clearWorldPos = function() {
    this.setWorldPos(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugText.prototype.hasWorldPos = function() {
    return jspb.Message.getField(this, 4) != null;
  };
  
  
  /**
   * optional uint32 size = 5;
   * @return {number}
   */
  proto.SC2APIProtocol.DebugText.prototype.getSize = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));
  };
  
  
  /** @param {number} value */
  proto.SC2APIProtocol.DebugText.prototype.setSize = function(value) {
    jspb.Message.setField(this, 5, value);
  };
  
  
  proto.SC2APIProtocol.DebugText.prototype.clearSize = function() {
    jspb.Message.setField(this, 5, undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugText.prototype.hasSize = function() {
    return jspb.Message.getField(this, 5) != null;
  };
  
  
  
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.SC2APIProtocol.DebugLine = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.SC2APIProtocol.DebugLine, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.SC2APIProtocol.DebugLine.displayName = 'proto.SC2APIProtocol.DebugLine';
  }
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.SC2APIProtocol.DebugLine.prototype.toObject = function(opt_includeInstance) {
    return proto.SC2APIProtocol.DebugLine.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.SC2APIProtocol.DebugLine} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugLine.toObject = function(includeInstance, msg) {
    var f, obj = {
      color: (f = msg.getColor()) && proto.SC2APIProtocol.Color.toObject(includeInstance, f),
      line: (f = msg.getLine()) && proto.SC2APIProtocol.Line.toObject(includeInstance, f)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.SC2APIProtocol.DebugLine}
   */
  proto.SC2APIProtocol.DebugLine.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.SC2APIProtocol.DebugLine;
    return proto.SC2APIProtocol.DebugLine.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.SC2APIProtocol.DebugLine} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.SC2APIProtocol.DebugLine}
   */
  proto.SC2APIProtocol.DebugLine.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.SC2APIProtocol.Color;
        reader.readMessage(value,proto.SC2APIProtocol.Color.deserializeBinaryFromReader);
        msg.setColor(value);
        break;
      case 2:
        var value = new proto.SC2APIProtocol.Line;
        reader.readMessage(value,proto.SC2APIProtocol.Line.deserializeBinaryFromReader);
        msg.setLine(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.SC2APIProtocol.DebugLine.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.SC2APIProtocol.DebugLine.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.SC2APIProtocol.DebugLine} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugLine.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getColor();
    if (f != null) {
      writer.writeMessage(
        1,
        f,
        proto.SC2APIProtocol.Color.serializeBinaryToWriter
      );
    }
    f = message.getLine();
    if (f != null) {
      writer.writeMessage(
        2,
        f,
        proto.SC2APIProtocol.Line.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional Color color = 1;
   * @return {?proto.SC2APIProtocol.Color}
   */
  proto.SC2APIProtocol.DebugLine.prototype.getColor = function() {
    return /** @type{?proto.SC2APIProtocol.Color} */ (
      jspb.Message.getWrapperField(this, proto.SC2APIProtocol.Color, 1));
  };
  
  
  /** @param {?proto.SC2APIProtocol.Color|undefined} value */
  proto.SC2APIProtocol.DebugLine.prototype.setColor = function(value) {
    jspb.Message.setWrapperField(this, 1, value);
  };
  
  
  proto.SC2APIProtocol.DebugLine.prototype.clearColor = function() {
    this.setColor(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugLine.prototype.hasColor = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * optional Line line = 2;
   * @return {?proto.SC2APIProtocol.Line}
   */
  proto.SC2APIProtocol.DebugLine.prototype.getLine = function() {
    return /** @type{?proto.SC2APIProtocol.Line} */ (
      jspb.Message.getWrapperField(this, proto.SC2APIProtocol.Line, 2));
  };
  
  
  /** @param {?proto.SC2APIProtocol.Line|undefined} value */
  proto.SC2APIProtocol.DebugLine.prototype.setLine = function(value) {
    jspb.Message.setWrapperField(this, 2, value);
  };
  
  
  proto.SC2APIProtocol.DebugLine.prototype.clearLine = function() {
    this.setLine(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugLine.prototype.hasLine = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.SC2APIProtocol.DebugBox = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.SC2APIProtocol.DebugBox, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.SC2APIProtocol.DebugBox.displayName = 'proto.SC2APIProtocol.DebugBox';
  }
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.SC2APIProtocol.DebugBox.prototype.toObject = function(opt_includeInstance) {
    return proto.SC2APIProtocol.DebugBox.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.SC2APIProtocol.DebugBox} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugBox.toObject = function(includeInstance, msg) {
    var f, obj = {
      color: (f = msg.getColor()) && proto.SC2APIProtocol.Color.toObject(includeInstance, f),
      min: (f = msg.getMin()) && s2clientprotocol_common_pb.Point.toObject(includeInstance, f),
      max: (f = msg.getMax()) && s2clientprotocol_common_pb.Point.toObject(includeInstance, f)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.SC2APIProtocol.DebugBox}
   */
  proto.SC2APIProtocol.DebugBox.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.SC2APIProtocol.DebugBox;
    return proto.SC2APIProtocol.DebugBox.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.SC2APIProtocol.DebugBox} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.SC2APIProtocol.DebugBox}
   */
  proto.SC2APIProtocol.DebugBox.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.SC2APIProtocol.Color;
        reader.readMessage(value,proto.SC2APIProtocol.Color.deserializeBinaryFromReader);
        msg.setColor(value);
        break;
      case 2:
        var value = new s2clientprotocol_common_pb.Point;
        reader.readMessage(value,s2clientprotocol_common_pb.Point.deserializeBinaryFromReader);
        msg.setMin(value);
        break;
      case 3:
        var value = new s2clientprotocol_common_pb.Point;
        reader.readMessage(value,s2clientprotocol_common_pb.Point.deserializeBinaryFromReader);
        msg.setMax(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.SC2APIProtocol.DebugBox.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.SC2APIProtocol.DebugBox.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.SC2APIProtocol.DebugBox} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugBox.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getColor();
    if (f != null) {
      writer.writeMessage(
        1,
        f,
        proto.SC2APIProtocol.Color.serializeBinaryToWriter
      );
    }
    f = message.getMin();
    if (f != null) {
      writer.writeMessage(
        2,
        f,
        s2clientprotocol_common_pb.Point.serializeBinaryToWriter
      );
    }
    f = message.getMax();
    if (f != null) {
      writer.writeMessage(
        3,
        f,
        s2clientprotocol_common_pb.Point.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional Color color = 1;
   * @return {?proto.SC2APIProtocol.Color}
   */
  proto.SC2APIProtocol.DebugBox.prototype.getColor = function() {
    return /** @type{?proto.SC2APIProtocol.Color} */ (
      jspb.Message.getWrapperField(this, proto.SC2APIProtocol.Color, 1));
  };
  
  
  /** @param {?proto.SC2APIProtocol.Color|undefined} value */
  proto.SC2APIProtocol.DebugBox.prototype.setColor = function(value) {
    jspb.Message.setWrapperField(this, 1, value);
  };
  
  
  proto.SC2APIProtocol.DebugBox.prototype.clearColor = function() {
    this.setColor(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugBox.prototype.hasColor = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * optional Point min = 2;
   * @return {?proto.SC2APIProtocol.Point}
   */
  proto.SC2APIProtocol.DebugBox.prototype.getMin = function() {
    return /** @type{?proto.SC2APIProtocol.Point} */ (
      jspb.Message.getWrapperField(this, s2clientprotocol_common_pb.Point, 2));
  };
  
  
  /** @param {?proto.SC2APIProtocol.Point|undefined} value */
  proto.SC2APIProtocol.DebugBox.prototype.setMin = function(value) {
    jspb.Message.setWrapperField(this, 2, value);
  };
  
  
  proto.SC2APIProtocol.DebugBox.prototype.clearMin = function() {
    this.setMin(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugBox.prototype.hasMin = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  /**
   * optional Point max = 3;
   * @return {?proto.SC2APIProtocol.Point}
   */
  proto.SC2APIProtocol.DebugBox.prototype.getMax = function() {
    return /** @type{?proto.SC2APIProtocol.Point} */ (
      jspb.Message.getWrapperField(this, s2clientprotocol_common_pb.Point, 3));
  };
  
  
  /** @param {?proto.SC2APIProtocol.Point|undefined} value */
  proto.SC2APIProtocol.DebugBox.prototype.setMax = function(value) {
    jspb.Message.setWrapperField(this, 3, value);
  };
  
  
  proto.SC2APIProtocol.DebugBox.prototype.clearMax = function() {
    this.setMax(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugBox.prototype.hasMax = function() {
    return jspb.Message.getField(this, 3) != null;
  };
  
  
  
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.SC2APIProtocol.DebugSphere = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.SC2APIProtocol.DebugSphere, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.SC2APIProtocol.DebugSphere.displayName = 'proto.SC2APIProtocol.DebugSphere';
  }
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.SC2APIProtocol.DebugSphere.prototype.toObject = function(opt_includeInstance) {
    return proto.SC2APIProtocol.DebugSphere.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.SC2APIProtocol.DebugSphere} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugSphere.toObject = function(includeInstance, msg) {
    var f, obj = {
      color: (f = msg.getColor()) && proto.SC2APIProtocol.Color.toObject(includeInstance, f),
      p: (f = msg.getP()) && s2clientprotocol_common_pb.Point.toObject(includeInstance, f),
      r: jspb.Message.getOptionalFloatingPointField(msg, 3)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.SC2APIProtocol.DebugSphere}
   */
  proto.SC2APIProtocol.DebugSphere.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.SC2APIProtocol.DebugSphere;
    return proto.SC2APIProtocol.DebugSphere.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.SC2APIProtocol.DebugSphere} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.SC2APIProtocol.DebugSphere}
   */
  proto.SC2APIProtocol.DebugSphere.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.SC2APIProtocol.Color;
        reader.readMessage(value,proto.SC2APIProtocol.Color.deserializeBinaryFromReader);
        msg.setColor(value);
        break;
      case 2:
        var value = new s2clientprotocol_common_pb.Point;
        reader.readMessage(value,s2clientprotocol_common_pb.Point.deserializeBinaryFromReader);
        msg.setP(value);
        break;
      case 3:
        var value = /** @type {number} */ (reader.readFloat());
        msg.setR(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.SC2APIProtocol.DebugSphere.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.SC2APIProtocol.DebugSphere.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.SC2APIProtocol.DebugSphere} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugSphere.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getColor();
    if (f != null) {
      writer.writeMessage(
        1,
        f,
        proto.SC2APIProtocol.Color.serializeBinaryToWriter
      );
    }
    f = message.getP();
    if (f != null) {
      writer.writeMessage(
        2,
        f,
        s2clientprotocol_common_pb.Point.serializeBinaryToWriter
      );
    }
    f = /** @type {number} */ (jspb.Message.getField(message, 3));
    if (f != null) {
      writer.writeFloat(
        3,
        f
      );
    }
  };
  
  
  /**
   * optional Color color = 1;
   * @return {?proto.SC2APIProtocol.Color}
   */
  proto.SC2APIProtocol.DebugSphere.prototype.getColor = function() {
    return /** @type{?proto.SC2APIProtocol.Color} */ (
      jspb.Message.getWrapperField(this, proto.SC2APIProtocol.Color, 1));
  };
  
  
  /** @param {?proto.SC2APIProtocol.Color|undefined} value */
  proto.SC2APIProtocol.DebugSphere.prototype.setColor = function(value) {
    jspb.Message.setWrapperField(this, 1, value);
  };
  
  
  proto.SC2APIProtocol.DebugSphere.prototype.clearColor = function() {
    this.setColor(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugSphere.prototype.hasColor = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * optional Point p = 2;
   * @return {?proto.SC2APIProtocol.Point}
   */
  proto.SC2APIProtocol.DebugSphere.prototype.getP = function() {
    return /** @type{?proto.SC2APIProtocol.Point} */ (
      jspb.Message.getWrapperField(this, s2clientprotocol_common_pb.Point, 2));
  };
  
  
  /** @param {?proto.SC2APIProtocol.Point|undefined} value */
  proto.SC2APIProtocol.DebugSphere.prototype.setP = function(value) {
    jspb.Message.setWrapperField(this, 2, value);
  };
  
  
  proto.SC2APIProtocol.DebugSphere.prototype.clearP = function() {
    this.setP(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugSphere.prototype.hasP = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  /**
   * optional float r = 3;
   * @return {number}
   */
  proto.SC2APIProtocol.DebugSphere.prototype.getR = function() {
    return /** @type {number} */ (+jspb.Message.getFieldWithDefault(this, 3, 0.0));
  };
  
  
  /** @param {number} value */
  proto.SC2APIProtocol.DebugSphere.prototype.setR = function(value) {
    jspb.Message.setField(this, 3, value);
  };
  
  
  proto.SC2APIProtocol.DebugSphere.prototype.clearR = function() {
    jspb.Message.setField(this, 3, undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugSphere.prototype.hasR = function() {
    return jspb.Message.getField(this, 3) != null;
  };
  
  
  
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.SC2APIProtocol.DebugCreateUnit = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.SC2APIProtocol.DebugCreateUnit, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.SC2APIProtocol.DebugCreateUnit.displayName = 'proto.SC2APIProtocol.DebugCreateUnit';
  }
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.SC2APIProtocol.DebugCreateUnit.prototype.toObject = function(opt_includeInstance) {
    return proto.SC2APIProtocol.DebugCreateUnit.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.SC2APIProtocol.DebugCreateUnit} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugCreateUnit.toObject = function(includeInstance, msg) {
    var f, obj = {
      unitType: jspb.Message.getField(msg, 1),
      owner: jspb.Message.getField(msg, 2),
      pos: (f = msg.getPos()) && s2clientprotocol_common_pb.Point2D.toObject(includeInstance, f),
      quantity: jspb.Message.getField(msg, 4)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.SC2APIProtocol.DebugCreateUnit}
   */
  proto.SC2APIProtocol.DebugCreateUnit.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.SC2APIProtocol.DebugCreateUnit;
    return proto.SC2APIProtocol.DebugCreateUnit.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.SC2APIProtocol.DebugCreateUnit} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.SC2APIProtocol.DebugCreateUnit}
   */
  proto.SC2APIProtocol.DebugCreateUnit.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {number} */ (reader.readUint32());
        msg.setUnitType(value);
        break;
      case 2:
        var value = /** @type {number} */ (reader.readInt32());
        msg.setOwner(value);
        break;
      case 3:
        var value = new s2clientprotocol_common_pb.Point2D;
        reader.readMessage(value,s2clientprotocol_common_pb.Point2D.deserializeBinaryFromReader);
        msg.setPos(value);
        break;
      case 4:
        var value = /** @type {number} */ (reader.readUint32());
        msg.setQuantity(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.SC2APIProtocol.DebugCreateUnit.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.SC2APIProtocol.DebugCreateUnit.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.SC2APIProtocol.DebugCreateUnit} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugCreateUnit.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = /** @type {number} */ (jspb.Message.getField(message, 1));
    if (f != null) {
      writer.writeUint32(
        1,
        f
      );
    }
    f = /** @type {number} */ (jspb.Message.getField(message, 2));
    if (f != null) {
      writer.writeInt32(
        2,
        f
      );
    }
    f = message.getPos();
    if (f != null) {
      writer.writeMessage(
        3,
        f,
        s2clientprotocol_common_pb.Point2D.serializeBinaryToWriter
      );
    }
    f = /** @type {number} */ (jspb.Message.getField(message, 4));
    if (f != null) {
      writer.writeUint32(
        4,
        f
      );
    }
  };
  
  
  /**
   * optional uint32 unit_type = 1;
   * @return {number}
   */
  proto.SC2APIProtocol.DebugCreateUnit.prototype.getUnitType = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
  };
  
  
  /** @param {number} value */
  proto.SC2APIProtocol.DebugCreateUnit.prototype.setUnitType = function(value) {
    jspb.Message.setField(this, 1, value);
  };
  
  
  proto.SC2APIProtocol.DebugCreateUnit.prototype.clearUnitType = function() {
    jspb.Message.setField(this, 1, undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugCreateUnit.prototype.hasUnitType = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * optional int32 owner = 2;
   * @return {number}
   */
  proto.SC2APIProtocol.DebugCreateUnit.prototype.getOwner = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
  };
  
  
  /** @param {number} value */
  proto.SC2APIProtocol.DebugCreateUnit.prototype.setOwner = function(value) {
    jspb.Message.setField(this, 2, value);
  };
  
  
  proto.SC2APIProtocol.DebugCreateUnit.prototype.clearOwner = function() {
    jspb.Message.setField(this, 2, undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugCreateUnit.prototype.hasOwner = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  /**
   * optional Point2D pos = 3;
   * @return {?proto.SC2APIProtocol.Point2D}
   */
  proto.SC2APIProtocol.DebugCreateUnit.prototype.getPos = function() {
    return /** @type{?proto.SC2APIProtocol.Point2D} */ (
      jspb.Message.getWrapperField(this, s2clientprotocol_common_pb.Point2D, 3));
  };
  
  
  /** @param {?proto.SC2APIProtocol.Point2D|undefined} value */
  proto.SC2APIProtocol.DebugCreateUnit.prototype.setPos = function(value) {
    jspb.Message.setWrapperField(this, 3, value);
  };
  
  
  proto.SC2APIProtocol.DebugCreateUnit.prototype.clearPos = function() {
    this.setPos(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugCreateUnit.prototype.hasPos = function() {
    return jspb.Message.getField(this, 3) != null;
  };
  
  
  /**
   * optional uint32 quantity = 4;
   * @return {number}
   */
  proto.SC2APIProtocol.DebugCreateUnit.prototype.getQuantity = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
  };
  
  
  /** @param {number} value */
  proto.SC2APIProtocol.DebugCreateUnit.prototype.setQuantity = function(value) {
    jspb.Message.setField(this, 4, value);
  };
  
  
  proto.SC2APIProtocol.DebugCreateUnit.prototype.clearQuantity = function() {
    jspb.Message.setField(this, 4, undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugCreateUnit.prototype.hasQuantity = function() {
    return jspb.Message.getField(this, 4) != null;
  };
  
  
  
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.SC2APIProtocol.DebugKillUnit = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.SC2APIProtocol.DebugKillUnit.repeatedFields_, null);
  };
  goog.inherits(proto.SC2APIProtocol.DebugKillUnit, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.SC2APIProtocol.DebugKillUnit.displayName = 'proto.SC2APIProtocol.DebugKillUnit';
  }
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.SC2APIProtocol.DebugKillUnit.repeatedFields_ = [1];
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.SC2APIProtocol.DebugKillUnit.prototype.toObject = function(opt_includeInstance) {
    return proto.SC2APIProtocol.DebugKillUnit.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.SC2APIProtocol.DebugKillUnit} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugKillUnit.toObject = function(includeInstance, msg) {
    var f, obj = {
      tagList: jspb.Message.getRepeatedField(msg, 1)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.SC2APIProtocol.DebugKillUnit}
   */
  proto.SC2APIProtocol.DebugKillUnit.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.SC2APIProtocol.DebugKillUnit;
    return proto.SC2APIProtocol.DebugKillUnit.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.SC2APIProtocol.DebugKillUnit} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.SC2APIProtocol.DebugKillUnit}
   */
  proto.SC2APIProtocol.DebugKillUnit.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {number} */ (reader.readUint64());
        msg.addTag(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.SC2APIProtocol.DebugKillUnit.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.SC2APIProtocol.DebugKillUnit.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.SC2APIProtocol.DebugKillUnit} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugKillUnit.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getTagList();
    if (f.length > 0) {
      writer.writeRepeatedUint64(
        1,
        f
      );
    }
  };
  
  
  /**
   * repeated uint64 tag = 1;
   * @return {!Array.<number>}
   */
  proto.SC2APIProtocol.DebugKillUnit.prototype.getTagList = function() {
    return /** @type {!Array.<number>} */ (jspb.Message.getRepeatedField(this, 1));
  };
  
  
  /** @param {!Array.<number>} value */
  proto.SC2APIProtocol.DebugKillUnit.prototype.setTagList = function(value) {
    jspb.Message.setField(this, 1, value || []);
  };
  
  
  /**
   * @param {!number} value
   * @param {number=} opt_index
   */
  proto.SC2APIProtocol.DebugKillUnit.prototype.addTag = function(value, opt_index) {
    jspb.Message.addToRepeatedField(this, 1, value, opt_index);
  };
  
  
  proto.SC2APIProtocol.DebugKillUnit.prototype.clearTagList = function() {
    this.setTagList([]);
  };
  
  
  
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.SC2APIProtocol.DebugTestProcess = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.SC2APIProtocol.DebugTestProcess, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.SC2APIProtocol.DebugTestProcess.displayName = 'proto.SC2APIProtocol.DebugTestProcess';
  }
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.SC2APIProtocol.DebugTestProcess.prototype.toObject = function(opt_includeInstance) {
    return proto.SC2APIProtocol.DebugTestProcess.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.SC2APIProtocol.DebugTestProcess} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugTestProcess.toObject = function(includeInstance, msg) {
    var f, obj = {
      test: jspb.Message.getField(msg, 1),
      delayMs: jspb.Message.getField(msg, 2)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.SC2APIProtocol.DebugTestProcess}
   */
  proto.SC2APIProtocol.DebugTestProcess.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.SC2APIProtocol.DebugTestProcess;
    return proto.SC2APIProtocol.DebugTestProcess.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.SC2APIProtocol.DebugTestProcess} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.SC2APIProtocol.DebugTestProcess}
   */
  proto.SC2APIProtocol.DebugTestProcess.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {!proto.SC2APIProtocol.DebugTestProcess.Test} */ (reader.readEnum());
        msg.setTest(value);
        break;
      case 2:
        var value = /** @type {number} */ (reader.readInt32());
        msg.setDelayMs(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.SC2APIProtocol.DebugTestProcess.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.SC2APIProtocol.DebugTestProcess.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.SC2APIProtocol.DebugTestProcess} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugTestProcess.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = /** @type {!proto.SC2APIProtocol.DebugTestProcess.Test} */ (jspb.Message.getField(message, 1));
    if (f != null) {
      writer.writeEnum(
        1,
        f
      );
    }
    f = /** @type {number} */ (jspb.Message.getField(message, 2));
    if (f != null) {
      writer.writeInt32(
        2,
        f
      );
    }
  };
  
  
  /**
   * @enum {number}
   */
  proto.SC2APIProtocol.DebugTestProcess.Test = {
    HANG: 1,
    CRASH: 2,
    EXIT: 3
  };
  
  /**
   * optional Test test = 1;
   * @return {!proto.SC2APIProtocol.DebugTestProcess.Test}
   */
  proto.SC2APIProtocol.DebugTestProcess.prototype.getTest = function() {
    return /** @type {!proto.SC2APIProtocol.DebugTestProcess.Test} */ (jspb.Message.getFieldWithDefault(this, 1, 1));
  };
  
  
  /** @param {!proto.SC2APIProtocol.DebugTestProcess.Test} value */
  proto.SC2APIProtocol.DebugTestProcess.prototype.setTest = function(value) {
    jspb.Message.setField(this, 1, value);
  };
  
  
  proto.SC2APIProtocol.DebugTestProcess.prototype.clearTest = function() {
    jspb.Message.setField(this, 1, undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugTestProcess.prototype.hasTest = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * optional int32 delay_ms = 2;
   * @return {number}
   */
  proto.SC2APIProtocol.DebugTestProcess.prototype.getDelayMs = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
  };
  
  
  /** @param {number} value */
  proto.SC2APIProtocol.DebugTestProcess.prototype.setDelayMs = function(value) {
    jspb.Message.setField(this, 2, value);
  };
  
  
  proto.SC2APIProtocol.DebugTestProcess.prototype.clearDelayMs = function() {
    jspb.Message.setField(this, 2, undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugTestProcess.prototype.hasDelayMs = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.SC2APIProtocol.DebugSetScore = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.SC2APIProtocol.DebugSetScore, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.SC2APIProtocol.DebugSetScore.displayName = 'proto.SC2APIProtocol.DebugSetScore';
  }
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.SC2APIProtocol.DebugSetScore.prototype.toObject = function(opt_includeInstance) {
    return proto.SC2APIProtocol.DebugSetScore.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.SC2APIProtocol.DebugSetScore} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugSetScore.toObject = function(includeInstance, msg) {
    var f, obj = {
      score: jspb.Message.getOptionalFloatingPointField(msg, 1)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.SC2APIProtocol.DebugSetScore}
   */
  proto.SC2APIProtocol.DebugSetScore.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.SC2APIProtocol.DebugSetScore;
    return proto.SC2APIProtocol.DebugSetScore.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.SC2APIProtocol.DebugSetScore} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.SC2APIProtocol.DebugSetScore}
   */
  proto.SC2APIProtocol.DebugSetScore.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {number} */ (reader.readFloat());
        msg.setScore(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.SC2APIProtocol.DebugSetScore.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.SC2APIProtocol.DebugSetScore.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.SC2APIProtocol.DebugSetScore} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugSetScore.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = /** @type {number} */ (jspb.Message.getField(message, 1));
    if (f != null) {
      writer.writeFloat(
        1,
        f
      );
    }
  };
  
  
  /**
   * optional float score = 1;
   * @return {number}
   */
  proto.SC2APIProtocol.DebugSetScore.prototype.getScore = function() {
    return /** @type {number} */ (+jspb.Message.getFieldWithDefault(this, 1, 0.0));
  };
  
  
  /** @param {number} value */
  proto.SC2APIProtocol.DebugSetScore.prototype.setScore = function(value) {
    jspb.Message.setField(this, 1, value);
  };
  
  
  proto.SC2APIProtocol.DebugSetScore.prototype.clearScore = function() {
    jspb.Message.setField(this, 1, undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugSetScore.prototype.hasScore = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.SC2APIProtocol.DebugEndGame = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.SC2APIProtocol.DebugEndGame, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.SC2APIProtocol.DebugEndGame.displayName = 'proto.SC2APIProtocol.DebugEndGame';
  }
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.SC2APIProtocol.DebugEndGame.prototype.toObject = function(opt_includeInstance) {
    return proto.SC2APIProtocol.DebugEndGame.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.SC2APIProtocol.DebugEndGame} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugEndGame.toObject = function(includeInstance, msg) {
    var f, obj = {
      endResult: jspb.Message.getField(msg, 1)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.SC2APIProtocol.DebugEndGame}
   */
  proto.SC2APIProtocol.DebugEndGame.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.SC2APIProtocol.DebugEndGame;
    return proto.SC2APIProtocol.DebugEndGame.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.SC2APIProtocol.DebugEndGame} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.SC2APIProtocol.DebugEndGame}
   */
  proto.SC2APIProtocol.DebugEndGame.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {!proto.SC2APIProtocol.DebugEndGame.EndResult} */ (reader.readEnum());
        msg.setEndResult(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.SC2APIProtocol.DebugEndGame.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.SC2APIProtocol.DebugEndGame.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.SC2APIProtocol.DebugEndGame} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugEndGame.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = /** @type {!proto.SC2APIProtocol.DebugEndGame.EndResult} */ (jspb.Message.getField(message, 1));
    if (f != null) {
      writer.writeEnum(
        1,
        f
      );
    }
  };
  
  
  /**
   * @enum {number}
   */
  proto.SC2APIProtocol.DebugEndGame.EndResult = {
    SURRENDER: 1,
    DECLAREVICTORY: 2
  };
  
  /**
   * optional EndResult end_result = 1;
   * @return {!proto.SC2APIProtocol.DebugEndGame.EndResult}
   */
  proto.SC2APIProtocol.DebugEndGame.prototype.getEndResult = function() {
    return /** @type {!proto.SC2APIProtocol.DebugEndGame.EndResult} */ (jspb.Message.getFieldWithDefault(this, 1, 1));
  };
  
  
  /** @param {!proto.SC2APIProtocol.DebugEndGame.EndResult} value */
  proto.SC2APIProtocol.DebugEndGame.prototype.setEndResult = function(value) {
    jspb.Message.setField(this, 1, value);
  };
  
  
  proto.SC2APIProtocol.DebugEndGame.prototype.clearEndResult = function() {
    jspb.Message.setField(this, 1, undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugEndGame.prototype.hasEndResult = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.SC2APIProtocol.DebugSetUnitValue = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.SC2APIProtocol.DebugSetUnitValue, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.SC2APIProtocol.DebugSetUnitValue.displayName = 'proto.SC2APIProtocol.DebugSetUnitValue';
  }
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.SC2APIProtocol.DebugSetUnitValue.prototype.toObject = function(opt_includeInstance) {
    return proto.SC2APIProtocol.DebugSetUnitValue.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.SC2APIProtocol.DebugSetUnitValue} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugSetUnitValue.toObject = function(includeInstance, msg) {
    var f, obj = {
      unitValue: jspb.Message.getField(msg, 1),
      value: jspb.Message.getOptionalFloatingPointField(msg, 2),
      unitTag: jspb.Message.getField(msg, 3)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.SC2APIProtocol.DebugSetUnitValue}
   */
  proto.SC2APIProtocol.DebugSetUnitValue.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.SC2APIProtocol.DebugSetUnitValue;
    return proto.SC2APIProtocol.DebugSetUnitValue.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.SC2APIProtocol.DebugSetUnitValue} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.SC2APIProtocol.DebugSetUnitValue}
   */
  proto.SC2APIProtocol.DebugSetUnitValue.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {!proto.SC2APIProtocol.DebugSetUnitValue.UnitValue} */ (reader.readEnum());
        msg.setUnitValue(value);
        break;
      case 2:
        var value = /** @type {number} */ (reader.readFloat());
        msg.setValue(value);
        break;
      case 3:
        var value = /** @type {number} */ (reader.readUint64());
        msg.setUnitTag(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.SC2APIProtocol.DebugSetUnitValue.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.SC2APIProtocol.DebugSetUnitValue.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.SC2APIProtocol.DebugSetUnitValue} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.SC2APIProtocol.DebugSetUnitValue.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = /** @type {!proto.SC2APIProtocol.DebugSetUnitValue.UnitValue} */ (jspb.Message.getField(message, 1));
    if (f != null) {
      writer.writeEnum(
        1,
        f
      );
    }
    f = /** @type {number} */ (jspb.Message.getField(message, 2));
    if (f != null) {
      writer.writeFloat(
        2,
        f
      );
    }
    f = /** @type {number} */ (jspb.Message.getField(message, 3));
    if (f != null) {
      writer.writeUint64(
        3,
        f
      );
    }
  };
  
  
  /**
   * @enum {number}
   */
  proto.SC2APIProtocol.DebugSetUnitValue.UnitValue = {
    ENERGY: 1,
    LIFE: 2,
    SHIELDS: 3
  };
  
  /**
   * optional UnitValue unit_value = 1;
   * @return {!proto.SC2APIProtocol.DebugSetUnitValue.UnitValue}
   */
  proto.SC2APIProtocol.DebugSetUnitValue.prototype.getUnitValue = function() {
    return /** @type {!proto.SC2APIProtocol.DebugSetUnitValue.UnitValue} */ (jspb.Message.getFieldWithDefault(this, 1, 1));
  };
  
  
  /** @param {!proto.SC2APIProtocol.DebugSetUnitValue.UnitValue} value */
  proto.SC2APIProtocol.DebugSetUnitValue.prototype.setUnitValue = function(value) {
    jspb.Message.setField(this, 1, value);
  };
  
  
  proto.SC2APIProtocol.DebugSetUnitValue.prototype.clearUnitValue = function() {
    jspb.Message.setField(this, 1, undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugSetUnitValue.prototype.hasUnitValue = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * optional float value = 2;
   * @return {number}
   */
  proto.SC2APIProtocol.DebugSetUnitValue.prototype.getValue = function() {
    return /** @type {number} */ (+jspb.Message.getFieldWithDefault(this, 2, 0.0));
  };
  
  
  /** @param {number} value */
  proto.SC2APIProtocol.DebugSetUnitValue.prototype.setValue = function(value) {
    jspb.Message.setField(this, 2, value);
  };
  
  
  proto.SC2APIProtocol.DebugSetUnitValue.prototype.clearValue = function() {
    jspb.Message.setField(this, 2, undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugSetUnitValue.prototype.hasValue = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  /**
   * optional uint64 unit_tag = 3;
   * @return {number}
   */
  proto.SC2APIProtocol.DebugSetUnitValue.prototype.getUnitTag = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
  };
  
  
  /** @param {number} value */
  proto.SC2APIProtocol.DebugSetUnitValue.prototype.setUnitTag = function(value) {
    jspb.Message.setField(this, 3, value);
  };
  
  
  proto.SC2APIProtocol.DebugSetUnitValue.prototype.clearUnitTag = function() {
    jspb.Message.setField(this, 3, undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {!boolean}
   */
  proto.SC2APIProtocol.DebugSetUnitValue.prototype.hasUnitTag = function() {
    return jspb.Message.getField(this, 3) != null;
  };
  
  
  /**
   * @enum {number}
   */
  proto.SC2APIProtocol.DebugGameState = {
    SHOW_MAP: 1,
    CONTROL_ENEMY: 2,
    FOOD: 3,
    FREE: 4,
    ALL_RESOURCES: 5,
    GOD: 6,
    MINERALS: 7,
    GAS: 8,
    COOLDOWN: 9,
    TECH_TREE: 10,
    UPGRADE: 11,
    FAST_BUILD: 12
  };
  
  goog.object.extend(exports, proto.SC2APIProtocol);
  