// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

syntax = "proto2";
import "f25.proto";
import "f5.proto";
package a260;
enum A322 {
  A323 = 0;
  A324 = 999;
  A325 = 1000;
  A326 = 1001;
  A327 = 1002;
  A328 = 1003;
  A329 = 1004;
  A330 = 1005;
  A331 = 1006;
  A332 = 1007;
  A333 = 1008;
  A334 = 1100;
  A335 = 1102;
  A336 = 1103;
  A337 = 1104;
  A338 = 1105;
  A339 = 1106;
  A340 = 1107;
  A341 = 1108;
  A342 = 1109;
  A343 = 1200;
  A344 = 1201;
  A345 = 1203;
  A346 = 1204;
  A347 = 1202;
  A348 = 1211;
  A349 = 1212;
  A350 = 1220;
  A351 = 1221;
  A352 = 1222;
  A353 = 1223;
  A354 = 1240;
  A355 = 1300;
  A356 = 1301;
  A357 = 1400;
  A358 = 1401;
  A359 = 1500;
  A360 = 1501;
  A361 = 1600;
  A362 = 1601;
  A363 = 1700;
  A364 = 1701;
  A365 = 1702;
  A366 = 1800;
  A367 = 1801;
  A368 = 1802;
  A369 = 1803;
  A370 = 1900;
  A371 = 1901;
  A372 = 2000;
  A373 = 2100;
  A374 = 2101;
  A375 = 2300;
  A376 = 2400;
  A377 = 2500;
  A378 = 2600;
  A379 = 2601;
  A380 = 2602;
  A381 = 2603;
  A382 = 9900;
  A383 = 9901;
  A384 = 9902;
  A385 = 9903;
  A386 = 9904;
  A387 = 9905;
};
message A388 {
  optional bool a293 = 1 [default = false];
  optional bool a294 = 2 [default = false];
  optional bool a295 = 3 [default = false];
  optional bool a296 = 4 [default = false];
  optional bool a297 = 5 [default = false];
  optional bool a298 = 6 [default = false];
  optional bool a15 = 7 [default = false];
  optional int32 a299 = 8;
  optional bool a300 = 9 [default = false];
  optional bool a301 = 10 [default = false];
  optional bool a302 = 11 [default = false];
  optional bool a303 = 13 [default = false];
  optional bool a304 = 12 [default = false];
};
message A389 {
  optional bool a300 = 1 [default = false];
  optional bool a305 = 2 [default = false];
};
enum A390 {
  A391 = 0;
  A392 = 1;
  A393 = 2;
  A394 = 3;
  A395 = 4;
  A396 = 5;
  A397 = 6;
  A398 = 7;
};
extend a10.A56 {
  optional A322 a306 = 40075780;
  optional A388 a307 = 40270992;
  optional A389 a308 = 69646961;
  optional A399 a309 = 40093572;
  optional A390 a310 = 40221563;
  repeated A308 a311 = 40223876;
};
extend a10.A57 {
  optional A322 a312 = 41149386;
  optional A388 a313 = 41551199;
  optional A389 a314 = 69646961;
  optional A58 a21 = 41744383;
  repeated A308 a315 = 41909987;
};
message A399 {
  repeated A322 a306 = 1;
};
message A58 {
  repeated A322 a306 = 1;
};
extend a10.A60 {
  optional bool a316 = 43601160;
  optional string a317 = 71304954;
};
