// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: concept.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Messages {

  /// <summary>Holder for reflection information generated from concept.proto</summary>
  public static partial class ConceptReflection {

    #region Descriptor
    /// <summary>File descriptor for concept.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static ConceptReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "Cg1jb25jZXB0LnByb3RvEghNZXNzYWdlcxoMdmVjdG9yLnByb3RvGg1zcGF0",
            "aWFsLnByb3RvGgptZXRhLnByb3RvIqQCCglWYXJpYWJsZXMSEQoJaW50X25h",
            "bWVzGAIgAygJEhIKCmludF92YWx1ZXMYAyADKAUSGAoQaW50X2Rlc2NyaXB0",
            "aW9ucxgEIAMoCRISCgpib29sX25hbWVzGAYgAygJEhMKC2Jvb2xfdmFsdWVz",
            "GAcgAygIEhkKEWJvb2xfZGVzY3JpcHRpb25zGAggAygJEhQKDGRvdWJsZV9u",
            "YW1lcxgKIAMoCRIVCg1kb3VibGVfdmFsdWVzGAsgAygBEhsKE2RvdWJsZV9k",
            "ZXNjcmlwdGlvbnMYDCADKAkSFAoMc3RyaW5nX25hbWVzGA4gAygJEhUKDXN0",
            "cmluZ192YWx1ZXMYDyADKAkSGwoTc3RyaW5nX2Rlc2NyaXB0aW9ucxgQIAMo",
            "CSKfAwoIRnVuY3Rpb24SDAoEbmFtZRgBIAEoCRIWCg5hcmd1bWVudF90eXBl",
            "cxgCIAMoCRIdChVhcmd1bWVudF9kZXNjcmlwdGlvbnMYAyADKAkSDgoGaW5w",
            "dXRzGAQgAygJEg8KB291dHB1dHMYBSADKAkSEQoJY29uc3RhbnRzGAYgAygJ",
            "EhUKDXRvX2JlX2RlZmluZWQYByADKAkSIAoEZGF0YRgIIAMoCzISLk1lc3Nh",
            "Z2VzLlZlY3RvcjY0EhMKC2NwdV9jYXBhYmxlGAogASgIEhMKC2dwdV9jYXBh",
            "YmxlGAsgASgIEh8KF2luY2x1ZGVfYXNfcHJlcHJvY2Vzc29yGAwgASgIEhsK",
            "E29taXRfZnJvbV9tYWluX2xvb3AYDSABKAgSIAoYaW5jbHVkZV9hc19wb3N0",
            "cHJvY2Vzc29yGA4gASgIEhoKEm11dHVhbGx5X2V4Y2x1c2l2ZRgPIAEoCBIR",
            "Cglvbmx5X29uY2UYECABKAgSEgoKcHVzaF9mcm9udBgRIAEoCBIUCgxkb250",
            "X2ZsYXR0ZW4YEiABKAgi2wIKB0NvbW1hbmQSJAoIZnVuY3Rpb24YASABKAsy",
            "Ei5NZXNzYWdlcy5GdW5jdGlvbhIUCgxhcmdzX2FyZV9zZXQYAiABKAgSEAoI",
            "aXNfcmVhZHkYAyABKAgSEgoKZXhlY19jb3VudBgEIAEoBBIRCglzaW1kX3Np",
            "emUYBSABKAQSDwoHdmVyc2lvbhgGIAEoBBIKCgJpZBgHIAEoAxIQCghuX2tl",
            "cm5lbBgIIAEoBBIQCghwcm9ncmVzcxgJIAEoAhILCgNtc2cYCiABKAkSIAoE",
            "ZGF0YRgMIAEoCzISLk1lc3NhZ2VzLlJlY29yZDY0EiEKBmJlZm9yZRgNIAMo",
            "CzIRLk1lc3NhZ2VzLkNvbW1hbmQSIAoFYWZ0ZXIYDiADKAsyES5NZXNzYWdl",
            "cy5Db21tYW5kEhMKC3JlZ2lvbl90eXBlGA8gASgNEhEKCXJlZ2lvbl9pZBgQ",
            "IAEoBSKWAgoGU2NyaXB0EgwKBG5hbWUYASABKAkSCwoDbXNnGAIgASgJEhMK",
            "C3NvdXJjZV9jb2RlGAMgASgJEgsKA3VpZBgEIAEoAxIOCgZkZXZpY2UYBSAB",
            "KA0SDgoGc3RhdHVzGAYgASgNEg0KBW9yZGVyGAcgASgNEhAKCHByb2dyZXNz",
            "GAggASgCEiYKCXZhcmlhYmxlcxgKIAEoCzITLk1lc3NhZ2VzLlZhcmlhYmxl",
            "cxIjCghTZXF1ZW5jZRgMIAMoCzIRLk1lc3NhZ2VzLkNvbW1hbmQSIAoGYmVm",
            "b3JlGA4gASgLMhAuTWVzc2FnZXMuU2NyaXB0Eh8KBWFmdGVyGA8gASgLMhAu",
            "TWVzc2FnZXMuU2NyaXB0Is0CCgVNb2RlbBIMCgRuYW1lGAEgASgJEgwKBGRv",
            "ZnMYAyADKAkSEgoKYWxnb3JpdGhtcxgEIAMoCRIZChFhdmFpbGFibGVfb3V0",
            "cHV0cxgFIAMoCRIYChBleHRyYV9wcm9wZXJ0aWVzGAYgAygJEh0KFWNvbXBh",
            "dGlibGVfY29uZGl0aW9ucxgHIAMoCRIjCgpzdWJfbW9kZWxzGAkgAygLMg8u",
            "TWVzc2FnZXMuTW9kZWwSKAoMZGVmYXVsdF9kYXRhGAogASgLMhIuTWVzc2Fn",
            "ZXMuUmVjb3JkNjQSHQoFcnVsZXMYCyADKAsyDi5NZXNzYWdlcy5SdWxlEiMK",
            "C211dGV4X3N0YWNrGAwgAygLMg4uTWVzc2FnZXMuUnVsZRItCg1tYXJrb3Zf",
            "bWF0cml4GA8gASgLMhYuTWVzc2FnZXMuU3BhcnNlTWF0cml4IsYCCghDb3Vw",
            "bGluZxIVCg1zb3VyY2Vfc3lzdGVtGAEgASgJEhUKDXRhcmdldF9zeXN0ZW0Y",
            "AiABKAkSEgoKc291cmNlX3VpZBgDIAEoAxISCgp0YXJnZXRfdWlkGAQgASgD",
            "EiUKDXNvdXJjZV9yZWdpb24YBSABKAsyDi5NZXNzYWdlcy5ab25lEiUKDXRh",
            "cmdldF9yZWdpb24YBiABKAsyDi5NZXNzYWdlcy5ab25lEhUKDXNhbXBsaW5n",
            "X21vZGUYCSABKA0SDAoEbmFtZRgKIAEoCRIMCgRkb2ZzGAsgAygJEjAKDnJl",
            "cHJlc2VudGF0aW9uGAwgASgLMhguTWVzc2FnZXMuUmVwcmVzZW50YXRpb24S",
            "DwoHZW5hYmxlZBgNIAEoCBIPCgdmb3J3YXJkGA4gASgIEg8KB3JldmVyc2UY",
            "DyABKAgijAMKBlN5c3RlbRIcCgRtZXRhGAEgASgLMg4uTWVzc2FnZXMuTWV0",
            "YRIgCgZzY3JpcHQYAiADKAsyEC5NZXNzYWdlcy5TY3JpcHQSFwoPbG9jYWxf",
            "dHJhbnNmb3JtGAMgAygBEhIKCmxvY2FsX3JhdGUYBCADKAESEwoLbG9jYWxf",
            "YWNjZWwYBSADKAESEAoIY2hpbGRyZW4YBiADKAkSGAoQcmVmZXJlbmNlZF9m",
            "aWxlcxgHIAMoCRImCg5lbWJlZGRlZF9maWxlcxgIIAMoCzIOLk1lc3NhZ2Vz",
            "LkZpbGUSDQoFbm90ZXMYCSADKAkSJQoJY291cGxpbmdzGAogAygLMhIuTWVz",
            "c2FnZXMuQ291cGxpbmcSHwoGbW9kZWxzGAsgAygLMg8uTWVzc2FnZXMuTW9k",
            "ZWwSLgoScGh5c2ljYWxfY29uc3RhbnRzGAwgASgLMhIuTWVzc2FnZXMuUmVj",
            "b3JkNjQSJQoKY29uZGl0aW9ucxgNIAMoCzIRLk1lc3NhZ2VzLkNvbW1hbmRi",
            "BnByb3RvMw=="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Messages.VectorReflection.Descriptor, global::Messages.SpatialReflection.Descriptor, global::Messages.MetaReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.Variables), global::Messages.Variables.Parser, new[]{ "IntNames", "IntValues", "IntDescriptions", "BoolNames", "BoolValues", "BoolDescriptions", "DoubleNames", "DoubleValues", "DoubleDescriptions", "StringNames", "StringValues", "StringDescriptions" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.Function), global::Messages.Function.Parser, new[]{ "Name", "ArgumentTypes", "ArgumentDescriptions", "Inputs", "Outputs", "Constants", "ToBeDefined", "Data", "CpuCapable", "GpuCapable", "IncludeAsPreprocessor", "OmitFromMainLoop", "IncludeAsPostprocessor", "MutuallyExclusive", "OnlyOnce", "PushFront", "DontFlatten" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.Command), global::Messages.Command.Parser, new[]{ "Function", "ArgsAreSet", "IsReady", "ExecCount", "SimdSize", "Version", "Id", "NKernel", "Progress", "Msg", "Data", "Before", "After", "RegionType", "RegionId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.Script), global::Messages.Script.Parser, new[]{ "Name", "Msg", "SourceCode", "Uid", "Device", "Status", "Order", "Progress", "Variables", "Sequence", "Before", "After" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.Model), global::Messages.Model.Parser, new[]{ "Name", "Dofs", "Algorithms", "AvailableOutputs", "ExtraProperties", "CompatibleConditions", "SubModels", "DefaultData", "Rules", "MutexStack", "MarkovMatrix" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.Coupling), global::Messages.Coupling.Parser, new[]{ "SourceSystem", "TargetSystem", "SourceUid", "TargetUid", "SourceRegion", "TargetRegion", "SamplingMode", "Name", "Dofs", "Representation", "Enabled", "Forward", "Reverse" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.System), global::Messages.System.Parser, new[]{ "Meta", "Script", "LocalTransform", "LocalRate", "LocalAccel", "Children", "ReferencedFiles", "EmbeddedFiles", "Notes", "Couplings", "Models", "PhysicalConstants", "Conditions" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  public sealed partial class Variables : pb::IMessage<Variables>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Variables> _parser = new pb::MessageParser<Variables>(() => new Variables());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Variables> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.ConceptReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Variables() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Variables(Variables other) : this() {
      intNames_ = other.intNames_.Clone();
      intValues_ = other.intValues_.Clone();
      intDescriptions_ = other.intDescriptions_.Clone();
      boolNames_ = other.boolNames_.Clone();
      boolValues_ = other.boolValues_.Clone();
      boolDescriptions_ = other.boolDescriptions_.Clone();
      doubleNames_ = other.doubleNames_.Clone();
      doubleValues_ = other.doubleValues_.Clone();
      doubleDescriptions_ = other.doubleDescriptions_.Clone();
      stringNames_ = other.stringNames_.Clone();
      stringValues_ = other.stringValues_.Clone();
      stringDescriptions_ = other.stringDescriptions_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Variables Clone() {
      return new Variables(this);
    }

    /// <summary>Field number for the "int_names" field.</summary>
    public const int IntNamesFieldNumber = 2;
    private static readonly pb::FieldCodec<string> _repeated_intNames_codec
        = pb::FieldCodec.ForString(18);
    private readonly pbc::RepeatedField<string> intNames_ = new pbc::RepeatedField<string>();
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> IntNames {
      get { return intNames_; }
    }

    /// <summary>Field number for the "int_values" field.</summary>
    public const int IntValuesFieldNumber = 3;
    private static readonly pb::FieldCodec<int> _repeated_intValues_codec
        = pb::FieldCodec.ForInt32(26);
    private readonly pbc::RepeatedField<int> intValues_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> IntValues {
      get { return intValues_; }
    }

    /// <summary>Field number for the "int_descriptions" field.</summary>
    public const int IntDescriptionsFieldNumber = 4;
    private static readonly pb::FieldCodec<string> _repeated_intDescriptions_codec
        = pb::FieldCodec.ForString(34);
    private readonly pbc::RepeatedField<string> intDescriptions_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> IntDescriptions {
      get { return intDescriptions_; }
    }

    /// <summary>Field number for the "bool_names" field.</summary>
    public const int BoolNamesFieldNumber = 6;
    private static readonly pb::FieldCodec<string> _repeated_boolNames_codec
        = pb::FieldCodec.ForString(50);
    private readonly pbc::RepeatedField<string> boolNames_ = new pbc::RepeatedField<string>();
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> BoolNames {
      get { return boolNames_; }
    }

    /// <summary>Field number for the "bool_values" field.</summary>
    public const int BoolValuesFieldNumber = 7;
    private static readonly pb::FieldCodec<bool> _repeated_boolValues_codec
        = pb::FieldCodec.ForBool(58);
    private readonly pbc::RepeatedField<bool> boolValues_ = new pbc::RepeatedField<bool>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<bool> BoolValues {
      get { return boolValues_; }
    }

    /// <summary>Field number for the "bool_descriptions" field.</summary>
    public const int BoolDescriptionsFieldNumber = 8;
    private static readonly pb::FieldCodec<string> _repeated_boolDescriptions_codec
        = pb::FieldCodec.ForString(66);
    private readonly pbc::RepeatedField<string> boolDescriptions_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> BoolDescriptions {
      get { return boolDescriptions_; }
    }

    /// <summary>Field number for the "double_names" field.</summary>
    public const int DoubleNamesFieldNumber = 10;
    private static readonly pb::FieldCodec<string> _repeated_doubleNames_codec
        = pb::FieldCodec.ForString(82);
    private readonly pbc::RepeatedField<string> doubleNames_ = new pbc::RepeatedField<string>();
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> DoubleNames {
      get { return doubleNames_; }
    }

    /// <summary>Field number for the "double_values" field.</summary>
    public const int DoubleValuesFieldNumber = 11;
    private static readonly pb::FieldCodec<double> _repeated_doubleValues_codec
        = pb::FieldCodec.ForDouble(90);
    private readonly pbc::RepeatedField<double> doubleValues_ = new pbc::RepeatedField<double>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<double> DoubleValues {
      get { return doubleValues_; }
    }

    /// <summary>Field number for the "double_descriptions" field.</summary>
    public const int DoubleDescriptionsFieldNumber = 12;
    private static readonly pb::FieldCodec<string> _repeated_doubleDescriptions_codec
        = pb::FieldCodec.ForString(98);
    private readonly pbc::RepeatedField<string> doubleDescriptions_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> DoubleDescriptions {
      get { return doubleDescriptions_; }
    }

    /// <summary>Field number for the "string_names" field.</summary>
    public const int StringNamesFieldNumber = 14;
    private static readonly pb::FieldCodec<string> _repeated_stringNames_codec
        = pb::FieldCodec.ForString(114);
    private readonly pbc::RepeatedField<string> stringNames_ = new pbc::RepeatedField<string>();
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> StringNames {
      get { return stringNames_; }
    }

    /// <summary>Field number for the "string_values" field.</summary>
    public const int StringValuesFieldNumber = 15;
    private static readonly pb::FieldCodec<string> _repeated_stringValues_codec
        = pb::FieldCodec.ForString(122);
    private readonly pbc::RepeatedField<string> stringValues_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> StringValues {
      get { return stringValues_; }
    }

    /// <summary>Field number for the "string_descriptions" field.</summary>
    public const int StringDescriptionsFieldNumber = 16;
    private static readonly pb::FieldCodec<string> _repeated_stringDescriptions_codec
        = pb::FieldCodec.ForString(130);
    private readonly pbc::RepeatedField<string> stringDescriptions_ = new pbc::RepeatedField<string>();
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> StringDescriptions {
      get { return stringDescriptions_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Variables);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Variables other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!intNames_.Equals(other.intNames_)) return false;
      if(!intValues_.Equals(other.intValues_)) return false;
      if(!intDescriptions_.Equals(other.intDescriptions_)) return false;
      if(!boolNames_.Equals(other.boolNames_)) return false;
      if(!boolValues_.Equals(other.boolValues_)) return false;
      if(!boolDescriptions_.Equals(other.boolDescriptions_)) return false;
      if(!doubleNames_.Equals(other.doubleNames_)) return false;
      if(!doubleValues_.Equals(other.doubleValues_)) return false;
      if(!doubleDescriptions_.Equals(other.doubleDescriptions_)) return false;
      if(!stringNames_.Equals(other.stringNames_)) return false;
      if(!stringValues_.Equals(other.stringValues_)) return false;
      if(!stringDescriptions_.Equals(other.stringDescriptions_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= intNames_.GetHashCode();
      hash ^= intValues_.GetHashCode();
      hash ^= intDescriptions_.GetHashCode();
      hash ^= boolNames_.GetHashCode();
      hash ^= boolValues_.GetHashCode();
      hash ^= boolDescriptions_.GetHashCode();
      hash ^= doubleNames_.GetHashCode();
      hash ^= doubleValues_.GetHashCode();
      hash ^= doubleDescriptions_.GetHashCode();
      hash ^= stringNames_.GetHashCode();
      hash ^= stringValues_.GetHashCode();
      hash ^= stringDescriptions_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      intNames_.WriteTo(output, _repeated_intNames_codec);
      intValues_.WriteTo(output, _repeated_intValues_codec);
      intDescriptions_.WriteTo(output, _repeated_intDescriptions_codec);
      boolNames_.WriteTo(output, _repeated_boolNames_codec);
      boolValues_.WriteTo(output, _repeated_boolValues_codec);
      boolDescriptions_.WriteTo(output, _repeated_boolDescriptions_codec);
      doubleNames_.WriteTo(output, _repeated_doubleNames_codec);
      doubleValues_.WriteTo(output, _repeated_doubleValues_codec);
      doubleDescriptions_.WriteTo(output, _repeated_doubleDescriptions_codec);
      stringNames_.WriteTo(output, _repeated_stringNames_codec);
      stringValues_.WriteTo(output, _repeated_stringValues_codec);
      stringDescriptions_.WriteTo(output, _repeated_stringDescriptions_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      intNames_.WriteTo(ref output, _repeated_intNames_codec);
      intValues_.WriteTo(ref output, _repeated_intValues_codec);
      intDescriptions_.WriteTo(ref output, _repeated_intDescriptions_codec);
      boolNames_.WriteTo(ref output, _repeated_boolNames_codec);
      boolValues_.WriteTo(ref output, _repeated_boolValues_codec);
      boolDescriptions_.WriteTo(ref output, _repeated_boolDescriptions_codec);
      doubleNames_.WriteTo(ref output, _repeated_doubleNames_codec);
      doubleValues_.WriteTo(ref output, _repeated_doubleValues_codec);
      doubleDescriptions_.WriteTo(ref output, _repeated_doubleDescriptions_codec);
      stringNames_.WriteTo(ref output, _repeated_stringNames_codec);
      stringValues_.WriteTo(ref output, _repeated_stringValues_codec);
      stringDescriptions_.WriteTo(ref output, _repeated_stringDescriptions_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += intNames_.CalculateSize(_repeated_intNames_codec);
      size += intValues_.CalculateSize(_repeated_intValues_codec);
      size += intDescriptions_.CalculateSize(_repeated_intDescriptions_codec);
      size += boolNames_.CalculateSize(_repeated_boolNames_codec);
      size += boolValues_.CalculateSize(_repeated_boolValues_codec);
      size += boolDescriptions_.CalculateSize(_repeated_boolDescriptions_codec);
      size += doubleNames_.CalculateSize(_repeated_doubleNames_codec);
      size += doubleValues_.CalculateSize(_repeated_doubleValues_codec);
      size += doubleDescriptions_.CalculateSize(_repeated_doubleDescriptions_codec);
      size += stringNames_.CalculateSize(_repeated_stringNames_codec);
      size += stringValues_.CalculateSize(_repeated_stringValues_codec);
      size += stringDescriptions_.CalculateSize(_repeated_stringDescriptions_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Variables other) {
      if (other == null) {
        return;
      }
      intNames_.Add(other.intNames_);
      intValues_.Add(other.intValues_);
      intDescriptions_.Add(other.intDescriptions_);
      boolNames_.Add(other.boolNames_);
      boolValues_.Add(other.boolValues_);
      boolDescriptions_.Add(other.boolDescriptions_);
      doubleNames_.Add(other.doubleNames_);
      doubleValues_.Add(other.doubleValues_);
      doubleDescriptions_.Add(other.doubleDescriptions_);
      stringNames_.Add(other.stringNames_);
      stringValues_.Add(other.stringValues_);
      stringDescriptions_.Add(other.stringDescriptions_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 18: {
            intNames_.AddEntriesFrom(input, _repeated_intNames_codec);
            break;
          }
          case 26:
          case 24: {
            intValues_.AddEntriesFrom(input, _repeated_intValues_codec);
            break;
          }
          case 34: {
            intDescriptions_.AddEntriesFrom(input, _repeated_intDescriptions_codec);
            break;
          }
          case 50: {
            boolNames_.AddEntriesFrom(input, _repeated_boolNames_codec);
            break;
          }
          case 58:
          case 56: {
            boolValues_.AddEntriesFrom(input, _repeated_boolValues_codec);
            break;
          }
          case 66: {
            boolDescriptions_.AddEntriesFrom(input, _repeated_boolDescriptions_codec);
            break;
          }
          case 82: {
            doubleNames_.AddEntriesFrom(input, _repeated_doubleNames_codec);
            break;
          }
          case 90:
          case 89: {
            doubleValues_.AddEntriesFrom(input, _repeated_doubleValues_codec);
            break;
          }
          case 98: {
            doubleDescriptions_.AddEntriesFrom(input, _repeated_doubleDescriptions_codec);
            break;
          }
          case 114: {
            stringNames_.AddEntriesFrom(input, _repeated_stringNames_codec);
            break;
          }
          case 122: {
            stringValues_.AddEntriesFrom(input, _repeated_stringValues_codec);
            break;
          }
          case 130: {
            stringDescriptions_.AddEntriesFrom(input, _repeated_stringDescriptions_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 18: {
            intNames_.AddEntriesFrom(ref input, _repeated_intNames_codec);
            break;
          }
          case 26:
          case 24: {
            intValues_.AddEntriesFrom(ref input, _repeated_intValues_codec);
            break;
          }
          case 34: {
            intDescriptions_.AddEntriesFrom(ref input, _repeated_intDescriptions_codec);
            break;
          }
          case 50: {
            boolNames_.AddEntriesFrom(ref input, _repeated_boolNames_codec);
            break;
          }
          case 58:
          case 56: {
            boolValues_.AddEntriesFrom(ref input, _repeated_boolValues_codec);
            break;
          }
          case 66: {
            boolDescriptions_.AddEntriesFrom(ref input, _repeated_boolDescriptions_codec);
            break;
          }
          case 82: {
            doubleNames_.AddEntriesFrom(ref input, _repeated_doubleNames_codec);
            break;
          }
          case 90:
          case 89: {
            doubleValues_.AddEntriesFrom(ref input, _repeated_doubleValues_codec);
            break;
          }
          case 98: {
            doubleDescriptions_.AddEntriesFrom(ref input, _repeated_doubleDescriptions_codec);
            break;
          }
          case 114: {
            stringNames_.AddEntriesFrom(ref input, _repeated_stringNames_codec);
            break;
          }
          case 122: {
            stringValues_.AddEntriesFrom(ref input, _repeated_stringValues_codec);
            break;
          }
          case 130: {
            stringDescriptions_.AddEntriesFrom(ref input, _repeated_stringDescriptions_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class Function : pb::IMessage<Function>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Function> _parser = new pb::MessageParser<Function>(() => new Function());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Function> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.ConceptReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Function() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Function(Function other) : this() {
      name_ = other.name_;
      argumentTypes_ = other.argumentTypes_.Clone();
      argumentDescriptions_ = other.argumentDescriptions_.Clone();
      inputs_ = other.inputs_.Clone();
      outputs_ = other.outputs_.Clone();
      constants_ = other.constants_.Clone();
      toBeDefined_ = other.toBeDefined_.Clone();
      data_ = other.data_.Clone();
      cpuCapable_ = other.cpuCapable_;
      gpuCapable_ = other.gpuCapable_;
      includeAsPreprocessor_ = other.includeAsPreprocessor_;
      omitFromMainLoop_ = other.omitFromMainLoop_;
      includeAsPostprocessor_ = other.includeAsPostprocessor_;
      mutuallyExclusive_ = other.mutuallyExclusive_;
      onlyOnce_ = other.onlyOnce_;
      pushFront_ = other.pushFront_;
      dontFlatten_ = other.dontFlatten_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Function Clone() {
      return new Function(this);
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 1;
    private string name_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "argument_types" field.</summary>
    public const int ArgumentTypesFieldNumber = 2;
    private static readonly pb::FieldCodec<string> _repeated_argumentTypes_codec
        = pb::FieldCodec.ForString(18);
    private readonly pbc::RepeatedField<string> argumentTypes_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// argument object binding requirements:
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> ArgumentTypes {
      get { return argumentTypes_; }
    }

    /// <summary>Field number for the "argument_descriptions" field.</summary>
    public const int ArgumentDescriptionsFieldNumber = 3;
    private static readonly pb::FieldCodec<string> _repeated_argumentDescriptions_codec
        = pb::FieldCodec.ForString(26);
    private readonly pbc::RepeatedField<string> argumentDescriptions_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// matching argument descriptions (used by UI)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> ArgumentDescriptions {
      get { return argumentDescriptions_; }
    }

    /// <summary>Field number for the "inputs" field.</summary>
    public const int InputsFieldNumber = 4;
    private static readonly pb::FieldCodec<string> _repeated_inputs_codec
        = pb::FieldCodec.ForString(34);
    private readonly pbc::RepeatedField<string> inputs_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// PK's required for algorithm inputs (user inputs)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> Inputs {
      get { return inputs_; }
    }

    /// <summary>Field number for the "outputs" field.</summary>
    public const int OutputsFieldNumber = 5;
    private static readonly pb::FieldCodec<string> _repeated_outputs_codec
        = pb::FieldCodec.ForString(42);
    private readonly pbc::RepeatedField<string> outputs_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// PK's required for algorithm outputs
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> Outputs {
      get { return outputs_; }
    }

    /// <summary>Field number for the "constants" field.</summary>
    public const int ConstantsFieldNumber = 6;
    private static readonly pb::FieldCodec<string> _repeated_constants_codec
        = pb::FieldCodec.ForString(50);
    private readonly pbc::RepeatedField<string> constants_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// PK's for uniform values across all nodes
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> Constants {
      get { return constants_; }
    }

    /// <summary>Field number for the "to_be_defined" field.</summary>
    public const int ToBeDefinedFieldNumber = 7;
    private static readonly pb::FieldCodec<string> _repeated_toBeDefined_codec
        = pb::FieldCodec.ForString(58);
    private readonly pbc::RepeatedField<string> toBeDefined_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// PK's for to be set by user in UI (end-user inputs)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> ToBeDefined {
      get { return toBeDefined_; }
    }

    /// <summary>Field number for the "data" field.</summary>
    public const int DataFieldNumber = 8;
    private static readonly pb::FieldCodec<global::Messages.Vector64> _repeated_data_codec
        = pb::FieldCodec.ForMessage(66, global::Messages.Vector64.Parser);
    private readonly pbc::RepeatedField<global::Messages.Vector64> data_ = new pbc::RepeatedField<global::Messages.Vector64>();
    /// <summary>
    /// local data relevant to this algorithm (coefficients, etc)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Messages.Vector64> Data {
      get { return data_; }
    }

    /// <summary>Field number for the "cpu_capable" field.</summary>
    public const int CpuCapableFieldNumber = 10;
    private bool cpuCapable_;
    /// <summary>
    ///reserved  
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool CpuCapable {
      get { return cpuCapable_; }
      set {
        cpuCapable_ = value;
      }
    }

    /// <summary>Field number for the "gpu_capable" field.</summary>
    public const int GpuCapableFieldNumber = 11;
    private bool gpuCapable_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool GpuCapable {
      get { return gpuCapable_; }
      set {
        gpuCapable_ = value;
      }
    }

    /// <summary>Field number for the "include_as_preprocessor" field.</summary>
    public const int IncludeAsPreprocessorFieldNumber = 12;
    private bool includeAsPreprocessor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IncludeAsPreprocessor {
      get { return includeAsPreprocessor_; }
      set {
        includeAsPreprocessor_ = value;
      }
    }

    /// <summary>Field number for the "omit_from_main_loop" field.</summary>
    public const int OmitFromMainLoopFieldNumber = 13;
    private bool omitFromMainLoop_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool OmitFromMainLoop {
      get { return omitFromMainLoop_; }
      set {
        omitFromMainLoop_ = value;
      }
    }

    /// <summary>Field number for the "include_as_postprocessor" field.</summary>
    public const int IncludeAsPostprocessorFieldNumber = 14;
    private bool includeAsPostprocessor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IncludeAsPostprocessor {
      get { return includeAsPostprocessor_; }
      set {
        includeAsPostprocessor_ = value;
      }
    }

    /// <summary>Field number for the "mutually_exclusive" field.</summary>
    public const int MutuallyExclusiveFieldNumber = 15;
    private bool mutuallyExclusive_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool MutuallyExclusive {
      get { return mutuallyExclusive_; }
      set {
        mutuallyExclusive_ = value;
      }
    }

    /// <summary>Field number for the "only_once" field.</summary>
    public const int OnlyOnceFieldNumber = 16;
    private bool onlyOnce_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool OnlyOnce {
      get { return onlyOnce_; }
      set {
        onlyOnce_ = value;
      }
    }

    /// <summary>Field number for the "push_front" field.</summary>
    public const int PushFrontFieldNumber = 17;
    private bool pushFront_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool PushFront {
      get { return pushFront_; }
      set {
        pushFront_ = value;
      }
    }

    /// <summary>Field number for the "dont_flatten" field.</summary>
    public const int DontFlattenFieldNumber = 18;
    private bool dontFlatten_;
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool DontFlatten {
      get { return dontFlatten_; }
      set {
        dontFlatten_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Function);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Function other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if(!argumentTypes_.Equals(other.argumentTypes_)) return false;
      if(!argumentDescriptions_.Equals(other.argumentDescriptions_)) return false;
      if(!inputs_.Equals(other.inputs_)) return false;
      if(!outputs_.Equals(other.outputs_)) return false;
      if(!constants_.Equals(other.constants_)) return false;
      if(!toBeDefined_.Equals(other.toBeDefined_)) return false;
      if(!data_.Equals(other.data_)) return false;
      if (CpuCapable != other.CpuCapable) return false;
      if (GpuCapable != other.GpuCapable) return false;
      if (IncludeAsPreprocessor != other.IncludeAsPreprocessor) return false;
      if (OmitFromMainLoop != other.OmitFromMainLoop) return false;
      if (IncludeAsPostprocessor != other.IncludeAsPostprocessor) return false;
      if (MutuallyExclusive != other.MutuallyExclusive) return false;
      if (OnlyOnce != other.OnlyOnce) return false;
      if (PushFront != other.PushFront) return false;
      if (DontFlatten != other.DontFlatten) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      hash ^= argumentTypes_.GetHashCode();
      hash ^= argumentDescriptions_.GetHashCode();
      hash ^= inputs_.GetHashCode();
      hash ^= outputs_.GetHashCode();
      hash ^= constants_.GetHashCode();
      hash ^= toBeDefined_.GetHashCode();
      hash ^= data_.GetHashCode();
      if (CpuCapable != false) hash ^= CpuCapable.GetHashCode();
      if (GpuCapable != false) hash ^= GpuCapable.GetHashCode();
      if (IncludeAsPreprocessor != false) hash ^= IncludeAsPreprocessor.GetHashCode();
      if (OmitFromMainLoop != false) hash ^= OmitFromMainLoop.GetHashCode();
      if (IncludeAsPostprocessor != false) hash ^= IncludeAsPostprocessor.GetHashCode();
      if (MutuallyExclusive != false) hash ^= MutuallyExclusive.GetHashCode();
      if (OnlyOnce != false) hash ^= OnlyOnce.GetHashCode();
      if (PushFront != false) hash ^= PushFront.GetHashCode();
      if (DontFlatten != false) hash ^= DontFlatten.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      argumentTypes_.WriteTo(output, _repeated_argumentTypes_codec);
      argumentDescriptions_.WriteTo(output, _repeated_argumentDescriptions_codec);
      inputs_.WriteTo(output, _repeated_inputs_codec);
      outputs_.WriteTo(output, _repeated_outputs_codec);
      constants_.WriteTo(output, _repeated_constants_codec);
      toBeDefined_.WriteTo(output, _repeated_toBeDefined_codec);
      data_.WriteTo(output, _repeated_data_codec);
      if (CpuCapable != false) {
        output.WriteRawTag(80);
        output.WriteBool(CpuCapable);
      }
      if (GpuCapable != false) {
        output.WriteRawTag(88);
        output.WriteBool(GpuCapable);
      }
      if (IncludeAsPreprocessor != false) {
        output.WriteRawTag(96);
        output.WriteBool(IncludeAsPreprocessor);
      }
      if (OmitFromMainLoop != false) {
        output.WriteRawTag(104);
        output.WriteBool(OmitFromMainLoop);
      }
      if (IncludeAsPostprocessor != false) {
        output.WriteRawTag(112);
        output.WriteBool(IncludeAsPostprocessor);
      }
      if (MutuallyExclusive != false) {
        output.WriteRawTag(120);
        output.WriteBool(MutuallyExclusive);
      }
      if (OnlyOnce != false) {
        output.WriteRawTag(128, 1);
        output.WriteBool(OnlyOnce);
      }
      if (PushFront != false) {
        output.WriteRawTag(136, 1);
        output.WriteBool(PushFront);
      }
      if (DontFlatten != false) {
        output.WriteRawTag(144, 1);
        output.WriteBool(DontFlatten);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      argumentTypes_.WriteTo(ref output, _repeated_argumentTypes_codec);
      argumentDescriptions_.WriteTo(ref output, _repeated_argumentDescriptions_codec);
      inputs_.WriteTo(ref output, _repeated_inputs_codec);
      outputs_.WriteTo(ref output, _repeated_outputs_codec);
      constants_.WriteTo(ref output, _repeated_constants_codec);
      toBeDefined_.WriteTo(ref output, _repeated_toBeDefined_codec);
      data_.WriteTo(ref output, _repeated_data_codec);
      if (CpuCapable != false) {
        output.WriteRawTag(80);
        output.WriteBool(CpuCapable);
      }
      if (GpuCapable != false) {
        output.WriteRawTag(88);
        output.WriteBool(GpuCapable);
      }
      if (IncludeAsPreprocessor != false) {
        output.WriteRawTag(96);
        output.WriteBool(IncludeAsPreprocessor);
      }
      if (OmitFromMainLoop != false) {
        output.WriteRawTag(104);
        output.WriteBool(OmitFromMainLoop);
      }
      if (IncludeAsPostprocessor != false) {
        output.WriteRawTag(112);
        output.WriteBool(IncludeAsPostprocessor);
      }
      if (MutuallyExclusive != false) {
        output.WriteRawTag(120);
        output.WriteBool(MutuallyExclusive);
      }
      if (OnlyOnce != false) {
        output.WriteRawTag(128, 1);
        output.WriteBool(OnlyOnce);
      }
      if (PushFront != false) {
        output.WriteRawTag(136, 1);
        output.WriteBool(PushFront);
      }
      if (DontFlatten != false) {
        output.WriteRawTag(144, 1);
        output.WriteBool(DontFlatten);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      size += argumentTypes_.CalculateSize(_repeated_argumentTypes_codec);
      size += argumentDescriptions_.CalculateSize(_repeated_argumentDescriptions_codec);
      size += inputs_.CalculateSize(_repeated_inputs_codec);
      size += outputs_.CalculateSize(_repeated_outputs_codec);
      size += constants_.CalculateSize(_repeated_constants_codec);
      size += toBeDefined_.CalculateSize(_repeated_toBeDefined_codec);
      size += data_.CalculateSize(_repeated_data_codec);
      if (CpuCapable != false) {
        size += 1 + 1;
      }
      if (GpuCapable != false) {
        size += 1 + 1;
      }
      if (IncludeAsPreprocessor != false) {
        size += 1 + 1;
      }
      if (OmitFromMainLoop != false) {
        size += 1 + 1;
      }
      if (IncludeAsPostprocessor != false) {
        size += 1 + 1;
      }
      if (MutuallyExclusive != false) {
        size += 1 + 1;
      }
      if (OnlyOnce != false) {
        size += 2 + 1;
      }
      if (PushFront != false) {
        size += 2 + 1;
      }
      if (DontFlatten != false) {
        size += 2 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Function other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      argumentTypes_.Add(other.argumentTypes_);
      argumentDescriptions_.Add(other.argumentDescriptions_);
      inputs_.Add(other.inputs_);
      outputs_.Add(other.outputs_);
      constants_.Add(other.constants_);
      toBeDefined_.Add(other.toBeDefined_);
      data_.Add(other.data_);
      if (other.CpuCapable != false) {
        CpuCapable = other.CpuCapable;
      }
      if (other.GpuCapable != false) {
        GpuCapable = other.GpuCapable;
      }
      if (other.IncludeAsPreprocessor != false) {
        IncludeAsPreprocessor = other.IncludeAsPreprocessor;
      }
      if (other.OmitFromMainLoop != false) {
        OmitFromMainLoop = other.OmitFromMainLoop;
      }
      if (other.IncludeAsPostprocessor != false) {
        IncludeAsPostprocessor = other.IncludeAsPostprocessor;
      }
      if (other.MutuallyExclusive != false) {
        MutuallyExclusive = other.MutuallyExclusive;
      }
      if (other.OnlyOnce != false) {
        OnlyOnce = other.OnlyOnce;
      }
      if (other.PushFront != false) {
        PushFront = other.PushFront;
      }
      if (other.DontFlatten != false) {
        DontFlatten = other.DontFlatten;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            argumentTypes_.AddEntriesFrom(input, _repeated_argumentTypes_codec);
            break;
          }
          case 26: {
            argumentDescriptions_.AddEntriesFrom(input, _repeated_argumentDescriptions_codec);
            break;
          }
          case 34: {
            inputs_.AddEntriesFrom(input, _repeated_inputs_codec);
            break;
          }
          case 42: {
            outputs_.AddEntriesFrom(input, _repeated_outputs_codec);
            break;
          }
          case 50: {
            constants_.AddEntriesFrom(input, _repeated_constants_codec);
            break;
          }
          case 58: {
            toBeDefined_.AddEntriesFrom(input, _repeated_toBeDefined_codec);
            break;
          }
          case 66: {
            data_.AddEntriesFrom(input, _repeated_data_codec);
            break;
          }
          case 80: {
            CpuCapable = input.ReadBool();
            break;
          }
          case 88: {
            GpuCapable = input.ReadBool();
            break;
          }
          case 96: {
            IncludeAsPreprocessor = input.ReadBool();
            break;
          }
          case 104: {
            OmitFromMainLoop = input.ReadBool();
            break;
          }
          case 112: {
            IncludeAsPostprocessor = input.ReadBool();
            break;
          }
          case 120: {
            MutuallyExclusive = input.ReadBool();
            break;
          }
          case 128: {
            OnlyOnce = input.ReadBool();
            break;
          }
          case 136: {
            PushFront = input.ReadBool();
            break;
          }
          case 144: {
            DontFlatten = input.ReadBool();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            argumentTypes_.AddEntriesFrom(ref input, _repeated_argumentTypes_codec);
            break;
          }
          case 26: {
            argumentDescriptions_.AddEntriesFrom(ref input, _repeated_argumentDescriptions_codec);
            break;
          }
          case 34: {
            inputs_.AddEntriesFrom(ref input, _repeated_inputs_codec);
            break;
          }
          case 42: {
            outputs_.AddEntriesFrom(ref input, _repeated_outputs_codec);
            break;
          }
          case 50: {
            constants_.AddEntriesFrom(ref input, _repeated_constants_codec);
            break;
          }
          case 58: {
            toBeDefined_.AddEntriesFrom(ref input, _repeated_toBeDefined_codec);
            break;
          }
          case 66: {
            data_.AddEntriesFrom(ref input, _repeated_data_codec);
            break;
          }
          case 80: {
            CpuCapable = input.ReadBool();
            break;
          }
          case 88: {
            GpuCapable = input.ReadBool();
            break;
          }
          case 96: {
            IncludeAsPreprocessor = input.ReadBool();
            break;
          }
          case 104: {
            OmitFromMainLoop = input.ReadBool();
            break;
          }
          case 112: {
            IncludeAsPostprocessor = input.ReadBool();
            break;
          }
          case 120: {
            MutuallyExclusive = input.ReadBool();
            break;
          }
          case 128: {
            OnlyOnce = input.ReadBool();
            break;
          }
          case 136: {
            PushFront = input.ReadBool();
            break;
          }
          case 144: {
            DontFlatten = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class Command : pb::IMessage<Command>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Command> _parser = new pb::MessageParser<Command>(() => new Command());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Command> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.ConceptReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Command() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Command(Command other) : this() {
      function_ = other.function_ != null ? other.function_.Clone() : null;
      argsAreSet_ = other.argsAreSet_;
      isReady_ = other.isReady_;
      execCount_ = other.execCount_;
      simdSize_ = other.simdSize_;
      version_ = other.version_;
      id_ = other.id_;
      nKernel_ = other.nKernel_;
      progress_ = other.progress_;
      msg_ = other.msg_;
      data_ = other.data_ != null ? other.data_.Clone() : null;
      before_ = other.before_.Clone();
      after_ = other.after_.Clone();
      regionType_ = other.regionType_;
      regionId_ = other.regionId_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Command Clone() {
      return new Command(this);
    }

    /// <summary>Field number for the "function" field.</summary>
    public const int FunctionFieldNumber = 1;
    private global::Messages.Function function_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.Function Function {
      get { return function_; }
      set {
        function_ = value;
      }
    }

    /// <summary>Field number for the "args_are_set" field.</summary>
    public const int ArgsAreSetFieldNumber = 2;
    private bool argsAreSet_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool ArgsAreSet {
      get { return argsAreSet_; }
      set {
        argsAreSet_ = value;
      }
    }

    /// <summary>Field number for the "is_ready" field.</summary>
    public const int IsReadyFieldNumber = 3;
    private bool isReady_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IsReady {
      get { return isReady_; }
      set {
        isReady_ = value;
      }
    }

    /// <summary>Field number for the "exec_count" field.</summary>
    public const int ExecCountFieldNumber = 4;
    private ulong execCount_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong ExecCount {
      get { return execCount_; }
      set {
        execCount_ = value;
      }
    }

    /// <summary>Field number for the "simd_size" field.</summary>
    public const int SimdSizeFieldNumber = 5;
    private ulong simdSize_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong SimdSize {
      get { return simdSize_; }
      set {
        simdSize_ = value;
      }
    }

    /// <summary>Field number for the "version" field.</summary>
    public const int VersionFieldNumber = 6;
    private ulong version_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong Version {
      get { return version_; }
      set {
        version_ = value;
      }
    }

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 7;
    private long id_;
    /// <summary>
    /// unique runtime identifier (assigned and only valid within a server session)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long Id {
      get { return id_; }
      set {
        id_ = value;
      }
    }

    /// <summary>Field number for the "n_kernel" field.</summary>
    public const int NKernelFieldNumber = 8;
    private ulong nKernel_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong NKernel {
      get { return nKernel_; }
      set {
        nKernel_ = value;
      }
    }

    /// <summary>Field number for the "progress" field.</summary>
    public const int ProgressFieldNumber = 9;
    private float progress_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Progress {
      get { return progress_; }
      set {
        progress_ = value;
      }
    }

    /// <summary>Field number for the "msg" field.</summary>
    public const int MsgFieldNumber = 10;
    private string msg_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Msg {
      get { return msg_; }
      set {
        msg_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "data" field.</summary>
    public const int DataFieldNumber = 12;
    private global::Messages.Record64 data_;
    /// <summary>
    ///reserved  
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.Record64 Data {
      get { return data_; }
      set {
        data_ = value;
      }
    }

    /// <summary>Field number for the "before" field.</summary>
    public const int BeforeFieldNumber = 13;
    private static readonly pb::FieldCodec<global::Messages.Command> _repeated_before_codec
        = pb::FieldCodec.ForMessage(106, global::Messages.Command.Parser);
    private readonly pbc::RepeatedField<global::Messages.Command> before_ = new pbc::RepeatedField<global::Messages.Command>();
    /// <summary>
    /// optional, to be called from within bound function
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Messages.Command> Before {
      get { return before_; }
    }

    /// <summary>Field number for the "after" field.</summary>
    public const int AfterFieldNumber = 14;
    private static readonly pb::FieldCodec<global::Messages.Command> _repeated_after_codec
        = pb::FieldCodec.ForMessage(114, global::Messages.Command.Parser);
    private readonly pbc::RepeatedField<global::Messages.Command> after_ = new pbc::RepeatedField<global::Messages.Command>();
    /// <summary>
    /// optional, to be called from within bound function
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Messages.Command> After {
      get { return after_; }
    }

    /// <summary>Field number for the "region_type" field.</summary>
    public const int RegionTypeFieldNumber = 15;
    private uint regionType_;
    /// <summary>
    /// if assigned, used to identify specific zones for conditions, etc
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint RegionType {
      get { return regionType_; }
      set {
        regionType_ = value;
      }
    }

    /// <summary>Field number for the "region_id" field.</summary>
    public const int RegionIdFieldNumber = 16;
    private int regionId_;
    /// <summary>
    /// if assigned, used to identify specific zones for conditions, etc
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int RegionId {
      get { return regionId_; }
      set {
        regionId_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Command);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Command other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Function, other.Function)) return false;
      if (ArgsAreSet != other.ArgsAreSet) return false;
      if (IsReady != other.IsReady) return false;
      if (ExecCount != other.ExecCount) return false;
      if (SimdSize != other.SimdSize) return false;
      if (Version != other.Version) return false;
      if (Id != other.Id) return false;
      if (NKernel != other.NKernel) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Progress, other.Progress)) return false;
      if (Msg != other.Msg) return false;
      if (!object.Equals(Data, other.Data)) return false;
      if(!before_.Equals(other.before_)) return false;
      if(!after_.Equals(other.after_)) return false;
      if (RegionType != other.RegionType) return false;
      if (RegionId != other.RegionId) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (function_ != null) hash ^= Function.GetHashCode();
      if (ArgsAreSet != false) hash ^= ArgsAreSet.GetHashCode();
      if (IsReady != false) hash ^= IsReady.GetHashCode();
      if (ExecCount != 0UL) hash ^= ExecCount.GetHashCode();
      if (SimdSize != 0UL) hash ^= SimdSize.GetHashCode();
      if (Version != 0UL) hash ^= Version.GetHashCode();
      if (Id != 0L) hash ^= Id.GetHashCode();
      if (NKernel != 0UL) hash ^= NKernel.GetHashCode();
      if (Progress != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Progress);
      if (Msg.Length != 0) hash ^= Msg.GetHashCode();
      if (data_ != null) hash ^= Data.GetHashCode();
      hash ^= before_.GetHashCode();
      hash ^= after_.GetHashCode();
      if (RegionType != 0) hash ^= RegionType.GetHashCode();
      if (RegionId != 0) hash ^= RegionId.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (function_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Function);
      }
      if (ArgsAreSet != false) {
        output.WriteRawTag(16);
        output.WriteBool(ArgsAreSet);
      }
      if (IsReady != false) {
        output.WriteRawTag(24);
        output.WriteBool(IsReady);
      }
      if (ExecCount != 0UL) {
        output.WriteRawTag(32);
        output.WriteUInt64(ExecCount);
      }
      if (SimdSize != 0UL) {
        output.WriteRawTag(40);
        output.WriteUInt64(SimdSize);
      }
      if (Version != 0UL) {
        output.WriteRawTag(48);
        output.WriteUInt64(Version);
      }
      if (Id != 0L) {
        output.WriteRawTag(56);
        output.WriteInt64(Id);
      }
      if (NKernel != 0UL) {
        output.WriteRawTag(64);
        output.WriteUInt64(NKernel);
      }
      if (Progress != 0F) {
        output.WriteRawTag(77);
        output.WriteFloat(Progress);
      }
      if (Msg.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(Msg);
      }
      if (data_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(Data);
      }
      before_.WriteTo(output, _repeated_before_codec);
      after_.WriteTo(output, _repeated_after_codec);
      if (RegionType != 0) {
        output.WriteRawTag(120);
        output.WriteUInt32(RegionType);
      }
      if (RegionId != 0) {
        output.WriteRawTag(128, 1);
        output.WriteInt32(RegionId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (function_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Function);
      }
      if (ArgsAreSet != false) {
        output.WriteRawTag(16);
        output.WriteBool(ArgsAreSet);
      }
      if (IsReady != false) {
        output.WriteRawTag(24);
        output.WriteBool(IsReady);
      }
      if (ExecCount != 0UL) {
        output.WriteRawTag(32);
        output.WriteUInt64(ExecCount);
      }
      if (SimdSize != 0UL) {
        output.WriteRawTag(40);
        output.WriteUInt64(SimdSize);
      }
      if (Version != 0UL) {
        output.WriteRawTag(48);
        output.WriteUInt64(Version);
      }
      if (Id != 0L) {
        output.WriteRawTag(56);
        output.WriteInt64(Id);
      }
      if (NKernel != 0UL) {
        output.WriteRawTag(64);
        output.WriteUInt64(NKernel);
      }
      if (Progress != 0F) {
        output.WriteRawTag(77);
        output.WriteFloat(Progress);
      }
      if (Msg.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(Msg);
      }
      if (data_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(Data);
      }
      before_.WriteTo(ref output, _repeated_before_codec);
      after_.WriteTo(ref output, _repeated_after_codec);
      if (RegionType != 0) {
        output.WriteRawTag(120);
        output.WriteUInt32(RegionType);
      }
      if (RegionId != 0) {
        output.WriteRawTag(128, 1);
        output.WriteInt32(RegionId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (function_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Function);
      }
      if (ArgsAreSet != false) {
        size += 1 + 1;
      }
      if (IsReady != false) {
        size += 1 + 1;
      }
      if (ExecCount != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(ExecCount);
      }
      if (SimdSize != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(SimdSize);
      }
      if (Version != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Version);
      }
      if (Id != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Id);
      }
      if (NKernel != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(NKernel);
      }
      if (Progress != 0F) {
        size += 1 + 4;
      }
      if (Msg.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Msg);
      }
      if (data_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Data);
      }
      size += before_.CalculateSize(_repeated_before_codec);
      size += after_.CalculateSize(_repeated_after_codec);
      if (RegionType != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(RegionType);
      }
      if (RegionId != 0) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(RegionId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Command other) {
      if (other == null) {
        return;
      }
      if (other.function_ != null) {
        if (function_ == null) {
          Function = new global::Messages.Function();
        }
        Function.MergeFrom(other.Function);
      }
      if (other.ArgsAreSet != false) {
        ArgsAreSet = other.ArgsAreSet;
      }
      if (other.IsReady != false) {
        IsReady = other.IsReady;
      }
      if (other.ExecCount != 0UL) {
        ExecCount = other.ExecCount;
      }
      if (other.SimdSize != 0UL) {
        SimdSize = other.SimdSize;
      }
      if (other.Version != 0UL) {
        Version = other.Version;
      }
      if (other.Id != 0L) {
        Id = other.Id;
      }
      if (other.NKernel != 0UL) {
        NKernel = other.NKernel;
      }
      if (other.Progress != 0F) {
        Progress = other.Progress;
      }
      if (other.Msg.Length != 0) {
        Msg = other.Msg;
      }
      if (other.data_ != null) {
        if (data_ == null) {
          Data = new global::Messages.Record64();
        }
        Data.MergeFrom(other.Data);
      }
      before_.Add(other.before_);
      after_.Add(other.after_);
      if (other.RegionType != 0) {
        RegionType = other.RegionType;
      }
      if (other.RegionId != 0) {
        RegionId = other.RegionId;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (function_ == null) {
              Function = new global::Messages.Function();
            }
            input.ReadMessage(Function);
            break;
          }
          case 16: {
            ArgsAreSet = input.ReadBool();
            break;
          }
          case 24: {
            IsReady = input.ReadBool();
            break;
          }
          case 32: {
            ExecCount = input.ReadUInt64();
            break;
          }
          case 40: {
            SimdSize = input.ReadUInt64();
            break;
          }
          case 48: {
            Version = input.ReadUInt64();
            break;
          }
          case 56: {
            Id = input.ReadInt64();
            break;
          }
          case 64: {
            NKernel = input.ReadUInt64();
            break;
          }
          case 77: {
            Progress = input.ReadFloat();
            break;
          }
          case 82: {
            Msg = input.ReadString();
            break;
          }
          case 98: {
            if (data_ == null) {
              Data = new global::Messages.Record64();
            }
            input.ReadMessage(Data);
            break;
          }
          case 106: {
            before_.AddEntriesFrom(input, _repeated_before_codec);
            break;
          }
          case 114: {
            after_.AddEntriesFrom(input, _repeated_after_codec);
            break;
          }
          case 120: {
            RegionType = input.ReadUInt32();
            break;
          }
          case 128: {
            RegionId = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (function_ == null) {
              Function = new global::Messages.Function();
            }
            input.ReadMessage(Function);
            break;
          }
          case 16: {
            ArgsAreSet = input.ReadBool();
            break;
          }
          case 24: {
            IsReady = input.ReadBool();
            break;
          }
          case 32: {
            ExecCount = input.ReadUInt64();
            break;
          }
          case 40: {
            SimdSize = input.ReadUInt64();
            break;
          }
          case 48: {
            Version = input.ReadUInt64();
            break;
          }
          case 56: {
            Id = input.ReadInt64();
            break;
          }
          case 64: {
            NKernel = input.ReadUInt64();
            break;
          }
          case 77: {
            Progress = input.ReadFloat();
            break;
          }
          case 82: {
            Msg = input.ReadString();
            break;
          }
          case 98: {
            if (data_ == null) {
              Data = new global::Messages.Record64();
            }
            input.ReadMessage(Data);
            break;
          }
          case 106: {
            before_.AddEntriesFrom(ref input, _repeated_before_codec);
            break;
          }
          case 114: {
            after_.AddEntriesFrom(ref input, _repeated_after_codec);
            break;
          }
          case 120: {
            RegionType = input.ReadUInt32();
            break;
          }
          case 128: {
            RegionId = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class Script : pb::IMessage<Script>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Script> _parser = new pb::MessageParser<Script>(() => new Script());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Script> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.ConceptReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Script() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Script(Script other) : this() {
      name_ = other.name_;
      msg_ = other.msg_;
      sourceCode_ = other.sourceCode_;
      uid_ = other.uid_;
      device_ = other.device_;
      status_ = other.status_;
      order_ = other.order_;
      progress_ = other.progress_;
      variables_ = other.variables_ != null ? other.variables_.Clone() : null;
      sequence_ = other.sequence_.Clone();
      before_ = other.before_ != null ? other.before_.Clone() : null;
      after_ = other.after_ != null ? other.after_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Script Clone() {
      return new Script(this);
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 1;
    private string name_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "msg" field.</summary>
    public const int MsgFieldNumber = 2;
    private string msg_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Msg {
      get { return msg_; }
      set {
        msg_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "source_code" field.</summary>
    public const int SourceCodeFieldNumber = 3;
    private string sourceCode_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SourceCode {
      get { return sourceCode_; }
      set {
        sourceCode_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "uid" field.</summary>
    public const int UidFieldNumber = 4;
    private long uid_;
    /// <summary>
    /// same as system uid, if assigned
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long Uid {
      get { return uid_; }
      set {
        uid_ = value;
      }
    }

    /// <summary>Field number for the "device" field.</summary>
    public const int DeviceFieldNumber = 5;
    private uint device_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint Device {
      get { return device_; }
      set {
        device_ = value;
      }
    }

    /// <summary>Field number for the "status" field.</summary>
    public const int StatusFieldNumber = 6;
    private uint status_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint Status {
      get { return status_; }
      set {
        status_ = value;
      }
    }

    /// <summary>Field number for the "order" field.</summary>
    public const int OrderFieldNumber = 7;
    private uint order_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint Order {
      get { return order_; }
      set {
        order_ = value;
      }
    }

    /// <summary>Field number for the "progress" field.</summary>
    public const int ProgressFieldNumber = 8;
    private float progress_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Progress {
      get { return progress_; }
      set {
        progress_ = value;
      }
    }

    /// <summary>Field number for the "variables" field.</summary>
    public const int VariablesFieldNumber = 10;
    private global::Messages.Variables variables_;
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.Variables Variables {
      get { return variables_; }
      set {
        variables_ = value;
      }
    }

    /// <summary>Field number for the "Sequence" field.</summary>
    public const int SequenceFieldNumber = 12;
    private static readonly pb::FieldCodec<global::Messages.Command> _repeated_sequence_codec
        = pb::FieldCodec.ForMessage(98, global::Messages.Command.Parser);
    private readonly pbc::RepeatedField<global::Messages.Command> sequence_ = new pbc::RepeatedField<global::Messages.Command>();
    /// <summary>
    ///reserved  
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Messages.Command> Sequence {
      get { return sequence_; }
    }

    /// <summary>Field number for the "before" field.</summary>
    public const int BeforeFieldNumber = 14;
    private global::Messages.Script before_;
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.Script Before {
      get { return before_; }
      set {
        before_ = value;
      }
    }

    /// <summary>Field number for the "after" field.</summary>
    public const int AfterFieldNumber = 15;
    private global::Messages.Script after_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.Script After {
      get { return after_; }
      set {
        after_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Script);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Script other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (Msg != other.Msg) return false;
      if (SourceCode != other.SourceCode) return false;
      if (Uid != other.Uid) return false;
      if (Device != other.Device) return false;
      if (Status != other.Status) return false;
      if (Order != other.Order) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Progress, other.Progress)) return false;
      if (!object.Equals(Variables, other.Variables)) return false;
      if(!sequence_.Equals(other.sequence_)) return false;
      if (!object.Equals(Before, other.Before)) return false;
      if (!object.Equals(After, other.After)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (Msg.Length != 0) hash ^= Msg.GetHashCode();
      if (SourceCode.Length != 0) hash ^= SourceCode.GetHashCode();
      if (Uid != 0L) hash ^= Uid.GetHashCode();
      if (Device != 0) hash ^= Device.GetHashCode();
      if (Status != 0) hash ^= Status.GetHashCode();
      if (Order != 0) hash ^= Order.GetHashCode();
      if (Progress != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Progress);
      if (variables_ != null) hash ^= Variables.GetHashCode();
      hash ^= sequence_.GetHashCode();
      if (before_ != null) hash ^= Before.GetHashCode();
      if (after_ != null) hash ^= After.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (Msg.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Msg);
      }
      if (SourceCode.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(SourceCode);
      }
      if (Uid != 0L) {
        output.WriteRawTag(32);
        output.WriteInt64(Uid);
      }
      if (Device != 0) {
        output.WriteRawTag(40);
        output.WriteUInt32(Device);
      }
      if (Status != 0) {
        output.WriteRawTag(48);
        output.WriteUInt32(Status);
      }
      if (Order != 0) {
        output.WriteRawTag(56);
        output.WriteUInt32(Order);
      }
      if (Progress != 0F) {
        output.WriteRawTag(69);
        output.WriteFloat(Progress);
      }
      if (variables_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(Variables);
      }
      sequence_.WriteTo(output, _repeated_sequence_codec);
      if (before_ != null) {
        output.WriteRawTag(114);
        output.WriteMessage(Before);
      }
      if (after_ != null) {
        output.WriteRawTag(122);
        output.WriteMessage(After);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (Msg.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Msg);
      }
      if (SourceCode.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(SourceCode);
      }
      if (Uid != 0L) {
        output.WriteRawTag(32);
        output.WriteInt64(Uid);
      }
      if (Device != 0) {
        output.WriteRawTag(40);
        output.WriteUInt32(Device);
      }
      if (Status != 0) {
        output.WriteRawTag(48);
        output.WriteUInt32(Status);
      }
      if (Order != 0) {
        output.WriteRawTag(56);
        output.WriteUInt32(Order);
      }
      if (Progress != 0F) {
        output.WriteRawTag(69);
        output.WriteFloat(Progress);
      }
      if (variables_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(Variables);
      }
      sequence_.WriteTo(ref output, _repeated_sequence_codec);
      if (before_ != null) {
        output.WriteRawTag(114);
        output.WriteMessage(Before);
      }
      if (after_ != null) {
        output.WriteRawTag(122);
        output.WriteMessage(After);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (Msg.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Msg);
      }
      if (SourceCode.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SourceCode);
      }
      if (Uid != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Uid);
      }
      if (Device != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Device);
      }
      if (Status != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Status);
      }
      if (Order != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Order);
      }
      if (Progress != 0F) {
        size += 1 + 4;
      }
      if (variables_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Variables);
      }
      size += sequence_.CalculateSize(_repeated_sequence_codec);
      if (before_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Before);
      }
      if (after_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(After);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Script other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.Msg.Length != 0) {
        Msg = other.Msg;
      }
      if (other.SourceCode.Length != 0) {
        SourceCode = other.SourceCode;
      }
      if (other.Uid != 0L) {
        Uid = other.Uid;
      }
      if (other.Device != 0) {
        Device = other.Device;
      }
      if (other.Status != 0) {
        Status = other.Status;
      }
      if (other.Order != 0) {
        Order = other.Order;
      }
      if (other.Progress != 0F) {
        Progress = other.Progress;
      }
      if (other.variables_ != null) {
        if (variables_ == null) {
          Variables = new global::Messages.Variables();
        }
        Variables.MergeFrom(other.Variables);
      }
      sequence_.Add(other.sequence_);
      if (other.before_ != null) {
        if (before_ == null) {
          Before = new global::Messages.Script();
        }
        Before.MergeFrom(other.Before);
      }
      if (other.after_ != null) {
        if (after_ == null) {
          After = new global::Messages.Script();
        }
        After.MergeFrom(other.After);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            Msg = input.ReadString();
            break;
          }
          case 26: {
            SourceCode = input.ReadString();
            break;
          }
          case 32: {
            Uid = input.ReadInt64();
            break;
          }
          case 40: {
            Device = input.ReadUInt32();
            break;
          }
          case 48: {
            Status = input.ReadUInt32();
            break;
          }
          case 56: {
            Order = input.ReadUInt32();
            break;
          }
          case 69: {
            Progress = input.ReadFloat();
            break;
          }
          case 82: {
            if (variables_ == null) {
              Variables = new global::Messages.Variables();
            }
            input.ReadMessage(Variables);
            break;
          }
          case 98: {
            sequence_.AddEntriesFrom(input, _repeated_sequence_codec);
            break;
          }
          case 114: {
            if (before_ == null) {
              Before = new global::Messages.Script();
            }
            input.ReadMessage(Before);
            break;
          }
          case 122: {
            if (after_ == null) {
              After = new global::Messages.Script();
            }
            input.ReadMessage(After);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            Msg = input.ReadString();
            break;
          }
          case 26: {
            SourceCode = input.ReadString();
            break;
          }
          case 32: {
            Uid = input.ReadInt64();
            break;
          }
          case 40: {
            Device = input.ReadUInt32();
            break;
          }
          case 48: {
            Status = input.ReadUInt32();
            break;
          }
          case 56: {
            Order = input.ReadUInt32();
            break;
          }
          case 69: {
            Progress = input.ReadFloat();
            break;
          }
          case 82: {
            if (variables_ == null) {
              Variables = new global::Messages.Variables();
            }
            input.ReadMessage(Variables);
            break;
          }
          case 98: {
            sequence_.AddEntriesFrom(ref input, _repeated_sequence_codec);
            break;
          }
          case 114: {
            if (before_ == null) {
              Before = new global::Messages.Script();
            }
            input.ReadMessage(Before);
            break;
          }
          case 122: {
            if (after_ == null) {
              After = new global::Messages.Script();
            }
            input.ReadMessage(After);
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class Model : pb::IMessage<Model>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Model> _parser = new pb::MessageParser<Model>(() => new Model());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Model> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.ConceptReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Model() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Model(Model other) : this() {
      name_ = other.name_;
      dofs_ = other.dofs_.Clone();
      algorithms_ = other.algorithms_.Clone();
      availableOutputs_ = other.availableOutputs_.Clone();
      extraProperties_ = other.extraProperties_.Clone();
      compatibleConditions_ = other.compatibleConditions_.Clone();
      subModels_ = other.subModels_.Clone();
      defaultData_ = other.defaultData_ != null ? other.defaultData_.Clone() : null;
      rules_ = other.rules_.Clone();
      mutexStack_ = other.mutexStack_.Clone();
      markovMatrix_ = other.markovMatrix_ != null ? other.markovMatrix_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Model Clone() {
      return new Model(this);
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 1;
    private string name_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "dofs" field.</summary>
    public const int DofsFieldNumber = 3;
    private static readonly pb::FieldCodec<string> _repeated_dofs_codec
        = pb::FieldCodec.ForString(26);
    private readonly pbc::RepeatedField<string> dofs_ = new pbc::RepeatedField<string>();
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> Dofs {
      get { return dofs_; }
    }

    /// <summary>Field number for the "algorithms" field.</summary>
    public const int AlgorithmsFieldNumber = 4;
    private static readonly pb::FieldCodec<string> _repeated_algorithms_codec
        = pb::FieldCodec.ForString(34);
    private readonly pbc::RepeatedField<string> algorithms_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// ordered algorithms (by name)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> Algorithms {
      get { return algorithms_; }
    }

    /// <summary>Field number for the "available_outputs" field.</summary>
    public const int AvailableOutputsFieldNumber = 5;
    private static readonly pb::FieldCodec<string> _repeated_availableOutputs_codec
        = pb::FieldCodec.ForString(42);
    private readonly pbc::RepeatedField<string> availableOutputs_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// serialized property-keys
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> AvailableOutputs {
      get { return availableOutputs_; }
    }

    /// <summary>Field number for the "extra_properties" field.</summary>
    public const int ExtraPropertiesFieldNumber = 6;
    private static readonly pb::FieldCodec<string> _repeated_extraProperties_codec
        = pb::FieldCodec.ForString(50);
    private readonly pbc::RepeatedField<string> extraProperties_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// some pk's are not recorded by default as an optimization. they can be added
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> ExtraProperties {
      get { return extraProperties_; }
    }

    /// <summary>Field number for the "compatible_conditions" field.</summary>
    public const int CompatibleConditionsFieldNumber = 7;
    private static readonly pb::FieldCodec<string> _repeated_compatibleConditions_codec
        = pb::FieldCodec.ForString(58);
    private readonly pbc::RepeatedField<string> compatibleConditions_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// relevant algorithm/function names that are applied to one ore more regions or initialize
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> CompatibleConditions {
      get { return compatibleConditions_; }
    }

    /// <summary>Field number for the "sub_models" field.</summary>
    public const int SubModelsFieldNumber = 9;
    private static readonly pb::FieldCodec<global::Messages.Model> _repeated_subModels_codec
        = pb::FieldCodec.ForMessage(74, global::Messages.Model.Parser);
    private readonly pbc::RepeatedField<global::Messages.Model> subModels_ = new pbc::RepeatedField<global::Messages.Model>();
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Messages.Model> SubModels {
      get { return subModels_; }
    }

    /// <summary>Field number for the "default_data" field.</summary>
    public const int DefaultDataFieldNumber = 10;
    private global::Messages.Record64 defaultData_;
    /// <summary>
    /// default constants, unless otherwise specified (by region)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.Record64 DefaultData {
      get { return defaultData_; }
      set {
        defaultData_ = value;
      }
    }

    /// <summary>Field number for the "rules" field.</summary>
    public const int RulesFieldNumber = 11;
    private static readonly pb::FieldCodec<global::Messages.Rule> _repeated_rules_codec
        = pb::FieldCodec.ForMessage(90, global::Messages.Rule.Parser);
    private readonly pbc::RepeatedField<global::Messages.Rule> rules_ = new pbc::RepeatedField<global::Messages.Rule>();
    /// <summary>
    /// how each PK can be calculated (by algorithm name)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Messages.Rule> Rules {
      get { return rules_; }
    }

    /// <summary>Field number for the "mutex_stack" field.</summary>
    public const int MutexStackFieldNumber = 12;
    private static readonly pb::FieldCodec<global::Messages.Rule> _repeated_mutexStack_codec
        = pb::FieldCodec.ForMessage(98, global::Messages.Rule.Parser);
    private readonly pbc::RepeatedField<global::Messages.Rule> mutexStack_ = new pbc::RepeatedField<global::Messages.Rule>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Messages.Rule> MutexStack {
      get { return mutexStack_; }
    }

    /// <summary>Field number for the "markov_matrix" field.</summary>
    public const int MarkovMatrixFieldNumber = 15;
    private global::Messages.SparseMatrix markovMatrix_;
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.SparseMatrix MarkovMatrix {
      get { return markovMatrix_; }
      set {
        markovMatrix_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Model);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Model other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if(!dofs_.Equals(other.dofs_)) return false;
      if(!algorithms_.Equals(other.algorithms_)) return false;
      if(!availableOutputs_.Equals(other.availableOutputs_)) return false;
      if(!extraProperties_.Equals(other.extraProperties_)) return false;
      if(!compatibleConditions_.Equals(other.compatibleConditions_)) return false;
      if(!subModels_.Equals(other.subModels_)) return false;
      if (!object.Equals(DefaultData, other.DefaultData)) return false;
      if(!rules_.Equals(other.rules_)) return false;
      if(!mutexStack_.Equals(other.mutexStack_)) return false;
      if (!object.Equals(MarkovMatrix, other.MarkovMatrix)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      hash ^= dofs_.GetHashCode();
      hash ^= algorithms_.GetHashCode();
      hash ^= availableOutputs_.GetHashCode();
      hash ^= extraProperties_.GetHashCode();
      hash ^= compatibleConditions_.GetHashCode();
      hash ^= subModels_.GetHashCode();
      if (defaultData_ != null) hash ^= DefaultData.GetHashCode();
      hash ^= rules_.GetHashCode();
      hash ^= mutexStack_.GetHashCode();
      if (markovMatrix_ != null) hash ^= MarkovMatrix.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      dofs_.WriteTo(output, _repeated_dofs_codec);
      algorithms_.WriteTo(output, _repeated_algorithms_codec);
      availableOutputs_.WriteTo(output, _repeated_availableOutputs_codec);
      extraProperties_.WriteTo(output, _repeated_extraProperties_codec);
      compatibleConditions_.WriteTo(output, _repeated_compatibleConditions_codec);
      subModels_.WriteTo(output, _repeated_subModels_codec);
      if (defaultData_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(DefaultData);
      }
      rules_.WriteTo(output, _repeated_rules_codec);
      mutexStack_.WriteTo(output, _repeated_mutexStack_codec);
      if (markovMatrix_ != null) {
        output.WriteRawTag(122);
        output.WriteMessage(MarkovMatrix);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      dofs_.WriteTo(ref output, _repeated_dofs_codec);
      algorithms_.WriteTo(ref output, _repeated_algorithms_codec);
      availableOutputs_.WriteTo(ref output, _repeated_availableOutputs_codec);
      extraProperties_.WriteTo(ref output, _repeated_extraProperties_codec);
      compatibleConditions_.WriteTo(ref output, _repeated_compatibleConditions_codec);
      subModels_.WriteTo(ref output, _repeated_subModels_codec);
      if (defaultData_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(DefaultData);
      }
      rules_.WriteTo(ref output, _repeated_rules_codec);
      mutexStack_.WriteTo(ref output, _repeated_mutexStack_codec);
      if (markovMatrix_ != null) {
        output.WriteRawTag(122);
        output.WriteMessage(MarkovMatrix);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      size += dofs_.CalculateSize(_repeated_dofs_codec);
      size += algorithms_.CalculateSize(_repeated_algorithms_codec);
      size += availableOutputs_.CalculateSize(_repeated_availableOutputs_codec);
      size += extraProperties_.CalculateSize(_repeated_extraProperties_codec);
      size += compatibleConditions_.CalculateSize(_repeated_compatibleConditions_codec);
      size += subModels_.CalculateSize(_repeated_subModels_codec);
      if (defaultData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DefaultData);
      }
      size += rules_.CalculateSize(_repeated_rules_codec);
      size += mutexStack_.CalculateSize(_repeated_mutexStack_codec);
      if (markovMatrix_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MarkovMatrix);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Model other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      dofs_.Add(other.dofs_);
      algorithms_.Add(other.algorithms_);
      availableOutputs_.Add(other.availableOutputs_);
      extraProperties_.Add(other.extraProperties_);
      compatibleConditions_.Add(other.compatibleConditions_);
      subModels_.Add(other.subModels_);
      if (other.defaultData_ != null) {
        if (defaultData_ == null) {
          DefaultData = new global::Messages.Record64();
        }
        DefaultData.MergeFrom(other.DefaultData);
      }
      rules_.Add(other.rules_);
      mutexStack_.Add(other.mutexStack_);
      if (other.markovMatrix_ != null) {
        if (markovMatrix_ == null) {
          MarkovMatrix = new global::Messages.SparseMatrix();
        }
        MarkovMatrix.MergeFrom(other.MarkovMatrix);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            dofs_.AddEntriesFrom(input, _repeated_dofs_codec);
            break;
          }
          case 34: {
            algorithms_.AddEntriesFrom(input, _repeated_algorithms_codec);
            break;
          }
          case 42: {
            availableOutputs_.AddEntriesFrom(input, _repeated_availableOutputs_codec);
            break;
          }
          case 50: {
            extraProperties_.AddEntriesFrom(input, _repeated_extraProperties_codec);
            break;
          }
          case 58: {
            compatibleConditions_.AddEntriesFrom(input, _repeated_compatibleConditions_codec);
            break;
          }
          case 74: {
            subModels_.AddEntriesFrom(input, _repeated_subModels_codec);
            break;
          }
          case 82: {
            if (defaultData_ == null) {
              DefaultData = new global::Messages.Record64();
            }
            input.ReadMessage(DefaultData);
            break;
          }
          case 90: {
            rules_.AddEntriesFrom(input, _repeated_rules_codec);
            break;
          }
          case 98: {
            mutexStack_.AddEntriesFrom(input, _repeated_mutexStack_codec);
            break;
          }
          case 122: {
            if (markovMatrix_ == null) {
              MarkovMatrix = new global::Messages.SparseMatrix();
            }
            input.ReadMessage(MarkovMatrix);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            dofs_.AddEntriesFrom(ref input, _repeated_dofs_codec);
            break;
          }
          case 34: {
            algorithms_.AddEntriesFrom(ref input, _repeated_algorithms_codec);
            break;
          }
          case 42: {
            availableOutputs_.AddEntriesFrom(ref input, _repeated_availableOutputs_codec);
            break;
          }
          case 50: {
            extraProperties_.AddEntriesFrom(ref input, _repeated_extraProperties_codec);
            break;
          }
          case 58: {
            compatibleConditions_.AddEntriesFrom(ref input, _repeated_compatibleConditions_codec);
            break;
          }
          case 74: {
            subModels_.AddEntriesFrom(ref input, _repeated_subModels_codec);
            break;
          }
          case 82: {
            if (defaultData_ == null) {
              DefaultData = new global::Messages.Record64();
            }
            input.ReadMessage(DefaultData);
            break;
          }
          case 90: {
            rules_.AddEntriesFrom(ref input, _repeated_rules_codec);
            break;
          }
          case 98: {
            mutexStack_.AddEntriesFrom(ref input, _repeated_mutexStack_codec);
            break;
          }
          case 122: {
            if (markovMatrix_ == null) {
              MarkovMatrix = new global::Messages.SparseMatrix();
            }
            input.ReadMessage(MarkovMatrix);
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class Coupling : pb::IMessage<Coupling>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Coupling> _parser = new pb::MessageParser<Coupling>(() => new Coupling());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Coupling> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.ConceptReflection.Descriptor.MessageTypes[5]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Coupling() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Coupling(Coupling other) : this() {
      sourceSystem_ = other.sourceSystem_;
      targetSystem_ = other.targetSystem_;
      sourceUid_ = other.sourceUid_;
      targetUid_ = other.targetUid_;
      sourceRegion_ = other.sourceRegion_ != null ? other.sourceRegion_.Clone() : null;
      targetRegion_ = other.targetRegion_ != null ? other.targetRegion_.Clone() : null;
      samplingMode_ = other.samplingMode_;
      name_ = other.name_;
      dofs_ = other.dofs_.Clone();
      representation_ = other.representation_ != null ? other.representation_.Clone() : null;
      enabled_ = other.enabled_;
      forward_ = other.forward_;
      reverse_ = other.reverse_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Coupling Clone() {
      return new Coupling(this);
    }

    /// <summary>Field number for the "source_system" field.</summary>
    public const int SourceSystemFieldNumber = 1;
    private string sourceSystem_ = "";
    /// <summary>
    /// s---
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SourceSystem {
      get { return sourceSystem_; }
      set {
        sourceSystem_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "target_system" field.</summary>
    public const int TargetSystemFieldNumber = 2;
    private string targetSystem_ = "";
    /// <summary>
    /// ---t
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string TargetSystem {
      get { return targetSystem_; }
      set {
        targetSystem_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "source_uid" field.</summary>
    public const int SourceUidFieldNumber = 3;
    private long sourceUid_;
    /// <summary>
    /// uid is only valid within a given session
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long SourceUid {
      get { return sourceUid_; }
      set {
        sourceUid_ = value;
      }
    }

    /// <summary>Field number for the "target_uid" field.</summary>
    public const int TargetUidFieldNumber = 4;
    private long targetUid_;
    /// <summary>
    /// uid is only valid within a given session
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long TargetUid {
      get { return targetUid_; }
      set {
        targetUid_ = value;
      }
    }

    /// <summary>Field number for the "source_region" field.</summary>
    public const int SourceRegionFieldNumber = 5;
    private global::Messages.Zone sourceRegion_;
    /// <summary>
    /// s---
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.Zone SourceRegion {
      get { return sourceRegion_; }
      set {
        sourceRegion_ = value;
      }
    }

    /// <summary>Field number for the "target_region" field.</summary>
    public const int TargetRegionFieldNumber = 6;
    private global::Messages.Zone targetRegion_;
    /// <summary>
    /// ---t
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.Zone TargetRegion {
      get { return targetRegion_; }
      set {
        targetRegion_ = value;
      }
    }

    /// <summary>Field number for the "sampling_mode" field.</summary>
    public const int SamplingModeFieldNumber = 9;
    private uint samplingMode_;
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint SamplingMode {
      get { return samplingMode_; }
      set {
        samplingMode_ = value;
      }
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 10;
    private string name_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "dofs" field.</summary>
    public const int DofsFieldNumber = 11;
    private static readonly pb::FieldCodec<string> _repeated_dofs_codec
        = pb::FieldCodec.ForString(90);
    private readonly pbc::RepeatedField<string> dofs_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// s---wo---w1---w2---t
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> Dofs {
      get { return dofs_; }
    }

    /// <summary>Field number for the "representation" field.</summary>
    public const int RepresentationFieldNumber = 12;
    private global::Messages.Representation representation_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.Representation Representation {
      get { return representation_; }
      set {
        representation_ = value;
      }
    }

    /// <summary>Field number for the "enabled" field.</summary>
    public const int EnabledFieldNumber = 13;
    private bool enabled_;
    /// <summary>
    /// s----Z Z----t
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Enabled {
      get { return enabled_; }
      set {
        enabled_ = value;
      }
    }

    /// <summary>Field number for the "forward" field.</summary>
    public const int ForwardFieldNumber = 14;
    private bool forward_;
    /// <summary>
    /// s---------->t
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Forward {
      get { return forward_; }
      set {
        forward_ = value;
      }
    }

    /// <summary>Field number for the "reverse" field.</summary>
    public const int ReverseFieldNumber = 15;
    private bool reverse_;
    /// <summary>
    /// s&lt;----------t
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Reverse {
      get { return reverse_; }
      set {
        reverse_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Coupling);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Coupling other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (SourceSystem != other.SourceSystem) return false;
      if (TargetSystem != other.TargetSystem) return false;
      if (SourceUid != other.SourceUid) return false;
      if (TargetUid != other.TargetUid) return false;
      if (!object.Equals(SourceRegion, other.SourceRegion)) return false;
      if (!object.Equals(TargetRegion, other.TargetRegion)) return false;
      if (SamplingMode != other.SamplingMode) return false;
      if (Name != other.Name) return false;
      if(!dofs_.Equals(other.dofs_)) return false;
      if (!object.Equals(Representation, other.Representation)) return false;
      if (Enabled != other.Enabled) return false;
      if (Forward != other.Forward) return false;
      if (Reverse != other.Reverse) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (SourceSystem.Length != 0) hash ^= SourceSystem.GetHashCode();
      if (TargetSystem.Length != 0) hash ^= TargetSystem.GetHashCode();
      if (SourceUid != 0L) hash ^= SourceUid.GetHashCode();
      if (TargetUid != 0L) hash ^= TargetUid.GetHashCode();
      if (sourceRegion_ != null) hash ^= SourceRegion.GetHashCode();
      if (targetRegion_ != null) hash ^= TargetRegion.GetHashCode();
      if (SamplingMode != 0) hash ^= SamplingMode.GetHashCode();
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      hash ^= dofs_.GetHashCode();
      if (representation_ != null) hash ^= Representation.GetHashCode();
      if (Enabled != false) hash ^= Enabled.GetHashCode();
      if (Forward != false) hash ^= Forward.GetHashCode();
      if (Reverse != false) hash ^= Reverse.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (SourceSystem.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SourceSystem);
      }
      if (TargetSystem.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(TargetSystem);
      }
      if (SourceUid != 0L) {
        output.WriteRawTag(24);
        output.WriteInt64(SourceUid);
      }
      if (TargetUid != 0L) {
        output.WriteRawTag(32);
        output.WriteInt64(TargetUid);
      }
      if (sourceRegion_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(SourceRegion);
      }
      if (targetRegion_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(TargetRegion);
      }
      if (SamplingMode != 0) {
        output.WriteRawTag(72);
        output.WriteUInt32(SamplingMode);
      }
      if (Name.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(Name);
      }
      dofs_.WriteTo(output, _repeated_dofs_codec);
      if (representation_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(Representation);
      }
      if (Enabled != false) {
        output.WriteRawTag(104);
        output.WriteBool(Enabled);
      }
      if (Forward != false) {
        output.WriteRawTag(112);
        output.WriteBool(Forward);
      }
      if (Reverse != false) {
        output.WriteRawTag(120);
        output.WriteBool(Reverse);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (SourceSystem.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SourceSystem);
      }
      if (TargetSystem.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(TargetSystem);
      }
      if (SourceUid != 0L) {
        output.WriteRawTag(24);
        output.WriteInt64(SourceUid);
      }
      if (TargetUid != 0L) {
        output.WriteRawTag(32);
        output.WriteInt64(TargetUid);
      }
      if (sourceRegion_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(SourceRegion);
      }
      if (targetRegion_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(TargetRegion);
      }
      if (SamplingMode != 0) {
        output.WriteRawTag(72);
        output.WriteUInt32(SamplingMode);
      }
      if (Name.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(Name);
      }
      dofs_.WriteTo(ref output, _repeated_dofs_codec);
      if (representation_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(Representation);
      }
      if (Enabled != false) {
        output.WriteRawTag(104);
        output.WriteBool(Enabled);
      }
      if (Forward != false) {
        output.WriteRawTag(112);
        output.WriteBool(Forward);
      }
      if (Reverse != false) {
        output.WriteRawTag(120);
        output.WriteBool(Reverse);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (SourceSystem.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SourceSystem);
      }
      if (TargetSystem.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TargetSystem);
      }
      if (SourceUid != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(SourceUid);
      }
      if (TargetUid != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(TargetUid);
      }
      if (sourceRegion_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceRegion);
      }
      if (targetRegion_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TargetRegion);
      }
      if (SamplingMode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(SamplingMode);
      }
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      size += dofs_.CalculateSize(_repeated_dofs_codec);
      if (representation_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Representation);
      }
      if (Enabled != false) {
        size += 1 + 1;
      }
      if (Forward != false) {
        size += 1 + 1;
      }
      if (Reverse != false) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Coupling other) {
      if (other == null) {
        return;
      }
      if (other.SourceSystem.Length != 0) {
        SourceSystem = other.SourceSystem;
      }
      if (other.TargetSystem.Length != 0) {
        TargetSystem = other.TargetSystem;
      }
      if (other.SourceUid != 0L) {
        SourceUid = other.SourceUid;
      }
      if (other.TargetUid != 0L) {
        TargetUid = other.TargetUid;
      }
      if (other.sourceRegion_ != null) {
        if (sourceRegion_ == null) {
          SourceRegion = new global::Messages.Zone();
        }
        SourceRegion.MergeFrom(other.SourceRegion);
      }
      if (other.targetRegion_ != null) {
        if (targetRegion_ == null) {
          TargetRegion = new global::Messages.Zone();
        }
        TargetRegion.MergeFrom(other.TargetRegion);
      }
      if (other.SamplingMode != 0) {
        SamplingMode = other.SamplingMode;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      dofs_.Add(other.dofs_);
      if (other.representation_ != null) {
        if (representation_ == null) {
          Representation = new global::Messages.Representation();
        }
        Representation.MergeFrom(other.Representation);
      }
      if (other.Enabled != false) {
        Enabled = other.Enabled;
      }
      if (other.Forward != false) {
        Forward = other.Forward;
      }
      if (other.Reverse != false) {
        Reverse = other.Reverse;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            SourceSystem = input.ReadString();
            break;
          }
          case 18: {
            TargetSystem = input.ReadString();
            break;
          }
          case 24: {
            SourceUid = input.ReadInt64();
            break;
          }
          case 32: {
            TargetUid = input.ReadInt64();
            break;
          }
          case 42: {
            if (sourceRegion_ == null) {
              SourceRegion = new global::Messages.Zone();
            }
            input.ReadMessage(SourceRegion);
            break;
          }
          case 50: {
            if (targetRegion_ == null) {
              TargetRegion = new global::Messages.Zone();
            }
            input.ReadMessage(TargetRegion);
            break;
          }
          case 72: {
            SamplingMode = input.ReadUInt32();
            break;
          }
          case 82: {
            Name = input.ReadString();
            break;
          }
          case 90: {
            dofs_.AddEntriesFrom(input, _repeated_dofs_codec);
            break;
          }
          case 98: {
            if (representation_ == null) {
              Representation = new global::Messages.Representation();
            }
            input.ReadMessage(Representation);
            break;
          }
          case 104: {
            Enabled = input.ReadBool();
            break;
          }
          case 112: {
            Forward = input.ReadBool();
            break;
          }
          case 120: {
            Reverse = input.ReadBool();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            SourceSystem = input.ReadString();
            break;
          }
          case 18: {
            TargetSystem = input.ReadString();
            break;
          }
          case 24: {
            SourceUid = input.ReadInt64();
            break;
          }
          case 32: {
            TargetUid = input.ReadInt64();
            break;
          }
          case 42: {
            if (sourceRegion_ == null) {
              SourceRegion = new global::Messages.Zone();
            }
            input.ReadMessage(SourceRegion);
            break;
          }
          case 50: {
            if (targetRegion_ == null) {
              TargetRegion = new global::Messages.Zone();
            }
            input.ReadMessage(TargetRegion);
            break;
          }
          case 72: {
            SamplingMode = input.ReadUInt32();
            break;
          }
          case 82: {
            Name = input.ReadString();
            break;
          }
          case 90: {
            dofs_.AddEntriesFrom(ref input, _repeated_dofs_codec);
            break;
          }
          case 98: {
            if (representation_ == null) {
              Representation = new global::Messages.Representation();
            }
            input.ReadMessage(Representation);
            break;
          }
          case 104: {
            Enabled = input.ReadBool();
            break;
          }
          case 112: {
            Forward = input.ReadBool();
            break;
          }
          case 120: {
            Reverse = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class System : pb::IMessage<System>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<System> _parser = new pb::MessageParser<System>(() => new System());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<System> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.ConceptReflection.Descriptor.MessageTypes[6]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public System() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public System(System other) : this() {
      meta_ = other.meta_ != null ? other.meta_.Clone() : null;
      script_ = other.script_.Clone();
      localTransform_ = other.localTransform_.Clone();
      localRate_ = other.localRate_.Clone();
      localAccel_ = other.localAccel_.Clone();
      children_ = other.children_.Clone();
      referencedFiles_ = other.referencedFiles_.Clone();
      embeddedFiles_ = other.embeddedFiles_.Clone();
      notes_ = other.notes_.Clone();
      couplings_ = other.couplings_.Clone();
      models_ = other.models_.Clone();
      physicalConstants_ = other.physicalConstants_ != null ? other.physicalConstants_.Clone() : null;
      conditions_ = other.conditions_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public System Clone() {
      return new System(this);
    }

    /// <summary>Field number for the "meta" field.</summary>
    public const int MetaFieldNumber = 1;
    private global::Messages.Meta meta_;
    /// <summary>
    /// name and other basic info, some of which is non-persistent 
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.Meta Meta {
      get { return meta_; }
      set {
        meta_ = value;
      }
    }

    /// <summary>Field number for the "script" field.</summary>
    public const int ScriptFieldNumber = 2;
    private static readonly pb::FieldCodec<global::Messages.Script> _repeated_script_codec
        = pb::FieldCodec.ForMessage(18, global::Messages.Script.Parser);
    private readonly pbc::RepeatedField<global::Messages.Script> script_ = new pbc::RepeatedField<global::Messages.Script>();
    /// <summary>
    /// serialized solver defined by a sequence of instructions
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Messages.Script> Script {
      get { return script_; }
    }

    /// <summary>Field number for the "local_transform" field.</summary>
    public const int LocalTransformFieldNumber = 3;
    private static readonly pb::FieldCodec<double> _repeated_localTransform_codec
        = pb::FieldCodec.ForDouble(26);
    private readonly pbc::RepeatedField<double> localTransform_ = new pbc::RepeatedField<double>();
    /// <summary>
    /// double16 (glm::dmat4) local transformation matrix
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<double> LocalTransform {
      get { return localTransform_; }
    }

    /// <summary>Field number for the "local_rate" field.</summary>
    public const int LocalRateFieldNumber = 4;
    private static readonly pb::FieldCodec<double> _repeated_localRate_codec
        = pb::FieldCodec.ForDouble(34);
    private readonly pbc::RepeatedField<double> localRate_ = new pbc::RepeatedField<double>();
    /// <summary>
    /// double16 (glm::dmat4) local transformation matrix
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<double> LocalRate {
      get { return localRate_; }
    }

    /// <summary>Field number for the "local_accel" field.</summary>
    public const int LocalAccelFieldNumber = 5;
    private static readonly pb::FieldCodec<double> _repeated_localAccel_codec
        = pb::FieldCodec.ForDouble(42);
    private readonly pbc::RepeatedField<double> localAccel_ = new pbc::RepeatedField<double>();
    /// <summary>
    /// double16 (glm::dmat4) local transformation matrix
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<double> LocalAccel {
      get { return localAccel_; }
    }

    /// <summary>Field number for the "children" field.</summary>
    public const int ChildrenFieldNumber = 6;
    private static readonly pb::FieldCodec<string> _repeated_children_codec
        = pb::FieldCodec.ForString(50);
    private readonly pbc::RepeatedField<string> children_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// sub-system names (exact matches)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> Children {
      get { return children_; }
    }

    /// <summary>Field number for the "referenced_files" field.</summary>
    public const int ReferencedFilesFieldNumber = 7;
    private static readonly pb::FieldCodec<string> _repeated_referencedFiles_codec
        = pb::FieldCodec.ForString(58);
    private readonly pbc::RepeatedField<string> referencedFiles_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// external file references, such as *.xcg geometry (Messages::Topology)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> ReferencedFiles {
      get { return referencedFiles_; }
    }

    /// <summary>Field number for the "embedded_files" field.</summary>
    public const int EmbeddedFilesFieldNumber = 8;
    private static readonly pb::FieldCodec<global::Messages.File> _repeated_embeddedFiles_codec
        = pb::FieldCodec.ForMessage(66, global::Messages.File.Parser);
    private readonly pbc::RepeatedField<global::Messages.File> embeddedFiles_ = new pbc::RepeatedField<global::Messages.File>();
    /// <summary>
    /// files such as symbol and supporting documentation
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Messages.File> EmbeddedFiles {
      get { return embeddedFiles_; }
    }

    /// <summary>Field number for the "notes" field.</summary>
    public const int NotesFieldNumber = 9;
    private static readonly pb::FieldCodec<string> _repeated_notes_codec
        = pb::FieldCodec.ForString(74);
    private readonly pbc::RepeatedField<string> notes_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> Notes {
      get { return notes_; }
    }

    /// <summary>Field number for the "couplings" field.</summary>
    public const int CouplingsFieldNumber = 10;
    private static readonly pb::FieldCodec<global::Messages.Coupling> _repeated_couplings_codec
        = pb::FieldCodec.ForMessage(82, global::Messages.Coupling.Parser);
    private readonly pbc::RepeatedField<global::Messages.Coupling> couplings_ = new pbc::RepeatedField<global::Messages.Coupling>();
    /// <summary>
    /// links and contacts between regions
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Messages.Coupling> Couplings {
      get { return couplings_; }
    }

    /// <summary>Field number for the "models" field.</summary>
    public const int ModelsFieldNumber = 11;
    private static readonly pb::FieldCodec<global::Messages.Model> _repeated_models_codec
        = pb::FieldCodec.ForMessage(90, global::Messages.Model.Parser);
    private readonly pbc::RepeatedField<global::Messages.Model> models_ = new pbc::RepeatedField<global::Messages.Model>();
    /// <summary>
    /// physical / mathematical models (groups of algorithms)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Messages.Model> Models {
      get { return models_; }
    }

    /// <summary>Field number for the "physical_constants" field.</summary>
    public const int PhysicalConstantsFieldNumber = 12;
    private global::Messages.Record64 physicalConstants_;
    /// <summary>
    /// physics.data and system requirements
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.Record64 PhysicalConstants {
      get { return physicalConstants_; }
      set {
        physicalConstants_ = value;
      }
    }

    /// <summary>Field number for the "conditions" field.</summary>
    public const int ConditionsFieldNumber = 13;
    private static readonly pb::FieldCodec<global::Messages.Command> _repeated_conditions_codec
        = pb::FieldCodec.ForMessage(106, global::Messages.Command.Parser);
    private readonly pbc::RepeatedField<global::Messages.Command> conditions_ = new pbc::RepeatedField<global::Messages.Command>();
    /// <summary>
    /// special algorithm commands applied as constraints and conditions
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Messages.Command> Conditions {
      get { return conditions_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as System);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(System other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Meta, other.Meta)) return false;
      if(!script_.Equals(other.script_)) return false;
      if(!localTransform_.Equals(other.localTransform_)) return false;
      if(!localRate_.Equals(other.localRate_)) return false;
      if(!localAccel_.Equals(other.localAccel_)) return false;
      if(!children_.Equals(other.children_)) return false;
      if(!referencedFiles_.Equals(other.referencedFiles_)) return false;
      if(!embeddedFiles_.Equals(other.embeddedFiles_)) return false;
      if(!notes_.Equals(other.notes_)) return false;
      if(!couplings_.Equals(other.couplings_)) return false;
      if(!models_.Equals(other.models_)) return false;
      if (!object.Equals(PhysicalConstants, other.PhysicalConstants)) return false;
      if(!conditions_.Equals(other.conditions_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (meta_ != null) hash ^= Meta.GetHashCode();
      hash ^= script_.GetHashCode();
      hash ^= localTransform_.GetHashCode();
      hash ^= localRate_.GetHashCode();
      hash ^= localAccel_.GetHashCode();
      hash ^= children_.GetHashCode();
      hash ^= referencedFiles_.GetHashCode();
      hash ^= embeddedFiles_.GetHashCode();
      hash ^= notes_.GetHashCode();
      hash ^= couplings_.GetHashCode();
      hash ^= models_.GetHashCode();
      if (physicalConstants_ != null) hash ^= PhysicalConstants.GetHashCode();
      hash ^= conditions_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (meta_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Meta);
      }
      script_.WriteTo(output, _repeated_script_codec);
      localTransform_.WriteTo(output, _repeated_localTransform_codec);
      localRate_.WriteTo(output, _repeated_localRate_codec);
      localAccel_.WriteTo(output, _repeated_localAccel_codec);
      children_.WriteTo(output, _repeated_children_codec);
      referencedFiles_.WriteTo(output, _repeated_referencedFiles_codec);
      embeddedFiles_.WriteTo(output, _repeated_embeddedFiles_codec);
      notes_.WriteTo(output, _repeated_notes_codec);
      couplings_.WriteTo(output, _repeated_couplings_codec);
      models_.WriteTo(output, _repeated_models_codec);
      if (physicalConstants_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(PhysicalConstants);
      }
      conditions_.WriteTo(output, _repeated_conditions_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (meta_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Meta);
      }
      script_.WriteTo(ref output, _repeated_script_codec);
      localTransform_.WriteTo(ref output, _repeated_localTransform_codec);
      localRate_.WriteTo(ref output, _repeated_localRate_codec);
      localAccel_.WriteTo(ref output, _repeated_localAccel_codec);
      children_.WriteTo(ref output, _repeated_children_codec);
      referencedFiles_.WriteTo(ref output, _repeated_referencedFiles_codec);
      embeddedFiles_.WriteTo(ref output, _repeated_embeddedFiles_codec);
      notes_.WriteTo(ref output, _repeated_notes_codec);
      couplings_.WriteTo(ref output, _repeated_couplings_codec);
      models_.WriteTo(ref output, _repeated_models_codec);
      if (physicalConstants_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(PhysicalConstants);
      }
      conditions_.WriteTo(ref output, _repeated_conditions_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (meta_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Meta);
      }
      size += script_.CalculateSize(_repeated_script_codec);
      size += localTransform_.CalculateSize(_repeated_localTransform_codec);
      size += localRate_.CalculateSize(_repeated_localRate_codec);
      size += localAccel_.CalculateSize(_repeated_localAccel_codec);
      size += children_.CalculateSize(_repeated_children_codec);
      size += referencedFiles_.CalculateSize(_repeated_referencedFiles_codec);
      size += embeddedFiles_.CalculateSize(_repeated_embeddedFiles_codec);
      size += notes_.CalculateSize(_repeated_notes_codec);
      size += couplings_.CalculateSize(_repeated_couplings_codec);
      size += models_.CalculateSize(_repeated_models_codec);
      if (physicalConstants_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(PhysicalConstants);
      }
      size += conditions_.CalculateSize(_repeated_conditions_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(System other) {
      if (other == null) {
        return;
      }
      if (other.meta_ != null) {
        if (meta_ == null) {
          Meta = new global::Messages.Meta();
        }
        Meta.MergeFrom(other.Meta);
      }
      script_.Add(other.script_);
      localTransform_.Add(other.localTransform_);
      localRate_.Add(other.localRate_);
      localAccel_.Add(other.localAccel_);
      children_.Add(other.children_);
      referencedFiles_.Add(other.referencedFiles_);
      embeddedFiles_.Add(other.embeddedFiles_);
      notes_.Add(other.notes_);
      couplings_.Add(other.couplings_);
      models_.Add(other.models_);
      if (other.physicalConstants_ != null) {
        if (physicalConstants_ == null) {
          PhysicalConstants = new global::Messages.Record64();
        }
        PhysicalConstants.MergeFrom(other.PhysicalConstants);
      }
      conditions_.Add(other.conditions_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (meta_ == null) {
              Meta = new global::Messages.Meta();
            }
            input.ReadMessage(Meta);
            break;
          }
          case 18: {
            script_.AddEntriesFrom(input, _repeated_script_codec);
            break;
          }
          case 26:
          case 25: {
            localTransform_.AddEntriesFrom(input, _repeated_localTransform_codec);
            break;
          }
          case 34:
          case 33: {
            localRate_.AddEntriesFrom(input, _repeated_localRate_codec);
            break;
          }
          case 42:
          case 41: {
            localAccel_.AddEntriesFrom(input, _repeated_localAccel_codec);
            break;
          }
          case 50: {
            children_.AddEntriesFrom(input, _repeated_children_codec);
            break;
          }
          case 58: {
            referencedFiles_.AddEntriesFrom(input, _repeated_referencedFiles_codec);
            break;
          }
          case 66: {
            embeddedFiles_.AddEntriesFrom(input, _repeated_embeddedFiles_codec);
            break;
          }
          case 74: {
            notes_.AddEntriesFrom(input, _repeated_notes_codec);
            break;
          }
          case 82: {
            couplings_.AddEntriesFrom(input, _repeated_couplings_codec);
            break;
          }
          case 90: {
            models_.AddEntriesFrom(input, _repeated_models_codec);
            break;
          }
          case 98: {
            if (physicalConstants_ == null) {
              PhysicalConstants = new global::Messages.Record64();
            }
            input.ReadMessage(PhysicalConstants);
            break;
          }
          case 106: {
            conditions_.AddEntriesFrom(input, _repeated_conditions_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (meta_ == null) {
              Meta = new global::Messages.Meta();
            }
            input.ReadMessage(Meta);
            break;
          }
          case 18: {
            script_.AddEntriesFrom(ref input, _repeated_script_codec);
            break;
          }
          case 26:
          case 25: {
            localTransform_.AddEntriesFrom(ref input, _repeated_localTransform_codec);
            break;
          }
          case 34:
          case 33: {
            localRate_.AddEntriesFrom(ref input, _repeated_localRate_codec);
            break;
          }
          case 42:
          case 41: {
            localAccel_.AddEntriesFrom(ref input, _repeated_localAccel_codec);
            break;
          }
          case 50: {
            children_.AddEntriesFrom(ref input, _repeated_children_codec);
            break;
          }
          case 58: {
            referencedFiles_.AddEntriesFrom(ref input, _repeated_referencedFiles_codec);
            break;
          }
          case 66: {
            embeddedFiles_.AddEntriesFrom(ref input, _repeated_embeddedFiles_codec);
            break;
          }
          case 74: {
            notes_.AddEntriesFrom(ref input, _repeated_notes_codec);
            break;
          }
          case 82: {
            couplings_.AddEntriesFrom(ref input, _repeated_couplings_codec);
            break;
          }
          case 90: {
            models_.AddEntriesFrom(ref input, _repeated_models_codec);
            break;
          }
          case 98: {
            if (physicalConstants_ == null) {
              PhysicalConstants = new global::Messages.Record64();
            }
            input.ReadMessage(PhysicalConstants);
            break;
          }
          case 106: {
            conditions_.AddEntriesFrom(ref input, _repeated_conditions_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code
