protos: Roll protos from infra/proto into chromite.

BUG=none
TEST=run_tests

Change-Id: Ia9859800f5e8ceb52a23689d8ec96948f2e9ff17
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3173653
Commit-Queue: Sean McAllister <smcallis@google.com>
Commit-Queue: Navil Perez <navil@google.com>
Tested-by: Sean McAllister <smcallis@google.com>
Auto-Submit: Sean McAllister <smcallis@google.com>
Reviewed-by: Navil Perez <navil@google.com>
diff --git a/api/gen/chromite/api/test_pb2.py b/api/gen/chromite/api/test_pb2.py
index 01e2e5f..f0828a8 100644
--- a/api/gen/chromite/api/test_pb2.py
+++ b/api/gen/chromite/api/test_pb2.py
@@ -15,6 +15,7 @@
 from chromite.api.gen.chromite.api import sysroot_pb2 as chromite_dot_api_dot_sysroot__pb2
 from chromite.api.gen.chromiumos import common_pb2 as chromiumos_dot_common__pb2
 from chromite.api.gen.chromiumos import metrics_pb2 as chromiumos_dot_metrics__pb2
+from chromite.api.gen.chromiumos import container_metadata_pb2 as chromiumos_dot_container__metadata__pb2
 from chromite.api.gen.chromiumos.test.api import coverage_rule_pb2 as chromiumos_dot_test_dot_api_dot_coverage__rule__pb2
 from chromite.api.gen.chromiumos.test.plan import source_test_plan_pb2 as chromiumos_dot_test_dot_plan_dot_source__test__plan__pb2
 
@@ -25,9 +26,9 @@
   syntax='proto3',
   serialized_options=b'Z6go.chromium.org/chromiumos/infra/proto/go/chromite/api',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x17\x63hromite/api/test.proto\x12\x0c\x63hromite.api\x1a\x1c\x63hromite/api/build_api.proto\x1a\x1a\x63hromite/api/sysroot.proto\x1a\x17\x63hromiumos/common.proto\x1a\x18\x63hromiumos/metrics.proto\x1a\'chromiumos/test/api/coverage_rule.proto\x1a+chromiumos/test/plan/source_test_plan.proto\"\x91\x02\n\x1fTestServiceContainerBuildResult\x12\x0c\n\x04name\x18\x01 \x01(\t\x12H\n\x07success\x18\x02 \x01(\x0b\x32\x35.chromite.api.TestServiceContainerBuildResult.SuccessH\x00\x12H\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32\x35.chromite.api.TestServiceContainerBuildResult.FailureH\x00\x1a \n\x07Success\x12\x15\n\rregistry_path\x18\x01 \x01(\t\x1a \n\x07\x46\x61ilure\x12\x15\n\rerror_message\x18\x01 \x01(\tB\x08\n\x06result\"\x87\x01\n!BuildTestServiceContainersRequest\x12-\n\x0c\x62uild_target\x18\x01 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\x12\x0f\n\x07version\x18\x03 \x01(\t\"d\n\"BuildTestServiceContainersResponse\x12>\n\x07results\x18\x01 \x03(\x0b\x32-.chromite.api.TestServiceContainerBuildResult\"\xc0\x03\n\x1a\x42uildTargetUnitTestRequest\x12-\n\x0c\x62uild_target\x18\x01 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x12\x13\n\x0bresult_path\x18\x02 \x01(\t\x12\"\n\x06\x63hroot\x18\x03 \x01(\x0b\x32\x12.chromiumos.Chroot\x12=\n\x05\x66lags\x18\x04 \x01(\x0b\x32..chromite.api.BuildTargetUnitTestRequest.Flags\x12)\n\x08packages\x18\x06 \x03(\x0b\x32\x17.chromiumos.PackageInfo\x12\x32\n\x11package_blocklist\x18\x07 \x03(\x0b\x32\x17.chromiumos.PackageInfo\x1a\x95\x01\n\x05\x46lags\x12\x15\n\rempty_sysroot\x18\x01 \x01(\x08\x12\x19\n\x11toolchain_changed\x18\x02 \x01(\x08\x12\x15\n\rcode_coverage\x18\x03 \x01(\x08\x12\"\n\x1atestable_packages_optional\x18\x04 \x01(\x08\x12\x1f\n\x17\x66ilter_only_cros_workon\x18\x05 \x01(\x08J\x04\x08\x05\x10\x06\"\x8e\x01\n\x1b\x42uildTargetUnitTestResponse\x12\x14\n\x0ctarball_path\x18\x01 \x01(\t\x12\x30\n\x0f\x66\x61iled_packages\x18\x02 \x03(\x0b\x32\x17.chromiumos.PackageInfo\x12\'\n\x06\x65vents\x18\x03 \x03(\x0b\x32\x17.chromiumos.MetricEvent\"=\n\x17\x43hromiteUnitTestRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x1a\n\x18\x43hromiteUnitTestResponse\";\n\x15\x43hromitePytestRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x18\n\x16\x43hromitePytestResponse\"<\n\x16\x43rosSigningTestRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x19\n\x17\x43rosSigningTestResponse\"b\n\x14\x44\x65\x62ugInfoTestRequest\x12&\n\x07sysroot\x18\x01 \x01(\x0b\x32\x15.chromite.api.Sysroot\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x17\n\x15\x44\x65\x62ugInfoTestResponse\"\xd2\x03\n\rVmTestRequest\x12-\n\x0c\x62uild_target\x18\x01 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\x12!\n\x07vm_path\x18\x03 \x01(\x0b\x32\x10.chromiumos.Path\x12;\n\x0bssh_options\x18\x04 \x01(\x0b\x32&.chromite.api.VmTestRequest.SshOptions\x12=\n\x0ctest_harness\x18\x05 \x01(\x0e\x32\'.chromite.api.VmTestRequest.TestHarness\x12\x34\n\x08vm_tests\x18\x06 \x03(\x0b\x32\".chromite.api.VmTestRequest.VmTest\x1a\x46\n\nSshOptions\x12*\n\x10private_key_path\x18\x01 \x01(\x0b\x32\x10.chromiumos.Path\x12\x0c\n\x04port\x18\x02 \x01(\x05\x1a\x19\n\x06VmTest\x12\x0f\n\x07pattern\x18\x01 \x01(\t\"6\n\x0bTestHarness\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x08\n\x04TAST\x10\x01\x12\x0c\n\x08\x41UTOTEST\x10\x02\"\x10\n\x0eVmTestResponse\"\xe9\x01\n\x13MoblabVmTestRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\x12@\n\rimage_payload\x18\x02 \x01(\x0b\x32).chromite.api.MoblabVmTestRequest.Payload\x12\x41\n\x0e\x63\x61\x63he_payloads\x18\x03 \x03(\x0b\x32).chromite.api.MoblabVmTestRequest.Payload\x1a)\n\x07Payload\x12\x1e\n\x04path\x18\x01 \x01(\x0b\x32\x10.chromiumos.Path\"\x16\n\x14MoblabVmTestResponse\"\x8b\x01\n\x1fSimpleChromeWorkflowTestRequest\x12&\n\x07sysroot\x18\x01 \x01(\x0b\x32\x15.chromite.api.Sysroot\x12\x13\n\x0b\x63hrome_root\x18\x02 \x01(\t\x12+\n\x0bgoma_config\x18\x03 \x01(\x0b\x32\x16.chromiumos.GomaConfig\"\"\n SimpleChromeWorkflowTestResponse\"\x87\x02\n\x17GetCoverageRulesRequest\x12\"\n\x06\x63hroot\x18\x05 \x01(\x0b\x32\x12.chromiumos.Chroot\x12?\n\x11source_test_plans\x18\x01 \x03(\x0b\x32$.chromiumos.test.plan.SourceTestPlan\x12-\n\x13\x62uild_metadata_list\x18\x02 \x01(\x0b\x32\x10.chromiumos.Path\x12,\n\x12\x64ut_attribute_list\x18\x03 \x01(\x0b\x32\x10.chromiumos.Path\x12*\n\x10\x66lat_config_list\x18\x04 \x01(\x0b\x32\x10.chromiumos.Path\"U\n\x18GetCoverageRulesResponse\x12\x39\n\x0e\x63overage_rules\x18\x01 \x03(\x0b\x32!.chromiumos.test.api.CoverageRule2\x9e\x08\n\x0bTestService\x12\x87\x01\n\x1a\x42uildTestServiceContainers\x12/.chromite.api.BuildTestServiceContainersRequest\x1a\x30.chromite.api.BuildTestServiceContainersResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x12r\n\x13\x42uildTargetUnitTest\x12(.chromite.api.BuildTargetUnitTestRequest\x1a).chromite.api.BuildTargetUnitTestResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x12\x61\n\x10\x43hromiteUnitTest\x12%.chromite.api.ChromiteUnitTestRequest\x1a&.chromite.api.ChromiteUnitTestResponse\x12[\n\x0e\x43hromitePytest\x12#.chromite.api.ChromitePytestRequest\x1a$.chromite.api.ChromitePytestResponse\x12^\n\x0f\x43rosSigningTest\x12$.chromite.api.CrosSigningTestRequest\x1a%.chromite.api.CrosSigningTestResponse\x12X\n\rDebugInfoTest\x12\".chromite.api.DebugInfoTestRequest\x1a#.chromite.api.DebugInfoTestResponse\x12\x43\n\x06VmTest\x12\x1b.chromite.api.VmTestRequest\x1a\x1c.chromite.api.VmTestResponse\x12]\n\x0cMoblabVmTest\x12!.chromite.api.MoblabVmTestRequest\x1a\".chromite.api.MoblabVmTestResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x12\x81\x01\n\x18SimpleChromeWorkflowTest\x12-.chromite.api.SimpleChromeWorkflowTestRequest\x1a..chromite.api.SimpleChromeWorkflowTestResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x12\x61\n\x10GetCoverageRules\x12%.chromite.api.GetCoverageRulesRequest\x1a&.chromite.api.GetCoverageRulesResponse\x1a\x0c\xc2\xed\x1a\x08\n\x04test\x10\x01\x42\x38Z6go.chromium.org/chromiumos/infra/proto/go/chromite/apib\x06proto3'
+  serialized_pb=b'\n\x17\x63hromite/api/test.proto\x12\x0c\x63hromite.api\x1a\x1c\x63hromite/api/build_api.proto\x1a\x1a\x63hromite/api/sysroot.proto\x1a\x17\x63hromiumos/common.proto\x1a\x18\x63hromiumos/metrics.proto\x1a#chromiumos/container_metadata.proto\x1a\'chromiumos/test/api/coverage_rule.proto\x1a+chromiumos/test/plan/source_test_plan.proto\"\xc0\x02\n\x1fTestServiceContainerBuildResult\x12\x0c\n\x04name\x18\x01 \x01(\t\x12H\n\x07success\x18\x02 \x01(\x0b\x32\x35.chromite.api.TestServiceContainerBuildResult.SuccessH\x00\x12H\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32\x35.chromite.api.TestServiceContainerBuildResult.FailureH\x00\x1aO\n\x07Success\x12\x15\n\rregistry_path\x18\x01 \x01(\t\x12-\n\x05image\x18\x02 \x01(\x0b\x32\x1e.chromiumos.ContainerImageInfo\x1a \n\x07\x46\x61ilure\x12\x15\n\rerror_message\x18\x01 \x01(\tB\x08\n\x06result\"\xc0\x02\n!BuildTestServiceContainersRequest\x12-\n\x0c\x62uild_target\x18\x01 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\x12\x0f\n\x07version\x18\x03 \x01(\t\x12-\n\nrepository\x18\x04 \x01(\x0b\x32\x19.chromiumos.GcrRepository\x12\x0c\n\x04tags\x18\x05 \x03(\t\x12K\n\x06labels\x18\x06 \x03(\x0b\x32;.chromite.api.BuildTestServiceContainersRequest.LabelsEntry\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"d\n\"BuildTestServiceContainersResponse\x12>\n\x07results\x18\x01 \x03(\x0b\x32-.chromite.api.TestServiceContainerBuildResult\"\xc0\x03\n\x1a\x42uildTargetUnitTestRequest\x12-\n\x0c\x62uild_target\x18\x01 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x12\x13\n\x0bresult_path\x18\x02 \x01(\t\x12\"\n\x06\x63hroot\x18\x03 \x01(\x0b\x32\x12.chromiumos.Chroot\x12=\n\x05\x66lags\x18\x04 \x01(\x0b\x32..chromite.api.BuildTargetUnitTestRequest.Flags\x12)\n\x08packages\x18\x06 \x03(\x0b\x32\x17.chromiumos.PackageInfo\x12\x32\n\x11package_blocklist\x18\x07 \x03(\x0b\x32\x17.chromiumos.PackageInfo\x1a\x95\x01\n\x05\x46lags\x12\x15\n\rempty_sysroot\x18\x01 \x01(\x08\x12\x19\n\x11toolchain_changed\x18\x02 \x01(\x08\x12\x15\n\rcode_coverage\x18\x03 \x01(\x08\x12\"\n\x1atestable_packages_optional\x18\x04 \x01(\x08\x12\x1f\n\x17\x66ilter_only_cros_workon\x18\x05 \x01(\x08J\x04\x08\x05\x10\x06\"\x8e\x01\n\x1b\x42uildTargetUnitTestResponse\x12\x14\n\x0ctarball_path\x18\x01 \x01(\t\x12\x30\n\x0f\x66\x61iled_packages\x18\x02 \x03(\x0b\x32\x17.chromiumos.PackageInfo\x12\'\n\x06\x65vents\x18\x03 \x03(\x0b\x32\x17.chromiumos.MetricEvent\"=\n\x17\x43hromiteUnitTestRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x1a\n\x18\x43hromiteUnitTestResponse\";\n\x15\x43hromitePytestRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x18\n\x16\x43hromitePytestResponse\"<\n\x16\x43rosSigningTestRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x19\n\x17\x43rosSigningTestResponse\"b\n\x14\x44\x65\x62ugInfoTestRequest\x12&\n\x07sysroot\x18\x01 \x01(\x0b\x32\x15.chromite.api.Sysroot\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x17\n\x15\x44\x65\x62ugInfoTestResponse\"\xd2\x03\n\rVmTestRequest\x12-\n\x0c\x62uild_target\x18\x01 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\x12!\n\x07vm_path\x18\x03 \x01(\x0b\x32\x10.chromiumos.Path\x12;\n\x0bssh_options\x18\x04 \x01(\x0b\x32&.chromite.api.VmTestRequest.SshOptions\x12=\n\x0ctest_harness\x18\x05 \x01(\x0e\x32\'.chromite.api.VmTestRequest.TestHarness\x12\x34\n\x08vm_tests\x18\x06 \x03(\x0b\x32\".chromite.api.VmTestRequest.VmTest\x1a\x46\n\nSshOptions\x12*\n\x10private_key_path\x18\x01 \x01(\x0b\x32\x10.chromiumos.Path\x12\x0c\n\x04port\x18\x02 \x01(\x05\x1a\x19\n\x06VmTest\x12\x0f\n\x07pattern\x18\x01 \x01(\t\"6\n\x0bTestHarness\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x08\n\x04TAST\x10\x01\x12\x0c\n\x08\x41UTOTEST\x10\x02\"\x10\n\x0eVmTestResponse\"\xe9\x01\n\x13MoblabVmTestRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\x12@\n\rimage_payload\x18\x02 \x01(\x0b\x32).chromite.api.MoblabVmTestRequest.Payload\x12\x41\n\x0e\x63\x61\x63he_payloads\x18\x03 \x03(\x0b\x32).chromite.api.MoblabVmTestRequest.Payload\x1a)\n\x07Payload\x12\x1e\n\x04path\x18\x01 \x01(\x0b\x32\x10.chromiumos.Path\"\x16\n\x14MoblabVmTestResponse\"\x8b\x01\n\x1fSimpleChromeWorkflowTestRequest\x12&\n\x07sysroot\x18\x01 \x01(\x0b\x32\x15.chromite.api.Sysroot\x12\x13\n\x0b\x63hrome_root\x18\x02 \x01(\t\x12+\n\x0bgoma_config\x18\x03 \x01(\x0b\x32\x16.chromiumos.GomaConfig\"\"\n SimpleChromeWorkflowTestResponse\"\x87\x02\n\x17GetCoverageRulesRequest\x12\"\n\x06\x63hroot\x18\x05 \x01(\x0b\x32\x12.chromiumos.Chroot\x12?\n\x11source_test_plans\x18\x01 \x03(\x0b\x32$.chromiumos.test.plan.SourceTestPlan\x12-\n\x13\x62uild_metadata_list\x18\x02 \x01(\x0b\x32\x10.chromiumos.Path\x12,\n\x12\x64ut_attribute_list\x18\x03 \x01(\x0b\x32\x10.chromiumos.Path\x12*\n\x10\x66lat_config_list\x18\x04 \x01(\x0b\x32\x10.chromiumos.Path\"U\n\x18GetCoverageRulesResponse\x12\x39\n\x0e\x63overage_rules\x18\x01 \x03(\x0b\x32!.chromiumos.test.api.CoverageRule2\x9e\x08\n\x0bTestService\x12\x87\x01\n\x1a\x42uildTestServiceContainers\x12/.chromite.api.BuildTestServiceContainersRequest\x1a\x30.chromite.api.BuildTestServiceContainersResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x12r\n\x13\x42uildTargetUnitTest\x12(.chromite.api.BuildTargetUnitTestRequest\x1a).chromite.api.BuildTargetUnitTestResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x12\x61\n\x10\x43hromiteUnitTest\x12%.chromite.api.ChromiteUnitTestRequest\x1a&.chromite.api.ChromiteUnitTestResponse\x12[\n\x0e\x43hromitePytest\x12#.chromite.api.ChromitePytestRequest\x1a$.chromite.api.ChromitePytestResponse\x12^\n\x0f\x43rosSigningTest\x12$.chromite.api.CrosSigningTestRequest\x1a%.chromite.api.CrosSigningTestResponse\x12X\n\rDebugInfoTest\x12\".chromite.api.DebugInfoTestRequest\x1a#.chromite.api.DebugInfoTestResponse\x12\x43\n\x06VmTest\x12\x1b.chromite.api.VmTestRequest\x1a\x1c.chromite.api.VmTestResponse\x12]\n\x0cMoblabVmTest\x12!.chromite.api.MoblabVmTestRequest\x1a\".chromite.api.MoblabVmTestResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x12\x81\x01\n\x18SimpleChromeWorkflowTest\x12-.chromite.api.SimpleChromeWorkflowTestRequest\x1a..chromite.api.SimpleChromeWorkflowTestResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x12\x61\n\x10GetCoverageRules\x12%.chromite.api.GetCoverageRulesRequest\x1a&.chromite.api.GetCoverageRulesResponse\x1a\x0c\xc2\xed\x1a\x08\n\x04test\x10\x01\x42\x38Z6go.chromium.org/chromiumos/infra/proto/go/chromite/apib\x06proto3'
   ,
-  dependencies=[chromite_dot_api_dot_build__api__pb2.DESCRIPTOR,chromite_dot_api_dot_sysroot__pb2.DESCRIPTOR,chromiumos_dot_common__pb2.DESCRIPTOR,chromiumos_dot_metrics__pb2.DESCRIPTOR,chromiumos_dot_test_dot_api_dot_coverage__rule__pb2.DESCRIPTOR,chromiumos_dot_test_dot_plan_dot_source__test__plan__pb2.DESCRIPTOR,])
+  dependencies=[chromite_dot_api_dot_build__api__pb2.DESCRIPTOR,chromite_dot_api_dot_sysroot__pb2.DESCRIPTOR,chromiumos_dot_common__pb2.DESCRIPTOR,chromiumos_dot_metrics__pb2.DESCRIPTOR,chromiumos_dot_container__metadata__pb2.DESCRIPTOR,chromiumos_dot_test_dot_api_dot_coverage__rule__pb2.DESCRIPTOR,chromiumos_dot_test_dot_plan_dot_source__test__plan__pb2.DESCRIPTOR,])
 
 
 
@@ -56,8 +57,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=2153,
-  serialized_end=2207,
+  serialized_start=2422,
+  serialized_end=2476,
 )
 _sym_db.RegisterEnumDescriptor(_VMTESTREQUEST_TESTHARNESS)
 
@@ -77,6 +78,13 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='image', full_name='chromite.api.TestServiceContainerBuildResult.Success.image', index=1,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -89,8 +97,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=434,
-  serialized_end=466,
+  serialized_start=471,
+  serialized_end=550,
 )
 
 _TESTSERVICECONTAINERBUILDRESULT_FAILURE = _descriptor.Descriptor(
@@ -120,8 +128,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=468,
-  serialized_end=500,
+  serialized_start=552,
+  serialized_end=584,
 )
 
 _TESTSERVICECONTAINERBUILDRESULT = _descriptor.Descriptor(
@@ -170,11 +178,49 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=237,
-  serialized_end=510,
+  serialized_start=274,
+  serialized_end=594,
 )
 
 
+_BUILDTESTSERVICECONTAINERSREQUEST_LABELSENTRY = _descriptor.Descriptor(
+  name='LabelsEntry',
+  full_name='chromite.api.BuildTestServiceContainersRequest.LabelsEntry',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='key', full_name='chromite.api.BuildTestServiceContainersRequest.LabelsEntry.key', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='value', full_name='chromite.api.BuildTestServiceContainersRequest.LabelsEntry.value', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=b'8\001',
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=872,
+  serialized_end=917,
+)
+
 _BUILDTESTSERVICECONTAINERSREQUEST = _descriptor.Descriptor(
   name='BuildTestServiceContainersRequest',
   full_name='chromite.api.BuildTestServiceContainersRequest',
@@ -204,10 +250,31 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='repository', full_name='chromite.api.BuildTestServiceContainersRequest.repository', index=3,
+      number=4, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='tags', full_name='chromite.api.BuildTestServiceContainersRequest.tags', index=4,
+      number=5, type=9, cpp_type=9, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='labels', full_name='chromite.api.BuildTestServiceContainersRequest.labels', index=5,
+      number=6, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
-  nested_types=[],
+  nested_types=[_BUILDTESTSERVICECONTAINERSREQUEST_LABELSENTRY, ],
   enum_types=[
   ],
   serialized_options=None,
@@ -216,8 +283,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=513,
-  serialized_end=648,
+  serialized_start=597,
+  serialized_end=917,
 )
 
 
@@ -248,8 +315,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=650,
-  serialized_end=750,
+  serialized_start=919,
+  serialized_end=1019,
 )
 
 
@@ -308,8 +375,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1046,
-  serialized_end=1195,
+  serialized_start=1315,
+  serialized_end=1464,
 )
 
 _BUILDTARGETUNITTESTREQUEST = _descriptor.Descriptor(
@@ -374,8 +441,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=753,
-  serialized_end=1201,
+  serialized_start=1022,
+  serialized_end=1470,
 )
 
 
@@ -420,8 +487,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1204,
-  serialized_end=1346,
+  serialized_start=1473,
+  serialized_end=1615,
 )
 
 
@@ -452,8 +519,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1348,
-  serialized_end=1409,
+  serialized_start=1617,
+  serialized_end=1678,
 )
 
 
@@ -477,8 +544,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1411,
-  serialized_end=1437,
+  serialized_start=1680,
+  serialized_end=1706,
 )
 
 
@@ -509,8 +576,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1439,
-  serialized_end=1498,
+  serialized_start=1708,
+  serialized_end=1767,
 )
 
 
@@ -534,8 +601,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1500,
-  serialized_end=1524,
+  serialized_start=1769,
+  serialized_end=1793,
 )
 
 
@@ -566,8 +633,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1526,
-  serialized_end=1586,
+  serialized_start=1795,
+  serialized_end=1855,
 )
 
 
@@ -591,8 +658,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1588,
-  serialized_end=1613,
+  serialized_start=1857,
+  serialized_end=1882,
 )
 
 
@@ -630,8 +697,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1615,
-  serialized_end=1713,
+  serialized_start=1884,
+  serialized_end=1982,
 )
 
 
@@ -655,8 +722,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1715,
-  serialized_end=1738,
+  serialized_start=1984,
+  serialized_end=2007,
 )
 
 
@@ -694,8 +761,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2054,
-  serialized_end=2124,
+  serialized_start=2323,
+  serialized_end=2393,
 )
 
 _VMTESTREQUEST_VMTEST = _descriptor.Descriptor(
@@ -725,8 +792,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2126,
-  serialized_end=2151,
+  serialized_start=2395,
+  serialized_end=2420,
 )
 
 _VMTESTREQUEST = _descriptor.Descriptor(
@@ -792,8 +859,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1741,
-  serialized_end=2207,
+  serialized_start=2010,
+  serialized_end=2476,
 )
 
 
@@ -817,8 +884,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2209,
-  serialized_end=2225,
+  serialized_start=2478,
+  serialized_end=2494,
 )
 
 
@@ -849,8 +916,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2420,
-  serialized_end=2461,
+  serialized_start=2689,
+  serialized_end=2730,
 )
 
 _MOBLABVMTESTREQUEST = _descriptor.Descriptor(
@@ -894,8 +961,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2228,
-  serialized_end=2461,
+  serialized_start=2497,
+  serialized_end=2730,
 )
 
 
@@ -919,8 +986,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2463,
-  serialized_end=2485,
+  serialized_start=2732,
+  serialized_end=2754,
 )
 
 
@@ -965,8 +1032,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2488,
-  serialized_end=2627,
+  serialized_start=2757,
+  serialized_end=2896,
 )
 
 
@@ -990,8 +1057,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2629,
-  serialized_end=2663,
+  serialized_start=2898,
+  serialized_end=2932,
 )
 
 
@@ -1050,8 +1117,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2666,
-  serialized_end=2929,
+  serialized_start=2935,
+  serialized_end=3198,
 )
 
 
@@ -1082,10 +1149,11 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2931,
-  serialized_end=3016,
+  serialized_start=3200,
+  serialized_end=3285,
 )
 
+_TESTSERVICECONTAINERBUILDRESULT_SUCCESS.fields_by_name['image'].message_type = chromiumos_dot_container__metadata__pb2._CONTAINERIMAGEINFO
 _TESTSERVICECONTAINERBUILDRESULT_SUCCESS.containing_type = _TESTSERVICECONTAINERBUILDRESULT
 _TESTSERVICECONTAINERBUILDRESULT_FAILURE.containing_type = _TESTSERVICECONTAINERBUILDRESULT
 _TESTSERVICECONTAINERBUILDRESULT.fields_by_name['success'].message_type = _TESTSERVICECONTAINERBUILDRESULT_SUCCESS
@@ -1096,8 +1164,11 @@
 _TESTSERVICECONTAINERBUILDRESULT.oneofs_by_name['result'].fields.append(
   _TESTSERVICECONTAINERBUILDRESULT.fields_by_name['failure'])
 _TESTSERVICECONTAINERBUILDRESULT.fields_by_name['failure'].containing_oneof = _TESTSERVICECONTAINERBUILDRESULT.oneofs_by_name['result']
+_BUILDTESTSERVICECONTAINERSREQUEST_LABELSENTRY.containing_type = _BUILDTESTSERVICECONTAINERSREQUEST
 _BUILDTESTSERVICECONTAINERSREQUEST.fields_by_name['build_target'].message_type = chromiumos_dot_common__pb2._BUILDTARGET
 _BUILDTESTSERVICECONTAINERSREQUEST.fields_by_name['chroot'].message_type = chromiumos_dot_common__pb2._CHROOT
+_BUILDTESTSERVICECONTAINERSREQUEST.fields_by_name['repository'].message_type = chromiumos_dot_container__metadata__pb2._GCRREPOSITORY
+_BUILDTESTSERVICECONTAINERSREQUEST.fields_by_name['labels'].message_type = _BUILDTESTSERVICECONTAINERSREQUEST_LABELSENTRY
 _BUILDTESTSERVICECONTAINERSRESPONSE.fields_by_name['results'].message_type = _TESTSERVICECONTAINERBUILDRESULT
 _BUILDTARGETUNITTESTREQUEST_FLAGS.containing_type = _BUILDTARGETUNITTESTREQUEST
 _BUILDTARGETUNITTESTREQUEST.fields_by_name['build_target'].message_type = chromiumos_dot_common__pb2._BUILDTARGET
@@ -1182,11 +1253,19 @@
 _sym_db.RegisterMessage(TestServiceContainerBuildResult.Failure)
 
 BuildTestServiceContainersRequest = _reflection.GeneratedProtocolMessageType('BuildTestServiceContainersRequest', (_message.Message,), {
+
+  'LabelsEntry' : _reflection.GeneratedProtocolMessageType('LabelsEntry', (_message.Message,), {
+    'DESCRIPTOR' : _BUILDTESTSERVICECONTAINERSREQUEST_LABELSENTRY,
+    '__module__' : 'chromite.api.test_pb2'
+    # @@protoc_insertion_point(class_scope:chromite.api.BuildTestServiceContainersRequest.LabelsEntry)
+    })
+  ,
   'DESCRIPTOR' : _BUILDTESTSERVICECONTAINERSREQUEST,
   '__module__' : 'chromite.api.test_pb2'
   # @@protoc_insertion_point(class_scope:chromite.api.BuildTestServiceContainersRequest)
   })
 _sym_db.RegisterMessage(BuildTestServiceContainersRequest)
+_sym_db.RegisterMessage(BuildTestServiceContainersRequest.LabelsEntry)
 
 BuildTestServiceContainersResponse = _reflection.GeneratedProtocolMessageType('BuildTestServiceContainersResponse', (_message.Message,), {
   'DESCRIPTOR' : _BUILDTESTSERVICECONTAINERSRESPONSE,
@@ -1355,6 +1434,7 @@
 
 
 DESCRIPTOR._options = None
+_BUILDTESTSERVICECONTAINERSREQUEST_LABELSENTRY._options = None
 
 _TESTSERVICE = _descriptor.ServiceDescriptor(
   name='TestService',
@@ -1363,8 +1443,8 @@
   index=0,
   serialized_options=b'\302\355\032\010\n\004test\020\001',
   create_key=_descriptor._internal_create_key,
-  serialized_start=3019,
-  serialized_end=4073,
+  serialized_start=3288,
+  serialized_end=4342,
   methods=[
   _descriptor.MethodDescriptor(
     name='BuildTestServiceContainers',
diff --git a/api/gen/chromiumos/common_pb2.py b/api/gen/chromiumos/common_pb2.py
index f2528fb..c1adc44 100644
--- a/api/gen/chromiumos/common_pb2.py
+++ b/api/gen/chromiumos/common_pb2.py
@@ -20,7 +20,7 @@
   syntax='proto3',
   serialized_options=b'\n!com.google.chrome.crosinfra.protoZ4go.chromium.org/chromiumos/infra/proto/go/chromiumos',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x17\x63hromiumos/common.proto\x12\nchromiumos\"\x1b\n\x0b\x42uildTarget\x12\x0c\n\x04name\x18\x01 \x01(\t\"\xd0\x01\n\x06\x43hroot\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x11\n\tcache_dir\x18\x02 \x01(\t\x12)\n\x03\x65nv\x18\x03 \x01(\x0b\x32\x1c.chromiumos.Chroot.ChrootEnv\x12\x12\n\nchrome_dir\x18\x04 \x01(\t\x1aZ\n\tChrootEnv\x12&\n\tuse_flags\x18\x01 \x03(\x0b\x32\x13.chromiumos.UseFlag\x12%\n\x08\x66\x65\x61tures\x18\x02 \x03(\x0b\x32\x13.chromiumos.FeatureJ\x04\x08\x05\x10\x06R\x04goma\"\x1a\n\x07\x46\x65\x61ture\x12\x0f\n\x07\x66\x65\x61ture\x18\x01 \x01(\t\"\xcf\x02\n\nGomaConfig\x12\x10\n\x08goma_dir\x18\x01 \x01(\t\x12\x18\n\x10goma_client_json\x18\x02 \x01(\t\x12\x19\n\x11\x63hromeos_goma_dir\x18\x03 \x01(\t\x12:\n\rgoma_approach\x18\x04 \x01(\x0e\x32#.chromiumos.GomaConfig.GomaApproach\x12&\n\x07log_dir\x18\x05 \x01(\x0b\x32\x15.chromiumos.SyncedDir\x12\x12\n\nstats_file\x18\x06 \x01(\t\x12\x15\n\rcounterz_file\x18\x07 \x01(\t\"k\n\x0cGomaApproach\x12\x1d\n\x19GOMA_APPROACH_UNSPECIFIED\x10\x00\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x01\x12\x0c\n\x08RBE_PROD\x10\x02\x12\x0f\n\x0bRBE_STAGING\x10\x03\x12\x10\n\x0cRBE_CHROMEOS\x10\x04\"M\n\rGomaArtifacts\x12\x12\n\nstats_file\x18\x01 \x01(\t\x12\x15\n\rcounterz_file\x18\x02 \x01(\t\x12\x11\n\tlog_files\x18\x03 \x03(\t\"F\n\x0bPackageInfo\x12\x14\n\x0cpackage_name\x18\x01 \x01(\t\x12\x10\n\x08\x63\x61tegory\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\"\x17\n\x07Profile\x12\x0c\n\x04name\x18\x01 \x01(\t\"\xa8\x01\n\x10PackageIndexInfo\x12\x14\n\x0csnapshot_sha\x18\x01 \x01(\t\x12\x17\n\x0fsnapshot_number\x18\x02 \x01(\x05\x12-\n\x0c\x62uild_target\x18\x03 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x12\x10\n\x08location\x18\x04 \x01(\t\x12$\n\x07profile\x18\x05 \x01(\x0b\x32\x13.chromiumos.Profile\"w\n\x04Path\x12\x0c\n\x04path\x18\x01 \x01(\t\x12+\n\x08location\x18\x02 \x01(\x0e\x32\x19.chromiumos.Path.Location\"4\n\x08Location\x12\x0f\n\x0bNO_LOCATION\x10\x00\x12\n\n\x06INSIDE\x10\x01\x12\x0b\n\x07OUTSIDE\x10\x02\",\n\nResultPath\x12\x1e\n\x04path\x18\x01 \x01(\x0b\x32\x10.chromiumos.Path\"\x18\n\tSyncedDir\x12\x0b\n\x03\x64ir\x18\x01 \x01(\t\"O\n\x0cGerritChange\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63hange\x18\x03 \x01(\x03\x12\x10\n\x08patchset\x18\x04 \x01(\x03\"Y\n\rGitilesCommit\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x0b\n\x03ref\x18\x04 \x01(\t\x12\x10\n\x08position\x18\x05 \x01(\r\"\x17\n\x07UseFlag\x12\x0c\n\x04\x66lag\x18\x01 \x01(\t\"\xb8\x02\n\x0eReleaseBuilder\x12\x39\n\tmilestone\x18\x01 \x01(\x0b\x32$.chromiumos.ReleaseBuilder.MilestoneH\x00\x12\x16\n\x0e\x62uild_schedule\x18\x02 \x01(\t\x12\x38\n\x0f\x65xpiration_date\x18\x03 \x01(\x0b\x32\x1f.chromiumos.ReleaseBuilder.Date\x1a\x15\n\x04\x44\x61te\x12\r\n\x05value\x18\x01 \x01(\t\x1am\n\tMilestone\x12\x0e\n\x06number\x18\x01 \x01(\x05\x12;\n\x12target_branch_date\x18\x02 \x01(\x0b\x32\x1f.chromiumos.ReleaseBuilder.Date\x12\x13\n\x0b\x62ranch_name\x18\x03 \x01(\tB\x13\n\x11milestone_message\"?\n\x0fReleaseBuilders\x12,\n\x08\x62uilders\x18\x01 \x03(\x0b\x32\x1a.chromiumos.ReleaseBuilder\"\xf4\x01\n\x0fReleaseChannels\x12J\n\x10release_channels\x18\x01 \x03(\x0b\x32\x30.chromiumos.ReleaseChannels.ReleaseChannelsEntry\x1a\x34\n\x0b\x43hannelList\x12%\n\x08\x63hannels\x18\x01 \x03(\x0e\x32\x13.chromiumos.Channel\x1a_\n\x14ReleaseChannelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\x36\n\x05value\x18\x02 \x01(\x0b\x32\'.chromiumos.ReleaseChannels.ChannelList:\x02\x38\x01\"&\n\nProtoBytes\x12\x18\n\x10serialized_proto\x18\x01 \x01(\x0c\"q\n\x1dPrepareForBuildAdditionalArgs\x12\x1c\n\x12\x63hrome_cwp_profile\x18\x01 \x01(\tH\x00\x12\x18\n\x0ekernel_version\x18\x02 \x01(\tH\x00\x42\x18\n\x16prepare_for_build_args\"A\n\x0b\x41\x66\x64oRelease\x12\x1a\n\x12\x63hrome_cwp_profile\x18\x01 \x01(\t\x12\x16\n\x0eimage_build_id\x18\x02 \x01(\x03\"\x97\x01\n\x13\x41rtifactProfileInfo\x12\x1c\n\x12\x63hrome_cwp_profile\x18\x01 \x01(\tH\x00\x12\x18\n\x0ekernel_version\x18\x02 \x01(\tH\x00\x12/\n\x0c\x61\x66\x64o_release\x18\x03 \x01(\x0b\x32\x17.chromiumos.AfdoReleaseH\x00\x42\x17\n\x15\x61rtifact_profile_info\"\xbe+\n\x12\x41rtifactsByService\x12\x35\n\x06legacy\x18\x01 \x01(\x0b\x32%.chromiumos.ArtifactsByService.Legacy\x12;\n\ttoolchain\x18\x02 \x01(\x0b\x32(.chromiumos.ArtifactsByService.Toolchain\x12\x33\n\x05image\x18\x03 \x01(\x0b\x32$.chromiumos.ArtifactsByService.Image\x12\x37\n\x07package\x18\x04 \x01(\x0b\x32&.chromiumos.ArtifactsByService.Package\x12\x37\n\x07sysroot\x18\x05 \x01(\x0b\x32&.chromiumos.ArtifactsByService.Sysroot\x12\x31\n\x04test\x18\x06 \x01(\x0b\x32#.chromiumos.ArtifactsByService.Test\x12\x35\n\x0cprofile_info\x18\x07 \x01(\x0b\x32\x1f.chromiumos.ArtifactProfileInfo\x12\x39\n\x08\x66irmware\x18\x08 \x01(\x0b\x32\'.chromiumos.ArtifactsByService.Firmware\x12\x33\n\x05infra\x18\t \x01(\x0b\x32$.chromiumos.ArtifactsByService.Infra\x1a\xb0\x01\n\x16\x43odeCoverageUploadInfo\x12]\n\rcoverage_type\x18\x01 \x01(\x0e\x32\x46.chromiumos.ArtifactsByService.CodeCoverageUploadInfo.CodeCoverageType\"7\n\x10\x43odeCoverageType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x08\n\x04LLVM\x10\x01\x12\x08\n\x04LCOV\x10\x02\x1a\xb2\x05\n\x06Legacy\x12K\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x32.chromiumos.ArtifactsByService.Legacy.ArtifactInfo\x12L\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x32.chromiumos.ArtifactsByService.Legacy.ArtifactInfo\x1a\xe2\x01\n\x0c\x41rtifactInfo\x12J\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x32.chromiumos.ArtifactsByService.Legacy.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishConditionJ\x04\x08\x03\x10\x04R\x0cprofile_info\"\xa7\x02\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\r\n\tIMAGE_ZIP\x10\x01\x12\x17\n\x13TEST_UPDATE_PAYLOAD\x10\x02\x12\x12\n\x0e\x41UTOTEST_FILES\x10\x03\x12\x0e\n\nTAST_FILES\x10\x04\x12\x17\n\x13PINNED_GUEST_IMAGES\x10\x05\x12\x0c\n\x08\x46IRMWARE\x10\x06\x12\x0f\n\x0b\x45\x42UILD_LOGS\x10\x07\x12\x13\n\x0f\x43HROMEOS_CONFIG\x10\x08\x12\x0e\n\nCPE_REPORT\x10\t\x12\x12\n\x0eIMAGE_ARCHIVES\x10\n\x12\x13\n\x0f\x46PMCU_UNITTESTS\x10\x1b\x12\x0f\n\x0bGCE_TARBALL\x10\x1c\x12\x11\n\rDEBUG_SYMBOLS\x10 \"\x04\x08\x0b\x10\x1a\"\x04\x08\x1d\x10\x1f\"\x04\x08!\x10+\x1a\xff\x07\n\tToolchain\x12N\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x35.chromiumos.ArtifactsByService.Toolchain.ArtifactInfo\x12O\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x35.chromiumos.ArtifactsByService.Toolchain.ArtifactInfo\x1a\xd1\x01\n\x0c\x41rtifactInfo\x12M\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x35.chromiumos.ArtifactsByService.Toolchain.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"\xfc\x04\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12$\n UNVERIFIED_CHROME_LLVM_ORDERFILE\x10\x0b\x12\"\n\x1eVERIFIED_CHROME_LLVM_ORDERFILE\x10\x0c\x12\x1e\n\x1a\x43HROME_CLANG_WARNINGS_FILE\x10\r\x12\x1c\n\x18UNVERIFIED_LLVM_PGO_FILE\x10\x0e\x12)\n%UNVERIFIED_CHROME_BENCHMARK_AFDO_FILE\x10\x0f\x12\'\n#VERIFIED_CHROME_BENCHMARK_AFDO_FILE\x10\x10\x12!\n\x1dVERIFIED_KERNEL_CWP_AFDO_FILE\x10\x11\x12#\n\x1fUNVERIFIED_KERNEL_CWP_AFDO_FILE\x10\x12\x12#\n\x1fUNVERIFIED_CHROME_CWP_AFDO_FILE\x10\x13\x12!\n\x1dVERIFIED_CHROME_CWP_AFDO_FILE\x10\x14\x12\x1e\n\x1aVERIFIED_RELEASE_AFDO_FILE\x10\x15\x12)\n%UNVERIFIED_CHROME_BENCHMARK_PERF_FILE\x10\x16\x12\x17\n\x13\x43HROME_DEBUG_BINARY\x10\x17\x12\x1a\n\x16TOOLCHAIN_WARNING_LOGS\x10\x18\x12)\n%CHROME_AFDO_PROFILE_FOR_ANDROID_LINUX\x10\x19\x12\x19\n\x15\x43LANG_CRASH_DIAGNOSES\x10\x1a\x12\x17\n\x13\x43OMPILER_RUSAGE_LOG\x10\x1d\"\x04\x08\x01\x10\n\"\x04\x08\x1b\x10\x1c\"\x04\x08\x1e\x10+\x1a\xda\x03\n\x05Image\x12J\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x31.chromiumos.ArtifactsByService.Image.ArtifactInfo\x12K\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x31.chromiumos.ArtifactsByService.Image.ArtifactInfo\x1a\xcd\x01\n\x0c\x41rtifactInfo\x12I\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x31.chromiumos.ArtifactsByService.Image.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"h\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\r\n\tDLC_IMAGE\x10\"\x12\x13\n\x0fLICENSE_CREDITS\x10&\x12\x11\n\rFACTORY_IMAGE\x10+\"\x04\x08\x01\x10!\"\x04\x08#\x10%\"\x04\x08\'\x10*\x1a\x9f\x03\n\x07Package\x12L\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x33.chromiumos.ArtifactsByService.Package.ArtifactInfo\x12M\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x33.chromiumos.ArtifactsByService.Package.ArtifactInfo\x1a\xcf\x01\n\x0c\x41rtifactInfo\x12K\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x33.chromiumos.ArtifactsByService.Package.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"%\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\"\x04\x08\x01\x10+\x1a\x8d\x04\n\x07Sysroot\x12L\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x33.chromiumos.ArtifactsByService.Sysroot.ArtifactInfo\x12M\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x33.chromiumos.ArtifactsByService.Sysroot.ArtifactInfo\x1a\xcf\x01\n\x0c\x41rtifactInfo\x12K\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x33.chromiumos.ArtifactsByService.Sysroot.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"\x92\x01\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x11\n\rDEBUG_SYMBOLS\x10 \x12\x1a\n\x16\x42REAKPAD_DEBUG_SYMBOLS\x10#\x12\x19\n\x15SIMPLE_CHROME_SYSROOT\x10(\x12\x15\n\x11\x43HROME_EBUILD_ENV\x10)\"\x04\x08\x01\x10\x1f\"\x04\x08!\x10\"\"\x04\x08$\x10\'\x1a\xb2\x04\n\x04Test\x12I\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x30.chromiumos.ArtifactsByService.Test.ArtifactInfo\x12J\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x30.chromiumos.ArtifactsByService.Test.ArtifactInfo\x1a\xa6\x02\n\x0c\x41rtifactInfo\x12H\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x30.chromiumos.ArtifactsByService.Test.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\x12X\n\x19\x63ode_coverage_upload_info\x18\x06 \x01(\x0b\x32\x35.chromiumos.ArtifactsByService.CodeCoverageUploadInfo\"j\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0e\n\nUNIT_TESTS\x10%\x12\x1b\n\x17\x43ODE_COVERAGE_LLVM_JSON\x10\'\x12\n\n\x06HWQUAL\x10*\"\x04\x08\x01\x10$\"\x04\x08&\x10&\"\x04\x08(\x10)\x1a\xf7\x04\n\x08\x46irmware\x12M\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x34.chromiumos.ArtifactsByService.Firmware.ArtifactInfo\x12N\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x34.chromiumos.ArtifactsByService.Firmware.ArtifactInfo\x1a\xd4\x02\n\x0c\x41rtifactInfo\x12L\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x34.chromiumos.ArtifactsByService.Firmware.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\x12(\n\x08location\x18\x06 \x01(\x0e\x32\x16.chromiumos.FwLocation\x12X\n\x19\x63ode_coverage_upload_info\x18\x07 \x01(\x0b\x32\x35.chromiumos.ArtifactsByService.CodeCoverageUploadInfo\"u\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x14\n\x10\x46IRMWARE_TARBALL\x10\x1e\x12\x19\n\x15\x46IRMWARE_TARBALL_INFO\x10\x1f\x12\x11\n\rFIRMWARE_LCOV\x10!\"\x04\x08\x01\x10\x1d\"\x04\x08 \x10 \"\x04\x08\"\x10+\x1a\xb1\x03\n\x05Infra\x12J\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x31.chromiumos.ArtifactsByService.Infra.ArtifactInfo\x12K\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x31.chromiumos.ArtifactsByService.Infra.ArtifactInfo\x1a\xcd\x01\n\x0c\x41rtifactInfo\x12I\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x31.chromiumos.ArtifactsByService.Infra.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"?\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x12\n\x0e\x42UILD_MANIFEST\x10$\"\x04\x08\x01\x10#\"\x04\x08%\x10+\"W\n\x10PublishCondition\x12\x17\n\x13PUBLISH_UNSPECIFIED\x10\x00\x12\x16\n\x12PUBLISH_ON_SUCCESS\x10\x01\x12\x12\n\x0ePUBLISH_ALWAYS\x10\x02\"\x8e\x12\n\x1aUploadedArtifactsByService\x12=\n\x06legacy\x18\x01 \x01(\x0b\x32-.chromiumos.UploadedArtifactsByService.Legacy\x12\x43\n\ttoolchain\x18\x02 \x01(\x0b\x32\x30.chromiumos.UploadedArtifactsByService.Toolchain\x12;\n\x05image\x18\x03 \x01(\x0b\x32,.chromiumos.UploadedArtifactsByService.Image\x12?\n\x07package\x18\x04 \x01(\x0b\x32..chromiumos.UploadedArtifactsByService.Package\x12?\n\x07sysroot\x18\x05 \x01(\x0b\x32..chromiumos.UploadedArtifactsByService.Sysroot\x12\x39\n\x04test\x18\x06 \x01(\x0b\x32+.chromiumos.UploadedArtifactsByService.Test\x12\x41\n\x08\x66irmware\x18\x07 \x01(\x0b\x32/.chromiumos.UploadedArtifactsByService.Firmware\x12;\n\x05infra\x18\x08 \x01(\x0b\x32,.chromiumos.UploadedArtifactsByService.Infra\x1a\xd5\x01\n\x06Legacy\x12N\n\tartifacts\x18\x01 \x03(\x0b\x32;.chromiumos.UploadedArtifactsByService.Legacy.ArtifactPaths\x1a{\n\rArtifactPaths\x12I\n\rartifact_type\x18\x01 \x01(\x0e\x32\x32.chromiumos.ArtifactsByService.Legacy.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xde\x01\n\tToolchain\x12Q\n\tartifacts\x18\x01 \x03(\x0b\x32>.chromiumos.UploadedArtifactsByService.Toolchain.ArtifactPaths\x1a~\n\rArtifactPaths\x12L\n\rartifact_type\x18\x01 \x01(\x0e\x32\x35.chromiumos.ArtifactsByService.Toolchain.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xd2\x01\n\x05Image\x12M\n\tartifacts\x18\x01 \x03(\x0b\x32:.chromiumos.UploadedArtifactsByService.Image.ArtifactPaths\x1az\n\rArtifactPaths\x12H\n\rartifact_type\x18\x01 \x01(\x0e\x32\x31.chromiumos.ArtifactsByService.Image.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xd8\x01\n\x07Package\x12O\n\tartifacts\x18\x01 \x03(\x0b\x32<.chromiumos.UploadedArtifactsByService.Package.ArtifactPaths\x1a|\n\rArtifactPaths\x12J\n\rartifact_type\x18\x01 \x01(\x0e\x32\x33.chromiumos.ArtifactsByService.Package.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xd8\x01\n\x07Sysroot\x12O\n\tartifacts\x18\x01 \x03(\x0b\x32<.chromiumos.UploadedArtifactsByService.Sysroot.ArtifactPaths\x1a|\n\rArtifactPaths\x12J\n\rartifact_type\x18\x01 \x01(\x0e\x32\x33.chromiumos.ArtifactsByService.Sysroot.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xcf\x01\n\x04Test\x12L\n\tartifacts\x18\x01 \x03(\x0b\x32\x39.chromiumos.UploadedArtifactsByService.Test.ArtifactPaths\x1ay\n\rArtifactPaths\x12G\n\rartifact_type\x18\x01 \x01(\x0e\x32\x30.chromiumos.ArtifactsByService.Test.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\x86\x02\n\x08\x46irmware\x12P\n\tartifacts\x18\x01 \x03(\x0b\x32=.chromiumos.UploadedArtifactsByService.Firmware.ArtifactPaths\x1a\xa7\x01\n\rArtifactPaths\x12K\n\rartifact_type\x18\x01 \x01(\x0e\x32\x34.chromiumos.ArtifactsByService.Firmware.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x12(\n\x08location\x18\x03 \x01(\x0e\x32\x16.chromiumos.FwLocation\x1a\xd2\x01\n\x05Infra\x12M\n\tartifacts\x18\x01 \x03(\x0b\x32:.chromiumos.UploadedArtifactsByService.Infra.ArtifactPaths\x1az\n\rArtifactPaths\x12H\n\rartifact_type\x18\x01 \x01(\x0e\x32\x31.chromiumos.ArtifactsByService.Infra.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path*\xca\x04\n\tImageType\x12\x18\n\x14IMAGE_TYPE_UNDEFINED\x10\x00\x12\x13\n\x0fIMAGE_TYPE_BASE\x10\x01\x12\x12\n\x0eIMAGE_TYPE_DEV\x10\x02\x12\x13\n\x0fIMAGE_TYPE_TEST\x10\x03\x12\x16\n\x12IMAGE_TYPE_BASE_VM\x10\x04\x12\x16\n\x12IMAGE_TYPE_TEST_VM\x10\x05\x12\x17\n\x13IMAGE_TYPE_RECOVERY\x10\x06\x12\x16\n\x12IMAGE_TYPE_FACTORY\x10\x07\x12\x17\n\x13IMAGE_TYPE_FIRMWARE\x10\x08\x12\x1c\n\x18IMAGE_TYPE_CR50_FIRMWARE\x10\t\x12\x1c\n\x18IMAGE_TYPE_BASE_GUEST_VM\x10\n\x12\x1c\n\x18IMAGE_TYPE_TEST_GUEST_VM\x10\x0b\x12\x12\n\x0eIMAGE_TYPE_DLC\x10\x0c\x12\x1b\n\x17IMAGE_TYPE_GSC_FIRMWARE\x10\r\x12\x1e\n\x1aIMAGE_TYPE_ACCESSORY_USBPD\x10\x0e\x12\x1e\n\x1aIMAGE_TYPE_ACCESSORY_RWSIG\x10\x0f*\x04\x42\x41SE*\x04TEST*\x03\x44\x45V*\x07\x42\x41SE_VM*\x07TEST_VM*\x08RECOVERY*\x07\x46\x41\x43TORY*\x08\x46IRMWARE*\rCR50_FIRMWARE*\rBASE_GUEST_VM*\rTEST_GUEST_VM*\x03\x44LC*\x0cGSC_FIRMWARE*\x0f\x41\x43\x43\x45SSORY_USBPD*\x0f\x41\x43\x43\x45SSORY_RWSIG*m\n\x07\x43hannel\x12\x17\n\x13\x43HANNEL_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x43HANNEL_STABLE\x10\x01\x12\x10\n\x0c\x43HANNEL_BETA\x10\x02\x12\x0f\n\x0b\x43HANNEL_DEV\x10\x03\x12\x12\n\x0e\x43HANNEL_CANARY\x10\x04*l\n\tDeltaType\x12\x11\n\rDELTA_UNKNOWN\x10\x00\x12\x0c\n\x08NO_DELTA\x10\x01\x12\x07\n\x03\x46SI\x10\x02\x12\r\n\tMILESTONE\x10\x03\x12\t\n\x05OMAHA\x10\x04\x12\x12\n\x0eSTEPPING_STONE\x10\x05\x12\x07\n\x03N2N\x10\x06*^\n\nFwLocation\x12\x17\n\x13\x46W_LOCATION_UNKNOWN\x10\x00\x12\x0f\n\x0bPLATFORM_EC\x10\x01\x12\x13\n\x0fPLATFORM_ZEPHYR\x10\x02\x12\x11\n\rPLATFORM_TI50\x10\x03*f\n\x10\x41\x46\x44OArtifactType\x12\r\n\tNONE_TYPE\x10\x00\x12\r\n\tORDERFILE\x10\x01\x12\x12\n\x0e\x42\x45NCHMARK_AFDO\x10\x02\x12\x0f\n\x0bKERNEL_AFDO\x10\x03\x12\x0f\n\x0b\x43HROME_AFDO\x10\x04\x42Y\n!com.google.chrome.crosinfra.protoZ4go.chromium.org/chromiumos/infra/proto/go/chromiumosb\x06proto3'
+  serialized_pb=b'\n\x17\x63hromiumos/common.proto\x12\nchromiumos\"\x1b\n\x0b\x42uildTarget\x12\x0c\n\x04name\x18\x01 \x01(\t\"\'\n\x07GcsPath\x12\x0e\n\x06\x62ucket\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"\xd0\x01\n\x06\x43hroot\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x11\n\tcache_dir\x18\x02 \x01(\t\x12)\n\x03\x65nv\x18\x03 \x01(\x0b\x32\x1c.chromiumos.Chroot.ChrootEnv\x12\x12\n\nchrome_dir\x18\x04 \x01(\t\x1aZ\n\tChrootEnv\x12&\n\tuse_flags\x18\x01 \x03(\x0b\x32\x13.chromiumos.UseFlag\x12%\n\x08\x66\x65\x61tures\x18\x02 \x03(\x0b\x32\x13.chromiumos.FeatureJ\x04\x08\x05\x10\x06R\x04goma\"\x1a\n\x07\x46\x65\x61ture\x12\x0f\n\x07\x66\x65\x61ture\x18\x01 \x01(\t\"\xcf\x02\n\nGomaConfig\x12\x10\n\x08goma_dir\x18\x01 \x01(\t\x12\x18\n\x10goma_client_json\x18\x02 \x01(\t\x12\x19\n\x11\x63hromeos_goma_dir\x18\x03 \x01(\t\x12:\n\rgoma_approach\x18\x04 \x01(\x0e\x32#.chromiumos.GomaConfig.GomaApproach\x12&\n\x07log_dir\x18\x05 \x01(\x0b\x32\x15.chromiumos.SyncedDir\x12\x12\n\nstats_file\x18\x06 \x01(\t\x12\x15\n\rcounterz_file\x18\x07 \x01(\t\"k\n\x0cGomaApproach\x12\x1d\n\x19GOMA_APPROACH_UNSPECIFIED\x10\x00\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x01\x12\x0c\n\x08RBE_PROD\x10\x02\x12\x0f\n\x0bRBE_STAGING\x10\x03\x12\x10\n\x0cRBE_CHROMEOS\x10\x04\"M\n\rGomaArtifacts\x12\x12\n\nstats_file\x18\x01 \x01(\t\x12\x15\n\rcounterz_file\x18\x02 \x01(\t\x12\x11\n\tlog_files\x18\x03 \x03(\t\"F\n\x0bPackageInfo\x12\x14\n\x0cpackage_name\x18\x01 \x01(\t\x12\x10\n\x08\x63\x61tegory\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\"\x17\n\x07Profile\x12\x0c\n\x04name\x18\x01 \x01(\t\"\xa8\x01\n\x10PackageIndexInfo\x12\x14\n\x0csnapshot_sha\x18\x01 \x01(\t\x12\x17\n\x0fsnapshot_number\x18\x02 \x01(\x05\x12-\n\x0c\x62uild_target\x18\x03 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x12\x10\n\x08location\x18\x04 \x01(\t\x12$\n\x07profile\x18\x05 \x01(\x0b\x32\x13.chromiumos.Profile\"w\n\x04Path\x12\x0c\n\x04path\x18\x01 \x01(\t\x12+\n\x08location\x18\x02 \x01(\x0e\x32\x19.chromiumos.Path.Location\"4\n\x08Location\x12\x0f\n\x0bNO_LOCATION\x10\x00\x12\n\n\x06INSIDE\x10\x01\x12\x0b\n\x07OUTSIDE\x10\x02\",\n\nResultPath\x12\x1e\n\x04path\x18\x01 \x01(\x0b\x32\x10.chromiumos.Path\"\x18\n\tSyncedDir\x12\x0b\n\x03\x64ir\x18\x01 \x01(\t\"O\n\x0cGerritChange\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63hange\x18\x03 \x01(\x03\x12\x10\n\x08patchset\x18\x04 \x01(\x03\"Y\n\rGitilesCommit\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x0b\n\x03ref\x18\x04 \x01(\t\x12\x10\n\x08position\x18\x05 \x01(\r\"\x17\n\x07UseFlag\x12\x0c\n\x04\x66lag\x18\x01 \x01(\t\"\xb8\x02\n\x0eReleaseBuilder\x12\x39\n\tmilestone\x18\x01 \x01(\x0b\x32$.chromiumos.ReleaseBuilder.MilestoneH\x00\x12\x16\n\x0e\x62uild_schedule\x18\x02 \x01(\t\x12\x38\n\x0f\x65xpiration_date\x18\x03 \x01(\x0b\x32\x1f.chromiumos.ReleaseBuilder.Date\x1a\x15\n\x04\x44\x61te\x12\r\n\x05value\x18\x01 \x01(\t\x1am\n\tMilestone\x12\x0e\n\x06number\x18\x01 \x01(\x05\x12;\n\x12target_branch_date\x18\x02 \x01(\x0b\x32\x1f.chromiumos.ReleaseBuilder.Date\x12\x13\n\x0b\x62ranch_name\x18\x03 \x01(\tB\x13\n\x11milestone_message\"?\n\x0fReleaseBuilders\x12,\n\x08\x62uilders\x18\x01 \x03(\x0b\x32\x1a.chromiumos.ReleaseBuilder\"\xf4\x01\n\x0fReleaseChannels\x12J\n\x10release_channels\x18\x01 \x03(\x0b\x32\x30.chromiumos.ReleaseChannels.ReleaseChannelsEntry\x1a\x34\n\x0b\x43hannelList\x12%\n\x08\x63hannels\x18\x01 \x03(\x0e\x32\x13.chromiumos.Channel\x1a_\n\x14ReleaseChannelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\x36\n\x05value\x18\x02 \x01(\x0b\x32\'.chromiumos.ReleaseChannels.ChannelList:\x02\x38\x01\"&\n\nProtoBytes\x12\x18\n\x10serialized_proto\x18\x01 \x01(\x0c\"q\n\x1dPrepareForBuildAdditionalArgs\x12\x1c\n\x12\x63hrome_cwp_profile\x18\x01 \x01(\tH\x00\x12\x18\n\x0ekernel_version\x18\x02 \x01(\tH\x00\x42\x18\n\x16prepare_for_build_args\"A\n\x0b\x41\x66\x64oRelease\x12\x1a\n\x12\x63hrome_cwp_profile\x18\x01 \x01(\t\x12\x16\n\x0eimage_build_id\x18\x02 \x01(\x03\"\x97\x01\n\x13\x41rtifactProfileInfo\x12\x1c\n\x12\x63hrome_cwp_profile\x18\x01 \x01(\tH\x00\x12\x18\n\x0ekernel_version\x18\x02 \x01(\tH\x00\x12/\n\x0c\x61\x66\x64o_release\x18\x03 \x01(\x0b\x32\x17.chromiumos.AfdoReleaseH\x00\x42\x17\n\x15\x61rtifact_profile_info\"\xbe+\n\x12\x41rtifactsByService\x12\x35\n\x06legacy\x18\x01 \x01(\x0b\x32%.chromiumos.ArtifactsByService.Legacy\x12;\n\ttoolchain\x18\x02 \x01(\x0b\x32(.chromiumos.ArtifactsByService.Toolchain\x12\x33\n\x05image\x18\x03 \x01(\x0b\x32$.chromiumos.ArtifactsByService.Image\x12\x37\n\x07package\x18\x04 \x01(\x0b\x32&.chromiumos.ArtifactsByService.Package\x12\x37\n\x07sysroot\x18\x05 \x01(\x0b\x32&.chromiumos.ArtifactsByService.Sysroot\x12\x31\n\x04test\x18\x06 \x01(\x0b\x32#.chromiumos.ArtifactsByService.Test\x12\x35\n\x0cprofile_info\x18\x07 \x01(\x0b\x32\x1f.chromiumos.ArtifactProfileInfo\x12\x39\n\x08\x66irmware\x18\x08 \x01(\x0b\x32\'.chromiumos.ArtifactsByService.Firmware\x12\x33\n\x05infra\x18\t \x01(\x0b\x32$.chromiumos.ArtifactsByService.Infra\x1a\xb0\x01\n\x16\x43odeCoverageUploadInfo\x12]\n\rcoverage_type\x18\x01 \x01(\x0e\x32\x46.chromiumos.ArtifactsByService.CodeCoverageUploadInfo.CodeCoverageType\"7\n\x10\x43odeCoverageType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x08\n\x04LLVM\x10\x01\x12\x08\n\x04LCOV\x10\x02\x1a\xb2\x05\n\x06Legacy\x12K\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x32.chromiumos.ArtifactsByService.Legacy.ArtifactInfo\x12L\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x32.chromiumos.ArtifactsByService.Legacy.ArtifactInfo\x1a\xe2\x01\n\x0c\x41rtifactInfo\x12J\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x32.chromiumos.ArtifactsByService.Legacy.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishConditionJ\x04\x08\x03\x10\x04R\x0cprofile_info\"\xa7\x02\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\r\n\tIMAGE_ZIP\x10\x01\x12\x17\n\x13TEST_UPDATE_PAYLOAD\x10\x02\x12\x12\n\x0e\x41UTOTEST_FILES\x10\x03\x12\x0e\n\nTAST_FILES\x10\x04\x12\x17\n\x13PINNED_GUEST_IMAGES\x10\x05\x12\x0c\n\x08\x46IRMWARE\x10\x06\x12\x0f\n\x0b\x45\x42UILD_LOGS\x10\x07\x12\x13\n\x0f\x43HROMEOS_CONFIG\x10\x08\x12\x0e\n\nCPE_REPORT\x10\t\x12\x12\n\x0eIMAGE_ARCHIVES\x10\n\x12\x13\n\x0f\x46PMCU_UNITTESTS\x10\x1b\x12\x0f\n\x0bGCE_TARBALL\x10\x1c\x12\x11\n\rDEBUG_SYMBOLS\x10 \"\x04\x08\x0b\x10\x1a\"\x04\x08\x1d\x10\x1f\"\x04\x08!\x10+\x1a\xff\x07\n\tToolchain\x12N\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x35.chromiumos.ArtifactsByService.Toolchain.ArtifactInfo\x12O\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x35.chromiumos.ArtifactsByService.Toolchain.ArtifactInfo\x1a\xd1\x01\n\x0c\x41rtifactInfo\x12M\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x35.chromiumos.ArtifactsByService.Toolchain.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"\xfc\x04\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12$\n UNVERIFIED_CHROME_LLVM_ORDERFILE\x10\x0b\x12\"\n\x1eVERIFIED_CHROME_LLVM_ORDERFILE\x10\x0c\x12\x1e\n\x1a\x43HROME_CLANG_WARNINGS_FILE\x10\r\x12\x1c\n\x18UNVERIFIED_LLVM_PGO_FILE\x10\x0e\x12)\n%UNVERIFIED_CHROME_BENCHMARK_AFDO_FILE\x10\x0f\x12\'\n#VERIFIED_CHROME_BENCHMARK_AFDO_FILE\x10\x10\x12!\n\x1dVERIFIED_KERNEL_CWP_AFDO_FILE\x10\x11\x12#\n\x1fUNVERIFIED_KERNEL_CWP_AFDO_FILE\x10\x12\x12#\n\x1fUNVERIFIED_CHROME_CWP_AFDO_FILE\x10\x13\x12!\n\x1dVERIFIED_CHROME_CWP_AFDO_FILE\x10\x14\x12\x1e\n\x1aVERIFIED_RELEASE_AFDO_FILE\x10\x15\x12)\n%UNVERIFIED_CHROME_BENCHMARK_PERF_FILE\x10\x16\x12\x17\n\x13\x43HROME_DEBUG_BINARY\x10\x17\x12\x1a\n\x16TOOLCHAIN_WARNING_LOGS\x10\x18\x12)\n%CHROME_AFDO_PROFILE_FOR_ANDROID_LINUX\x10\x19\x12\x19\n\x15\x43LANG_CRASH_DIAGNOSES\x10\x1a\x12\x17\n\x13\x43OMPILER_RUSAGE_LOG\x10\x1d\"\x04\x08\x01\x10\n\"\x04\x08\x1b\x10\x1c\"\x04\x08\x1e\x10+\x1a\xda\x03\n\x05Image\x12J\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x31.chromiumos.ArtifactsByService.Image.ArtifactInfo\x12K\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x31.chromiumos.ArtifactsByService.Image.ArtifactInfo\x1a\xcd\x01\n\x0c\x41rtifactInfo\x12I\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x31.chromiumos.ArtifactsByService.Image.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"h\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\r\n\tDLC_IMAGE\x10\"\x12\x13\n\x0fLICENSE_CREDITS\x10&\x12\x11\n\rFACTORY_IMAGE\x10+\"\x04\x08\x01\x10!\"\x04\x08#\x10%\"\x04\x08\'\x10*\x1a\x9f\x03\n\x07Package\x12L\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x33.chromiumos.ArtifactsByService.Package.ArtifactInfo\x12M\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x33.chromiumos.ArtifactsByService.Package.ArtifactInfo\x1a\xcf\x01\n\x0c\x41rtifactInfo\x12K\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x33.chromiumos.ArtifactsByService.Package.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"%\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\"\x04\x08\x01\x10+\x1a\x8d\x04\n\x07Sysroot\x12L\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x33.chromiumos.ArtifactsByService.Sysroot.ArtifactInfo\x12M\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x33.chromiumos.ArtifactsByService.Sysroot.ArtifactInfo\x1a\xcf\x01\n\x0c\x41rtifactInfo\x12K\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x33.chromiumos.ArtifactsByService.Sysroot.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"\x92\x01\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x11\n\rDEBUG_SYMBOLS\x10 \x12\x1a\n\x16\x42REAKPAD_DEBUG_SYMBOLS\x10#\x12\x19\n\x15SIMPLE_CHROME_SYSROOT\x10(\x12\x15\n\x11\x43HROME_EBUILD_ENV\x10)\"\x04\x08\x01\x10\x1f\"\x04\x08!\x10\"\"\x04\x08$\x10\'\x1a\xb2\x04\n\x04Test\x12I\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x30.chromiumos.ArtifactsByService.Test.ArtifactInfo\x12J\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x30.chromiumos.ArtifactsByService.Test.ArtifactInfo\x1a\xa6\x02\n\x0c\x41rtifactInfo\x12H\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x30.chromiumos.ArtifactsByService.Test.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\x12X\n\x19\x63ode_coverage_upload_info\x18\x06 \x01(\x0b\x32\x35.chromiumos.ArtifactsByService.CodeCoverageUploadInfo\"j\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0e\n\nUNIT_TESTS\x10%\x12\x1b\n\x17\x43ODE_COVERAGE_LLVM_JSON\x10\'\x12\n\n\x06HWQUAL\x10*\"\x04\x08\x01\x10$\"\x04\x08&\x10&\"\x04\x08(\x10)\x1a\xf7\x04\n\x08\x46irmware\x12M\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x34.chromiumos.ArtifactsByService.Firmware.ArtifactInfo\x12N\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x34.chromiumos.ArtifactsByService.Firmware.ArtifactInfo\x1a\xd4\x02\n\x0c\x41rtifactInfo\x12L\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x34.chromiumos.ArtifactsByService.Firmware.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\x12(\n\x08location\x18\x06 \x01(\x0e\x32\x16.chromiumos.FwLocation\x12X\n\x19\x63ode_coverage_upload_info\x18\x07 \x01(\x0b\x32\x35.chromiumos.ArtifactsByService.CodeCoverageUploadInfo\"u\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x14\n\x10\x46IRMWARE_TARBALL\x10\x1e\x12\x19\n\x15\x46IRMWARE_TARBALL_INFO\x10\x1f\x12\x11\n\rFIRMWARE_LCOV\x10!\"\x04\x08\x01\x10\x1d\"\x04\x08 \x10 \"\x04\x08\"\x10+\x1a\xb1\x03\n\x05Infra\x12J\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x31.chromiumos.ArtifactsByService.Infra.ArtifactInfo\x12K\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x31.chromiumos.ArtifactsByService.Infra.ArtifactInfo\x1a\xcd\x01\n\x0c\x41rtifactInfo\x12I\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x31.chromiumos.ArtifactsByService.Infra.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"?\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x12\n\x0e\x42UILD_MANIFEST\x10$\"\x04\x08\x01\x10#\"\x04\x08%\x10+\"W\n\x10PublishCondition\x12\x17\n\x13PUBLISH_UNSPECIFIED\x10\x00\x12\x16\n\x12PUBLISH_ON_SUCCESS\x10\x01\x12\x12\n\x0ePUBLISH_ALWAYS\x10\x02\"\x8e\x12\n\x1aUploadedArtifactsByService\x12=\n\x06legacy\x18\x01 \x01(\x0b\x32-.chromiumos.UploadedArtifactsByService.Legacy\x12\x43\n\ttoolchain\x18\x02 \x01(\x0b\x32\x30.chromiumos.UploadedArtifactsByService.Toolchain\x12;\n\x05image\x18\x03 \x01(\x0b\x32,.chromiumos.UploadedArtifactsByService.Image\x12?\n\x07package\x18\x04 \x01(\x0b\x32..chromiumos.UploadedArtifactsByService.Package\x12?\n\x07sysroot\x18\x05 \x01(\x0b\x32..chromiumos.UploadedArtifactsByService.Sysroot\x12\x39\n\x04test\x18\x06 \x01(\x0b\x32+.chromiumos.UploadedArtifactsByService.Test\x12\x41\n\x08\x66irmware\x18\x07 \x01(\x0b\x32/.chromiumos.UploadedArtifactsByService.Firmware\x12;\n\x05infra\x18\x08 \x01(\x0b\x32,.chromiumos.UploadedArtifactsByService.Infra\x1a\xd5\x01\n\x06Legacy\x12N\n\tartifacts\x18\x01 \x03(\x0b\x32;.chromiumos.UploadedArtifactsByService.Legacy.ArtifactPaths\x1a{\n\rArtifactPaths\x12I\n\rartifact_type\x18\x01 \x01(\x0e\x32\x32.chromiumos.ArtifactsByService.Legacy.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xde\x01\n\tToolchain\x12Q\n\tartifacts\x18\x01 \x03(\x0b\x32>.chromiumos.UploadedArtifactsByService.Toolchain.ArtifactPaths\x1a~\n\rArtifactPaths\x12L\n\rartifact_type\x18\x01 \x01(\x0e\x32\x35.chromiumos.ArtifactsByService.Toolchain.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xd2\x01\n\x05Image\x12M\n\tartifacts\x18\x01 \x03(\x0b\x32:.chromiumos.UploadedArtifactsByService.Image.ArtifactPaths\x1az\n\rArtifactPaths\x12H\n\rartifact_type\x18\x01 \x01(\x0e\x32\x31.chromiumos.ArtifactsByService.Image.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xd8\x01\n\x07Package\x12O\n\tartifacts\x18\x01 \x03(\x0b\x32<.chromiumos.UploadedArtifactsByService.Package.ArtifactPaths\x1a|\n\rArtifactPaths\x12J\n\rartifact_type\x18\x01 \x01(\x0e\x32\x33.chromiumos.ArtifactsByService.Package.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xd8\x01\n\x07Sysroot\x12O\n\tartifacts\x18\x01 \x03(\x0b\x32<.chromiumos.UploadedArtifactsByService.Sysroot.ArtifactPaths\x1a|\n\rArtifactPaths\x12J\n\rartifact_type\x18\x01 \x01(\x0e\x32\x33.chromiumos.ArtifactsByService.Sysroot.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xcf\x01\n\x04Test\x12L\n\tartifacts\x18\x01 \x03(\x0b\x32\x39.chromiumos.UploadedArtifactsByService.Test.ArtifactPaths\x1ay\n\rArtifactPaths\x12G\n\rartifact_type\x18\x01 \x01(\x0e\x32\x30.chromiumos.ArtifactsByService.Test.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\x86\x02\n\x08\x46irmware\x12P\n\tartifacts\x18\x01 \x03(\x0b\x32=.chromiumos.UploadedArtifactsByService.Firmware.ArtifactPaths\x1a\xa7\x01\n\rArtifactPaths\x12K\n\rartifact_type\x18\x01 \x01(\x0e\x32\x34.chromiumos.ArtifactsByService.Firmware.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x12(\n\x08location\x18\x03 \x01(\x0e\x32\x16.chromiumos.FwLocation\x1a\xd2\x01\n\x05Infra\x12M\n\tartifacts\x18\x01 \x03(\x0b\x32:.chromiumos.UploadedArtifactsByService.Infra.ArtifactPaths\x1az\n\rArtifactPaths\x12H\n\rartifact_type\x18\x01 \x01(\x0e\x32\x31.chromiumos.ArtifactsByService.Infra.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path*\xca\x04\n\tImageType\x12\x18\n\x14IMAGE_TYPE_UNDEFINED\x10\x00\x12\x13\n\x0fIMAGE_TYPE_BASE\x10\x01\x12\x12\n\x0eIMAGE_TYPE_DEV\x10\x02\x12\x13\n\x0fIMAGE_TYPE_TEST\x10\x03\x12\x16\n\x12IMAGE_TYPE_BASE_VM\x10\x04\x12\x16\n\x12IMAGE_TYPE_TEST_VM\x10\x05\x12\x17\n\x13IMAGE_TYPE_RECOVERY\x10\x06\x12\x16\n\x12IMAGE_TYPE_FACTORY\x10\x07\x12\x17\n\x13IMAGE_TYPE_FIRMWARE\x10\x08\x12\x1c\n\x18IMAGE_TYPE_CR50_FIRMWARE\x10\t\x12\x1c\n\x18IMAGE_TYPE_BASE_GUEST_VM\x10\n\x12\x1c\n\x18IMAGE_TYPE_TEST_GUEST_VM\x10\x0b\x12\x12\n\x0eIMAGE_TYPE_DLC\x10\x0c\x12\x1b\n\x17IMAGE_TYPE_GSC_FIRMWARE\x10\r\x12\x1e\n\x1aIMAGE_TYPE_ACCESSORY_USBPD\x10\x0e\x12\x1e\n\x1aIMAGE_TYPE_ACCESSORY_RWSIG\x10\x0f*\x04\x42\x41SE*\x04TEST*\x03\x44\x45V*\x07\x42\x41SE_VM*\x07TEST_VM*\x08RECOVERY*\x07\x46\x41\x43TORY*\x08\x46IRMWARE*\rCR50_FIRMWARE*\rBASE_GUEST_VM*\rTEST_GUEST_VM*\x03\x44LC*\x0cGSC_FIRMWARE*\x0f\x41\x43\x43\x45SSORY_USBPD*\x0f\x41\x43\x43\x45SSORY_RWSIG*m\n\x07\x43hannel\x12\x17\n\x13\x43HANNEL_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x43HANNEL_STABLE\x10\x01\x12\x10\n\x0c\x43HANNEL_BETA\x10\x02\x12\x0f\n\x0b\x43HANNEL_DEV\x10\x03\x12\x12\n\x0e\x43HANNEL_CANARY\x10\x04*l\n\tDeltaType\x12\x11\n\rDELTA_UNKNOWN\x10\x00\x12\x0c\n\x08NO_DELTA\x10\x01\x12\x07\n\x03\x46SI\x10\x02\x12\r\n\tMILESTONE\x10\x03\x12\t\n\x05OMAHA\x10\x04\x12\x12\n\x0eSTEPPING_STONE\x10\x05\x12\x07\n\x03N2N\x10\x06*^\n\nFwLocation\x12\x17\n\x13\x46W_LOCATION_UNKNOWN\x10\x00\x12\x0f\n\x0bPLATFORM_EC\x10\x01\x12\x13\n\x0fPLATFORM_ZEPHYR\x10\x02\x12\x11\n\rPLATFORM_TI50\x10\x03*f\n\x10\x41\x46\x44OArtifactType\x12\r\n\tNONE_TYPE\x10\x00\x12\r\n\tORDERFILE\x10\x01\x12\x12\n\x0e\x42\x45NCHMARK_AFDO\x10\x02\x12\x0f\n\x0bKERNEL_AFDO\x10\x03\x12\x0f\n\x0b\x43HROME_AFDO\x10\x04\x42Y\n!com.google.chrome.crosinfra.protoZ4go.chromium.org/chromiumos/infra/proto/go/chromiumosb\x06proto3'
 )
 
 _IMAGETYPE = _descriptor.EnumDescriptor(
@@ -113,8 +113,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=10276,
-  serialized_end=10862,
+  serialized_start=10317,
+  serialized_end=10903,
 )
 _sym_db.RegisterEnumDescriptor(_IMAGETYPE)
 
@@ -154,8 +154,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=10864,
-  serialized_end=10973,
+  serialized_start=10905,
+  serialized_end=11014,
 )
 _sym_db.RegisterEnumDescriptor(_CHANNEL)
 
@@ -205,8 +205,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=10975,
-  serialized_end=11083,
+  serialized_start=11016,
+  serialized_end=11124,
 )
 _sym_db.RegisterEnumDescriptor(_DELTATYPE)
 
@@ -241,8 +241,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=11085,
-  serialized_end=11179,
+  serialized_start=11126,
+  serialized_end=11220,
 )
 _sym_db.RegisterEnumDescriptor(_FWLOCATION)
 
@@ -282,8 +282,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=11181,
-  serialized_end=11283,
+  serialized_start=11222,
+  serialized_end=11324,
 )
 _sym_db.RegisterEnumDescriptor(_AFDOARTIFACTTYPE)
 
@@ -362,8 +362,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=536,
-  serialized_end=643,
+  serialized_start=577,
+  serialized_end=684,
 )
 _sym_db.RegisterEnumDescriptor(_GOMACONFIG_GOMAAPPROACH)
 
@@ -392,8 +392,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=1059,
-  serialized_end=1111,
+  serialized_start=1100,
+  serialized_end=1152,
 )
 _sym_db.RegisterEnumDescriptor(_PATH_LOCATION)
 
@@ -422,8 +422,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=3031,
-  serialized_end=3086,
+  serialized_start=3072,
+  serialized_end=3127,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_CODECOVERAGEUPLOADINFO_CODECOVERAGETYPE)
 
@@ -507,8 +507,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=3484,
-  serialized_end=3779,
+  serialized_start=3525,
+  serialized_end=3820,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_LEGACY_ARTIFACTTYPE)
 
@@ -612,8 +612,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4169,
-  serialized_end=4805,
+  serialized_start=4210,
+  serialized_end=4846,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_TOOLCHAIN_ARTIFACTTYPE)
 
@@ -647,8 +647,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=5178,
-  serialized_end=5282,
+  serialized_start=5219,
+  serialized_end=5323,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_IMAGE_ARTIFACTTYPE)
 
@@ -667,8 +667,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=5663,
-  serialized_end=5700,
+  serialized_start=5704,
+  serialized_end=5741,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_PACKAGE_ARTIFACTTYPE)
 
@@ -707,8 +707,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=6082,
-  serialized_end=6228,
+  serialized_start=6123,
+  serialized_end=6269,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_SYSROOT_ARTIFACTTYPE)
 
@@ -742,8 +742,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=6687,
-  serialized_end=6793,
+  serialized_start=6728,
+  serialized_end=6834,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_TEST_ARTIFACTTYPE)
 
@@ -777,8 +777,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=7310,
-  serialized_end=7427,
+  serialized_start=7351,
+  serialized_end=7468,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_FIRMWARE_ARTIFACTTYPE)
 
@@ -802,8 +802,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=7800,
-  serialized_end=7863,
+  serialized_start=7841,
+  serialized_end=7904,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_INFRA_ARTIFACTTYPE)
 
@@ -832,8 +832,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=7865,
-  serialized_end=7952,
+  serialized_start=7906,
+  serialized_end=7993,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_PUBLISHCONDITION)
 
@@ -870,6 +870,45 @@
 )
 
 
+_GCSPATH = _descriptor.Descriptor(
+  name='GcsPath',
+  full_name='chromiumos.GcsPath',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='bucket', full_name='chromiumos.GcsPath.bucket', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='path', full_name='chromiumos.GcsPath.path', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=68,
+  serialized_end=107,
+)
+
+
 _CHROOT_CHROOTENV = _descriptor.Descriptor(
   name='ChrootEnv',
   full_name='chromiumos.Chroot.ChrootEnv',
@@ -904,8 +943,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=175,
-  serialized_end=265,
+  serialized_start=216,
+  serialized_end=306,
 )
 
 _CHROOT = _descriptor.Descriptor(
@@ -956,8 +995,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=69,
-  serialized_end=277,
+  serialized_start=110,
+  serialized_end=318,
 )
 
 
@@ -988,8 +1027,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=279,
-  serialized_end=305,
+  serialized_start=320,
+  serialized_end=346,
 )
 
 
@@ -1063,8 +1102,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=308,
-  serialized_end=643,
+  serialized_start=349,
+  serialized_end=684,
 )
 
 
@@ -1109,8 +1148,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=645,
-  serialized_end=722,
+  serialized_start=686,
+  serialized_end=763,
 )
 
 
@@ -1155,8 +1194,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=724,
-  serialized_end=794,
+  serialized_start=765,
+  serialized_end=835,
 )
 
 
@@ -1187,8 +1226,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=796,
-  serialized_end=819,
+  serialized_start=837,
+  serialized_end=860,
 )
 
 
@@ -1247,8 +1286,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=822,
-  serialized_end=990,
+  serialized_start=863,
+  serialized_end=1031,
 )
 
 
@@ -1287,8 +1326,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=992,
-  serialized_end=1111,
+  serialized_start=1033,
+  serialized_end=1152,
 )
 
 
@@ -1319,8 +1358,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1113,
-  serialized_end=1157,
+  serialized_start=1154,
+  serialized_end=1198,
 )
 
 
@@ -1351,8 +1390,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1159,
-  serialized_end=1183,
+  serialized_start=1200,
+  serialized_end=1224,
 )
 
 
@@ -1404,8 +1443,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1185,
-  serialized_end=1264,
+  serialized_start=1226,
+  serialized_end=1305,
 )
 
 
@@ -1464,8 +1503,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1266,
-  serialized_end=1355,
+  serialized_start=1307,
+  serialized_end=1396,
 )
 
 
@@ -1496,8 +1535,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1357,
-  serialized_end=1380,
+  serialized_start=1398,
+  serialized_end=1421,
 )
 
 
@@ -1528,8 +1567,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1542,
-  serialized_end=1563,
+  serialized_start=1583,
+  serialized_end=1604,
 )
 
 _RELEASEBUILDER_MILESTONE = _descriptor.Descriptor(
@@ -1573,8 +1612,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1565,
-  serialized_end=1674,
+  serialized_start=1606,
+  serialized_end=1715,
 )
 
 _RELEASEBUILDER = _descriptor.Descriptor(
@@ -1623,8 +1662,8 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=1383,
-  serialized_end=1695,
+  serialized_start=1424,
+  serialized_end=1736,
 )
 
 
@@ -1655,8 +1694,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1697,
-  serialized_end=1760,
+  serialized_start=1738,
+  serialized_end=1801,
 )
 
 
@@ -1687,8 +1726,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1858,
-  serialized_end=1910,
+  serialized_start=1899,
+  serialized_end=1951,
 )
 
 _RELEASECHANNELS_RELEASECHANNELSENTRY = _descriptor.Descriptor(
@@ -1725,8 +1764,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1912,
-  serialized_end=2007,
+  serialized_start=1953,
+  serialized_end=2048,
 )
 
 _RELEASECHANNELS = _descriptor.Descriptor(
@@ -1756,8 +1795,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1763,
-  serialized_end=2007,
+  serialized_start=1804,
+  serialized_end=2048,
 )
 
 
@@ -1788,8 +1827,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2009,
-  serialized_end=2047,
+  serialized_start=2050,
+  serialized_end=2088,
 )
 
 
@@ -1832,8 +1871,8 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=2049,
-  serialized_end=2162,
+  serialized_start=2090,
+  serialized_end=2203,
 )
 
 
@@ -1871,8 +1910,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2164,
-  serialized_end=2229,
+  serialized_start=2205,
+  serialized_end=2270,
 )
 
 
@@ -1922,8 +1961,8 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=2232,
-  serialized_end=2383,
+  serialized_start=2273,
+  serialized_end=2424,
 )
 
 
@@ -1955,8 +1994,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2910,
-  serialized_end=3086,
+  serialized_start=2951,
+  serialized_end=3127,
 )
 
 _ARTIFACTSBYSERVICE_LEGACY_ARTIFACTINFO = _descriptor.Descriptor(
@@ -2007,8 +2046,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3255,
-  serialized_end=3481,
+  serialized_start=3296,
+  serialized_end=3522,
 )
 
 _ARTIFACTSBYSERVICE_LEGACY = _descriptor.Descriptor(
@@ -2046,8 +2085,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3089,
-  serialized_end=3779,
+  serialized_start=3130,
+  serialized_end=3820,
 )
 
 _ARTIFACTSBYSERVICE_TOOLCHAIN_ARTIFACTINFO = _descriptor.Descriptor(
@@ -2098,8 +2137,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3957,
-  serialized_end=4166,
+  serialized_start=3998,
+  serialized_end=4207,
 )
 
 _ARTIFACTSBYSERVICE_TOOLCHAIN = _descriptor.Descriptor(
@@ -2137,8 +2176,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3782,
-  serialized_end=4805,
+  serialized_start=3823,
+  serialized_end=4846,
 )
 
 _ARTIFACTSBYSERVICE_IMAGE_ARTIFACTINFO = _descriptor.Descriptor(
@@ -2189,8 +2228,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4971,
-  serialized_end=5176,
+  serialized_start=5012,
+  serialized_end=5217,
 )
 
 _ARTIFACTSBYSERVICE_IMAGE = _descriptor.Descriptor(
@@ -2228,8 +2267,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4808,
-  serialized_end=5282,
+  serialized_start=4849,
+  serialized_end=5323,
 )
 
 _ARTIFACTSBYSERVICE_PACKAGE_ARTIFACTINFO = _descriptor.Descriptor(
@@ -2280,8 +2319,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5454,
-  serialized_end=5661,
+  serialized_start=5495,
+  serialized_end=5702,
 )
 
 _ARTIFACTSBYSERVICE_PACKAGE = _descriptor.Descriptor(
@@ -2319,8 +2358,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5285,
-  serialized_end=5700,
+  serialized_start=5326,
+  serialized_end=5741,
 )
 
 _ARTIFACTSBYSERVICE_SYSROOT_ARTIFACTINFO = _descriptor.Descriptor(
@@ -2371,8 +2410,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5872,
-  serialized_end=6079,
+  serialized_start=5913,
+  serialized_end=6120,
 )
 
 _ARTIFACTSBYSERVICE_SYSROOT = _descriptor.Descriptor(
@@ -2410,8 +2449,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5703,
-  serialized_end=6228,
+  serialized_start=5744,
+  serialized_end=6269,
 )
 
 _ARTIFACTSBYSERVICE_TEST_ARTIFACTINFO = _descriptor.Descriptor(
@@ -2469,8 +2508,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6391,
-  serialized_end=6685,
+  serialized_start=6432,
+  serialized_end=6726,
 )
 
 _ARTIFACTSBYSERVICE_TEST = _descriptor.Descriptor(
@@ -2508,8 +2547,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6231,
-  serialized_end=6793,
+  serialized_start=6272,
+  serialized_end=6834,
 )
 
 _ARTIFACTSBYSERVICE_FIRMWARE_ARTIFACTINFO = _descriptor.Descriptor(
@@ -2574,8 +2613,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6968,
-  serialized_end=7308,
+  serialized_start=7009,
+  serialized_end=7349,
 )
 
 _ARTIFACTSBYSERVICE_FIRMWARE = _descriptor.Descriptor(
@@ -2613,8 +2652,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6796,
-  serialized_end=7427,
+  serialized_start=6837,
+  serialized_end=7468,
 )
 
 _ARTIFACTSBYSERVICE_INFRA_ARTIFACTINFO = _descriptor.Descriptor(
@@ -2665,8 +2704,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7593,
-  serialized_end=7798,
+  serialized_start=7634,
+  serialized_end=7839,
 )
 
 _ARTIFACTSBYSERVICE_INFRA = _descriptor.Descriptor(
@@ -2704,8 +2743,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7430,
-  serialized_end=7863,
+  serialized_start=7471,
+  serialized_end=7904,
 )
 
 _ARTIFACTSBYSERVICE = _descriptor.Descriptor(
@@ -2792,8 +2831,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2386,
-  serialized_end=7952,
+  serialized_start=2427,
+  serialized_end=7993,
 )
 
 
@@ -2831,8 +2870,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8586,
-  serialized_end=8709,
+  serialized_start=8627,
+  serialized_end=8750,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_LEGACY = _descriptor.Descriptor(
@@ -2862,8 +2901,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8496,
-  serialized_end=8709,
+  serialized_start=8537,
+  serialized_end=8750,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_TOOLCHAIN_ARTIFACTPATHS = _descriptor.Descriptor(
@@ -2900,8 +2939,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8808,
-  serialized_end=8934,
+  serialized_start=8849,
+  serialized_end=8975,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_TOOLCHAIN = _descriptor.Descriptor(
@@ -2931,8 +2970,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8712,
-  serialized_end=8934,
+  serialized_start=8753,
+  serialized_end=8975,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_IMAGE_ARTIFACTPATHS = _descriptor.Descriptor(
@@ -2969,8 +3008,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9025,
-  serialized_end=9147,
+  serialized_start=9066,
+  serialized_end=9188,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_IMAGE = _descriptor.Descriptor(
@@ -3000,8 +3039,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8937,
-  serialized_end=9147,
+  serialized_start=8978,
+  serialized_end=9188,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_PACKAGE_ARTIFACTPATHS = _descriptor.Descriptor(
@@ -3038,8 +3077,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9242,
-  serialized_end=9366,
+  serialized_start=9283,
+  serialized_end=9407,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_PACKAGE = _descriptor.Descriptor(
@@ -3069,8 +3108,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9150,
-  serialized_end=9366,
+  serialized_start=9191,
+  serialized_end=9407,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_SYSROOT_ARTIFACTPATHS = _descriptor.Descriptor(
@@ -3107,8 +3146,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9461,
-  serialized_end=9585,
+  serialized_start=9502,
+  serialized_end=9626,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_SYSROOT = _descriptor.Descriptor(
@@ -3138,8 +3177,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9369,
-  serialized_end=9585,
+  serialized_start=9410,
+  serialized_end=9626,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_TEST_ARTIFACTPATHS = _descriptor.Descriptor(
@@ -3176,8 +3215,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9674,
-  serialized_end=9795,
+  serialized_start=9715,
+  serialized_end=9836,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_TEST = _descriptor.Descriptor(
@@ -3207,8 +3246,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9588,
-  serialized_end=9795,
+  serialized_start=9629,
+  serialized_end=9836,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_FIRMWARE_ARTIFACTPATHS = _descriptor.Descriptor(
@@ -3252,8 +3291,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9893,
-  serialized_end=10060,
+  serialized_start=9934,
+  serialized_end=10101,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_FIRMWARE = _descriptor.Descriptor(
@@ -3283,8 +3322,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9798,
-  serialized_end=10060,
+  serialized_start=9839,
+  serialized_end=10101,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_INFRA_ARTIFACTPATHS = _descriptor.Descriptor(
@@ -3321,8 +3360,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=10151,
-  serialized_end=10273,
+  serialized_start=10192,
+  serialized_end=10314,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_INFRA = _descriptor.Descriptor(
@@ -3352,8 +3391,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=10063,
-  serialized_end=10273,
+  serialized_start=10104,
+  serialized_end=10314,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE = _descriptor.Descriptor(
@@ -3432,8 +3471,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7955,
-  serialized_end=10273,
+  serialized_start=7996,
+  serialized_end=10314,
 )
 
 _CHROOT_CHROOTENV.fields_by_name['use_flags'].message_type = _USEFLAG
@@ -3600,6 +3639,7 @@
 _UPLOADEDARTIFACTSBYSERVICE.fields_by_name['firmware'].message_type = _UPLOADEDARTIFACTSBYSERVICE_FIRMWARE
 _UPLOADEDARTIFACTSBYSERVICE.fields_by_name['infra'].message_type = _UPLOADEDARTIFACTSBYSERVICE_INFRA
 DESCRIPTOR.message_types_by_name['BuildTarget'] = _BUILDTARGET
+DESCRIPTOR.message_types_by_name['GcsPath'] = _GCSPATH
 DESCRIPTOR.message_types_by_name['Chroot'] = _CHROOT
 DESCRIPTOR.message_types_by_name['Feature'] = _FEATURE
 DESCRIPTOR.message_types_by_name['GomaConfig'] = _GOMACONFIG
@@ -3636,6 +3676,13 @@
   })
 _sym_db.RegisterMessage(BuildTarget)
 
+GcsPath = _reflection.GeneratedProtocolMessageType('GcsPath', (_message.Message,), {
+  'DESCRIPTOR' : _GCSPATH,
+  '__module__' : 'chromiumos.common_pb2'
+  # @@protoc_insertion_point(class_scope:chromiumos.GcsPath)
+  })
+_sym_db.RegisterMessage(GcsPath)
+
 Chroot = _reflection.GeneratedProtocolMessageType('Chroot', (_message.Message,), {
 
   'ChrootEnv' : _reflection.GeneratedProtocolMessageType('ChrootEnv', (_message.Message,), {
diff --git a/api/gen/chromiumos/config/api/component_pb2.py b/api/gen/chromiumos/config/api/component_pb2.py
index a70097b..ca7bf18 100644
--- a/api/gen/chromiumos/config/api/component_pb2.py
+++ b/api/gen/chromiumos/config/api/component_pb2.py
@@ -21,7 +21,7 @@
   syntax='proto3',
   serialized_options=b'Z(go.chromium.org/chromiumos/config/go/api',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n%chromiumos/config/api/component.proto\x12\x15\x63hromiumos.config.api\x1a(chromiumos/config/api/component_id.proto\x1a&chromiumos/config/api/partner_id.proto\"\x8c$\n\tComponent\x12.\n\x02id\x18\x01 \x01(\x0b\x32\".chromiumos.config.api.ComponentId\x12\x39\n\x0fmanufacturer_id\x18\x08 \x01(\x0b\x32 .chromiumos.config.api.PartnerId\x12\x0c\n\x04name\x18\t \x01(\t\x12\x11\n\thwid_type\x18\x19 \x01(\t\x12\x12\n\nhwid_label\x18\x14 \x01(\t\x12\x36\n\x06\x61vl_id\x18\x15 \x01(\x0b\x32&.chromiumos.config.api.Component.AVLId\x12\x13\n\x0bpart_number\x18\x16 \x01(\t\x12\x33\n\x03soc\x18\x02 \x01(\x0b\x32$.chromiumos.config.api.Component.SocH\x00\x12\x39\n\x06memory\x18\x03 \x01(\x0b\x32\'.chromiumos.config.api.Component.MemoryH\x00\x12?\n\tbluetooth\x18\x04 \x01(\x0b\x32*.chromiumos.config.api.Component.BluetoothH\x00\x12\x39\n\x06\x63\x61mera\x18\x05 \x01(\x0b\x32\'.chromiumos.config.api.Component.CameraH\x00\x12=\n\x0btouchscreen\x18\x06 \x01(\x0b\x32&.chromiumos.config.api.Component.TouchH\x00\x12\x35\n\x04wifi\x18\x07 \x01(\x0b\x32%.chromiumos.config.api.Component.WifiH\x00\x12:\n\x08touchpad\x18\n \x01(\x0b\x32&.chromiumos.config.api.Component.TouchH\x00\x12\x46\n\rdisplay_panel\x18\x0b \x01(\x0b\x32-.chromiumos.config.api.Component.DisplayPanelH\x00\x12\x42\n\x0b\x61udio_codec\x18\x0c \x01(\x0b\x32+.chromiumos.config.api.Component.AudioCodecH\x00\x12;\n\x07\x62\x61ttery\x18\r \x01(\x0b\x32(.chromiumos.config.api.Component.BatteryH\x00\x12\x43\n\rec_flash_chip\x18\x0e \x01(\x0b\x32*.chromiumos.config.api.Component.FlashChipH\x00\x12G\n\x11system_flash_chip\x18\x0f \x01(\x0b\x32*.chromiumos.config.api.Component.FlashChipH\x00\x12\x41\n\x02\x65\x63\x18\x10 \x01(\x0b\x32\x33.chromiumos.config.api.Component.EmbeddedControllerH\x00\x12;\n\x07storage\x18\x11 \x01(\x0b\x32(.chromiumos.config.api.Component.StorageH\x00\x12\x33\n\x03tpm\x18\x12 \x01(\x0b\x32$.chromiumos.config.api.Component.TpmH\x00\x12\x42\n\x08usb_host\x18\x13 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.UsbH\x00\x12\x39\n\x06stylus\x18\x17 \x01(\x0b\x32\'.chromiumos.config.api.Component.StylusH\x00\x12?\n\tamplifier\x18\x18 \x01(\x0b\x32*.chromiumos.config.api.Component.AmplifierH\x00\x1a!\n\x05\x41VLId\x12\x0b\n\x03\x63id\x18\x01 \x01(\x05\x12\x0b\n\x03qid\x18\x02 \x01(\x05\x1a\xb7\x01\n\tInterface\x1a&\n\x03I2C\x12\x0f\n\x07product\x18\x01 \x01(\t\x12\x0e\n\x06vendor\x18\x02 \x01(\t\x1a@\n\x03Usb\x12\x11\n\tvendor_id\x18\x01 \x01(\t\x12\x12\n\nproduct_id\x18\x02 \x01(\t\x12\x12\n\nbcd_device\x18\x03 \x01(\t\x1a@\n\x03Pci\x12\x11\n\tvendor_id\x18\x01 \x01(\t\x12\x11\n\tdevice_id\x18\x02 \x01(\t\x12\x13\n\x0brevision_id\x18\x03 \x01(\t\x1a\xf7\x02\n\x03Soc\x12;\n\x06\x66\x61mily\x18\x01 \x01(\x0b\x32+.chromiumos.config.api.Component.Soc.Family\x12\r\n\x05model\x18\x02 \x01(\t\x12\r\n\x05\x63ores\x18\x03 \x01(\x05\x12>\n\x08\x66\x65\x61tures\x18\x04 \x03(\x0e\x32,.chromiumos.config.api.Component.Soc.Feature\x1aW\n\x06\x46\x61mily\x12?\n\x04\x61rch\x18\x01 \x01(\x0e\x32\x31.chromiumos.config.api.Component.Soc.Architecture\x12\x0c\n\x04name\x18\x02 \x01(\t\"S\n\x0c\x41rchitecture\x12\x1a\n\x16\x41RCHITECTURE_UNDEFINED\x10\x00\x12\x07\n\x03X86\x10\x01\x12\n\n\x06X86_64\x10\x02\x12\x07\n\x03\x41RM\x10\x03\x12\t\n\x05\x41RM64\x10\x04\"\'\n\x07\x46\x65\x61ture\x12\x13\n\x0f\x46\x45\x41TURE_UNKNOWN\x10\x00\x12\x07\n\x03SMT\x10\x01\x1a\xb4\x02\n\x06Memory\x12@\n\x07profile\x18\x01 \x01(\x0b\x32/.chromiumos.config.api.Component.Memory.Profile\x12\x13\n\x0bpart_number\x18\x02 \x01(\t\x1ap\n\x07Profile\x12:\n\x04type\x18\x01 \x01(\x0e\x32,.chromiumos.config.api.Component.Memory.Type\x12\x11\n\tspeed_mhz\x18\x02 \x01(\x05\x12\x16\n\x0esize_megabytes\x18\x03 \x01(\x05\"[\n\x04Type\x12\x12\n\x0eTYPE_UNDEFINED\x10\x00\x12\x07\n\x03\x44\x44R\x10\x01\x12\x08\n\x04\x44\x44R2\x10\x02\x12\x08\n\x04\x44\x44R3\x10\x03\x12\x08\n\x04\x44\x44R4\x10\x04\x12\x0b\n\x07LP_DDR3\x10\x05\x12\x0b\n\x07LP_DDR4\x10\x06J\x04\x08\x03\x10\x04\x1aZ\n\tBluetooth\x12;\n\x03usb\x18\x04 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.UsbJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04\x1a\x93\x03\n\x06\x43\x61mera\x12\x41\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0e\x32/.chromiumos.config.api.Component.Camera.Feature\x12\x45\n\nclock_type\x18\x02 \x01(\x0e\x32\x31.chromiumos.config.api.Component.Camera.ClockType\x12=\n\x03usb\x18\x03 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.UsbH\x00\x12=\n\x03pci\x18\x04 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.PciH\x00\"0\n\x07\x46\x65\x61ture\x12\x13\n\x0f\x46\x45\x41TURE_UNKNOWN\x10\x00\x12\x10\n\x0c\x41\x43TIVITY_LED\x10\x01\"B\n\tClockType\x12\x18\n\x14\x43LOCK_TYPE_UNDEFINED\x10\x00\x12\r\n\tMONOTONIC\x10\x01\x12\x0c\n\x08\x42OOTTIME\x10\x02\x42\x0b\n\tinterface\x1a\xd6\x01\n\x0c\x44isplayPanel\x12\x12\n\nproduct_id\x18\x01 \x01(\t\x12L\n\nproperties\x18\x02 \x01(\x0b\x32\x38.chromiumos.config.api.Component.DisplayPanel.Properties\x1a\x64\n\nProperties\x12\x10\n\x08width_px\x18\x01 \x01(\x05\x12\x11\n\theight_px\x18\x02 \x01(\x05\x12\x1a\n\x12\x64iagonal_milliinch\x18\x03 \x01(\x05\x12\x15\n\rpixels_per_in\x18\x04 \x01(\x05\x1a\x9e\x02\n\x05Touch\x12\x12\n\nproduct_id\x18\x02 \x01(\t\x12\x12\n\nfw_version\x18\x03 \x01(\t\x12\x16\n\x0eproduct_series\x18\x05 \x01(\t\x12\x13\n\x0b\x66w_checksum\x18\x06 \x01(\t\x12>\n\x04type\x18\x07 \x01(\x0e\x32\x30.chromiumos.config.api.Component.Touch.TouchType\x12;\n\x03usb\x18\x08 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.Usb\"7\n\tTouchType\x12\x18\n\x14TOUCH_TYPE_UNDEFINED\x10\x00\x12\x07\n\x03USB\x10\x01\x12\x07\n\x03I2C\x10\x02J\x04\x08\x01\x10\x02J\x04\x08\x04\x10\x05\x1a\xc8\x02\n\x04Wifi\x12=\n\x03pci\x18\x01 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.PciH\x00\x12T\n\x18supported_wlan_protocols\x18\x02 \x03(\x0e\x32\x32.chromiumos.config.api.Component.Wifi.WLANProtocol\"\x9d\x01\n\x0cWLANProtocol\x12\x19\n\x15WLAN_PROTOCOL_UNKNOWN\x10\x00\x12\x11\n\rIEEE_802_11_A\x10\x01\x12\x11\n\rIEEE_802_11_B\x10\x02\x12\x11\n\rIEEE_802_11_G\x10\x03\x12\x11\n\rIEEE_802_11_N\x10\x04\x12\x12\n\x0eIEEE_802_11_AC\x10\x05\x12\x12\n\x0eIEEE_802_11_AX\x10\x06\x42\x0b\n\tinterface\x1a\xe7\x01\n\rQualification\x12\x38\n\x0c\x63omponent_id\x18\x01 \x01(\x0b\x32\".chromiumos.config.api.ComponentId\x12\x45\n\x06status\x18\x02 \x01(\x0e\x32\x35.chromiumos.config.api.Component.Qualification.Status\"U\n\x06Status\x12\x12\n\x0eSTATUS_UNKNOWN\x10\x00\x12\r\n\tREQUESTED\x10\x01\x12\x19\n\x15TECHNICALLY_QUALIFIED\x10\x02\x12\r\n\tQUALIFIED\x10\x03\x1a\x19\n\tAmplifier\x12\x0c\n\x04name\x18\x01 \x01(\t\x1a\x1a\n\nAudioCodec\x12\x0c\n\x04name\x18\x01 \x01(\t\x1a\x9a\x01\n\x07\x42\x61ttery\x12\r\n\x05model\x18\x01 \x01(\t\x12G\n\ntechnology\x18\x02 \x01(\x0e\x32\x33.chromiumos.config.api.Component.Battery.Technology\"7\n\nTechnology\x12\x10\n\x0cTECH_UNKNOWN\x10\x00\x12\n\n\x06LI_ION\x10\x01\x12\x0b\n\x07LI_POLY\x10\x02\x1a \n\tFlashChip\x12\x13\n\x0bpart_number\x18\x01 \x01(\t\x1a)\n\x12\x45mbeddedController\x12\x13\n\x0bpart_number\x18\x01 \x01(\t\x1a\x86\x02\n\x07Storage\x12\x14\n\x0c\x65mmc5_fw_ver\x18\x01 \x01(\t\x12\x0e\n\x06manfid\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\r\n\x05oemid\x18\x04 \x01(\t\x12\x0b\n\x03prv\x18\x05 \x01(\t\x12\x0f\n\x07sectors\x18\x06 \x01(\t\x12\x42\n\x04type\x18\x07 \x01(\x0e\x32\x34.chromiumos.config.api.Component.Storage.StorageType\x12\x0f\n\x07size_gb\x18\x08 \x01(\r\"E\n\x0bStorageType\x12\x18\n\x14STORAGE_TYPE_UNKNOWN\x10\x00\x12\x08\n\x04\x45MMC\x10\x01\x12\x08\n\x04NVME\x10\x02\x12\x08\n\x04SATA\x10\x03\x1a\x31\n\x03Tpm\x12\x19\n\x11manufacturer_info\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x1a\x93\x01\n\x06Stylus\x12=\n\x03usb\x18\x01 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.UsbH\x00\x12=\n\x03i2c\x18\x02 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.I2CH\x00\x42\x0b\n\tinterfaceB\x06\n\x04typeB*Z(go.chromium.org/chromiumos/config/go/apib\x06proto3'
+  serialized_pb=b'\n%chromiumos/config/api/component.proto\x12\x15\x63hromiumos.config.api\x1a(chromiumos/config/api/component_id.proto\x1a&chromiumos/config/api/partner_id.proto\"\xf6&\n\tComponent\x12.\n\x02id\x18\x01 \x01(\x0b\x32\".chromiumos.config.api.ComponentId\x12\x39\n\x0fmanufacturer_id\x18\x08 \x01(\x0b\x32 .chromiumos.config.api.PartnerId\x12\x0c\n\x04name\x18\t \x01(\t\x12\x11\n\thwid_type\x18\x19 \x01(\t\x12\x12\n\nhwid_label\x18\x14 \x01(\t\x12\x36\n\x06\x61vl_id\x18\x15 \x01(\x0b\x32&.chromiumos.config.api.Component.AVLId\x12\x13\n\x0bpart_number\x18\x16 \x01(\t\x12\x33\n\x03soc\x18\x02 \x01(\x0b\x32$.chromiumos.config.api.Component.SocH\x00\x12\x39\n\x06memory\x18\x03 \x01(\x0b\x32\'.chromiumos.config.api.Component.MemoryH\x00\x12?\n\tbluetooth\x18\x04 \x01(\x0b\x32*.chromiumos.config.api.Component.BluetoothH\x00\x12\x39\n\x06\x63\x61mera\x18\x05 \x01(\x0b\x32\'.chromiumos.config.api.Component.CameraH\x00\x12=\n\x0btouchscreen\x18\x06 \x01(\x0b\x32&.chromiumos.config.api.Component.TouchH\x00\x12\x35\n\x04wifi\x18\x07 \x01(\x0b\x32%.chromiumos.config.api.Component.WifiH\x00\x12:\n\x08touchpad\x18\n \x01(\x0b\x32&.chromiumos.config.api.Component.TouchH\x00\x12\x46\n\rdisplay_panel\x18\x0b \x01(\x0b\x32-.chromiumos.config.api.Component.DisplayPanelH\x00\x12\x42\n\x0b\x61udio_codec\x18\x0c \x01(\x0b\x32+.chromiumos.config.api.Component.AudioCodecH\x00\x12;\n\x07\x62\x61ttery\x18\r \x01(\x0b\x32(.chromiumos.config.api.Component.BatteryH\x00\x12\x43\n\rec_flash_chip\x18\x0e \x01(\x0b\x32*.chromiumos.config.api.Component.FlashChipH\x00\x12G\n\x11system_flash_chip\x18\x0f \x01(\x0b\x32*.chromiumos.config.api.Component.FlashChipH\x00\x12\x41\n\x02\x65\x63\x18\x10 \x01(\x0b\x32\x33.chromiumos.config.api.Component.EmbeddedControllerH\x00\x12;\n\x07storage\x18\x11 \x01(\x0b\x32(.chromiumos.config.api.Component.StorageH\x00\x12\x33\n\x03tpm\x18\x12 \x01(\x0b\x32$.chromiumos.config.api.Component.TpmH\x00\x12\x42\n\x08usb_host\x18\x13 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.UsbH\x00\x12\x39\n\x06stylus\x18\x17 \x01(\x0b\x32\'.chromiumos.config.api.Component.StylusH\x00\x12?\n\tamplifier\x18\x18 \x01(\x0b\x32*.chromiumos.config.api.Component.AmplifierH\x00\x12M\n\x0c\x64p_converter\x18\x1a \x01(\x0b\x32\x35.chromiumos.config.api.Component.DisplayPortConverterH\x00\x1a!\n\x05\x41VLId\x12\x0b\n\x03\x63id\x18\x01 \x01(\x05\x12\x0b\n\x03qid\x18\x02 \x01(\x05\x1a\xb7\x01\n\tInterface\x1a&\n\x03I2C\x12\x0f\n\x07product\x18\x01 \x01(\t\x12\x0e\n\x06vendor\x18\x02 \x01(\t\x1a@\n\x03Usb\x12\x11\n\tvendor_id\x18\x01 \x01(\t\x12\x12\n\nproduct_id\x18\x02 \x01(\t\x12\x12\n\nbcd_device\x18\x03 \x01(\t\x1a@\n\x03Pci\x12\x11\n\tvendor_id\x18\x01 \x01(\t\x12\x11\n\tdevice_id\x18\x02 \x01(\t\x12\x13\n\x0brevision_id\x18\x03 \x01(\t\x1a\xf7\x02\n\x03Soc\x12;\n\x06\x66\x61mily\x18\x01 \x01(\x0b\x32+.chromiumos.config.api.Component.Soc.Family\x12\r\n\x05model\x18\x02 \x01(\t\x12\r\n\x05\x63ores\x18\x03 \x01(\x05\x12>\n\x08\x66\x65\x61tures\x18\x04 \x03(\x0e\x32,.chromiumos.config.api.Component.Soc.Feature\x1aW\n\x06\x46\x61mily\x12?\n\x04\x61rch\x18\x01 \x01(\x0e\x32\x31.chromiumos.config.api.Component.Soc.Architecture\x12\x0c\n\x04name\x18\x02 \x01(\t\"S\n\x0c\x41rchitecture\x12\x1a\n\x16\x41RCHITECTURE_UNDEFINED\x10\x00\x12\x07\n\x03X86\x10\x01\x12\n\n\x06X86_64\x10\x02\x12\x07\n\x03\x41RM\x10\x03\x12\t\n\x05\x41RM64\x10\x04\"\'\n\x07\x46\x65\x61ture\x12\x13\n\x0f\x46\x45\x41TURE_UNKNOWN\x10\x00\x12\x07\n\x03SMT\x10\x01\x1a\xb4\x02\n\x06Memory\x12@\n\x07profile\x18\x01 \x01(\x0b\x32/.chromiumos.config.api.Component.Memory.Profile\x12\x13\n\x0bpart_number\x18\x02 \x01(\t\x1ap\n\x07Profile\x12:\n\x04type\x18\x01 \x01(\x0e\x32,.chromiumos.config.api.Component.Memory.Type\x12\x11\n\tspeed_mhz\x18\x02 \x01(\x05\x12\x16\n\x0esize_megabytes\x18\x03 \x01(\x05\"[\n\x04Type\x12\x12\n\x0eTYPE_UNDEFINED\x10\x00\x12\x07\n\x03\x44\x44R\x10\x01\x12\x08\n\x04\x44\x44R2\x10\x02\x12\x08\n\x04\x44\x44R3\x10\x03\x12\x08\n\x04\x44\x44R4\x10\x04\x12\x0b\n\x07LP_DDR3\x10\x05\x12\x0b\n\x07LP_DDR4\x10\x06J\x04\x08\x03\x10\x04\x1aZ\n\tBluetooth\x12;\n\x03usb\x18\x04 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.UsbJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04\x1a\x93\x03\n\x06\x43\x61mera\x12\x41\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0e\x32/.chromiumos.config.api.Component.Camera.Feature\x12\x45\n\nclock_type\x18\x02 \x01(\x0e\x32\x31.chromiumos.config.api.Component.Camera.ClockType\x12=\n\x03usb\x18\x03 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.UsbH\x00\x12=\n\x03pci\x18\x04 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.PciH\x00\"0\n\x07\x46\x65\x61ture\x12\x13\n\x0f\x46\x45\x41TURE_UNKNOWN\x10\x00\x12\x10\n\x0c\x41\x43TIVITY_LED\x10\x01\"B\n\tClockType\x12\x18\n\x14\x43LOCK_TYPE_UNDEFINED\x10\x00\x12\r\n\tMONOTONIC\x10\x01\x12\x0c\n\x08\x42OOTTIME\x10\x02\x42\x0b\n\tinterface\x1a\xc9\x02\n\x0c\x44isplayPanel\x12\x12\n\nproduct_id\x18\x01 \x01(\t\x12L\n\nproperties\x18\x02 \x01(\x0b\x32\x38.chromiumos.config.api.Component.DisplayPanel.Properties\x1a\xad\x01\n\nProperties\x12\x10\n\x08width_px\x18\x01 \x01(\x05\x12\x11\n\theight_px\x18\x02 \x01(\x05\x12\x1a\n\x12\x64iagonal_milliinch\x18\x03 \x01(\x05\x12\x15\n\rpixels_per_in\x18\x04 \x01(\x05\x12G\n\x08\x66\x65\x61tures\x18\x05 \x03(\x0e\x32\x35.chromiumos.config.api.Component.DisplayPanel.Feature\"\'\n\x07\x46\x65\x61ture\x12\x13\n\x0f\x46\x45\x41TURE_UNKNOWN\x10\x00\x12\x07\n\x03HDR\x10\x01\x1a\x9e\x02\n\x05Touch\x12\x12\n\nproduct_id\x18\x02 \x01(\t\x12\x12\n\nfw_version\x18\x03 \x01(\t\x12\x16\n\x0eproduct_series\x18\x05 \x01(\t\x12\x13\n\x0b\x66w_checksum\x18\x06 \x01(\t\x12>\n\x04type\x18\x07 \x01(\x0e\x32\x30.chromiumos.config.api.Component.Touch.TouchType\x12;\n\x03usb\x18\x08 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.Usb\"7\n\tTouchType\x12\x18\n\x14TOUCH_TYPE_UNDEFINED\x10\x00\x12\x07\n\x03USB\x10\x01\x12\x07\n\x03I2C\x10\x02J\x04\x08\x01\x10\x02J\x04\x08\x04\x10\x05\x1a\xc8\x02\n\x04Wifi\x12=\n\x03pci\x18\x01 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.PciH\x00\x12T\n\x18supported_wlan_protocols\x18\x02 \x03(\x0e\x32\x32.chromiumos.config.api.Component.Wifi.WLANProtocol\"\x9d\x01\n\x0cWLANProtocol\x12\x19\n\x15WLAN_PROTOCOL_UNKNOWN\x10\x00\x12\x11\n\rIEEE_802_11_A\x10\x01\x12\x11\n\rIEEE_802_11_B\x10\x02\x12\x11\n\rIEEE_802_11_G\x10\x03\x12\x11\n\rIEEE_802_11_N\x10\x04\x12\x12\n\x0eIEEE_802_11_AC\x10\x05\x12\x12\n\x0eIEEE_802_11_AX\x10\x06\x42\x0b\n\tinterface\x1a\xe7\x01\n\rQualification\x12\x38\n\x0c\x63omponent_id\x18\x01 \x01(\x0b\x32\".chromiumos.config.api.ComponentId\x12\x45\n\x06status\x18\x02 \x01(\x0e\x32\x35.chromiumos.config.api.Component.Qualification.Status\"U\n\x06Status\x12\x12\n\x0eSTATUS_UNKNOWN\x10\x00\x12\r\n\tREQUESTED\x10\x01\x12\x19\n\x15TECHNICALLY_QUALIFIED\x10\x02\x12\r\n\tQUALIFIED\x10\x03\x1a\x9a\x01\n\tAmplifier\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x44\n\x08\x66\x65\x61tures\x18\x02 \x03(\x0e\x32\x32.chromiumos.config.api.Component.Amplifier.Feature\"9\n\x07\x46\x65\x61ture\x12\x13\n\x0f\x46\x45\x41TURE_UNKNOWN\x10\x00\x12\x19\n\x15\x42OOT_TIME_CALIBRATION\x10\x01\x1a\x1a\n\nAudioCodec\x12\x0c\n\x04name\x18\x01 \x01(\t\x1a\x9a\x01\n\x07\x42\x61ttery\x12\r\n\x05model\x18\x01 \x01(\t\x12G\n\ntechnology\x18\x02 \x01(\x0e\x32\x33.chromiumos.config.api.Component.Battery.Technology\"7\n\nTechnology\x12\x10\n\x0cTECH_UNKNOWN\x10\x00\x12\n\n\x06LI_ION\x10\x01\x12\x0b\n\x07LI_POLY\x10\x02\x1a \n\tFlashChip\x12\x13\n\x0bpart_number\x18\x01 \x01(\t\x1a)\n\x12\x45mbeddedController\x12\x13\n\x0bpart_number\x18\x01 \x01(\t\x1a\x86\x02\n\x07Storage\x12\x14\n\x0c\x65mmc5_fw_ver\x18\x01 \x01(\t\x12\x0e\n\x06manfid\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\r\n\x05oemid\x18\x04 \x01(\t\x12\x0b\n\x03prv\x18\x05 \x01(\t\x12\x0f\n\x07sectors\x18\x06 \x01(\t\x12\x42\n\x04type\x18\x07 \x01(\x0e\x32\x34.chromiumos.config.api.Component.Storage.StorageType\x12\x0f\n\x07size_gb\x18\x08 \x01(\r\"E\n\x0bStorageType\x12\x18\n\x14STORAGE_TYPE_UNKNOWN\x10\x00\x12\x08\n\x04\x45MMC\x10\x01\x12\x08\n\x04NVME\x10\x02\x12\x08\n\x04SATA\x10\x03\x1a\x31\n\x03Tpm\x12\x19\n\x11manufacturer_info\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x1a\x93\x01\n\x06Stylus\x12=\n\x03usb\x18\x01 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.UsbH\x00\x12=\n\x03i2c\x18\x02 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.I2CH\x00\x42\x0b\n\tinterface\x1a$\n\x14\x44isplayPortConverter\x12\x0c\n\x04name\x18\x01 \x01(\tB\x06\n\x04typeB*Z(go.chromium.org/chromiumos/config/go/apib\x06proto3'
   ,
   dependencies=[chromiumos_dot_config_dot_api_dot_component__id__pb2.DESCRIPTOR,chromiumos_dot_config_dot_api_dot_partner__id__pb2.DESCRIPTOR,])
 
@@ -62,8 +62,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=2000,
-  serialized_end=2083,
+  serialized_start=2079,
+  serialized_end=2162,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_SOC_ARCHITECTURE)
 
@@ -87,8 +87,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=2085,
-  serialized_end=2124,
+  serialized_start=2164,
+  serialized_end=2203,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_SOC_FEATURE)
 
@@ -137,8 +137,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=2338,
-  serialized_end=2429,
+  serialized_start=2417,
+  serialized_end=2508,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_MEMORY_TYPE)
 
@@ -162,8 +162,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=2804,
-  serialized_end=2852,
+  serialized_start=2883,
+  serialized_end=2931,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_CAMERA_FEATURE)
 
@@ -192,11 +192,36 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=2854,
-  serialized_end=2920,
+  serialized_start=2933,
+  serialized_end=2999,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_CAMERA_CLOCKTYPE)
 
+_COMPONENT_DISPLAYPANEL_FEATURE = _descriptor.EnumDescriptor(
+  name='Feature',
+  full_name='chromiumos.config.api.Component.DisplayPanel.Feature',
+  filename=None,
+  file=DESCRIPTOR,
+  create_key=_descriptor._internal_create_key,
+  values=[
+    _descriptor.EnumValueDescriptor(
+      name='FEATURE_UNKNOWN', index=0, number=0,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='HDR', index=1, number=1,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+  ],
+  containing_type=None,
+  serialized_options=None,
+  serialized_start=3305,
+  serialized_end=3344,
+)
+_sym_db.RegisterEnumDescriptor(_COMPONENT_DISPLAYPANEL_FEATURE)
+
 _COMPONENT_TOUCH_TOUCHTYPE = _descriptor.EnumDescriptor(
   name='TouchType',
   full_name='chromiumos.config.api.Component.Touch.TouchType',
@@ -222,8 +247,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=3372,
-  serialized_end=3427,
+  serialized_start=3566,
+  serialized_end=3621,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_TOUCH_TOUCHTYPE)
 
@@ -272,8 +297,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=3600,
-  serialized_end=3757,
+  serialized_start=3794,
+  serialized_end=3951,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_WIFI_WLANPROTOCOL)
 
@@ -307,11 +332,36 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=3919,
-  serialized_end=4004,
+  serialized_start=4113,
+  serialized_end=4198,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_QUALIFICATION_STATUS)
 
+_COMPONENT_AMPLIFIER_FEATURE = _descriptor.EnumDescriptor(
+  name='Feature',
+  full_name='chromiumos.config.api.Component.Amplifier.Feature',
+  filename=None,
+  file=DESCRIPTOR,
+  create_key=_descriptor._internal_create_key,
+  values=[
+    _descriptor.EnumValueDescriptor(
+      name='FEATURE_UNKNOWN', index=0, number=0,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='BOOT_TIME_CALIBRATION', index=1, number=1,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+  ],
+  containing_type=None,
+  serialized_options=None,
+  serialized_start=4298,
+  serialized_end=4355,
+)
+_sym_db.RegisterEnumDescriptor(_COMPONENT_AMPLIFIER_FEATURE)
+
 _COMPONENT_BATTERY_TECHNOLOGY = _descriptor.EnumDescriptor(
   name='Technology',
   full_name='chromiumos.config.api.Component.Battery.Technology',
@@ -337,8 +387,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4161,
-  serialized_end=4216,
+  serialized_start=4485,
+  serialized_end=4540,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_BATTERY_TECHNOLOGY)
 
@@ -372,8 +422,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4489,
-  serialized_end=4558,
+  serialized_start=4813,
+  serialized_end=4882,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_STORAGE_STORAGETYPE)
 
@@ -412,8 +462,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1527,
-  serialized_end=1560,
+  serialized_start=1606,
+  serialized_end=1639,
 )
 
 _COMPONENT_INTERFACE_I2C = _descriptor.Descriptor(
@@ -450,8 +500,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1576,
-  serialized_end=1614,
+  serialized_start=1655,
+  serialized_end=1693,
 )
 
 _COMPONENT_INTERFACE_USB = _descriptor.Descriptor(
@@ -495,8 +545,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1616,
-  serialized_end=1680,
+  serialized_start=1695,
+  serialized_end=1759,
 )
 
 _COMPONENT_INTERFACE_PCI = _descriptor.Descriptor(
@@ -540,8 +590,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1682,
-  serialized_end=1746,
+  serialized_start=1761,
+  serialized_end=1825,
 )
 
 _COMPONENT_INTERFACE = _descriptor.Descriptor(
@@ -564,8 +614,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1563,
-  serialized_end=1746,
+  serialized_start=1642,
+  serialized_end=1825,
 )
 
 _COMPONENT_SOC_FAMILY = _descriptor.Descriptor(
@@ -602,8 +652,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1911,
-  serialized_end=1998,
+  serialized_start=1990,
+  serialized_end=2077,
 )
 
 _COMPONENT_SOC = _descriptor.Descriptor(
@@ -656,8 +706,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1749,
-  serialized_end=2124,
+  serialized_start=1828,
+  serialized_end=2203,
 )
 
 _COMPONENT_MEMORY_PROFILE = _descriptor.Descriptor(
@@ -701,8 +751,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2224,
-  serialized_end=2336,
+  serialized_start=2303,
+  serialized_end=2415,
 )
 
 _COMPONENT_MEMORY = _descriptor.Descriptor(
@@ -740,8 +790,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2127,
-  serialized_end=2435,
+  serialized_start=2206,
+  serialized_end=2514,
 )
 
 _COMPONENT_BLUETOOTH = _descriptor.Descriptor(
@@ -771,8 +821,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2437,
-  serialized_end=2527,
+  serialized_start=2516,
+  serialized_end=2606,
 )
 
 _COMPONENT_CAMERA = _descriptor.Descriptor(
@@ -830,8 +880,8 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=2530,
-  serialized_end=2933,
+  serialized_start=2609,
+  serialized_end=3012,
 )
 
 _COMPONENT_DISPLAYPANEL_PROPERTIES = _descriptor.Descriptor(
@@ -870,6 +920,13 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='features', full_name='chromiumos.config.api.Component.DisplayPanel.Properties.features', index=4,
+      number=5, type=14, cpp_type=8, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -882,8 +939,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3050,
-  serialized_end=3150,
+  serialized_start=3130,
+  serialized_end=3303,
 )
 
 _COMPONENT_DISPLAYPANEL = _descriptor.Descriptor(
@@ -913,6 +970,7 @@
   ],
   nested_types=[_COMPONENT_DISPLAYPANEL_PROPERTIES, ],
   enum_types=[
+    _COMPONENT_DISPLAYPANEL_FEATURE,
   ],
   serialized_options=None,
   is_extendable=False,
@@ -920,8 +978,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2936,
-  serialized_end=3150,
+  serialized_start=3015,
+  serialized_end=3344,
 )
 
 _COMPONENT_TOUCH = _descriptor.Descriptor(
@@ -987,8 +1045,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3153,
-  serialized_end=3439,
+  serialized_start=3347,
+  serialized_end=3633,
 )
 
 _COMPONENT_WIFI = _descriptor.Descriptor(
@@ -1031,8 +1089,8 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=3442,
-  serialized_end=3770,
+  serialized_start=3636,
+  serialized_end=3964,
 )
 
 _COMPONENT_QUALIFICATION = _descriptor.Descriptor(
@@ -1070,8 +1128,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3773,
-  serialized_end=4004,
+  serialized_start=3967,
+  serialized_end=4198,
 )
 
 _COMPONENT_AMPLIFIER = _descriptor.Descriptor(
@@ -1089,11 +1147,19 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='features', full_name='chromiumos.config.api.Component.Amplifier.features', index=1,
+      number=2, type=14, cpp_type=8, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
+    _COMPONENT_AMPLIFIER_FEATURE,
   ],
   serialized_options=None,
   is_extendable=False,
@@ -1101,8 +1167,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4006,
-  serialized_end=4031,
+  serialized_start=4201,
+  serialized_end=4355,
 )
 
 _COMPONENT_AUDIOCODEC = _descriptor.Descriptor(
@@ -1132,8 +1198,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4033,
-  serialized_end=4059,
+  serialized_start=4357,
+  serialized_end=4383,
 )
 
 _COMPONENT_BATTERY = _descriptor.Descriptor(
@@ -1171,8 +1237,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4062,
-  serialized_end=4216,
+  serialized_start=4386,
+  serialized_end=4540,
 )
 
 _COMPONENT_FLASHCHIP = _descriptor.Descriptor(
@@ -1202,8 +1268,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4218,
-  serialized_end=4250,
+  serialized_start=4542,
+  serialized_end=4574,
 )
 
 _COMPONENT_EMBEDDEDCONTROLLER = _descriptor.Descriptor(
@@ -1233,8 +1299,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4252,
-  serialized_end=4293,
+  serialized_start=4576,
+  serialized_end=4617,
 )
 
 _COMPONENT_STORAGE = _descriptor.Descriptor(
@@ -1314,8 +1380,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4296,
-  serialized_end=4558,
+  serialized_start=4620,
+  serialized_end=4882,
 )
 
 _COMPONENT_TPM = _descriptor.Descriptor(
@@ -1352,8 +1418,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4560,
-  serialized_end=4609,
+  serialized_start=4884,
+  serialized_end=4933,
 )
 
 _COMPONENT_STYLUS = _descriptor.Descriptor(
@@ -1395,8 +1461,39 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=4612,
-  serialized_end=4759,
+  serialized_start=4936,
+  serialized_end=5083,
+)
+
+_COMPONENT_DISPLAYPORTCONVERTER = _descriptor.Descriptor(
+  name='DisplayPortConverter',
+  full_name='chromiumos.config.api.Component.DisplayPortConverter',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='name', full_name='chromiumos.config.api.Component.DisplayPortConverter.name', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=5085,
+  serialized_end=5121,
 )
 
 _COMPONENT = _descriptor.Descriptor(
@@ -1582,10 +1679,17 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='dp_converter', full_name='chromiumos.config.api.Component.dp_converter', index=25,
+      number=26, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
-  nested_types=[_COMPONENT_AVLID, _COMPONENT_INTERFACE, _COMPONENT_SOC, _COMPONENT_MEMORY, _COMPONENT_BLUETOOTH, _COMPONENT_CAMERA, _COMPONENT_DISPLAYPANEL, _COMPONENT_TOUCH, _COMPONENT_WIFI, _COMPONENT_QUALIFICATION, _COMPONENT_AMPLIFIER, _COMPONENT_AUDIOCODEC, _COMPONENT_BATTERY, _COMPONENT_FLASHCHIP, _COMPONENT_EMBEDDEDCONTROLLER, _COMPONENT_STORAGE, _COMPONENT_TPM, _COMPONENT_STYLUS, ],
+  nested_types=[_COMPONENT_AVLID, _COMPONENT_INTERFACE, _COMPONENT_SOC, _COMPONENT_MEMORY, _COMPONENT_BLUETOOTH, _COMPONENT_CAMERA, _COMPONENT_DISPLAYPANEL, _COMPONENT_TOUCH, _COMPONENT_WIFI, _COMPONENT_QUALIFICATION, _COMPONENT_AMPLIFIER, _COMPONENT_AUDIOCODEC, _COMPONENT_BATTERY, _COMPONENT_FLASHCHIP, _COMPONENT_EMBEDDEDCONTROLLER, _COMPONENT_STORAGE, _COMPONENT_TPM, _COMPONENT_STYLUS, _COMPONENT_DISPLAYPORTCONVERTER, ],
   enum_types=[
   ],
   serialized_options=None,
@@ -1600,7 +1704,7 @@
     fields=[]),
   ],
   serialized_start=147,
-  serialized_end=4767,
+  serialized_end=5129,
 )
 
 _COMPONENT_AVLID.containing_type = _COMPONENT
@@ -1635,9 +1739,11 @@
 _COMPONENT_CAMERA.oneofs_by_name['interface'].fields.append(
   _COMPONENT_CAMERA.fields_by_name['pci'])
 _COMPONENT_CAMERA.fields_by_name['pci'].containing_oneof = _COMPONENT_CAMERA.oneofs_by_name['interface']
+_COMPONENT_DISPLAYPANEL_PROPERTIES.fields_by_name['features'].enum_type = _COMPONENT_DISPLAYPANEL_FEATURE
 _COMPONENT_DISPLAYPANEL_PROPERTIES.containing_type = _COMPONENT_DISPLAYPANEL
 _COMPONENT_DISPLAYPANEL.fields_by_name['properties'].message_type = _COMPONENT_DISPLAYPANEL_PROPERTIES
 _COMPONENT_DISPLAYPANEL.containing_type = _COMPONENT
+_COMPONENT_DISPLAYPANEL_FEATURE.containing_type = _COMPONENT_DISPLAYPANEL
 _COMPONENT_TOUCH.fields_by_name['type'].enum_type = _COMPONENT_TOUCH_TOUCHTYPE
 _COMPONENT_TOUCH.fields_by_name['usb'].message_type = _COMPONENT_INTERFACE_USB
 _COMPONENT_TOUCH.containing_type = _COMPONENT
@@ -1653,7 +1759,9 @@
 _COMPONENT_QUALIFICATION.fields_by_name['status'].enum_type = _COMPONENT_QUALIFICATION_STATUS
 _COMPONENT_QUALIFICATION.containing_type = _COMPONENT
 _COMPONENT_QUALIFICATION_STATUS.containing_type = _COMPONENT_QUALIFICATION
+_COMPONENT_AMPLIFIER.fields_by_name['features'].enum_type = _COMPONENT_AMPLIFIER_FEATURE
 _COMPONENT_AMPLIFIER.containing_type = _COMPONENT
+_COMPONENT_AMPLIFIER_FEATURE.containing_type = _COMPONENT_AMPLIFIER
 _COMPONENT_AUDIOCODEC.containing_type = _COMPONENT
 _COMPONENT_BATTERY.fields_by_name['technology'].enum_type = _COMPONENT_BATTERY_TECHNOLOGY
 _COMPONENT_BATTERY.containing_type = _COMPONENT
@@ -1673,6 +1781,7 @@
 _COMPONENT_STYLUS.oneofs_by_name['interface'].fields.append(
   _COMPONENT_STYLUS.fields_by_name['i2c'])
 _COMPONENT_STYLUS.fields_by_name['i2c'].containing_oneof = _COMPONENT_STYLUS.oneofs_by_name['interface']
+_COMPONENT_DISPLAYPORTCONVERTER.containing_type = _COMPONENT
 _COMPONENT.fields_by_name['id'].message_type = chromiumos_dot_config_dot_api_dot_component__id__pb2._COMPONENTID
 _COMPONENT.fields_by_name['manufacturer_id'].message_type = chromiumos_dot_config_dot_api_dot_partner__id__pb2._PARTNERID
 _COMPONENT.fields_by_name['avl_id'].message_type = _COMPONENT_AVLID
@@ -1694,6 +1803,7 @@
 _COMPONENT.fields_by_name['usb_host'].message_type = _COMPONENT_INTERFACE_USB
 _COMPONENT.fields_by_name['stylus'].message_type = _COMPONENT_STYLUS
 _COMPONENT.fields_by_name['amplifier'].message_type = _COMPONENT_AMPLIFIER
+_COMPONENT.fields_by_name['dp_converter'].message_type = _COMPONENT_DISPLAYPORTCONVERTER
 _COMPONENT.oneofs_by_name['type'].fields.append(
   _COMPONENT.fields_by_name['soc'])
 _COMPONENT.fields_by_name['soc'].containing_oneof = _COMPONENT.oneofs_by_name['type']
@@ -1748,6 +1858,9 @@
 _COMPONENT.oneofs_by_name['type'].fields.append(
   _COMPONENT.fields_by_name['amplifier'])
 _COMPONENT.fields_by_name['amplifier'].containing_oneof = _COMPONENT.oneofs_by_name['type']
+_COMPONENT.oneofs_by_name['type'].fields.append(
+  _COMPONENT.fields_by_name['dp_converter'])
+_COMPONENT.fields_by_name['dp_converter'].containing_oneof = _COMPONENT.oneofs_by_name['type']
 DESCRIPTOR.message_types_by_name['Component'] = _COMPONENT
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
@@ -1920,6 +2033,13 @@
     # @@protoc_insertion_point(class_scope:chromiumos.config.api.Component.Stylus)
     })
   ,
+
+  'DisplayPortConverter' : _reflection.GeneratedProtocolMessageType('DisplayPortConverter', (_message.Message,), {
+    'DESCRIPTOR' : _COMPONENT_DISPLAYPORTCONVERTER,
+    '__module__' : 'chromiumos.config.api.component_pb2'
+    # @@protoc_insertion_point(class_scope:chromiumos.config.api.Component.DisplayPortConverter)
+    })
+  ,
   'DESCRIPTOR' : _COMPONENT,
   '__module__' : 'chromiumos.config.api.component_pb2'
   # @@protoc_insertion_point(class_scope:chromiumos.config.api.Component)
@@ -1949,6 +2069,7 @@
 _sym_db.RegisterMessage(Component.Storage)
 _sym_db.RegisterMessage(Component.Tpm)
 _sym_db.RegisterMessage(Component.Stylus)
+_sym_db.RegisterMessage(Component.DisplayPortConverter)
 
 
 DESCRIPTOR._options = None
diff --git a/api/gen/chromiumos/config/api/software/wifi_config_pb2.py b/api/gen/chromiumos/config/api/software/wifi_config_pb2.py
index 25c5e64..fbc8a51 100644
--- a/api/gen/chromiumos/config/api/software/wifi_config_pb2.py
+++ b/api/gen/chromiumos/config/api/software/wifi_config_pb2.py
@@ -19,7 +19,7 @@
   syntax='proto3',
   serialized_options=b'Z1go.chromium.org/chromiumos/config/go/api/software',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n0chromiumos/config/api/software/wifi_config.proto\x12\x1e\x63hromiumos.config.api.software\"\xa7\x11\n\nWifiConfig\x12P\n\rath10k_config\x18\x01 \x01(\x0b\x32\x37.chromiumos.config.api.software.WifiConfig.Ath10kConfigH\x00\x12N\n\x0crtw88_config\x18\x02 \x01(\x0b\x32\x36.chromiumos.config.api.software.WifiConfig.Rtw88ConfigH\x00\x12N\n\x0cintel_config\x18\x03 \x01(\x0b\x32\x36.chromiumos.config.api.software.WifiConfig.IntelConfigH\x00\x1a\xa6\x02\n\x0c\x41th10kConfig\x12k\n\x17tablet_mode_power_table\x18\x01 \x01(\x0b\x32J.chromiumos.config.api.software.WifiConfig.Ath10kConfig.TransmitPowerChain\x12o\n\x1bnon_tablet_mode_power_table\x18\x02 \x01(\x0b\x32J.chromiumos.config.api.software.WifiConfig.Ath10kConfig.TransmitPowerChain\x1a\x38\n\x12TransmitPowerChain\x12\x10\n\x08limit_2g\x18\x01 \x01(\r\x12\x10\n\x08limit_5g\x18\x02 \x01(\r\x1a\x87\x05\n\x0bRtw88Config\x12j\n\x17tablet_mode_power_table\x18\x01 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.Rtw88Config.TransmitPowerChain\x12n\n\x1bnon_tablet_mode_power_table\x18\x02 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.Rtw88Config.TransmitPowerChain\x12U\n\noffset_fcc\x18\x03 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.Rtw88Config.GeoOffsets\x12T\n\toffset_eu\x18\x04 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.Rtw88Config.GeoOffsets\x12W\n\x0coffset_other\x18\x05 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.Rtw88Config.GeoOffsets\x1a\x62\n\x12TransmitPowerChain\x12\x10\n\x08limit_2g\x18\x01 \x01(\r\x12\x12\n\nlimit_5g_1\x18\x02 \x01(\r\x12\x12\n\nlimit_5g_3\x18\x03 \x01(\r\x12\x12\n\nlimit_5g_4\x18\x04 \x01(\r\x1a\x32\n\nGeoOffsets\x12\x11\n\toffset_2g\x18\x01 \x01(\r\x12\x11\n\toffset_5g\x18\x02 \x01(\r\x1a\xe4\x07\n\x0bIntelConfig\x12l\n\x19tablet_mode_power_table_a\x18\x01 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain\x12l\n\x19tablet_mode_power_table_b\x18\x02 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain\x12p\n\x1dnon_tablet_mode_power_table_a\x18\x03 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain\x12p\n\x1dnon_tablet_mode_power_table_b\x18\x04 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain\x12\x14\n\x0cwgds_version\x18\x05 \x01(\r\x12U\n\noffset_fcc\x18\x06 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets\x12T\n\toffset_eu\x18\x07 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets\x12W\n\x0coffset_other\x18\x08 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets\x1av\n\x12TransmitPowerChain\x12\x10\n\x08limit_2g\x18\x01 \x01(\r\x12\x12\n\nlimit_5g_1\x18\x02 \x01(\r\x12\x12\n\nlimit_5g_2\x18\x03 \x01(\r\x12\x12\n\nlimit_5g_3\x18\x04 \x01(\r\x12\x12\n\nlimit_5g_4\x18\x05 \x01(\r\x1a\x80\x01\n\nGeoOffsets\x12\x0e\n\x06max_2g\x18\x01 \x01(\r\x12\x13\n\x0boffset_2g_a\x18\x02 \x01(\r\x12\x13\n\x0boffset_2g_b\x18\x03 \x01(\r\x12\x0e\n\x06max_5g\x18\x04 \x01(\r\x12\x13\n\x0boffset_5g_a\x18\x05 \x01(\r\x12\x13\n\x0boffset_5g_b\x18\x06 \x01(\rB\r\n\x0bwifi_configB3Z1go.chromium.org/chromiumos/config/go/api/softwareb\x06proto3'
+  serialized_pb=b'\n0chromiumos/config/api/software/wifi_config.proto\x12\x1e\x63hromiumos.config.api.software\"\xc7$\n\nWifiConfig\x12P\n\rath10k_config\x18\x01 \x01(\x0b\x32\x37.chromiumos.config.api.software.WifiConfig.Ath10kConfigH\x00\x12N\n\x0crtw88_config\x18\x02 \x01(\x0b\x32\x36.chromiumos.config.api.software.WifiConfig.Rtw88ConfigH\x00\x12N\n\x0cintel_config\x18\x03 \x01(\x0b\x32\x36.chromiumos.config.api.software.WifiConfig.IntelConfigH\x00\x1a\xa6\x02\n\x0c\x41th10kConfig\x12k\n\x17tablet_mode_power_table\x18\x01 \x01(\x0b\x32J.chromiumos.config.api.software.WifiConfig.Ath10kConfig.TransmitPowerChain\x12o\n\x1bnon_tablet_mode_power_table\x18\x02 \x01(\x0b\x32J.chromiumos.config.api.software.WifiConfig.Ath10kConfig.TransmitPowerChain\x1a\x38\n\x12TransmitPowerChain\x12\x10\n\x08limit_2g\x18\x01 \x01(\r\x12\x10\n\x08limit_5g\x18\x02 \x01(\r\x1a\x87\x05\n\x0bRtw88Config\x12j\n\x17tablet_mode_power_table\x18\x01 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.Rtw88Config.TransmitPowerChain\x12n\n\x1bnon_tablet_mode_power_table\x18\x02 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.Rtw88Config.TransmitPowerChain\x12U\n\noffset_fcc\x18\x03 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.Rtw88Config.GeoOffsets\x12T\n\toffset_eu\x18\x04 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.Rtw88Config.GeoOffsets\x12W\n\x0coffset_other\x18\x05 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.Rtw88Config.GeoOffsets\x1a\x62\n\x12TransmitPowerChain\x12\x10\n\x08limit_2g\x18\x01 \x01(\r\x12\x12\n\nlimit_5g_1\x18\x02 \x01(\r\x12\x12\n\nlimit_5g_3\x18\x03 \x01(\r\x12\x12\n\nlimit_5g_4\x18\x04 \x01(\r\x1a\x32\n\nGeoOffsets\x12\x11\n\toffset_2g\x18\x01 \x01(\r\x12\x11\n\toffset_5g\x18\x02 \x01(\r\x1a\x84\x1b\n\x0bIntelConfig\x12R\n\tsar_table\x18\x01 \x01(\x0b\x32?.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable\x12R\n\nwgds_table\x18\x02 \x01(\x0b\x32>.chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets\x12O\n\tant_table\x18\x03 \x01(\x0b\x32<.chromiumos.config.api.software.WifiConfig.IntelConfig.Gains\x12R\n\nwtas_table\x18\x04 \x01(\x0b\x32>.chromiumos.config.api.software.WifiConfig.IntelConfig.Average\x12G\n\x03\x64sm\x18\x05 \x01(\x0b\x32:.chromiumos.config.api.software.WifiConfig.IntelConfig.DSM\x1a\xee\t\n\x08SarTable\x12\x19\n\x11sar_table_version\x18\x01 \x01(\r\x12u\n\x19tablet_mode_power_table_a\x18\x03 \x01(\x0b\x32R.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain\x12u\n\x19tablet_mode_power_table_b\x18\x04 \x01(\x0b\x32R.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain\x12y\n\x1dnon_tablet_mode_power_table_a\x18\x05 \x01(\x0b\x32R.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain\x12y\n\x1dnon_tablet_mode_power_table_b\x18\x06 \x01(\x0b\x32R.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain\x12y\n\x1d\x63\x64\x62_tablet_mode_power_table_a\x18\x07 \x01(\x0b\x32R.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain\x12y\n\x1d\x63\x64\x62_tablet_mode_power_table_b\x18\x08 \x01(\x0b\x32R.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain\x12}\n!cdb_non_tablet_mode_power_table_a\x18\t \x01(\x0b\x32R.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain\x12}\n!cdb_non_tablet_mode_power_table_b\x18\n \x01(\x0b\x32R.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain\x1a\xee\x01\n\x12TransmitPowerChain\x12\x10\n\x08limit_2g\x18\x01 \x01(\r\x12\x12\n\nlimit_5g_1\x18\x02 \x01(\r\x12\x12\n\nlimit_5g_2\x18\x03 \x01(\r\x12\x12\n\nlimit_5g_3\x18\x04 \x01(\r\x12\x12\n\nlimit_5g_4\x18\x05 \x01(\r\x12\x12\n\nlimit_5g_5\x18\x06 \x01(\r\x12\x12\n\nlimit_6g_1\x18\x07 \x01(\r\x12\x12\n\nlimit_6g_2\x18\x08 \x01(\r\x12\x12\n\nlimit_6g_3\x18\t \x01(\r\x12\x12\n\nlimit_6g_4\x18\n \x01(\r\x12\x12\n\nlimit_6g_5\x18\x0b \x01(\r\x1a\xfa\x03\n\x07Offsets\x12\x14\n\x0cwgds_version\x18\x01 \x01(\r\x12]\n\noffset_fcc\x18\x02 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets\x12\\\n\toffset_eu\x18\x03 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets\x12_\n\x0coffset_other\x18\x04 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets\x1a\xba\x01\n\nGeoOffsets\x12\x0e\n\x06max_2g\x18\x01 \x01(\r\x12\x13\n\x0boffset_2g_a\x18\x02 \x01(\r\x12\x13\n\x0boffset_2g_b\x18\x03 \x01(\r\x12\x0e\n\x06max_5g\x18\x04 \x01(\r\x12\x13\n\x0boffset_5g_a\x18\x05 \x01(\r\x12\x13\n\x0boffset_5g_b\x18\x06 \x01(\r\x12\x0e\n\x06max_6g\x18\x07 \x01(\r\x12\x13\n\x0boffset_6g_a\x18\x08 \x01(\r\x12\x13\n\x0boffset_6g_b\x18\t \x01(\r\x1a\x8c\x04\n\x05Gains\x12\x19\n\x11\x61nt_table_version\x18\x01 \x01(\r\x12\x15\n\rant_mode_ppag\x18\x02 \x01(\r\x12\x62\n\x10\x61nt_gain_table_a\x18\x03 \x01(\x0b\x32H.chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain\x12\x62\n\x10\x61nt_gain_table_b\x18\x04 \x01(\x0b\x32H.chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain\x1a\x88\x02\n\x0b\x41ntennaGain\x12\x13\n\x0b\x61nt_gain_2g\x18\x01 \x01(\r\x12\x15\n\rant_gain_5g_1\x18\x02 \x01(\r\x12\x15\n\rant_gain_5g_2\x18\x03 \x01(\r\x12\x15\n\rant_gain_5g_3\x18\x04 \x01(\r\x12\x15\n\rant_gain_5g_4\x18\x05 \x01(\r\x12\x15\n\rant_gain_5g_5\x18\x06 \x01(\r\x12\x15\n\rant_gain_6g_1\x18\x07 \x01(\r\x12\x15\n\rant_gain_6g_2\x18\x08 \x01(\r\x12\x15\n\rant_gain_6g_3\x18\t \x01(\r\x12\x15\n\rant_gain_6g_4\x18\n \x01(\r\x12\x15\n\rant_gain_6g_5\x18\x0b \x01(\r\x1a\x87\x04\n\x07\x41verage\x12\x17\n\x0fsar_avg_version\x18\x01 \x01(\r\x12\x15\n\rtas_selection\x18\x02 \x01(\r\x12\x15\n\rtas_list_size\x18\x03 \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_1\x18\x04 \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_2\x18\x05 \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_3\x18\x06 \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_4\x18\x07 \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_5\x18\x08 \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_6\x18\t \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_7\x18\n \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_8\x18\x0b \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_9\x18\x0c \x01(\r\x12\x1a\n\x12\x64\x65ny_list_entry_10\x18\r \x01(\r\x12\x1a\n\x12\x64\x65ny_list_entry_11\x18\x0e \x01(\r\x12\x1a\n\x12\x64\x65ny_list_entry_12\x18\x0f \x01(\r\x12\x1a\n\x12\x64\x65ny_list_entry_13\x18\x10 \x01(\r\x12\x1a\n\x12\x64\x65ny_list_entry_14\x18\x11 \x01(\r\x12\x1a\n\x12\x64\x65ny_list_entry_15\x18\x12 \x01(\r\x12\x1a\n\x12\x64\x65ny_list_entry_16\x18\x13 \x01(\r\x1a\xd7\x01\n\x03\x44SM\x12#\n\x1b\x64isable_active_sdr_channels\x18\x02 \x01(\x03\x12!\n\x19support_indonesia_5g_band\x18\x03 \x01(\x03\x12\x1f\n\x17support_ultra_high_band\x18\x04 \x01(\x03\x12!\n\x19regulatory_configurations\x18\x05 \x01(\x03\x12\x1b\n\x13uart_configurations\x18\x06 \x01(\x03\x12\x17\n\x0f\x65nablement_11ax\x18\x07 \x01(\x03\x12\x0e\n\x06unii_4\x18\x08 \x01(\x03\x42\r\n\x0bwifi_configB3Z1go.chromium.org/chromiumos/config/go/api/softwareb\x06proto3'
 )
 
 
@@ -250,115 +250,91 @@
   serialized_end=1286,
 )
 
-_WIFICONFIG_INTELCONFIG_TRANSMITPOWERCHAIN = _descriptor.Descriptor(
+_WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN = _descriptor.Descriptor(
   name='TransmitPowerChain',
-  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain',
+  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain',
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
   create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
-      name='limit_2g', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain.limit_2g', index=0,
+      name='limit_2g', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_2g', index=0,
       number=1, type=13, cpp_type=3, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
-      name='limit_5g_1', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain.limit_5g_1', index=1,
+      name='limit_5g_1', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_5g_1', index=1,
       number=2, type=13, cpp_type=3, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
-      name='limit_5g_2', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain.limit_5g_2', index=2,
+      name='limit_5g_2', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_5g_2', index=2,
       number=3, type=13, cpp_type=3, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
-      name='limit_5g_3', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain.limit_5g_3', index=3,
+      name='limit_5g_3', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_5g_3', index=3,
       number=4, type=13, cpp_type=3, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
-      name='limit_5g_4', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain.limit_5g_4', index=4,
-      number=5, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=2036,
-  serialized_end=2154,
-)
-
-_WIFICONFIG_INTELCONFIG_GEOOFFSETS = _descriptor.Descriptor(
-  name='GeoOffsets',
-  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='max_2g', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets.max_2g', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='offset_2g_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets.offset_2g_a', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='offset_2g_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets.offset_2g_b', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='max_5g', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets.max_5g', index=3,
-      number=4, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='offset_5g_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets.offset_5g_a', index=4,
+      name='limit_5g_4', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_5g_4', index=4,
       number=5, type=13, cpp_type=3, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
-      name='offset_5g_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets.offset_5g_b', index=5,
+      name='limit_5g_5', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_5g_5', index=5,
       number=6, type=13, cpp_type=3, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='limit_6g_1', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_6g_1', index=6,
+      number=7, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='limit_6g_2', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_6g_2', index=7,
+      number=8, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='limit_6g_3', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_6g_3', index=8,
+      number=9, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='limit_6g_4', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_6g_4', index=9,
+      number=10, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='limit_6g_5', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_6g_5', index=10,
+      number=11, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -371,8 +347,617 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2157,
-  serialized_end=2285,
+  serialized_start=2735,
+  serialized_end=2973,
+)
+
+_WIFICONFIG_INTELCONFIG_SARTABLE = _descriptor.Descriptor(
+  name='SarTable',
+  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='sar_table_version', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.sar_table_version', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='tablet_mode_power_table_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.tablet_mode_power_table_a', index=1,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='tablet_mode_power_table_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.tablet_mode_power_table_b', index=2,
+      number=4, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='non_tablet_mode_power_table_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.non_tablet_mode_power_table_a', index=3,
+      number=5, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='non_tablet_mode_power_table_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.non_tablet_mode_power_table_b', index=4,
+      number=6, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='cdb_tablet_mode_power_table_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.cdb_tablet_mode_power_table_a', index=5,
+      number=7, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='cdb_tablet_mode_power_table_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.cdb_tablet_mode_power_table_b', index=6,
+      number=8, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='cdb_non_tablet_mode_power_table_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.cdb_non_tablet_mode_power_table_a', index=7,
+      number=9, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='cdb_non_tablet_mode_power_table_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.cdb_non_tablet_mode_power_table_b', index=8,
+      number=10, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[_WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN, ],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1711,
+  serialized_end=2973,
+)
+
+_WIFICONFIG_INTELCONFIG_OFFSETS_GEOOFFSETS = _descriptor.Descriptor(
+  name='GeoOffsets',
+  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='max_2g', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.max_2g', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='offset_2g_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.offset_2g_a', index=1,
+      number=2, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='offset_2g_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.offset_2g_b', index=2,
+      number=3, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='max_5g', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.max_5g', index=3,
+      number=4, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='offset_5g_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.offset_5g_a', index=4,
+      number=5, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='offset_5g_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.offset_5g_b', index=5,
+      number=6, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='max_6g', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.max_6g', index=6,
+      number=7, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='offset_6g_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.offset_6g_a', index=7,
+      number=8, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='offset_6g_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.offset_6g_b', index=8,
+      number=9, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=3296,
+  serialized_end=3482,
+)
+
+_WIFICONFIG_INTELCONFIG_OFFSETS = _descriptor.Descriptor(
+  name='Offsets',
+  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='wgds_version', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.wgds_version', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='offset_fcc', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.offset_fcc', index=1,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='offset_eu', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.offset_eu', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='offset_other', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.offset_other', index=3,
+      number=4, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[_WIFICONFIG_INTELCONFIG_OFFSETS_GEOOFFSETS, ],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=2976,
+  serialized_end=3482,
+)
+
+_WIFICONFIG_INTELCONFIG_GAINS_ANTENNAGAIN = _descriptor.Descriptor(
+  name='AntennaGain',
+  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='ant_gain_2g', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_2g', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_5g_1', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_5g_1', index=1,
+      number=2, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_5g_2', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_5g_2', index=2,
+      number=3, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_5g_3', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_5g_3', index=3,
+      number=4, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_5g_4', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_5g_4', index=4,
+      number=5, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_5g_5', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_5g_5', index=5,
+      number=6, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_6g_1', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_6g_1', index=6,
+      number=7, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_6g_2', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_6g_2', index=7,
+      number=8, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_6g_3', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_6g_3', index=8,
+      number=9, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_6g_4', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_6g_4', index=9,
+      number=10, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_6g_5', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_6g_5', index=10,
+      number=11, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=3745,
+  serialized_end=4009,
+)
+
+_WIFICONFIG_INTELCONFIG_GAINS = _descriptor.Descriptor(
+  name='Gains',
+  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='ant_table_version', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.ant_table_version', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='ant_mode_ppag', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.ant_mode_ppag', index=1,
+      number=2, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_table_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.ant_gain_table_a', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_table_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.ant_gain_table_b', index=3,
+      number=4, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[_WIFICONFIG_INTELCONFIG_GAINS_ANTENNAGAIN, ],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=3485,
+  serialized_end=4009,
+)
+
+_WIFICONFIG_INTELCONFIG_AVERAGE = _descriptor.Descriptor(
+  name='Average',
+  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='sar_avg_version', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.sar_avg_version', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='tas_selection', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.tas_selection', index=1,
+      number=2, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='tas_list_size', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.tas_list_size', index=2,
+      number=3, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_1', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_1', index=3,
+      number=4, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_2', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_2', index=4,
+      number=5, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_3', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_3', index=5,
+      number=6, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_4', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_4', index=6,
+      number=7, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_5', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_5', index=7,
+      number=8, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_6', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_6', index=8,
+      number=9, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_7', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_7', index=9,
+      number=10, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_8', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_8', index=10,
+      number=11, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_9', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_9', index=11,
+      number=12, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_10', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_10', index=12,
+      number=13, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_11', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_11', index=13,
+      number=14, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_12', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_12', index=14,
+      number=15, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_13', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_13', index=15,
+      number=16, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_14', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_14', index=16,
+      number=17, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_15', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_15', index=17,
+      number=18, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_16', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_16', index=18,
+      number=19, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=4012,
+  serialized_end=4531,
+)
+
+_WIFICONFIG_INTELCONFIG_DSM = _descriptor.Descriptor(
+  name='DSM',
+  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.DSM',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='disable_active_sdr_channels', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.DSM.disable_active_sdr_channels', index=0,
+      number=2, type=3, cpp_type=2, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='support_indonesia_5g_band', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.DSM.support_indonesia_5g_band', index=1,
+      number=3, type=3, cpp_type=2, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='support_ultra_high_band', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.DSM.support_ultra_high_band', index=2,
+      number=4, type=3, cpp_type=2, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='regulatory_configurations', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.DSM.regulatory_configurations', index=3,
+      number=5, type=3, cpp_type=2, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='uart_configurations', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.DSM.uart_configurations', index=4,
+      number=6, type=3, cpp_type=2, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='enablement_11ax', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.DSM.enablement_11ax', index=5,
+      number=7, type=3, cpp_type=2, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='unii_4', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.DSM.unii_4', index=6,
+      number=8, type=3, cpp_type=2, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=4534,
+  serialized_end=4749,
 )
 
 _WIFICONFIG_INTELCONFIG = _descriptor.Descriptor(
@@ -384,57 +969,36 @@
   create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
-      name='tablet_mode_power_table_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.tablet_mode_power_table_a', index=0,
+      name='sar_table', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.sar_table', index=0,
       number=1, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
-      name='tablet_mode_power_table_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.tablet_mode_power_table_b', index=1,
+      name='wgds_table', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.wgds_table', index=1,
       number=2, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
-      name='non_tablet_mode_power_table_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.non_tablet_mode_power_table_a', index=2,
+      name='ant_table', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.ant_table', index=2,
       number=3, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
-      name='non_tablet_mode_power_table_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.non_tablet_mode_power_table_b', index=3,
+      name='wtas_table', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.wtas_table', index=3,
       number=4, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
-      name='wgds_version', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.wgds_version', index=4,
-      number=5, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='offset_fcc', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.offset_fcc', index=5,
-      number=6, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='offset_eu', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.offset_eu', index=6,
-      number=7, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='offset_other', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.offset_other', index=7,
-      number=8, type=11, cpp_type=10, label=1,
+      name='dsm', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.dsm', index=4,
+      number=5, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
@@ -442,7 +1006,7 @@
   ],
   extensions=[
   ],
-  nested_types=[_WIFICONFIG_INTELCONFIG_TRANSMITPOWERCHAIN, _WIFICONFIG_INTELCONFIG_GEOOFFSETS, ],
+  nested_types=[_WIFICONFIG_INTELCONFIG_SARTABLE, _WIFICONFIG_INTELCONFIG_OFFSETS, _WIFICONFIG_INTELCONFIG_GAINS, _WIFICONFIG_INTELCONFIG_AVERAGE, _WIFICONFIG_INTELCONFIG_DSM, ],
   enum_types=[
   ],
   serialized_options=None,
@@ -452,7 +1016,7 @@
   oneofs=[
   ],
   serialized_start=1289,
-  serialized_end=2285,
+  serialized_end=4749,
 )
 
 _WIFICONFIG = _descriptor.Descriptor(
@@ -502,7 +1066,7 @@
     fields=[]),
   ],
   serialized_start=85,
-  serialized_end=2300,
+  serialized_end=4764,
 )
 
 _WIFICONFIG_ATH10KCONFIG_TRANSMITPOWERCHAIN.containing_type = _WIFICONFIG_ATH10KCONFIG
@@ -517,15 +1081,32 @@
 _WIFICONFIG_RTW88CONFIG.fields_by_name['offset_eu'].message_type = _WIFICONFIG_RTW88CONFIG_GEOOFFSETS
 _WIFICONFIG_RTW88CONFIG.fields_by_name['offset_other'].message_type = _WIFICONFIG_RTW88CONFIG_GEOOFFSETS
 _WIFICONFIG_RTW88CONFIG.containing_type = _WIFICONFIG
-_WIFICONFIG_INTELCONFIG_TRANSMITPOWERCHAIN.containing_type = _WIFICONFIG_INTELCONFIG
-_WIFICONFIG_INTELCONFIG_GEOOFFSETS.containing_type = _WIFICONFIG_INTELCONFIG
-_WIFICONFIG_INTELCONFIG.fields_by_name['tablet_mode_power_table_a'].message_type = _WIFICONFIG_INTELCONFIG_TRANSMITPOWERCHAIN
-_WIFICONFIG_INTELCONFIG.fields_by_name['tablet_mode_power_table_b'].message_type = _WIFICONFIG_INTELCONFIG_TRANSMITPOWERCHAIN
-_WIFICONFIG_INTELCONFIG.fields_by_name['non_tablet_mode_power_table_a'].message_type = _WIFICONFIG_INTELCONFIG_TRANSMITPOWERCHAIN
-_WIFICONFIG_INTELCONFIG.fields_by_name['non_tablet_mode_power_table_b'].message_type = _WIFICONFIG_INTELCONFIG_TRANSMITPOWERCHAIN
-_WIFICONFIG_INTELCONFIG.fields_by_name['offset_fcc'].message_type = _WIFICONFIG_INTELCONFIG_GEOOFFSETS
-_WIFICONFIG_INTELCONFIG.fields_by_name['offset_eu'].message_type = _WIFICONFIG_INTELCONFIG_GEOOFFSETS
-_WIFICONFIG_INTELCONFIG.fields_by_name['offset_other'].message_type = _WIFICONFIG_INTELCONFIG_GEOOFFSETS
+_WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN.containing_type = _WIFICONFIG_INTELCONFIG_SARTABLE
+_WIFICONFIG_INTELCONFIG_SARTABLE.fields_by_name['tablet_mode_power_table_a'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN
+_WIFICONFIG_INTELCONFIG_SARTABLE.fields_by_name['tablet_mode_power_table_b'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN
+_WIFICONFIG_INTELCONFIG_SARTABLE.fields_by_name['non_tablet_mode_power_table_a'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN
+_WIFICONFIG_INTELCONFIG_SARTABLE.fields_by_name['non_tablet_mode_power_table_b'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN
+_WIFICONFIG_INTELCONFIG_SARTABLE.fields_by_name['cdb_tablet_mode_power_table_a'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN
+_WIFICONFIG_INTELCONFIG_SARTABLE.fields_by_name['cdb_tablet_mode_power_table_b'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN
+_WIFICONFIG_INTELCONFIG_SARTABLE.fields_by_name['cdb_non_tablet_mode_power_table_a'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN
+_WIFICONFIG_INTELCONFIG_SARTABLE.fields_by_name['cdb_non_tablet_mode_power_table_b'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN
+_WIFICONFIG_INTELCONFIG_SARTABLE.containing_type = _WIFICONFIG_INTELCONFIG
+_WIFICONFIG_INTELCONFIG_OFFSETS_GEOOFFSETS.containing_type = _WIFICONFIG_INTELCONFIG_OFFSETS
+_WIFICONFIG_INTELCONFIG_OFFSETS.fields_by_name['offset_fcc'].message_type = _WIFICONFIG_INTELCONFIG_OFFSETS_GEOOFFSETS
+_WIFICONFIG_INTELCONFIG_OFFSETS.fields_by_name['offset_eu'].message_type = _WIFICONFIG_INTELCONFIG_OFFSETS_GEOOFFSETS
+_WIFICONFIG_INTELCONFIG_OFFSETS.fields_by_name['offset_other'].message_type = _WIFICONFIG_INTELCONFIG_OFFSETS_GEOOFFSETS
+_WIFICONFIG_INTELCONFIG_OFFSETS.containing_type = _WIFICONFIG_INTELCONFIG
+_WIFICONFIG_INTELCONFIG_GAINS_ANTENNAGAIN.containing_type = _WIFICONFIG_INTELCONFIG_GAINS
+_WIFICONFIG_INTELCONFIG_GAINS.fields_by_name['ant_gain_table_a'].message_type = _WIFICONFIG_INTELCONFIG_GAINS_ANTENNAGAIN
+_WIFICONFIG_INTELCONFIG_GAINS.fields_by_name['ant_gain_table_b'].message_type = _WIFICONFIG_INTELCONFIG_GAINS_ANTENNAGAIN
+_WIFICONFIG_INTELCONFIG_GAINS.containing_type = _WIFICONFIG_INTELCONFIG
+_WIFICONFIG_INTELCONFIG_AVERAGE.containing_type = _WIFICONFIG_INTELCONFIG
+_WIFICONFIG_INTELCONFIG_DSM.containing_type = _WIFICONFIG_INTELCONFIG
+_WIFICONFIG_INTELCONFIG.fields_by_name['sar_table'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE
+_WIFICONFIG_INTELCONFIG.fields_by_name['wgds_table'].message_type = _WIFICONFIG_INTELCONFIG_OFFSETS
+_WIFICONFIG_INTELCONFIG.fields_by_name['ant_table'].message_type = _WIFICONFIG_INTELCONFIG_GAINS
+_WIFICONFIG_INTELCONFIG.fields_by_name['wtas_table'].message_type = _WIFICONFIG_INTELCONFIG_AVERAGE
+_WIFICONFIG_INTELCONFIG.fields_by_name['dsm'].message_type = _WIFICONFIG_INTELCONFIG_DSM
 _WIFICONFIG_INTELCONFIG.containing_type = _WIFICONFIG
 _WIFICONFIG.fields_by_name['ath10k_config'].message_type = _WIFICONFIG_ATH10KCONFIG
 _WIFICONFIG.fields_by_name['rtw88_config'].message_type = _WIFICONFIG_RTW88CONFIG
@@ -581,17 +1162,59 @@
 
   'IntelConfig' : _reflection.GeneratedProtocolMessageType('IntelConfig', (_message.Message,), {
 
-    'TransmitPowerChain' : _reflection.GeneratedProtocolMessageType('TransmitPowerChain', (_message.Message,), {
-      'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_TRANSMITPOWERCHAIN,
+    'SarTable' : _reflection.GeneratedProtocolMessageType('SarTable', (_message.Message,), {
+
+      'TransmitPowerChain' : _reflection.GeneratedProtocolMessageType('TransmitPowerChain', (_message.Message,), {
+        'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN,
+        '__module__' : 'chromiumos.config.api.software.wifi_config_pb2'
+        # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain)
+        })
+      ,
+      'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_SARTABLE,
       '__module__' : 'chromiumos.config.api.software.wifi_config_pb2'
-      # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain)
+      # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable)
       })
     ,
 
-    'GeoOffsets' : _reflection.GeneratedProtocolMessageType('GeoOffsets', (_message.Message,), {
-      'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_GEOOFFSETS,
+    'Offsets' : _reflection.GeneratedProtocolMessageType('Offsets', (_message.Message,), {
+
+      'GeoOffsets' : _reflection.GeneratedProtocolMessageType('GeoOffsets', (_message.Message,), {
+        'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_OFFSETS_GEOOFFSETS,
+        '__module__' : 'chromiumos.config.api.software.wifi_config_pb2'
+        # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets)
+        })
+      ,
+      'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_OFFSETS,
       '__module__' : 'chromiumos.config.api.software.wifi_config_pb2'
-      # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets)
+      # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets)
+      })
+    ,
+
+    'Gains' : _reflection.GeneratedProtocolMessageType('Gains', (_message.Message,), {
+
+      'AntennaGain' : _reflection.GeneratedProtocolMessageType('AntennaGain', (_message.Message,), {
+        'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_GAINS_ANTENNAGAIN,
+        '__module__' : 'chromiumos.config.api.software.wifi_config_pb2'
+        # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain)
+        })
+      ,
+      'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_GAINS,
+      '__module__' : 'chromiumos.config.api.software.wifi_config_pb2'
+      # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.Gains)
+      })
+    ,
+
+    'Average' : _reflection.GeneratedProtocolMessageType('Average', (_message.Message,), {
+      'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_AVERAGE,
+      '__module__' : 'chromiumos.config.api.software.wifi_config_pb2'
+      # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.Average)
+      })
+    ,
+
+    'DSM' : _reflection.GeneratedProtocolMessageType('DSM', (_message.Message,), {
+      'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_DSM,
+      '__module__' : 'chromiumos.config.api.software.wifi_config_pb2'
+      # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.DSM)
       })
     ,
     'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG,
@@ -610,8 +1233,14 @@
 _sym_db.RegisterMessage(WifiConfig.Rtw88Config.TransmitPowerChain)
 _sym_db.RegisterMessage(WifiConfig.Rtw88Config.GeoOffsets)
 _sym_db.RegisterMessage(WifiConfig.IntelConfig)
-_sym_db.RegisterMessage(WifiConfig.IntelConfig.TransmitPowerChain)
-_sym_db.RegisterMessage(WifiConfig.IntelConfig.GeoOffsets)
+_sym_db.RegisterMessage(WifiConfig.IntelConfig.SarTable)
+_sym_db.RegisterMessage(WifiConfig.IntelConfig.SarTable.TransmitPowerChain)
+_sym_db.RegisterMessage(WifiConfig.IntelConfig.Offsets)
+_sym_db.RegisterMessage(WifiConfig.IntelConfig.Offsets.GeoOffsets)
+_sym_db.RegisterMessage(WifiConfig.IntelConfig.Gains)
+_sym_db.RegisterMessage(WifiConfig.IntelConfig.Gains.AntennaGain)
+_sym_db.RegisterMessage(WifiConfig.IntelConfig.Average)
+_sym_db.RegisterMessage(WifiConfig.IntelConfig.DSM)
 
 
 DESCRIPTOR._options = None
diff --git a/api/gen/chromiumos/config/api/test/tls/commontls_pb2.py b/api/gen/chromiumos/config/api/test/tls/commontls_pb2.py
index 16053ba..4a3b570 100644
--- a/api/gen/chromiumos/config/api/test/tls/commontls_pb2.py
+++ b/api/gen/chromiumos/config/api/test/tls/commontls_pb2.py
@@ -22,7 +22,7 @@
   syntax='proto3',
   serialized_options=b'Z1go.chromium.org/chromiumos/config/go/api/test/tls',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n.chromiumos/config/api/test/tls/commontls.proto\x12\x1e\x63hromiumos.config.api.test.tls\x1a\x1bgoogle/protobuf/empty.proto\x1aHchromiumos/config/api/test/tls/dependencies/longrunning/operations.proto\"\xc3\x01\n\x15\x45xecDutCommandRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07\x63ommand\x18\x02 \x01(\t\x12\x0c\n\x04\x61rgs\x18\x03 \x03(\t\x12\r\n\x05stdin\x18\x04 \x01(\x0c\x12\x36\n\x06stdout\x18\x05 \x01(\x0e\x32&.chromiumos.config.api.test.tls.Output\x12\x36\n\x06stderr\x18\x06 \x01(\x0e\x32&.chromiumos.config.api.test.tls.Output\"\xe2\x01\n\x16\x45xecDutCommandResponse\x12R\n\texit_info\x18\x01 \x01(\x0b\x32?.chromiumos.config.api.test.tls.ExecDutCommandResponse.ExitInfo\x12\x0e\n\x06stdout\x18\x02 \x01(\x0c\x12\x0e\n\x06stderr\x18\x03 \x01(\x0c\x1aT\n\x08\x45xitInfo\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x10\n\x08signaled\x18\x02 \x01(\x08\x12\x0f\n\x07started\x18\x03 \x01(\x08\x12\x15\n\rerror_message\x18\x04 \x01(\t\"\x99\x03\n\x13ProvisionDutRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12T\n\x05image\x18\x02 \x01(\x0b\x32\x41.chromiumos.config.api.test.tls.ProvisionDutRequest.ChromeOSImageB\x02\x18\x01\x12N\n\tdlc_specs\x18\x03 \x03(\x0b\x32;.chromiumos.config.api.test.tls.ProvisionDutRequest.DLCSpec\x12\x19\n\x11preserve_stateful\x18\x04 \x01(\x08\x12\x43\n\x0ctarget_build\x18\x05 \x01(\x0b\x32-.chromiumos.config.api.test.tls.ChromeOsImage\x12\x1a\n\x12\x66orce_provision_os\x18\x06 \x01(\x08\x1a;\n\rChromeOSImage\x12\x18\n\x0egs_path_prefix\x18\x01 \x01(\tH\x00:\x02\x18\x01\x42\x0c\n\npath_oneof\x1a\x15\n\x07\x44LCSpec\x12\n\n\x02id\x18\x01 \x01(\t\"\xf9\x01\n\x14ProvisionDutResponse\"\xe0\x01\n\x06Reason\x12\x1a\n\x16REASON_INVALID_REQUEST\x10\x00\x12(\n$REASON_DUT_UNREACHABLE_PRE_PROVISION\x10\x01\x12#\n\x1fREASON_DOWNLOADING_IMAGE_FAILED\x10\x02\x12 \n\x1cREASON_PROVISIONING_TIMEDOUT\x10\x03\x12\x1e\n\x1aREASON_PROVISIONING_FAILED\x10\x04\x12)\n%REASON_DUT_UNREACHABLE_POST_PROVISION\x10\x05\"\x16\n\x14ProvisionDutMetadata\"\xb0\x01\n\x16ProvisionLacrosRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12Q\n\x05image\x18\x02 \x01(\x0b\x32\x42.chromiumos.config.api.test.tls.ProvisionLacrosRequest.LacrosImage\x1a\x35\n\x0bLacrosImage\x12\x18\n\x0egs_path_prefix\x18\x01 \x01(\tH\x00\x42\x0c\n\npath_oneof\"\xd1\x01\n\x17ProvisionLacrosResponse\"\xb5\x01\n\x06Reason\x12\x1a\n\x16REASON_INVALID_REQUEST\x10\x00\x12(\n$REASON_DUT_UNREACHABLE_PRE_PROVISION\x10\x01\x12#\n\x1fREASON_DOWNLOADING_IMAGE_FAILED\x10\x02\x12 \n\x1cREASON_PROVISIONING_TIMEDOUT\x10\x03\x12\x1e\n\x1aREASON_PROVISIONING_FAILED\x10\x04\"\x19\n\x17ProvisionLacrosMetadata\"\xa7\x01\n\x13ProvisionAshRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12M\n\x06\x62undle\x18\x02 \x01(\x0b\x32=.chromiumos.config.api.test.tls.ProvisionAshRequest.AshBundle\x1a\x33\n\tAshBundle\x12\x18\n\x0egs_bundle_path\x18\x01 \x01(\tH\x00\x42\x0c\n\npath_oneof\"\xcf\x01\n\x14ProvisionAshResponse\"\xb6\x01\n\x06Reason\x12\x1a\n\x16REASON_INVALID_REQUEST\x10\x00\x12(\n$REASON_DUT_UNREACHABLE_PRE_PROVISION\x10\x01\x12$\n REASON_DOWNLOADING_BUNDLE_FAILED\x10\x02\x12 \n\x1cREASON_PROVISIONING_TIMEDOUT\x10\x03\x12\x1e\n\x1aREASON_PROVISIONING_FAILED\x10\x04\"\x16\n\x14ProvisionAshMetadata\"6\n\x13\x46\x65tchCrashesRequest\x12\x0b\n\x03\x64ut\x18\x01 \x01(\t\x12\x12\n\nfetch_core\x18\x02 \x01(\x08\"\xb7\x01\n\x14\x46\x65tchCrashesResponse\x12\x10\n\x08\x63rash_id\x18\x01 \x01(\x03\x12:\n\x05\x63rash\x18\x02 \x01(\x0b\x32).chromiumos.config.api.test.tls.CrashInfoH\x00\x12\x39\n\x04\x62lob\x18\x03 \x01(\x0b\x32).chromiumos.config.api.test.tls.CrashBlobH\x00\x12\x0e\n\x04\x63ore\x18\x04 \x01(\x0cH\x00\x42\x06\n\x04\x64\x61ta\"\xbe\x01\n\tCrashInfo\x12\x11\n\texec_name\x18\x01 \x01(\t\x12\x0c\n\x04prod\x18\x02 \x01(\t\x12\x0b\n\x03ver\x18\x03 \x01(\t\x12\x0b\n\x03sig\x18\x04 \x01(\t\x12$\n\x1cin_progress_integration_test\x18\x05 \x01(\t\x12\x11\n\tcollector\x18\x06 \x01(\t\x12=\n\x06\x66ields\x18\x07 \x03(\x0b\x32-.chromiumos.config.api.test.tls.CrashMetadata\"*\n\rCrashMetadata\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\"8\n\tCrashBlob\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0c\n\x04\x62lob\x18\x02 \x01(\x0c\x12\x10\n\x08\x66ilename\x18\x03 \x01(\t\"7\n\rChromeOsImage\x12\x18\n\x0egs_path_prefix\x18\x01 \x01(\tH\x00\x42\x0c\n\npath_oneof\"\xaa\x03\n\tFakeOmaha\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0b\n\x03\x64ut\x18\x02 \x01(\t\x12\x43\n\x0ctarget_build\x18\x03 \x01(\x0b\x32-.chromiumos.config.api.test.tls.ChromeOsImage\x12\x43\n\x08payloads\x18\x04 \x03(\x0b\x32\x31.chromiumos.config.api.test.tls.FakeOmaha.Payload\x12\x19\n\x11\x65xposed_via_proxy\x18\x05 \x01(\x08\x12\x17\n\x0f\x63ritical_update\x18\x06 \x01(\x08\x12 \n\x18return_noupdate_starting\x18\x07 \x01(\x05\x12\x11\n\tomaha_url\x18\x08 \x01(\t\x1a\x8e\x01\n\x07Payload\x12\n\n\x02id\x18\x01 \x01(\t\x12\x44\n\x04type\x18\x02 \x01(\x0e\x32\x36.chromiumos.config.api.test.tls.FakeOmaha.Payload.Type\"1\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x08\n\x04\x46ULL\x10\x01\x12\t\n\x05\x44\x45LTA\x10\x02\"W\n\x16\x43reateFakeOmahaRequest\x12=\n\nfake_omaha\x18\x01 \x01(\x0b\x32).chromiumos.config.api.test.tls.FakeOmaha\"&\n\x16\x44\x65leteFakeOmahaRequest\x12\x0c\n\x04name\x18\x01 \x01(\t*,\n\x06Output\x12\x0f\n\x0bOUTPUT_PIPE\x10\x00\x12\x11\n\rOUTPUT_STDOUT\x10\x01\x32\xb0\x07\n\x06\x43ommon\x12\x81\x01\n\x0e\x45xecDutCommand\x12\x35.chromiumos.config.api.test.tls.ExecDutCommandRequest\x1a\x36.chromiumos.config.api.test.tls.ExecDutCommandResponse0\x01\x12\x93\x01\n\x0cProvisionDut\x12\x33.chromiumos.config.api.test.tls.ProvisionDutRequest\x1a\x1d.google.longrunning.Operation\"/\xca\x41,\n\x14ProvisionDutResponse\x12\x14ProvisionDutMetadata\x12\x9f\x01\n\x0fProvisionLacros\x12\x36.chromiumos.config.api.test.tls.ProvisionLacrosRequest\x1a\x1d.google.longrunning.Operation\"5\xca\x41\x32\n\x17ProvisionLacrosResponse\x12\x17ProvisionLacrosMetadata\x12\x93\x01\n\x0cProvisionAsh\x12\x33.chromiumos.config.api.test.tls.ProvisionAshRequest\x1a\x1d.google.longrunning.Operation\"/\xca\x41,\n\x14ProvisionAshResponse\x12\x14ProvisionAshMetadata\x12{\n\x0c\x46\x65tchCrashes\x12\x33.chromiumos.config.api.test.tls.FetchCrashesRequest\x1a\x34.chromiumos.config.api.test.tls.FetchCrashesResponse0\x01\x12t\n\x0f\x43reateFakeOmaha\x12\x36.chromiumos.config.api.test.tls.CreateFakeOmahaRequest\x1a).chromiumos.config.api.test.tls.FakeOmaha\x12\x61\n\x0f\x44\x65leteFakeOmaha\x12\x36.chromiumos.config.api.test.tls.DeleteFakeOmahaRequest\x1a\x16.google.protobuf.EmptyB3Z1go.chromium.org/chromiumos/config/go/api/test/tlsb\x06proto3'
+  serialized_pb=b'\n.chromiumos/config/api/test/tls/commontls.proto\x12\x1e\x63hromiumos.config.api.test.tls\x1a\x1bgoogle/protobuf/empty.proto\x1aHchromiumos/config/api/test/tls/dependencies/longrunning/operations.proto\"\xc3\x01\n\x15\x45xecDutCommandRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07\x63ommand\x18\x02 \x01(\t\x12\x0c\n\x04\x61rgs\x18\x03 \x03(\t\x12\r\n\x05stdin\x18\x04 \x01(\x0c\x12\x36\n\x06stdout\x18\x05 \x01(\x0e\x32&.chromiumos.config.api.test.tls.Output\x12\x36\n\x06stderr\x18\x06 \x01(\x0e\x32&.chromiumos.config.api.test.tls.Output\"\xe2\x01\n\x16\x45xecDutCommandResponse\x12R\n\texit_info\x18\x01 \x01(\x0b\x32?.chromiumos.config.api.test.tls.ExecDutCommandResponse.ExitInfo\x12\x0e\n\x06stdout\x18\x02 \x01(\x0c\x12\x0e\n\x06stderr\x18\x03 \x01(\x0c\x1aT\n\x08\x45xitInfo\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x10\n\x08signaled\x18\x02 \x01(\x08\x12\x0f\n\x07started\x18\x03 \x01(\x08\x12\x15\n\rerror_message\x18\x04 \x01(\t\"\xb1\x03\n\x13ProvisionDutRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12T\n\x05image\x18\x02 \x01(\x0b\x32\x41.chromiumos.config.api.test.tls.ProvisionDutRequest.ChromeOSImageB\x02\x18\x01\x12N\n\tdlc_specs\x18\x03 \x03(\x0b\x32;.chromiumos.config.api.test.tls.ProvisionDutRequest.DLCSpec\x12\x19\n\x11preserve_stateful\x18\x04 \x01(\x08\x12\x43\n\x0ctarget_build\x18\x05 \x01(\x0b\x32-.chromiumos.config.api.test.tls.ChromeOsImage\x12\x1a\n\x12\x66orce_provision_os\x18\x06 \x01(\x08\x12\x16\n\x0eprevent_reboot\x18\x07 \x01(\x08\x1a;\n\rChromeOSImage\x12\x18\n\x0egs_path_prefix\x18\x01 \x01(\tH\x00:\x02\x18\x01\x42\x0c\n\npath_oneof\x1a\x15\n\x07\x44LCSpec\x12\n\n\x02id\x18\x01 \x01(\t\"\xf9\x01\n\x14ProvisionDutResponse\"\xe0\x01\n\x06Reason\x12\x1a\n\x16REASON_INVALID_REQUEST\x10\x00\x12(\n$REASON_DUT_UNREACHABLE_PRE_PROVISION\x10\x01\x12#\n\x1fREASON_DOWNLOADING_IMAGE_FAILED\x10\x02\x12 \n\x1cREASON_PROVISIONING_TIMEDOUT\x10\x03\x12\x1e\n\x1aREASON_PROVISIONING_FAILED\x10\x04\x12)\n%REASON_DUT_UNREACHABLE_POST_PROVISION\x10\x05\"\x16\n\x14ProvisionDutMetadata\"\x87\x02\n\x16ProvisionLacrosRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12Q\n\x05image\x18\x02 \x01(\x0b\x32\x42.chromiumos.config.api.test.tls.ProvisionLacrosRequest.LacrosImage\x12\x18\n\x10override_version\x18\x03 \x01(\t\x12\x1d\n\x15override_install_path\x18\x04 \x01(\t\x1aS\n\x0bLacrosImage\x12\x18\n\x0egs_path_prefix\x18\x01 \x01(\tH\x00\x12\x1c\n\x12\x64\x65vice_file_prefix\x18\x02 \x01(\tH\x00\x42\x0c\n\npath_oneof\"\xd1\x01\n\x17ProvisionLacrosResponse\"\xb5\x01\n\x06Reason\x12\x1a\n\x16REASON_INVALID_REQUEST\x10\x00\x12(\n$REASON_DUT_UNREACHABLE_PRE_PROVISION\x10\x01\x12#\n\x1fREASON_DOWNLOADING_IMAGE_FAILED\x10\x02\x12 \n\x1cREASON_PROVISIONING_TIMEDOUT\x10\x03\x12\x1e\n\x1aREASON_PROVISIONING_FAILED\x10\x04\"\x19\n\x17ProvisionLacrosMetadata\"\xa7\x01\n\x13ProvisionAshRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12M\n\x06\x62undle\x18\x02 \x01(\x0b\x32=.chromiumos.config.api.test.tls.ProvisionAshRequest.AshBundle\x1a\x33\n\tAshBundle\x12\x18\n\x0egs_bundle_path\x18\x01 \x01(\tH\x00\x42\x0c\n\npath_oneof\"\xcf\x01\n\x14ProvisionAshResponse\"\xb6\x01\n\x06Reason\x12\x1a\n\x16REASON_INVALID_REQUEST\x10\x00\x12(\n$REASON_DUT_UNREACHABLE_PRE_PROVISION\x10\x01\x12$\n REASON_DOWNLOADING_BUNDLE_FAILED\x10\x02\x12 \n\x1cREASON_PROVISIONING_TIMEDOUT\x10\x03\x12\x1e\n\x1aREASON_PROVISIONING_FAILED\x10\x04\"\x16\n\x14ProvisionAshMetadata\"6\n\x13\x46\x65tchCrashesRequest\x12\x0b\n\x03\x64ut\x18\x01 \x01(\t\x12\x12\n\nfetch_core\x18\x02 \x01(\x08\"\xb7\x01\n\x14\x46\x65tchCrashesResponse\x12\x10\n\x08\x63rash_id\x18\x01 \x01(\x03\x12:\n\x05\x63rash\x18\x02 \x01(\x0b\x32).chromiumos.config.api.test.tls.CrashInfoH\x00\x12\x39\n\x04\x62lob\x18\x03 \x01(\x0b\x32).chromiumos.config.api.test.tls.CrashBlobH\x00\x12\x0e\n\x04\x63ore\x18\x04 \x01(\x0cH\x00\x42\x06\n\x04\x64\x61ta\"\xbe\x01\n\tCrashInfo\x12\x11\n\texec_name\x18\x01 \x01(\t\x12\x0c\n\x04prod\x18\x02 \x01(\t\x12\x0b\n\x03ver\x18\x03 \x01(\t\x12\x0b\n\x03sig\x18\x04 \x01(\t\x12$\n\x1cin_progress_integration_test\x18\x05 \x01(\t\x12\x11\n\tcollector\x18\x06 \x01(\t\x12=\n\x06\x66ields\x18\x07 \x03(\x0b\x32-.chromiumos.config.api.test.tls.CrashMetadata\"*\n\rCrashMetadata\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\"8\n\tCrashBlob\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0c\n\x04\x62lob\x18\x02 \x01(\x0c\x12\x10\n\x08\x66ilename\x18\x03 \x01(\t\"7\n\rChromeOsImage\x12\x18\n\x0egs_path_prefix\x18\x01 \x01(\tH\x00\x42\x0c\n\npath_oneof\"\xaa\x03\n\tFakeOmaha\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0b\n\x03\x64ut\x18\x02 \x01(\t\x12\x43\n\x0ctarget_build\x18\x03 \x01(\x0b\x32-.chromiumos.config.api.test.tls.ChromeOsImage\x12\x43\n\x08payloads\x18\x04 \x03(\x0b\x32\x31.chromiumos.config.api.test.tls.FakeOmaha.Payload\x12\x19\n\x11\x65xposed_via_proxy\x18\x05 \x01(\x08\x12\x17\n\x0f\x63ritical_update\x18\x06 \x01(\x08\x12 \n\x18return_noupdate_starting\x18\x07 \x01(\x05\x12\x11\n\tomaha_url\x18\x08 \x01(\t\x1a\x8e\x01\n\x07Payload\x12\n\n\x02id\x18\x01 \x01(\t\x12\x44\n\x04type\x18\x02 \x01(\x0e\x32\x36.chromiumos.config.api.test.tls.FakeOmaha.Payload.Type\"1\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x08\n\x04\x46ULL\x10\x01\x12\t\n\x05\x44\x45LTA\x10\x02\"W\n\x16\x43reateFakeOmahaRequest\x12=\n\nfake_omaha\x18\x01 \x01(\x0b\x32).chromiumos.config.api.test.tls.FakeOmaha\"&\n\x16\x44\x65leteFakeOmahaRequest\x12\x0c\n\x04name\x18\x01 \x01(\t*,\n\x06Output\x12\x0f\n\x0bOUTPUT_PIPE\x10\x00\x12\x11\n\rOUTPUT_STDOUT\x10\x01\x32\xb0\x07\n\x06\x43ommon\x12\x81\x01\n\x0e\x45xecDutCommand\x12\x35.chromiumos.config.api.test.tls.ExecDutCommandRequest\x1a\x36.chromiumos.config.api.test.tls.ExecDutCommandResponse0\x01\x12\x93\x01\n\x0cProvisionDut\x12\x33.chromiumos.config.api.test.tls.ProvisionDutRequest\x1a\x1d.google.longrunning.Operation\"/\xca\x41,\n\x14ProvisionDutResponse\x12\x14ProvisionDutMetadata\x12\x9f\x01\n\x0fProvisionLacros\x12\x36.chromiumos.config.api.test.tls.ProvisionLacrosRequest\x1a\x1d.google.longrunning.Operation\"5\xca\x41\x32\n\x17ProvisionLacrosResponse\x12\x17ProvisionLacrosMetadata\x12\x93\x01\n\x0cProvisionAsh\x12\x33.chromiumos.config.api.test.tls.ProvisionAshRequest\x1a\x1d.google.longrunning.Operation\"/\xca\x41,\n\x14ProvisionAshResponse\x12\x14ProvisionAshMetadata\x12{\n\x0c\x46\x65tchCrashes\x12\x33.chromiumos.config.api.test.tls.FetchCrashesRequest\x1a\x34.chromiumos.config.api.test.tls.FetchCrashesResponse0\x01\x12t\n\x0f\x43reateFakeOmaha\x12\x36.chromiumos.config.api.test.tls.CreateFakeOmahaRequest\x1a).chromiumos.config.api.test.tls.FakeOmaha\x12\x61\n\x0f\x44\x65leteFakeOmaha\x12\x36.chromiumos.config.api.test.tls.DeleteFakeOmahaRequest\x1a\x16.google.protobuf.EmptyB3Z1go.chromium.org/chromiumos/config/go/api/test/tlsb\x06proto3'
   ,
   dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,chromiumos_dot_config_dot_api_dot_test_dot_tls_dot_dependencies_dot_longrunning_dot_operations__pb2.DESCRIPTOR,])
 
@@ -46,8 +46,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=3274,
-  serialized_end=3318,
+  serialized_start=3385,
+  serialized_end=3429,
 )
 _sym_db.RegisterEnumDescriptor(_OUTPUT)
 
@@ -96,8 +96,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=1050,
-  serialized_end=1274,
+  serialized_start=1074,
+  serialized_end=1298,
 )
 _sym_db.RegisterEnumDescriptor(_PROVISIONDUTRESPONSE_REASON)
 
@@ -136,8 +136,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=1050,
-  serialized_end=1231,
+  serialized_start=1074,
+  serialized_end=1255,
 )
 _sym_db.RegisterEnumDescriptor(_PROVISIONLACROSRESPONSE_REASON)
 
@@ -176,8 +176,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=1914,
-  serialized_end=2096,
+  serialized_start=2025,
+  serialized_end=2207,
 )
 _sym_db.RegisterEnumDescriptor(_PROVISIONASHRESPONSE_REASON)
 
@@ -206,8 +206,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=3094,
-  serialized_end=3143,
+  serialized_start=3205,
+  serialized_end=3254,
 )
 _sym_db.RegisterEnumDescriptor(_FAKEOMAHA_PAYLOAD_TYPE)
 
@@ -409,8 +409,8 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=940,
-  serialized_end=999,
+  serialized_start=964,
+  serialized_end=1023,
 )
 
 _PROVISIONDUTREQUEST_DLCSPEC = _descriptor.Descriptor(
@@ -440,8 +440,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1001,
-  serialized_end=1022,
+  serialized_start=1025,
+  serialized_end=1046,
 )
 
 _PROVISIONDUTREQUEST = _descriptor.Descriptor(
@@ -494,6 +494,13 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='prevent_reboot', full_name='chromiumos.config.api.test.tls.ProvisionDutRequest.prevent_reboot', index=6,
+      number=7, type=8, cpp_type=7, label=1,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -507,7 +514,7 @@
   oneofs=[
   ],
   serialized_start=613,
-  serialized_end=1022,
+  serialized_end=1046,
 )
 
 
@@ -532,8 +539,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1025,
-  serialized_end=1274,
+  serialized_start=1049,
+  serialized_end=1298,
 )
 
 
@@ -557,8 +564,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1276,
-  serialized_end=1298,
+  serialized_start=1300,
+  serialized_end=1322,
 )
 
 
@@ -577,6 +584,13 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='device_file_prefix', full_name='chromiumos.config.api.test.tls.ProvisionLacrosRequest.LacrosImage.device_file_prefix', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -594,8 +608,8 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=1424,
-  serialized_end=1477,
+  serialized_start=1505,
+  serialized_end=1588,
 )
 
 _PROVISIONLACROSREQUEST = _descriptor.Descriptor(
@@ -620,6 +634,20 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='override_version', full_name='chromiumos.config.api.test.tls.ProvisionLacrosRequest.override_version', index=2,
+      number=3, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='override_install_path', full_name='chromiumos.config.api.test.tls.ProvisionLacrosRequest.override_install_path', index=3,
+      number=4, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -632,8 +660,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1301,
-  serialized_end=1477,
+  serialized_start=1325,
+  serialized_end=1588,
 )
 
 
@@ -658,8 +686,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1480,
-  serialized_end=1689,
+  serialized_start=1591,
+  serialized_end=1800,
 )
 
 
@@ -683,8 +711,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1691,
-  serialized_end=1716,
+  serialized_start=1802,
+  serialized_end=1827,
 )
 
 
@@ -720,8 +748,8 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=1835,
-  serialized_end=1886,
+  serialized_start=1946,
+  serialized_end=1997,
 )
 
 _PROVISIONASHREQUEST = _descriptor.Descriptor(
@@ -758,8 +786,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1719,
-  serialized_end=1886,
+  serialized_start=1830,
+  serialized_end=1997,
 )
 
 
@@ -784,8 +812,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1889,
-  serialized_end=2096,
+  serialized_start=2000,
+  serialized_end=2207,
 )
 
 
@@ -809,8 +837,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2098,
-  serialized_end=2120,
+  serialized_start=2209,
+  serialized_end=2231,
 )
 
 
@@ -848,8 +876,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2122,
-  serialized_end=2176,
+  serialized_start=2233,
+  serialized_end=2287,
 )
 
 
@@ -906,8 +934,8 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=2179,
-  serialized_end=2362,
+  serialized_start=2290,
+  serialized_end=2473,
 )
 
 
@@ -980,8 +1008,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2365,
-  serialized_end=2555,
+  serialized_start=2476,
+  serialized_end=2666,
 )
 
 
@@ -1019,8 +1047,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2557,
-  serialized_end=2599,
+  serialized_start=2668,
+  serialized_end=2710,
 )
 
 
@@ -1065,8 +1093,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2601,
-  serialized_end=2657,
+  serialized_start=2712,
+  serialized_end=2768,
 )
 
 
@@ -1102,8 +1130,8 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=2659,
-  serialized_end=2714,
+  serialized_start=2770,
+  serialized_end=2825,
 )
 
 
@@ -1142,8 +1170,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3001,
-  serialized_end=3143,
+  serialized_start=3112,
+  serialized_end=3254,
 )
 
 _FAKEOMAHA = _descriptor.Descriptor(
@@ -1222,8 +1250,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2717,
-  serialized_end=3143,
+  serialized_start=2828,
+  serialized_end=3254,
 )
 
 
@@ -1254,8 +1282,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3145,
-  serialized_end=3232,
+  serialized_start=3256,
+  serialized_end=3343,
 )
 
 
@@ -1286,8 +1314,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3234,
-  serialized_end=3272,
+  serialized_start=3345,
+  serialized_end=3383,
 )
 
 _EXECDUTCOMMANDREQUEST.fields_by_name['stdout'].enum_type = _OUTPUT
@@ -1307,6 +1335,9 @@
 _PROVISIONLACROSREQUEST_LACROSIMAGE.oneofs_by_name['path_oneof'].fields.append(
   _PROVISIONLACROSREQUEST_LACROSIMAGE.fields_by_name['gs_path_prefix'])
 _PROVISIONLACROSREQUEST_LACROSIMAGE.fields_by_name['gs_path_prefix'].containing_oneof = _PROVISIONLACROSREQUEST_LACROSIMAGE.oneofs_by_name['path_oneof']
+_PROVISIONLACROSREQUEST_LACROSIMAGE.oneofs_by_name['path_oneof'].fields.append(
+  _PROVISIONLACROSREQUEST_LACROSIMAGE.fields_by_name['device_file_prefix'])
+_PROVISIONLACROSREQUEST_LACROSIMAGE.fields_by_name['device_file_prefix'].containing_oneof = _PROVISIONLACROSREQUEST_LACROSIMAGE.oneofs_by_name['path_oneof']
 _PROVISIONLACROSREQUEST.fields_by_name['image'].message_type = _PROVISIONLACROSREQUEST_LACROSIMAGE
 _PROVISIONLACROSRESPONSE_REASON.containing_type = _PROVISIONLACROSRESPONSE
 _PROVISIONASHREQUEST_ASHBUNDLE.containing_type = _PROVISIONASHREQUEST
@@ -1559,8 +1590,8 @@
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=3321,
-  serialized_end=4265,
+  serialized_start=3432,
+  serialized_end=4376,
   methods=[
   _descriptor.MethodDescriptor(
     name='ExecDutCommand',
diff --git a/api/gen/chromiumos/config/api/topology_pb2.py b/api/gen/chromiumos/config/api/topology_pb2.py
index c43290a..060280a 100644
--- a/api/gen/chromiumos/config/api/topology_pb2.py
+++ b/api/gen/chromiumos/config/api/topology_pb2.py
@@ -20,7 +20,7 @@
   syntax='proto3',
   serialized_options=b'Z(go.chromium.org/chromiumos/config/go/api',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n$chromiumos/config/api/topology.proto\x12\x15\x63hromiumos.config.api\x1a%chromiumos/config/api/component.proto\"\xdf\x05\n\x08Topology\x12\n\n\x02id\x18\x01 \x01(\t\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32$.chromiumos.config.api.Topology.Type\x12\x45\n\x0b\x64\x65scription\x18\x03 \x03(\x0b\x32\x30.chromiumos.config.api.Topology.DescriptionEntry\x12\x41\n\x10hardware_feature\x18\x04 \x01(\x0b\x32\'.chromiumos.config.api.HardwareFeatures\x1a\x32\n\x10\x44\x65scriptionEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xd4\x03\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\n\n\x06SCREEN\x10\x01\x12\x0f\n\x0b\x46ORM_FACTOR\x10\x02\x12\t\n\x05\x41UDIO\x10\x03\x12\n\n\x06STYLUS\x10\x04\x12\x0c\n\x08KEYBOARD\x10\x05\x12\x0b\n\x07THERMAL\x10\x06\x12\n\n\x06\x43\x41MERA\x10\x07\x12(\n$ACCELEROMETER_GYROSCOPE_MAGNETOMETER\x10\x08\x12\x0f\n\x0b\x46INGERPRINT\x10\t\x12\x14\n\x10PROXIMITY_SENSOR\x10\n\x12\x12\n\x0e\x44\x41UGHTER_BOARD\x10\x0b\x12\x18\n\x14NON_VOLATILE_STORAGE\x10\x0c\x12\x07\n\x03RAM\x10\r\x12\x08\n\x04WIFI\x10\x0e\x12\r\n\tLTE_BOARD\x10\x0f\x12\r\n\tSD_READER\x10\x10\x12\x13\n\x0fMOTHERBOARD_USB\x10\x11\x12\r\n\tBLUETOOTH\x10\x12\x12\x0e\n\nBARRELJACK\x10\x13\x12\x10\n\x0cPOWER_BUTTON\x10\x14\x12\x11\n\rVOLUME_BUTTON\x10\x15\x12\x06\n\x02\x45\x43\x10\x16\x12\t\n\x05TOUCH\x10\x17\x12\x07\n\x03TPM\x10\x18\x12\x1a\n\x16MICROPHONE_MUTE_SWITCH\x10\x19\x12\x0b\n\x07\x42\x41TTERY\x10\x1a\x12\x08\n\x04HDMI\x10\x1b\x12\x07\n\x03SOC\x10\x1c\"\xa8\x01\n\x08\x44uration\x12\x32\n\x04type\x18\x01 \x01(\x0e\x32$.chromiumos.config.api.Duration.Type\x12\r\n\x05value\x18\x02 \x01(\x05\"Y\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x10\n\x0cMILLISECONDS\x10\x01\x12\x0b\n\x07SECONDS\x10\x02\x12\x0b\n\x07MINUTES\x10\x03\x12\t\n\x05HOURS\x10\x04\x12\x08\n\x04\x44\x41YS\x10\x05\"\xab\x46\n\x10HardwareFeatures\x12;\n\x05usb_c\x18\x01 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.UsbC\x12;\n\x05usb_a\x18\x02 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.UsbA\x12\x38\n\x03lte\x18\x03 \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.Lte\x12:\n\x04hdmi\x18\x04 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.Hdmi\x12P\n\tfw_config\x18\x05 \x01(\x0b\x32=.chromiumos.config.api.HardwareFeatures.FirmwareConfiguration\x12<\n\x05\x61udio\x18\x06 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Audio\x12>\n\x06\x63\x61mera\x18\x07 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Camera\x12L\n\raccelerometer\x18\x08 \x01(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.Accelerometer\x12\x44\n\tgyroscope\x18\t \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Gyroscope\x12J\n\x0cmagnetometer\x18\n \x01(\x0b\x32\x34.chromiumos.config.api.HardwareFeatures.Magnetometer\x12I\n\x0clight_sensor\x18\x0b \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.LightSensor\x12>\n\x06screen\x18\x0c \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Screen\x12G\n\x0b\x66orm_factor\x18\r \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.FormFactor\x12>\n\x06stylus\x18\x0e \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Stylus\x12\x42\n\x08keyboard\x18\x0f \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Keyboard\x12>\n\x06memory\x18\x10 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Memory\x12H\n\x0b\x66ingerprint\x18\x11 \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.Fingerprint\x12@\n\x07storage\x18\x12 \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Storage\x12\x44\n\tbluetooth\x18\x13 \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Bluetooth\x12\x46\n\nbarreljack\x18\x14 \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.BarrelJack\x12:\n\x04wifi\x18\x17 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.Wifi\x12\x44\n\x0cpower_button\x18\x15 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Button\x12\x45\n\rvolume_button\x18\x16 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Button\x12W\n\x13\x65mbedded_controller\x18\x18 \x01(\x0b\x32:.chromiumos.config.api.HardwareFeatures.EmbeddedController\x12^\n\x17trusted_platform_module\x18\x19 \x01(\x0b\x32=.chromiumos.config.api.HardwareFeatures.TrustedPlatformModule\x12\x46\n\nhotwording\x18\x1a \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.Hotwording\x12@\n\x07\x64isplay\x18\x1b \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Display\x12\x42\n\x08touchpad\x18\x1c \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Touchpad\x12\\\n\x16microphone_mute_switch\x18\x1d \x01(\x0b\x32<.chromiumos.config.api.HardwareFeatures.MicrophoneMuteSwitch\x12@\n\x07\x62\x61ttery\x18\x1e \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Battery\x12M\n\x0eprivacy_screen\x18\x1f \x01(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.PrivacyScreen\x12\x38\n\x03soc\x18  \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.Soc\x1a\x16\n\x05\x43ount\x12\r\n\x05value\x18\x01 \x01(\r\x1a\x44\n\x04UsbC\x12<\n\x05\x63ount\x18\x01 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x1a\x44\n\x04UsbA\x12<\n\x05\x63ount\x18\x01 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x1aV\n\x03Lte\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\r\n\x05model\x18\x02 \x01(\t\x1aH\n\x04Hdmi\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x34\n\x15\x46irmwareConfiguration\x12\r\n\x05value\x18\x01 \x01(\r\x12\x0c\n\x04mask\x18\x02 \x01(\r\x1a\x89\x06\n\x05\x41udio\x12M\n\x0b\x61udio_codec\x18\x01 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.AudioCodec\x12L\n\x0bspeaker_amp\x18\x02 \x01(\x0e\x32\x37.chromiumos.config.api.HardwareFeatures.Audio.Amplifier\x12Q\n\x0fheadphone_codec\x18\x03 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.AudioCodec\x12\x45\n\x0elid_microphone\x18\x04 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12\x46\n\x0f\x62\x61se_microphone\x18\x05 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12\x45\n\x11speaker_amplifier\x18\x06 \x01(\x0b\x32*.chromiumos.config.api.Component.Amplifier\"\x9d\x01\n\nAudioCodec\x12\x17\n\x13\x41UDIO_CODEC_UNKNOWN\x10\x00\x12\n\n\x06RT5682\x10\x01\x12\x0c\n\x08\x41LC5682I\x10\x02\x12\x0b\n\x07\x41LC5682\x10\x03\x12\n\n\x06\x44\x41\x37\x32\x31\x39\x10\x08\x12\r\n\tNAU88L25B\x10\n\x12\x0b\n\x07\x43S42L42\x10\x0b\x12\x0e\n\nALC5682IVS\x10\x0c\x12\x0b\n\x07WCD9385\x10\r\"\x04\x08\x04\x10\x07\"\x04\x08\t\x10\t\"\x99\x01\n\tAmplifier\x12\x15\n\x11\x41MPLIFIER_UNKNOWN\x10\x00\x12\x0c\n\x08MAX98357\x10\x04\x12\x0c\n\x08MAX98373\x10\x05\x12\x0c\n\x08MAX98360\x10\x06\x12\n\n\x06RT1015\x10\x07\x12\x0b\n\x07\x41LC1011\x10\t\x12\x0b\n\x07RT1015P\x10\n\x12\x0b\n\x07\x41LC1019\x10\x0b\x12\x0c\n\x08MAX98390\x10\x0c\"\x04\x08\x01\x10\x03\"\x04\x08\x08\x10\x08\x1a\xf9\x05\n\x06\x43\x61mera\x12\x46\n\x07\x64\x65vices\x18\x04 \x03(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.Camera.Device\x1a\xd2\x02\n\x06\x44\x65vice\x12K\n\tinterface\x18\x02 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Camera.Interface\x12\x45\n\x06\x66\x61\x63ing\x18\x03 \x01(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Camera.Facing\x12O\n\x0borientation\x18\x04 \x01(\x0e\x32:.chromiumos.config.api.HardwareFeatures.Camera.Orientation\x12\r\n\x05\x66lags\x18\x05 \x01(\r\x12\x0b\n\x03ids\x18\x06 \x03(\t\x12G\n\x0eprivacy_switch\x18\x07 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\"I\n\tInterface\x12\x15\n\x11INTERFACE_UNKNOWN\x10\x00\x12\x11\n\rINTERFACE_USB\x10\x01\x12\x12\n\x0eINTERFACE_MIPI\x10\x02\"?\n\x06\x46\x61\x63ing\x12\x12\n\x0e\x46\x41\x43ING_UNKNOWN\x10\x00\x12\x10\n\x0c\x46\x41\x43ING_FRONT\x10\x01\x12\x0f\n\x0b\x46\x41\x43ING_BACK\x10\x02\"w\n\x0bOrientation\x12\x17\n\x13ORIENTATION_UNKNOWN\x10\x00\x12\x11\n\rORIENTATION_0\x10\x01\x12\x12\n\x0eORIENTATION_90\x10\x02\x12\x13\n\x0fORIENTATION_180\x10\x03\x12\x13\n\x0fORIENTATION_270\x10\x04\"M\n\x05\x46lags\x12\x0e\n\nFLAGS_NONE\x10\x00\x12\x17\n\x13\x46LAGS_SUPPORT_1080P\x10\x01\x12\x1b\n\x17\x46LAGS_SUPPORT_AUTOFOCUS\x10\x02\x1a\xa8\x01\n\rAccelerometer\x12J\n\x11lid_accelerometer\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12K\n\x12\x62\x61se_accelerometer\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x9c\x01\n\tGyroscope\x12\x46\n\rlid_gyroscope\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12G\n\x0e\x62\x61se_gyroscope\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa5\x01\n\x0cMagnetometer\x12I\n\x10lid_magnetometer\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12J\n\x11\x62\x61se_magnetometer\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa2\x01\n\x0bLightSensor\x12H\n\x0flid_lightsensor\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12I\n\x10\x62\x61se_lightsensor\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xaa\x01\n\x06Screen\x12R\n\x10panel_properties\x18\x03 \x01(\x0b\x32\x38.chromiumos.config.api.Component.DisplayPanel.Properties\x12\x46\n\rtouch_support\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.PresentJ\x04\x08\x01\x10\x02\x1a\xff\x01\n\nFormFactor\x12V\n\x0b\x66orm_factor\x18\x01 \x01(\x0e\x32\x41.chromiumos.config.api.HardwareFeatures.FormFactor.FormFactorType\"\x98\x01\n\x0e\x46ormFactorType\x12\x17\n\x13\x46ORM_FACTOR_UNKNOWN\x10\x00\x12\r\n\tCLAMSHELL\x10\x01\x12\x0f\n\x0b\x43ONVERTIBLE\x10\x02\x12\x0e\n\nDETACHABLE\x10\x03\x12\x0e\n\nCHROMEBASE\x10\x04\x12\r\n\tCHROMEBOX\x10\x05\x12\r\n\tCHROMEBIT\x10\x06\x12\x0f\n\x0b\x43HROMESLATE\x10\x07\x1a\x9b\x01\n\x06Stylus\x12I\n\x06stylus\x18\x01 \x01(\x0e\x32\x39.chromiumos.config.api.HardwareFeatures.Stylus.StylusType\"F\n\nStylusType\x12\x12\n\x0eSTYLUS_UNKNOWN\x10\x00\x12\x08\n\x04NONE\x10\x01\x12\x0c\n\x08INTERNAL\x10\x02\x12\x0c\n\x08\x45XTERNAL\x10\x03\x1a\x84\x03\n\x08Keyboard\x12T\n\rkeyboard_type\x18\x01 \x01(\x0e\x32=.chromiumos.config.api.HardwareFeatures.Keyboard.KeyboardType\x12\x42\n\tbacklight\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x45\n\x0cpower_button\x18\x03 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x44\n\x0bnumeric_pad\x18\x04 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\"Q\n\x0cKeyboardType\x12\x19\n\x15KEYBOARD_TYPE_UNKNOWN\x10\x00\x12\x0c\n\x08INTERNAL\x10\x01\x12\x08\n\x04NONE\x10\x02\x12\x0e\n\nDETACHABLE\x10\x03\x1aJ\n\x06Memory\x12@\n\x07profile\x18\x01 \x01(\x0b\x32/.chromiumos.config.api.Component.Memory.Profile\x1a\xc8\x02\n\x0b\x46ingerprint\x12N\n\x08location\x18\x01 \x01(\x0e\x32<.chromiumos.config.api.HardwareFeatures.Fingerprint.Location\x12\r\n\x05\x62oard\x18\x02 \x01(\t\x12\x12\n\nro_version\x18\x03 \x01(\t\"\xc5\x01\n\x08Location\x12\x14\n\x10LOCATION_UNKNOWN\x10\x00\x12\x19\n\x15POWER_BUTTON_TOP_LEFT\x10\x01\x12\x18\n\x14KEYBOARD_BOTTOM_LEFT\x10\x02\x12\x19\n\x15KEYBOARD_BOTTOM_RIGHT\x10\x03\x12\x16\n\x12KEYBOARD_TOP_RIGHT\x10\x04\x12\x0f\n\x0bNOT_PRESENT\x10\x05\x12\x0e\n\nRIGHT_SIDE\x10\x06\x12\r\n\tLEFT_SIDE\x10\x07\x12\x0b\n\x07PRESENT\x10\x08\x1a\x66\n\x07Storage\x12J\n\x0cstorage_type\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.Component.Storage.StorageType\x12\x0f\n\x07size_gb\x18\x02 \x01(\r\x1a\x8c\x01\n\tBluetooth\x12=\n\tcomponent\x18\x01 \x01(\x0b\x32*.chromiumos.config.api.Component.Bluetooth\x12@\n\x07present\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aN\n\nBarrelJack\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xf7\x01\n\x04Wifi\x12T\n\x18supported_wlan_protocols\x18\x01 \x03(\x0e\x32\x32.chromiumos.config.api.Component.Wifi.WLANProtocol\x12I\n\nwifi_chips\x18\x02 \x03(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Wifi.WifiChip\"N\n\x08WifiChip\x12\x15\n\x11WIFI_CHIP_UNKNOWN\x10\x00\x12\x15\n\x11WIRELESS_86ED801D\x10\x01\x12\x14\n\x10WIRELESS_REALTEK\x10\x02\x1a\xa0\x02\n\x06\x42utton\x12\x45\n\x06region\x18\x01 \x01(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Button.Region\x12\x41\n\x04\x65\x64ge\x18\x02 \x01(\x0e\x32\x33.chromiumos.config.api.HardwareFeatures.Button.Edge\x12\x10\n\x08position\x18\x03 \x01(\x02\"6\n\x06Region\x12\x12\n\x0eREGION_UNKNOWN\x10\x00\x12\n\n\x06SCREEN\x10\x01\x12\x0c\n\x08KEYBOARD\x10\x02\"B\n\x04\x45\x64ge\x12\x10\n\x0c\x45\x44GE_UNKNOWN\x10\x00\x12\x08\n\x04LEFT\x10\x01\x12\t\n\x05RIGHT\x10\x02\x12\x07\n\x03TOP\x10\x03\x12\n\n\x06\x42OTTOM\x10\x04\x1a\xc9\x02\n\x12\x45mbeddedController\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x62\n\x07\x65\x63_type\x18\x02 \x01(\x0e\x32Q.chromiumos.config.api.HardwareFeatures.EmbeddedController.EmbeddedControllerType\x12\x41\n\x04part\x18\x03 \x01(\x0b\x32\x33.chromiumos.config.api.Component.EmbeddedController\"J\n\x16\x45mbeddedControllerType\x12\x13\n\x0f\x45\x43_TYPE_UNKNOWN\x10\x00\x12\r\n\tEC_CHROME\x10\x01\x12\x0c\n\x08\x45\x43_WILCO\x10\x02\x1a\xe0\x01\n\x15TrustedPlatformModule\x12i\n\x08tpm_type\x18\x01 \x01(\x0e\x32W.chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.TrustedPlatformModuleType\"\\\n\x19TrustedPlatformModuleType\x12\x14\n\x10TPM_TYPE_UNKNOWN\x10\x00\x12\x0f\n\x0bTHIRD_PARTY\x10\x01\x12\x0b\n\x07GSC_H1B\x10\x02\x12\x0b\n\x07GSC_H1D\x10\x03\x1aN\n\nHotwording\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa9\x01\n\x07\x44isplay\x12\x42\n\x04type\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.HardwareFeatures.Display.Type\"Z\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x11\n\rTYPE_INTERNAL\x10\x01\x12\x11\n\rTYPE_EXTERNAL\x10\x02\x12\x1a\n\x16TYPE_INTERNAL_EXTERNAL\x10\x03\x1aL\n\x08Touchpad\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aX\n\x14MicrophoneMuteSwitch\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xb6\x05\n\x07\x42\x61ttery\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12J\n\x08lifetime\x18\x02 \x01(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Battery.Lifetime\x12J\n\x08\x63harging\x18\x03 \x01(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Battery.Charging\x1a\x9f\x02\n\x08Lifetime\x12\x35\n\x0cshipping_min\x18\x01 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x37\n\x0e\x64\x65\x65p_sleep_min\x18\x02 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x34\n\x0bsuspend_min\x18\x03 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x38\n\x0flucid_sleep_min\x18\x04 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x33\n\nactive_min\x18\x05 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x1a\xae\x01\n\x08\x43harging\x12\x33\n\nactive_max\x18\x01 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x34\n\x0bsuspend_max\x18\x02 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x37\n\x0e\x64\x65\x65p_sleep_max\x18\x03 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x1aQ\n\rPrivacyScreen\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x45\n\x03Soc\x12>\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0e\x32,.chromiumos.config.api.Component.Soc.Feature\"<\n\x07Present\x12\x13\n\x0fPRESENT_UNKNOWN\x10\x00\x12\x0b\n\x07PRESENT\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\x42*Z(go.chromium.org/chromiumos/config/go/apib\x06proto3'
+  serialized_pb=b'\n$chromiumos/config/api/topology.proto\x12\x15\x63hromiumos.config.api\x1a%chromiumos/config/api/component.proto\"\xdf\x05\n\x08Topology\x12\n\n\x02id\x18\x01 \x01(\t\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32$.chromiumos.config.api.Topology.Type\x12\x45\n\x0b\x64\x65scription\x18\x03 \x03(\x0b\x32\x30.chromiumos.config.api.Topology.DescriptionEntry\x12\x41\n\x10hardware_feature\x18\x04 \x01(\x0b\x32\'.chromiumos.config.api.HardwareFeatures\x1a\x32\n\x10\x44\x65scriptionEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xd4\x03\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\n\n\x06SCREEN\x10\x01\x12\x0f\n\x0b\x46ORM_FACTOR\x10\x02\x12\t\n\x05\x41UDIO\x10\x03\x12\n\n\x06STYLUS\x10\x04\x12\x0c\n\x08KEYBOARD\x10\x05\x12\x0b\n\x07THERMAL\x10\x06\x12\n\n\x06\x43\x41MERA\x10\x07\x12(\n$ACCELEROMETER_GYROSCOPE_MAGNETOMETER\x10\x08\x12\x0f\n\x0b\x46INGERPRINT\x10\t\x12\x14\n\x10PROXIMITY_SENSOR\x10\n\x12\x12\n\x0e\x44\x41UGHTER_BOARD\x10\x0b\x12\x18\n\x14NON_VOLATILE_STORAGE\x10\x0c\x12\x07\n\x03RAM\x10\r\x12\x08\n\x04WIFI\x10\x0e\x12\r\n\tLTE_BOARD\x10\x0f\x12\r\n\tSD_READER\x10\x10\x12\x13\n\x0fMOTHERBOARD_USB\x10\x11\x12\r\n\tBLUETOOTH\x10\x12\x12\x0e\n\nBARRELJACK\x10\x13\x12\x10\n\x0cPOWER_BUTTON\x10\x14\x12\x11\n\rVOLUME_BUTTON\x10\x15\x12\x06\n\x02\x45\x43\x10\x16\x12\t\n\x05TOUCH\x10\x17\x12\x07\n\x03TPM\x10\x18\x12\x1a\n\x16MICROPHONE_MUTE_SWITCH\x10\x19\x12\x0b\n\x07\x42\x41TTERY\x10\x1a\x12\x08\n\x04HDMI\x10\x1b\x12\x07\n\x03SOC\x10\x1c\"\xa8\x01\n\x08\x44uration\x12\x32\n\x04type\x18\x01 \x01(\x0e\x32$.chromiumos.config.api.Duration.Type\x12\r\n\x05value\x18\x02 \x01(\x05\"Y\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x10\n\x0cMILLISECONDS\x10\x01\x12\x0b\n\x07SECONDS\x10\x02\x12\x0b\n\x07MINUTES\x10\x03\x12\t\n\x05HOURS\x10\x04\x12\x08\n\x04\x44\x41YS\x10\x05\"\xe2G\n\x10HardwareFeatures\x12;\n\x05usb_c\x18\x01 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.UsbC\x12;\n\x05usb_a\x18\x02 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.UsbA\x12\x38\n\x03lte\x18\x03 \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.Lte\x12:\n\x04hdmi\x18\x04 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.Hdmi\x12P\n\tfw_config\x18\x05 \x01(\x0b\x32=.chromiumos.config.api.HardwareFeatures.FirmwareConfiguration\x12<\n\x05\x61udio\x18\x06 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Audio\x12>\n\x06\x63\x61mera\x18\x07 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Camera\x12L\n\raccelerometer\x18\x08 \x01(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.Accelerometer\x12\x44\n\tgyroscope\x18\t \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Gyroscope\x12J\n\x0cmagnetometer\x18\n \x01(\x0b\x32\x34.chromiumos.config.api.HardwareFeatures.Magnetometer\x12I\n\x0clight_sensor\x18\x0b \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.LightSensor\x12>\n\x06screen\x18\x0c \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Screen\x12G\n\x0b\x66orm_factor\x18\r \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.FormFactor\x12>\n\x06stylus\x18\x0e \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Stylus\x12\x42\n\x08keyboard\x18\x0f \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Keyboard\x12>\n\x06memory\x18\x10 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Memory\x12H\n\x0b\x66ingerprint\x18\x11 \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.Fingerprint\x12@\n\x07storage\x18\x12 \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Storage\x12\x44\n\tbluetooth\x18\x13 \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Bluetooth\x12\x46\n\nbarreljack\x18\x14 \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.BarrelJack\x12:\n\x04wifi\x18\x17 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.Wifi\x12\x44\n\x0cpower_button\x18\x15 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Button\x12\x45\n\rvolume_button\x18\x16 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Button\x12W\n\x13\x65mbedded_controller\x18\x18 \x01(\x0b\x32:.chromiumos.config.api.HardwareFeatures.EmbeddedController\x12^\n\x17trusted_platform_module\x18\x19 \x01(\x0b\x32=.chromiumos.config.api.HardwareFeatures.TrustedPlatformModule\x12\x46\n\nhotwording\x18\x1a \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.Hotwording\x12@\n\x07\x64isplay\x18\x1b \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Display\x12\x42\n\x08touchpad\x18\x1c \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Touchpad\x12\\\n\x16microphone_mute_switch\x18\x1d \x01(\x0b\x32<.chromiumos.config.api.HardwareFeatures.MicrophoneMuteSwitch\x12@\n\x07\x62\x61ttery\x18\x1e \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Battery\x12M\n\x0eprivacy_screen\x18\x1f \x01(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.PrivacyScreen\x12\x38\n\x03soc\x18  \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.Soc\x12R\n\x0c\x64p_converter\x18! \x01(\x0b\x32<.chromiumos.config.api.HardwareFeatures.DisplayPortConverter\x1a\x16\n\x05\x43ount\x12\r\n\x05value\x18\x01 \x01(\r\x1a\x44\n\x04UsbC\x12<\n\x05\x63ount\x18\x01 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x1a\x44\n\x04UsbA\x12<\n\x05\x63ount\x18\x01 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x1aV\n\x03Lte\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\r\n\x05model\x18\x02 \x01(\t\x1aH\n\x04Hdmi\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x34\n\x15\x46irmwareConfiguration\x12\r\n\x05value\x18\x01 \x01(\r\x12\x0c\n\x04mask\x18\x02 \x01(\r\x1a\x89\x06\n\x05\x41udio\x12M\n\x0b\x61udio_codec\x18\x01 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.AudioCodec\x12L\n\x0bspeaker_amp\x18\x02 \x01(\x0e\x32\x37.chromiumos.config.api.HardwareFeatures.Audio.Amplifier\x12Q\n\x0fheadphone_codec\x18\x03 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.AudioCodec\x12\x45\n\x0elid_microphone\x18\x04 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12\x46\n\x0f\x62\x61se_microphone\x18\x05 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12\x45\n\x11speaker_amplifier\x18\x06 \x01(\x0b\x32*.chromiumos.config.api.Component.Amplifier\"\x9d\x01\n\nAudioCodec\x12\x17\n\x13\x41UDIO_CODEC_UNKNOWN\x10\x00\x12\n\n\x06RT5682\x10\x01\x12\x0c\n\x08\x41LC5682I\x10\x02\x12\x0b\n\x07\x41LC5682\x10\x03\x12\n\n\x06\x44\x41\x37\x32\x31\x39\x10\x08\x12\r\n\tNAU88L25B\x10\n\x12\x0b\n\x07\x43S42L42\x10\x0b\x12\x0e\n\nALC5682IVS\x10\x0c\x12\x0b\n\x07WCD9385\x10\r\"\x04\x08\x04\x10\x07\"\x04\x08\t\x10\t\"\x99\x01\n\tAmplifier\x12\x15\n\x11\x41MPLIFIER_UNKNOWN\x10\x00\x12\x0c\n\x08MAX98357\x10\x04\x12\x0c\n\x08MAX98373\x10\x05\x12\x0c\n\x08MAX98360\x10\x06\x12\n\n\x06RT1015\x10\x07\x12\x0b\n\x07\x41LC1011\x10\t\x12\x0b\n\x07RT1015P\x10\n\x12\x0b\n\x07\x41LC1019\x10\x0b\x12\x0c\n\x08MAX98390\x10\x0c\"\x04\x08\x01\x10\x03\"\x04\x08\x08\x10\x08\x1a\xf9\x05\n\x06\x43\x61mera\x12\x46\n\x07\x64\x65vices\x18\x04 \x03(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.Camera.Device\x1a\xd2\x02\n\x06\x44\x65vice\x12K\n\tinterface\x18\x02 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Camera.Interface\x12\x45\n\x06\x66\x61\x63ing\x18\x03 \x01(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Camera.Facing\x12O\n\x0borientation\x18\x04 \x01(\x0e\x32:.chromiumos.config.api.HardwareFeatures.Camera.Orientation\x12\r\n\x05\x66lags\x18\x05 \x01(\r\x12\x0b\n\x03ids\x18\x06 \x03(\t\x12G\n\x0eprivacy_switch\x18\x07 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\"I\n\tInterface\x12\x15\n\x11INTERFACE_UNKNOWN\x10\x00\x12\x11\n\rINTERFACE_USB\x10\x01\x12\x12\n\x0eINTERFACE_MIPI\x10\x02\"?\n\x06\x46\x61\x63ing\x12\x12\n\x0e\x46\x41\x43ING_UNKNOWN\x10\x00\x12\x10\n\x0c\x46\x41\x43ING_FRONT\x10\x01\x12\x0f\n\x0b\x46\x41\x43ING_BACK\x10\x02\"w\n\x0bOrientation\x12\x17\n\x13ORIENTATION_UNKNOWN\x10\x00\x12\x11\n\rORIENTATION_0\x10\x01\x12\x12\n\x0eORIENTATION_90\x10\x02\x12\x13\n\x0fORIENTATION_180\x10\x03\x12\x13\n\x0fORIENTATION_270\x10\x04\"M\n\x05\x46lags\x12\x0e\n\nFLAGS_NONE\x10\x00\x12\x17\n\x13\x46LAGS_SUPPORT_1080P\x10\x01\x12\x1b\n\x17\x46LAGS_SUPPORT_AUTOFOCUS\x10\x02\x1a\xa8\x01\n\rAccelerometer\x12J\n\x11lid_accelerometer\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12K\n\x12\x62\x61se_accelerometer\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x9c\x01\n\tGyroscope\x12\x46\n\rlid_gyroscope\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12G\n\x0e\x62\x61se_gyroscope\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa5\x01\n\x0cMagnetometer\x12I\n\x10lid_magnetometer\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12J\n\x11\x62\x61se_magnetometer\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa2\x01\n\x0bLightSensor\x12H\n\x0flid_lightsensor\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12I\n\x10\x62\x61se_lightsensor\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xaa\x01\n\x06Screen\x12R\n\x10panel_properties\x18\x03 \x01(\x0b\x32\x38.chromiumos.config.api.Component.DisplayPanel.Properties\x12\x46\n\rtouch_support\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.PresentJ\x04\x08\x01\x10\x02\x1a\xff\x01\n\nFormFactor\x12V\n\x0b\x66orm_factor\x18\x01 \x01(\x0e\x32\x41.chromiumos.config.api.HardwareFeatures.FormFactor.FormFactorType\"\x98\x01\n\x0e\x46ormFactorType\x12\x17\n\x13\x46ORM_FACTOR_UNKNOWN\x10\x00\x12\r\n\tCLAMSHELL\x10\x01\x12\x0f\n\x0b\x43ONVERTIBLE\x10\x02\x12\x0e\n\nDETACHABLE\x10\x03\x12\x0e\n\nCHROMEBASE\x10\x04\x12\r\n\tCHROMEBOX\x10\x05\x12\r\n\tCHROMEBIT\x10\x06\x12\x0f\n\x0b\x43HROMESLATE\x10\x07\x1a\x9b\x01\n\x06Stylus\x12I\n\x06stylus\x18\x01 \x01(\x0e\x32\x39.chromiumos.config.api.HardwareFeatures.Stylus.StylusType\"F\n\nStylusType\x12\x12\n\x0eSTYLUS_UNKNOWN\x10\x00\x12\x08\n\x04NONE\x10\x01\x12\x0c\n\x08INTERNAL\x10\x02\x12\x0c\n\x08\x45XTERNAL\x10\x03\x1a\x84\x03\n\x08Keyboard\x12T\n\rkeyboard_type\x18\x01 \x01(\x0e\x32=.chromiumos.config.api.HardwareFeatures.Keyboard.KeyboardType\x12\x42\n\tbacklight\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x45\n\x0cpower_button\x18\x03 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x44\n\x0bnumeric_pad\x18\x04 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\"Q\n\x0cKeyboardType\x12\x19\n\x15KEYBOARD_TYPE_UNKNOWN\x10\x00\x12\x0c\n\x08INTERNAL\x10\x01\x12\x08\n\x04NONE\x10\x02\x12\x0e\n\nDETACHABLE\x10\x03\x1aJ\n\x06Memory\x12@\n\x07profile\x18\x01 \x01(\x0b\x32/.chromiumos.config.api.Component.Memory.Profile\x1a\xc8\x02\n\x0b\x46ingerprint\x12N\n\x08location\x18\x01 \x01(\x0e\x32<.chromiumos.config.api.HardwareFeatures.Fingerprint.Location\x12\r\n\x05\x62oard\x18\x02 \x01(\t\x12\x12\n\nro_version\x18\x03 \x01(\t\"\xc5\x01\n\x08Location\x12\x14\n\x10LOCATION_UNKNOWN\x10\x00\x12\x19\n\x15POWER_BUTTON_TOP_LEFT\x10\x01\x12\x18\n\x14KEYBOARD_BOTTOM_LEFT\x10\x02\x12\x19\n\x15KEYBOARD_BOTTOM_RIGHT\x10\x03\x12\x16\n\x12KEYBOARD_TOP_RIGHT\x10\x04\x12\x0f\n\x0bNOT_PRESENT\x10\x05\x12\x0e\n\nRIGHT_SIDE\x10\x06\x12\r\n\tLEFT_SIDE\x10\x07\x12\x0b\n\x07PRESENT\x10\x08\x1a\x66\n\x07Storage\x12J\n\x0cstorage_type\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.Component.Storage.StorageType\x12\x0f\n\x07size_gb\x18\x02 \x01(\r\x1a\x8c\x01\n\tBluetooth\x12=\n\tcomponent\x18\x01 \x01(\x0b\x32*.chromiumos.config.api.Component.Bluetooth\x12@\n\x07present\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aN\n\nBarrelJack\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xf7\x01\n\x04Wifi\x12T\n\x18supported_wlan_protocols\x18\x01 \x03(\x0e\x32\x32.chromiumos.config.api.Component.Wifi.WLANProtocol\x12I\n\nwifi_chips\x18\x02 \x03(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Wifi.WifiChip\"N\n\x08WifiChip\x12\x15\n\x11WIFI_CHIP_UNKNOWN\x10\x00\x12\x15\n\x11WIRELESS_86ED801D\x10\x01\x12\x14\n\x10WIRELESS_REALTEK\x10\x02\x1a\xa0\x02\n\x06\x42utton\x12\x45\n\x06region\x18\x01 \x01(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Button.Region\x12\x41\n\x04\x65\x64ge\x18\x02 \x01(\x0e\x32\x33.chromiumos.config.api.HardwareFeatures.Button.Edge\x12\x10\n\x08position\x18\x03 \x01(\x02\"6\n\x06Region\x12\x12\n\x0eREGION_UNKNOWN\x10\x00\x12\n\n\x06SCREEN\x10\x01\x12\x0c\n\x08KEYBOARD\x10\x02\"B\n\x04\x45\x64ge\x12\x10\n\x0c\x45\x44GE_UNKNOWN\x10\x00\x12\x08\n\x04LEFT\x10\x01\x12\t\n\x05RIGHT\x10\x02\x12\x07\n\x03TOP\x10\x03\x12\n\n\x06\x42OTTOM\x10\x04\x1a\xc9\x02\n\x12\x45mbeddedController\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x62\n\x07\x65\x63_type\x18\x02 \x01(\x0e\x32Q.chromiumos.config.api.HardwareFeatures.EmbeddedController.EmbeddedControllerType\x12\x41\n\x04part\x18\x03 \x01(\x0b\x32\x33.chromiumos.config.api.Component.EmbeddedController\"J\n\x16\x45mbeddedControllerType\x12\x13\n\x0f\x45\x43_TYPE_UNKNOWN\x10\x00\x12\r\n\tEC_CHROME\x10\x01\x12\x0c\n\x08\x45\x43_WILCO\x10\x02\x1a\xe0\x01\n\x15TrustedPlatformModule\x12i\n\x08tpm_type\x18\x01 \x01(\x0e\x32W.chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.TrustedPlatformModuleType\"\\\n\x19TrustedPlatformModuleType\x12\x14\n\x10TPM_TYPE_UNKNOWN\x10\x00\x12\x0f\n\x0bTHIRD_PARTY\x10\x01\x12\x0b\n\x07GSC_H1B\x10\x02\x12\x0b\n\x07GSC_H1D\x10\x03\x1aN\n\nHotwording\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa9\x01\n\x07\x44isplay\x12\x42\n\x04type\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.HardwareFeatures.Display.Type\"Z\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x11\n\rTYPE_INTERNAL\x10\x01\x12\x11\n\rTYPE_EXTERNAL\x10\x02\x12\x1a\n\x16TYPE_INTERNAL_EXTERNAL\x10\x03\x1aL\n\x08Touchpad\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aX\n\x14MicrophoneMuteSwitch\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xb6\x05\n\x07\x42\x61ttery\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12J\n\x08lifetime\x18\x02 \x01(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Battery.Lifetime\x12J\n\x08\x63harging\x18\x03 \x01(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Battery.Charging\x1a\x9f\x02\n\x08Lifetime\x12\x35\n\x0cshipping_min\x18\x01 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x37\n\x0e\x64\x65\x65p_sleep_min\x18\x02 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x34\n\x0bsuspend_min\x18\x03 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x38\n\x0flucid_sleep_min\x18\x04 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x33\n\nactive_min\x18\x05 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x1a\xae\x01\n\x08\x43harging\x12\x33\n\nactive_max\x18\x01 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x34\n\x0bsuspend_max\x18\x02 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x37\n\x0e\x64\x65\x65p_sleep_max\x18\x03 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x1aQ\n\rPrivacyScreen\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x45\n\x03Soc\x12>\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0e\x32,.chromiumos.config.api.Component.Soc.Feature\x1a\x61\n\x14\x44isplayPortConverter\x12I\n\nconverters\x18\x01 \x03(\x0b\x32\x35.chromiumos.config.api.Component.DisplayPortConverter\"<\n\x07Present\x12\x13\n\x0fPRESENT_UNKNOWN\x10\x00\x12\x0b\n\x07PRESENT\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\x42*Z(go.chromium.org/chromiumos/config/go/apib\x06proto3'
   ,
   dependencies=[chromiumos_dot_config_dot_api_dot_component__pb2.DESCRIPTOR,])
 
@@ -286,8 +286,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4128,
-  serialized_end=4285,
+  serialized_start=4212,
+  serialized_end=4369,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_AUDIO_AUDIOCODEC)
 
@@ -346,8 +346,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4288,
-  serialized_end=4441,
+  serialized_start=4372,
+  serialized_end=4525,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_AUDIO_AMPLIFIER)
 
@@ -376,8 +376,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4867,
-  serialized_end=4940,
+  serialized_start=4951,
+  serialized_end=5024,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CAMERA_INTERFACE)
 
@@ -406,8 +406,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4942,
-  serialized_end=5005,
+  serialized_start=5026,
+  serialized_end=5089,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CAMERA_FACING)
 
@@ -446,8 +446,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=5007,
-  serialized_end=5126,
+  serialized_start=5091,
+  serialized_end=5210,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CAMERA_ORIENTATION)
 
@@ -476,8 +476,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=5128,
-  serialized_end=5205,
+  serialized_start=5212,
+  serialized_end=5289,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CAMERA_FLAGS)
 
@@ -531,8 +531,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=6147,
-  serialized_end=6299,
+  serialized_start=6231,
+  serialized_end=6383,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_FORMFACTOR_FORMFACTORTYPE)
 
@@ -566,8 +566,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=6387,
-  serialized_end=6457,
+  serialized_start=6471,
+  serialized_end=6541,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_STYLUS_STYLUSTYPE)
 
@@ -601,8 +601,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=6767,
-  serialized_end=6848,
+  serialized_start=6851,
+  serialized_end=6932,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_KEYBOARD_KEYBOARDTYPE)
 
@@ -661,8 +661,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=7058,
-  serialized_end=7255,
+  serialized_start=7142,
+  serialized_end=7339,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_FINGERPRINT_LOCATION)
 
@@ -691,8 +691,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=7754,
-  serialized_end=7832,
+  serialized_start=7838,
+  serialized_end=7916,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_WIFI_WIFICHIP)
 
@@ -721,8 +721,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8001,
-  serialized_end=8055,
+  serialized_start=8085,
+  serialized_end=8139,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_BUTTON_REGION)
 
@@ -761,8 +761,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8057,
-  serialized_end=8123,
+  serialized_start=8141,
+  serialized_end=8207,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_BUTTON_EDGE)
 
@@ -791,8 +791,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8381,
-  serialized_end=8455,
+  serialized_start=8465,
+  serialized_end=8539,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_EMBEDDEDCONTROLLER_EMBEDDEDCONTROLLERTYPE)
 
@@ -826,8 +826,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8590,
-  serialized_end=8682,
+  serialized_start=8674,
+  serialized_end=8766,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_TRUSTEDPLATFORMMODULE_TRUSTEDPLATFORMMODULETYPE)
 
@@ -861,8 +861,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8844,
-  serialized_end=8934,
+  serialized_start=8928,
+  serialized_end=9018,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_DISPLAY_TYPE)
 
@@ -891,8 +891,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=9955,
-  serialized_end=10015,
+  serialized_start=10138,
+  serialized_end=10198,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_PRESENT)
 
@@ -1056,8 +1056,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3283,
-  serialized_end=3305,
+  serialized_start=3367,
+  serialized_end=3389,
 )
 
 _HARDWAREFEATURES_USBC = _descriptor.Descriptor(
@@ -1087,8 +1087,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3307,
-  serialized_end=3375,
+  serialized_start=3391,
+  serialized_end=3459,
 )
 
 _HARDWAREFEATURES_USBA = _descriptor.Descriptor(
@@ -1118,8 +1118,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3377,
-  serialized_end=3445,
+  serialized_start=3461,
+  serialized_end=3529,
 )
 
 _HARDWAREFEATURES_LTE = _descriptor.Descriptor(
@@ -1156,8 +1156,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3447,
-  serialized_end=3533,
+  serialized_start=3531,
+  serialized_end=3617,
 )
 
 _HARDWAREFEATURES_HDMI = _descriptor.Descriptor(
@@ -1187,8 +1187,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3535,
-  serialized_end=3607,
+  serialized_start=3619,
+  serialized_end=3691,
 )
 
 _HARDWAREFEATURES_FIRMWARECONFIGURATION = _descriptor.Descriptor(
@@ -1225,8 +1225,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3609,
-  serialized_end=3661,
+  serialized_start=3693,
+  serialized_end=3745,
 )
 
 _HARDWAREFEATURES_AUDIO = _descriptor.Descriptor(
@@ -1293,8 +1293,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3664,
-  serialized_end=4441,
+  serialized_start=3748,
+  serialized_end=4525,
 )
 
 _HARDWAREFEATURES_CAMERA_DEVICE = _descriptor.Descriptor(
@@ -1359,8 +1359,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4527,
-  serialized_end=4865,
+  serialized_start=4611,
+  serialized_end=4949,
 )
 
 _HARDWAREFEATURES_CAMERA = _descriptor.Descriptor(
@@ -1394,8 +1394,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4444,
-  serialized_end=5205,
+  serialized_start=4528,
+  serialized_end=5289,
 )
 
 _HARDWAREFEATURES_ACCELEROMETER = _descriptor.Descriptor(
@@ -1432,8 +1432,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5208,
-  serialized_end=5376,
+  serialized_start=5292,
+  serialized_end=5460,
 )
 
 _HARDWAREFEATURES_GYROSCOPE = _descriptor.Descriptor(
@@ -1470,8 +1470,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5379,
-  serialized_end=5535,
+  serialized_start=5463,
+  serialized_end=5619,
 )
 
 _HARDWAREFEATURES_MAGNETOMETER = _descriptor.Descriptor(
@@ -1508,8 +1508,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5538,
-  serialized_end=5703,
+  serialized_start=5622,
+  serialized_end=5787,
 )
 
 _HARDWAREFEATURES_LIGHTSENSOR = _descriptor.Descriptor(
@@ -1546,8 +1546,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5706,
-  serialized_end=5868,
+  serialized_start=5790,
+  serialized_end=5952,
 )
 
 _HARDWAREFEATURES_SCREEN = _descriptor.Descriptor(
@@ -1584,8 +1584,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5871,
-  serialized_end=6041,
+  serialized_start=5955,
+  serialized_end=6125,
 )
 
 _HARDWAREFEATURES_FORMFACTOR = _descriptor.Descriptor(
@@ -1616,8 +1616,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6044,
-  serialized_end=6299,
+  serialized_start=6128,
+  serialized_end=6383,
 )
 
 _HARDWAREFEATURES_STYLUS = _descriptor.Descriptor(
@@ -1648,8 +1648,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6302,
-  serialized_end=6457,
+  serialized_start=6386,
+  serialized_end=6541,
 )
 
 _HARDWAREFEATURES_KEYBOARD = _descriptor.Descriptor(
@@ -1701,8 +1701,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6460,
-  serialized_end=6848,
+  serialized_start=6544,
+  serialized_end=6932,
 )
 
 _HARDWAREFEATURES_MEMORY = _descriptor.Descriptor(
@@ -1732,8 +1732,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6850,
-  serialized_end=6924,
+  serialized_start=6934,
+  serialized_end=7008,
 )
 
 _HARDWAREFEATURES_FINGERPRINT = _descriptor.Descriptor(
@@ -1778,8 +1778,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6927,
-  serialized_end=7255,
+  serialized_start=7011,
+  serialized_end=7339,
 )
 
 _HARDWAREFEATURES_STORAGE = _descriptor.Descriptor(
@@ -1816,8 +1816,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7257,
-  serialized_end=7359,
+  serialized_start=7341,
+  serialized_end=7443,
 )
 
 _HARDWAREFEATURES_BLUETOOTH = _descriptor.Descriptor(
@@ -1854,8 +1854,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7362,
-  serialized_end=7502,
+  serialized_start=7446,
+  serialized_end=7586,
 )
 
 _HARDWAREFEATURES_BARRELJACK = _descriptor.Descriptor(
@@ -1885,8 +1885,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7504,
-  serialized_end=7582,
+  serialized_start=7588,
+  serialized_end=7666,
 )
 
 _HARDWAREFEATURES_WIFI = _descriptor.Descriptor(
@@ -1924,8 +1924,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7585,
-  serialized_end=7832,
+  serialized_start=7669,
+  serialized_end=7916,
 )
 
 _HARDWAREFEATURES_BUTTON = _descriptor.Descriptor(
@@ -1971,8 +1971,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7835,
-  serialized_end=8123,
+  serialized_start=7919,
+  serialized_end=8207,
 )
 
 _HARDWAREFEATURES_EMBEDDEDCONTROLLER = _descriptor.Descriptor(
@@ -2017,8 +2017,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8126,
-  serialized_end=8455,
+  serialized_start=8210,
+  serialized_end=8539,
 )
 
 _HARDWAREFEATURES_TRUSTEDPLATFORMMODULE = _descriptor.Descriptor(
@@ -2049,8 +2049,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8458,
-  serialized_end=8682,
+  serialized_start=8542,
+  serialized_end=8766,
 )
 
 _HARDWAREFEATURES_HOTWORDING = _descriptor.Descriptor(
@@ -2080,8 +2080,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8684,
-  serialized_end=8762,
+  serialized_start=8768,
+  serialized_end=8846,
 )
 
 _HARDWAREFEATURES_DISPLAY = _descriptor.Descriptor(
@@ -2112,8 +2112,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8765,
-  serialized_end=8934,
+  serialized_start=8849,
+  serialized_end=9018,
 )
 
 _HARDWAREFEATURES_TOUCHPAD = _descriptor.Descriptor(
@@ -2143,8 +2143,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8936,
-  serialized_end=9012,
+  serialized_start=9020,
+  serialized_end=9096,
 )
 
 _HARDWAREFEATURES_MICROPHONEMUTESWITCH = _descriptor.Descriptor(
@@ -2174,8 +2174,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9014,
-  serialized_end=9102,
+  serialized_start=9098,
+  serialized_end=9186,
 )
 
 _HARDWAREFEATURES_BATTERY_LIFETIME = _descriptor.Descriptor(
@@ -2233,8 +2233,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9335,
-  serialized_end=9622,
+  serialized_start=9419,
+  serialized_end=9706,
 )
 
 _HARDWAREFEATURES_BATTERY_CHARGING = _descriptor.Descriptor(
@@ -2278,8 +2278,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9625,
-  serialized_end=9799,
+  serialized_start=9709,
+  serialized_end=9883,
 )
 
 _HARDWAREFEATURES_BATTERY = _descriptor.Descriptor(
@@ -2323,8 +2323,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9105,
-  serialized_end=9799,
+  serialized_start=9189,
+  serialized_end=9883,
 )
 
 _HARDWAREFEATURES_PRIVACYSCREEN = _descriptor.Descriptor(
@@ -2354,8 +2354,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9801,
-  serialized_end=9882,
+  serialized_start=9885,
+  serialized_end=9966,
 )
 
 _HARDWAREFEATURES_SOC = _descriptor.Descriptor(
@@ -2385,8 +2385,39 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9884,
-  serialized_end=9953,
+  serialized_start=9968,
+  serialized_end=10037,
+)
+
+_HARDWAREFEATURES_DISPLAYPORTCONVERTER = _descriptor.Descriptor(
+  name='DisplayPortConverter',
+  full_name='chromiumos.config.api.HardwareFeatures.DisplayPortConverter',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='converters', full_name='chromiumos.config.api.HardwareFeatures.DisplayPortConverter.converters', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=10039,
+  serialized_end=10136,
 )
 
 _HARDWAREFEATURES = _descriptor.Descriptor(
@@ -2621,10 +2652,17 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='dp_converter', full_name='chromiumos.config.api.HardwareFeatures.dp_converter', index=32,
+      number=33, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
-  nested_types=[_HARDWAREFEATURES_COUNT, _HARDWAREFEATURES_USBC, _HARDWAREFEATURES_USBA, _HARDWAREFEATURES_LTE, _HARDWAREFEATURES_HDMI, _HARDWAREFEATURES_FIRMWARECONFIGURATION, _HARDWAREFEATURES_AUDIO, _HARDWAREFEATURES_CAMERA, _HARDWAREFEATURES_ACCELEROMETER, _HARDWAREFEATURES_GYROSCOPE, _HARDWAREFEATURES_MAGNETOMETER, _HARDWAREFEATURES_LIGHTSENSOR, _HARDWAREFEATURES_SCREEN, _HARDWAREFEATURES_FORMFACTOR, _HARDWAREFEATURES_STYLUS, _HARDWAREFEATURES_KEYBOARD, _HARDWAREFEATURES_MEMORY, _HARDWAREFEATURES_FINGERPRINT, _HARDWAREFEATURES_STORAGE, _HARDWAREFEATURES_BLUETOOTH, _HARDWAREFEATURES_BARRELJACK, _HARDWAREFEATURES_WIFI, _HARDWAREFEATURES_BUTTON, _HARDWAREFEATURES_EMBEDDEDCONTROLLER, _HARDWAREFEATURES_TRUSTEDPLATFORMMODULE, _HARDWAREFEATURES_HOTWORDING, _HARDWAREFEATURES_DISPLAY, _HARDWAREFEATURES_TOUCHPAD, _HARDWAREFEATURES_MICROPHONEMUTESWITCH, _HARDWAREFEATURES_BATTERY, _HARDWAREFEATURES_PRIVACYSCREEN, _HARDWAREFEATURES_SOC, ],
+  nested_types=[_HARDWAREFEATURES_COUNT, _HARDWAREFEATURES_USBC, _HARDWAREFEATURES_USBA, _HARDWAREFEATURES_LTE, _HARDWAREFEATURES_HDMI, _HARDWAREFEATURES_FIRMWARECONFIGURATION, _HARDWAREFEATURES_AUDIO, _HARDWAREFEATURES_CAMERA, _HARDWAREFEATURES_ACCELEROMETER, _HARDWAREFEATURES_GYROSCOPE, _HARDWAREFEATURES_MAGNETOMETER, _HARDWAREFEATURES_LIGHTSENSOR, _HARDWAREFEATURES_SCREEN, _HARDWAREFEATURES_FORMFACTOR, _HARDWAREFEATURES_STYLUS, _HARDWAREFEATURES_KEYBOARD, _HARDWAREFEATURES_MEMORY, _HARDWAREFEATURES_FINGERPRINT, _HARDWAREFEATURES_STORAGE, _HARDWAREFEATURES_BLUETOOTH, _HARDWAREFEATURES_BARRELJACK, _HARDWAREFEATURES_WIFI, _HARDWAREFEATURES_BUTTON, _HARDWAREFEATURES_EMBEDDEDCONTROLLER, _HARDWAREFEATURES_TRUSTEDPLATFORMMODULE, _HARDWAREFEATURES_HOTWORDING, _HARDWAREFEATURES_DISPLAY, _HARDWAREFEATURES_TOUCHPAD, _HARDWAREFEATURES_MICROPHONEMUTESWITCH, _HARDWAREFEATURES_BATTERY, _HARDWAREFEATURES_PRIVACYSCREEN, _HARDWAREFEATURES_SOC, _HARDWAREFEATURES_DISPLAYPORTCONVERTER, ],
   enum_types=[
     _HARDWAREFEATURES_PRESENT,
   ],
@@ -2635,7 +2673,7 @@
   oneofs=[
   ],
   serialized_start=1012,
-  serialized_end=10015,
+  serialized_end=10198,
 )
 
 _TOPOLOGY_DESCRIPTIONENTRY.containing_type = _TOPOLOGY
@@ -2758,6 +2796,8 @@
 _HARDWAREFEATURES_PRIVACYSCREEN.containing_type = _HARDWAREFEATURES
 _HARDWAREFEATURES_SOC.fields_by_name['features'].enum_type = chromiumos_dot_config_dot_api_dot_component__pb2._COMPONENT_SOC_FEATURE
 _HARDWAREFEATURES_SOC.containing_type = _HARDWAREFEATURES
+_HARDWAREFEATURES_DISPLAYPORTCONVERTER.fields_by_name['converters'].message_type = chromiumos_dot_config_dot_api_dot_component__pb2._COMPONENT_DISPLAYPORTCONVERTER
+_HARDWAREFEATURES_DISPLAYPORTCONVERTER.containing_type = _HARDWAREFEATURES
 _HARDWAREFEATURES.fields_by_name['usb_c'].message_type = _HARDWAREFEATURES_USBC
 _HARDWAREFEATURES.fields_by_name['usb_a'].message_type = _HARDWAREFEATURES_USBA
 _HARDWAREFEATURES.fields_by_name['lte'].message_type = _HARDWAREFEATURES_LTE
@@ -2790,6 +2830,7 @@
 _HARDWAREFEATURES.fields_by_name['battery'].message_type = _HARDWAREFEATURES_BATTERY
 _HARDWAREFEATURES.fields_by_name['privacy_screen'].message_type = _HARDWAREFEATURES_PRIVACYSCREEN
 _HARDWAREFEATURES.fields_by_name['soc'].message_type = _HARDWAREFEATURES_SOC
+_HARDWAREFEATURES.fields_by_name['dp_converter'].message_type = _HARDWAREFEATURES_DISPLAYPORTCONVERTER
 _HARDWAREFEATURES_PRESENT.containing_type = _HARDWAREFEATURES
 DESCRIPTOR.message_types_by_name['Topology'] = _TOPOLOGY
 DESCRIPTOR.message_types_by_name['Duration'] = _DURATION
@@ -3064,6 +3105,13 @@
     # @@protoc_insertion_point(class_scope:chromiumos.config.api.HardwareFeatures.Soc)
     })
   ,
+
+  'DisplayPortConverter' : _reflection.GeneratedProtocolMessageType('DisplayPortConverter', (_message.Message,), {
+    'DESCRIPTOR' : _HARDWAREFEATURES_DISPLAYPORTCONVERTER,
+    '__module__' : 'chromiumos.config.api.topology_pb2'
+    # @@protoc_insertion_point(class_scope:chromiumos.config.api.HardwareFeatures.DisplayPortConverter)
+    })
+  ,
   'DESCRIPTOR' : _HARDWAREFEATURES,
   '__module__' : 'chromiumos.config.api.topology_pb2'
   # @@protoc_insertion_point(class_scope:chromiumos.config.api.HardwareFeatures)
@@ -3104,6 +3152,7 @@
 _sym_db.RegisterMessage(HardwareFeatures.Battery.Charging)
 _sym_db.RegisterMessage(HardwareFeatures.PrivacyScreen)
 _sym_db.RegisterMessage(HardwareFeatures.Soc)
+_sym_db.RegisterMessage(HardwareFeatures.DisplayPortConverter)
 
 
 DESCRIPTOR._options = None
diff --git a/api/gen/chromiumos/config/prototype/release_target_pb2.py b/api/gen/chromiumos/config/prototype/release_target_pb2.py
index 1d7bdfe..63998b6 100644
--- a/api/gen/chromiumos/config/prototype/release_target_pb2.py
+++ b/api/gen/chromiumos/config/prototype/release_target_pb2.py
@@ -12,6 +12,7 @@
 
 
 from chromite.api.gen.chromiumos.config.prototype import release_target_id_pb2 as chromiumos_dot_config_dot_prototype_dot_release__target__id__pb2
+from chromite.api.gen.chromiumos.config.prototype import signing_pb2 as chromiumos_dot_config_dot_prototype_dot_signing__pb2
 from chromite.api.gen.chromiumos.build.api import system_image_pb2 as chromiumos_dot_build_dot_api_dot_system__image__pb2
 
 
@@ -21,50 +22,47 @@
   syntax='proto3',
   serialized_options=b'Z.go.chromium.org/chromiumos/config/go/prototype',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n0chromiumos/config/prototype/release_target.proto\x12\x1b\x63hromiumos.config.prototype\x1a\x33\x63hromiumos/config/prototype/release_target_id.proto\x1a\'chromiumos/build/api/system_image.proto\"\xd9\x02\n\rReleaseTarget\x12\x38\n\x02id\x18\x01 \x01(\x0b\x32,.chromiumos.config.prototype.ReleaseTargetId\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x42\n\x0bmain_target\x18\x05 \x01(\x0b\x32-.chromiumos.build.api.SystemImage.BuildTarget\x12\x43\n\x0cuprev_target\x18\x06 \x01(\x0b\x32-.chromiumos.build.api.SystemImage.BuildTarget\x12\x43\n\x07signing\x18\x04 \x01(\x0b\x32\x32.chromiumos.config.prototype.ReleaseTarget.Signing\x1a\x32\n\x07Signing\x12\x14\n\x0cpremp_keyset\x18\x01 \x01(\t\x12\x11\n\tmp_keyset\x18\x02 \x01(\tB0Z.go.chromium.org/chromiumos/config/go/prototypeb\x06proto3'
+  serialized_pb=b'\n0chromiumos/config/prototype/release_target.proto\x12\x1b\x63hromiumos.config.prototype\x1a\x33\x63hromiumos/config/prototype/release_target_id.proto\x1a)chromiumos/config/prototype/signing.proto\x1a\'chromiumos/build/api/system_image.proto\"\xf1\x03\n\rReleaseTarget\x12\x38\n\x02id\x18\x01 \x01(\x0b\x32,.chromiumos.config.prototype.ReleaseTargetId\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x43\n\x0c\x62uild_target\x18\x03 \x01(\x0b\x32-.chromiumos.build.api.SystemImage.BuildTarget\x12\x43\n\x0fvariant_targets\x18\x04 \x03(\x0b\x32*.chromiumos.config.prototype.ReleaseTarget\x12N\n\x14signing_instructions\x18\x05 \x01(\x0b\x32\x30.chromiumos.config.prototype.SigningInstructions\x12Q\n\x0b\x63riticality\x18\x06 \x01(\x0e\x32<.chromiumos.config.prototype.ReleaseTarget.TargetCriticality\"k\n\x11TargetCriticality\x12\x12\n\x0e\x43RIT_UNDEFINED\x10\x00\x12\x15\n\x11\x43RIT_EXPERIMENTAL\x10\x01\x12\x16\n\x12\x43RIT_INFORMATIONAL\x10\x02\x12\x13\n\x0f\x43RIT_PRODUCTION\x10\x03\x42\x30Z.go.chromium.org/chromiumos/config/go/prototypeb\x06proto3'
   ,
-  dependencies=[chromiumos_dot_config_dot_prototype_dot_release__target__id__pb2.DESCRIPTOR,chromiumos_dot_build_dot_api_dot_system__image__pb2.DESCRIPTOR,])
+  dependencies=[chromiumos_dot_config_dot_prototype_dot_release__target__id__pb2.DESCRIPTOR,chromiumos_dot_config_dot_prototype_dot_signing__pb2.DESCRIPTOR,chromiumos_dot_build_dot_api_dot_system__image__pb2.DESCRIPTOR,])
 
 
 
-
-_RELEASETARGET_SIGNING = _descriptor.Descriptor(
-  name='Signing',
-  full_name='chromiumos.config.prototype.ReleaseTarget.Signing',
+_RELEASETARGET_TARGETCRITICALITY = _descriptor.EnumDescriptor(
+  name='TargetCriticality',
+  full_name='chromiumos.config.prototype.ReleaseTarget.TargetCriticality',
   filename=None,
   file=DESCRIPTOR,
-  containing_type=None,
   create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='premp_keyset', full_name='chromiumos.config.prototype.ReleaseTarget.Signing.premp_keyset', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='mp_keyset', full_name='chromiumos.config.prototype.ReleaseTarget.Signing.mp_keyset', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  values=[
+    _descriptor.EnumValueDescriptor(
+      name='CRIT_UNDEFINED', index=0, number=0,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='CRIT_EXPERIMENTAL', index=1, number=1,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='CRIT_INFORMATIONAL', index=2, number=2,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='CRIT_PRODUCTION', index=3, number=3,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
   ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
+  containing_type=None,
   serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=471,
-  serialized_end=521,
+  serialized_start=609,
+  serialized_end=716,
 )
+_sym_db.RegisterEnumDescriptor(_RELEASETARGET_TARGETCRITICALITY)
+
 
 _RELEASETARGET = _descriptor.Descriptor(
   name='ReleaseTarget',
@@ -89,31 +87,39 @@
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
-      name='main_target', full_name='chromiumos.config.prototype.ReleaseTarget.main_target', index=2,
+      name='build_target', full_name='chromiumos.config.prototype.ReleaseTarget.build_target', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='variant_targets', full_name='chromiumos.config.prototype.ReleaseTarget.variant_targets', index=3,
+      number=4, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='signing_instructions', full_name='chromiumos.config.prototype.ReleaseTarget.signing_instructions', index=4,
       number=5, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
-      name='uprev_target', full_name='chromiumos.config.prototype.ReleaseTarget.uprev_target', index=3,
-      number=6, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='signing', full_name='chromiumos.config.prototype.ReleaseTarget.signing', index=4,
-      number=4, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
+      name='criticality', full_name='chromiumos.config.prototype.ReleaseTarget.criticality', index=5,
+      number=6, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
-  nested_types=[_RELEASETARGET_SIGNING, ],
+  nested_types=[],
   enum_types=[
+    _RELEASETARGET_TARGETCRITICALITY,
   ],
   serialized_options=None,
   is_extendable=False,
@@ -121,32 +127,25 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=176,
-  serialized_end=521,
+  serialized_start=219,
+  serialized_end=716,
 )
 
-_RELEASETARGET_SIGNING.containing_type = _RELEASETARGET
 _RELEASETARGET.fields_by_name['id'].message_type = chromiumos_dot_config_dot_prototype_dot_release__target__id__pb2._RELEASETARGETID
-_RELEASETARGET.fields_by_name['main_target'].message_type = chromiumos_dot_build_dot_api_dot_system__image__pb2._SYSTEMIMAGE_BUILDTARGET
-_RELEASETARGET.fields_by_name['uprev_target'].message_type = chromiumos_dot_build_dot_api_dot_system__image__pb2._SYSTEMIMAGE_BUILDTARGET
-_RELEASETARGET.fields_by_name['signing'].message_type = _RELEASETARGET_SIGNING
+_RELEASETARGET.fields_by_name['build_target'].message_type = chromiumos_dot_build_dot_api_dot_system__image__pb2._SYSTEMIMAGE_BUILDTARGET
+_RELEASETARGET.fields_by_name['variant_targets'].message_type = _RELEASETARGET
+_RELEASETARGET.fields_by_name['signing_instructions'].message_type = chromiumos_dot_config_dot_prototype_dot_signing__pb2._SIGNINGINSTRUCTIONS
+_RELEASETARGET.fields_by_name['criticality'].enum_type = _RELEASETARGET_TARGETCRITICALITY
+_RELEASETARGET_TARGETCRITICALITY.containing_type = _RELEASETARGET
 DESCRIPTOR.message_types_by_name['ReleaseTarget'] = _RELEASETARGET
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 ReleaseTarget = _reflection.GeneratedProtocolMessageType('ReleaseTarget', (_message.Message,), {
-
-  'Signing' : _reflection.GeneratedProtocolMessageType('Signing', (_message.Message,), {
-    'DESCRIPTOR' : _RELEASETARGET_SIGNING,
-    '__module__' : 'chromiumos.config.prototype.release_target_pb2'
-    # @@protoc_insertion_point(class_scope:chromiumos.config.prototype.ReleaseTarget.Signing)
-    })
-  ,
   'DESCRIPTOR' : _RELEASETARGET,
   '__module__' : 'chromiumos.config.prototype.release_target_pb2'
   # @@protoc_insertion_point(class_scope:chromiumos.config.prototype.ReleaseTarget)
   })
 _sym_db.RegisterMessage(ReleaseTarget)
-_sym_db.RegisterMessage(ReleaseTarget.Signing)
 
 
 DESCRIPTOR._options = None
diff --git a/api/gen/chromiumos/config/prototype/signing_pb2.py b/api/gen/chromiumos/config/prototype/signing_pb2.py
new file mode 100644
index 0000000..1a1cd32
--- /dev/null
+++ b/api/gen/chromiumos/config/prototype/signing_pb2.py
@@ -0,0 +1,106 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: chromiumos/config/prototype/signing.proto
+"""Generated protocol buffer code."""
+from chromite.third_party.google.protobuf import descriptor as _descriptor
+from chromite.third_party.google.protobuf import message as _message
+from chromite.third_party.google.protobuf import reflection as _reflection
+from chromite.third_party.google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+  name='chromiumos/config/prototype/signing.proto',
+  package='chromiumos.config.prototype',
+  syntax='proto3',
+  serialized_options=b'Z.go.chromium.org/chromiumos/config/go/prototype',
+  create_key=_descriptor._internal_create_key,
+  serialized_pb=b'\n)chromiumos/config/prototype/signing.proto\x12\x1b\x63hromiumos.config.prototype\"\x9a\x01\n\x13SigningInstructions\x12\x14\n\x0cpremp_keyset\x18\x01 \x01(\t\x12\x11\n\tmp_keyset\x18\x02 \x01(\t\x12\x17\n\x0f\x66irmware_update\x18\x03 \x01(\x08\x12\x16\n\x0e\x61llow_password\x18\x04 \x01(\x08\x12\x14\n\x0coutput_names\x18\x05 \x01(\t\x12\x13\n\x0binput_files\x18\x06 \x01(\tB0Z.go.chromium.org/chromiumos/config/go/prototypeb\x06proto3'
+)
+
+
+
+
+_SIGNINGINSTRUCTIONS = _descriptor.Descriptor(
+  name='SigningInstructions',
+  full_name='chromiumos.config.prototype.SigningInstructions',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='premp_keyset', full_name='chromiumos.config.prototype.SigningInstructions.premp_keyset', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='mp_keyset', full_name='chromiumos.config.prototype.SigningInstructions.mp_keyset', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='firmware_update', full_name='chromiumos.config.prototype.SigningInstructions.firmware_update', index=2,
+      number=3, type=8, cpp_type=7, label=1,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='allow_password', full_name='chromiumos.config.prototype.SigningInstructions.allow_password', index=3,
+      number=4, type=8, cpp_type=7, label=1,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='output_names', full_name='chromiumos.config.prototype.SigningInstructions.output_names', index=4,
+      number=5, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='input_files', full_name='chromiumos.config.prototype.SigningInstructions.input_files', index=5,
+      number=6, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=75,
+  serialized_end=229,
+)
+
+DESCRIPTOR.message_types_by_name['SigningInstructions'] = _SIGNINGINSTRUCTIONS
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+SigningInstructions = _reflection.GeneratedProtocolMessageType('SigningInstructions', (_message.Message,), {
+  'DESCRIPTOR' : _SIGNINGINSTRUCTIONS,
+  '__module__' : 'chromiumos.config.prototype.signing_pb2'
+  # @@protoc_insertion_point(class_scope:chromiumos.config.prototype.SigningInstructions)
+  })
+_sym_db.RegisterMessage(SigningInstructions)
+
+
+DESCRIPTOR._options = None
+# @@protoc_insertion_point(module_scope)
diff --git a/api/gen/chromiumos/container_metadata_pb2.py b/api/gen/chromiumos/container_metadata_pb2.py
new file mode 100644
index 0000000..7c11308
--- /dev/null
+++ b/api/gen/chromiumos/container_metadata_pb2.py
@@ -0,0 +1,320 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: chromiumos/container_metadata.proto
+"""Generated protocol buffer code."""
+from chromite.third_party.google.protobuf import descriptor as _descriptor
+from chromite.third_party.google.protobuf import message as _message
+from chromite.third_party.google.protobuf import reflection as _reflection
+from chromite.third_party.google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+  name='chromiumos/container_metadata.proto',
+  package='chromiumos',
+  syntax='proto3',
+  serialized_options=b'\n!com.google.chrome.crosinfra.protoZ4go.chromium.org/chromiumos/infra/proto/go/chromiumos',
+  create_key=_descriptor._internal_create_key,
+  serialized_pb=b'\n#chromiumos/container_metadata.proto\x12\nchromiumos\"2\n\rGcrRepository\x12\x10\n\x08hostname\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\"o\n\x12\x43ontainerImageInfo\x12-\n\nrepository\x18\x01 \x01(\x0b\x32\x19.chromiumos.GcrRepository\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06\x64igest\x18\x03 \x01(\t\x12\x0c\n\x04tags\x18\x04 \x03(\t\"\x9d\x01\n\x11\x43ontainerImageMap\x12\x39\n\x06images\x18\x01 \x03(\x0b\x32).chromiumos.ContainerImageMap.ImagesEntry\x1aM\n\x0bImagesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x1e.chromiumos.ContainerImageInfo:\x02\x38\x01\"\xa8\x01\n\x11\x43ontainerMetadata\x12\x41\n\ncontainers\x18\x01 \x03(\x0b\x32-.chromiumos.ContainerMetadata.ContainersEntry\x1aP\n\x0f\x43ontainersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.chromiumos.ContainerImageMap:\x02\x38\x01\x42Y\n!com.google.chrome.crosinfra.protoZ4go.chromium.org/chromiumos/infra/proto/go/chromiumosb\x06proto3'
+)
+
+
+
+
+_GCRREPOSITORY = _descriptor.Descriptor(
+  name='GcrRepository',
+  full_name='chromiumos.GcrRepository',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='hostname', full_name='chromiumos.GcrRepository.hostname', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='project', full_name='chromiumos.GcrRepository.project', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=51,
+  serialized_end=101,
+)
+
+
+_CONTAINERIMAGEINFO = _descriptor.Descriptor(
+  name='ContainerImageInfo',
+  full_name='chromiumos.ContainerImageInfo',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='repository', full_name='chromiumos.ContainerImageInfo.repository', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='name', full_name='chromiumos.ContainerImageInfo.name', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='digest', full_name='chromiumos.ContainerImageInfo.digest', index=2,
+      number=3, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='tags', full_name='chromiumos.ContainerImageInfo.tags', index=3,
+      number=4, type=9, cpp_type=9, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=103,
+  serialized_end=214,
+)
+
+
+_CONTAINERIMAGEMAP_IMAGESENTRY = _descriptor.Descriptor(
+  name='ImagesEntry',
+  full_name='chromiumos.ContainerImageMap.ImagesEntry',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='key', full_name='chromiumos.ContainerImageMap.ImagesEntry.key', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='value', full_name='chromiumos.ContainerImageMap.ImagesEntry.value', index=1,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=b'8\001',
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=297,
+  serialized_end=374,
+)
+
+_CONTAINERIMAGEMAP = _descriptor.Descriptor(
+  name='ContainerImageMap',
+  full_name='chromiumos.ContainerImageMap',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='images', full_name='chromiumos.ContainerImageMap.images', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[_CONTAINERIMAGEMAP_IMAGESENTRY, ],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=217,
+  serialized_end=374,
+)
+
+
+_CONTAINERMETADATA_CONTAINERSENTRY = _descriptor.Descriptor(
+  name='ContainersEntry',
+  full_name='chromiumos.ContainerMetadata.ContainersEntry',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='key', full_name='chromiumos.ContainerMetadata.ContainersEntry.key', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='value', full_name='chromiumos.ContainerMetadata.ContainersEntry.value', index=1,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=b'8\001',
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=465,
+  serialized_end=545,
+)
+
+_CONTAINERMETADATA = _descriptor.Descriptor(
+  name='ContainerMetadata',
+  full_name='chromiumos.ContainerMetadata',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='containers', full_name='chromiumos.ContainerMetadata.containers', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[_CONTAINERMETADATA_CONTAINERSENTRY, ],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=377,
+  serialized_end=545,
+)
+
+_CONTAINERIMAGEINFO.fields_by_name['repository'].message_type = _GCRREPOSITORY
+_CONTAINERIMAGEMAP_IMAGESENTRY.fields_by_name['value'].message_type = _CONTAINERIMAGEINFO
+_CONTAINERIMAGEMAP_IMAGESENTRY.containing_type = _CONTAINERIMAGEMAP
+_CONTAINERIMAGEMAP.fields_by_name['images'].message_type = _CONTAINERIMAGEMAP_IMAGESENTRY
+_CONTAINERMETADATA_CONTAINERSENTRY.fields_by_name['value'].message_type = _CONTAINERIMAGEMAP
+_CONTAINERMETADATA_CONTAINERSENTRY.containing_type = _CONTAINERMETADATA
+_CONTAINERMETADATA.fields_by_name['containers'].message_type = _CONTAINERMETADATA_CONTAINERSENTRY
+DESCRIPTOR.message_types_by_name['GcrRepository'] = _GCRREPOSITORY
+DESCRIPTOR.message_types_by_name['ContainerImageInfo'] = _CONTAINERIMAGEINFO
+DESCRIPTOR.message_types_by_name['ContainerImageMap'] = _CONTAINERIMAGEMAP
+DESCRIPTOR.message_types_by_name['ContainerMetadata'] = _CONTAINERMETADATA
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+GcrRepository = _reflection.GeneratedProtocolMessageType('GcrRepository', (_message.Message,), {
+  'DESCRIPTOR' : _GCRREPOSITORY,
+  '__module__' : 'chromiumos.container_metadata_pb2'
+  # @@protoc_insertion_point(class_scope:chromiumos.GcrRepository)
+  })
+_sym_db.RegisterMessage(GcrRepository)
+
+ContainerImageInfo = _reflection.GeneratedProtocolMessageType('ContainerImageInfo', (_message.Message,), {
+  'DESCRIPTOR' : _CONTAINERIMAGEINFO,
+  '__module__' : 'chromiumos.container_metadata_pb2'
+  # @@protoc_insertion_point(class_scope:chromiumos.ContainerImageInfo)
+  })
+_sym_db.RegisterMessage(ContainerImageInfo)
+
+ContainerImageMap = _reflection.GeneratedProtocolMessageType('ContainerImageMap', (_message.Message,), {
+
+  'ImagesEntry' : _reflection.GeneratedProtocolMessageType('ImagesEntry', (_message.Message,), {
+    'DESCRIPTOR' : _CONTAINERIMAGEMAP_IMAGESENTRY,
+    '__module__' : 'chromiumos.container_metadata_pb2'
+    # @@protoc_insertion_point(class_scope:chromiumos.ContainerImageMap.ImagesEntry)
+    })
+  ,
+  'DESCRIPTOR' : _CONTAINERIMAGEMAP,
+  '__module__' : 'chromiumos.container_metadata_pb2'
+  # @@protoc_insertion_point(class_scope:chromiumos.ContainerImageMap)
+  })
+_sym_db.RegisterMessage(ContainerImageMap)
+_sym_db.RegisterMessage(ContainerImageMap.ImagesEntry)
+
+ContainerMetadata = _reflection.GeneratedProtocolMessageType('ContainerMetadata', (_message.Message,), {
+
+  'ContainersEntry' : _reflection.GeneratedProtocolMessageType('ContainersEntry', (_message.Message,), {
+    'DESCRIPTOR' : _CONTAINERMETADATA_CONTAINERSENTRY,
+    '__module__' : 'chromiumos.container_metadata_pb2'
+    # @@protoc_insertion_point(class_scope:chromiumos.ContainerMetadata.ContainersEntry)
+    })
+  ,
+  'DESCRIPTOR' : _CONTAINERMETADATA,
+  '__module__' : 'chromiumos.container_metadata_pb2'
+  # @@protoc_insertion_point(class_scope:chromiumos.ContainerMetadata)
+  })
+_sym_db.RegisterMessage(ContainerMetadata)
+_sym_db.RegisterMessage(ContainerMetadata.ContainersEntry)
+
+
+DESCRIPTOR._options = None
+_CONTAINERIMAGEMAP_IMAGESENTRY._options = None
+_CONTAINERMETADATA_CONTAINERSENTRY._options = None
+# @@protoc_insertion_point(module_scope)
diff --git a/api/gen/chromiumos/test/api/dut_attribute_pb2.py b/api/gen/chromiumos/test/api/dut_attribute_pb2.py
index 347f73c..bec9148 100644
--- a/api/gen/chromiumos/test/api/dut_attribute_pb2.py
+++ b/api/gen/chromiumos/test/api/dut_attribute_pb2.py
@@ -19,7 +19,7 @@
   syntax='proto3',
   serialized_options=b'Z-go.chromium.org/chromiumos/config/go/test/api',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\'chromiumos/test/api/dut_attribute.proto\x12\x13\x63hromiumos.test.api\"i\n\x0c\x44utAttribute\x12\x30\n\x02id\x18\x01 \x01(\x0b\x32$.chromiumos.test.api.DutAttribute.Id\x12\x12\n\nfield_path\x18\x02 \x01(\t\x1a\x13\n\x02Id\x12\r\n\x05value\x18\x01 \x01(\t\"M\n\x10\x44utAttributeList\x12\x39\n\x0e\x64ut_attributes\x18\x01 \x03(\x0b\x32!.chromiumos.test.api.DutAttribute\"Z\n\x0c\x44utCriterion\x12:\n\x0c\x61ttribute_id\x18\x01 \x01(\x0b\x32$.chromiumos.test.api.DutAttribute.Id\x12\x0e\n\x06values\x18\x02 \x03(\tB/Z-go.chromium.org/chromiumos/config/go/test/apib\x06proto3'
+  serialized_pb=b'\n\'chromiumos/test/api/dut_attribute.proto\x12\x13\x63hromiumos.test.api\"\x8b\x04\n\x0c\x44utAttribute\x12\x30\n\x02id\x18\x01 \x01(\x0b\x32$.chromiumos.test.api.DutAttribute.Id\x12\x0f\n\x07\x61liases\x18\x02 \x03(\t\x12P\n\x12\x66lat_config_source\x18\x03 \x01(\x0b\x32\x32.chromiumos.test.api.DutAttribute.FlatConfigSourceH\x00\x12\x43\n\x0bhwid_source\x18\x04 \x01(\x0b\x32,.chromiumos.test.api.DutAttribute.HwidSourceH\x00\x12\x16\n\x0e\x61llowed_values\x18\x05 \x03(\t\x12\x16\n\x0e\x65xclude_values\x18\x06 \x03(\t\x1a\x13\n\x02Id\x12\r\n\x05value\x18\x01 \x01(\t\x1a\x19\n\tFieldSpec\x12\x0c\n\x04path\x18\x01 \x01(\t\x1aO\n\x10\x46latConfigSource\x12;\n\x06\x66ields\x18\x01 \x03(\x0b\x32+.chromiumos.test.api.DutAttribute.FieldSpec\x1a\x61\n\nHwidSource\x12\x16\n\x0e\x63omponent_type\x18\x01 \x01(\t\x12;\n\x06\x66ields\x18\x02 \x03(\x0b\x32+.chromiumos.test.api.DutAttribute.FieldSpecB\r\n\x0b\x64\x61ta_source\"M\n\x10\x44utAttributeList\x12\x39\n\x0e\x64ut_attributes\x18\x01 \x03(\x0b\x32!.chromiumos.test.api.DutAttribute\"Z\n\x0c\x44utCriterion\x12:\n\x0c\x61ttribute_id\x18\x01 \x01(\x0b\x32$.chromiumos.test.api.DutAttribute.Id\x12\x0e\n\x06values\x18\x02 \x03(\tB/Z-go.chromium.org/chromiumos/config/go/test/apib\x06proto3'
 )
 
 
@@ -52,8 +52,108 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=150,
-  serialized_end=169,
+  serialized_start=347,
+  serialized_end=366,
+)
+
+_DUTATTRIBUTE_FIELDSPEC = _descriptor.Descriptor(
+  name='FieldSpec',
+  full_name='chromiumos.test.api.DutAttribute.FieldSpec',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='path', full_name='chromiumos.test.api.DutAttribute.FieldSpec.path', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=368,
+  serialized_end=393,
+)
+
+_DUTATTRIBUTE_FLATCONFIGSOURCE = _descriptor.Descriptor(
+  name='FlatConfigSource',
+  full_name='chromiumos.test.api.DutAttribute.FlatConfigSource',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='fields', full_name='chromiumos.test.api.DutAttribute.FlatConfigSource.fields', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=395,
+  serialized_end=474,
+)
+
+_DUTATTRIBUTE_HWIDSOURCE = _descriptor.Descriptor(
+  name='HwidSource',
+  full_name='chromiumos.test.api.DutAttribute.HwidSource',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='component_type', full_name='chromiumos.test.api.DutAttribute.HwidSource.component_type', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='fields', full_name='chromiumos.test.api.DutAttribute.HwidSource.fields', index=1,
+      number=2, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=476,
+  serialized_end=573,
 )
 
 _DUTATTRIBUTE = _descriptor.Descriptor(
@@ -72,16 +172,44 @@
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
-      name='field_path', full_name='chromiumos.test.api.DutAttribute.field_path', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
+      name='aliases', full_name='chromiumos.test.api.DutAttribute.aliases', index=1,
+      number=2, type=9, cpp_type=9, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='flat_config_source', full_name='chromiumos.test.api.DutAttribute.flat_config_source', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='hwid_source', full_name='chromiumos.test.api.DutAttribute.hwid_source', index=3,
+      number=4, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='allowed_values', full_name='chromiumos.test.api.DutAttribute.allowed_values', index=4,
+      number=5, type=9, cpp_type=9, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='exclude_values', full_name='chromiumos.test.api.DutAttribute.exclude_values', index=5,
+      number=6, type=9, cpp_type=9, label=3,
+      has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
-  nested_types=[_DUTATTRIBUTE_ID, ],
+  nested_types=[_DUTATTRIBUTE_ID, _DUTATTRIBUTE_FIELDSPEC, _DUTATTRIBUTE_FLATCONFIGSOURCE, _DUTATTRIBUTE_HWIDSOURCE, ],
   enum_types=[
   ],
   serialized_options=None,
@@ -89,9 +217,14 @@
   syntax='proto3',
   extension_ranges=[],
   oneofs=[
+    _descriptor.OneofDescriptor(
+      name='data_source', full_name='chromiumos.test.api.DutAttribute.data_source',
+      index=0, containing_type=None,
+      create_key=_descriptor._internal_create_key,
+    fields=[]),
   ],
-  serialized_start=64,
-  serialized_end=169,
+  serialized_start=65,
+  serialized_end=588,
 )
 
 
@@ -122,8 +255,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=171,
-  serialized_end=248,
+  serialized_start=590,
+  serialized_end=667,
 )
 
 
@@ -161,12 +294,25 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=250,
-  serialized_end=340,
+  serialized_start=669,
+  serialized_end=759,
 )
 
 _DUTATTRIBUTE_ID.containing_type = _DUTATTRIBUTE
+_DUTATTRIBUTE_FIELDSPEC.containing_type = _DUTATTRIBUTE
+_DUTATTRIBUTE_FLATCONFIGSOURCE.fields_by_name['fields'].message_type = _DUTATTRIBUTE_FIELDSPEC
+_DUTATTRIBUTE_FLATCONFIGSOURCE.containing_type = _DUTATTRIBUTE
+_DUTATTRIBUTE_HWIDSOURCE.fields_by_name['fields'].message_type = _DUTATTRIBUTE_FIELDSPEC
+_DUTATTRIBUTE_HWIDSOURCE.containing_type = _DUTATTRIBUTE
 _DUTATTRIBUTE.fields_by_name['id'].message_type = _DUTATTRIBUTE_ID
+_DUTATTRIBUTE.fields_by_name['flat_config_source'].message_type = _DUTATTRIBUTE_FLATCONFIGSOURCE
+_DUTATTRIBUTE.fields_by_name['hwid_source'].message_type = _DUTATTRIBUTE_HWIDSOURCE
+_DUTATTRIBUTE.oneofs_by_name['data_source'].fields.append(
+  _DUTATTRIBUTE.fields_by_name['flat_config_source'])
+_DUTATTRIBUTE.fields_by_name['flat_config_source'].containing_oneof = _DUTATTRIBUTE.oneofs_by_name['data_source']
+_DUTATTRIBUTE.oneofs_by_name['data_source'].fields.append(
+  _DUTATTRIBUTE.fields_by_name['hwid_source'])
+_DUTATTRIBUTE.fields_by_name['hwid_source'].containing_oneof = _DUTATTRIBUTE.oneofs_by_name['data_source']
 _DUTATTRIBUTELIST.fields_by_name['dut_attributes'].message_type = _DUTATTRIBUTE
 _DUTCRITERION.fields_by_name['attribute_id'].message_type = _DUTATTRIBUTE_ID
 DESCRIPTOR.message_types_by_name['DutAttribute'] = _DUTATTRIBUTE
@@ -182,12 +328,36 @@
     # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutAttribute.Id)
     })
   ,
+
+  'FieldSpec' : _reflection.GeneratedProtocolMessageType('FieldSpec', (_message.Message,), {
+    'DESCRIPTOR' : _DUTATTRIBUTE_FIELDSPEC,
+    '__module__' : 'chromiumos.test.api.dut_attribute_pb2'
+    # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutAttribute.FieldSpec)
+    })
+  ,
+
+  'FlatConfigSource' : _reflection.GeneratedProtocolMessageType('FlatConfigSource', (_message.Message,), {
+    'DESCRIPTOR' : _DUTATTRIBUTE_FLATCONFIGSOURCE,
+    '__module__' : 'chromiumos.test.api.dut_attribute_pb2'
+    # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutAttribute.FlatConfigSource)
+    })
+  ,
+
+  'HwidSource' : _reflection.GeneratedProtocolMessageType('HwidSource', (_message.Message,), {
+    'DESCRIPTOR' : _DUTATTRIBUTE_HWIDSOURCE,
+    '__module__' : 'chromiumos.test.api.dut_attribute_pb2'
+    # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutAttribute.HwidSource)
+    })
+  ,
   'DESCRIPTOR' : _DUTATTRIBUTE,
   '__module__' : 'chromiumos.test.api.dut_attribute_pb2'
   # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutAttribute)
   })
 _sym_db.RegisterMessage(DutAttribute)
 _sym_db.RegisterMessage(DutAttribute.Id)
+_sym_db.RegisterMessage(DutAttribute.FieldSpec)
+_sym_db.RegisterMessage(DutAttribute.FlatConfigSource)
+_sym_db.RegisterMessage(DutAttribute.HwidSource)
 
 DutAttributeList = _reflection.GeneratedProtocolMessageType('DutAttributeList', (_message.Message,), {
   'DESCRIPTOR' : _DUTATTRIBUTELIST,
diff --git a/api/gen/chromiumos/test/api/provision_cli_pb2.py b/api/gen/chromiumos/test/api/provision_cli_pb2.py
index 6bdc79d..ddcc23a 100644
--- a/api/gen/chromiumos/test/api/provision_cli_pb2.py
+++ b/api/gen/chromiumos/test/api/provision_cli_pb2.py
@@ -22,7 +22,7 @@
   syntax='proto3',
   serialized_options=b'Z-go.chromium.org/chromiumos/config/go/test/api',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\'chromiumos/test/api/provision_cli.proto\x12\x13\x63hromiumos.test.api\x1a!chromiumos/test/lab/api/dut.proto\x1a)chromiumos/test/api/provision_state.proto\x1a+chromiumos/test/api/provision_service.proto\"F\n\x11ProvisionCliInput\x12\x31\n\ndut_inputs\x18\x01 \x03(\x0b\x32\x1d.chromiumos.test.api.DutInput\"\x89\x01\n\x08\x44utInput\x12+\n\x02id\x18\x01 \x01(\x0b\x32\x1f.chromiumos.test.lab.api.Dut.Id\x12\x12\n\ndocker_tag\x18\x02 \x01(\t\x12<\n\x0fprovision_state\x18\x03 \x01(\x0b\x32#.chromiumos.test.api.ProvisionState\"I\n\x12ProvisionCliOutput\x12\x33\n\x0b\x64ut_outputs\x18\x01 \x03(\x0b\x32\x1e.chromiumos.test.api.DutOutput\"\xb3\x01\n\tDutOutput\x12+\n\x02id\x18\x01 \x01(\x0b\x32\x1f.chromiumos.test.lab.api.Dut.Id\x12\x36\n\x07success\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcomeB/Z-go.chromium.org/chromiumos/config/go/test/apib\x06proto3'
+  serialized_pb=b'\n\'chromiumos/test/api/provision_cli.proto\x12\x13\x63hromiumos.test.api\x1a!chromiumos/test/lab/api/dut.proto\x1a)chromiumos/test/api/provision_state.proto\x1a+chromiumos/test/api/provision_service.proto\"F\n\x11ProvisionCliInput\x12\x31\n\ndut_inputs\x18\x01 \x03(\x0b\x32\x1d.chromiumos.test.api.DutInput\"\xb6\x02\n\x08\x44utInput\x12+\n\x02id\x18\x01 \x01(\x0b\x32\x1f.chromiumos.test.lab.api.Dut.Id\x12<\n\x0fprovision_state\x18\x03 \x01(\x0b\x32#.chromiumos.test.api.ProvisionState\x12>\n\x0b\x64ut_service\x18\x04 \x01(\x0b\x32).chromiumos.test.api.DutInput.DockerImage\x12\x44\n\x11provision_service\x18\x05 \x01(\x0b\x32).chromiumos.test.api.DutInput.DockerImage\x1a\x33\n\x0b\x44ockerImage\x12\x17\n\x0frepository_path\x18\x01 \x01(\t\x12\x0b\n\x03tag\x18\x02 \x01(\tJ\x04\x08\x02\x10\x03\"I\n\x12ProvisionCliOutput\x12\x33\n\x0b\x64ut_outputs\x18\x01 \x03(\x0b\x32\x1e.chromiumos.test.api.DutOutput\"\xb3\x01\n\tDutOutput\x12+\n\x02id\x18\x01 \x01(\x0b\x32\x1f.chromiumos.test.lab.api.Dut.Id\x12\x36\n\x07success\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcomeB/Z-go.chromium.org/chromiumos/config/go/test/apib\x06proto3'
   ,
   dependencies=[chromiumos_dot_test_dot_lab_dot_api_dot_dut__pb2.DESCRIPTOR,chromiumos_dot_test_dot_api_dot_provision__state__pb2.DESCRIPTOR,chromiumos_dot_test_dot_api_dot_provision__service__pb2.DESCRIPTOR,])
 
@@ -61,6 +61,44 @@
 )
 
 
+_DUTINPUT_DOCKERIMAGE = _descriptor.Descriptor(
+  name='DockerImage',
+  full_name='chromiumos.test.api.DutInput.DockerImage',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='repository_path', full_name='chromiumos.test.api.DutInput.DockerImage.repository_path', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='tag', full_name='chromiumos.test.api.DutInput.DockerImage.tag', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=513,
+  serialized_end=564,
+)
+
 _DUTINPUT = _descriptor.Descriptor(
   name='DutInput',
   full_name='chromiumos.test.api.DutInput',
@@ -77,15 +115,22 @@
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
-      name='docker_tag', full_name='chromiumos.test.api.DutInput.docker_tag', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
+      name='provision_state', full_name='chromiumos.test.api.DutInput.provision_state', index=1,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
-      name='provision_state', full_name='chromiumos.test.api.DutInput.provision_state', index=2,
-      number=3, type=11, cpp_type=10, label=1,
+      name='dut_service', full_name='chromiumos.test.api.DutInput.dut_service', index=2,
+      number=4, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='provision_service', full_name='chromiumos.test.api.DutInput.provision_service', index=3,
+      number=5, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
@@ -93,7 +138,7 @@
   ],
   extensions=[
   ],
-  nested_types=[],
+  nested_types=[_DUTINPUT_DOCKERIMAGE, ],
   enum_types=[
   ],
   serialized_options=None,
@@ -103,7 +148,7 @@
   oneofs=[
   ],
   serialized_start=260,
-  serialized_end=397,
+  serialized_end=570,
 )
 
 
@@ -134,8 +179,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=399,
-  serialized_end=472,
+  serialized_start=572,
+  serialized_end=645,
 )
 
 
@@ -185,13 +230,16 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=475,
-  serialized_end=654,
+  serialized_start=648,
+  serialized_end=827,
 )
 
 _PROVISIONCLIINPUT.fields_by_name['dut_inputs'].message_type = _DUTINPUT
+_DUTINPUT_DOCKERIMAGE.containing_type = _DUTINPUT
 _DUTINPUT.fields_by_name['id'].message_type = chromiumos_dot_test_dot_lab_dot_api_dot_dut__pb2._DUT_ID
 _DUTINPUT.fields_by_name['provision_state'].message_type = chromiumos_dot_test_dot_api_dot_provision__state__pb2._PROVISIONSTATE
+_DUTINPUT.fields_by_name['dut_service'].message_type = _DUTINPUT_DOCKERIMAGE
+_DUTINPUT.fields_by_name['provision_service'].message_type = _DUTINPUT_DOCKERIMAGE
 _PROVISIONCLIOUTPUT.fields_by_name['dut_outputs'].message_type = _DUTOUTPUT
 _DUTOUTPUT.fields_by_name['id'].message_type = chromiumos_dot_test_dot_lab_dot_api_dot_dut__pb2._DUT_ID
 _DUTOUTPUT.fields_by_name['success'].message_type = chromiumos_dot_test_dot_api_dot_provision__service__pb2._INSTALLSUCCESS
@@ -216,11 +264,19 @@
 _sym_db.RegisterMessage(ProvisionCliInput)
 
 DutInput = _reflection.GeneratedProtocolMessageType('DutInput', (_message.Message,), {
+
+  'DockerImage' : _reflection.GeneratedProtocolMessageType('DockerImage', (_message.Message,), {
+    'DESCRIPTOR' : _DUTINPUT_DOCKERIMAGE,
+    '__module__' : 'chromiumos.test.api.provision_cli_pb2'
+    # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutInput.DockerImage)
+    })
+  ,
   'DESCRIPTOR' : _DUTINPUT,
   '__module__' : 'chromiumos.test.api.provision_cli_pb2'
   # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutInput)
   })
 _sym_db.RegisterMessage(DutInput)
+_sym_db.RegisterMessage(DutInput.DockerImage)
 
 ProvisionCliOutput = _reflection.GeneratedProtocolMessageType('ProvisionCliOutput', (_message.Message,), {
   'DESCRIPTOR' : _PROVISIONCLIOUTPUT,
diff --git a/api/gen/chromiumos/test/api/provision_service_pb2.py b/api/gen/chromiumos/test/api/provision_service_pb2.py
index d54f245..08e76d0 100644
--- a/api/gen/chromiumos/test/api/provision_service_pb2.py
+++ b/api/gen/chromiumos/test/api/provision_service_pb2.py
@@ -22,7 +22,7 @@
   syntax='proto3',
   serialized_options=b'Z-go.chromium.org/chromiumos/config/go/test/api',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n+chromiumos/test/api/provision_service.proto\x12\x13\x63hromiumos.test.api\x1a*chromiumos/build/api/firmware_config.proto\x1a\'chromiumos/longrunning/operations.proto\x1a\x1d\x63hromiumos/storage_path.proto\"\x10\n\x0eInstallSuccess\"\xaf\x02\n\x0eInstallFailure\x12:\n\x06reason\x18\x01 \x01(\x0e\x32*.chromiumos.test.api.InstallFailure.Reason\"\xe0\x01\n\x06Reason\x12\x1a\n\x16REASON_INVALID_REQUEST\x10\x00\x12(\n$REASON_DUT_UNREACHABLE_PRE_PROVISION\x10\x01\x12#\n\x1fREASON_DOWNLOADING_IMAGE_FAILED\x10\x02\x12 \n\x1cREASON_PROVISIONING_TIMEDOUT\x10\x03\x12\x1e\n\x1aREASON_PROVISIONING_FAILED\x10\x04\x12)\n%REASON_DUT_UNREACHABLE_POST_PROVISION\x10\x05\"\xbc\x01\n\x12InstallCrosRequest\x12\x30\n\x0f\x63ros_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\x12\x42\n\tdlc_specs\x18\x02 \x03(\x0b\x32/.chromiumos.test.api.InstallCrosRequest.DLCSpec\x12\x19\n\x11preserve_stateful\x18\x03 \x01(\x08\x1a\x15\n\x07\x44LCSpec\x12\n\n\x02id\x18\x01 \x01(\t\"\x90\x01\n\x13InstallCrosResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x15\n\x13InstallCrosMetadata\"J\n\x14InstallLacrosRequest\x12\x32\n\x11lacros_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\"\x92\x01\n\x15InstallLacrosResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x17\n\x15InstallLacrosMetadata\"D\n\x11InstallAshRequest\x12/\n\x0e\x61sh_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\"\x8f\x01\n\x12InstallAshResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x14\n\x12InstallAshMetadata\"D\n\x11InstallArcRequest\x12/\n\x0e\x61sh_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\"\x8f\x01\n\x12InstallArcResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x14\n\x12InstallArcMetadata\"W\n\x16InstallFirmwareRequest\x12=\n\x0f\x66irmware_config\x18\x01 \x01(\x0b\x32$.chromiumos.build.api.FirmwareConfig\"\x94\x01\n\x17InstallFirmwareResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x19\n\x17InstallFirmwareMetadata2\xd9\x05\n\x10ProvisionService\x12\x88\x01\n\x0bInstallCros\x12\'.chromiumos.test.api.InstallCrosRequest\x1a!.chromiumos.longrunning.Operation\"-\xd2\x41*\n\x13InstallCrosResponse\x12\x13InstallCrosMetadata\x12\x90\x01\n\rInstallLacros\x12).chromiumos.test.api.InstallLacrosRequest\x1a!.chromiumos.longrunning.Operation\"1\xd2\x41.\n\x15InstallLacrosResponse\x12\x15InstallLacrosMetadata\x12\x84\x01\n\nInstallAsh\x12&.chromiumos.test.api.InstallAshRequest\x1a!.chromiumos.longrunning.Operation\"+\xd2\x41(\n\x12InstallAshResponse\x12\x12InstallAshMetadata\x12\x84\x01\n\nInstallArc\x12&.chromiumos.test.api.InstallArcRequest\x1a!.chromiumos.longrunning.Operation\"+\xd2\x41(\n\x12InstallArcResponse\x12\x12InstallArcMetadata\x12\x98\x01\n\x0fInstallFirmware\x12+.chromiumos.test.api.InstallFirmwareRequest\x1a!.chromiumos.longrunning.Operation\"5\xd2\x41\x32\n\x17InstallFirmwareResponse\x12\x17InstallFirmwareMetadataB/Z-go.chromium.org/chromiumos/config/go/test/apib\x06proto3'
+  serialized_pb=b'\n+chromiumos/test/api/provision_service.proto\x12\x13\x63hromiumos.test.api\x1a*chromiumos/build/api/firmware_config.proto\x1a\'chromiumos/longrunning/operations.proto\x1a\x1d\x63hromiumos/storage_path.proto\"\x10\n\x0eInstallSuccess\"\xaf\x02\n\x0eInstallFailure\x12:\n\x06reason\x18\x01 \x01(\x0e\x32*.chromiumos.test.api.InstallFailure.Reason\"\xe0\x01\n\x06Reason\x12\x1a\n\x16REASON_INVALID_REQUEST\x10\x00\x12(\n$REASON_DUT_UNREACHABLE_PRE_PROVISION\x10\x01\x12#\n\x1fREASON_DOWNLOADING_IMAGE_FAILED\x10\x02\x12 \n\x1cREASON_PROVISIONING_TIMEDOUT\x10\x03\x12\x1e\n\x1aREASON_PROVISIONING_FAILED\x10\x04\x12)\n%REASON_DUT_UNREACHABLE_POST_PROVISION\x10\x05\"\xd4\x01\n\x12InstallCrosRequest\x12\x30\n\x0f\x63ros_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\x12\x42\n\tdlc_specs\x18\x02 \x03(\x0b\x32/.chromiumos.test.api.InstallCrosRequest.DLCSpec\x12\x19\n\x11preserve_stateful\x18\x03 \x01(\x08\x12\x16\n\x0eprevent_reboot\x18\x04 \x01(\x08\x1a\x15\n\x07\x44LCSpec\x12\n\n\x02id\x18\x01 \x01(\t\"\x90\x01\n\x13InstallCrosResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x15\n\x13InstallCrosMetadata\"J\n\x14InstallLacrosRequest\x12\x32\n\x11lacros_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\"\x92\x01\n\x15InstallLacrosResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x17\n\x15InstallLacrosMetadata\"D\n\x11InstallAshRequest\x12/\n\x0e\x61sh_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\"\x8f\x01\n\x12InstallAshResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x14\n\x12InstallAshMetadata\"D\n\x11InstallArcRequest\x12/\n\x0e\x61sh_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\"\x8f\x01\n\x12InstallArcResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x14\n\x12InstallArcMetadata\"W\n\x16InstallFirmwareRequest\x12=\n\x0f\x66irmware_config\x18\x01 \x01(\x0b\x32$.chromiumos.build.api.FirmwareConfig\"\x94\x01\n\x17InstallFirmwareResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x19\n\x17InstallFirmwareMetadata2\xd9\x05\n\x10ProvisionService\x12\x88\x01\n\x0bInstallCros\x12\'.chromiumos.test.api.InstallCrosRequest\x1a!.chromiumos.longrunning.Operation\"-\xd2\x41*\n\x13InstallCrosResponse\x12\x13InstallCrosMetadata\x12\x90\x01\n\rInstallLacros\x12).chromiumos.test.api.InstallLacrosRequest\x1a!.chromiumos.longrunning.Operation\"1\xd2\x41.\n\x15InstallLacrosResponse\x12\x15InstallLacrosMetadata\x12\x84\x01\n\nInstallAsh\x12&.chromiumos.test.api.InstallAshRequest\x1a!.chromiumos.longrunning.Operation\"+\xd2\x41(\n\x12InstallAshResponse\x12\x12InstallAshMetadata\x12\x84\x01\n\nInstallArc\x12&.chromiumos.test.api.InstallArcRequest\x1a!.chromiumos.longrunning.Operation\"+\xd2\x41(\n\x12InstallArcResponse\x12\x12InstallArcMetadata\x12\x98\x01\n\x0fInstallFirmware\x12+.chromiumos.test.api.InstallFirmwareRequest\x1a!.chromiumos.longrunning.Operation\"5\xd2\x41\x32\n\x17InstallFirmwareResponse\x12\x17InstallFirmwareMetadataB/Z-go.chromium.org/chromiumos/config/go/test/apib\x06proto3'
   ,
   dependencies=[chromiumos_dot_build_dot_api_dot_firmware__config__pb2.DESCRIPTOR,chromiumos_dot_longrunning_dot_operations__pb2.DESCRIPTOR,chromiumos_dot_storage__path__pb2.DESCRIPTOR,])
 
@@ -159,8 +159,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=676,
-  serialized_end=697,
+  serialized_start=700,
+  serialized_end=721,
 )
 
 _INSTALLCROSREQUEST = _descriptor.Descriptor(
@@ -192,6 +192,13 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='prevent_reboot', full_name='chromiumos.test.api.InstallCrosRequest.prevent_reboot', index=3,
+      number=4, type=8, cpp_type=7, label=1,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -205,7 +212,7 @@
   oneofs=[
   ],
   serialized_start=509,
-  serialized_end=697,
+  serialized_end=721,
 )
 
 
@@ -248,8 +255,8 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=700,
-  serialized_end=844,
+  serialized_start=724,
+  serialized_end=868,
 )
 
 
@@ -273,8 +280,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=846,
-  serialized_end=867,
+  serialized_start=870,
+  serialized_end=891,
 )
 
 
@@ -305,8 +312,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=869,
-  serialized_end=943,
+  serialized_start=893,
+  serialized_end=967,
 )
 
 
@@ -349,8 +356,8 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=946,
-  serialized_end=1092,
+  serialized_start=970,
+  serialized_end=1116,
 )
 
 
@@ -374,8 +381,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1094,
-  serialized_end=1117,
+  serialized_start=1118,
+  serialized_end=1141,
 )
 
 
@@ -406,8 +413,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1119,
-  serialized_end=1187,
+  serialized_start=1143,
+  serialized_end=1211,
 )
 
 
@@ -450,8 +457,8 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=1190,
-  serialized_end=1333,
+  serialized_start=1214,
+  serialized_end=1357,
 )
 
 
@@ -475,8 +482,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1335,
-  serialized_end=1355,
+  serialized_start=1359,
+  serialized_end=1379,
 )
 
 
@@ -507,8 +514,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1357,
-  serialized_end=1425,
+  serialized_start=1381,
+  serialized_end=1449,
 )
 
 
@@ -551,8 +558,8 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=1428,
-  serialized_end=1571,
+  serialized_start=1452,
+  serialized_end=1595,
 )
 
 
@@ -576,8 +583,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1573,
-  serialized_end=1593,
+  serialized_start=1597,
+  serialized_end=1617,
 )
 
 
@@ -608,8 +615,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1595,
-  serialized_end=1682,
+  serialized_start=1619,
+  serialized_end=1706,
 )
 
 
@@ -652,8 +659,8 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=1685,
-  serialized_end=1833,
+  serialized_start=1709,
+  serialized_end=1857,
 )
 
 
@@ -677,8 +684,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1835,
-  serialized_end=1860,
+  serialized_start=1859,
+  serialized_end=1884,
 )
 
 _INSTALLFAILURE.fields_by_name['reason'].enum_type = _INSTALLFAILURE_REASON
@@ -886,8 +893,8 @@
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=1863,
-  serialized_end=2592,
+  serialized_start=1887,
+  serialized_end=2616,
   methods=[
   _descriptor.MethodDescriptor(
     name='InstallCros',
diff --git a/api/gen/test_platform/v2/request_pb2.py b/api/gen/test_platform/v2/request_pb2.py
index bd666df..365ff39 100644
--- a/api/gen/test_platform/v2/request_pb2.py
+++ b/api/gen/test_platform/v2/request_pb2.py
@@ -11,7 +11,9 @@
 _sym_db = _symbol_database.Default()
 
 
+from chromite.api.gen.chromiumos import common_pb2 as chromiumos_dot_common__pb2
 from chromite.api.gen.chromiumos.test.api import coverage_rule_pb2 as chromiumos_dot_test_dot_api_dot_coverage__rule__pb2
+from chromite.api.gen.chromiumos.test.api import provision_state_pb2 as chromiumos_dot_test_dot_api_dot_provision__state__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
@@ -20,28 +22,35 @@
   syntax='proto3',
   serialized_options=b'Z:go.chromium.org/chromiumos/infra/proto/go/test_platform/v2',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x1etest_platform/v2/request.proto\x12\x10test_platform.v2\x1a\'chromiumos/test/api/coverage_rule.proto\"\x93\x01\n\x11HWTestRequestBeta\x12@\n\ntest_specs\x18\x01 \x03(\x0b\x32,.test_platform.v2.HWTestRequestBeta.TestSpec\x1a<\n\x08TestSpec\x12\x30\n\x05rules\x18\x01 \x01(\x0b\x32!.chromiumos.test.api.CoverageRule\"X\n\x0bRequestBeta\x12>\n\x0fhw_test_request\x18\x01 \x01(\x0b\x32#.test_platform.v2.HWTestRequestBetaH\x00\x42\t\n\x07requestB<Z:go.chromium.org/chromiumos/infra/proto/go/test_platform/v2b\x06proto3'
+  serialized_pb=b'\n\x1etest_platform/v2/request.proto\x12\x10test_platform.v2\x1a\x17\x63hromiumos/common.proto\x1a\'chromiumos/test/api/coverage_rule.proto\x1a)chromiumos/test/api/provision_state.proto\"\x85\x01\n\nHWTestSpec\x12\x38\n\rcoverage_rule\x18\x01 \x01(\x0b\x32!.chromiumos.test.api.CoverageRule\x12=\n\x10provision_states\x18\x02 \x03(\x0b\x32#.chromiumos.test.api.ProvisionState\"v\n\x08TestSpec\x12,\n\x0f\x62uild_directory\x18\x01 \x01(\x0b\x32\x13.chromiumos.GcsPath\x12\x34\n\x0chw_test_spec\x18\x02 \x01(\x0b\x32\x1c.test_platform.v2.HWTestSpecH\x00\x42\x06\n\x04spec\"\xe7\x01\n\x07Request\x12,\n\x0f\x62uild_directory\x18\x01 \x01(\x0b\x32\x13.chromiumos.GcsPath\x12.\n\ntest_specs\x18\x02 \x03(\x0b\x32\x1a.test_platform.v2.TestSpec\x12G\n\x12scheduler_settings\x18\x03 \x01(\x0b\x32+.test_platform.v2.Request.SchedulerSettings\x1a\x35\n\x11SchedulerSettings\x12\x0c\n\x04pool\x18\x01 \x01(\t\x12\x12\n\nqs_account\x18\x02 \x01(\tB<Z:go.chromium.org/chromiumos/infra/proto/go/test_platform/v2b\x06proto3'
   ,
-  dependencies=[chromiumos_dot_test_dot_api_dot_coverage__rule__pb2.DESCRIPTOR,])
+  dependencies=[chromiumos_dot_common__pb2.DESCRIPTOR,chromiumos_dot_test_dot_api_dot_coverage__rule__pb2.DESCRIPTOR,chromiumos_dot_test_dot_api_dot_provision__state__pb2.DESCRIPTOR,])
 
 
 
 
-_HWTESTREQUESTBETA_TESTSPEC = _descriptor.Descriptor(
-  name='TestSpec',
-  full_name='test_platform.v2.HWTestRequestBeta.TestSpec',
+_HWTESTSPEC = _descriptor.Descriptor(
+  name='HWTestSpec',
+  full_name='test_platform.v2.HWTestSpec',
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
   create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
-      name='rules', full_name='test_platform.v2.HWTestRequestBeta.TestSpec.rules', index=0,
+      name='coverage_rule', full_name='test_platform.v2.HWTestSpec.coverage_rule', index=0,
       number=1, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='provision_states', full_name='test_platform.v2.HWTestSpec.provision_states', index=1,
+      number=2, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -54,53 +63,29 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=181,
-  serialized_end=241,
+  serialized_start=162,
+  serialized_end=295,
 )
 
-_HWTESTREQUESTBETA = _descriptor.Descriptor(
-  name='HWTestRequestBeta',
-  full_name='test_platform.v2.HWTestRequestBeta',
+
+_TESTSPEC = _descriptor.Descriptor(
+  name='TestSpec',
+  full_name='test_platform.v2.TestSpec',
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
   create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
-      name='test_specs', full_name='test_platform.v2.HWTestRequestBeta.test_specs', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
+      name='build_directory', full_name='test_platform.v2.TestSpec.build_directory', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[_HWTESTREQUESTBETA_TESTSPEC, ],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=94,
-  serialized_end=241,
-)
-
-
-_REQUESTBETA = _descriptor.Descriptor(
-  name='RequestBeta',
-  full_name='test_platform.v2.RequestBeta',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
     _descriptor.FieldDescriptor(
-      name='hw_test_request', full_name='test_platform.v2.RequestBeta.hw_test_request', index=0,
-      number=1, type=11, cpp_type=10, label=1,
+      name='hw_test_spec', full_name='test_platform.v2.TestSpec.hw_test_spec', index=1,
+      number=2, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
@@ -117,47 +102,143 @@
   extension_ranges=[],
   oneofs=[
     _descriptor.OneofDescriptor(
-      name='request', full_name='test_platform.v2.RequestBeta.request',
+      name='spec', full_name='test_platform.v2.TestSpec.spec',
       index=0, containing_type=None,
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=243,
-  serialized_end=331,
+  serialized_start=297,
+  serialized_end=415,
 )
 
-_HWTESTREQUESTBETA_TESTSPEC.fields_by_name['rules'].message_type = chromiumos_dot_test_dot_api_dot_coverage__rule__pb2._COVERAGERULE
-_HWTESTREQUESTBETA_TESTSPEC.containing_type = _HWTESTREQUESTBETA
-_HWTESTREQUESTBETA.fields_by_name['test_specs'].message_type = _HWTESTREQUESTBETA_TESTSPEC
-_REQUESTBETA.fields_by_name['hw_test_request'].message_type = _HWTESTREQUESTBETA
-_REQUESTBETA.oneofs_by_name['request'].fields.append(
-  _REQUESTBETA.fields_by_name['hw_test_request'])
-_REQUESTBETA.fields_by_name['hw_test_request'].containing_oneof = _REQUESTBETA.oneofs_by_name['request']
-DESCRIPTOR.message_types_by_name['HWTestRequestBeta'] = _HWTESTREQUESTBETA
-DESCRIPTOR.message_types_by_name['RequestBeta'] = _REQUESTBETA
+
+_REQUEST_SCHEDULERSETTINGS = _descriptor.Descriptor(
+  name='SchedulerSettings',
+  full_name='test_platform.v2.Request.SchedulerSettings',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='pool', full_name='test_platform.v2.Request.SchedulerSettings.pool', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='qs_account', full_name='test_platform.v2.Request.SchedulerSettings.qs_account', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=596,
+  serialized_end=649,
+)
+
+_REQUEST = _descriptor.Descriptor(
+  name='Request',
+  full_name='test_platform.v2.Request',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='build_directory', full_name='test_platform.v2.Request.build_directory', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='test_specs', full_name='test_platform.v2.Request.test_specs', index=1,
+      number=2, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='scheduler_settings', full_name='test_platform.v2.Request.scheduler_settings', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[_REQUEST_SCHEDULERSETTINGS, ],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=418,
+  serialized_end=649,
+)
+
+_HWTESTSPEC.fields_by_name['coverage_rule'].message_type = chromiumos_dot_test_dot_api_dot_coverage__rule__pb2._COVERAGERULE
+_HWTESTSPEC.fields_by_name['provision_states'].message_type = chromiumos_dot_test_dot_api_dot_provision__state__pb2._PROVISIONSTATE
+_TESTSPEC.fields_by_name['build_directory'].message_type = chromiumos_dot_common__pb2._GCSPATH
+_TESTSPEC.fields_by_name['hw_test_spec'].message_type = _HWTESTSPEC
+_TESTSPEC.oneofs_by_name['spec'].fields.append(
+  _TESTSPEC.fields_by_name['hw_test_spec'])
+_TESTSPEC.fields_by_name['hw_test_spec'].containing_oneof = _TESTSPEC.oneofs_by_name['spec']
+_REQUEST_SCHEDULERSETTINGS.containing_type = _REQUEST
+_REQUEST.fields_by_name['build_directory'].message_type = chromiumos_dot_common__pb2._GCSPATH
+_REQUEST.fields_by_name['test_specs'].message_type = _TESTSPEC
+_REQUEST.fields_by_name['scheduler_settings'].message_type = _REQUEST_SCHEDULERSETTINGS
+DESCRIPTOR.message_types_by_name['HWTestSpec'] = _HWTESTSPEC
+DESCRIPTOR.message_types_by_name['TestSpec'] = _TESTSPEC
+DESCRIPTOR.message_types_by_name['Request'] = _REQUEST
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
-HWTestRequestBeta = _reflection.GeneratedProtocolMessageType('HWTestRequestBeta', (_message.Message,), {
+HWTestSpec = _reflection.GeneratedProtocolMessageType('HWTestSpec', (_message.Message,), {
+  'DESCRIPTOR' : _HWTESTSPEC,
+  '__module__' : 'test_platform.v2.request_pb2'
+  # @@protoc_insertion_point(class_scope:test_platform.v2.HWTestSpec)
+  })
+_sym_db.RegisterMessage(HWTestSpec)
 
-  'TestSpec' : _reflection.GeneratedProtocolMessageType('TestSpec', (_message.Message,), {
-    'DESCRIPTOR' : _HWTESTREQUESTBETA_TESTSPEC,
+TestSpec = _reflection.GeneratedProtocolMessageType('TestSpec', (_message.Message,), {
+  'DESCRIPTOR' : _TESTSPEC,
+  '__module__' : 'test_platform.v2.request_pb2'
+  # @@protoc_insertion_point(class_scope:test_platform.v2.TestSpec)
+  })
+_sym_db.RegisterMessage(TestSpec)
+
+Request = _reflection.GeneratedProtocolMessageType('Request', (_message.Message,), {
+
+  'SchedulerSettings' : _reflection.GeneratedProtocolMessageType('SchedulerSettings', (_message.Message,), {
+    'DESCRIPTOR' : _REQUEST_SCHEDULERSETTINGS,
     '__module__' : 'test_platform.v2.request_pb2'
-    # @@protoc_insertion_point(class_scope:test_platform.v2.HWTestRequestBeta.TestSpec)
+    # @@protoc_insertion_point(class_scope:test_platform.v2.Request.SchedulerSettings)
     })
   ,
-  'DESCRIPTOR' : _HWTESTREQUESTBETA,
+  'DESCRIPTOR' : _REQUEST,
   '__module__' : 'test_platform.v2.request_pb2'
-  # @@protoc_insertion_point(class_scope:test_platform.v2.HWTestRequestBeta)
+  # @@protoc_insertion_point(class_scope:test_platform.v2.Request)
   })
-_sym_db.RegisterMessage(HWTestRequestBeta)
-_sym_db.RegisterMessage(HWTestRequestBeta.TestSpec)
-
-RequestBeta = _reflection.GeneratedProtocolMessageType('RequestBeta', (_message.Message,), {
-  'DESCRIPTOR' : _REQUESTBETA,
-  '__module__' : 'test_platform.v2.request_pb2'
-  # @@protoc_insertion_point(class_scope:test_platform.v2.RequestBeta)
-  })
-_sym_db.RegisterMessage(RequestBeta)
+_sym_db.RegisterMessage(Request)
+_sym_db.RegisterMessage(Request.SchedulerSettings)
 
 
 DESCRIPTOR._options = None
diff --git a/api/gen_sdk/chromite/api/test_pb2.py b/api/gen_sdk/chromite/api/test_pb2.py
index d543aa6..449f7b7 100644
--- a/api/gen_sdk/chromite/api/test_pb2.py
+++ b/api/gen_sdk/chromite/api/test_pb2.py
@@ -15,6 +15,7 @@
 from chromite.api.gen_sdk.chromite.api import sysroot_pb2 as chromite_dot_api_dot_sysroot__pb2
 from chromite.api.gen_sdk.chromiumos import common_pb2 as chromiumos_dot_common__pb2
 from chromite.api.gen_sdk.chromiumos import metrics_pb2 as chromiumos_dot_metrics__pb2
+from chromite.api.gen_sdk.chromiumos import container_metadata_pb2 as chromiumos_dot_container__metadata__pb2
 from chromite.api.gen_sdk.chromiumos.test.api import coverage_rule_pb2 as chromiumos_dot_test_dot_api_dot_coverage__rule__pb2
 from chromite.api.gen_sdk.chromiumos.test.plan import source_test_plan_pb2 as chromiumos_dot_test_dot_plan_dot_source__test__plan__pb2
 
@@ -24,9 +25,9 @@
   package='chromite.api',
   syntax='proto3',
   serialized_options=b'Z6go.chromium.org/chromiumos/infra/proto/go/chromite/api',
-  serialized_pb=b'\n\x17\x63hromite/api/test.proto\x12\x0c\x63hromite.api\x1a\x1c\x63hromite/api/build_api.proto\x1a\x1a\x63hromite/api/sysroot.proto\x1a\x17\x63hromiumos/common.proto\x1a\x18\x63hromiumos/metrics.proto\x1a\'chromiumos/test/api/coverage_rule.proto\x1a+chromiumos/test/plan/source_test_plan.proto\"\x91\x02\n\x1fTestServiceContainerBuildResult\x12\x0c\n\x04name\x18\x01 \x01(\t\x12H\n\x07success\x18\x02 \x01(\x0b\x32\x35.chromite.api.TestServiceContainerBuildResult.SuccessH\x00\x12H\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32\x35.chromite.api.TestServiceContainerBuildResult.FailureH\x00\x1a \n\x07Success\x12\x15\n\rregistry_path\x18\x01 \x01(\t\x1a \n\x07\x46\x61ilure\x12\x15\n\rerror_message\x18\x01 \x01(\tB\x08\n\x06result\"\x87\x01\n!BuildTestServiceContainersRequest\x12-\n\x0c\x62uild_target\x18\x01 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\x12\x0f\n\x07version\x18\x03 \x01(\t\"d\n\"BuildTestServiceContainersResponse\x12>\n\x07results\x18\x01 \x03(\x0b\x32-.chromite.api.TestServiceContainerBuildResult\"\xc0\x03\n\x1a\x42uildTargetUnitTestRequest\x12-\n\x0c\x62uild_target\x18\x01 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x12\x13\n\x0bresult_path\x18\x02 \x01(\t\x12\"\n\x06\x63hroot\x18\x03 \x01(\x0b\x32\x12.chromiumos.Chroot\x12=\n\x05\x66lags\x18\x04 \x01(\x0b\x32..chromite.api.BuildTargetUnitTestRequest.Flags\x12)\n\x08packages\x18\x06 \x03(\x0b\x32\x17.chromiumos.PackageInfo\x12\x32\n\x11package_blocklist\x18\x07 \x03(\x0b\x32\x17.chromiumos.PackageInfo\x1a\x95\x01\n\x05\x46lags\x12\x15\n\rempty_sysroot\x18\x01 \x01(\x08\x12\x19\n\x11toolchain_changed\x18\x02 \x01(\x08\x12\x15\n\rcode_coverage\x18\x03 \x01(\x08\x12\"\n\x1atestable_packages_optional\x18\x04 \x01(\x08\x12\x1f\n\x17\x66ilter_only_cros_workon\x18\x05 \x01(\x08J\x04\x08\x05\x10\x06\"\x8e\x01\n\x1b\x42uildTargetUnitTestResponse\x12\x14\n\x0ctarball_path\x18\x01 \x01(\t\x12\x30\n\x0f\x66\x61iled_packages\x18\x02 \x03(\x0b\x32\x17.chromiumos.PackageInfo\x12\'\n\x06\x65vents\x18\x03 \x03(\x0b\x32\x17.chromiumos.MetricEvent\"=\n\x17\x43hromiteUnitTestRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x1a\n\x18\x43hromiteUnitTestResponse\";\n\x15\x43hromitePytestRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x18\n\x16\x43hromitePytestResponse\"<\n\x16\x43rosSigningTestRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x19\n\x17\x43rosSigningTestResponse\"b\n\x14\x44\x65\x62ugInfoTestRequest\x12&\n\x07sysroot\x18\x01 \x01(\x0b\x32\x15.chromite.api.Sysroot\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x17\n\x15\x44\x65\x62ugInfoTestResponse\"\xd2\x03\n\rVmTestRequest\x12-\n\x0c\x62uild_target\x18\x01 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\x12!\n\x07vm_path\x18\x03 \x01(\x0b\x32\x10.chromiumos.Path\x12;\n\x0bssh_options\x18\x04 \x01(\x0b\x32&.chromite.api.VmTestRequest.SshOptions\x12=\n\x0ctest_harness\x18\x05 \x01(\x0e\x32\'.chromite.api.VmTestRequest.TestHarness\x12\x34\n\x08vm_tests\x18\x06 \x03(\x0b\x32\".chromite.api.VmTestRequest.VmTest\x1a\x46\n\nSshOptions\x12*\n\x10private_key_path\x18\x01 \x01(\x0b\x32\x10.chromiumos.Path\x12\x0c\n\x04port\x18\x02 \x01(\x05\x1a\x19\n\x06VmTest\x12\x0f\n\x07pattern\x18\x01 \x01(\t\"6\n\x0bTestHarness\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x08\n\x04TAST\x10\x01\x12\x0c\n\x08\x41UTOTEST\x10\x02\"\x10\n\x0eVmTestResponse\"\xe9\x01\n\x13MoblabVmTestRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\x12@\n\rimage_payload\x18\x02 \x01(\x0b\x32).chromite.api.MoblabVmTestRequest.Payload\x12\x41\n\x0e\x63\x61\x63he_payloads\x18\x03 \x03(\x0b\x32).chromite.api.MoblabVmTestRequest.Payload\x1a)\n\x07Payload\x12\x1e\n\x04path\x18\x01 \x01(\x0b\x32\x10.chromiumos.Path\"\x16\n\x14MoblabVmTestResponse\"\x8b\x01\n\x1fSimpleChromeWorkflowTestRequest\x12&\n\x07sysroot\x18\x01 \x01(\x0b\x32\x15.chromite.api.Sysroot\x12\x13\n\x0b\x63hrome_root\x18\x02 \x01(\t\x12+\n\x0bgoma_config\x18\x03 \x01(\x0b\x32\x16.chromiumos.GomaConfig\"\"\n SimpleChromeWorkflowTestResponse\"\x87\x02\n\x17GetCoverageRulesRequest\x12\"\n\x06\x63hroot\x18\x05 \x01(\x0b\x32\x12.chromiumos.Chroot\x12?\n\x11source_test_plans\x18\x01 \x03(\x0b\x32$.chromiumos.test.plan.SourceTestPlan\x12-\n\x13\x62uild_metadata_list\x18\x02 \x01(\x0b\x32\x10.chromiumos.Path\x12,\n\x12\x64ut_attribute_list\x18\x03 \x01(\x0b\x32\x10.chromiumos.Path\x12*\n\x10\x66lat_config_list\x18\x04 \x01(\x0b\x32\x10.chromiumos.Path\"U\n\x18GetCoverageRulesResponse\x12\x39\n\x0e\x63overage_rules\x18\x01 \x03(\x0b\x32!.chromiumos.test.api.CoverageRule2\x9e\x08\n\x0bTestService\x12\x87\x01\n\x1a\x42uildTestServiceContainers\x12/.chromite.api.BuildTestServiceContainersRequest\x1a\x30.chromite.api.BuildTestServiceContainersResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x12r\n\x13\x42uildTargetUnitTest\x12(.chromite.api.BuildTargetUnitTestRequest\x1a).chromite.api.BuildTargetUnitTestResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x12\x61\n\x10\x43hromiteUnitTest\x12%.chromite.api.ChromiteUnitTestRequest\x1a&.chromite.api.ChromiteUnitTestResponse\x12[\n\x0e\x43hromitePytest\x12#.chromite.api.ChromitePytestRequest\x1a$.chromite.api.ChromitePytestResponse\x12^\n\x0f\x43rosSigningTest\x12$.chromite.api.CrosSigningTestRequest\x1a%.chromite.api.CrosSigningTestResponse\x12X\n\rDebugInfoTest\x12\".chromite.api.DebugInfoTestRequest\x1a#.chromite.api.DebugInfoTestResponse\x12\x43\n\x06VmTest\x12\x1b.chromite.api.VmTestRequest\x1a\x1c.chromite.api.VmTestResponse\x12]\n\x0cMoblabVmTest\x12!.chromite.api.MoblabVmTestRequest\x1a\".chromite.api.MoblabVmTestResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x12\x81\x01\n\x18SimpleChromeWorkflowTest\x12-.chromite.api.SimpleChromeWorkflowTestRequest\x1a..chromite.api.SimpleChromeWorkflowTestResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x12\x61\n\x10GetCoverageRules\x12%.chromite.api.GetCoverageRulesRequest\x1a&.chromite.api.GetCoverageRulesResponse\x1a\x0c\xc2\xed\x1a\x08\n\x04test\x10\x01\x42\x38Z6go.chromium.org/chromiumos/infra/proto/go/chromite/apib\x06proto3'
+  serialized_pb=b'\n\x17\x63hromite/api/test.proto\x12\x0c\x63hromite.api\x1a\x1c\x63hromite/api/build_api.proto\x1a\x1a\x63hromite/api/sysroot.proto\x1a\x17\x63hromiumos/common.proto\x1a\x18\x63hromiumos/metrics.proto\x1a#chromiumos/container_metadata.proto\x1a\'chromiumos/test/api/coverage_rule.proto\x1a+chromiumos/test/plan/source_test_plan.proto\"\xc0\x02\n\x1fTestServiceContainerBuildResult\x12\x0c\n\x04name\x18\x01 \x01(\t\x12H\n\x07success\x18\x02 \x01(\x0b\x32\x35.chromite.api.TestServiceContainerBuildResult.SuccessH\x00\x12H\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32\x35.chromite.api.TestServiceContainerBuildResult.FailureH\x00\x1aO\n\x07Success\x12\x15\n\rregistry_path\x18\x01 \x01(\t\x12-\n\x05image\x18\x02 \x01(\x0b\x32\x1e.chromiumos.ContainerImageInfo\x1a \n\x07\x46\x61ilure\x12\x15\n\rerror_message\x18\x01 \x01(\tB\x08\n\x06result\"\xc0\x02\n!BuildTestServiceContainersRequest\x12-\n\x0c\x62uild_target\x18\x01 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\x12\x0f\n\x07version\x18\x03 \x01(\t\x12-\n\nrepository\x18\x04 \x01(\x0b\x32\x19.chromiumos.GcrRepository\x12\x0c\n\x04tags\x18\x05 \x03(\t\x12K\n\x06labels\x18\x06 \x03(\x0b\x32;.chromite.api.BuildTestServiceContainersRequest.LabelsEntry\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"d\n\"BuildTestServiceContainersResponse\x12>\n\x07results\x18\x01 \x03(\x0b\x32-.chromite.api.TestServiceContainerBuildResult\"\xc0\x03\n\x1a\x42uildTargetUnitTestRequest\x12-\n\x0c\x62uild_target\x18\x01 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x12\x13\n\x0bresult_path\x18\x02 \x01(\t\x12\"\n\x06\x63hroot\x18\x03 \x01(\x0b\x32\x12.chromiumos.Chroot\x12=\n\x05\x66lags\x18\x04 \x01(\x0b\x32..chromite.api.BuildTargetUnitTestRequest.Flags\x12)\n\x08packages\x18\x06 \x03(\x0b\x32\x17.chromiumos.PackageInfo\x12\x32\n\x11package_blocklist\x18\x07 \x03(\x0b\x32\x17.chromiumos.PackageInfo\x1a\x95\x01\n\x05\x46lags\x12\x15\n\rempty_sysroot\x18\x01 \x01(\x08\x12\x19\n\x11toolchain_changed\x18\x02 \x01(\x08\x12\x15\n\rcode_coverage\x18\x03 \x01(\x08\x12\"\n\x1atestable_packages_optional\x18\x04 \x01(\x08\x12\x1f\n\x17\x66ilter_only_cros_workon\x18\x05 \x01(\x08J\x04\x08\x05\x10\x06\"\x8e\x01\n\x1b\x42uildTargetUnitTestResponse\x12\x14\n\x0ctarball_path\x18\x01 \x01(\t\x12\x30\n\x0f\x66\x61iled_packages\x18\x02 \x03(\x0b\x32\x17.chromiumos.PackageInfo\x12\'\n\x06\x65vents\x18\x03 \x03(\x0b\x32\x17.chromiumos.MetricEvent\"=\n\x17\x43hromiteUnitTestRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x1a\n\x18\x43hromiteUnitTestResponse\";\n\x15\x43hromitePytestRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x18\n\x16\x43hromitePytestResponse\"<\n\x16\x43rosSigningTestRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x19\n\x17\x43rosSigningTestResponse\"b\n\x14\x44\x65\x62ugInfoTestRequest\x12&\n\x07sysroot\x18\x01 \x01(\x0b\x32\x15.chromite.api.Sysroot\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x17\n\x15\x44\x65\x62ugInfoTestResponse\"\xd2\x03\n\rVmTestRequest\x12-\n\x0c\x62uild_target\x18\x01 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\x12!\n\x07vm_path\x18\x03 \x01(\x0b\x32\x10.chromiumos.Path\x12;\n\x0bssh_options\x18\x04 \x01(\x0b\x32&.chromite.api.VmTestRequest.SshOptions\x12=\n\x0ctest_harness\x18\x05 \x01(\x0e\x32\'.chromite.api.VmTestRequest.TestHarness\x12\x34\n\x08vm_tests\x18\x06 \x03(\x0b\x32\".chromite.api.VmTestRequest.VmTest\x1a\x46\n\nSshOptions\x12*\n\x10private_key_path\x18\x01 \x01(\x0b\x32\x10.chromiumos.Path\x12\x0c\n\x04port\x18\x02 \x01(\x05\x1a\x19\n\x06VmTest\x12\x0f\n\x07pattern\x18\x01 \x01(\t\"6\n\x0bTestHarness\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x08\n\x04TAST\x10\x01\x12\x0c\n\x08\x41UTOTEST\x10\x02\"\x10\n\x0eVmTestResponse\"\xe9\x01\n\x13MoblabVmTestRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\x12@\n\rimage_payload\x18\x02 \x01(\x0b\x32).chromite.api.MoblabVmTestRequest.Payload\x12\x41\n\x0e\x63\x61\x63he_payloads\x18\x03 \x03(\x0b\x32).chromite.api.MoblabVmTestRequest.Payload\x1a)\n\x07Payload\x12\x1e\n\x04path\x18\x01 \x01(\x0b\x32\x10.chromiumos.Path\"\x16\n\x14MoblabVmTestResponse\"\x8b\x01\n\x1fSimpleChromeWorkflowTestRequest\x12&\n\x07sysroot\x18\x01 \x01(\x0b\x32\x15.chromite.api.Sysroot\x12\x13\n\x0b\x63hrome_root\x18\x02 \x01(\t\x12+\n\x0bgoma_config\x18\x03 \x01(\x0b\x32\x16.chromiumos.GomaConfig\"\"\n SimpleChromeWorkflowTestResponse\"\x87\x02\n\x17GetCoverageRulesRequest\x12\"\n\x06\x63hroot\x18\x05 \x01(\x0b\x32\x12.chromiumos.Chroot\x12?\n\x11source_test_plans\x18\x01 \x03(\x0b\x32$.chromiumos.test.plan.SourceTestPlan\x12-\n\x13\x62uild_metadata_list\x18\x02 \x01(\x0b\x32\x10.chromiumos.Path\x12,\n\x12\x64ut_attribute_list\x18\x03 \x01(\x0b\x32\x10.chromiumos.Path\x12*\n\x10\x66lat_config_list\x18\x04 \x01(\x0b\x32\x10.chromiumos.Path\"U\n\x18GetCoverageRulesResponse\x12\x39\n\x0e\x63overage_rules\x18\x01 \x03(\x0b\x32!.chromiumos.test.api.CoverageRule2\x9e\x08\n\x0bTestService\x12\x87\x01\n\x1a\x42uildTestServiceContainers\x12/.chromite.api.BuildTestServiceContainersRequest\x1a\x30.chromite.api.BuildTestServiceContainersResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x12r\n\x13\x42uildTargetUnitTest\x12(.chromite.api.BuildTargetUnitTestRequest\x1a).chromite.api.BuildTargetUnitTestResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x12\x61\n\x10\x43hromiteUnitTest\x12%.chromite.api.ChromiteUnitTestRequest\x1a&.chromite.api.ChromiteUnitTestResponse\x12[\n\x0e\x43hromitePytest\x12#.chromite.api.ChromitePytestRequest\x1a$.chromite.api.ChromitePytestResponse\x12^\n\x0f\x43rosSigningTest\x12$.chromite.api.CrosSigningTestRequest\x1a%.chromite.api.CrosSigningTestResponse\x12X\n\rDebugInfoTest\x12\".chromite.api.DebugInfoTestRequest\x1a#.chromite.api.DebugInfoTestResponse\x12\x43\n\x06VmTest\x12\x1b.chromite.api.VmTestRequest\x1a\x1c.chromite.api.VmTestResponse\x12]\n\x0cMoblabVmTest\x12!.chromite.api.MoblabVmTestRequest\x1a\".chromite.api.MoblabVmTestResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x12\x81\x01\n\x18SimpleChromeWorkflowTest\x12-.chromite.api.SimpleChromeWorkflowTestRequest\x1a..chromite.api.SimpleChromeWorkflowTestResponse\"\x06\xc2\xed\x1a\x02\x10\x02\x12\x61\n\x10GetCoverageRules\x12%.chromite.api.GetCoverageRulesRequest\x1a&.chromite.api.GetCoverageRulesResponse\x1a\x0c\xc2\xed\x1a\x08\n\x04test\x10\x01\x42\x38Z6go.chromium.org/chromiumos/infra/proto/go/chromite/apib\x06proto3'
   ,
-  dependencies=[chromite_dot_api_dot_build__api__pb2.DESCRIPTOR,chromite_dot_api_dot_sysroot__pb2.DESCRIPTOR,chromiumos_dot_common__pb2.DESCRIPTOR,chromiumos_dot_metrics__pb2.DESCRIPTOR,chromiumos_dot_test_dot_api_dot_coverage__rule__pb2.DESCRIPTOR,chromiumos_dot_test_dot_plan_dot_source__test__plan__pb2.DESCRIPTOR,])
+  dependencies=[chromite_dot_api_dot_build__api__pb2.DESCRIPTOR,chromite_dot_api_dot_sysroot__pb2.DESCRIPTOR,chromiumos_dot_common__pb2.DESCRIPTOR,chromiumos_dot_metrics__pb2.DESCRIPTOR,chromiumos_dot_container__metadata__pb2.DESCRIPTOR,chromiumos_dot_test_dot_api_dot_coverage__rule__pb2.DESCRIPTOR,chromiumos_dot_test_dot_plan_dot_source__test__plan__pb2.DESCRIPTOR,])
 
 
 
@@ -51,8 +52,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=2153,
-  serialized_end=2207,
+  serialized_start=2422,
+  serialized_end=2476,
 )
 _sym_db.RegisterEnumDescriptor(_VMTESTREQUEST_TESTHARNESS)
 
@@ -71,6 +72,13 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='image', full_name='chromite.api.TestServiceContainerBuildResult.Success.image', index=1,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
@@ -83,8 +91,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=434,
-  serialized_end=466,
+  serialized_start=471,
+  serialized_end=550,
 )
 
 _TESTSERVICECONTAINERBUILDRESULT_FAILURE = _descriptor.Descriptor(
@@ -113,8 +121,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=468,
-  serialized_end=500,
+  serialized_start=552,
+  serialized_end=584,
 )
 
 _TESTSERVICECONTAINERBUILDRESULT = _descriptor.Descriptor(
@@ -160,11 +168,48 @@
       name='result', full_name='chromite.api.TestServiceContainerBuildResult.result',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=237,
-  serialized_end=510,
+  serialized_start=274,
+  serialized_end=594,
 )
 
 
+_BUILDTESTSERVICECONTAINERSREQUEST_LABELSENTRY = _descriptor.Descriptor(
+  name='LabelsEntry',
+  full_name='chromite.api.BuildTestServiceContainersRequest.LabelsEntry',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='key', full_name='chromite.api.BuildTestServiceContainersRequest.LabelsEntry.key', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='value', full_name='chromite.api.BuildTestServiceContainersRequest.LabelsEntry.value', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=b'8\001',
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=872,
+  serialized_end=917,
+)
+
 _BUILDTESTSERVICECONTAINERSREQUEST = _descriptor.Descriptor(
   name='BuildTestServiceContainersRequest',
   full_name='chromite.api.BuildTestServiceContainersRequest',
@@ -193,10 +238,31 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='repository', full_name='chromite.api.BuildTestServiceContainersRequest.repository', index=3,
+      number=4, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='tags', full_name='chromite.api.BuildTestServiceContainersRequest.tags', index=4,
+      number=5, type=9, cpp_type=9, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='labels', full_name='chromite.api.BuildTestServiceContainersRequest.labels', index=5,
+      number=6, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
-  nested_types=[],
+  nested_types=[_BUILDTESTSERVICECONTAINERSREQUEST_LABELSENTRY, ],
   enum_types=[
   ],
   serialized_options=None,
@@ -205,8 +271,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=513,
-  serialized_end=648,
+  serialized_start=597,
+  serialized_end=917,
 )
 
 
@@ -236,8 +302,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=650,
-  serialized_end=750,
+  serialized_start=919,
+  serialized_end=1019,
 )
 
 
@@ -295,8 +361,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1046,
-  serialized_end=1195,
+  serialized_start=1315,
+  serialized_end=1464,
 )
 
 _BUILDTARGETUNITTESTREQUEST = _descriptor.Descriptor(
@@ -360,8 +426,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=753,
-  serialized_end=1201,
+  serialized_start=1022,
+  serialized_end=1470,
 )
 
 
@@ -405,8 +471,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1204,
-  serialized_end=1346,
+  serialized_start=1473,
+  serialized_end=1615,
 )
 
 
@@ -436,8 +502,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1348,
-  serialized_end=1409,
+  serialized_start=1617,
+  serialized_end=1678,
 )
 
 
@@ -460,8 +526,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1411,
-  serialized_end=1437,
+  serialized_start=1680,
+  serialized_end=1706,
 )
 
 
@@ -491,8 +557,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1439,
-  serialized_end=1498,
+  serialized_start=1708,
+  serialized_end=1767,
 )
 
 
@@ -515,8 +581,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1500,
-  serialized_end=1524,
+  serialized_start=1769,
+  serialized_end=1793,
 )
 
 
@@ -546,8 +612,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1526,
-  serialized_end=1586,
+  serialized_start=1795,
+  serialized_end=1855,
 )
 
 
@@ -570,8 +636,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1588,
-  serialized_end=1613,
+  serialized_start=1857,
+  serialized_end=1882,
 )
 
 
@@ -608,8 +674,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1615,
-  serialized_end=1713,
+  serialized_start=1884,
+  serialized_end=1982,
 )
 
 
@@ -632,8 +698,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1715,
-  serialized_end=1738,
+  serialized_start=1984,
+  serialized_end=2007,
 )
 
 
@@ -670,8 +736,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2054,
-  serialized_end=2124,
+  serialized_start=2323,
+  serialized_end=2393,
 )
 
 _VMTESTREQUEST_VMTEST = _descriptor.Descriptor(
@@ -700,8 +766,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2126,
-  serialized_end=2151,
+  serialized_start=2395,
+  serialized_end=2420,
 )
 
 _VMTESTREQUEST = _descriptor.Descriptor(
@@ -766,8 +832,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1741,
-  serialized_end=2207,
+  serialized_start=2010,
+  serialized_end=2476,
 )
 
 
@@ -790,8 +856,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2209,
-  serialized_end=2225,
+  serialized_start=2478,
+  serialized_end=2494,
 )
 
 
@@ -821,8 +887,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2420,
-  serialized_end=2461,
+  serialized_start=2689,
+  serialized_end=2730,
 )
 
 _MOBLABVMTESTREQUEST = _descriptor.Descriptor(
@@ -865,8 +931,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2228,
-  serialized_end=2461,
+  serialized_start=2497,
+  serialized_end=2730,
 )
 
 
@@ -889,8 +955,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2463,
-  serialized_end=2485,
+  serialized_start=2732,
+  serialized_end=2754,
 )
 
 
@@ -934,8 +1000,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2488,
-  serialized_end=2627,
+  serialized_start=2757,
+  serialized_end=2896,
 )
 
 
@@ -958,8 +1024,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2629,
-  serialized_end=2663,
+  serialized_start=2898,
+  serialized_end=2932,
 )
 
 
@@ -1017,8 +1083,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2666,
-  serialized_end=2929,
+  serialized_start=2935,
+  serialized_end=3198,
 )
 
 
@@ -1048,10 +1114,11 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2931,
-  serialized_end=3016,
+  serialized_start=3200,
+  serialized_end=3285,
 )
 
+_TESTSERVICECONTAINERBUILDRESULT_SUCCESS.fields_by_name['image'].message_type = chromiumos_dot_container__metadata__pb2._CONTAINERIMAGEINFO
 _TESTSERVICECONTAINERBUILDRESULT_SUCCESS.containing_type = _TESTSERVICECONTAINERBUILDRESULT
 _TESTSERVICECONTAINERBUILDRESULT_FAILURE.containing_type = _TESTSERVICECONTAINERBUILDRESULT
 _TESTSERVICECONTAINERBUILDRESULT.fields_by_name['success'].message_type = _TESTSERVICECONTAINERBUILDRESULT_SUCCESS
@@ -1062,8 +1129,11 @@
 _TESTSERVICECONTAINERBUILDRESULT.oneofs_by_name['result'].fields.append(
   _TESTSERVICECONTAINERBUILDRESULT.fields_by_name['failure'])
 _TESTSERVICECONTAINERBUILDRESULT.fields_by_name['failure'].containing_oneof = _TESTSERVICECONTAINERBUILDRESULT.oneofs_by_name['result']
+_BUILDTESTSERVICECONTAINERSREQUEST_LABELSENTRY.containing_type = _BUILDTESTSERVICECONTAINERSREQUEST
 _BUILDTESTSERVICECONTAINERSREQUEST.fields_by_name['build_target'].message_type = chromiumos_dot_common__pb2._BUILDTARGET
 _BUILDTESTSERVICECONTAINERSREQUEST.fields_by_name['chroot'].message_type = chromiumos_dot_common__pb2._CHROOT
+_BUILDTESTSERVICECONTAINERSREQUEST.fields_by_name['repository'].message_type = chromiumos_dot_container__metadata__pb2._GCRREPOSITORY
+_BUILDTESTSERVICECONTAINERSREQUEST.fields_by_name['labels'].message_type = _BUILDTESTSERVICECONTAINERSREQUEST_LABELSENTRY
 _BUILDTESTSERVICECONTAINERSRESPONSE.fields_by_name['results'].message_type = _TESTSERVICECONTAINERBUILDRESULT
 _BUILDTARGETUNITTESTREQUEST_FLAGS.containing_type = _BUILDTARGETUNITTESTREQUEST
 _BUILDTARGETUNITTESTREQUEST.fields_by_name['build_target'].message_type = chromiumos_dot_common__pb2._BUILDTARGET
@@ -1148,11 +1218,19 @@
 _sym_db.RegisterMessage(TestServiceContainerBuildResult.Failure)
 
 BuildTestServiceContainersRequest = _reflection.GeneratedProtocolMessageType('BuildTestServiceContainersRequest', (_message.Message,), {
+
+  'LabelsEntry' : _reflection.GeneratedProtocolMessageType('LabelsEntry', (_message.Message,), {
+    'DESCRIPTOR' : _BUILDTESTSERVICECONTAINERSREQUEST_LABELSENTRY,
+    '__module__' : 'chromite.api.test_pb2'
+    # @@protoc_insertion_point(class_scope:chromite.api.BuildTestServiceContainersRequest.LabelsEntry)
+    })
+  ,
   'DESCRIPTOR' : _BUILDTESTSERVICECONTAINERSREQUEST,
   '__module__' : 'chromite.api.test_pb2'
   # @@protoc_insertion_point(class_scope:chromite.api.BuildTestServiceContainersRequest)
   })
 _sym_db.RegisterMessage(BuildTestServiceContainersRequest)
+_sym_db.RegisterMessage(BuildTestServiceContainersRequest.LabelsEntry)
 
 BuildTestServiceContainersResponse = _reflection.GeneratedProtocolMessageType('BuildTestServiceContainersResponse', (_message.Message,), {
   'DESCRIPTOR' : _BUILDTESTSERVICECONTAINERSRESPONSE,
@@ -1321,6 +1399,7 @@
 
 
 DESCRIPTOR._options = None
+_BUILDTESTSERVICECONTAINERSREQUEST_LABELSENTRY._options = None
 
 _TESTSERVICE = _descriptor.ServiceDescriptor(
   name='TestService',
@@ -1328,8 +1407,8 @@
   file=DESCRIPTOR,
   index=0,
   serialized_options=b'\302\355\032\010\n\004test\020\001',
-  serialized_start=3019,
-  serialized_end=4073,
+  serialized_start=3288,
+  serialized_end=4342,
   methods=[
   _descriptor.MethodDescriptor(
     name='BuildTestServiceContainers',
diff --git a/api/gen_sdk/chromiumos/common_pb2.py b/api/gen_sdk/chromiumos/common_pb2.py
index 8259660..5a141b4 100644
--- a/api/gen_sdk/chromiumos/common_pb2.py
+++ b/api/gen_sdk/chromiumos/common_pb2.py
@@ -19,7 +19,7 @@
   package='chromiumos',
   syntax='proto3',
   serialized_options=b'\n!com.google.chrome.crosinfra.protoZ4go.chromium.org/chromiumos/infra/proto/go/chromiumos',
-  serialized_pb=b'\n\x17\x63hromiumos/common.proto\x12\nchromiumos\"\x1b\n\x0b\x42uildTarget\x12\x0c\n\x04name\x18\x01 \x01(\t\"\xd0\x01\n\x06\x43hroot\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x11\n\tcache_dir\x18\x02 \x01(\t\x12)\n\x03\x65nv\x18\x03 \x01(\x0b\x32\x1c.chromiumos.Chroot.ChrootEnv\x12\x12\n\nchrome_dir\x18\x04 \x01(\t\x1aZ\n\tChrootEnv\x12&\n\tuse_flags\x18\x01 \x03(\x0b\x32\x13.chromiumos.UseFlag\x12%\n\x08\x66\x65\x61tures\x18\x02 \x03(\x0b\x32\x13.chromiumos.FeatureJ\x04\x08\x05\x10\x06R\x04goma\"\x1a\n\x07\x46\x65\x61ture\x12\x0f\n\x07\x66\x65\x61ture\x18\x01 \x01(\t\"\xcf\x02\n\nGomaConfig\x12\x10\n\x08goma_dir\x18\x01 \x01(\t\x12\x18\n\x10goma_client_json\x18\x02 \x01(\t\x12\x19\n\x11\x63hromeos_goma_dir\x18\x03 \x01(\t\x12:\n\rgoma_approach\x18\x04 \x01(\x0e\x32#.chromiumos.GomaConfig.GomaApproach\x12&\n\x07log_dir\x18\x05 \x01(\x0b\x32\x15.chromiumos.SyncedDir\x12\x12\n\nstats_file\x18\x06 \x01(\t\x12\x15\n\rcounterz_file\x18\x07 \x01(\t\"k\n\x0cGomaApproach\x12\x1d\n\x19GOMA_APPROACH_UNSPECIFIED\x10\x00\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x01\x12\x0c\n\x08RBE_PROD\x10\x02\x12\x0f\n\x0bRBE_STAGING\x10\x03\x12\x10\n\x0cRBE_CHROMEOS\x10\x04\"M\n\rGomaArtifacts\x12\x12\n\nstats_file\x18\x01 \x01(\t\x12\x15\n\rcounterz_file\x18\x02 \x01(\t\x12\x11\n\tlog_files\x18\x03 \x03(\t\"F\n\x0bPackageInfo\x12\x14\n\x0cpackage_name\x18\x01 \x01(\t\x12\x10\n\x08\x63\x61tegory\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\"\x17\n\x07Profile\x12\x0c\n\x04name\x18\x01 \x01(\t\"\xa8\x01\n\x10PackageIndexInfo\x12\x14\n\x0csnapshot_sha\x18\x01 \x01(\t\x12\x17\n\x0fsnapshot_number\x18\x02 \x01(\x05\x12-\n\x0c\x62uild_target\x18\x03 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x12\x10\n\x08location\x18\x04 \x01(\t\x12$\n\x07profile\x18\x05 \x01(\x0b\x32\x13.chromiumos.Profile\"w\n\x04Path\x12\x0c\n\x04path\x18\x01 \x01(\t\x12+\n\x08location\x18\x02 \x01(\x0e\x32\x19.chromiumos.Path.Location\"4\n\x08Location\x12\x0f\n\x0bNO_LOCATION\x10\x00\x12\n\n\x06INSIDE\x10\x01\x12\x0b\n\x07OUTSIDE\x10\x02\",\n\nResultPath\x12\x1e\n\x04path\x18\x01 \x01(\x0b\x32\x10.chromiumos.Path\"\x18\n\tSyncedDir\x12\x0b\n\x03\x64ir\x18\x01 \x01(\t\"O\n\x0cGerritChange\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63hange\x18\x03 \x01(\x03\x12\x10\n\x08patchset\x18\x04 \x01(\x03\"Y\n\rGitilesCommit\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x0b\n\x03ref\x18\x04 \x01(\t\x12\x10\n\x08position\x18\x05 \x01(\r\"\x17\n\x07UseFlag\x12\x0c\n\x04\x66lag\x18\x01 \x01(\t\"\xb8\x02\n\x0eReleaseBuilder\x12\x39\n\tmilestone\x18\x01 \x01(\x0b\x32$.chromiumos.ReleaseBuilder.MilestoneH\x00\x12\x16\n\x0e\x62uild_schedule\x18\x02 \x01(\t\x12\x38\n\x0f\x65xpiration_date\x18\x03 \x01(\x0b\x32\x1f.chromiumos.ReleaseBuilder.Date\x1a\x15\n\x04\x44\x61te\x12\r\n\x05value\x18\x01 \x01(\t\x1am\n\tMilestone\x12\x0e\n\x06number\x18\x01 \x01(\x05\x12;\n\x12target_branch_date\x18\x02 \x01(\x0b\x32\x1f.chromiumos.ReleaseBuilder.Date\x12\x13\n\x0b\x62ranch_name\x18\x03 \x01(\tB\x13\n\x11milestone_message\"?\n\x0fReleaseBuilders\x12,\n\x08\x62uilders\x18\x01 \x03(\x0b\x32\x1a.chromiumos.ReleaseBuilder\"\xf4\x01\n\x0fReleaseChannels\x12J\n\x10release_channels\x18\x01 \x03(\x0b\x32\x30.chromiumos.ReleaseChannels.ReleaseChannelsEntry\x1a\x34\n\x0b\x43hannelList\x12%\n\x08\x63hannels\x18\x01 \x03(\x0e\x32\x13.chromiumos.Channel\x1a_\n\x14ReleaseChannelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\x36\n\x05value\x18\x02 \x01(\x0b\x32\'.chromiumos.ReleaseChannels.ChannelList:\x02\x38\x01\"&\n\nProtoBytes\x12\x18\n\x10serialized_proto\x18\x01 \x01(\x0c\"q\n\x1dPrepareForBuildAdditionalArgs\x12\x1c\n\x12\x63hrome_cwp_profile\x18\x01 \x01(\tH\x00\x12\x18\n\x0ekernel_version\x18\x02 \x01(\tH\x00\x42\x18\n\x16prepare_for_build_args\"A\n\x0b\x41\x66\x64oRelease\x12\x1a\n\x12\x63hrome_cwp_profile\x18\x01 \x01(\t\x12\x16\n\x0eimage_build_id\x18\x02 \x01(\x03\"\x97\x01\n\x13\x41rtifactProfileInfo\x12\x1c\n\x12\x63hrome_cwp_profile\x18\x01 \x01(\tH\x00\x12\x18\n\x0ekernel_version\x18\x02 \x01(\tH\x00\x12/\n\x0c\x61\x66\x64o_release\x18\x03 \x01(\x0b\x32\x17.chromiumos.AfdoReleaseH\x00\x42\x17\n\x15\x61rtifact_profile_info\"\xbe+\n\x12\x41rtifactsByService\x12\x35\n\x06legacy\x18\x01 \x01(\x0b\x32%.chromiumos.ArtifactsByService.Legacy\x12;\n\ttoolchain\x18\x02 \x01(\x0b\x32(.chromiumos.ArtifactsByService.Toolchain\x12\x33\n\x05image\x18\x03 \x01(\x0b\x32$.chromiumos.ArtifactsByService.Image\x12\x37\n\x07package\x18\x04 \x01(\x0b\x32&.chromiumos.ArtifactsByService.Package\x12\x37\n\x07sysroot\x18\x05 \x01(\x0b\x32&.chromiumos.ArtifactsByService.Sysroot\x12\x31\n\x04test\x18\x06 \x01(\x0b\x32#.chromiumos.ArtifactsByService.Test\x12\x35\n\x0cprofile_info\x18\x07 \x01(\x0b\x32\x1f.chromiumos.ArtifactProfileInfo\x12\x39\n\x08\x66irmware\x18\x08 \x01(\x0b\x32\'.chromiumos.ArtifactsByService.Firmware\x12\x33\n\x05infra\x18\t \x01(\x0b\x32$.chromiumos.ArtifactsByService.Infra\x1a\xb0\x01\n\x16\x43odeCoverageUploadInfo\x12]\n\rcoverage_type\x18\x01 \x01(\x0e\x32\x46.chromiumos.ArtifactsByService.CodeCoverageUploadInfo.CodeCoverageType\"7\n\x10\x43odeCoverageType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x08\n\x04LLVM\x10\x01\x12\x08\n\x04LCOV\x10\x02\x1a\xb2\x05\n\x06Legacy\x12K\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x32.chromiumos.ArtifactsByService.Legacy.ArtifactInfo\x12L\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x32.chromiumos.ArtifactsByService.Legacy.ArtifactInfo\x1a\xe2\x01\n\x0c\x41rtifactInfo\x12J\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x32.chromiumos.ArtifactsByService.Legacy.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishConditionJ\x04\x08\x03\x10\x04R\x0cprofile_info\"\xa7\x02\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\r\n\tIMAGE_ZIP\x10\x01\x12\x17\n\x13TEST_UPDATE_PAYLOAD\x10\x02\x12\x12\n\x0e\x41UTOTEST_FILES\x10\x03\x12\x0e\n\nTAST_FILES\x10\x04\x12\x17\n\x13PINNED_GUEST_IMAGES\x10\x05\x12\x0c\n\x08\x46IRMWARE\x10\x06\x12\x0f\n\x0b\x45\x42UILD_LOGS\x10\x07\x12\x13\n\x0f\x43HROMEOS_CONFIG\x10\x08\x12\x0e\n\nCPE_REPORT\x10\t\x12\x12\n\x0eIMAGE_ARCHIVES\x10\n\x12\x13\n\x0f\x46PMCU_UNITTESTS\x10\x1b\x12\x0f\n\x0bGCE_TARBALL\x10\x1c\x12\x11\n\rDEBUG_SYMBOLS\x10 \"\x04\x08\x0b\x10\x1a\"\x04\x08\x1d\x10\x1f\"\x04\x08!\x10+\x1a\xff\x07\n\tToolchain\x12N\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x35.chromiumos.ArtifactsByService.Toolchain.ArtifactInfo\x12O\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x35.chromiumos.ArtifactsByService.Toolchain.ArtifactInfo\x1a\xd1\x01\n\x0c\x41rtifactInfo\x12M\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x35.chromiumos.ArtifactsByService.Toolchain.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"\xfc\x04\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12$\n UNVERIFIED_CHROME_LLVM_ORDERFILE\x10\x0b\x12\"\n\x1eVERIFIED_CHROME_LLVM_ORDERFILE\x10\x0c\x12\x1e\n\x1a\x43HROME_CLANG_WARNINGS_FILE\x10\r\x12\x1c\n\x18UNVERIFIED_LLVM_PGO_FILE\x10\x0e\x12)\n%UNVERIFIED_CHROME_BENCHMARK_AFDO_FILE\x10\x0f\x12\'\n#VERIFIED_CHROME_BENCHMARK_AFDO_FILE\x10\x10\x12!\n\x1dVERIFIED_KERNEL_CWP_AFDO_FILE\x10\x11\x12#\n\x1fUNVERIFIED_KERNEL_CWP_AFDO_FILE\x10\x12\x12#\n\x1fUNVERIFIED_CHROME_CWP_AFDO_FILE\x10\x13\x12!\n\x1dVERIFIED_CHROME_CWP_AFDO_FILE\x10\x14\x12\x1e\n\x1aVERIFIED_RELEASE_AFDO_FILE\x10\x15\x12)\n%UNVERIFIED_CHROME_BENCHMARK_PERF_FILE\x10\x16\x12\x17\n\x13\x43HROME_DEBUG_BINARY\x10\x17\x12\x1a\n\x16TOOLCHAIN_WARNING_LOGS\x10\x18\x12)\n%CHROME_AFDO_PROFILE_FOR_ANDROID_LINUX\x10\x19\x12\x19\n\x15\x43LANG_CRASH_DIAGNOSES\x10\x1a\x12\x17\n\x13\x43OMPILER_RUSAGE_LOG\x10\x1d\"\x04\x08\x01\x10\n\"\x04\x08\x1b\x10\x1c\"\x04\x08\x1e\x10+\x1a\xda\x03\n\x05Image\x12J\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x31.chromiumos.ArtifactsByService.Image.ArtifactInfo\x12K\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x31.chromiumos.ArtifactsByService.Image.ArtifactInfo\x1a\xcd\x01\n\x0c\x41rtifactInfo\x12I\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x31.chromiumos.ArtifactsByService.Image.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"h\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\r\n\tDLC_IMAGE\x10\"\x12\x13\n\x0fLICENSE_CREDITS\x10&\x12\x11\n\rFACTORY_IMAGE\x10+\"\x04\x08\x01\x10!\"\x04\x08#\x10%\"\x04\x08\'\x10*\x1a\x9f\x03\n\x07Package\x12L\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x33.chromiumos.ArtifactsByService.Package.ArtifactInfo\x12M\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x33.chromiumos.ArtifactsByService.Package.ArtifactInfo\x1a\xcf\x01\n\x0c\x41rtifactInfo\x12K\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x33.chromiumos.ArtifactsByService.Package.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"%\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\"\x04\x08\x01\x10+\x1a\x8d\x04\n\x07Sysroot\x12L\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x33.chromiumos.ArtifactsByService.Sysroot.ArtifactInfo\x12M\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x33.chromiumos.ArtifactsByService.Sysroot.ArtifactInfo\x1a\xcf\x01\n\x0c\x41rtifactInfo\x12K\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x33.chromiumos.ArtifactsByService.Sysroot.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"\x92\x01\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x11\n\rDEBUG_SYMBOLS\x10 \x12\x1a\n\x16\x42REAKPAD_DEBUG_SYMBOLS\x10#\x12\x19\n\x15SIMPLE_CHROME_SYSROOT\x10(\x12\x15\n\x11\x43HROME_EBUILD_ENV\x10)\"\x04\x08\x01\x10\x1f\"\x04\x08!\x10\"\"\x04\x08$\x10\'\x1a\xb2\x04\n\x04Test\x12I\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x30.chromiumos.ArtifactsByService.Test.ArtifactInfo\x12J\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x30.chromiumos.ArtifactsByService.Test.ArtifactInfo\x1a\xa6\x02\n\x0c\x41rtifactInfo\x12H\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x30.chromiumos.ArtifactsByService.Test.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\x12X\n\x19\x63ode_coverage_upload_info\x18\x06 \x01(\x0b\x32\x35.chromiumos.ArtifactsByService.CodeCoverageUploadInfo\"j\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0e\n\nUNIT_TESTS\x10%\x12\x1b\n\x17\x43ODE_COVERAGE_LLVM_JSON\x10\'\x12\n\n\x06HWQUAL\x10*\"\x04\x08\x01\x10$\"\x04\x08&\x10&\"\x04\x08(\x10)\x1a\xf7\x04\n\x08\x46irmware\x12M\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x34.chromiumos.ArtifactsByService.Firmware.ArtifactInfo\x12N\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x34.chromiumos.ArtifactsByService.Firmware.ArtifactInfo\x1a\xd4\x02\n\x0c\x41rtifactInfo\x12L\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x34.chromiumos.ArtifactsByService.Firmware.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\x12(\n\x08location\x18\x06 \x01(\x0e\x32\x16.chromiumos.FwLocation\x12X\n\x19\x63ode_coverage_upload_info\x18\x07 \x01(\x0b\x32\x35.chromiumos.ArtifactsByService.CodeCoverageUploadInfo\"u\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x14\n\x10\x46IRMWARE_TARBALL\x10\x1e\x12\x19\n\x15\x46IRMWARE_TARBALL_INFO\x10\x1f\x12\x11\n\rFIRMWARE_LCOV\x10!\"\x04\x08\x01\x10\x1d\"\x04\x08 \x10 \"\x04\x08\"\x10+\x1a\xb1\x03\n\x05Infra\x12J\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x31.chromiumos.ArtifactsByService.Infra.ArtifactInfo\x12K\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x31.chromiumos.ArtifactsByService.Infra.ArtifactInfo\x1a\xcd\x01\n\x0c\x41rtifactInfo\x12I\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x31.chromiumos.ArtifactsByService.Infra.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"?\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x12\n\x0e\x42UILD_MANIFEST\x10$\"\x04\x08\x01\x10#\"\x04\x08%\x10+\"W\n\x10PublishCondition\x12\x17\n\x13PUBLISH_UNSPECIFIED\x10\x00\x12\x16\n\x12PUBLISH_ON_SUCCESS\x10\x01\x12\x12\n\x0ePUBLISH_ALWAYS\x10\x02\"\x8e\x12\n\x1aUploadedArtifactsByService\x12=\n\x06legacy\x18\x01 \x01(\x0b\x32-.chromiumos.UploadedArtifactsByService.Legacy\x12\x43\n\ttoolchain\x18\x02 \x01(\x0b\x32\x30.chromiumos.UploadedArtifactsByService.Toolchain\x12;\n\x05image\x18\x03 \x01(\x0b\x32,.chromiumos.UploadedArtifactsByService.Image\x12?\n\x07package\x18\x04 \x01(\x0b\x32..chromiumos.UploadedArtifactsByService.Package\x12?\n\x07sysroot\x18\x05 \x01(\x0b\x32..chromiumos.UploadedArtifactsByService.Sysroot\x12\x39\n\x04test\x18\x06 \x01(\x0b\x32+.chromiumos.UploadedArtifactsByService.Test\x12\x41\n\x08\x66irmware\x18\x07 \x01(\x0b\x32/.chromiumos.UploadedArtifactsByService.Firmware\x12;\n\x05infra\x18\x08 \x01(\x0b\x32,.chromiumos.UploadedArtifactsByService.Infra\x1a\xd5\x01\n\x06Legacy\x12N\n\tartifacts\x18\x01 \x03(\x0b\x32;.chromiumos.UploadedArtifactsByService.Legacy.ArtifactPaths\x1a{\n\rArtifactPaths\x12I\n\rartifact_type\x18\x01 \x01(\x0e\x32\x32.chromiumos.ArtifactsByService.Legacy.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xde\x01\n\tToolchain\x12Q\n\tartifacts\x18\x01 \x03(\x0b\x32>.chromiumos.UploadedArtifactsByService.Toolchain.ArtifactPaths\x1a~\n\rArtifactPaths\x12L\n\rartifact_type\x18\x01 \x01(\x0e\x32\x35.chromiumos.ArtifactsByService.Toolchain.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xd2\x01\n\x05Image\x12M\n\tartifacts\x18\x01 \x03(\x0b\x32:.chromiumos.UploadedArtifactsByService.Image.ArtifactPaths\x1az\n\rArtifactPaths\x12H\n\rartifact_type\x18\x01 \x01(\x0e\x32\x31.chromiumos.ArtifactsByService.Image.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xd8\x01\n\x07Package\x12O\n\tartifacts\x18\x01 \x03(\x0b\x32<.chromiumos.UploadedArtifactsByService.Package.ArtifactPaths\x1a|\n\rArtifactPaths\x12J\n\rartifact_type\x18\x01 \x01(\x0e\x32\x33.chromiumos.ArtifactsByService.Package.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xd8\x01\n\x07Sysroot\x12O\n\tartifacts\x18\x01 \x03(\x0b\x32<.chromiumos.UploadedArtifactsByService.Sysroot.ArtifactPaths\x1a|\n\rArtifactPaths\x12J\n\rartifact_type\x18\x01 \x01(\x0e\x32\x33.chromiumos.ArtifactsByService.Sysroot.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xcf\x01\n\x04Test\x12L\n\tartifacts\x18\x01 \x03(\x0b\x32\x39.chromiumos.UploadedArtifactsByService.Test.ArtifactPaths\x1ay\n\rArtifactPaths\x12G\n\rartifact_type\x18\x01 \x01(\x0e\x32\x30.chromiumos.ArtifactsByService.Test.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\x86\x02\n\x08\x46irmware\x12P\n\tartifacts\x18\x01 \x03(\x0b\x32=.chromiumos.UploadedArtifactsByService.Firmware.ArtifactPaths\x1a\xa7\x01\n\rArtifactPaths\x12K\n\rartifact_type\x18\x01 \x01(\x0e\x32\x34.chromiumos.ArtifactsByService.Firmware.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x12(\n\x08location\x18\x03 \x01(\x0e\x32\x16.chromiumos.FwLocation\x1a\xd2\x01\n\x05Infra\x12M\n\tartifacts\x18\x01 \x03(\x0b\x32:.chromiumos.UploadedArtifactsByService.Infra.ArtifactPaths\x1az\n\rArtifactPaths\x12H\n\rartifact_type\x18\x01 \x01(\x0e\x32\x31.chromiumos.ArtifactsByService.Infra.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path*\xca\x04\n\tImageType\x12\x18\n\x14IMAGE_TYPE_UNDEFINED\x10\x00\x12\x13\n\x0fIMAGE_TYPE_BASE\x10\x01\x12\x12\n\x0eIMAGE_TYPE_DEV\x10\x02\x12\x13\n\x0fIMAGE_TYPE_TEST\x10\x03\x12\x16\n\x12IMAGE_TYPE_BASE_VM\x10\x04\x12\x16\n\x12IMAGE_TYPE_TEST_VM\x10\x05\x12\x17\n\x13IMAGE_TYPE_RECOVERY\x10\x06\x12\x16\n\x12IMAGE_TYPE_FACTORY\x10\x07\x12\x17\n\x13IMAGE_TYPE_FIRMWARE\x10\x08\x12\x1c\n\x18IMAGE_TYPE_CR50_FIRMWARE\x10\t\x12\x1c\n\x18IMAGE_TYPE_BASE_GUEST_VM\x10\n\x12\x1c\n\x18IMAGE_TYPE_TEST_GUEST_VM\x10\x0b\x12\x12\n\x0eIMAGE_TYPE_DLC\x10\x0c\x12\x1b\n\x17IMAGE_TYPE_GSC_FIRMWARE\x10\r\x12\x1e\n\x1aIMAGE_TYPE_ACCESSORY_USBPD\x10\x0e\x12\x1e\n\x1aIMAGE_TYPE_ACCESSORY_RWSIG\x10\x0f*\x04\x42\x41SE*\x04TEST*\x03\x44\x45V*\x07\x42\x41SE_VM*\x07TEST_VM*\x08RECOVERY*\x07\x46\x41\x43TORY*\x08\x46IRMWARE*\rCR50_FIRMWARE*\rBASE_GUEST_VM*\rTEST_GUEST_VM*\x03\x44LC*\x0cGSC_FIRMWARE*\x0f\x41\x43\x43\x45SSORY_USBPD*\x0f\x41\x43\x43\x45SSORY_RWSIG*m\n\x07\x43hannel\x12\x17\n\x13\x43HANNEL_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x43HANNEL_STABLE\x10\x01\x12\x10\n\x0c\x43HANNEL_BETA\x10\x02\x12\x0f\n\x0b\x43HANNEL_DEV\x10\x03\x12\x12\n\x0e\x43HANNEL_CANARY\x10\x04*l\n\tDeltaType\x12\x11\n\rDELTA_UNKNOWN\x10\x00\x12\x0c\n\x08NO_DELTA\x10\x01\x12\x07\n\x03\x46SI\x10\x02\x12\r\n\tMILESTONE\x10\x03\x12\t\n\x05OMAHA\x10\x04\x12\x12\n\x0eSTEPPING_STONE\x10\x05\x12\x07\n\x03N2N\x10\x06*^\n\nFwLocation\x12\x17\n\x13\x46W_LOCATION_UNKNOWN\x10\x00\x12\x0f\n\x0bPLATFORM_EC\x10\x01\x12\x13\n\x0fPLATFORM_ZEPHYR\x10\x02\x12\x11\n\rPLATFORM_TI50\x10\x03*f\n\x10\x41\x46\x44OArtifactType\x12\r\n\tNONE_TYPE\x10\x00\x12\r\n\tORDERFILE\x10\x01\x12\x12\n\x0e\x42\x45NCHMARK_AFDO\x10\x02\x12\x0f\n\x0bKERNEL_AFDO\x10\x03\x12\x0f\n\x0b\x43HROME_AFDO\x10\x04\x42Y\n!com.google.chrome.crosinfra.protoZ4go.chromium.org/chromiumos/infra/proto/go/chromiumosb\x06proto3'
+  serialized_pb=b'\n\x17\x63hromiumos/common.proto\x12\nchromiumos\"\x1b\n\x0b\x42uildTarget\x12\x0c\n\x04name\x18\x01 \x01(\t\"\'\n\x07GcsPath\x12\x0e\n\x06\x62ucket\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"\xd0\x01\n\x06\x43hroot\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x11\n\tcache_dir\x18\x02 \x01(\t\x12)\n\x03\x65nv\x18\x03 \x01(\x0b\x32\x1c.chromiumos.Chroot.ChrootEnv\x12\x12\n\nchrome_dir\x18\x04 \x01(\t\x1aZ\n\tChrootEnv\x12&\n\tuse_flags\x18\x01 \x03(\x0b\x32\x13.chromiumos.UseFlag\x12%\n\x08\x66\x65\x61tures\x18\x02 \x03(\x0b\x32\x13.chromiumos.FeatureJ\x04\x08\x05\x10\x06R\x04goma\"\x1a\n\x07\x46\x65\x61ture\x12\x0f\n\x07\x66\x65\x61ture\x18\x01 \x01(\t\"\xcf\x02\n\nGomaConfig\x12\x10\n\x08goma_dir\x18\x01 \x01(\t\x12\x18\n\x10goma_client_json\x18\x02 \x01(\t\x12\x19\n\x11\x63hromeos_goma_dir\x18\x03 \x01(\t\x12:\n\rgoma_approach\x18\x04 \x01(\x0e\x32#.chromiumos.GomaConfig.GomaApproach\x12&\n\x07log_dir\x18\x05 \x01(\x0b\x32\x15.chromiumos.SyncedDir\x12\x12\n\nstats_file\x18\x06 \x01(\t\x12\x15\n\rcounterz_file\x18\x07 \x01(\t\"k\n\x0cGomaApproach\x12\x1d\n\x19GOMA_APPROACH_UNSPECIFIED\x10\x00\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x01\x12\x0c\n\x08RBE_PROD\x10\x02\x12\x0f\n\x0bRBE_STAGING\x10\x03\x12\x10\n\x0cRBE_CHROMEOS\x10\x04\"M\n\rGomaArtifacts\x12\x12\n\nstats_file\x18\x01 \x01(\t\x12\x15\n\rcounterz_file\x18\x02 \x01(\t\x12\x11\n\tlog_files\x18\x03 \x03(\t\"F\n\x0bPackageInfo\x12\x14\n\x0cpackage_name\x18\x01 \x01(\t\x12\x10\n\x08\x63\x61tegory\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\"\x17\n\x07Profile\x12\x0c\n\x04name\x18\x01 \x01(\t\"\xa8\x01\n\x10PackageIndexInfo\x12\x14\n\x0csnapshot_sha\x18\x01 \x01(\t\x12\x17\n\x0fsnapshot_number\x18\x02 \x01(\x05\x12-\n\x0c\x62uild_target\x18\x03 \x01(\x0b\x32\x17.chromiumos.BuildTarget\x12\x10\n\x08location\x18\x04 \x01(\t\x12$\n\x07profile\x18\x05 \x01(\x0b\x32\x13.chromiumos.Profile\"w\n\x04Path\x12\x0c\n\x04path\x18\x01 \x01(\t\x12+\n\x08location\x18\x02 \x01(\x0e\x32\x19.chromiumos.Path.Location\"4\n\x08Location\x12\x0f\n\x0bNO_LOCATION\x10\x00\x12\n\n\x06INSIDE\x10\x01\x12\x0b\n\x07OUTSIDE\x10\x02\",\n\nResultPath\x12\x1e\n\x04path\x18\x01 \x01(\x0b\x32\x10.chromiumos.Path\"\x18\n\tSyncedDir\x12\x0b\n\x03\x64ir\x18\x01 \x01(\t\"O\n\x0cGerritChange\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63hange\x18\x03 \x01(\x03\x12\x10\n\x08patchset\x18\x04 \x01(\x03\"Y\n\rGitilesCommit\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x0b\n\x03ref\x18\x04 \x01(\t\x12\x10\n\x08position\x18\x05 \x01(\r\"\x17\n\x07UseFlag\x12\x0c\n\x04\x66lag\x18\x01 \x01(\t\"\xb8\x02\n\x0eReleaseBuilder\x12\x39\n\tmilestone\x18\x01 \x01(\x0b\x32$.chromiumos.ReleaseBuilder.MilestoneH\x00\x12\x16\n\x0e\x62uild_schedule\x18\x02 \x01(\t\x12\x38\n\x0f\x65xpiration_date\x18\x03 \x01(\x0b\x32\x1f.chromiumos.ReleaseBuilder.Date\x1a\x15\n\x04\x44\x61te\x12\r\n\x05value\x18\x01 \x01(\t\x1am\n\tMilestone\x12\x0e\n\x06number\x18\x01 \x01(\x05\x12;\n\x12target_branch_date\x18\x02 \x01(\x0b\x32\x1f.chromiumos.ReleaseBuilder.Date\x12\x13\n\x0b\x62ranch_name\x18\x03 \x01(\tB\x13\n\x11milestone_message\"?\n\x0fReleaseBuilders\x12,\n\x08\x62uilders\x18\x01 \x03(\x0b\x32\x1a.chromiumos.ReleaseBuilder\"\xf4\x01\n\x0fReleaseChannels\x12J\n\x10release_channels\x18\x01 \x03(\x0b\x32\x30.chromiumos.ReleaseChannels.ReleaseChannelsEntry\x1a\x34\n\x0b\x43hannelList\x12%\n\x08\x63hannels\x18\x01 \x03(\x0e\x32\x13.chromiumos.Channel\x1a_\n\x14ReleaseChannelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\x36\n\x05value\x18\x02 \x01(\x0b\x32\'.chromiumos.ReleaseChannels.ChannelList:\x02\x38\x01\"&\n\nProtoBytes\x12\x18\n\x10serialized_proto\x18\x01 \x01(\x0c\"q\n\x1dPrepareForBuildAdditionalArgs\x12\x1c\n\x12\x63hrome_cwp_profile\x18\x01 \x01(\tH\x00\x12\x18\n\x0ekernel_version\x18\x02 \x01(\tH\x00\x42\x18\n\x16prepare_for_build_args\"A\n\x0b\x41\x66\x64oRelease\x12\x1a\n\x12\x63hrome_cwp_profile\x18\x01 \x01(\t\x12\x16\n\x0eimage_build_id\x18\x02 \x01(\x03\"\x97\x01\n\x13\x41rtifactProfileInfo\x12\x1c\n\x12\x63hrome_cwp_profile\x18\x01 \x01(\tH\x00\x12\x18\n\x0ekernel_version\x18\x02 \x01(\tH\x00\x12/\n\x0c\x61\x66\x64o_release\x18\x03 \x01(\x0b\x32\x17.chromiumos.AfdoReleaseH\x00\x42\x17\n\x15\x61rtifact_profile_info\"\xbe+\n\x12\x41rtifactsByService\x12\x35\n\x06legacy\x18\x01 \x01(\x0b\x32%.chromiumos.ArtifactsByService.Legacy\x12;\n\ttoolchain\x18\x02 \x01(\x0b\x32(.chromiumos.ArtifactsByService.Toolchain\x12\x33\n\x05image\x18\x03 \x01(\x0b\x32$.chromiumos.ArtifactsByService.Image\x12\x37\n\x07package\x18\x04 \x01(\x0b\x32&.chromiumos.ArtifactsByService.Package\x12\x37\n\x07sysroot\x18\x05 \x01(\x0b\x32&.chromiumos.ArtifactsByService.Sysroot\x12\x31\n\x04test\x18\x06 \x01(\x0b\x32#.chromiumos.ArtifactsByService.Test\x12\x35\n\x0cprofile_info\x18\x07 \x01(\x0b\x32\x1f.chromiumos.ArtifactProfileInfo\x12\x39\n\x08\x66irmware\x18\x08 \x01(\x0b\x32\'.chromiumos.ArtifactsByService.Firmware\x12\x33\n\x05infra\x18\t \x01(\x0b\x32$.chromiumos.ArtifactsByService.Infra\x1a\xb0\x01\n\x16\x43odeCoverageUploadInfo\x12]\n\rcoverage_type\x18\x01 \x01(\x0e\x32\x46.chromiumos.ArtifactsByService.CodeCoverageUploadInfo.CodeCoverageType\"7\n\x10\x43odeCoverageType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x08\n\x04LLVM\x10\x01\x12\x08\n\x04LCOV\x10\x02\x1a\xb2\x05\n\x06Legacy\x12K\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x32.chromiumos.ArtifactsByService.Legacy.ArtifactInfo\x12L\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x32.chromiumos.ArtifactsByService.Legacy.ArtifactInfo\x1a\xe2\x01\n\x0c\x41rtifactInfo\x12J\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x32.chromiumos.ArtifactsByService.Legacy.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishConditionJ\x04\x08\x03\x10\x04R\x0cprofile_info\"\xa7\x02\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\r\n\tIMAGE_ZIP\x10\x01\x12\x17\n\x13TEST_UPDATE_PAYLOAD\x10\x02\x12\x12\n\x0e\x41UTOTEST_FILES\x10\x03\x12\x0e\n\nTAST_FILES\x10\x04\x12\x17\n\x13PINNED_GUEST_IMAGES\x10\x05\x12\x0c\n\x08\x46IRMWARE\x10\x06\x12\x0f\n\x0b\x45\x42UILD_LOGS\x10\x07\x12\x13\n\x0f\x43HROMEOS_CONFIG\x10\x08\x12\x0e\n\nCPE_REPORT\x10\t\x12\x12\n\x0eIMAGE_ARCHIVES\x10\n\x12\x13\n\x0f\x46PMCU_UNITTESTS\x10\x1b\x12\x0f\n\x0bGCE_TARBALL\x10\x1c\x12\x11\n\rDEBUG_SYMBOLS\x10 \"\x04\x08\x0b\x10\x1a\"\x04\x08\x1d\x10\x1f\"\x04\x08!\x10+\x1a\xff\x07\n\tToolchain\x12N\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x35.chromiumos.ArtifactsByService.Toolchain.ArtifactInfo\x12O\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x35.chromiumos.ArtifactsByService.Toolchain.ArtifactInfo\x1a\xd1\x01\n\x0c\x41rtifactInfo\x12M\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x35.chromiumos.ArtifactsByService.Toolchain.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"\xfc\x04\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12$\n UNVERIFIED_CHROME_LLVM_ORDERFILE\x10\x0b\x12\"\n\x1eVERIFIED_CHROME_LLVM_ORDERFILE\x10\x0c\x12\x1e\n\x1a\x43HROME_CLANG_WARNINGS_FILE\x10\r\x12\x1c\n\x18UNVERIFIED_LLVM_PGO_FILE\x10\x0e\x12)\n%UNVERIFIED_CHROME_BENCHMARK_AFDO_FILE\x10\x0f\x12\'\n#VERIFIED_CHROME_BENCHMARK_AFDO_FILE\x10\x10\x12!\n\x1dVERIFIED_KERNEL_CWP_AFDO_FILE\x10\x11\x12#\n\x1fUNVERIFIED_KERNEL_CWP_AFDO_FILE\x10\x12\x12#\n\x1fUNVERIFIED_CHROME_CWP_AFDO_FILE\x10\x13\x12!\n\x1dVERIFIED_CHROME_CWP_AFDO_FILE\x10\x14\x12\x1e\n\x1aVERIFIED_RELEASE_AFDO_FILE\x10\x15\x12)\n%UNVERIFIED_CHROME_BENCHMARK_PERF_FILE\x10\x16\x12\x17\n\x13\x43HROME_DEBUG_BINARY\x10\x17\x12\x1a\n\x16TOOLCHAIN_WARNING_LOGS\x10\x18\x12)\n%CHROME_AFDO_PROFILE_FOR_ANDROID_LINUX\x10\x19\x12\x19\n\x15\x43LANG_CRASH_DIAGNOSES\x10\x1a\x12\x17\n\x13\x43OMPILER_RUSAGE_LOG\x10\x1d\"\x04\x08\x01\x10\n\"\x04\x08\x1b\x10\x1c\"\x04\x08\x1e\x10+\x1a\xda\x03\n\x05Image\x12J\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x31.chromiumos.ArtifactsByService.Image.ArtifactInfo\x12K\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x31.chromiumos.ArtifactsByService.Image.ArtifactInfo\x1a\xcd\x01\n\x0c\x41rtifactInfo\x12I\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x31.chromiumos.ArtifactsByService.Image.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"h\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\r\n\tDLC_IMAGE\x10\"\x12\x13\n\x0fLICENSE_CREDITS\x10&\x12\x11\n\rFACTORY_IMAGE\x10+\"\x04\x08\x01\x10!\"\x04\x08#\x10%\"\x04\x08\'\x10*\x1a\x9f\x03\n\x07Package\x12L\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x33.chromiumos.ArtifactsByService.Package.ArtifactInfo\x12M\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x33.chromiumos.ArtifactsByService.Package.ArtifactInfo\x1a\xcf\x01\n\x0c\x41rtifactInfo\x12K\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x33.chromiumos.ArtifactsByService.Package.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"%\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\"\x04\x08\x01\x10+\x1a\x8d\x04\n\x07Sysroot\x12L\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x33.chromiumos.ArtifactsByService.Sysroot.ArtifactInfo\x12M\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x33.chromiumos.ArtifactsByService.Sysroot.ArtifactInfo\x1a\xcf\x01\n\x0c\x41rtifactInfo\x12K\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x33.chromiumos.ArtifactsByService.Sysroot.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"\x92\x01\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x11\n\rDEBUG_SYMBOLS\x10 \x12\x1a\n\x16\x42REAKPAD_DEBUG_SYMBOLS\x10#\x12\x19\n\x15SIMPLE_CHROME_SYSROOT\x10(\x12\x15\n\x11\x43HROME_EBUILD_ENV\x10)\"\x04\x08\x01\x10\x1f\"\x04\x08!\x10\"\"\x04\x08$\x10\'\x1a\xb2\x04\n\x04Test\x12I\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x30.chromiumos.ArtifactsByService.Test.ArtifactInfo\x12J\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x30.chromiumos.ArtifactsByService.Test.ArtifactInfo\x1a\xa6\x02\n\x0c\x41rtifactInfo\x12H\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x30.chromiumos.ArtifactsByService.Test.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\x12X\n\x19\x63ode_coverage_upload_info\x18\x06 \x01(\x0b\x32\x35.chromiumos.ArtifactsByService.CodeCoverageUploadInfo\"j\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0e\n\nUNIT_TESTS\x10%\x12\x1b\n\x17\x43ODE_COVERAGE_LLVM_JSON\x10\'\x12\n\n\x06HWQUAL\x10*\"\x04\x08\x01\x10$\"\x04\x08&\x10&\"\x04\x08(\x10)\x1a\xf7\x04\n\x08\x46irmware\x12M\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x34.chromiumos.ArtifactsByService.Firmware.ArtifactInfo\x12N\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x34.chromiumos.ArtifactsByService.Firmware.ArtifactInfo\x1a\xd4\x02\n\x0c\x41rtifactInfo\x12L\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x34.chromiumos.ArtifactsByService.Firmware.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\x12(\n\x08location\x18\x06 \x01(\x0e\x32\x16.chromiumos.FwLocation\x12X\n\x19\x63ode_coverage_upload_info\x18\x07 \x01(\x0b\x32\x35.chromiumos.ArtifactsByService.CodeCoverageUploadInfo\"u\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x14\n\x10\x46IRMWARE_TARBALL\x10\x1e\x12\x19\n\x15\x46IRMWARE_TARBALL_INFO\x10\x1f\x12\x11\n\rFIRMWARE_LCOV\x10!\"\x04\x08\x01\x10\x1d\"\x04\x08 \x10 \"\x04\x08\"\x10+\x1a\xb1\x03\n\x05Infra\x12J\n\x0finput_artifacts\x18\x01 \x03(\x0b\x32\x31.chromiumos.ArtifactsByService.Infra.ArtifactInfo\x12K\n\x10output_artifacts\x18\x02 \x03(\x0b\x32\x31.chromiumos.ArtifactsByService.Infra.ArtifactInfo\x1a\xcd\x01\n\x0c\x41rtifactInfo\x12I\n\x0e\x61rtifact_types\x18\x01 \x03(\x0e\x32\x31.chromiumos.ArtifactsByService.Infra.ArtifactType\x12\x14\n\x0cgs_locations\x18\x02 \x03(\t\x12\x10\n\x08\x61\x63l_name\x18\x04 \x01(\t\x12J\n\x11publish_condition\x18\x05 \x01(\x0e\x32/.chromiumos.ArtifactsByService.PublishCondition\"?\n\x0c\x41rtifactType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x12\n\x0e\x42UILD_MANIFEST\x10$\"\x04\x08\x01\x10#\"\x04\x08%\x10+\"W\n\x10PublishCondition\x12\x17\n\x13PUBLISH_UNSPECIFIED\x10\x00\x12\x16\n\x12PUBLISH_ON_SUCCESS\x10\x01\x12\x12\n\x0ePUBLISH_ALWAYS\x10\x02\"\x8e\x12\n\x1aUploadedArtifactsByService\x12=\n\x06legacy\x18\x01 \x01(\x0b\x32-.chromiumos.UploadedArtifactsByService.Legacy\x12\x43\n\ttoolchain\x18\x02 \x01(\x0b\x32\x30.chromiumos.UploadedArtifactsByService.Toolchain\x12;\n\x05image\x18\x03 \x01(\x0b\x32,.chromiumos.UploadedArtifactsByService.Image\x12?\n\x07package\x18\x04 \x01(\x0b\x32..chromiumos.UploadedArtifactsByService.Package\x12?\n\x07sysroot\x18\x05 \x01(\x0b\x32..chromiumos.UploadedArtifactsByService.Sysroot\x12\x39\n\x04test\x18\x06 \x01(\x0b\x32+.chromiumos.UploadedArtifactsByService.Test\x12\x41\n\x08\x66irmware\x18\x07 \x01(\x0b\x32/.chromiumos.UploadedArtifactsByService.Firmware\x12;\n\x05infra\x18\x08 \x01(\x0b\x32,.chromiumos.UploadedArtifactsByService.Infra\x1a\xd5\x01\n\x06Legacy\x12N\n\tartifacts\x18\x01 \x03(\x0b\x32;.chromiumos.UploadedArtifactsByService.Legacy.ArtifactPaths\x1a{\n\rArtifactPaths\x12I\n\rartifact_type\x18\x01 \x01(\x0e\x32\x32.chromiumos.ArtifactsByService.Legacy.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xde\x01\n\tToolchain\x12Q\n\tartifacts\x18\x01 \x03(\x0b\x32>.chromiumos.UploadedArtifactsByService.Toolchain.ArtifactPaths\x1a~\n\rArtifactPaths\x12L\n\rartifact_type\x18\x01 \x01(\x0e\x32\x35.chromiumos.ArtifactsByService.Toolchain.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xd2\x01\n\x05Image\x12M\n\tartifacts\x18\x01 \x03(\x0b\x32:.chromiumos.UploadedArtifactsByService.Image.ArtifactPaths\x1az\n\rArtifactPaths\x12H\n\rartifact_type\x18\x01 \x01(\x0e\x32\x31.chromiumos.ArtifactsByService.Image.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xd8\x01\n\x07Package\x12O\n\tartifacts\x18\x01 \x03(\x0b\x32<.chromiumos.UploadedArtifactsByService.Package.ArtifactPaths\x1a|\n\rArtifactPaths\x12J\n\rartifact_type\x18\x01 \x01(\x0e\x32\x33.chromiumos.ArtifactsByService.Package.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xd8\x01\n\x07Sysroot\x12O\n\tartifacts\x18\x01 \x03(\x0b\x32<.chromiumos.UploadedArtifactsByService.Sysroot.ArtifactPaths\x1a|\n\rArtifactPaths\x12J\n\rartifact_type\x18\x01 \x01(\x0e\x32\x33.chromiumos.ArtifactsByService.Sysroot.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\xcf\x01\n\x04Test\x12L\n\tartifacts\x18\x01 \x03(\x0b\x32\x39.chromiumos.UploadedArtifactsByService.Test.ArtifactPaths\x1ay\n\rArtifactPaths\x12G\n\rartifact_type\x18\x01 \x01(\x0e\x32\x30.chromiumos.ArtifactsByService.Test.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x1a\x86\x02\n\x08\x46irmware\x12P\n\tartifacts\x18\x01 \x03(\x0b\x32=.chromiumos.UploadedArtifactsByService.Firmware.ArtifactPaths\x1a\xa7\x01\n\rArtifactPaths\x12K\n\rartifact_type\x18\x01 \x01(\x0e\x32\x34.chromiumos.ArtifactsByService.Firmware.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path\x12(\n\x08location\x18\x03 \x01(\x0e\x32\x16.chromiumos.FwLocation\x1a\xd2\x01\n\x05Infra\x12M\n\tartifacts\x18\x01 \x03(\x0b\x32:.chromiumos.UploadedArtifactsByService.Infra.ArtifactPaths\x1az\n\rArtifactPaths\x12H\n\rartifact_type\x18\x01 \x01(\x0e\x32\x31.chromiumos.ArtifactsByService.Infra.ArtifactType\x12\x1f\n\x05paths\x18\x02 \x03(\x0b\x32\x10.chromiumos.Path*\xca\x04\n\tImageType\x12\x18\n\x14IMAGE_TYPE_UNDEFINED\x10\x00\x12\x13\n\x0fIMAGE_TYPE_BASE\x10\x01\x12\x12\n\x0eIMAGE_TYPE_DEV\x10\x02\x12\x13\n\x0fIMAGE_TYPE_TEST\x10\x03\x12\x16\n\x12IMAGE_TYPE_BASE_VM\x10\x04\x12\x16\n\x12IMAGE_TYPE_TEST_VM\x10\x05\x12\x17\n\x13IMAGE_TYPE_RECOVERY\x10\x06\x12\x16\n\x12IMAGE_TYPE_FACTORY\x10\x07\x12\x17\n\x13IMAGE_TYPE_FIRMWARE\x10\x08\x12\x1c\n\x18IMAGE_TYPE_CR50_FIRMWARE\x10\t\x12\x1c\n\x18IMAGE_TYPE_BASE_GUEST_VM\x10\n\x12\x1c\n\x18IMAGE_TYPE_TEST_GUEST_VM\x10\x0b\x12\x12\n\x0eIMAGE_TYPE_DLC\x10\x0c\x12\x1b\n\x17IMAGE_TYPE_GSC_FIRMWARE\x10\r\x12\x1e\n\x1aIMAGE_TYPE_ACCESSORY_USBPD\x10\x0e\x12\x1e\n\x1aIMAGE_TYPE_ACCESSORY_RWSIG\x10\x0f*\x04\x42\x41SE*\x04TEST*\x03\x44\x45V*\x07\x42\x41SE_VM*\x07TEST_VM*\x08RECOVERY*\x07\x46\x41\x43TORY*\x08\x46IRMWARE*\rCR50_FIRMWARE*\rBASE_GUEST_VM*\rTEST_GUEST_VM*\x03\x44LC*\x0cGSC_FIRMWARE*\x0f\x41\x43\x43\x45SSORY_USBPD*\x0f\x41\x43\x43\x45SSORY_RWSIG*m\n\x07\x43hannel\x12\x17\n\x13\x43HANNEL_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x43HANNEL_STABLE\x10\x01\x12\x10\n\x0c\x43HANNEL_BETA\x10\x02\x12\x0f\n\x0b\x43HANNEL_DEV\x10\x03\x12\x12\n\x0e\x43HANNEL_CANARY\x10\x04*l\n\tDeltaType\x12\x11\n\rDELTA_UNKNOWN\x10\x00\x12\x0c\n\x08NO_DELTA\x10\x01\x12\x07\n\x03\x46SI\x10\x02\x12\r\n\tMILESTONE\x10\x03\x12\t\n\x05OMAHA\x10\x04\x12\x12\n\x0eSTEPPING_STONE\x10\x05\x12\x07\n\x03N2N\x10\x06*^\n\nFwLocation\x12\x17\n\x13\x46W_LOCATION_UNKNOWN\x10\x00\x12\x0f\n\x0bPLATFORM_EC\x10\x01\x12\x13\n\x0fPLATFORM_ZEPHYR\x10\x02\x12\x11\n\rPLATFORM_TI50\x10\x03*f\n\x10\x41\x46\x44OArtifactType\x12\r\n\tNONE_TYPE\x10\x00\x12\r\n\tORDERFILE\x10\x01\x12\x12\n\x0e\x42\x45NCHMARK_AFDO\x10\x02\x12\x0f\n\x0bKERNEL_AFDO\x10\x03\x12\x0f\n\x0b\x43HROME_AFDO\x10\x04\x42Y\n!com.google.chrome.crosinfra.protoZ4go.chromium.org/chromiumos/infra/proto/go/chromiumosb\x06proto3'
 )
 
 _IMAGETYPE = _descriptor.EnumDescriptor(
@@ -95,8 +95,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=10276,
-  serialized_end=10862,
+  serialized_start=10317,
+  serialized_end=10903,
 )
 _sym_db.RegisterEnumDescriptor(_IMAGETYPE)
 
@@ -130,8 +130,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=10864,
-  serialized_end=10973,
+  serialized_start=10905,
+  serialized_end=11014,
 )
 _sym_db.RegisterEnumDescriptor(_CHANNEL)
 
@@ -173,8 +173,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=10975,
-  serialized_end=11083,
+  serialized_start=11016,
+  serialized_end=11124,
 )
 _sym_db.RegisterEnumDescriptor(_DELTATYPE)
 
@@ -204,8 +204,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=11085,
-  serialized_end=11179,
+  serialized_start=11126,
+  serialized_end=11220,
 )
 _sym_db.RegisterEnumDescriptor(_FWLOCATION)
 
@@ -239,8 +239,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=11181,
-  serialized_end=11283,
+  serialized_start=11222,
+  serialized_end=11324,
 )
 _sym_db.RegisterEnumDescriptor(_AFDOARTIFACTTYPE)
 
@@ -313,8 +313,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=536,
-  serialized_end=643,
+  serialized_start=577,
+  serialized_end=684,
 )
 _sym_db.RegisterEnumDescriptor(_GOMACONFIG_GOMAAPPROACH)
 
@@ -339,8 +339,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=1059,
-  serialized_end=1111,
+  serialized_start=1100,
+  serialized_end=1152,
 )
 _sym_db.RegisterEnumDescriptor(_PATH_LOCATION)
 
@@ -365,8 +365,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=3031,
-  serialized_end=3086,
+  serialized_start=3072,
+  serialized_end=3127,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_CODECOVERAGEUPLOADINFO_CODECOVERAGETYPE)
 
@@ -435,8 +435,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=3484,
-  serialized_end=3779,
+  serialized_start=3525,
+  serialized_end=3820,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_LEGACY_ARTIFACTTYPE)
 
@@ -521,8 +521,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4169,
-  serialized_end=4805,
+  serialized_start=4210,
+  serialized_end=4846,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_TOOLCHAIN_ARTIFACTTYPE)
 
@@ -551,8 +551,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=5178,
-  serialized_end=5282,
+  serialized_start=5219,
+  serialized_end=5323,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_IMAGE_ARTIFACTTYPE)
 
@@ -569,8 +569,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=5663,
-  serialized_end=5700,
+  serialized_start=5704,
+  serialized_end=5741,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_PACKAGE_ARTIFACTTYPE)
 
@@ -603,8 +603,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=6082,
-  serialized_end=6228,
+  serialized_start=6123,
+  serialized_end=6269,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_SYSROOT_ARTIFACTTYPE)
 
@@ -633,8 +633,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=6687,
-  serialized_end=6793,
+  serialized_start=6728,
+  serialized_end=6834,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_TEST_ARTIFACTTYPE)
 
@@ -663,8 +663,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=7310,
-  serialized_end=7427,
+  serialized_start=7351,
+  serialized_end=7468,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_FIRMWARE_ARTIFACTTYPE)
 
@@ -685,8 +685,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=7800,
-  serialized_end=7863,
+  serialized_start=7841,
+  serialized_end=7904,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_INFRA_ARTIFACTTYPE)
 
@@ -711,8 +711,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=7865,
-  serialized_end=7952,
+  serialized_start=7906,
+  serialized_end=7993,
 )
 _sym_db.RegisterEnumDescriptor(_ARTIFACTSBYSERVICE_PUBLISHCONDITION)
 
@@ -748,6 +748,44 @@
 )
 
 
+_GCSPATH = _descriptor.Descriptor(
+  name='GcsPath',
+  full_name='chromiumos.GcsPath',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='bucket', full_name='chromiumos.GcsPath.bucket', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='path', full_name='chromiumos.GcsPath.path', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=68,
+  serialized_end=107,
+)
+
+
 _CHROOT_CHROOTENV = _descriptor.Descriptor(
   name='ChrootEnv',
   full_name='chromiumos.Chroot.ChrootEnv',
@@ -781,8 +819,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=175,
-  serialized_end=265,
+  serialized_start=216,
+  serialized_end=306,
 )
 
 _CHROOT = _descriptor.Descriptor(
@@ -832,8 +870,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=69,
-  serialized_end=277,
+  serialized_start=110,
+  serialized_end=318,
 )
 
 
@@ -863,8 +901,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=279,
-  serialized_end=305,
+  serialized_start=320,
+  serialized_end=346,
 )
 
 
@@ -937,8 +975,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=308,
-  serialized_end=643,
+  serialized_start=349,
+  serialized_end=684,
 )
 
 
@@ -982,8 +1020,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=645,
-  serialized_end=722,
+  serialized_start=686,
+  serialized_end=763,
 )
 
 
@@ -1027,8 +1065,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=724,
-  serialized_end=794,
+  serialized_start=765,
+  serialized_end=835,
 )
 
 
@@ -1058,8 +1096,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=796,
-  serialized_end=819,
+  serialized_start=837,
+  serialized_end=860,
 )
 
 
@@ -1117,8 +1155,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=822,
-  serialized_end=990,
+  serialized_start=863,
+  serialized_end=1031,
 )
 
 
@@ -1156,8 +1194,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=992,
-  serialized_end=1111,
+  serialized_start=1033,
+  serialized_end=1152,
 )
 
 
@@ -1187,8 +1225,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1113,
-  serialized_end=1157,
+  serialized_start=1154,
+  serialized_end=1198,
 )
 
 
@@ -1218,8 +1256,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1159,
-  serialized_end=1183,
+  serialized_start=1200,
+  serialized_end=1224,
 )
 
 
@@ -1270,8 +1308,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1185,
-  serialized_end=1264,
+  serialized_start=1226,
+  serialized_end=1305,
 )
 
 
@@ -1329,8 +1367,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1266,
-  serialized_end=1355,
+  serialized_start=1307,
+  serialized_end=1396,
 )
 
 
@@ -1360,8 +1398,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1357,
-  serialized_end=1380,
+  serialized_start=1398,
+  serialized_end=1421,
 )
 
 
@@ -1391,8 +1429,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1542,
-  serialized_end=1563,
+  serialized_start=1583,
+  serialized_end=1604,
 )
 
 _RELEASEBUILDER_MILESTONE = _descriptor.Descriptor(
@@ -1435,8 +1473,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1565,
-  serialized_end=1674,
+  serialized_start=1606,
+  serialized_end=1715,
 )
 
 _RELEASEBUILDER = _descriptor.Descriptor(
@@ -1482,8 +1520,8 @@
       name='milestone_message', full_name='chromiumos.ReleaseBuilder.milestone_message',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=1383,
-  serialized_end=1695,
+  serialized_start=1424,
+  serialized_end=1736,
 )
 
 
@@ -1513,8 +1551,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1697,
-  serialized_end=1760,
+  serialized_start=1738,
+  serialized_end=1801,
 )
 
 
@@ -1544,8 +1582,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1858,
-  serialized_end=1910,
+  serialized_start=1899,
+  serialized_end=1951,
 )
 
 _RELEASECHANNELS_RELEASECHANNELSENTRY = _descriptor.Descriptor(
@@ -1581,8 +1619,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1912,
-  serialized_end=2007,
+  serialized_start=1953,
+  serialized_end=2048,
 )
 
 _RELEASECHANNELS = _descriptor.Descriptor(
@@ -1611,8 +1649,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1763,
-  serialized_end=2007,
+  serialized_start=1804,
+  serialized_end=2048,
 )
 
 
@@ -1642,8 +1680,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2009,
-  serialized_end=2047,
+  serialized_start=2050,
+  serialized_end=2088,
 )
 
 
@@ -1683,8 +1721,8 @@
       name='prepare_for_build_args', full_name='chromiumos.PrepareForBuildAdditionalArgs.prepare_for_build_args',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=2049,
-  serialized_end=2162,
+  serialized_start=2090,
+  serialized_end=2203,
 )
 
 
@@ -1721,8 +1759,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2164,
-  serialized_end=2229,
+  serialized_start=2205,
+  serialized_end=2270,
 )
 
 
@@ -1769,8 +1807,8 @@
       name='artifact_profile_info', full_name='chromiumos.ArtifactProfileInfo.artifact_profile_info',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=2232,
-  serialized_end=2383,
+  serialized_start=2273,
+  serialized_end=2424,
 )
 
 
@@ -1801,8 +1839,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2910,
-  serialized_end=3086,
+  serialized_start=2951,
+  serialized_end=3127,
 )
 
 _ARTIFACTSBYSERVICE_LEGACY_ARTIFACTINFO = _descriptor.Descriptor(
@@ -1852,8 +1890,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3255,
-  serialized_end=3481,
+  serialized_start=3296,
+  serialized_end=3522,
 )
 
 _ARTIFACTSBYSERVICE_LEGACY = _descriptor.Descriptor(
@@ -1890,8 +1928,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3089,
-  serialized_end=3779,
+  serialized_start=3130,
+  serialized_end=3820,
 )
 
 _ARTIFACTSBYSERVICE_TOOLCHAIN_ARTIFACTINFO = _descriptor.Descriptor(
@@ -1941,8 +1979,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3957,
-  serialized_end=4166,
+  serialized_start=3998,
+  serialized_end=4207,
 )
 
 _ARTIFACTSBYSERVICE_TOOLCHAIN = _descriptor.Descriptor(
@@ -1979,8 +2017,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3782,
-  serialized_end=4805,
+  serialized_start=3823,
+  serialized_end=4846,
 )
 
 _ARTIFACTSBYSERVICE_IMAGE_ARTIFACTINFO = _descriptor.Descriptor(
@@ -2030,8 +2068,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4971,
-  serialized_end=5176,
+  serialized_start=5012,
+  serialized_end=5217,
 )
 
 _ARTIFACTSBYSERVICE_IMAGE = _descriptor.Descriptor(
@@ -2068,8 +2106,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4808,
-  serialized_end=5282,
+  serialized_start=4849,
+  serialized_end=5323,
 )
 
 _ARTIFACTSBYSERVICE_PACKAGE_ARTIFACTINFO = _descriptor.Descriptor(
@@ -2119,8 +2157,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5454,
-  serialized_end=5661,
+  serialized_start=5495,
+  serialized_end=5702,
 )
 
 _ARTIFACTSBYSERVICE_PACKAGE = _descriptor.Descriptor(
@@ -2157,8 +2195,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5285,
-  serialized_end=5700,
+  serialized_start=5326,
+  serialized_end=5741,
 )
 
 _ARTIFACTSBYSERVICE_SYSROOT_ARTIFACTINFO = _descriptor.Descriptor(
@@ -2208,8 +2246,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5872,
-  serialized_end=6079,
+  serialized_start=5913,
+  serialized_end=6120,
 )
 
 _ARTIFACTSBYSERVICE_SYSROOT = _descriptor.Descriptor(
@@ -2246,8 +2284,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5703,
-  serialized_end=6228,
+  serialized_start=5744,
+  serialized_end=6269,
 )
 
 _ARTIFACTSBYSERVICE_TEST_ARTIFACTINFO = _descriptor.Descriptor(
@@ -2304,8 +2342,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6391,
-  serialized_end=6685,
+  serialized_start=6432,
+  serialized_end=6726,
 )
 
 _ARTIFACTSBYSERVICE_TEST = _descriptor.Descriptor(
@@ -2342,8 +2380,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6231,
-  serialized_end=6793,
+  serialized_start=6272,
+  serialized_end=6834,
 )
 
 _ARTIFACTSBYSERVICE_FIRMWARE_ARTIFACTINFO = _descriptor.Descriptor(
@@ -2407,8 +2445,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6968,
-  serialized_end=7308,
+  serialized_start=7009,
+  serialized_end=7349,
 )
 
 _ARTIFACTSBYSERVICE_FIRMWARE = _descriptor.Descriptor(
@@ -2445,8 +2483,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6796,
-  serialized_end=7427,
+  serialized_start=6837,
+  serialized_end=7468,
 )
 
 _ARTIFACTSBYSERVICE_INFRA_ARTIFACTINFO = _descriptor.Descriptor(
@@ -2496,8 +2534,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7593,
-  serialized_end=7798,
+  serialized_start=7634,
+  serialized_end=7839,
 )
 
 _ARTIFACTSBYSERVICE_INFRA = _descriptor.Descriptor(
@@ -2534,8 +2572,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7430,
-  serialized_end=7863,
+  serialized_start=7471,
+  serialized_end=7904,
 )
 
 _ARTIFACTSBYSERVICE = _descriptor.Descriptor(
@@ -2621,8 +2659,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2386,
-  serialized_end=7952,
+  serialized_start=2427,
+  serialized_end=7993,
 )
 
 
@@ -2659,8 +2697,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8586,
-  serialized_end=8709,
+  serialized_start=8627,
+  serialized_end=8750,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_LEGACY = _descriptor.Descriptor(
@@ -2689,8 +2727,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8496,
-  serialized_end=8709,
+  serialized_start=8537,
+  serialized_end=8750,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_TOOLCHAIN_ARTIFACTPATHS = _descriptor.Descriptor(
@@ -2726,8 +2764,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8808,
-  serialized_end=8934,
+  serialized_start=8849,
+  serialized_end=8975,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_TOOLCHAIN = _descriptor.Descriptor(
@@ -2756,8 +2794,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8712,
-  serialized_end=8934,
+  serialized_start=8753,
+  serialized_end=8975,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_IMAGE_ARTIFACTPATHS = _descriptor.Descriptor(
@@ -2793,8 +2831,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9025,
-  serialized_end=9147,
+  serialized_start=9066,
+  serialized_end=9188,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_IMAGE = _descriptor.Descriptor(
@@ -2823,8 +2861,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8937,
-  serialized_end=9147,
+  serialized_start=8978,
+  serialized_end=9188,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_PACKAGE_ARTIFACTPATHS = _descriptor.Descriptor(
@@ -2860,8 +2898,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9242,
-  serialized_end=9366,
+  serialized_start=9283,
+  serialized_end=9407,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_PACKAGE = _descriptor.Descriptor(
@@ -2890,8 +2928,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9150,
-  serialized_end=9366,
+  serialized_start=9191,
+  serialized_end=9407,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_SYSROOT_ARTIFACTPATHS = _descriptor.Descriptor(
@@ -2927,8 +2965,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9461,
-  serialized_end=9585,
+  serialized_start=9502,
+  serialized_end=9626,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_SYSROOT = _descriptor.Descriptor(
@@ -2957,8 +2995,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9369,
-  serialized_end=9585,
+  serialized_start=9410,
+  serialized_end=9626,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_TEST_ARTIFACTPATHS = _descriptor.Descriptor(
@@ -2994,8 +3032,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9674,
-  serialized_end=9795,
+  serialized_start=9715,
+  serialized_end=9836,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_TEST = _descriptor.Descriptor(
@@ -3024,8 +3062,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9588,
-  serialized_end=9795,
+  serialized_start=9629,
+  serialized_end=9836,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_FIRMWARE_ARTIFACTPATHS = _descriptor.Descriptor(
@@ -3068,8 +3106,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9893,
-  serialized_end=10060,
+  serialized_start=9934,
+  serialized_end=10101,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_FIRMWARE = _descriptor.Descriptor(
@@ -3098,8 +3136,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9798,
-  serialized_end=10060,
+  serialized_start=9839,
+  serialized_end=10101,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_INFRA_ARTIFACTPATHS = _descriptor.Descriptor(
@@ -3135,8 +3173,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=10151,
-  serialized_end=10273,
+  serialized_start=10192,
+  serialized_end=10314,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE_INFRA = _descriptor.Descriptor(
@@ -3165,8 +3203,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=10063,
-  serialized_end=10273,
+  serialized_start=10104,
+  serialized_end=10314,
 )
 
 _UPLOADEDARTIFACTSBYSERVICE = _descriptor.Descriptor(
@@ -3244,8 +3282,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7955,
-  serialized_end=10273,
+  serialized_start=7996,
+  serialized_end=10314,
 )
 
 _CHROOT_CHROOTENV.fields_by_name['use_flags'].message_type = _USEFLAG
@@ -3412,6 +3450,7 @@
 _UPLOADEDARTIFACTSBYSERVICE.fields_by_name['firmware'].message_type = _UPLOADEDARTIFACTSBYSERVICE_FIRMWARE
 _UPLOADEDARTIFACTSBYSERVICE.fields_by_name['infra'].message_type = _UPLOADEDARTIFACTSBYSERVICE_INFRA
 DESCRIPTOR.message_types_by_name['BuildTarget'] = _BUILDTARGET
+DESCRIPTOR.message_types_by_name['GcsPath'] = _GCSPATH
 DESCRIPTOR.message_types_by_name['Chroot'] = _CHROOT
 DESCRIPTOR.message_types_by_name['Feature'] = _FEATURE
 DESCRIPTOR.message_types_by_name['GomaConfig'] = _GOMACONFIG
@@ -3448,6 +3487,13 @@
   })
 _sym_db.RegisterMessage(BuildTarget)
 
+GcsPath = _reflection.GeneratedProtocolMessageType('GcsPath', (_message.Message,), {
+  'DESCRIPTOR' : _GCSPATH,
+  '__module__' : 'chromiumos.common_pb2'
+  # @@protoc_insertion_point(class_scope:chromiumos.GcsPath)
+  })
+_sym_db.RegisterMessage(GcsPath)
+
 Chroot = _reflection.GeneratedProtocolMessageType('Chroot', (_message.Message,), {
 
   'ChrootEnv' : _reflection.GeneratedProtocolMessageType('ChrootEnv', (_message.Message,), {
diff --git a/api/gen_sdk/chromiumos/config/api/component_pb2.py b/api/gen_sdk/chromiumos/config/api/component_pb2.py
index 91deda1..b657271 100644
--- a/api/gen_sdk/chromiumos/config/api/component_pb2.py
+++ b/api/gen_sdk/chromiumos/config/api/component_pb2.py
@@ -20,7 +20,7 @@
   package='chromiumos.config.api',
   syntax='proto3',
   serialized_options=b'Z(go.chromium.org/chromiumos/config/go/api',
-  serialized_pb=b'\n%chromiumos/config/api/component.proto\x12\x15\x63hromiumos.config.api\x1a(chromiumos/config/api/component_id.proto\x1a&chromiumos/config/api/partner_id.proto\"\x8c$\n\tComponent\x12.\n\x02id\x18\x01 \x01(\x0b\x32\".chromiumos.config.api.ComponentId\x12\x39\n\x0fmanufacturer_id\x18\x08 \x01(\x0b\x32 .chromiumos.config.api.PartnerId\x12\x0c\n\x04name\x18\t \x01(\t\x12\x11\n\thwid_type\x18\x19 \x01(\t\x12\x12\n\nhwid_label\x18\x14 \x01(\t\x12\x36\n\x06\x61vl_id\x18\x15 \x01(\x0b\x32&.chromiumos.config.api.Component.AVLId\x12\x13\n\x0bpart_number\x18\x16 \x01(\t\x12\x33\n\x03soc\x18\x02 \x01(\x0b\x32$.chromiumos.config.api.Component.SocH\x00\x12\x39\n\x06memory\x18\x03 \x01(\x0b\x32\'.chromiumos.config.api.Component.MemoryH\x00\x12?\n\tbluetooth\x18\x04 \x01(\x0b\x32*.chromiumos.config.api.Component.BluetoothH\x00\x12\x39\n\x06\x63\x61mera\x18\x05 \x01(\x0b\x32\'.chromiumos.config.api.Component.CameraH\x00\x12=\n\x0btouchscreen\x18\x06 \x01(\x0b\x32&.chromiumos.config.api.Component.TouchH\x00\x12\x35\n\x04wifi\x18\x07 \x01(\x0b\x32%.chromiumos.config.api.Component.WifiH\x00\x12:\n\x08touchpad\x18\n \x01(\x0b\x32&.chromiumos.config.api.Component.TouchH\x00\x12\x46\n\rdisplay_panel\x18\x0b \x01(\x0b\x32-.chromiumos.config.api.Component.DisplayPanelH\x00\x12\x42\n\x0b\x61udio_codec\x18\x0c \x01(\x0b\x32+.chromiumos.config.api.Component.AudioCodecH\x00\x12;\n\x07\x62\x61ttery\x18\r \x01(\x0b\x32(.chromiumos.config.api.Component.BatteryH\x00\x12\x43\n\rec_flash_chip\x18\x0e \x01(\x0b\x32*.chromiumos.config.api.Component.FlashChipH\x00\x12G\n\x11system_flash_chip\x18\x0f \x01(\x0b\x32*.chromiumos.config.api.Component.FlashChipH\x00\x12\x41\n\x02\x65\x63\x18\x10 \x01(\x0b\x32\x33.chromiumos.config.api.Component.EmbeddedControllerH\x00\x12;\n\x07storage\x18\x11 \x01(\x0b\x32(.chromiumos.config.api.Component.StorageH\x00\x12\x33\n\x03tpm\x18\x12 \x01(\x0b\x32$.chromiumos.config.api.Component.TpmH\x00\x12\x42\n\x08usb_host\x18\x13 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.UsbH\x00\x12\x39\n\x06stylus\x18\x17 \x01(\x0b\x32\'.chromiumos.config.api.Component.StylusH\x00\x12?\n\tamplifier\x18\x18 \x01(\x0b\x32*.chromiumos.config.api.Component.AmplifierH\x00\x1a!\n\x05\x41VLId\x12\x0b\n\x03\x63id\x18\x01 \x01(\x05\x12\x0b\n\x03qid\x18\x02 \x01(\x05\x1a\xb7\x01\n\tInterface\x1a&\n\x03I2C\x12\x0f\n\x07product\x18\x01 \x01(\t\x12\x0e\n\x06vendor\x18\x02 \x01(\t\x1a@\n\x03Usb\x12\x11\n\tvendor_id\x18\x01 \x01(\t\x12\x12\n\nproduct_id\x18\x02 \x01(\t\x12\x12\n\nbcd_device\x18\x03 \x01(\t\x1a@\n\x03Pci\x12\x11\n\tvendor_id\x18\x01 \x01(\t\x12\x11\n\tdevice_id\x18\x02 \x01(\t\x12\x13\n\x0brevision_id\x18\x03 \x01(\t\x1a\xf7\x02\n\x03Soc\x12;\n\x06\x66\x61mily\x18\x01 \x01(\x0b\x32+.chromiumos.config.api.Component.Soc.Family\x12\r\n\x05model\x18\x02 \x01(\t\x12\r\n\x05\x63ores\x18\x03 \x01(\x05\x12>\n\x08\x66\x65\x61tures\x18\x04 \x03(\x0e\x32,.chromiumos.config.api.Component.Soc.Feature\x1aW\n\x06\x46\x61mily\x12?\n\x04\x61rch\x18\x01 \x01(\x0e\x32\x31.chromiumos.config.api.Component.Soc.Architecture\x12\x0c\n\x04name\x18\x02 \x01(\t\"S\n\x0c\x41rchitecture\x12\x1a\n\x16\x41RCHITECTURE_UNDEFINED\x10\x00\x12\x07\n\x03X86\x10\x01\x12\n\n\x06X86_64\x10\x02\x12\x07\n\x03\x41RM\x10\x03\x12\t\n\x05\x41RM64\x10\x04\"\'\n\x07\x46\x65\x61ture\x12\x13\n\x0f\x46\x45\x41TURE_UNKNOWN\x10\x00\x12\x07\n\x03SMT\x10\x01\x1a\xb4\x02\n\x06Memory\x12@\n\x07profile\x18\x01 \x01(\x0b\x32/.chromiumos.config.api.Component.Memory.Profile\x12\x13\n\x0bpart_number\x18\x02 \x01(\t\x1ap\n\x07Profile\x12:\n\x04type\x18\x01 \x01(\x0e\x32,.chromiumos.config.api.Component.Memory.Type\x12\x11\n\tspeed_mhz\x18\x02 \x01(\x05\x12\x16\n\x0esize_megabytes\x18\x03 \x01(\x05\"[\n\x04Type\x12\x12\n\x0eTYPE_UNDEFINED\x10\x00\x12\x07\n\x03\x44\x44R\x10\x01\x12\x08\n\x04\x44\x44R2\x10\x02\x12\x08\n\x04\x44\x44R3\x10\x03\x12\x08\n\x04\x44\x44R4\x10\x04\x12\x0b\n\x07LP_DDR3\x10\x05\x12\x0b\n\x07LP_DDR4\x10\x06J\x04\x08\x03\x10\x04\x1aZ\n\tBluetooth\x12;\n\x03usb\x18\x04 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.UsbJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04\x1a\x93\x03\n\x06\x43\x61mera\x12\x41\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0e\x32/.chromiumos.config.api.Component.Camera.Feature\x12\x45\n\nclock_type\x18\x02 \x01(\x0e\x32\x31.chromiumos.config.api.Component.Camera.ClockType\x12=\n\x03usb\x18\x03 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.UsbH\x00\x12=\n\x03pci\x18\x04 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.PciH\x00\"0\n\x07\x46\x65\x61ture\x12\x13\n\x0f\x46\x45\x41TURE_UNKNOWN\x10\x00\x12\x10\n\x0c\x41\x43TIVITY_LED\x10\x01\"B\n\tClockType\x12\x18\n\x14\x43LOCK_TYPE_UNDEFINED\x10\x00\x12\r\n\tMONOTONIC\x10\x01\x12\x0c\n\x08\x42OOTTIME\x10\x02\x42\x0b\n\tinterface\x1a\xd6\x01\n\x0c\x44isplayPanel\x12\x12\n\nproduct_id\x18\x01 \x01(\t\x12L\n\nproperties\x18\x02 \x01(\x0b\x32\x38.chromiumos.config.api.Component.DisplayPanel.Properties\x1a\x64\n\nProperties\x12\x10\n\x08width_px\x18\x01 \x01(\x05\x12\x11\n\theight_px\x18\x02 \x01(\x05\x12\x1a\n\x12\x64iagonal_milliinch\x18\x03 \x01(\x05\x12\x15\n\rpixels_per_in\x18\x04 \x01(\x05\x1a\x9e\x02\n\x05Touch\x12\x12\n\nproduct_id\x18\x02 \x01(\t\x12\x12\n\nfw_version\x18\x03 \x01(\t\x12\x16\n\x0eproduct_series\x18\x05 \x01(\t\x12\x13\n\x0b\x66w_checksum\x18\x06 \x01(\t\x12>\n\x04type\x18\x07 \x01(\x0e\x32\x30.chromiumos.config.api.Component.Touch.TouchType\x12;\n\x03usb\x18\x08 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.Usb\"7\n\tTouchType\x12\x18\n\x14TOUCH_TYPE_UNDEFINED\x10\x00\x12\x07\n\x03USB\x10\x01\x12\x07\n\x03I2C\x10\x02J\x04\x08\x01\x10\x02J\x04\x08\x04\x10\x05\x1a\xc8\x02\n\x04Wifi\x12=\n\x03pci\x18\x01 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.PciH\x00\x12T\n\x18supported_wlan_protocols\x18\x02 \x03(\x0e\x32\x32.chromiumos.config.api.Component.Wifi.WLANProtocol\"\x9d\x01\n\x0cWLANProtocol\x12\x19\n\x15WLAN_PROTOCOL_UNKNOWN\x10\x00\x12\x11\n\rIEEE_802_11_A\x10\x01\x12\x11\n\rIEEE_802_11_B\x10\x02\x12\x11\n\rIEEE_802_11_G\x10\x03\x12\x11\n\rIEEE_802_11_N\x10\x04\x12\x12\n\x0eIEEE_802_11_AC\x10\x05\x12\x12\n\x0eIEEE_802_11_AX\x10\x06\x42\x0b\n\tinterface\x1a\xe7\x01\n\rQualification\x12\x38\n\x0c\x63omponent_id\x18\x01 \x01(\x0b\x32\".chromiumos.config.api.ComponentId\x12\x45\n\x06status\x18\x02 \x01(\x0e\x32\x35.chromiumos.config.api.Component.Qualification.Status\"U\n\x06Status\x12\x12\n\x0eSTATUS_UNKNOWN\x10\x00\x12\r\n\tREQUESTED\x10\x01\x12\x19\n\x15TECHNICALLY_QUALIFIED\x10\x02\x12\r\n\tQUALIFIED\x10\x03\x1a\x19\n\tAmplifier\x12\x0c\n\x04name\x18\x01 \x01(\t\x1a\x1a\n\nAudioCodec\x12\x0c\n\x04name\x18\x01 \x01(\t\x1a\x9a\x01\n\x07\x42\x61ttery\x12\r\n\x05model\x18\x01 \x01(\t\x12G\n\ntechnology\x18\x02 \x01(\x0e\x32\x33.chromiumos.config.api.Component.Battery.Technology\"7\n\nTechnology\x12\x10\n\x0cTECH_UNKNOWN\x10\x00\x12\n\n\x06LI_ION\x10\x01\x12\x0b\n\x07LI_POLY\x10\x02\x1a \n\tFlashChip\x12\x13\n\x0bpart_number\x18\x01 \x01(\t\x1a)\n\x12\x45mbeddedController\x12\x13\n\x0bpart_number\x18\x01 \x01(\t\x1a\x86\x02\n\x07Storage\x12\x14\n\x0c\x65mmc5_fw_ver\x18\x01 \x01(\t\x12\x0e\n\x06manfid\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\r\n\x05oemid\x18\x04 \x01(\t\x12\x0b\n\x03prv\x18\x05 \x01(\t\x12\x0f\n\x07sectors\x18\x06 \x01(\t\x12\x42\n\x04type\x18\x07 \x01(\x0e\x32\x34.chromiumos.config.api.Component.Storage.StorageType\x12\x0f\n\x07size_gb\x18\x08 \x01(\r\"E\n\x0bStorageType\x12\x18\n\x14STORAGE_TYPE_UNKNOWN\x10\x00\x12\x08\n\x04\x45MMC\x10\x01\x12\x08\n\x04NVME\x10\x02\x12\x08\n\x04SATA\x10\x03\x1a\x31\n\x03Tpm\x12\x19\n\x11manufacturer_info\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x1a\x93\x01\n\x06Stylus\x12=\n\x03usb\x18\x01 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.UsbH\x00\x12=\n\x03i2c\x18\x02 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.I2CH\x00\x42\x0b\n\tinterfaceB\x06\n\x04typeB*Z(go.chromium.org/chromiumos/config/go/apib\x06proto3'
+  serialized_pb=b'\n%chromiumos/config/api/component.proto\x12\x15\x63hromiumos.config.api\x1a(chromiumos/config/api/component_id.proto\x1a&chromiumos/config/api/partner_id.proto\"\xf6&\n\tComponent\x12.\n\x02id\x18\x01 \x01(\x0b\x32\".chromiumos.config.api.ComponentId\x12\x39\n\x0fmanufacturer_id\x18\x08 \x01(\x0b\x32 .chromiumos.config.api.PartnerId\x12\x0c\n\x04name\x18\t \x01(\t\x12\x11\n\thwid_type\x18\x19 \x01(\t\x12\x12\n\nhwid_label\x18\x14 \x01(\t\x12\x36\n\x06\x61vl_id\x18\x15 \x01(\x0b\x32&.chromiumos.config.api.Component.AVLId\x12\x13\n\x0bpart_number\x18\x16 \x01(\t\x12\x33\n\x03soc\x18\x02 \x01(\x0b\x32$.chromiumos.config.api.Component.SocH\x00\x12\x39\n\x06memory\x18\x03 \x01(\x0b\x32\'.chromiumos.config.api.Component.MemoryH\x00\x12?\n\tbluetooth\x18\x04 \x01(\x0b\x32*.chromiumos.config.api.Component.BluetoothH\x00\x12\x39\n\x06\x63\x61mera\x18\x05 \x01(\x0b\x32\'.chromiumos.config.api.Component.CameraH\x00\x12=\n\x0btouchscreen\x18\x06 \x01(\x0b\x32&.chromiumos.config.api.Component.TouchH\x00\x12\x35\n\x04wifi\x18\x07 \x01(\x0b\x32%.chromiumos.config.api.Component.WifiH\x00\x12:\n\x08touchpad\x18\n \x01(\x0b\x32&.chromiumos.config.api.Component.TouchH\x00\x12\x46\n\rdisplay_panel\x18\x0b \x01(\x0b\x32-.chromiumos.config.api.Component.DisplayPanelH\x00\x12\x42\n\x0b\x61udio_codec\x18\x0c \x01(\x0b\x32+.chromiumos.config.api.Component.AudioCodecH\x00\x12;\n\x07\x62\x61ttery\x18\r \x01(\x0b\x32(.chromiumos.config.api.Component.BatteryH\x00\x12\x43\n\rec_flash_chip\x18\x0e \x01(\x0b\x32*.chromiumos.config.api.Component.FlashChipH\x00\x12G\n\x11system_flash_chip\x18\x0f \x01(\x0b\x32*.chromiumos.config.api.Component.FlashChipH\x00\x12\x41\n\x02\x65\x63\x18\x10 \x01(\x0b\x32\x33.chromiumos.config.api.Component.EmbeddedControllerH\x00\x12;\n\x07storage\x18\x11 \x01(\x0b\x32(.chromiumos.config.api.Component.StorageH\x00\x12\x33\n\x03tpm\x18\x12 \x01(\x0b\x32$.chromiumos.config.api.Component.TpmH\x00\x12\x42\n\x08usb_host\x18\x13 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.UsbH\x00\x12\x39\n\x06stylus\x18\x17 \x01(\x0b\x32\'.chromiumos.config.api.Component.StylusH\x00\x12?\n\tamplifier\x18\x18 \x01(\x0b\x32*.chromiumos.config.api.Component.AmplifierH\x00\x12M\n\x0c\x64p_converter\x18\x1a \x01(\x0b\x32\x35.chromiumos.config.api.Component.DisplayPortConverterH\x00\x1a!\n\x05\x41VLId\x12\x0b\n\x03\x63id\x18\x01 \x01(\x05\x12\x0b\n\x03qid\x18\x02 \x01(\x05\x1a\xb7\x01\n\tInterface\x1a&\n\x03I2C\x12\x0f\n\x07product\x18\x01 \x01(\t\x12\x0e\n\x06vendor\x18\x02 \x01(\t\x1a@\n\x03Usb\x12\x11\n\tvendor_id\x18\x01 \x01(\t\x12\x12\n\nproduct_id\x18\x02 \x01(\t\x12\x12\n\nbcd_device\x18\x03 \x01(\t\x1a@\n\x03Pci\x12\x11\n\tvendor_id\x18\x01 \x01(\t\x12\x11\n\tdevice_id\x18\x02 \x01(\t\x12\x13\n\x0brevision_id\x18\x03 \x01(\t\x1a\xf7\x02\n\x03Soc\x12;\n\x06\x66\x61mily\x18\x01 \x01(\x0b\x32+.chromiumos.config.api.Component.Soc.Family\x12\r\n\x05model\x18\x02 \x01(\t\x12\r\n\x05\x63ores\x18\x03 \x01(\x05\x12>\n\x08\x66\x65\x61tures\x18\x04 \x03(\x0e\x32,.chromiumos.config.api.Component.Soc.Feature\x1aW\n\x06\x46\x61mily\x12?\n\x04\x61rch\x18\x01 \x01(\x0e\x32\x31.chromiumos.config.api.Component.Soc.Architecture\x12\x0c\n\x04name\x18\x02 \x01(\t\"S\n\x0c\x41rchitecture\x12\x1a\n\x16\x41RCHITECTURE_UNDEFINED\x10\x00\x12\x07\n\x03X86\x10\x01\x12\n\n\x06X86_64\x10\x02\x12\x07\n\x03\x41RM\x10\x03\x12\t\n\x05\x41RM64\x10\x04\"\'\n\x07\x46\x65\x61ture\x12\x13\n\x0f\x46\x45\x41TURE_UNKNOWN\x10\x00\x12\x07\n\x03SMT\x10\x01\x1a\xb4\x02\n\x06Memory\x12@\n\x07profile\x18\x01 \x01(\x0b\x32/.chromiumos.config.api.Component.Memory.Profile\x12\x13\n\x0bpart_number\x18\x02 \x01(\t\x1ap\n\x07Profile\x12:\n\x04type\x18\x01 \x01(\x0e\x32,.chromiumos.config.api.Component.Memory.Type\x12\x11\n\tspeed_mhz\x18\x02 \x01(\x05\x12\x16\n\x0esize_megabytes\x18\x03 \x01(\x05\"[\n\x04Type\x12\x12\n\x0eTYPE_UNDEFINED\x10\x00\x12\x07\n\x03\x44\x44R\x10\x01\x12\x08\n\x04\x44\x44R2\x10\x02\x12\x08\n\x04\x44\x44R3\x10\x03\x12\x08\n\x04\x44\x44R4\x10\x04\x12\x0b\n\x07LP_DDR3\x10\x05\x12\x0b\n\x07LP_DDR4\x10\x06J\x04\x08\x03\x10\x04\x1aZ\n\tBluetooth\x12;\n\x03usb\x18\x04 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.UsbJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04\x1a\x93\x03\n\x06\x43\x61mera\x12\x41\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0e\x32/.chromiumos.config.api.Component.Camera.Feature\x12\x45\n\nclock_type\x18\x02 \x01(\x0e\x32\x31.chromiumos.config.api.Component.Camera.ClockType\x12=\n\x03usb\x18\x03 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.UsbH\x00\x12=\n\x03pci\x18\x04 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.PciH\x00\"0\n\x07\x46\x65\x61ture\x12\x13\n\x0f\x46\x45\x41TURE_UNKNOWN\x10\x00\x12\x10\n\x0c\x41\x43TIVITY_LED\x10\x01\"B\n\tClockType\x12\x18\n\x14\x43LOCK_TYPE_UNDEFINED\x10\x00\x12\r\n\tMONOTONIC\x10\x01\x12\x0c\n\x08\x42OOTTIME\x10\x02\x42\x0b\n\tinterface\x1a\xc9\x02\n\x0c\x44isplayPanel\x12\x12\n\nproduct_id\x18\x01 \x01(\t\x12L\n\nproperties\x18\x02 \x01(\x0b\x32\x38.chromiumos.config.api.Component.DisplayPanel.Properties\x1a\xad\x01\n\nProperties\x12\x10\n\x08width_px\x18\x01 \x01(\x05\x12\x11\n\theight_px\x18\x02 \x01(\x05\x12\x1a\n\x12\x64iagonal_milliinch\x18\x03 \x01(\x05\x12\x15\n\rpixels_per_in\x18\x04 \x01(\x05\x12G\n\x08\x66\x65\x61tures\x18\x05 \x03(\x0e\x32\x35.chromiumos.config.api.Component.DisplayPanel.Feature\"\'\n\x07\x46\x65\x61ture\x12\x13\n\x0f\x46\x45\x41TURE_UNKNOWN\x10\x00\x12\x07\n\x03HDR\x10\x01\x1a\x9e\x02\n\x05Touch\x12\x12\n\nproduct_id\x18\x02 \x01(\t\x12\x12\n\nfw_version\x18\x03 \x01(\t\x12\x16\n\x0eproduct_series\x18\x05 \x01(\t\x12\x13\n\x0b\x66w_checksum\x18\x06 \x01(\t\x12>\n\x04type\x18\x07 \x01(\x0e\x32\x30.chromiumos.config.api.Component.Touch.TouchType\x12;\n\x03usb\x18\x08 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.Usb\"7\n\tTouchType\x12\x18\n\x14TOUCH_TYPE_UNDEFINED\x10\x00\x12\x07\n\x03USB\x10\x01\x12\x07\n\x03I2C\x10\x02J\x04\x08\x01\x10\x02J\x04\x08\x04\x10\x05\x1a\xc8\x02\n\x04Wifi\x12=\n\x03pci\x18\x01 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.PciH\x00\x12T\n\x18supported_wlan_protocols\x18\x02 \x03(\x0e\x32\x32.chromiumos.config.api.Component.Wifi.WLANProtocol\"\x9d\x01\n\x0cWLANProtocol\x12\x19\n\x15WLAN_PROTOCOL_UNKNOWN\x10\x00\x12\x11\n\rIEEE_802_11_A\x10\x01\x12\x11\n\rIEEE_802_11_B\x10\x02\x12\x11\n\rIEEE_802_11_G\x10\x03\x12\x11\n\rIEEE_802_11_N\x10\x04\x12\x12\n\x0eIEEE_802_11_AC\x10\x05\x12\x12\n\x0eIEEE_802_11_AX\x10\x06\x42\x0b\n\tinterface\x1a\xe7\x01\n\rQualification\x12\x38\n\x0c\x63omponent_id\x18\x01 \x01(\x0b\x32\".chromiumos.config.api.ComponentId\x12\x45\n\x06status\x18\x02 \x01(\x0e\x32\x35.chromiumos.config.api.Component.Qualification.Status\"U\n\x06Status\x12\x12\n\x0eSTATUS_UNKNOWN\x10\x00\x12\r\n\tREQUESTED\x10\x01\x12\x19\n\x15TECHNICALLY_QUALIFIED\x10\x02\x12\r\n\tQUALIFIED\x10\x03\x1a\x9a\x01\n\tAmplifier\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x44\n\x08\x66\x65\x61tures\x18\x02 \x03(\x0e\x32\x32.chromiumos.config.api.Component.Amplifier.Feature\"9\n\x07\x46\x65\x61ture\x12\x13\n\x0f\x46\x45\x41TURE_UNKNOWN\x10\x00\x12\x19\n\x15\x42OOT_TIME_CALIBRATION\x10\x01\x1a\x1a\n\nAudioCodec\x12\x0c\n\x04name\x18\x01 \x01(\t\x1a\x9a\x01\n\x07\x42\x61ttery\x12\r\n\x05model\x18\x01 \x01(\t\x12G\n\ntechnology\x18\x02 \x01(\x0e\x32\x33.chromiumos.config.api.Component.Battery.Technology\"7\n\nTechnology\x12\x10\n\x0cTECH_UNKNOWN\x10\x00\x12\n\n\x06LI_ION\x10\x01\x12\x0b\n\x07LI_POLY\x10\x02\x1a \n\tFlashChip\x12\x13\n\x0bpart_number\x18\x01 \x01(\t\x1a)\n\x12\x45mbeddedController\x12\x13\n\x0bpart_number\x18\x01 \x01(\t\x1a\x86\x02\n\x07Storage\x12\x14\n\x0c\x65mmc5_fw_ver\x18\x01 \x01(\t\x12\x0e\n\x06manfid\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\r\n\x05oemid\x18\x04 \x01(\t\x12\x0b\n\x03prv\x18\x05 \x01(\t\x12\x0f\n\x07sectors\x18\x06 \x01(\t\x12\x42\n\x04type\x18\x07 \x01(\x0e\x32\x34.chromiumos.config.api.Component.Storage.StorageType\x12\x0f\n\x07size_gb\x18\x08 \x01(\r\"E\n\x0bStorageType\x12\x18\n\x14STORAGE_TYPE_UNKNOWN\x10\x00\x12\x08\n\x04\x45MMC\x10\x01\x12\x08\n\x04NVME\x10\x02\x12\x08\n\x04SATA\x10\x03\x1a\x31\n\x03Tpm\x12\x19\n\x11manufacturer_info\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x1a\x93\x01\n\x06Stylus\x12=\n\x03usb\x18\x01 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.UsbH\x00\x12=\n\x03i2c\x18\x02 \x01(\x0b\x32..chromiumos.config.api.Component.Interface.I2CH\x00\x42\x0b\n\tinterface\x1a$\n\x14\x44isplayPortConverter\x12\x0c\n\x04name\x18\x01 \x01(\tB\x06\n\x04typeB*Z(go.chromium.org/chromiumos/config/go/apib\x06proto3'
   ,
   dependencies=[chromiumos_dot_config_dot_api_dot_component__id__pb2.DESCRIPTOR,chromiumos_dot_config_dot_api_dot_partner__id__pb2.DESCRIPTOR,])
 
@@ -55,8 +55,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=2000,
-  serialized_end=2083,
+  serialized_start=2079,
+  serialized_end=2162,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_SOC_ARCHITECTURE)
 
@@ -77,8 +77,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=2085,
-  serialized_end=2124,
+  serialized_start=2164,
+  serialized_end=2203,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_SOC_FEATURE)
 
@@ -119,8 +119,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=2338,
-  serialized_end=2429,
+  serialized_start=2417,
+  serialized_end=2508,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_MEMORY_TYPE)
 
@@ -141,8 +141,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=2804,
-  serialized_end=2852,
+  serialized_start=2883,
+  serialized_end=2931,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_CAMERA_FEATURE)
 
@@ -167,11 +167,33 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=2854,
-  serialized_end=2920,
+  serialized_start=2933,
+  serialized_end=2999,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_CAMERA_CLOCKTYPE)
 
+_COMPONENT_DISPLAYPANEL_FEATURE = _descriptor.EnumDescriptor(
+  name='Feature',
+  full_name='chromiumos.config.api.Component.DisplayPanel.Feature',
+  filename=None,
+  file=DESCRIPTOR,
+  values=[
+    _descriptor.EnumValueDescriptor(
+      name='FEATURE_UNKNOWN', index=0, number=0,
+      serialized_options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='HDR', index=1, number=1,
+      serialized_options=None,
+      type=None),
+  ],
+  containing_type=None,
+  serialized_options=None,
+  serialized_start=3305,
+  serialized_end=3344,
+)
+_sym_db.RegisterEnumDescriptor(_COMPONENT_DISPLAYPANEL_FEATURE)
+
 _COMPONENT_TOUCH_TOUCHTYPE = _descriptor.EnumDescriptor(
   name='TouchType',
   full_name='chromiumos.config.api.Component.Touch.TouchType',
@@ -193,8 +215,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=3372,
-  serialized_end=3427,
+  serialized_start=3566,
+  serialized_end=3621,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_TOUCH_TOUCHTYPE)
 
@@ -235,8 +257,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=3600,
-  serialized_end=3757,
+  serialized_start=3794,
+  serialized_end=3951,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_WIFI_WLANPROTOCOL)
 
@@ -265,11 +287,33 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=3919,
-  serialized_end=4004,
+  serialized_start=4113,
+  serialized_end=4198,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_QUALIFICATION_STATUS)
 
+_COMPONENT_AMPLIFIER_FEATURE = _descriptor.EnumDescriptor(
+  name='Feature',
+  full_name='chromiumos.config.api.Component.Amplifier.Feature',
+  filename=None,
+  file=DESCRIPTOR,
+  values=[
+    _descriptor.EnumValueDescriptor(
+      name='FEATURE_UNKNOWN', index=0, number=0,
+      serialized_options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='BOOT_TIME_CALIBRATION', index=1, number=1,
+      serialized_options=None,
+      type=None),
+  ],
+  containing_type=None,
+  serialized_options=None,
+  serialized_start=4298,
+  serialized_end=4355,
+)
+_sym_db.RegisterEnumDescriptor(_COMPONENT_AMPLIFIER_FEATURE)
+
 _COMPONENT_BATTERY_TECHNOLOGY = _descriptor.EnumDescriptor(
   name='Technology',
   full_name='chromiumos.config.api.Component.Battery.Technology',
@@ -291,8 +335,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4161,
-  serialized_end=4216,
+  serialized_start=4485,
+  serialized_end=4540,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_BATTERY_TECHNOLOGY)
 
@@ -321,8 +365,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4489,
-  serialized_end=4558,
+  serialized_start=4813,
+  serialized_end=4882,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENT_STORAGE_STORAGETYPE)
 
@@ -360,8 +404,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1527,
-  serialized_end=1560,
+  serialized_start=1606,
+  serialized_end=1639,
 )
 
 _COMPONENT_INTERFACE_I2C = _descriptor.Descriptor(
@@ -397,8 +441,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1576,
-  serialized_end=1614,
+  serialized_start=1655,
+  serialized_end=1693,
 )
 
 _COMPONENT_INTERFACE_USB = _descriptor.Descriptor(
@@ -441,8 +485,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1616,
-  serialized_end=1680,
+  serialized_start=1695,
+  serialized_end=1759,
 )
 
 _COMPONENT_INTERFACE_PCI = _descriptor.Descriptor(
@@ -485,8 +529,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1682,
-  serialized_end=1746,
+  serialized_start=1761,
+  serialized_end=1825,
 )
 
 _COMPONENT_INTERFACE = _descriptor.Descriptor(
@@ -508,8 +552,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1563,
-  serialized_end=1746,
+  serialized_start=1642,
+  serialized_end=1825,
 )
 
 _COMPONENT_SOC_FAMILY = _descriptor.Descriptor(
@@ -545,8 +589,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1911,
-  serialized_end=1998,
+  serialized_start=1990,
+  serialized_end=2077,
 )
 
 _COMPONENT_SOC = _descriptor.Descriptor(
@@ -598,8 +642,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1749,
-  serialized_end=2124,
+  serialized_start=1828,
+  serialized_end=2203,
 )
 
 _COMPONENT_MEMORY_PROFILE = _descriptor.Descriptor(
@@ -642,8 +686,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2224,
-  serialized_end=2336,
+  serialized_start=2303,
+  serialized_end=2415,
 )
 
 _COMPONENT_MEMORY = _descriptor.Descriptor(
@@ -680,8 +724,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2127,
-  serialized_end=2435,
+  serialized_start=2206,
+  serialized_end=2514,
 )
 
 _COMPONENT_BLUETOOTH = _descriptor.Descriptor(
@@ -710,8 +754,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2437,
-  serialized_end=2527,
+  serialized_start=2516,
+  serialized_end=2606,
 )
 
 _COMPONENT_CAMERA = _descriptor.Descriptor(
@@ -766,8 +810,8 @@
       name='interface', full_name='chromiumos.config.api.Component.Camera.interface',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=2530,
-  serialized_end=2933,
+  serialized_start=2609,
+  serialized_end=3012,
 )
 
 _COMPONENT_DISPLAYPANEL_PROPERTIES = _descriptor.Descriptor(
@@ -805,6 +849,13 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='features', full_name='chromiumos.config.api.Component.DisplayPanel.Properties.features', index=4,
+      number=5, type=14, cpp_type=8, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
@@ -817,8 +868,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3050,
-  serialized_end=3150,
+  serialized_start=3130,
+  serialized_end=3303,
 )
 
 _COMPONENT_DISPLAYPANEL = _descriptor.Descriptor(
@@ -847,6 +898,7 @@
   ],
   nested_types=[_COMPONENT_DISPLAYPANEL_PROPERTIES, ],
   enum_types=[
+    _COMPONENT_DISPLAYPANEL_FEATURE,
   ],
   serialized_options=None,
   is_extendable=False,
@@ -854,8 +906,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2936,
-  serialized_end=3150,
+  serialized_start=3015,
+  serialized_end=3344,
 )
 
 _COMPONENT_TOUCH = _descriptor.Descriptor(
@@ -920,8 +972,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3153,
-  serialized_end=3439,
+  serialized_start=3347,
+  serialized_end=3633,
 )
 
 _COMPONENT_WIFI = _descriptor.Descriptor(
@@ -961,8 +1013,8 @@
       name='interface', full_name='chromiumos.config.api.Component.Wifi.interface',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=3442,
-  serialized_end=3770,
+  serialized_start=3636,
+  serialized_end=3964,
 )
 
 _COMPONENT_QUALIFICATION = _descriptor.Descriptor(
@@ -999,8 +1051,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3773,
-  serialized_end=4004,
+  serialized_start=3967,
+  serialized_end=4198,
 )
 
 _COMPONENT_AMPLIFIER = _descriptor.Descriptor(
@@ -1017,11 +1069,19 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='features', full_name='chromiumos.config.api.Component.Amplifier.features', index=1,
+      number=2, type=14, cpp_type=8, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
+    _COMPONENT_AMPLIFIER_FEATURE,
   ],
   serialized_options=None,
   is_extendable=False,
@@ -1029,8 +1089,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4006,
-  serialized_end=4031,
+  serialized_start=4201,
+  serialized_end=4355,
 )
 
 _COMPONENT_AUDIOCODEC = _descriptor.Descriptor(
@@ -1059,8 +1119,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4033,
-  serialized_end=4059,
+  serialized_start=4357,
+  serialized_end=4383,
 )
 
 _COMPONENT_BATTERY = _descriptor.Descriptor(
@@ -1097,8 +1157,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4062,
-  serialized_end=4216,
+  serialized_start=4386,
+  serialized_end=4540,
 )
 
 _COMPONENT_FLASHCHIP = _descriptor.Descriptor(
@@ -1127,8 +1187,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4218,
-  serialized_end=4250,
+  serialized_start=4542,
+  serialized_end=4574,
 )
 
 _COMPONENT_EMBEDDEDCONTROLLER = _descriptor.Descriptor(
@@ -1157,8 +1217,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4252,
-  serialized_end=4293,
+  serialized_start=4576,
+  serialized_end=4617,
 )
 
 _COMPONENT_STORAGE = _descriptor.Descriptor(
@@ -1237,8 +1297,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4296,
-  serialized_end=4558,
+  serialized_start=4620,
+  serialized_end=4882,
 )
 
 _COMPONENT_TPM = _descriptor.Descriptor(
@@ -1274,8 +1334,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4560,
-  serialized_end=4609,
+  serialized_start=4884,
+  serialized_end=4933,
 )
 
 _COMPONENT_STYLUS = _descriptor.Descriptor(
@@ -1314,8 +1374,38 @@
       name='interface', full_name='chromiumos.config.api.Component.Stylus.interface',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=4612,
-  serialized_end=4759,
+  serialized_start=4936,
+  serialized_end=5083,
+)
+
+_COMPONENT_DISPLAYPORTCONVERTER = _descriptor.Descriptor(
+  name='DisplayPortConverter',
+  full_name='chromiumos.config.api.Component.DisplayPortConverter',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='name', full_name='chromiumos.config.api.Component.DisplayPortConverter.name', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=5085,
+  serialized_end=5121,
 )
 
 _COMPONENT = _descriptor.Descriptor(
@@ -1500,10 +1590,17 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='dp_converter', full_name='chromiumos.config.api.Component.dp_converter', index=25,
+      number=26, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
-  nested_types=[_COMPONENT_AVLID, _COMPONENT_INTERFACE, _COMPONENT_SOC, _COMPONENT_MEMORY, _COMPONENT_BLUETOOTH, _COMPONENT_CAMERA, _COMPONENT_DISPLAYPANEL, _COMPONENT_TOUCH, _COMPONENT_WIFI, _COMPONENT_QUALIFICATION, _COMPONENT_AMPLIFIER, _COMPONENT_AUDIOCODEC, _COMPONENT_BATTERY, _COMPONENT_FLASHCHIP, _COMPONENT_EMBEDDEDCONTROLLER, _COMPONENT_STORAGE, _COMPONENT_TPM, _COMPONENT_STYLUS, ],
+  nested_types=[_COMPONENT_AVLID, _COMPONENT_INTERFACE, _COMPONENT_SOC, _COMPONENT_MEMORY, _COMPONENT_BLUETOOTH, _COMPONENT_CAMERA, _COMPONENT_DISPLAYPANEL, _COMPONENT_TOUCH, _COMPONENT_WIFI, _COMPONENT_QUALIFICATION, _COMPONENT_AMPLIFIER, _COMPONENT_AUDIOCODEC, _COMPONENT_BATTERY, _COMPONENT_FLASHCHIP, _COMPONENT_EMBEDDEDCONTROLLER, _COMPONENT_STORAGE, _COMPONENT_TPM, _COMPONENT_STYLUS, _COMPONENT_DISPLAYPORTCONVERTER, ],
   enum_types=[
   ],
   serialized_options=None,
@@ -1516,7 +1613,7 @@
       index=0, containing_type=None, fields=[]),
   ],
   serialized_start=147,
-  serialized_end=4767,
+  serialized_end=5129,
 )
 
 _COMPONENT_AVLID.containing_type = _COMPONENT
@@ -1551,9 +1648,11 @@
 _COMPONENT_CAMERA.oneofs_by_name['interface'].fields.append(
   _COMPONENT_CAMERA.fields_by_name['pci'])
 _COMPONENT_CAMERA.fields_by_name['pci'].containing_oneof = _COMPONENT_CAMERA.oneofs_by_name['interface']
+_COMPONENT_DISPLAYPANEL_PROPERTIES.fields_by_name['features'].enum_type = _COMPONENT_DISPLAYPANEL_FEATURE
 _COMPONENT_DISPLAYPANEL_PROPERTIES.containing_type = _COMPONENT_DISPLAYPANEL
 _COMPONENT_DISPLAYPANEL.fields_by_name['properties'].message_type = _COMPONENT_DISPLAYPANEL_PROPERTIES
 _COMPONENT_DISPLAYPANEL.containing_type = _COMPONENT
+_COMPONENT_DISPLAYPANEL_FEATURE.containing_type = _COMPONENT_DISPLAYPANEL
 _COMPONENT_TOUCH.fields_by_name['type'].enum_type = _COMPONENT_TOUCH_TOUCHTYPE
 _COMPONENT_TOUCH.fields_by_name['usb'].message_type = _COMPONENT_INTERFACE_USB
 _COMPONENT_TOUCH.containing_type = _COMPONENT
@@ -1569,7 +1668,9 @@
 _COMPONENT_QUALIFICATION.fields_by_name['status'].enum_type = _COMPONENT_QUALIFICATION_STATUS
 _COMPONENT_QUALIFICATION.containing_type = _COMPONENT
 _COMPONENT_QUALIFICATION_STATUS.containing_type = _COMPONENT_QUALIFICATION
+_COMPONENT_AMPLIFIER.fields_by_name['features'].enum_type = _COMPONENT_AMPLIFIER_FEATURE
 _COMPONENT_AMPLIFIER.containing_type = _COMPONENT
+_COMPONENT_AMPLIFIER_FEATURE.containing_type = _COMPONENT_AMPLIFIER
 _COMPONENT_AUDIOCODEC.containing_type = _COMPONENT
 _COMPONENT_BATTERY.fields_by_name['technology'].enum_type = _COMPONENT_BATTERY_TECHNOLOGY
 _COMPONENT_BATTERY.containing_type = _COMPONENT
@@ -1589,6 +1690,7 @@
 _COMPONENT_STYLUS.oneofs_by_name['interface'].fields.append(
   _COMPONENT_STYLUS.fields_by_name['i2c'])
 _COMPONENT_STYLUS.fields_by_name['i2c'].containing_oneof = _COMPONENT_STYLUS.oneofs_by_name['interface']
+_COMPONENT_DISPLAYPORTCONVERTER.containing_type = _COMPONENT
 _COMPONENT.fields_by_name['id'].message_type = chromiumos_dot_config_dot_api_dot_component__id__pb2._COMPONENTID
 _COMPONENT.fields_by_name['manufacturer_id'].message_type = chromiumos_dot_config_dot_api_dot_partner__id__pb2._PARTNERID
 _COMPONENT.fields_by_name['avl_id'].message_type = _COMPONENT_AVLID
@@ -1610,6 +1712,7 @@
 _COMPONENT.fields_by_name['usb_host'].message_type = _COMPONENT_INTERFACE_USB
 _COMPONENT.fields_by_name['stylus'].message_type = _COMPONENT_STYLUS
 _COMPONENT.fields_by_name['amplifier'].message_type = _COMPONENT_AMPLIFIER
+_COMPONENT.fields_by_name['dp_converter'].message_type = _COMPONENT_DISPLAYPORTCONVERTER
 _COMPONENT.oneofs_by_name['type'].fields.append(
   _COMPONENT.fields_by_name['soc'])
 _COMPONENT.fields_by_name['soc'].containing_oneof = _COMPONENT.oneofs_by_name['type']
@@ -1664,6 +1767,9 @@
 _COMPONENT.oneofs_by_name['type'].fields.append(
   _COMPONENT.fields_by_name['amplifier'])
 _COMPONENT.fields_by_name['amplifier'].containing_oneof = _COMPONENT.oneofs_by_name['type']
+_COMPONENT.oneofs_by_name['type'].fields.append(
+  _COMPONENT.fields_by_name['dp_converter'])
+_COMPONENT.fields_by_name['dp_converter'].containing_oneof = _COMPONENT.oneofs_by_name['type']
 DESCRIPTOR.message_types_by_name['Component'] = _COMPONENT
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
@@ -1836,6 +1942,13 @@
     # @@protoc_insertion_point(class_scope:chromiumos.config.api.Component.Stylus)
     })
   ,
+
+  'DisplayPortConverter' : _reflection.GeneratedProtocolMessageType('DisplayPortConverter', (_message.Message,), {
+    'DESCRIPTOR' : _COMPONENT_DISPLAYPORTCONVERTER,
+    '__module__' : 'chromiumos.config.api.component_pb2'
+    # @@protoc_insertion_point(class_scope:chromiumos.config.api.Component.DisplayPortConverter)
+    })
+  ,
   'DESCRIPTOR' : _COMPONENT,
   '__module__' : 'chromiumos.config.api.component_pb2'
   # @@protoc_insertion_point(class_scope:chromiumos.config.api.Component)
@@ -1865,6 +1978,7 @@
 _sym_db.RegisterMessage(Component.Storage)
 _sym_db.RegisterMessage(Component.Tpm)
 _sym_db.RegisterMessage(Component.Stylus)
+_sym_db.RegisterMessage(Component.DisplayPortConverter)
 
 
 DESCRIPTOR._options = None
diff --git a/api/gen_sdk/chromiumos/config/api/software/wifi_config_pb2.py b/api/gen_sdk/chromiumos/config/api/software/wifi_config_pb2.py
index 248b140..fb912fb 100644
--- a/api/gen_sdk/chromiumos/config/api/software/wifi_config_pb2.py
+++ b/api/gen_sdk/chromiumos/config/api/software/wifi_config_pb2.py
@@ -18,7 +18,7 @@
   package='chromiumos.config.api.software',
   syntax='proto3',
   serialized_options=b'Z1go.chromium.org/chromiumos/config/go/api/software',
-  serialized_pb=b'\n0chromiumos/config/api/software/wifi_config.proto\x12\x1e\x63hromiumos.config.api.software\"\xa7\x11\n\nWifiConfig\x12P\n\rath10k_config\x18\x01 \x01(\x0b\x32\x37.chromiumos.config.api.software.WifiConfig.Ath10kConfigH\x00\x12N\n\x0crtw88_config\x18\x02 \x01(\x0b\x32\x36.chromiumos.config.api.software.WifiConfig.Rtw88ConfigH\x00\x12N\n\x0cintel_config\x18\x03 \x01(\x0b\x32\x36.chromiumos.config.api.software.WifiConfig.IntelConfigH\x00\x1a\xa6\x02\n\x0c\x41th10kConfig\x12k\n\x17tablet_mode_power_table\x18\x01 \x01(\x0b\x32J.chromiumos.config.api.software.WifiConfig.Ath10kConfig.TransmitPowerChain\x12o\n\x1bnon_tablet_mode_power_table\x18\x02 \x01(\x0b\x32J.chromiumos.config.api.software.WifiConfig.Ath10kConfig.TransmitPowerChain\x1a\x38\n\x12TransmitPowerChain\x12\x10\n\x08limit_2g\x18\x01 \x01(\r\x12\x10\n\x08limit_5g\x18\x02 \x01(\r\x1a\x87\x05\n\x0bRtw88Config\x12j\n\x17tablet_mode_power_table\x18\x01 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.Rtw88Config.TransmitPowerChain\x12n\n\x1bnon_tablet_mode_power_table\x18\x02 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.Rtw88Config.TransmitPowerChain\x12U\n\noffset_fcc\x18\x03 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.Rtw88Config.GeoOffsets\x12T\n\toffset_eu\x18\x04 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.Rtw88Config.GeoOffsets\x12W\n\x0coffset_other\x18\x05 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.Rtw88Config.GeoOffsets\x1a\x62\n\x12TransmitPowerChain\x12\x10\n\x08limit_2g\x18\x01 \x01(\r\x12\x12\n\nlimit_5g_1\x18\x02 \x01(\r\x12\x12\n\nlimit_5g_3\x18\x03 \x01(\r\x12\x12\n\nlimit_5g_4\x18\x04 \x01(\r\x1a\x32\n\nGeoOffsets\x12\x11\n\toffset_2g\x18\x01 \x01(\r\x12\x11\n\toffset_5g\x18\x02 \x01(\r\x1a\xe4\x07\n\x0bIntelConfig\x12l\n\x19tablet_mode_power_table_a\x18\x01 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain\x12l\n\x19tablet_mode_power_table_b\x18\x02 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain\x12p\n\x1dnon_tablet_mode_power_table_a\x18\x03 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain\x12p\n\x1dnon_tablet_mode_power_table_b\x18\x04 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain\x12\x14\n\x0cwgds_version\x18\x05 \x01(\r\x12U\n\noffset_fcc\x18\x06 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets\x12T\n\toffset_eu\x18\x07 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets\x12W\n\x0coffset_other\x18\x08 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets\x1av\n\x12TransmitPowerChain\x12\x10\n\x08limit_2g\x18\x01 \x01(\r\x12\x12\n\nlimit_5g_1\x18\x02 \x01(\r\x12\x12\n\nlimit_5g_2\x18\x03 \x01(\r\x12\x12\n\nlimit_5g_3\x18\x04 \x01(\r\x12\x12\n\nlimit_5g_4\x18\x05 \x01(\r\x1a\x80\x01\n\nGeoOffsets\x12\x0e\n\x06max_2g\x18\x01 \x01(\r\x12\x13\n\x0boffset_2g_a\x18\x02 \x01(\r\x12\x13\n\x0boffset_2g_b\x18\x03 \x01(\r\x12\x0e\n\x06max_5g\x18\x04 \x01(\r\x12\x13\n\x0boffset_5g_a\x18\x05 \x01(\r\x12\x13\n\x0boffset_5g_b\x18\x06 \x01(\rB\r\n\x0bwifi_configB3Z1go.chromium.org/chromiumos/config/go/api/softwareb\x06proto3'
+  serialized_pb=b'\n0chromiumos/config/api/software/wifi_config.proto\x12\x1e\x63hromiumos.config.api.software\"\xc7$\n\nWifiConfig\x12P\n\rath10k_config\x18\x01 \x01(\x0b\x32\x37.chromiumos.config.api.software.WifiConfig.Ath10kConfigH\x00\x12N\n\x0crtw88_config\x18\x02 \x01(\x0b\x32\x36.chromiumos.config.api.software.WifiConfig.Rtw88ConfigH\x00\x12N\n\x0cintel_config\x18\x03 \x01(\x0b\x32\x36.chromiumos.config.api.software.WifiConfig.IntelConfigH\x00\x1a\xa6\x02\n\x0c\x41th10kConfig\x12k\n\x17tablet_mode_power_table\x18\x01 \x01(\x0b\x32J.chromiumos.config.api.software.WifiConfig.Ath10kConfig.TransmitPowerChain\x12o\n\x1bnon_tablet_mode_power_table\x18\x02 \x01(\x0b\x32J.chromiumos.config.api.software.WifiConfig.Ath10kConfig.TransmitPowerChain\x1a\x38\n\x12TransmitPowerChain\x12\x10\n\x08limit_2g\x18\x01 \x01(\r\x12\x10\n\x08limit_5g\x18\x02 \x01(\r\x1a\x87\x05\n\x0bRtw88Config\x12j\n\x17tablet_mode_power_table\x18\x01 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.Rtw88Config.TransmitPowerChain\x12n\n\x1bnon_tablet_mode_power_table\x18\x02 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.Rtw88Config.TransmitPowerChain\x12U\n\noffset_fcc\x18\x03 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.Rtw88Config.GeoOffsets\x12T\n\toffset_eu\x18\x04 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.Rtw88Config.GeoOffsets\x12W\n\x0coffset_other\x18\x05 \x01(\x0b\x32\x41.chromiumos.config.api.software.WifiConfig.Rtw88Config.GeoOffsets\x1a\x62\n\x12TransmitPowerChain\x12\x10\n\x08limit_2g\x18\x01 \x01(\r\x12\x12\n\nlimit_5g_1\x18\x02 \x01(\r\x12\x12\n\nlimit_5g_3\x18\x03 \x01(\r\x12\x12\n\nlimit_5g_4\x18\x04 \x01(\r\x1a\x32\n\nGeoOffsets\x12\x11\n\toffset_2g\x18\x01 \x01(\r\x12\x11\n\toffset_5g\x18\x02 \x01(\r\x1a\x84\x1b\n\x0bIntelConfig\x12R\n\tsar_table\x18\x01 \x01(\x0b\x32?.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable\x12R\n\nwgds_table\x18\x02 \x01(\x0b\x32>.chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets\x12O\n\tant_table\x18\x03 \x01(\x0b\x32<.chromiumos.config.api.software.WifiConfig.IntelConfig.Gains\x12R\n\nwtas_table\x18\x04 \x01(\x0b\x32>.chromiumos.config.api.software.WifiConfig.IntelConfig.Average\x12G\n\x03\x64sm\x18\x05 \x01(\x0b\x32:.chromiumos.config.api.software.WifiConfig.IntelConfig.DSM\x1a\xee\t\n\x08SarTable\x12\x19\n\x11sar_table_version\x18\x01 \x01(\r\x12u\n\x19tablet_mode_power_table_a\x18\x03 \x01(\x0b\x32R.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain\x12u\n\x19tablet_mode_power_table_b\x18\x04 \x01(\x0b\x32R.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain\x12y\n\x1dnon_tablet_mode_power_table_a\x18\x05 \x01(\x0b\x32R.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain\x12y\n\x1dnon_tablet_mode_power_table_b\x18\x06 \x01(\x0b\x32R.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain\x12y\n\x1d\x63\x64\x62_tablet_mode_power_table_a\x18\x07 \x01(\x0b\x32R.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain\x12y\n\x1d\x63\x64\x62_tablet_mode_power_table_b\x18\x08 \x01(\x0b\x32R.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain\x12}\n!cdb_non_tablet_mode_power_table_a\x18\t \x01(\x0b\x32R.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain\x12}\n!cdb_non_tablet_mode_power_table_b\x18\n \x01(\x0b\x32R.chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain\x1a\xee\x01\n\x12TransmitPowerChain\x12\x10\n\x08limit_2g\x18\x01 \x01(\r\x12\x12\n\nlimit_5g_1\x18\x02 \x01(\r\x12\x12\n\nlimit_5g_2\x18\x03 \x01(\r\x12\x12\n\nlimit_5g_3\x18\x04 \x01(\r\x12\x12\n\nlimit_5g_4\x18\x05 \x01(\r\x12\x12\n\nlimit_5g_5\x18\x06 \x01(\r\x12\x12\n\nlimit_6g_1\x18\x07 \x01(\r\x12\x12\n\nlimit_6g_2\x18\x08 \x01(\r\x12\x12\n\nlimit_6g_3\x18\t \x01(\r\x12\x12\n\nlimit_6g_4\x18\n \x01(\r\x12\x12\n\nlimit_6g_5\x18\x0b \x01(\r\x1a\xfa\x03\n\x07Offsets\x12\x14\n\x0cwgds_version\x18\x01 \x01(\r\x12]\n\noffset_fcc\x18\x02 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets\x12\\\n\toffset_eu\x18\x03 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets\x12_\n\x0coffset_other\x18\x04 \x01(\x0b\x32I.chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets\x1a\xba\x01\n\nGeoOffsets\x12\x0e\n\x06max_2g\x18\x01 \x01(\r\x12\x13\n\x0boffset_2g_a\x18\x02 \x01(\r\x12\x13\n\x0boffset_2g_b\x18\x03 \x01(\r\x12\x0e\n\x06max_5g\x18\x04 \x01(\r\x12\x13\n\x0boffset_5g_a\x18\x05 \x01(\r\x12\x13\n\x0boffset_5g_b\x18\x06 \x01(\r\x12\x0e\n\x06max_6g\x18\x07 \x01(\r\x12\x13\n\x0boffset_6g_a\x18\x08 \x01(\r\x12\x13\n\x0boffset_6g_b\x18\t \x01(\r\x1a\x8c\x04\n\x05Gains\x12\x19\n\x11\x61nt_table_version\x18\x01 \x01(\r\x12\x15\n\rant_mode_ppag\x18\x02 \x01(\r\x12\x62\n\x10\x61nt_gain_table_a\x18\x03 \x01(\x0b\x32H.chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain\x12\x62\n\x10\x61nt_gain_table_b\x18\x04 \x01(\x0b\x32H.chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain\x1a\x88\x02\n\x0b\x41ntennaGain\x12\x13\n\x0b\x61nt_gain_2g\x18\x01 \x01(\r\x12\x15\n\rant_gain_5g_1\x18\x02 \x01(\r\x12\x15\n\rant_gain_5g_2\x18\x03 \x01(\r\x12\x15\n\rant_gain_5g_3\x18\x04 \x01(\r\x12\x15\n\rant_gain_5g_4\x18\x05 \x01(\r\x12\x15\n\rant_gain_5g_5\x18\x06 \x01(\r\x12\x15\n\rant_gain_6g_1\x18\x07 \x01(\r\x12\x15\n\rant_gain_6g_2\x18\x08 \x01(\r\x12\x15\n\rant_gain_6g_3\x18\t \x01(\r\x12\x15\n\rant_gain_6g_4\x18\n \x01(\r\x12\x15\n\rant_gain_6g_5\x18\x0b \x01(\r\x1a\x87\x04\n\x07\x41verage\x12\x17\n\x0fsar_avg_version\x18\x01 \x01(\r\x12\x15\n\rtas_selection\x18\x02 \x01(\r\x12\x15\n\rtas_list_size\x18\x03 \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_1\x18\x04 \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_2\x18\x05 \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_3\x18\x06 \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_4\x18\x07 \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_5\x18\x08 \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_6\x18\t \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_7\x18\n \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_8\x18\x0b \x01(\r\x12\x19\n\x11\x64\x65ny_list_entry_9\x18\x0c \x01(\r\x12\x1a\n\x12\x64\x65ny_list_entry_10\x18\r \x01(\r\x12\x1a\n\x12\x64\x65ny_list_entry_11\x18\x0e \x01(\r\x12\x1a\n\x12\x64\x65ny_list_entry_12\x18\x0f \x01(\r\x12\x1a\n\x12\x64\x65ny_list_entry_13\x18\x10 \x01(\r\x12\x1a\n\x12\x64\x65ny_list_entry_14\x18\x11 \x01(\r\x12\x1a\n\x12\x64\x65ny_list_entry_15\x18\x12 \x01(\r\x12\x1a\n\x12\x64\x65ny_list_entry_16\x18\x13 \x01(\r\x1a\xd7\x01\n\x03\x44SM\x12#\n\x1b\x64isable_active_sdr_channels\x18\x02 \x01(\x03\x12!\n\x19support_indonesia_5g_band\x18\x03 \x01(\x03\x12\x1f\n\x17support_ultra_high_band\x18\x04 \x01(\x03\x12!\n\x19regulatory_configurations\x18\x05 \x01(\x03\x12\x1b\n\x13uart_configurations\x18\x06 \x01(\x03\x12\x17\n\x0f\x65nablement_11ax\x18\x07 \x01(\x03\x12\x0e\n\x06unii_4\x18\x08 \x01(\x03\x42\r\n\x0bwifi_configB3Z1go.chromium.org/chromiumos/config/go/api/softwareb\x06proto3'
 )
 
 
@@ -244,113 +244,90 @@
   serialized_end=1286,
 )
 
-_WIFICONFIG_INTELCONFIG_TRANSMITPOWERCHAIN = _descriptor.Descriptor(
+_WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN = _descriptor.Descriptor(
   name='TransmitPowerChain',
-  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain',
+  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain',
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
   fields=[
     _descriptor.FieldDescriptor(
-      name='limit_2g', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain.limit_2g', index=0,
+      name='limit_2g', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_2g', index=0,
       number=1, type=13, cpp_type=3, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='limit_5g_1', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain.limit_5g_1', index=1,
+      name='limit_5g_1', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_5g_1', index=1,
       number=2, type=13, cpp_type=3, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='limit_5g_2', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain.limit_5g_2', index=2,
+      name='limit_5g_2', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_5g_2', index=2,
       number=3, type=13, cpp_type=3, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='limit_5g_3', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain.limit_5g_3', index=3,
+      name='limit_5g_3', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_5g_3', index=3,
       number=4, type=13, cpp_type=3, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='limit_5g_4', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain.limit_5g_4', index=4,
-      number=5, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=2036,
-  serialized_end=2154,
-)
-
-_WIFICONFIG_INTELCONFIG_GEOOFFSETS = _descriptor.Descriptor(
-  name='GeoOffsets',
-  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='max_2g', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets.max_2g', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='offset_2g_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets.offset_2g_a', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='offset_2g_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets.offset_2g_b', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='max_5g', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets.max_5g', index=3,
-      number=4, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='offset_5g_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets.offset_5g_a', index=4,
+      name='limit_5g_4', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_5g_4', index=4,
       number=5, type=13, cpp_type=3, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='offset_5g_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets.offset_5g_b', index=5,
+      name='limit_5g_5', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_5g_5', index=5,
       number=6, type=13, cpp_type=3, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='limit_6g_1', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_6g_1', index=6,
+      number=7, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='limit_6g_2', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_6g_2', index=7,
+      number=8, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='limit_6g_3', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_6g_3', index=8,
+      number=9, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='limit_6g_4', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_6g_4', index=9,
+      number=10, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='limit_6g_5', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain.limit_6g_5', index=10,
+      number=11, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
@@ -363,8 +340,610 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2157,
-  serialized_end=2285,
+  serialized_start=2735,
+  serialized_end=2973,
+)
+
+_WIFICONFIG_INTELCONFIG_SARTABLE = _descriptor.Descriptor(
+  name='SarTable',
+  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='sar_table_version', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.sar_table_version', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='tablet_mode_power_table_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.tablet_mode_power_table_a', index=1,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='tablet_mode_power_table_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.tablet_mode_power_table_b', index=2,
+      number=4, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='non_tablet_mode_power_table_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.non_tablet_mode_power_table_a', index=3,
+      number=5, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='non_tablet_mode_power_table_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.non_tablet_mode_power_table_b', index=4,
+      number=6, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='cdb_tablet_mode_power_table_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.cdb_tablet_mode_power_table_a', index=5,
+      number=7, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='cdb_tablet_mode_power_table_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.cdb_tablet_mode_power_table_b', index=6,
+      number=8, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='cdb_non_tablet_mode_power_table_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.cdb_non_tablet_mode_power_table_a', index=7,
+      number=9, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='cdb_non_tablet_mode_power_table_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.cdb_non_tablet_mode_power_table_b', index=8,
+      number=10, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[_WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN, ],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1711,
+  serialized_end=2973,
+)
+
+_WIFICONFIG_INTELCONFIG_OFFSETS_GEOOFFSETS = _descriptor.Descriptor(
+  name='GeoOffsets',
+  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='max_2g', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.max_2g', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='offset_2g_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.offset_2g_a', index=1,
+      number=2, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='offset_2g_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.offset_2g_b', index=2,
+      number=3, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='max_5g', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.max_5g', index=3,
+      number=4, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='offset_5g_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.offset_5g_a', index=4,
+      number=5, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='offset_5g_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.offset_5g_b', index=5,
+      number=6, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='max_6g', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.max_6g', index=6,
+      number=7, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='offset_6g_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.offset_6g_a', index=7,
+      number=8, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='offset_6g_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets.offset_6g_b', index=8,
+      number=9, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=3296,
+  serialized_end=3482,
+)
+
+_WIFICONFIG_INTELCONFIG_OFFSETS = _descriptor.Descriptor(
+  name='Offsets',
+  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='wgds_version', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.wgds_version', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='offset_fcc', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.offset_fcc', index=1,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='offset_eu', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.offset_eu', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='offset_other', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.offset_other', index=3,
+      number=4, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[_WIFICONFIG_INTELCONFIG_OFFSETS_GEOOFFSETS, ],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=2976,
+  serialized_end=3482,
+)
+
+_WIFICONFIG_INTELCONFIG_GAINS_ANTENNAGAIN = _descriptor.Descriptor(
+  name='AntennaGain',
+  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='ant_gain_2g', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_2g', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_5g_1', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_5g_1', index=1,
+      number=2, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_5g_2', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_5g_2', index=2,
+      number=3, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_5g_3', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_5g_3', index=3,
+      number=4, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_5g_4', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_5g_4', index=4,
+      number=5, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_5g_5', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_5g_5', index=5,
+      number=6, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_6g_1', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_6g_1', index=6,
+      number=7, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_6g_2', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_6g_2', index=7,
+      number=8, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_6g_3', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_6g_3', index=8,
+      number=9, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_6g_4', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_6g_4', index=9,
+      number=10, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_6g_5', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain.ant_gain_6g_5', index=10,
+      number=11, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=3745,
+  serialized_end=4009,
+)
+
+_WIFICONFIG_INTELCONFIG_GAINS = _descriptor.Descriptor(
+  name='Gains',
+  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='ant_table_version', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.ant_table_version', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='ant_mode_ppag', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.ant_mode_ppag', index=1,
+      number=2, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_table_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.ant_gain_table_a', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='ant_gain_table_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.ant_gain_table_b', index=3,
+      number=4, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[_WIFICONFIG_INTELCONFIG_GAINS_ANTENNAGAIN, ],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=3485,
+  serialized_end=4009,
+)
+
+_WIFICONFIG_INTELCONFIG_AVERAGE = _descriptor.Descriptor(
+  name='Average',
+  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='sar_avg_version', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.sar_avg_version', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='tas_selection', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.tas_selection', index=1,
+      number=2, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='tas_list_size', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.tas_list_size', index=2,
+      number=3, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_1', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_1', index=3,
+      number=4, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_2', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_2', index=4,
+      number=5, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_3', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_3', index=5,
+      number=6, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_4', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_4', index=6,
+      number=7, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_5', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_5', index=7,
+      number=8, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_6', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_6', index=8,
+      number=9, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_7', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_7', index=9,
+      number=10, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_8', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_8', index=10,
+      number=11, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_9', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_9', index=11,
+      number=12, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_10', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_10', index=12,
+      number=13, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_11', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_11', index=13,
+      number=14, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_12', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_12', index=14,
+      number=15, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_13', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_13', index=15,
+      number=16, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_14', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_14', index=16,
+      number=17, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_15', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_15', index=17,
+      number=18, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='deny_list_entry_16', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.Average.deny_list_entry_16', index=18,
+      number=19, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=4012,
+  serialized_end=4531,
+)
+
+_WIFICONFIG_INTELCONFIG_DSM = _descriptor.Descriptor(
+  name='DSM',
+  full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.DSM',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='disable_active_sdr_channels', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.DSM.disable_active_sdr_channels', index=0,
+      number=2, type=3, cpp_type=2, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='support_indonesia_5g_band', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.DSM.support_indonesia_5g_band', index=1,
+      number=3, type=3, cpp_type=2, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='support_ultra_high_band', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.DSM.support_ultra_high_band', index=2,
+      number=4, type=3, cpp_type=2, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='regulatory_configurations', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.DSM.regulatory_configurations', index=3,
+      number=5, type=3, cpp_type=2, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='uart_configurations', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.DSM.uart_configurations', index=4,
+      number=6, type=3, cpp_type=2, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='enablement_11ax', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.DSM.enablement_11ax', index=5,
+      number=7, type=3, cpp_type=2, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='unii_4', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.DSM.unii_4', index=6,
+      number=8, type=3, cpp_type=2, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=4534,
+  serialized_end=4749,
 )
 
 _WIFICONFIG_INTELCONFIG = _descriptor.Descriptor(
@@ -375,57 +954,36 @@
   containing_type=None,
   fields=[
     _descriptor.FieldDescriptor(
-      name='tablet_mode_power_table_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.tablet_mode_power_table_a', index=0,
+      name='sar_table', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.sar_table', index=0,
       number=1, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='tablet_mode_power_table_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.tablet_mode_power_table_b', index=1,
+      name='wgds_table', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.wgds_table', index=1,
       number=2, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='non_tablet_mode_power_table_a', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.non_tablet_mode_power_table_a', index=2,
+      name='ant_table', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.ant_table', index=2,
       number=3, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='non_tablet_mode_power_table_b', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.non_tablet_mode_power_table_b', index=3,
+      name='wtas_table', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.wtas_table', index=3,
       number=4, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='wgds_version', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.wgds_version', index=4,
-      number=5, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='offset_fcc', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.offset_fcc', index=5,
-      number=6, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='offset_eu', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.offset_eu', index=6,
-      number=7, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='offset_other', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.offset_other', index=7,
-      number=8, type=11, cpp_type=10, label=1,
+      name='dsm', full_name='chromiumos.config.api.software.WifiConfig.IntelConfig.dsm', index=4,
+      number=5, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
@@ -433,7 +991,7 @@
   ],
   extensions=[
   ],
-  nested_types=[_WIFICONFIG_INTELCONFIG_TRANSMITPOWERCHAIN, _WIFICONFIG_INTELCONFIG_GEOOFFSETS, ],
+  nested_types=[_WIFICONFIG_INTELCONFIG_SARTABLE, _WIFICONFIG_INTELCONFIG_OFFSETS, _WIFICONFIG_INTELCONFIG_GAINS, _WIFICONFIG_INTELCONFIG_AVERAGE, _WIFICONFIG_INTELCONFIG_DSM, ],
   enum_types=[
   ],
   serialized_options=None,
@@ -443,7 +1001,7 @@
   oneofs=[
   ],
   serialized_start=1289,
-  serialized_end=2285,
+  serialized_end=4749,
 )
 
 _WIFICONFIG = _descriptor.Descriptor(
@@ -490,7 +1048,7 @@
       index=0, containing_type=None, fields=[]),
   ],
   serialized_start=85,
-  serialized_end=2300,
+  serialized_end=4764,
 )
 
 _WIFICONFIG_ATH10KCONFIG_TRANSMITPOWERCHAIN.containing_type = _WIFICONFIG_ATH10KCONFIG
@@ -505,15 +1063,32 @@
 _WIFICONFIG_RTW88CONFIG.fields_by_name['offset_eu'].message_type = _WIFICONFIG_RTW88CONFIG_GEOOFFSETS
 _WIFICONFIG_RTW88CONFIG.fields_by_name['offset_other'].message_type = _WIFICONFIG_RTW88CONFIG_GEOOFFSETS
 _WIFICONFIG_RTW88CONFIG.containing_type = _WIFICONFIG
-_WIFICONFIG_INTELCONFIG_TRANSMITPOWERCHAIN.containing_type = _WIFICONFIG_INTELCONFIG
-_WIFICONFIG_INTELCONFIG_GEOOFFSETS.containing_type = _WIFICONFIG_INTELCONFIG
-_WIFICONFIG_INTELCONFIG.fields_by_name['tablet_mode_power_table_a'].message_type = _WIFICONFIG_INTELCONFIG_TRANSMITPOWERCHAIN
-_WIFICONFIG_INTELCONFIG.fields_by_name['tablet_mode_power_table_b'].message_type = _WIFICONFIG_INTELCONFIG_TRANSMITPOWERCHAIN
-_WIFICONFIG_INTELCONFIG.fields_by_name['non_tablet_mode_power_table_a'].message_type = _WIFICONFIG_INTELCONFIG_TRANSMITPOWERCHAIN
-_WIFICONFIG_INTELCONFIG.fields_by_name['non_tablet_mode_power_table_b'].message_type = _WIFICONFIG_INTELCONFIG_TRANSMITPOWERCHAIN
-_WIFICONFIG_INTELCONFIG.fields_by_name['offset_fcc'].message_type = _WIFICONFIG_INTELCONFIG_GEOOFFSETS
-_WIFICONFIG_INTELCONFIG.fields_by_name['offset_eu'].message_type = _WIFICONFIG_INTELCONFIG_GEOOFFSETS
-_WIFICONFIG_INTELCONFIG.fields_by_name['offset_other'].message_type = _WIFICONFIG_INTELCONFIG_GEOOFFSETS
+_WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN.containing_type = _WIFICONFIG_INTELCONFIG_SARTABLE
+_WIFICONFIG_INTELCONFIG_SARTABLE.fields_by_name['tablet_mode_power_table_a'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN
+_WIFICONFIG_INTELCONFIG_SARTABLE.fields_by_name['tablet_mode_power_table_b'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN
+_WIFICONFIG_INTELCONFIG_SARTABLE.fields_by_name['non_tablet_mode_power_table_a'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN
+_WIFICONFIG_INTELCONFIG_SARTABLE.fields_by_name['non_tablet_mode_power_table_b'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN
+_WIFICONFIG_INTELCONFIG_SARTABLE.fields_by_name['cdb_tablet_mode_power_table_a'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN
+_WIFICONFIG_INTELCONFIG_SARTABLE.fields_by_name['cdb_tablet_mode_power_table_b'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN
+_WIFICONFIG_INTELCONFIG_SARTABLE.fields_by_name['cdb_non_tablet_mode_power_table_a'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN
+_WIFICONFIG_INTELCONFIG_SARTABLE.fields_by_name['cdb_non_tablet_mode_power_table_b'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN
+_WIFICONFIG_INTELCONFIG_SARTABLE.containing_type = _WIFICONFIG_INTELCONFIG
+_WIFICONFIG_INTELCONFIG_OFFSETS_GEOOFFSETS.containing_type = _WIFICONFIG_INTELCONFIG_OFFSETS
+_WIFICONFIG_INTELCONFIG_OFFSETS.fields_by_name['offset_fcc'].message_type = _WIFICONFIG_INTELCONFIG_OFFSETS_GEOOFFSETS
+_WIFICONFIG_INTELCONFIG_OFFSETS.fields_by_name['offset_eu'].message_type = _WIFICONFIG_INTELCONFIG_OFFSETS_GEOOFFSETS
+_WIFICONFIG_INTELCONFIG_OFFSETS.fields_by_name['offset_other'].message_type = _WIFICONFIG_INTELCONFIG_OFFSETS_GEOOFFSETS
+_WIFICONFIG_INTELCONFIG_OFFSETS.containing_type = _WIFICONFIG_INTELCONFIG
+_WIFICONFIG_INTELCONFIG_GAINS_ANTENNAGAIN.containing_type = _WIFICONFIG_INTELCONFIG_GAINS
+_WIFICONFIG_INTELCONFIG_GAINS.fields_by_name['ant_gain_table_a'].message_type = _WIFICONFIG_INTELCONFIG_GAINS_ANTENNAGAIN
+_WIFICONFIG_INTELCONFIG_GAINS.fields_by_name['ant_gain_table_b'].message_type = _WIFICONFIG_INTELCONFIG_GAINS_ANTENNAGAIN
+_WIFICONFIG_INTELCONFIG_GAINS.containing_type = _WIFICONFIG_INTELCONFIG
+_WIFICONFIG_INTELCONFIG_AVERAGE.containing_type = _WIFICONFIG_INTELCONFIG
+_WIFICONFIG_INTELCONFIG_DSM.containing_type = _WIFICONFIG_INTELCONFIG
+_WIFICONFIG_INTELCONFIG.fields_by_name['sar_table'].message_type = _WIFICONFIG_INTELCONFIG_SARTABLE
+_WIFICONFIG_INTELCONFIG.fields_by_name['wgds_table'].message_type = _WIFICONFIG_INTELCONFIG_OFFSETS
+_WIFICONFIG_INTELCONFIG.fields_by_name['ant_table'].message_type = _WIFICONFIG_INTELCONFIG_GAINS
+_WIFICONFIG_INTELCONFIG.fields_by_name['wtas_table'].message_type = _WIFICONFIG_INTELCONFIG_AVERAGE
+_WIFICONFIG_INTELCONFIG.fields_by_name['dsm'].message_type = _WIFICONFIG_INTELCONFIG_DSM
 _WIFICONFIG_INTELCONFIG.containing_type = _WIFICONFIG
 _WIFICONFIG.fields_by_name['ath10k_config'].message_type = _WIFICONFIG_ATH10KCONFIG
 _WIFICONFIG.fields_by_name['rtw88_config'].message_type = _WIFICONFIG_RTW88CONFIG
@@ -569,17 +1144,59 @@
 
   'IntelConfig' : _reflection.GeneratedProtocolMessageType('IntelConfig', (_message.Message,), {
 
-    'TransmitPowerChain' : _reflection.GeneratedProtocolMessageType('TransmitPowerChain', (_message.Message,), {
-      'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_TRANSMITPOWERCHAIN,
+    'SarTable' : _reflection.GeneratedProtocolMessageType('SarTable', (_message.Message,), {
+
+      'TransmitPowerChain' : _reflection.GeneratedProtocolMessageType('TransmitPowerChain', (_message.Message,), {
+        'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_SARTABLE_TRANSMITPOWERCHAIN,
+        '__module__' : 'chromiumos.config.api.software.wifi_config_pb2'
+        # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable.TransmitPowerChain)
+        })
+      ,
+      'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_SARTABLE,
       '__module__' : 'chromiumos.config.api.software.wifi_config_pb2'
-      # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.TransmitPowerChain)
+      # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.SarTable)
       })
     ,
 
-    'GeoOffsets' : _reflection.GeneratedProtocolMessageType('GeoOffsets', (_message.Message,), {
-      'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_GEOOFFSETS,
+    'Offsets' : _reflection.GeneratedProtocolMessageType('Offsets', (_message.Message,), {
+
+      'GeoOffsets' : _reflection.GeneratedProtocolMessageType('GeoOffsets', (_message.Message,), {
+        'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_OFFSETS_GEOOFFSETS,
+        '__module__' : 'chromiumos.config.api.software.wifi_config_pb2'
+        # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets.GeoOffsets)
+        })
+      ,
+      'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_OFFSETS,
       '__module__' : 'chromiumos.config.api.software.wifi_config_pb2'
-      # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.GeoOffsets)
+      # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.Offsets)
+      })
+    ,
+
+    'Gains' : _reflection.GeneratedProtocolMessageType('Gains', (_message.Message,), {
+
+      'AntennaGain' : _reflection.GeneratedProtocolMessageType('AntennaGain', (_message.Message,), {
+        'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_GAINS_ANTENNAGAIN,
+        '__module__' : 'chromiumos.config.api.software.wifi_config_pb2'
+        # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.Gains.AntennaGain)
+        })
+      ,
+      'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_GAINS,
+      '__module__' : 'chromiumos.config.api.software.wifi_config_pb2'
+      # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.Gains)
+      })
+    ,
+
+    'Average' : _reflection.GeneratedProtocolMessageType('Average', (_message.Message,), {
+      'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_AVERAGE,
+      '__module__' : 'chromiumos.config.api.software.wifi_config_pb2'
+      # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.Average)
+      })
+    ,
+
+    'DSM' : _reflection.GeneratedProtocolMessageType('DSM', (_message.Message,), {
+      'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG_DSM,
+      '__module__' : 'chromiumos.config.api.software.wifi_config_pb2'
+      # @@protoc_insertion_point(class_scope:chromiumos.config.api.software.WifiConfig.IntelConfig.DSM)
       })
     ,
     'DESCRIPTOR' : _WIFICONFIG_INTELCONFIG,
@@ -598,8 +1215,14 @@
 _sym_db.RegisterMessage(WifiConfig.Rtw88Config.TransmitPowerChain)
 _sym_db.RegisterMessage(WifiConfig.Rtw88Config.GeoOffsets)
 _sym_db.RegisterMessage(WifiConfig.IntelConfig)
-_sym_db.RegisterMessage(WifiConfig.IntelConfig.TransmitPowerChain)
-_sym_db.RegisterMessage(WifiConfig.IntelConfig.GeoOffsets)
+_sym_db.RegisterMessage(WifiConfig.IntelConfig.SarTable)
+_sym_db.RegisterMessage(WifiConfig.IntelConfig.SarTable.TransmitPowerChain)
+_sym_db.RegisterMessage(WifiConfig.IntelConfig.Offsets)
+_sym_db.RegisterMessage(WifiConfig.IntelConfig.Offsets.GeoOffsets)
+_sym_db.RegisterMessage(WifiConfig.IntelConfig.Gains)
+_sym_db.RegisterMessage(WifiConfig.IntelConfig.Gains.AntennaGain)
+_sym_db.RegisterMessage(WifiConfig.IntelConfig.Average)
+_sym_db.RegisterMessage(WifiConfig.IntelConfig.DSM)
 
 
 DESCRIPTOR._options = None
diff --git a/api/gen_sdk/chromiumos/config/api/test/tls/commontls_pb2.py b/api/gen_sdk/chromiumos/config/api/test/tls/commontls_pb2.py
index 300ebba..b177c6f 100644
--- a/api/gen_sdk/chromiumos/config/api/test/tls/commontls_pb2.py
+++ b/api/gen_sdk/chromiumos/config/api/test/tls/commontls_pb2.py
@@ -21,7 +21,7 @@
   package='chromiumos.config.api.test.tls',
   syntax='proto3',
   serialized_options=b'Z1go.chromium.org/chromiumos/config/go/api/test/tls',
-  serialized_pb=b'\n.chromiumos/config/api/test/tls/commontls.proto\x12\x1e\x63hromiumos.config.api.test.tls\x1a\x1bgoogle/protobuf/empty.proto\x1aHchromiumos/config/api/test/tls/dependencies/longrunning/operations.proto\"\xc3\x01\n\x15\x45xecDutCommandRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07\x63ommand\x18\x02 \x01(\t\x12\x0c\n\x04\x61rgs\x18\x03 \x03(\t\x12\r\n\x05stdin\x18\x04 \x01(\x0c\x12\x36\n\x06stdout\x18\x05 \x01(\x0e\x32&.chromiumos.config.api.test.tls.Output\x12\x36\n\x06stderr\x18\x06 \x01(\x0e\x32&.chromiumos.config.api.test.tls.Output\"\xe2\x01\n\x16\x45xecDutCommandResponse\x12R\n\texit_info\x18\x01 \x01(\x0b\x32?.chromiumos.config.api.test.tls.ExecDutCommandResponse.ExitInfo\x12\x0e\n\x06stdout\x18\x02 \x01(\x0c\x12\x0e\n\x06stderr\x18\x03 \x01(\x0c\x1aT\n\x08\x45xitInfo\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x10\n\x08signaled\x18\x02 \x01(\x08\x12\x0f\n\x07started\x18\x03 \x01(\x08\x12\x15\n\rerror_message\x18\x04 \x01(\t\"\x99\x03\n\x13ProvisionDutRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12T\n\x05image\x18\x02 \x01(\x0b\x32\x41.chromiumos.config.api.test.tls.ProvisionDutRequest.ChromeOSImageB\x02\x18\x01\x12N\n\tdlc_specs\x18\x03 \x03(\x0b\x32;.chromiumos.config.api.test.tls.ProvisionDutRequest.DLCSpec\x12\x19\n\x11preserve_stateful\x18\x04 \x01(\x08\x12\x43\n\x0ctarget_build\x18\x05 \x01(\x0b\x32-.chromiumos.config.api.test.tls.ChromeOsImage\x12\x1a\n\x12\x66orce_provision_os\x18\x06 \x01(\x08\x1a;\n\rChromeOSImage\x12\x18\n\x0egs_path_prefix\x18\x01 \x01(\tH\x00:\x02\x18\x01\x42\x0c\n\npath_oneof\x1a\x15\n\x07\x44LCSpec\x12\n\n\x02id\x18\x01 \x01(\t\"\xf9\x01\n\x14ProvisionDutResponse\"\xe0\x01\n\x06Reason\x12\x1a\n\x16REASON_INVALID_REQUEST\x10\x00\x12(\n$REASON_DUT_UNREACHABLE_PRE_PROVISION\x10\x01\x12#\n\x1fREASON_DOWNLOADING_IMAGE_FAILED\x10\x02\x12 \n\x1cREASON_PROVISIONING_TIMEDOUT\x10\x03\x12\x1e\n\x1aREASON_PROVISIONING_FAILED\x10\x04\x12)\n%REASON_DUT_UNREACHABLE_POST_PROVISION\x10\x05\"\x16\n\x14ProvisionDutMetadata\"\xb0\x01\n\x16ProvisionLacrosRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12Q\n\x05image\x18\x02 \x01(\x0b\x32\x42.chromiumos.config.api.test.tls.ProvisionLacrosRequest.LacrosImage\x1a\x35\n\x0bLacrosImage\x12\x18\n\x0egs_path_prefix\x18\x01 \x01(\tH\x00\x42\x0c\n\npath_oneof\"\xd1\x01\n\x17ProvisionLacrosResponse\"\xb5\x01\n\x06Reason\x12\x1a\n\x16REASON_INVALID_REQUEST\x10\x00\x12(\n$REASON_DUT_UNREACHABLE_PRE_PROVISION\x10\x01\x12#\n\x1fREASON_DOWNLOADING_IMAGE_FAILED\x10\x02\x12 \n\x1cREASON_PROVISIONING_TIMEDOUT\x10\x03\x12\x1e\n\x1aREASON_PROVISIONING_FAILED\x10\x04\"\x19\n\x17ProvisionLacrosMetadata\"\xa7\x01\n\x13ProvisionAshRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12M\n\x06\x62undle\x18\x02 \x01(\x0b\x32=.chromiumos.config.api.test.tls.ProvisionAshRequest.AshBundle\x1a\x33\n\tAshBundle\x12\x18\n\x0egs_bundle_path\x18\x01 \x01(\tH\x00\x42\x0c\n\npath_oneof\"\xcf\x01\n\x14ProvisionAshResponse\"\xb6\x01\n\x06Reason\x12\x1a\n\x16REASON_INVALID_REQUEST\x10\x00\x12(\n$REASON_DUT_UNREACHABLE_PRE_PROVISION\x10\x01\x12$\n REASON_DOWNLOADING_BUNDLE_FAILED\x10\x02\x12 \n\x1cREASON_PROVISIONING_TIMEDOUT\x10\x03\x12\x1e\n\x1aREASON_PROVISIONING_FAILED\x10\x04\"\x16\n\x14ProvisionAshMetadata\"6\n\x13\x46\x65tchCrashesRequest\x12\x0b\n\x03\x64ut\x18\x01 \x01(\t\x12\x12\n\nfetch_core\x18\x02 \x01(\x08\"\xb7\x01\n\x14\x46\x65tchCrashesResponse\x12\x10\n\x08\x63rash_id\x18\x01 \x01(\x03\x12:\n\x05\x63rash\x18\x02 \x01(\x0b\x32).chromiumos.config.api.test.tls.CrashInfoH\x00\x12\x39\n\x04\x62lob\x18\x03 \x01(\x0b\x32).chromiumos.config.api.test.tls.CrashBlobH\x00\x12\x0e\n\x04\x63ore\x18\x04 \x01(\x0cH\x00\x42\x06\n\x04\x64\x61ta\"\xbe\x01\n\tCrashInfo\x12\x11\n\texec_name\x18\x01 \x01(\t\x12\x0c\n\x04prod\x18\x02 \x01(\t\x12\x0b\n\x03ver\x18\x03 \x01(\t\x12\x0b\n\x03sig\x18\x04 \x01(\t\x12$\n\x1cin_progress_integration_test\x18\x05 \x01(\t\x12\x11\n\tcollector\x18\x06 \x01(\t\x12=\n\x06\x66ields\x18\x07 \x03(\x0b\x32-.chromiumos.config.api.test.tls.CrashMetadata\"*\n\rCrashMetadata\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\"8\n\tCrashBlob\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0c\n\x04\x62lob\x18\x02 \x01(\x0c\x12\x10\n\x08\x66ilename\x18\x03 \x01(\t\"7\n\rChromeOsImage\x12\x18\n\x0egs_path_prefix\x18\x01 \x01(\tH\x00\x42\x0c\n\npath_oneof\"\xaa\x03\n\tFakeOmaha\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0b\n\x03\x64ut\x18\x02 \x01(\t\x12\x43\n\x0ctarget_build\x18\x03 \x01(\x0b\x32-.chromiumos.config.api.test.tls.ChromeOsImage\x12\x43\n\x08payloads\x18\x04 \x03(\x0b\x32\x31.chromiumos.config.api.test.tls.FakeOmaha.Payload\x12\x19\n\x11\x65xposed_via_proxy\x18\x05 \x01(\x08\x12\x17\n\x0f\x63ritical_update\x18\x06 \x01(\x08\x12 \n\x18return_noupdate_starting\x18\x07 \x01(\x05\x12\x11\n\tomaha_url\x18\x08 \x01(\t\x1a\x8e\x01\n\x07Payload\x12\n\n\x02id\x18\x01 \x01(\t\x12\x44\n\x04type\x18\x02 \x01(\x0e\x32\x36.chromiumos.config.api.test.tls.FakeOmaha.Payload.Type\"1\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x08\n\x04\x46ULL\x10\x01\x12\t\n\x05\x44\x45LTA\x10\x02\"W\n\x16\x43reateFakeOmahaRequest\x12=\n\nfake_omaha\x18\x01 \x01(\x0b\x32).chromiumos.config.api.test.tls.FakeOmaha\"&\n\x16\x44\x65leteFakeOmahaRequest\x12\x0c\n\x04name\x18\x01 \x01(\t*,\n\x06Output\x12\x0f\n\x0bOUTPUT_PIPE\x10\x00\x12\x11\n\rOUTPUT_STDOUT\x10\x01\x32\xb0\x07\n\x06\x43ommon\x12\x81\x01\n\x0e\x45xecDutCommand\x12\x35.chromiumos.config.api.test.tls.ExecDutCommandRequest\x1a\x36.chromiumos.config.api.test.tls.ExecDutCommandResponse0\x01\x12\x93\x01\n\x0cProvisionDut\x12\x33.chromiumos.config.api.test.tls.ProvisionDutRequest\x1a\x1d.google.longrunning.Operation\"/\xca\x41,\n\x14ProvisionDutResponse\x12\x14ProvisionDutMetadata\x12\x9f\x01\n\x0fProvisionLacros\x12\x36.chromiumos.config.api.test.tls.ProvisionLacrosRequest\x1a\x1d.google.longrunning.Operation\"5\xca\x41\x32\n\x17ProvisionLacrosResponse\x12\x17ProvisionLacrosMetadata\x12\x93\x01\n\x0cProvisionAsh\x12\x33.chromiumos.config.api.test.tls.ProvisionAshRequest\x1a\x1d.google.longrunning.Operation\"/\xca\x41,\n\x14ProvisionAshResponse\x12\x14ProvisionAshMetadata\x12{\n\x0c\x46\x65tchCrashes\x12\x33.chromiumos.config.api.test.tls.FetchCrashesRequest\x1a\x34.chromiumos.config.api.test.tls.FetchCrashesResponse0\x01\x12t\n\x0f\x43reateFakeOmaha\x12\x36.chromiumos.config.api.test.tls.CreateFakeOmahaRequest\x1a).chromiumos.config.api.test.tls.FakeOmaha\x12\x61\n\x0f\x44\x65leteFakeOmaha\x12\x36.chromiumos.config.api.test.tls.DeleteFakeOmahaRequest\x1a\x16.google.protobuf.EmptyB3Z1go.chromium.org/chromiumos/config/go/api/test/tlsb\x06proto3'
+  serialized_pb=b'\n.chromiumos/config/api/test/tls/commontls.proto\x12\x1e\x63hromiumos.config.api.test.tls\x1a\x1bgoogle/protobuf/empty.proto\x1aHchromiumos/config/api/test/tls/dependencies/longrunning/operations.proto\"\xc3\x01\n\x15\x45xecDutCommandRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07\x63ommand\x18\x02 \x01(\t\x12\x0c\n\x04\x61rgs\x18\x03 \x03(\t\x12\r\n\x05stdin\x18\x04 \x01(\x0c\x12\x36\n\x06stdout\x18\x05 \x01(\x0e\x32&.chromiumos.config.api.test.tls.Output\x12\x36\n\x06stderr\x18\x06 \x01(\x0e\x32&.chromiumos.config.api.test.tls.Output\"\xe2\x01\n\x16\x45xecDutCommandResponse\x12R\n\texit_info\x18\x01 \x01(\x0b\x32?.chromiumos.config.api.test.tls.ExecDutCommandResponse.ExitInfo\x12\x0e\n\x06stdout\x18\x02 \x01(\x0c\x12\x0e\n\x06stderr\x18\x03 \x01(\x0c\x1aT\n\x08\x45xitInfo\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x10\n\x08signaled\x18\x02 \x01(\x08\x12\x0f\n\x07started\x18\x03 \x01(\x08\x12\x15\n\rerror_message\x18\x04 \x01(\t\"\xb1\x03\n\x13ProvisionDutRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12T\n\x05image\x18\x02 \x01(\x0b\x32\x41.chromiumos.config.api.test.tls.ProvisionDutRequest.ChromeOSImageB\x02\x18\x01\x12N\n\tdlc_specs\x18\x03 \x03(\x0b\x32;.chromiumos.config.api.test.tls.ProvisionDutRequest.DLCSpec\x12\x19\n\x11preserve_stateful\x18\x04 \x01(\x08\x12\x43\n\x0ctarget_build\x18\x05 \x01(\x0b\x32-.chromiumos.config.api.test.tls.ChromeOsImage\x12\x1a\n\x12\x66orce_provision_os\x18\x06 \x01(\x08\x12\x16\n\x0eprevent_reboot\x18\x07 \x01(\x08\x1a;\n\rChromeOSImage\x12\x18\n\x0egs_path_prefix\x18\x01 \x01(\tH\x00:\x02\x18\x01\x42\x0c\n\npath_oneof\x1a\x15\n\x07\x44LCSpec\x12\n\n\x02id\x18\x01 \x01(\t\"\xf9\x01\n\x14ProvisionDutResponse\"\xe0\x01\n\x06Reason\x12\x1a\n\x16REASON_INVALID_REQUEST\x10\x00\x12(\n$REASON_DUT_UNREACHABLE_PRE_PROVISION\x10\x01\x12#\n\x1fREASON_DOWNLOADING_IMAGE_FAILED\x10\x02\x12 \n\x1cREASON_PROVISIONING_TIMEDOUT\x10\x03\x12\x1e\n\x1aREASON_PROVISIONING_FAILED\x10\x04\x12)\n%REASON_DUT_UNREACHABLE_POST_PROVISION\x10\x05\"\x16\n\x14ProvisionDutMetadata\"\x87\x02\n\x16ProvisionLacrosRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12Q\n\x05image\x18\x02 \x01(\x0b\x32\x42.chromiumos.config.api.test.tls.ProvisionLacrosRequest.LacrosImage\x12\x18\n\x10override_version\x18\x03 \x01(\t\x12\x1d\n\x15override_install_path\x18\x04 \x01(\t\x1aS\n\x0bLacrosImage\x12\x18\n\x0egs_path_prefix\x18\x01 \x01(\tH\x00\x12\x1c\n\x12\x64\x65vice_file_prefix\x18\x02 \x01(\tH\x00\x42\x0c\n\npath_oneof\"\xd1\x01\n\x17ProvisionLacrosResponse\"\xb5\x01\n\x06Reason\x12\x1a\n\x16REASON_INVALID_REQUEST\x10\x00\x12(\n$REASON_DUT_UNREACHABLE_PRE_PROVISION\x10\x01\x12#\n\x1fREASON_DOWNLOADING_IMAGE_FAILED\x10\x02\x12 \n\x1cREASON_PROVISIONING_TIMEDOUT\x10\x03\x12\x1e\n\x1aREASON_PROVISIONING_FAILED\x10\x04\"\x19\n\x17ProvisionLacrosMetadata\"\xa7\x01\n\x13ProvisionAshRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12M\n\x06\x62undle\x18\x02 \x01(\x0b\x32=.chromiumos.config.api.test.tls.ProvisionAshRequest.AshBundle\x1a\x33\n\tAshBundle\x12\x18\n\x0egs_bundle_path\x18\x01 \x01(\tH\x00\x42\x0c\n\npath_oneof\"\xcf\x01\n\x14ProvisionAshResponse\"\xb6\x01\n\x06Reason\x12\x1a\n\x16REASON_INVALID_REQUEST\x10\x00\x12(\n$REASON_DUT_UNREACHABLE_PRE_PROVISION\x10\x01\x12$\n REASON_DOWNLOADING_BUNDLE_FAILED\x10\x02\x12 \n\x1cREASON_PROVISIONING_TIMEDOUT\x10\x03\x12\x1e\n\x1aREASON_PROVISIONING_FAILED\x10\x04\"\x16\n\x14ProvisionAshMetadata\"6\n\x13\x46\x65tchCrashesRequest\x12\x0b\n\x03\x64ut\x18\x01 \x01(\t\x12\x12\n\nfetch_core\x18\x02 \x01(\x08\"\xb7\x01\n\x14\x46\x65tchCrashesResponse\x12\x10\n\x08\x63rash_id\x18\x01 \x01(\x03\x12:\n\x05\x63rash\x18\x02 \x01(\x0b\x32).chromiumos.config.api.test.tls.CrashInfoH\x00\x12\x39\n\x04\x62lob\x18\x03 \x01(\x0b\x32).chromiumos.config.api.test.tls.CrashBlobH\x00\x12\x0e\n\x04\x63ore\x18\x04 \x01(\x0cH\x00\x42\x06\n\x04\x64\x61ta\"\xbe\x01\n\tCrashInfo\x12\x11\n\texec_name\x18\x01 \x01(\t\x12\x0c\n\x04prod\x18\x02 \x01(\t\x12\x0b\n\x03ver\x18\x03 \x01(\t\x12\x0b\n\x03sig\x18\x04 \x01(\t\x12$\n\x1cin_progress_integration_test\x18\x05 \x01(\t\x12\x11\n\tcollector\x18\x06 \x01(\t\x12=\n\x06\x66ields\x18\x07 \x03(\x0b\x32-.chromiumos.config.api.test.tls.CrashMetadata\"*\n\rCrashMetadata\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\"8\n\tCrashBlob\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0c\n\x04\x62lob\x18\x02 \x01(\x0c\x12\x10\n\x08\x66ilename\x18\x03 \x01(\t\"7\n\rChromeOsImage\x12\x18\n\x0egs_path_prefix\x18\x01 \x01(\tH\x00\x42\x0c\n\npath_oneof\"\xaa\x03\n\tFakeOmaha\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0b\n\x03\x64ut\x18\x02 \x01(\t\x12\x43\n\x0ctarget_build\x18\x03 \x01(\x0b\x32-.chromiumos.config.api.test.tls.ChromeOsImage\x12\x43\n\x08payloads\x18\x04 \x03(\x0b\x32\x31.chromiumos.config.api.test.tls.FakeOmaha.Payload\x12\x19\n\x11\x65xposed_via_proxy\x18\x05 \x01(\x08\x12\x17\n\x0f\x63ritical_update\x18\x06 \x01(\x08\x12 \n\x18return_noupdate_starting\x18\x07 \x01(\x05\x12\x11\n\tomaha_url\x18\x08 \x01(\t\x1a\x8e\x01\n\x07Payload\x12\n\n\x02id\x18\x01 \x01(\t\x12\x44\n\x04type\x18\x02 \x01(\x0e\x32\x36.chromiumos.config.api.test.tls.FakeOmaha.Payload.Type\"1\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x08\n\x04\x46ULL\x10\x01\x12\t\n\x05\x44\x45LTA\x10\x02\"W\n\x16\x43reateFakeOmahaRequest\x12=\n\nfake_omaha\x18\x01 \x01(\x0b\x32).chromiumos.config.api.test.tls.FakeOmaha\"&\n\x16\x44\x65leteFakeOmahaRequest\x12\x0c\n\x04name\x18\x01 \x01(\t*,\n\x06Output\x12\x0f\n\x0bOUTPUT_PIPE\x10\x00\x12\x11\n\rOUTPUT_STDOUT\x10\x01\x32\xb0\x07\n\x06\x43ommon\x12\x81\x01\n\x0e\x45xecDutCommand\x12\x35.chromiumos.config.api.test.tls.ExecDutCommandRequest\x1a\x36.chromiumos.config.api.test.tls.ExecDutCommandResponse0\x01\x12\x93\x01\n\x0cProvisionDut\x12\x33.chromiumos.config.api.test.tls.ProvisionDutRequest\x1a\x1d.google.longrunning.Operation\"/\xca\x41,\n\x14ProvisionDutResponse\x12\x14ProvisionDutMetadata\x12\x9f\x01\n\x0fProvisionLacros\x12\x36.chromiumos.config.api.test.tls.ProvisionLacrosRequest\x1a\x1d.google.longrunning.Operation\"5\xca\x41\x32\n\x17ProvisionLacrosResponse\x12\x17ProvisionLacrosMetadata\x12\x93\x01\n\x0cProvisionAsh\x12\x33.chromiumos.config.api.test.tls.ProvisionAshRequest\x1a\x1d.google.longrunning.Operation\"/\xca\x41,\n\x14ProvisionAshResponse\x12\x14ProvisionAshMetadata\x12{\n\x0c\x46\x65tchCrashes\x12\x33.chromiumos.config.api.test.tls.FetchCrashesRequest\x1a\x34.chromiumos.config.api.test.tls.FetchCrashesResponse0\x01\x12t\n\x0f\x43reateFakeOmaha\x12\x36.chromiumos.config.api.test.tls.CreateFakeOmahaRequest\x1a).chromiumos.config.api.test.tls.FakeOmaha\x12\x61\n\x0f\x44\x65leteFakeOmaha\x12\x36.chromiumos.config.api.test.tls.DeleteFakeOmahaRequest\x1a\x16.google.protobuf.EmptyB3Z1go.chromium.org/chromiumos/config/go/api/test/tlsb\x06proto3'
   ,
   dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,chromiumos_dot_config_dot_api_dot_test_dot_tls_dot_dependencies_dot_longrunning_dot_operations__pb2.DESCRIPTOR,])
 
@@ -42,8 +42,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=3274,
-  serialized_end=3318,
+  serialized_start=3385,
+  serialized_end=3429,
 )
 _sym_db.RegisterEnumDescriptor(_OUTPUT)
 
@@ -85,8 +85,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=1050,
-  serialized_end=1274,
+  serialized_start=1074,
+  serialized_end=1298,
 )
 _sym_db.RegisterEnumDescriptor(_PROVISIONDUTRESPONSE_REASON)
 
@@ -119,8 +119,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=1050,
-  serialized_end=1231,
+  serialized_start=1074,
+  serialized_end=1255,
 )
 _sym_db.RegisterEnumDescriptor(_PROVISIONLACROSRESPONSE_REASON)
 
@@ -153,8 +153,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=1914,
-  serialized_end=2096,
+  serialized_start=2025,
+  serialized_end=2207,
 )
 _sym_db.RegisterEnumDescriptor(_PROVISIONASHRESPONSE_REASON)
 
@@ -179,8 +179,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=3094,
-  serialized_end=3143,
+  serialized_start=3205,
+  serialized_end=3254,
 )
 _sym_db.RegisterEnumDescriptor(_FAKEOMAHA_PAYLOAD_TYPE)
 
@@ -376,8 +376,8 @@
       name='path_oneof', full_name='chromiumos.config.api.test.tls.ProvisionDutRequest.ChromeOSImage.path_oneof',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=940,
-  serialized_end=999,
+  serialized_start=964,
+  serialized_end=1023,
 )
 
 _PROVISIONDUTREQUEST_DLCSPEC = _descriptor.Descriptor(
@@ -406,8 +406,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1001,
-  serialized_end=1022,
+  serialized_start=1025,
+  serialized_end=1046,
 )
 
 _PROVISIONDUTREQUEST = _descriptor.Descriptor(
@@ -459,6 +459,13 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='prevent_reboot', full_name='chromiumos.config.api.test.tls.ProvisionDutRequest.prevent_reboot', index=6,
+      number=7, type=8, cpp_type=7, label=1,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
@@ -472,7 +479,7 @@
   oneofs=[
   ],
   serialized_start=613,
-  serialized_end=1022,
+  serialized_end=1046,
 )
 
 
@@ -496,8 +503,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1025,
-  serialized_end=1274,
+  serialized_start=1049,
+  serialized_end=1298,
 )
 
 
@@ -520,8 +527,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1276,
-  serialized_end=1298,
+  serialized_start=1300,
+  serialized_end=1322,
 )
 
 
@@ -539,6 +546,13 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='device_file_prefix', full_name='chromiumos.config.api.test.tls.ProvisionLacrosRequest.LacrosImage.device_file_prefix', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
@@ -554,8 +568,8 @@
       name='path_oneof', full_name='chromiumos.config.api.test.tls.ProvisionLacrosRequest.LacrosImage.path_oneof',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=1424,
-  serialized_end=1477,
+  serialized_start=1505,
+  serialized_end=1588,
 )
 
 _PROVISIONLACROSREQUEST = _descriptor.Descriptor(
@@ -579,6 +593,20 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='override_version', full_name='chromiumos.config.api.test.tls.ProvisionLacrosRequest.override_version', index=2,
+      number=3, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='override_install_path', full_name='chromiumos.config.api.test.tls.ProvisionLacrosRequest.override_install_path', index=3,
+      number=4, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
@@ -591,8 +619,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1301,
-  serialized_end=1477,
+  serialized_start=1325,
+  serialized_end=1588,
 )
 
 
@@ -616,8 +644,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1480,
-  serialized_end=1689,
+  serialized_start=1591,
+  serialized_end=1800,
 )
 
 
@@ -640,8 +668,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1691,
-  serialized_end=1716,
+  serialized_start=1802,
+  serialized_end=1827,
 )
 
 
@@ -674,8 +702,8 @@
       name='path_oneof', full_name='chromiumos.config.api.test.tls.ProvisionAshRequest.AshBundle.path_oneof',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=1835,
-  serialized_end=1886,
+  serialized_start=1946,
+  serialized_end=1997,
 )
 
 _PROVISIONASHREQUEST = _descriptor.Descriptor(
@@ -711,8 +739,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1719,
-  serialized_end=1886,
+  serialized_start=1830,
+  serialized_end=1997,
 )
 
 
@@ -736,8 +764,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1889,
-  serialized_end=2096,
+  serialized_start=2000,
+  serialized_end=2207,
 )
 
 
@@ -760,8 +788,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2098,
-  serialized_end=2120,
+  serialized_start=2209,
+  serialized_end=2231,
 )
 
 
@@ -798,8 +826,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2122,
-  serialized_end=2176,
+  serialized_start=2233,
+  serialized_end=2287,
 )
 
 
@@ -853,8 +881,8 @@
       name='data', full_name='chromiumos.config.api.test.tls.FetchCrashesResponse.data',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=2179,
-  serialized_end=2362,
+  serialized_start=2290,
+  serialized_end=2473,
 )
 
 
@@ -926,8 +954,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2365,
-  serialized_end=2555,
+  serialized_start=2476,
+  serialized_end=2666,
 )
 
 
@@ -964,8 +992,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2557,
-  serialized_end=2599,
+  serialized_start=2668,
+  serialized_end=2710,
 )
 
 
@@ -1009,8 +1037,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2601,
-  serialized_end=2657,
+  serialized_start=2712,
+  serialized_end=2768,
 )
 
 
@@ -1043,8 +1071,8 @@
       name='path_oneof', full_name='chromiumos.config.api.test.tls.ChromeOsImage.path_oneof',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=2659,
-  serialized_end=2714,
+  serialized_start=2770,
+  serialized_end=2825,
 )
 
 
@@ -1082,8 +1110,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3001,
-  serialized_end=3143,
+  serialized_start=3112,
+  serialized_end=3254,
 )
 
 _FAKEOMAHA = _descriptor.Descriptor(
@@ -1161,8 +1189,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2717,
-  serialized_end=3143,
+  serialized_start=2828,
+  serialized_end=3254,
 )
 
 
@@ -1192,8 +1220,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3145,
-  serialized_end=3232,
+  serialized_start=3256,
+  serialized_end=3343,
 )
 
 
@@ -1223,8 +1251,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3234,
-  serialized_end=3272,
+  serialized_start=3345,
+  serialized_end=3383,
 )
 
 _EXECDUTCOMMANDREQUEST.fields_by_name['stdout'].enum_type = _OUTPUT
@@ -1244,6 +1272,9 @@
 _PROVISIONLACROSREQUEST_LACROSIMAGE.oneofs_by_name['path_oneof'].fields.append(
   _PROVISIONLACROSREQUEST_LACROSIMAGE.fields_by_name['gs_path_prefix'])
 _PROVISIONLACROSREQUEST_LACROSIMAGE.fields_by_name['gs_path_prefix'].containing_oneof = _PROVISIONLACROSREQUEST_LACROSIMAGE.oneofs_by_name['path_oneof']
+_PROVISIONLACROSREQUEST_LACROSIMAGE.oneofs_by_name['path_oneof'].fields.append(
+  _PROVISIONLACROSREQUEST_LACROSIMAGE.fields_by_name['device_file_prefix'])
+_PROVISIONLACROSREQUEST_LACROSIMAGE.fields_by_name['device_file_prefix'].containing_oneof = _PROVISIONLACROSREQUEST_LACROSIMAGE.oneofs_by_name['path_oneof']
 _PROVISIONLACROSREQUEST.fields_by_name['image'].message_type = _PROVISIONLACROSREQUEST_LACROSIMAGE
 _PROVISIONLACROSRESPONSE_REASON.containing_type = _PROVISIONLACROSRESPONSE
 _PROVISIONASHREQUEST_ASHBUNDLE.containing_type = _PROVISIONASHREQUEST
@@ -1495,8 +1526,8 @@
   file=DESCRIPTOR,
   index=0,
   serialized_options=None,
-  serialized_start=3321,
-  serialized_end=4265,
+  serialized_start=3432,
+  serialized_end=4376,
   methods=[
   _descriptor.MethodDescriptor(
     name='ExecDutCommand',
diff --git a/api/gen_sdk/chromiumos/config/api/topology_pb2.py b/api/gen_sdk/chromiumos/config/api/topology_pb2.py
index 986fffd..e6a750c 100644
--- a/api/gen_sdk/chromiumos/config/api/topology_pb2.py
+++ b/api/gen_sdk/chromiumos/config/api/topology_pb2.py
@@ -19,7 +19,7 @@
   package='chromiumos.config.api',
   syntax='proto3',
   serialized_options=b'Z(go.chromium.org/chromiumos/config/go/api',
-  serialized_pb=b'\n$chromiumos/config/api/topology.proto\x12\x15\x63hromiumos.config.api\x1a%chromiumos/config/api/component.proto\"\xdf\x05\n\x08Topology\x12\n\n\x02id\x18\x01 \x01(\t\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32$.chromiumos.config.api.Topology.Type\x12\x45\n\x0b\x64\x65scription\x18\x03 \x03(\x0b\x32\x30.chromiumos.config.api.Topology.DescriptionEntry\x12\x41\n\x10hardware_feature\x18\x04 \x01(\x0b\x32\'.chromiumos.config.api.HardwareFeatures\x1a\x32\n\x10\x44\x65scriptionEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xd4\x03\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\n\n\x06SCREEN\x10\x01\x12\x0f\n\x0b\x46ORM_FACTOR\x10\x02\x12\t\n\x05\x41UDIO\x10\x03\x12\n\n\x06STYLUS\x10\x04\x12\x0c\n\x08KEYBOARD\x10\x05\x12\x0b\n\x07THERMAL\x10\x06\x12\n\n\x06\x43\x41MERA\x10\x07\x12(\n$ACCELEROMETER_GYROSCOPE_MAGNETOMETER\x10\x08\x12\x0f\n\x0b\x46INGERPRINT\x10\t\x12\x14\n\x10PROXIMITY_SENSOR\x10\n\x12\x12\n\x0e\x44\x41UGHTER_BOARD\x10\x0b\x12\x18\n\x14NON_VOLATILE_STORAGE\x10\x0c\x12\x07\n\x03RAM\x10\r\x12\x08\n\x04WIFI\x10\x0e\x12\r\n\tLTE_BOARD\x10\x0f\x12\r\n\tSD_READER\x10\x10\x12\x13\n\x0fMOTHERBOARD_USB\x10\x11\x12\r\n\tBLUETOOTH\x10\x12\x12\x0e\n\nBARRELJACK\x10\x13\x12\x10\n\x0cPOWER_BUTTON\x10\x14\x12\x11\n\rVOLUME_BUTTON\x10\x15\x12\x06\n\x02\x45\x43\x10\x16\x12\t\n\x05TOUCH\x10\x17\x12\x07\n\x03TPM\x10\x18\x12\x1a\n\x16MICROPHONE_MUTE_SWITCH\x10\x19\x12\x0b\n\x07\x42\x41TTERY\x10\x1a\x12\x08\n\x04HDMI\x10\x1b\x12\x07\n\x03SOC\x10\x1c\"\xa8\x01\n\x08\x44uration\x12\x32\n\x04type\x18\x01 \x01(\x0e\x32$.chromiumos.config.api.Duration.Type\x12\r\n\x05value\x18\x02 \x01(\x05\"Y\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x10\n\x0cMILLISECONDS\x10\x01\x12\x0b\n\x07SECONDS\x10\x02\x12\x0b\n\x07MINUTES\x10\x03\x12\t\n\x05HOURS\x10\x04\x12\x08\n\x04\x44\x41YS\x10\x05\"\xab\x46\n\x10HardwareFeatures\x12;\n\x05usb_c\x18\x01 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.UsbC\x12;\n\x05usb_a\x18\x02 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.UsbA\x12\x38\n\x03lte\x18\x03 \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.Lte\x12:\n\x04hdmi\x18\x04 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.Hdmi\x12P\n\tfw_config\x18\x05 \x01(\x0b\x32=.chromiumos.config.api.HardwareFeatures.FirmwareConfiguration\x12<\n\x05\x61udio\x18\x06 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Audio\x12>\n\x06\x63\x61mera\x18\x07 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Camera\x12L\n\raccelerometer\x18\x08 \x01(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.Accelerometer\x12\x44\n\tgyroscope\x18\t \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Gyroscope\x12J\n\x0cmagnetometer\x18\n \x01(\x0b\x32\x34.chromiumos.config.api.HardwareFeatures.Magnetometer\x12I\n\x0clight_sensor\x18\x0b \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.LightSensor\x12>\n\x06screen\x18\x0c \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Screen\x12G\n\x0b\x66orm_factor\x18\r \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.FormFactor\x12>\n\x06stylus\x18\x0e \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Stylus\x12\x42\n\x08keyboard\x18\x0f \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Keyboard\x12>\n\x06memory\x18\x10 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Memory\x12H\n\x0b\x66ingerprint\x18\x11 \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.Fingerprint\x12@\n\x07storage\x18\x12 \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Storage\x12\x44\n\tbluetooth\x18\x13 \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Bluetooth\x12\x46\n\nbarreljack\x18\x14 \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.BarrelJack\x12:\n\x04wifi\x18\x17 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.Wifi\x12\x44\n\x0cpower_button\x18\x15 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Button\x12\x45\n\rvolume_button\x18\x16 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Button\x12W\n\x13\x65mbedded_controller\x18\x18 \x01(\x0b\x32:.chromiumos.config.api.HardwareFeatures.EmbeddedController\x12^\n\x17trusted_platform_module\x18\x19 \x01(\x0b\x32=.chromiumos.config.api.HardwareFeatures.TrustedPlatformModule\x12\x46\n\nhotwording\x18\x1a \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.Hotwording\x12@\n\x07\x64isplay\x18\x1b \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Display\x12\x42\n\x08touchpad\x18\x1c \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Touchpad\x12\\\n\x16microphone_mute_switch\x18\x1d \x01(\x0b\x32<.chromiumos.config.api.HardwareFeatures.MicrophoneMuteSwitch\x12@\n\x07\x62\x61ttery\x18\x1e \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Battery\x12M\n\x0eprivacy_screen\x18\x1f \x01(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.PrivacyScreen\x12\x38\n\x03soc\x18  \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.Soc\x1a\x16\n\x05\x43ount\x12\r\n\x05value\x18\x01 \x01(\r\x1a\x44\n\x04UsbC\x12<\n\x05\x63ount\x18\x01 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x1a\x44\n\x04UsbA\x12<\n\x05\x63ount\x18\x01 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x1aV\n\x03Lte\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\r\n\x05model\x18\x02 \x01(\t\x1aH\n\x04Hdmi\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x34\n\x15\x46irmwareConfiguration\x12\r\n\x05value\x18\x01 \x01(\r\x12\x0c\n\x04mask\x18\x02 \x01(\r\x1a\x89\x06\n\x05\x41udio\x12M\n\x0b\x61udio_codec\x18\x01 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.AudioCodec\x12L\n\x0bspeaker_amp\x18\x02 \x01(\x0e\x32\x37.chromiumos.config.api.HardwareFeatures.Audio.Amplifier\x12Q\n\x0fheadphone_codec\x18\x03 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.AudioCodec\x12\x45\n\x0elid_microphone\x18\x04 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12\x46\n\x0f\x62\x61se_microphone\x18\x05 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12\x45\n\x11speaker_amplifier\x18\x06 \x01(\x0b\x32*.chromiumos.config.api.Component.Amplifier\"\x9d\x01\n\nAudioCodec\x12\x17\n\x13\x41UDIO_CODEC_UNKNOWN\x10\x00\x12\n\n\x06RT5682\x10\x01\x12\x0c\n\x08\x41LC5682I\x10\x02\x12\x0b\n\x07\x41LC5682\x10\x03\x12\n\n\x06\x44\x41\x37\x32\x31\x39\x10\x08\x12\r\n\tNAU88L25B\x10\n\x12\x0b\n\x07\x43S42L42\x10\x0b\x12\x0e\n\nALC5682IVS\x10\x0c\x12\x0b\n\x07WCD9385\x10\r\"\x04\x08\x04\x10\x07\"\x04\x08\t\x10\t\"\x99\x01\n\tAmplifier\x12\x15\n\x11\x41MPLIFIER_UNKNOWN\x10\x00\x12\x0c\n\x08MAX98357\x10\x04\x12\x0c\n\x08MAX98373\x10\x05\x12\x0c\n\x08MAX98360\x10\x06\x12\n\n\x06RT1015\x10\x07\x12\x0b\n\x07\x41LC1011\x10\t\x12\x0b\n\x07RT1015P\x10\n\x12\x0b\n\x07\x41LC1019\x10\x0b\x12\x0c\n\x08MAX98390\x10\x0c\"\x04\x08\x01\x10\x03\"\x04\x08\x08\x10\x08\x1a\xf9\x05\n\x06\x43\x61mera\x12\x46\n\x07\x64\x65vices\x18\x04 \x03(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.Camera.Device\x1a\xd2\x02\n\x06\x44\x65vice\x12K\n\tinterface\x18\x02 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Camera.Interface\x12\x45\n\x06\x66\x61\x63ing\x18\x03 \x01(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Camera.Facing\x12O\n\x0borientation\x18\x04 \x01(\x0e\x32:.chromiumos.config.api.HardwareFeatures.Camera.Orientation\x12\r\n\x05\x66lags\x18\x05 \x01(\r\x12\x0b\n\x03ids\x18\x06 \x03(\t\x12G\n\x0eprivacy_switch\x18\x07 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\"I\n\tInterface\x12\x15\n\x11INTERFACE_UNKNOWN\x10\x00\x12\x11\n\rINTERFACE_USB\x10\x01\x12\x12\n\x0eINTERFACE_MIPI\x10\x02\"?\n\x06\x46\x61\x63ing\x12\x12\n\x0e\x46\x41\x43ING_UNKNOWN\x10\x00\x12\x10\n\x0c\x46\x41\x43ING_FRONT\x10\x01\x12\x0f\n\x0b\x46\x41\x43ING_BACK\x10\x02\"w\n\x0bOrientation\x12\x17\n\x13ORIENTATION_UNKNOWN\x10\x00\x12\x11\n\rORIENTATION_0\x10\x01\x12\x12\n\x0eORIENTATION_90\x10\x02\x12\x13\n\x0fORIENTATION_180\x10\x03\x12\x13\n\x0fORIENTATION_270\x10\x04\"M\n\x05\x46lags\x12\x0e\n\nFLAGS_NONE\x10\x00\x12\x17\n\x13\x46LAGS_SUPPORT_1080P\x10\x01\x12\x1b\n\x17\x46LAGS_SUPPORT_AUTOFOCUS\x10\x02\x1a\xa8\x01\n\rAccelerometer\x12J\n\x11lid_accelerometer\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12K\n\x12\x62\x61se_accelerometer\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x9c\x01\n\tGyroscope\x12\x46\n\rlid_gyroscope\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12G\n\x0e\x62\x61se_gyroscope\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa5\x01\n\x0cMagnetometer\x12I\n\x10lid_magnetometer\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12J\n\x11\x62\x61se_magnetometer\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa2\x01\n\x0bLightSensor\x12H\n\x0flid_lightsensor\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12I\n\x10\x62\x61se_lightsensor\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xaa\x01\n\x06Screen\x12R\n\x10panel_properties\x18\x03 \x01(\x0b\x32\x38.chromiumos.config.api.Component.DisplayPanel.Properties\x12\x46\n\rtouch_support\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.PresentJ\x04\x08\x01\x10\x02\x1a\xff\x01\n\nFormFactor\x12V\n\x0b\x66orm_factor\x18\x01 \x01(\x0e\x32\x41.chromiumos.config.api.HardwareFeatures.FormFactor.FormFactorType\"\x98\x01\n\x0e\x46ormFactorType\x12\x17\n\x13\x46ORM_FACTOR_UNKNOWN\x10\x00\x12\r\n\tCLAMSHELL\x10\x01\x12\x0f\n\x0b\x43ONVERTIBLE\x10\x02\x12\x0e\n\nDETACHABLE\x10\x03\x12\x0e\n\nCHROMEBASE\x10\x04\x12\r\n\tCHROMEBOX\x10\x05\x12\r\n\tCHROMEBIT\x10\x06\x12\x0f\n\x0b\x43HROMESLATE\x10\x07\x1a\x9b\x01\n\x06Stylus\x12I\n\x06stylus\x18\x01 \x01(\x0e\x32\x39.chromiumos.config.api.HardwareFeatures.Stylus.StylusType\"F\n\nStylusType\x12\x12\n\x0eSTYLUS_UNKNOWN\x10\x00\x12\x08\n\x04NONE\x10\x01\x12\x0c\n\x08INTERNAL\x10\x02\x12\x0c\n\x08\x45XTERNAL\x10\x03\x1a\x84\x03\n\x08Keyboard\x12T\n\rkeyboard_type\x18\x01 \x01(\x0e\x32=.chromiumos.config.api.HardwareFeatures.Keyboard.KeyboardType\x12\x42\n\tbacklight\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x45\n\x0cpower_button\x18\x03 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x44\n\x0bnumeric_pad\x18\x04 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\"Q\n\x0cKeyboardType\x12\x19\n\x15KEYBOARD_TYPE_UNKNOWN\x10\x00\x12\x0c\n\x08INTERNAL\x10\x01\x12\x08\n\x04NONE\x10\x02\x12\x0e\n\nDETACHABLE\x10\x03\x1aJ\n\x06Memory\x12@\n\x07profile\x18\x01 \x01(\x0b\x32/.chromiumos.config.api.Component.Memory.Profile\x1a\xc8\x02\n\x0b\x46ingerprint\x12N\n\x08location\x18\x01 \x01(\x0e\x32<.chromiumos.config.api.HardwareFeatures.Fingerprint.Location\x12\r\n\x05\x62oard\x18\x02 \x01(\t\x12\x12\n\nro_version\x18\x03 \x01(\t\"\xc5\x01\n\x08Location\x12\x14\n\x10LOCATION_UNKNOWN\x10\x00\x12\x19\n\x15POWER_BUTTON_TOP_LEFT\x10\x01\x12\x18\n\x14KEYBOARD_BOTTOM_LEFT\x10\x02\x12\x19\n\x15KEYBOARD_BOTTOM_RIGHT\x10\x03\x12\x16\n\x12KEYBOARD_TOP_RIGHT\x10\x04\x12\x0f\n\x0bNOT_PRESENT\x10\x05\x12\x0e\n\nRIGHT_SIDE\x10\x06\x12\r\n\tLEFT_SIDE\x10\x07\x12\x0b\n\x07PRESENT\x10\x08\x1a\x66\n\x07Storage\x12J\n\x0cstorage_type\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.Component.Storage.StorageType\x12\x0f\n\x07size_gb\x18\x02 \x01(\r\x1a\x8c\x01\n\tBluetooth\x12=\n\tcomponent\x18\x01 \x01(\x0b\x32*.chromiumos.config.api.Component.Bluetooth\x12@\n\x07present\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aN\n\nBarrelJack\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xf7\x01\n\x04Wifi\x12T\n\x18supported_wlan_protocols\x18\x01 \x03(\x0e\x32\x32.chromiumos.config.api.Component.Wifi.WLANProtocol\x12I\n\nwifi_chips\x18\x02 \x03(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Wifi.WifiChip\"N\n\x08WifiChip\x12\x15\n\x11WIFI_CHIP_UNKNOWN\x10\x00\x12\x15\n\x11WIRELESS_86ED801D\x10\x01\x12\x14\n\x10WIRELESS_REALTEK\x10\x02\x1a\xa0\x02\n\x06\x42utton\x12\x45\n\x06region\x18\x01 \x01(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Button.Region\x12\x41\n\x04\x65\x64ge\x18\x02 \x01(\x0e\x32\x33.chromiumos.config.api.HardwareFeatures.Button.Edge\x12\x10\n\x08position\x18\x03 \x01(\x02\"6\n\x06Region\x12\x12\n\x0eREGION_UNKNOWN\x10\x00\x12\n\n\x06SCREEN\x10\x01\x12\x0c\n\x08KEYBOARD\x10\x02\"B\n\x04\x45\x64ge\x12\x10\n\x0c\x45\x44GE_UNKNOWN\x10\x00\x12\x08\n\x04LEFT\x10\x01\x12\t\n\x05RIGHT\x10\x02\x12\x07\n\x03TOP\x10\x03\x12\n\n\x06\x42OTTOM\x10\x04\x1a\xc9\x02\n\x12\x45mbeddedController\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x62\n\x07\x65\x63_type\x18\x02 \x01(\x0e\x32Q.chromiumos.config.api.HardwareFeatures.EmbeddedController.EmbeddedControllerType\x12\x41\n\x04part\x18\x03 \x01(\x0b\x32\x33.chromiumos.config.api.Component.EmbeddedController\"J\n\x16\x45mbeddedControllerType\x12\x13\n\x0f\x45\x43_TYPE_UNKNOWN\x10\x00\x12\r\n\tEC_CHROME\x10\x01\x12\x0c\n\x08\x45\x43_WILCO\x10\x02\x1a\xe0\x01\n\x15TrustedPlatformModule\x12i\n\x08tpm_type\x18\x01 \x01(\x0e\x32W.chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.TrustedPlatformModuleType\"\\\n\x19TrustedPlatformModuleType\x12\x14\n\x10TPM_TYPE_UNKNOWN\x10\x00\x12\x0f\n\x0bTHIRD_PARTY\x10\x01\x12\x0b\n\x07GSC_H1B\x10\x02\x12\x0b\n\x07GSC_H1D\x10\x03\x1aN\n\nHotwording\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa9\x01\n\x07\x44isplay\x12\x42\n\x04type\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.HardwareFeatures.Display.Type\"Z\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x11\n\rTYPE_INTERNAL\x10\x01\x12\x11\n\rTYPE_EXTERNAL\x10\x02\x12\x1a\n\x16TYPE_INTERNAL_EXTERNAL\x10\x03\x1aL\n\x08Touchpad\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aX\n\x14MicrophoneMuteSwitch\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xb6\x05\n\x07\x42\x61ttery\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12J\n\x08lifetime\x18\x02 \x01(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Battery.Lifetime\x12J\n\x08\x63harging\x18\x03 \x01(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Battery.Charging\x1a\x9f\x02\n\x08Lifetime\x12\x35\n\x0cshipping_min\x18\x01 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x37\n\x0e\x64\x65\x65p_sleep_min\x18\x02 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x34\n\x0bsuspend_min\x18\x03 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x38\n\x0flucid_sleep_min\x18\x04 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x33\n\nactive_min\x18\x05 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x1a\xae\x01\n\x08\x43harging\x12\x33\n\nactive_max\x18\x01 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x34\n\x0bsuspend_max\x18\x02 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x37\n\x0e\x64\x65\x65p_sleep_max\x18\x03 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x1aQ\n\rPrivacyScreen\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x45\n\x03Soc\x12>\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0e\x32,.chromiumos.config.api.Component.Soc.Feature\"<\n\x07Present\x12\x13\n\x0fPRESENT_UNKNOWN\x10\x00\x12\x0b\n\x07PRESENT\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\x42*Z(go.chromium.org/chromiumos/config/go/apib\x06proto3'
+  serialized_pb=b'\n$chromiumos/config/api/topology.proto\x12\x15\x63hromiumos.config.api\x1a%chromiumos/config/api/component.proto\"\xdf\x05\n\x08Topology\x12\n\n\x02id\x18\x01 \x01(\t\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32$.chromiumos.config.api.Topology.Type\x12\x45\n\x0b\x64\x65scription\x18\x03 \x03(\x0b\x32\x30.chromiumos.config.api.Topology.DescriptionEntry\x12\x41\n\x10hardware_feature\x18\x04 \x01(\x0b\x32\'.chromiumos.config.api.HardwareFeatures\x1a\x32\n\x10\x44\x65scriptionEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xd4\x03\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\n\n\x06SCREEN\x10\x01\x12\x0f\n\x0b\x46ORM_FACTOR\x10\x02\x12\t\n\x05\x41UDIO\x10\x03\x12\n\n\x06STYLUS\x10\x04\x12\x0c\n\x08KEYBOARD\x10\x05\x12\x0b\n\x07THERMAL\x10\x06\x12\n\n\x06\x43\x41MERA\x10\x07\x12(\n$ACCELEROMETER_GYROSCOPE_MAGNETOMETER\x10\x08\x12\x0f\n\x0b\x46INGERPRINT\x10\t\x12\x14\n\x10PROXIMITY_SENSOR\x10\n\x12\x12\n\x0e\x44\x41UGHTER_BOARD\x10\x0b\x12\x18\n\x14NON_VOLATILE_STORAGE\x10\x0c\x12\x07\n\x03RAM\x10\r\x12\x08\n\x04WIFI\x10\x0e\x12\r\n\tLTE_BOARD\x10\x0f\x12\r\n\tSD_READER\x10\x10\x12\x13\n\x0fMOTHERBOARD_USB\x10\x11\x12\r\n\tBLUETOOTH\x10\x12\x12\x0e\n\nBARRELJACK\x10\x13\x12\x10\n\x0cPOWER_BUTTON\x10\x14\x12\x11\n\rVOLUME_BUTTON\x10\x15\x12\x06\n\x02\x45\x43\x10\x16\x12\t\n\x05TOUCH\x10\x17\x12\x07\n\x03TPM\x10\x18\x12\x1a\n\x16MICROPHONE_MUTE_SWITCH\x10\x19\x12\x0b\n\x07\x42\x41TTERY\x10\x1a\x12\x08\n\x04HDMI\x10\x1b\x12\x07\n\x03SOC\x10\x1c\"\xa8\x01\n\x08\x44uration\x12\x32\n\x04type\x18\x01 \x01(\x0e\x32$.chromiumos.config.api.Duration.Type\x12\r\n\x05value\x18\x02 \x01(\x05\"Y\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x10\n\x0cMILLISECONDS\x10\x01\x12\x0b\n\x07SECONDS\x10\x02\x12\x0b\n\x07MINUTES\x10\x03\x12\t\n\x05HOURS\x10\x04\x12\x08\n\x04\x44\x41YS\x10\x05\"\xe2G\n\x10HardwareFeatures\x12;\n\x05usb_c\x18\x01 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.UsbC\x12;\n\x05usb_a\x18\x02 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.UsbA\x12\x38\n\x03lte\x18\x03 \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.Lte\x12:\n\x04hdmi\x18\x04 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.Hdmi\x12P\n\tfw_config\x18\x05 \x01(\x0b\x32=.chromiumos.config.api.HardwareFeatures.FirmwareConfiguration\x12<\n\x05\x61udio\x18\x06 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Audio\x12>\n\x06\x63\x61mera\x18\x07 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Camera\x12L\n\raccelerometer\x18\x08 \x01(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.Accelerometer\x12\x44\n\tgyroscope\x18\t \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Gyroscope\x12J\n\x0cmagnetometer\x18\n \x01(\x0b\x32\x34.chromiumos.config.api.HardwareFeatures.Magnetometer\x12I\n\x0clight_sensor\x18\x0b \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.LightSensor\x12>\n\x06screen\x18\x0c \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Screen\x12G\n\x0b\x66orm_factor\x18\r \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.FormFactor\x12>\n\x06stylus\x18\x0e \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Stylus\x12\x42\n\x08keyboard\x18\x0f \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Keyboard\x12>\n\x06memory\x18\x10 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Memory\x12H\n\x0b\x66ingerprint\x18\x11 \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.Fingerprint\x12@\n\x07storage\x18\x12 \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Storage\x12\x44\n\tbluetooth\x18\x13 \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Bluetooth\x12\x46\n\nbarreljack\x18\x14 \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.BarrelJack\x12:\n\x04wifi\x18\x17 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.Wifi\x12\x44\n\x0cpower_button\x18\x15 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Button\x12\x45\n\rvolume_button\x18\x16 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Button\x12W\n\x13\x65mbedded_controller\x18\x18 \x01(\x0b\x32:.chromiumos.config.api.HardwareFeatures.EmbeddedController\x12^\n\x17trusted_platform_module\x18\x19 \x01(\x0b\x32=.chromiumos.config.api.HardwareFeatures.TrustedPlatformModule\x12\x46\n\nhotwording\x18\x1a \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.Hotwording\x12@\n\x07\x64isplay\x18\x1b \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Display\x12\x42\n\x08touchpad\x18\x1c \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Touchpad\x12\\\n\x16microphone_mute_switch\x18\x1d \x01(\x0b\x32<.chromiumos.config.api.HardwareFeatures.MicrophoneMuteSwitch\x12@\n\x07\x62\x61ttery\x18\x1e \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Battery\x12M\n\x0eprivacy_screen\x18\x1f \x01(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.PrivacyScreen\x12\x38\n\x03soc\x18  \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.Soc\x12R\n\x0c\x64p_converter\x18! \x01(\x0b\x32<.chromiumos.config.api.HardwareFeatures.DisplayPortConverter\x1a\x16\n\x05\x43ount\x12\r\n\x05value\x18\x01 \x01(\r\x1a\x44\n\x04UsbC\x12<\n\x05\x63ount\x18\x01 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x1a\x44\n\x04UsbA\x12<\n\x05\x63ount\x18\x01 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x1aV\n\x03Lte\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\r\n\x05model\x18\x02 \x01(\t\x1aH\n\x04Hdmi\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x34\n\x15\x46irmwareConfiguration\x12\r\n\x05value\x18\x01 \x01(\r\x12\x0c\n\x04mask\x18\x02 \x01(\r\x1a\x89\x06\n\x05\x41udio\x12M\n\x0b\x61udio_codec\x18\x01 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.AudioCodec\x12L\n\x0bspeaker_amp\x18\x02 \x01(\x0e\x32\x37.chromiumos.config.api.HardwareFeatures.Audio.Amplifier\x12Q\n\x0fheadphone_codec\x18\x03 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.AudioCodec\x12\x45\n\x0elid_microphone\x18\x04 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12\x46\n\x0f\x62\x61se_microphone\x18\x05 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12\x45\n\x11speaker_amplifier\x18\x06 \x01(\x0b\x32*.chromiumos.config.api.Component.Amplifier\"\x9d\x01\n\nAudioCodec\x12\x17\n\x13\x41UDIO_CODEC_UNKNOWN\x10\x00\x12\n\n\x06RT5682\x10\x01\x12\x0c\n\x08\x41LC5682I\x10\x02\x12\x0b\n\x07\x41LC5682\x10\x03\x12\n\n\x06\x44\x41\x37\x32\x31\x39\x10\x08\x12\r\n\tNAU88L25B\x10\n\x12\x0b\n\x07\x43S42L42\x10\x0b\x12\x0e\n\nALC5682IVS\x10\x0c\x12\x0b\n\x07WCD9385\x10\r\"\x04\x08\x04\x10\x07\"\x04\x08\t\x10\t\"\x99\x01\n\tAmplifier\x12\x15\n\x11\x41MPLIFIER_UNKNOWN\x10\x00\x12\x0c\n\x08MAX98357\x10\x04\x12\x0c\n\x08MAX98373\x10\x05\x12\x0c\n\x08MAX98360\x10\x06\x12\n\n\x06RT1015\x10\x07\x12\x0b\n\x07\x41LC1011\x10\t\x12\x0b\n\x07RT1015P\x10\n\x12\x0b\n\x07\x41LC1019\x10\x0b\x12\x0c\n\x08MAX98390\x10\x0c\"\x04\x08\x01\x10\x03\"\x04\x08\x08\x10\x08\x1a\xf9\x05\n\x06\x43\x61mera\x12\x46\n\x07\x64\x65vices\x18\x04 \x03(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.Camera.Device\x1a\xd2\x02\n\x06\x44\x65vice\x12K\n\tinterface\x18\x02 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Camera.Interface\x12\x45\n\x06\x66\x61\x63ing\x18\x03 \x01(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Camera.Facing\x12O\n\x0borientation\x18\x04 \x01(\x0e\x32:.chromiumos.config.api.HardwareFeatures.Camera.Orientation\x12\r\n\x05\x66lags\x18\x05 \x01(\r\x12\x0b\n\x03ids\x18\x06 \x03(\t\x12G\n\x0eprivacy_switch\x18\x07 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\"I\n\tInterface\x12\x15\n\x11INTERFACE_UNKNOWN\x10\x00\x12\x11\n\rINTERFACE_USB\x10\x01\x12\x12\n\x0eINTERFACE_MIPI\x10\x02\"?\n\x06\x46\x61\x63ing\x12\x12\n\x0e\x46\x41\x43ING_UNKNOWN\x10\x00\x12\x10\n\x0c\x46\x41\x43ING_FRONT\x10\x01\x12\x0f\n\x0b\x46\x41\x43ING_BACK\x10\x02\"w\n\x0bOrientation\x12\x17\n\x13ORIENTATION_UNKNOWN\x10\x00\x12\x11\n\rORIENTATION_0\x10\x01\x12\x12\n\x0eORIENTATION_90\x10\x02\x12\x13\n\x0fORIENTATION_180\x10\x03\x12\x13\n\x0fORIENTATION_270\x10\x04\"M\n\x05\x46lags\x12\x0e\n\nFLAGS_NONE\x10\x00\x12\x17\n\x13\x46LAGS_SUPPORT_1080P\x10\x01\x12\x1b\n\x17\x46LAGS_SUPPORT_AUTOFOCUS\x10\x02\x1a\xa8\x01\n\rAccelerometer\x12J\n\x11lid_accelerometer\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12K\n\x12\x62\x61se_accelerometer\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x9c\x01\n\tGyroscope\x12\x46\n\rlid_gyroscope\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12G\n\x0e\x62\x61se_gyroscope\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa5\x01\n\x0cMagnetometer\x12I\n\x10lid_magnetometer\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12J\n\x11\x62\x61se_magnetometer\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa2\x01\n\x0bLightSensor\x12H\n\x0flid_lightsensor\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12I\n\x10\x62\x61se_lightsensor\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xaa\x01\n\x06Screen\x12R\n\x10panel_properties\x18\x03 \x01(\x0b\x32\x38.chromiumos.config.api.Component.DisplayPanel.Properties\x12\x46\n\rtouch_support\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.PresentJ\x04\x08\x01\x10\x02\x1a\xff\x01\n\nFormFactor\x12V\n\x0b\x66orm_factor\x18\x01 \x01(\x0e\x32\x41.chromiumos.config.api.HardwareFeatures.FormFactor.FormFactorType\"\x98\x01\n\x0e\x46ormFactorType\x12\x17\n\x13\x46ORM_FACTOR_UNKNOWN\x10\x00\x12\r\n\tCLAMSHELL\x10\x01\x12\x0f\n\x0b\x43ONVERTIBLE\x10\x02\x12\x0e\n\nDETACHABLE\x10\x03\x12\x0e\n\nCHROMEBASE\x10\x04\x12\r\n\tCHROMEBOX\x10\x05\x12\r\n\tCHROMEBIT\x10\x06\x12\x0f\n\x0b\x43HROMESLATE\x10\x07\x1a\x9b\x01\n\x06Stylus\x12I\n\x06stylus\x18\x01 \x01(\x0e\x32\x39.chromiumos.config.api.HardwareFeatures.Stylus.StylusType\"F\n\nStylusType\x12\x12\n\x0eSTYLUS_UNKNOWN\x10\x00\x12\x08\n\x04NONE\x10\x01\x12\x0c\n\x08INTERNAL\x10\x02\x12\x0c\n\x08\x45XTERNAL\x10\x03\x1a\x84\x03\n\x08Keyboard\x12T\n\rkeyboard_type\x18\x01 \x01(\x0e\x32=.chromiumos.config.api.HardwareFeatures.Keyboard.KeyboardType\x12\x42\n\tbacklight\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x45\n\x0cpower_button\x18\x03 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x44\n\x0bnumeric_pad\x18\x04 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\"Q\n\x0cKeyboardType\x12\x19\n\x15KEYBOARD_TYPE_UNKNOWN\x10\x00\x12\x0c\n\x08INTERNAL\x10\x01\x12\x08\n\x04NONE\x10\x02\x12\x0e\n\nDETACHABLE\x10\x03\x1aJ\n\x06Memory\x12@\n\x07profile\x18\x01 \x01(\x0b\x32/.chromiumos.config.api.Component.Memory.Profile\x1a\xc8\x02\n\x0b\x46ingerprint\x12N\n\x08location\x18\x01 \x01(\x0e\x32<.chromiumos.config.api.HardwareFeatures.Fingerprint.Location\x12\r\n\x05\x62oard\x18\x02 \x01(\t\x12\x12\n\nro_version\x18\x03 \x01(\t\"\xc5\x01\n\x08Location\x12\x14\n\x10LOCATION_UNKNOWN\x10\x00\x12\x19\n\x15POWER_BUTTON_TOP_LEFT\x10\x01\x12\x18\n\x14KEYBOARD_BOTTOM_LEFT\x10\x02\x12\x19\n\x15KEYBOARD_BOTTOM_RIGHT\x10\x03\x12\x16\n\x12KEYBOARD_TOP_RIGHT\x10\x04\x12\x0f\n\x0bNOT_PRESENT\x10\x05\x12\x0e\n\nRIGHT_SIDE\x10\x06\x12\r\n\tLEFT_SIDE\x10\x07\x12\x0b\n\x07PRESENT\x10\x08\x1a\x66\n\x07Storage\x12J\n\x0cstorage_type\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.Component.Storage.StorageType\x12\x0f\n\x07size_gb\x18\x02 \x01(\r\x1a\x8c\x01\n\tBluetooth\x12=\n\tcomponent\x18\x01 \x01(\x0b\x32*.chromiumos.config.api.Component.Bluetooth\x12@\n\x07present\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aN\n\nBarrelJack\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xf7\x01\n\x04Wifi\x12T\n\x18supported_wlan_protocols\x18\x01 \x03(\x0e\x32\x32.chromiumos.config.api.Component.Wifi.WLANProtocol\x12I\n\nwifi_chips\x18\x02 \x03(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Wifi.WifiChip\"N\n\x08WifiChip\x12\x15\n\x11WIFI_CHIP_UNKNOWN\x10\x00\x12\x15\n\x11WIRELESS_86ED801D\x10\x01\x12\x14\n\x10WIRELESS_REALTEK\x10\x02\x1a\xa0\x02\n\x06\x42utton\x12\x45\n\x06region\x18\x01 \x01(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Button.Region\x12\x41\n\x04\x65\x64ge\x18\x02 \x01(\x0e\x32\x33.chromiumos.config.api.HardwareFeatures.Button.Edge\x12\x10\n\x08position\x18\x03 \x01(\x02\"6\n\x06Region\x12\x12\n\x0eREGION_UNKNOWN\x10\x00\x12\n\n\x06SCREEN\x10\x01\x12\x0c\n\x08KEYBOARD\x10\x02\"B\n\x04\x45\x64ge\x12\x10\n\x0c\x45\x44GE_UNKNOWN\x10\x00\x12\x08\n\x04LEFT\x10\x01\x12\t\n\x05RIGHT\x10\x02\x12\x07\n\x03TOP\x10\x03\x12\n\n\x06\x42OTTOM\x10\x04\x1a\xc9\x02\n\x12\x45mbeddedController\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x62\n\x07\x65\x63_type\x18\x02 \x01(\x0e\x32Q.chromiumos.config.api.HardwareFeatures.EmbeddedController.EmbeddedControllerType\x12\x41\n\x04part\x18\x03 \x01(\x0b\x32\x33.chromiumos.config.api.Component.EmbeddedController\"J\n\x16\x45mbeddedControllerType\x12\x13\n\x0f\x45\x43_TYPE_UNKNOWN\x10\x00\x12\r\n\tEC_CHROME\x10\x01\x12\x0c\n\x08\x45\x43_WILCO\x10\x02\x1a\xe0\x01\n\x15TrustedPlatformModule\x12i\n\x08tpm_type\x18\x01 \x01(\x0e\x32W.chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.TrustedPlatformModuleType\"\\\n\x19TrustedPlatformModuleType\x12\x14\n\x10TPM_TYPE_UNKNOWN\x10\x00\x12\x0f\n\x0bTHIRD_PARTY\x10\x01\x12\x0b\n\x07GSC_H1B\x10\x02\x12\x0b\n\x07GSC_H1D\x10\x03\x1aN\n\nHotwording\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa9\x01\n\x07\x44isplay\x12\x42\n\x04type\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.HardwareFeatures.Display.Type\"Z\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x11\n\rTYPE_INTERNAL\x10\x01\x12\x11\n\rTYPE_EXTERNAL\x10\x02\x12\x1a\n\x16TYPE_INTERNAL_EXTERNAL\x10\x03\x1aL\n\x08Touchpad\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aX\n\x14MicrophoneMuteSwitch\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xb6\x05\n\x07\x42\x61ttery\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12J\n\x08lifetime\x18\x02 \x01(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Battery.Lifetime\x12J\n\x08\x63harging\x18\x03 \x01(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Battery.Charging\x1a\x9f\x02\n\x08Lifetime\x12\x35\n\x0cshipping_min\x18\x01 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x37\n\x0e\x64\x65\x65p_sleep_min\x18\x02 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x34\n\x0bsuspend_min\x18\x03 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x38\n\x0flucid_sleep_min\x18\x04 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x33\n\nactive_min\x18\x05 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x1a\xae\x01\n\x08\x43harging\x12\x33\n\nactive_max\x18\x01 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x34\n\x0bsuspend_max\x18\x02 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x37\n\x0e\x64\x65\x65p_sleep_max\x18\x03 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x1aQ\n\rPrivacyScreen\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x45\n\x03Soc\x12>\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0e\x32,.chromiumos.config.api.Component.Soc.Feature\x1a\x61\n\x14\x44isplayPortConverter\x12I\n\nconverters\x18\x01 \x03(\x0b\x32\x35.chromiumos.config.api.Component.DisplayPortConverter\"<\n\x07Present\x12\x13\n\x0fPRESENT_UNKNOWN\x10\x00\x12\x0b\n\x07PRESENT\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\x42*Z(go.chromium.org/chromiumos/config/go/apib\x06proto3'
   ,
   dependencies=[chromiumos_dot_config_dot_api_dot_component__pb2.DESCRIPTOR,])
 
@@ -238,8 +238,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4128,
-  serialized_end=4285,
+  serialized_start=4212,
+  serialized_end=4369,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_AUDIO_AUDIOCODEC)
 
@@ -288,8 +288,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4288,
-  serialized_end=4441,
+  serialized_start=4372,
+  serialized_end=4525,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_AUDIO_AMPLIFIER)
 
@@ -314,8 +314,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4867,
-  serialized_end=4940,
+  serialized_start=4951,
+  serialized_end=5024,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CAMERA_INTERFACE)
 
@@ -340,8 +340,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4942,
-  serialized_end=5005,
+  serialized_start=5026,
+  serialized_end=5089,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CAMERA_FACING)
 
@@ -374,8 +374,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=5007,
-  serialized_end=5126,
+  serialized_start=5091,
+  serialized_end=5210,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CAMERA_ORIENTATION)
 
@@ -400,8 +400,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=5128,
-  serialized_end=5205,
+  serialized_start=5212,
+  serialized_end=5289,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CAMERA_FLAGS)
 
@@ -446,8 +446,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=6147,
-  serialized_end=6299,
+  serialized_start=6231,
+  serialized_end=6383,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_FORMFACTOR_FORMFACTORTYPE)
 
@@ -476,8 +476,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=6387,
-  serialized_end=6457,
+  serialized_start=6471,
+  serialized_end=6541,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_STYLUS_STYLUSTYPE)
 
@@ -506,8 +506,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=6767,
-  serialized_end=6848,
+  serialized_start=6851,
+  serialized_end=6932,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_KEYBOARD_KEYBOARDTYPE)
 
@@ -556,8 +556,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=7058,
-  serialized_end=7255,
+  serialized_start=7142,
+  serialized_end=7339,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_FINGERPRINT_LOCATION)
 
@@ -582,8 +582,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=7754,
-  serialized_end=7832,
+  serialized_start=7838,
+  serialized_end=7916,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_WIFI_WIFICHIP)
 
@@ -608,8 +608,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8001,
-  serialized_end=8055,
+  serialized_start=8085,
+  serialized_end=8139,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_BUTTON_REGION)
 
@@ -642,8 +642,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8057,
-  serialized_end=8123,
+  serialized_start=8141,
+  serialized_end=8207,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_BUTTON_EDGE)
 
@@ -668,8 +668,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8381,
-  serialized_end=8455,
+  serialized_start=8465,
+  serialized_end=8539,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_EMBEDDEDCONTROLLER_EMBEDDEDCONTROLLERTYPE)
 
@@ -698,8 +698,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8590,
-  serialized_end=8682,
+  serialized_start=8674,
+  serialized_end=8766,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_TRUSTEDPLATFORMMODULE_TRUSTEDPLATFORMMODULETYPE)
 
@@ -728,8 +728,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8844,
-  serialized_end=8934,
+  serialized_start=8928,
+  serialized_end=9018,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_DISPLAY_TYPE)
 
@@ -754,8 +754,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=9955,
-  serialized_end=10015,
+  serialized_start=10138,
+  serialized_end=10198,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_PRESENT)
 
@@ -915,8 +915,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3283,
-  serialized_end=3305,
+  serialized_start=3367,
+  serialized_end=3389,
 )
 
 _HARDWAREFEATURES_USBC = _descriptor.Descriptor(
@@ -945,8 +945,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3307,
-  serialized_end=3375,
+  serialized_start=3391,
+  serialized_end=3459,
 )
 
 _HARDWAREFEATURES_USBA = _descriptor.Descriptor(
@@ -975,8 +975,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3377,
-  serialized_end=3445,
+  serialized_start=3461,
+  serialized_end=3529,
 )
 
 _HARDWAREFEATURES_LTE = _descriptor.Descriptor(
@@ -1012,8 +1012,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3447,
-  serialized_end=3533,
+  serialized_start=3531,
+  serialized_end=3617,
 )
 
 _HARDWAREFEATURES_HDMI = _descriptor.Descriptor(
@@ -1042,8 +1042,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3535,
-  serialized_end=3607,
+  serialized_start=3619,
+  serialized_end=3691,
 )
 
 _HARDWAREFEATURES_FIRMWARECONFIGURATION = _descriptor.Descriptor(
@@ -1079,8 +1079,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3609,
-  serialized_end=3661,
+  serialized_start=3693,
+  serialized_end=3745,
 )
 
 _HARDWAREFEATURES_AUDIO = _descriptor.Descriptor(
@@ -1146,8 +1146,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3664,
-  serialized_end=4441,
+  serialized_start=3748,
+  serialized_end=4525,
 )
 
 _HARDWAREFEATURES_CAMERA_DEVICE = _descriptor.Descriptor(
@@ -1211,8 +1211,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4527,
-  serialized_end=4865,
+  serialized_start=4611,
+  serialized_end=4949,
 )
 
 _HARDWAREFEATURES_CAMERA = _descriptor.Descriptor(
@@ -1245,8 +1245,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4444,
-  serialized_end=5205,
+  serialized_start=4528,
+  serialized_end=5289,
 )
 
 _HARDWAREFEATURES_ACCELEROMETER = _descriptor.Descriptor(
@@ -1282,8 +1282,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5208,
-  serialized_end=5376,
+  serialized_start=5292,
+  serialized_end=5460,
 )
 
 _HARDWAREFEATURES_GYROSCOPE = _descriptor.Descriptor(
@@ -1319,8 +1319,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5379,
-  serialized_end=5535,
+  serialized_start=5463,
+  serialized_end=5619,
 )
 
 _HARDWAREFEATURES_MAGNETOMETER = _descriptor.Descriptor(
@@ -1356,8 +1356,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5538,
-  serialized_end=5703,
+  serialized_start=5622,
+  serialized_end=5787,
 )
 
 _HARDWAREFEATURES_LIGHTSENSOR = _descriptor.Descriptor(
@@ -1393,8 +1393,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5706,
-  serialized_end=5868,
+  serialized_start=5790,
+  serialized_end=5952,
 )
 
 _HARDWAREFEATURES_SCREEN = _descriptor.Descriptor(
@@ -1430,8 +1430,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5871,
-  serialized_end=6041,
+  serialized_start=5955,
+  serialized_end=6125,
 )
 
 _HARDWAREFEATURES_FORMFACTOR = _descriptor.Descriptor(
@@ -1461,8 +1461,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6044,
-  serialized_end=6299,
+  serialized_start=6128,
+  serialized_end=6383,
 )
 
 _HARDWAREFEATURES_STYLUS = _descriptor.Descriptor(
@@ -1492,8 +1492,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6302,
-  serialized_end=6457,
+  serialized_start=6386,
+  serialized_end=6541,
 )
 
 _HARDWAREFEATURES_KEYBOARD = _descriptor.Descriptor(
@@ -1544,8 +1544,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6460,
-  serialized_end=6848,
+  serialized_start=6544,
+  serialized_end=6932,
 )
 
 _HARDWAREFEATURES_MEMORY = _descriptor.Descriptor(
@@ -1574,8 +1574,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6850,
-  serialized_end=6924,
+  serialized_start=6934,
+  serialized_end=7008,
 )
 
 _HARDWAREFEATURES_FINGERPRINT = _descriptor.Descriptor(
@@ -1619,8 +1619,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6927,
-  serialized_end=7255,
+  serialized_start=7011,
+  serialized_end=7339,
 )
 
 _HARDWAREFEATURES_STORAGE = _descriptor.Descriptor(
@@ -1656,8 +1656,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7257,
-  serialized_end=7359,
+  serialized_start=7341,
+  serialized_end=7443,
 )
 
 _HARDWAREFEATURES_BLUETOOTH = _descriptor.Descriptor(
@@ -1693,8 +1693,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7362,
-  serialized_end=7502,
+  serialized_start=7446,
+  serialized_end=7586,
 )
 
 _HARDWAREFEATURES_BARRELJACK = _descriptor.Descriptor(
@@ -1723,8 +1723,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7504,
-  serialized_end=7582,
+  serialized_start=7588,
+  serialized_end=7666,
 )
 
 _HARDWAREFEATURES_WIFI = _descriptor.Descriptor(
@@ -1761,8 +1761,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7585,
-  serialized_end=7832,
+  serialized_start=7669,
+  serialized_end=7916,
 )
 
 _HARDWAREFEATURES_BUTTON = _descriptor.Descriptor(
@@ -1807,8 +1807,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7835,
-  serialized_end=8123,
+  serialized_start=7919,
+  serialized_end=8207,
 )
 
 _HARDWAREFEATURES_EMBEDDEDCONTROLLER = _descriptor.Descriptor(
@@ -1852,8 +1852,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8126,
-  serialized_end=8455,
+  serialized_start=8210,
+  serialized_end=8539,
 )
 
 _HARDWAREFEATURES_TRUSTEDPLATFORMMODULE = _descriptor.Descriptor(
@@ -1883,8 +1883,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8458,
-  serialized_end=8682,
+  serialized_start=8542,
+  serialized_end=8766,
 )
 
 _HARDWAREFEATURES_HOTWORDING = _descriptor.Descriptor(
@@ -1913,8 +1913,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8684,
-  serialized_end=8762,
+  serialized_start=8768,
+  serialized_end=8846,
 )
 
 _HARDWAREFEATURES_DISPLAY = _descriptor.Descriptor(
@@ -1944,8 +1944,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8765,
-  serialized_end=8934,
+  serialized_start=8849,
+  serialized_end=9018,
 )
 
 _HARDWAREFEATURES_TOUCHPAD = _descriptor.Descriptor(
@@ -1974,8 +1974,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8936,
-  serialized_end=9012,
+  serialized_start=9020,
+  serialized_end=9096,
 )
 
 _HARDWAREFEATURES_MICROPHONEMUTESWITCH = _descriptor.Descriptor(
@@ -2004,8 +2004,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9014,
-  serialized_end=9102,
+  serialized_start=9098,
+  serialized_end=9186,
 )
 
 _HARDWAREFEATURES_BATTERY_LIFETIME = _descriptor.Descriptor(
@@ -2062,8 +2062,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9335,
-  serialized_end=9622,
+  serialized_start=9419,
+  serialized_end=9706,
 )
 
 _HARDWAREFEATURES_BATTERY_CHARGING = _descriptor.Descriptor(
@@ -2106,8 +2106,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9625,
-  serialized_end=9799,
+  serialized_start=9709,
+  serialized_end=9883,
 )
 
 _HARDWAREFEATURES_BATTERY = _descriptor.Descriptor(
@@ -2150,8 +2150,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9105,
-  serialized_end=9799,
+  serialized_start=9189,
+  serialized_end=9883,
 )
 
 _HARDWAREFEATURES_PRIVACYSCREEN = _descriptor.Descriptor(
@@ -2180,8 +2180,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9801,
-  serialized_end=9882,
+  serialized_start=9885,
+  serialized_end=9966,
 )
 
 _HARDWAREFEATURES_SOC = _descriptor.Descriptor(
@@ -2210,8 +2210,38 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9884,
-  serialized_end=9953,
+  serialized_start=9968,
+  serialized_end=10037,
+)
+
+_HARDWAREFEATURES_DISPLAYPORTCONVERTER = _descriptor.Descriptor(
+  name='DisplayPortConverter',
+  full_name='chromiumos.config.api.HardwareFeatures.DisplayPortConverter',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='converters', full_name='chromiumos.config.api.HardwareFeatures.DisplayPortConverter.converters', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=10039,
+  serialized_end=10136,
 )
 
 _HARDWAREFEATURES = _descriptor.Descriptor(
@@ -2445,10 +2475,17 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='dp_converter', full_name='chromiumos.config.api.HardwareFeatures.dp_converter', index=32,
+      number=33, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
-  nested_types=[_HARDWAREFEATURES_COUNT, _HARDWAREFEATURES_USBC, _HARDWAREFEATURES_USBA, _HARDWAREFEATURES_LTE, _HARDWAREFEATURES_HDMI, _HARDWAREFEATURES_FIRMWARECONFIGURATION, _HARDWAREFEATURES_AUDIO, _HARDWAREFEATURES_CAMERA, _HARDWAREFEATURES_ACCELEROMETER, _HARDWAREFEATURES_GYROSCOPE, _HARDWAREFEATURES_MAGNETOMETER, _HARDWAREFEATURES_LIGHTSENSOR, _HARDWAREFEATURES_SCREEN, _HARDWAREFEATURES_FORMFACTOR, _HARDWAREFEATURES_STYLUS, _HARDWAREFEATURES_KEYBOARD, _HARDWAREFEATURES_MEMORY, _HARDWAREFEATURES_FINGERPRINT, _HARDWAREFEATURES_STORAGE, _HARDWAREFEATURES_BLUETOOTH, _HARDWAREFEATURES_BARRELJACK, _HARDWAREFEATURES_WIFI, _HARDWAREFEATURES_BUTTON, _HARDWAREFEATURES_EMBEDDEDCONTROLLER, _HARDWAREFEATURES_TRUSTEDPLATFORMMODULE, _HARDWAREFEATURES_HOTWORDING, _HARDWAREFEATURES_DISPLAY, _HARDWAREFEATURES_TOUCHPAD, _HARDWAREFEATURES_MICROPHONEMUTESWITCH, _HARDWAREFEATURES_BATTERY, _HARDWAREFEATURES_PRIVACYSCREEN, _HARDWAREFEATURES_SOC, ],
+  nested_types=[_HARDWAREFEATURES_COUNT, _HARDWAREFEATURES_USBC, _HARDWAREFEATURES_USBA, _HARDWAREFEATURES_LTE, _HARDWAREFEATURES_HDMI, _HARDWAREFEATURES_FIRMWARECONFIGURATION, _HARDWAREFEATURES_AUDIO, _HARDWAREFEATURES_CAMERA, _HARDWAREFEATURES_ACCELEROMETER, _HARDWAREFEATURES_GYROSCOPE, _HARDWAREFEATURES_MAGNETOMETER, _HARDWAREFEATURES_LIGHTSENSOR, _HARDWAREFEATURES_SCREEN, _HARDWAREFEATURES_FORMFACTOR, _HARDWAREFEATURES_STYLUS, _HARDWAREFEATURES_KEYBOARD, _HARDWAREFEATURES_MEMORY, _HARDWAREFEATURES_FINGERPRINT, _HARDWAREFEATURES_STORAGE, _HARDWAREFEATURES_BLUETOOTH, _HARDWAREFEATURES_BARRELJACK, _HARDWAREFEATURES_WIFI, _HARDWAREFEATURES_BUTTON, _HARDWAREFEATURES_EMBEDDEDCONTROLLER, _HARDWAREFEATURES_TRUSTEDPLATFORMMODULE, _HARDWAREFEATURES_HOTWORDING, _HARDWAREFEATURES_DISPLAY, _HARDWAREFEATURES_TOUCHPAD, _HARDWAREFEATURES_MICROPHONEMUTESWITCH, _HARDWAREFEATURES_BATTERY, _HARDWAREFEATURES_PRIVACYSCREEN, _HARDWAREFEATURES_SOC, _HARDWAREFEATURES_DISPLAYPORTCONVERTER, ],
   enum_types=[
     _HARDWAREFEATURES_PRESENT,
   ],
@@ -2459,7 +2496,7 @@
   oneofs=[
   ],
   serialized_start=1012,
-  serialized_end=10015,
+  serialized_end=10198,
 )
 
 _TOPOLOGY_DESCRIPTIONENTRY.containing_type = _TOPOLOGY
@@ -2582,6 +2619,8 @@
 _HARDWAREFEATURES_PRIVACYSCREEN.containing_type = _HARDWAREFEATURES
 _HARDWAREFEATURES_SOC.fields_by_name['features'].enum_type = chromiumos_dot_config_dot_api_dot_component__pb2._COMPONENT_SOC_FEATURE
 _HARDWAREFEATURES_SOC.containing_type = _HARDWAREFEATURES
+_HARDWAREFEATURES_DISPLAYPORTCONVERTER.fields_by_name['converters'].message_type = chromiumos_dot_config_dot_api_dot_component__pb2._COMPONENT_DISPLAYPORTCONVERTER
+_HARDWAREFEATURES_DISPLAYPORTCONVERTER.containing_type = _HARDWAREFEATURES
 _HARDWAREFEATURES.fields_by_name['usb_c'].message_type = _HARDWAREFEATURES_USBC
 _HARDWAREFEATURES.fields_by_name['usb_a'].message_type = _HARDWAREFEATURES_USBA
 _HARDWAREFEATURES.fields_by_name['lte'].message_type = _HARDWAREFEATURES_LTE
@@ -2614,6 +2653,7 @@
 _HARDWAREFEATURES.fields_by_name['battery'].message_type = _HARDWAREFEATURES_BATTERY
 _HARDWAREFEATURES.fields_by_name['privacy_screen'].message_type = _HARDWAREFEATURES_PRIVACYSCREEN
 _HARDWAREFEATURES.fields_by_name['soc'].message_type = _HARDWAREFEATURES_SOC
+_HARDWAREFEATURES.fields_by_name['dp_converter'].message_type = _HARDWAREFEATURES_DISPLAYPORTCONVERTER
 _HARDWAREFEATURES_PRESENT.containing_type = _HARDWAREFEATURES
 DESCRIPTOR.message_types_by_name['Topology'] = _TOPOLOGY
 DESCRIPTOR.message_types_by_name['Duration'] = _DURATION
@@ -2888,6 +2928,13 @@
     # @@protoc_insertion_point(class_scope:chromiumos.config.api.HardwareFeatures.Soc)
     })
   ,
+
+  'DisplayPortConverter' : _reflection.GeneratedProtocolMessageType('DisplayPortConverter', (_message.Message,), {
+    'DESCRIPTOR' : _HARDWAREFEATURES_DISPLAYPORTCONVERTER,
+    '__module__' : 'chromiumos.config.api.topology_pb2'
+    # @@protoc_insertion_point(class_scope:chromiumos.config.api.HardwareFeatures.DisplayPortConverter)
+    })
+  ,
   'DESCRIPTOR' : _HARDWAREFEATURES,
   '__module__' : 'chromiumos.config.api.topology_pb2'
   # @@protoc_insertion_point(class_scope:chromiumos.config.api.HardwareFeatures)
@@ -2928,6 +2975,7 @@
 _sym_db.RegisterMessage(HardwareFeatures.Battery.Charging)
 _sym_db.RegisterMessage(HardwareFeatures.PrivacyScreen)
 _sym_db.RegisterMessage(HardwareFeatures.Soc)
+_sym_db.RegisterMessage(HardwareFeatures.DisplayPortConverter)
 
 
 DESCRIPTOR._options = None
diff --git a/api/gen_sdk/chromiumos/config/prototype/release_target_pb2.py b/api/gen_sdk/chromiumos/config/prototype/release_target_pb2.py
index 85d91d8..e284bb8 100644
--- a/api/gen_sdk/chromiumos/config/prototype/release_target_pb2.py
+++ b/api/gen_sdk/chromiumos/config/prototype/release_target_pb2.py
@@ -12,6 +12,7 @@
 
 
 from chromite.api.gen_sdk.chromiumos.config.prototype import release_target_id_pb2 as chromiumos_dot_config_dot_prototype_dot_release__target__id__pb2
+from chromite.api.gen_sdk.chromiumos.config.prototype import signing_pb2 as chromiumos_dot_config_dot_prototype_dot_signing__pb2
 from chromite.api.gen_sdk.chromiumos.build.api import system_image_pb2 as chromiumos_dot_build_dot_api_dot_system__image__pb2
 
 
@@ -20,49 +21,42 @@
   package='chromiumos.config.prototype',
   syntax='proto3',
   serialized_options=b'Z.go.chromium.org/chromiumos/config/go/prototype',
-  serialized_pb=b'\n0chromiumos/config/prototype/release_target.proto\x12\x1b\x63hromiumos.config.prototype\x1a\x33\x63hromiumos/config/prototype/release_target_id.proto\x1a\'chromiumos/build/api/system_image.proto\"\xd9\x02\n\rReleaseTarget\x12\x38\n\x02id\x18\x01 \x01(\x0b\x32,.chromiumos.config.prototype.ReleaseTargetId\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x42\n\x0bmain_target\x18\x05 \x01(\x0b\x32-.chromiumos.build.api.SystemImage.BuildTarget\x12\x43\n\x0cuprev_target\x18\x06 \x01(\x0b\x32-.chromiumos.build.api.SystemImage.BuildTarget\x12\x43\n\x07signing\x18\x04 \x01(\x0b\x32\x32.chromiumos.config.prototype.ReleaseTarget.Signing\x1a\x32\n\x07Signing\x12\x14\n\x0cpremp_keyset\x18\x01 \x01(\t\x12\x11\n\tmp_keyset\x18\x02 \x01(\tB0Z.go.chromium.org/chromiumos/config/go/prototypeb\x06proto3'
+  serialized_pb=b'\n0chromiumos/config/prototype/release_target.proto\x12\x1b\x63hromiumos.config.prototype\x1a\x33\x63hromiumos/config/prototype/release_target_id.proto\x1a)chromiumos/config/prototype/signing.proto\x1a\'chromiumos/build/api/system_image.proto\"\xf1\x03\n\rReleaseTarget\x12\x38\n\x02id\x18\x01 \x01(\x0b\x32,.chromiumos.config.prototype.ReleaseTargetId\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x43\n\x0c\x62uild_target\x18\x03 \x01(\x0b\x32-.chromiumos.build.api.SystemImage.BuildTarget\x12\x43\n\x0fvariant_targets\x18\x04 \x03(\x0b\x32*.chromiumos.config.prototype.ReleaseTarget\x12N\n\x14signing_instructions\x18\x05 \x01(\x0b\x32\x30.chromiumos.config.prototype.SigningInstructions\x12Q\n\x0b\x63riticality\x18\x06 \x01(\x0e\x32<.chromiumos.config.prototype.ReleaseTarget.TargetCriticality\"k\n\x11TargetCriticality\x12\x12\n\x0e\x43RIT_UNDEFINED\x10\x00\x12\x15\n\x11\x43RIT_EXPERIMENTAL\x10\x01\x12\x16\n\x12\x43RIT_INFORMATIONAL\x10\x02\x12\x13\n\x0f\x43RIT_PRODUCTION\x10\x03\x42\x30Z.go.chromium.org/chromiumos/config/go/prototypeb\x06proto3'
   ,
-  dependencies=[chromiumos_dot_config_dot_prototype_dot_release__target__id__pb2.DESCRIPTOR,chromiumos_dot_build_dot_api_dot_system__image__pb2.DESCRIPTOR,])
+  dependencies=[chromiumos_dot_config_dot_prototype_dot_release__target__id__pb2.DESCRIPTOR,chromiumos_dot_config_dot_prototype_dot_signing__pb2.DESCRIPTOR,chromiumos_dot_build_dot_api_dot_system__image__pb2.DESCRIPTOR,])
 
 
 
-
-_RELEASETARGET_SIGNING = _descriptor.Descriptor(
-  name='Signing',
-  full_name='chromiumos.config.prototype.ReleaseTarget.Signing',
+_RELEASETARGET_TARGETCRITICALITY = _descriptor.EnumDescriptor(
+  name='TargetCriticality',
+  full_name='chromiumos.config.prototype.ReleaseTarget.TargetCriticality',
   filename=None,
   file=DESCRIPTOR,
+  values=[
+    _descriptor.EnumValueDescriptor(
+      name='CRIT_UNDEFINED', index=0, number=0,
+      serialized_options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='CRIT_EXPERIMENTAL', index=1, number=1,
+      serialized_options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='CRIT_INFORMATIONAL', index=2, number=2,
+      serialized_options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='CRIT_PRODUCTION', index=3, number=3,
+      serialized_options=None,
+      type=None),
+  ],
   containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='premp_keyset', full_name='chromiumos.config.prototype.ReleaseTarget.Signing.premp_keyset', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='mp_keyset', full_name='chromiumos.config.prototype.ReleaseTarget.Signing.mp_keyset', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
   serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=471,
-  serialized_end=521,
+  serialized_start=609,
+  serialized_end=716,
 )
+_sym_db.RegisterEnumDescriptor(_RELEASETARGET_TARGETCRITICALITY)
+
 
 _RELEASETARGET = _descriptor.Descriptor(
   name='ReleaseTarget',
@@ -86,31 +80,39 @@
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='main_target', full_name='chromiumos.config.prototype.ReleaseTarget.main_target', index=2,
+      name='build_target', full_name='chromiumos.config.prototype.ReleaseTarget.build_target', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='variant_targets', full_name='chromiumos.config.prototype.ReleaseTarget.variant_targets', index=3,
+      number=4, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='signing_instructions', full_name='chromiumos.config.prototype.ReleaseTarget.signing_instructions', index=4,
       number=5, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='uprev_target', full_name='chromiumos.config.prototype.ReleaseTarget.uprev_target', index=3,
-      number=6, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='signing', full_name='chromiumos.config.prototype.ReleaseTarget.signing', index=4,
-      number=4, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
+      name='criticality', full_name='chromiumos.config.prototype.ReleaseTarget.criticality', index=5,
+      number=6, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
-  nested_types=[_RELEASETARGET_SIGNING, ],
+  nested_types=[],
   enum_types=[
+    _RELEASETARGET_TARGETCRITICALITY,
   ],
   serialized_options=None,
   is_extendable=False,
@@ -118,32 +120,25 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=176,
-  serialized_end=521,
+  serialized_start=219,
+  serialized_end=716,
 )
 
-_RELEASETARGET_SIGNING.containing_type = _RELEASETARGET
 _RELEASETARGET.fields_by_name['id'].message_type = chromiumos_dot_config_dot_prototype_dot_release__target__id__pb2._RELEASETARGETID
-_RELEASETARGET.fields_by_name['main_target'].message_type = chromiumos_dot_build_dot_api_dot_system__image__pb2._SYSTEMIMAGE_BUILDTARGET
-_RELEASETARGET.fields_by_name['uprev_target'].message_type = chromiumos_dot_build_dot_api_dot_system__image__pb2._SYSTEMIMAGE_BUILDTARGET
-_RELEASETARGET.fields_by_name['signing'].message_type = _RELEASETARGET_SIGNING
+_RELEASETARGET.fields_by_name['build_target'].message_type = chromiumos_dot_build_dot_api_dot_system__image__pb2._SYSTEMIMAGE_BUILDTARGET
+_RELEASETARGET.fields_by_name['variant_targets'].message_type = _RELEASETARGET
+_RELEASETARGET.fields_by_name['signing_instructions'].message_type = chromiumos_dot_config_dot_prototype_dot_signing__pb2._SIGNINGINSTRUCTIONS
+_RELEASETARGET.fields_by_name['criticality'].enum_type = _RELEASETARGET_TARGETCRITICALITY
+_RELEASETARGET_TARGETCRITICALITY.containing_type = _RELEASETARGET
 DESCRIPTOR.message_types_by_name['ReleaseTarget'] = _RELEASETARGET
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 ReleaseTarget = _reflection.GeneratedProtocolMessageType('ReleaseTarget', (_message.Message,), {
-
-  'Signing' : _reflection.GeneratedProtocolMessageType('Signing', (_message.Message,), {
-    'DESCRIPTOR' : _RELEASETARGET_SIGNING,
-    '__module__' : 'chromiumos.config.prototype.release_target_pb2'
-    # @@protoc_insertion_point(class_scope:chromiumos.config.prototype.ReleaseTarget.Signing)
-    })
-  ,
   'DESCRIPTOR' : _RELEASETARGET,
   '__module__' : 'chromiumos.config.prototype.release_target_pb2'
   # @@protoc_insertion_point(class_scope:chromiumos.config.prototype.ReleaseTarget)
   })
 _sym_db.RegisterMessage(ReleaseTarget)
-_sym_db.RegisterMessage(ReleaseTarget.Signing)
 
 
 DESCRIPTOR._options = None
diff --git a/api/gen_sdk/chromiumos/config/prototype/signing_pb2.py b/api/gen_sdk/chromiumos/config/prototype/signing_pb2.py
new file mode 100644
index 0000000..ba2c217
--- /dev/null
+++ b/api/gen_sdk/chromiumos/config/prototype/signing_pb2.py
@@ -0,0 +1,104 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: chromiumos/config/prototype/signing.proto
+
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+  name='chromiumos/config/prototype/signing.proto',
+  package='chromiumos.config.prototype',
+  syntax='proto3',
+  serialized_options=b'Z.go.chromium.org/chromiumos/config/go/prototype',
+  serialized_pb=b'\n)chromiumos/config/prototype/signing.proto\x12\x1b\x63hromiumos.config.prototype\"\x9a\x01\n\x13SigningInstructions\x12\x14\n\x0cpremp_keyset\x18\x01 \x01(\t\x12\x11\n\tmp_keyset\x18\x02 \x01(\t\x12\x17\n\x0f\x66irmware_update\x18\x03 \x01(\x08\x12\x16\n\x0e\x61llow_password\x18\x04 \x01(\x08\x12\x14\n\x0coutput_names\x18\x05 \x01(\t\x12\x13\n\x0binput_files\x18\x06 \x01(\tB0Z.go.chromium.org/chromiumos/config/go/prototypeb\x06proto3'
+)
+
+
+
+
+_SIGNINGINSTRUCTIONS = _descriptor.Descriptor(
+  name='SigningInstructions',
+  full_name='chromiumos.config.prototype.SigningInstructions',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='premp_keyset', full_name='chromiumos.config.prototype.SigningInstructions.premp_keyset', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='mp_keyset', full_name='chromiumos.config.prototype.SigningInstructions.mp_keyset', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='firmware_update', full_name='chromiumos.config.prototype.SigningInstructions.firmware_update', index=2,
+      number=3, type=8, cpp_type=7, label=1,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='allow_password', full_name='chromiumos.config.prototype.SigningInstructions.allow_password', index=3,
+      number=4, type=8, cpp_type=7, label=1,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='output_names', full_name='chromiumos.config.prototype.SigningInstructions.output_names', index=4,
+      number=5, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='input_files', full_name='chromiumos.config.prototype.SigningInstructions.input_files', index=5,
+      number=6, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=75,
+  serialized_end=229,
+)
+
+DESCRIPTOR.message_types_by_name['SigningInstructions'] = _SIGNINGINSTRUCTIONS
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+SigningInstructions = _reflection.GeneratedProtocolMessageType('SigningInstructions', (_message.Message,), {
+  'DESCRIPTOR' : _SIGNINGINSTRUCTIONS,
+  '__module__' : 'chromiumos.config.prototype.signing_pb2'
+  # @@protoc_insertion_point(class_scope:chromiumos.config.prototype.SigningInstructions)
+  })
+_sym_db.RegisterMessage(SigningInstructions)
+
+
+DESCRIPTOR._options = None
+# @@protoc_insertion_point(module_scope)
diff --git a/api/gen_sdk/chromiumos/container_metadata_pb2.py b/api/gen_sdk/chromiumos/container_metadata_pb2.py
new file mode 100644
index 0000000..0f455f1
--- /dev/null
+++ b/api/gen_sdk/chromiumos/container_metadata_pb2.py
@@ -0,0 +1,313 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: chromiumos/container_metadata.proto
+
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+  name='chromiumos/container_metadata.proto',
+  package='chromiumos',
+  syntax='proto3',
+  serialized_options=b'\n!com.google.chrome.crosinfra.protoZ4go.chromium.org/chromiumos/infra/proto/go/chromiumos',
+  serialized_pb=b'\n#chromiumos/container_metadata.proto\x12\nchromiumos\"2\n\rGcrRepository\x12\x10\n\x08hostname\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\"o\n\x12\x43ontainerImageInfo\x12-\n\nrepository\x18\x01 \x01(\x0b\x32\x19.chromiumos.GcrRepository\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06\x64igest\x18\x03 \x01(\t\x12\x0c\n\x04tags\x18\x04 \x03(\t\"\x9d\x01\n\x11\x43ontainerImageMap\x12\x39\n\x06images\x18\x01 \x03(\x0b\x32).chromiumos.ContainerImageMap.ImagesEntry\x1aM\n\x0bImagesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x1e.chromiumos.ContainerImageInfo:\x02\x38\x01\"\xa8\x01\n\x11\x43ontainerMetadata\x12\x41\n\ncontainers\x18\x01 \x03(\x0b\x32-.chromiumos.ContainerMetadata.ContainersEntry\x1aP\n\x0f\x43ontainersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.chromiumos.ContainerImageMap:\x02\x38\x01\x42Y\n!com.google.chrome.crosinfra.protoZ4go.chromium.org/chromiumos/infra/proto/go/chromiumosb\x06proto3'
+)
+
+
+
+
+_GCRREPOSITORY = _descriptor.Descriptor(
+  name='GcrRepository',
+  full_name='chromiumos.GcrRepository',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='hostname', full_name='chromiumos.GcrRepository.hostname', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='project', full_name='chromiumos.GcrRepository.project', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=51,
+  serialized_end=101,
+)
+
+
+_CONTAINERIMAGEINFO = _descriptor.Descriptor(
+  name='ContainerImageInfo',
+  full_name='chromiumos.ContainerImageInfo',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='repository', full_name='chromiumos.ContainerImageInfo.repository', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='name', full_name='chromiumos.ContainerImageInfo.name', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='digest', full_name='chromiumos.ContainerImageInfo.digest', index=2,
+      number=3, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='tags', full_name='chromiumos.ContainerImageInfo.tags', index=3,
+      number=4, type=9, cpp_type=9, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=103,
+  serialized_end=214,
+)
+
+
+_CONTAINERIMAGEMAP_IMAGESENTRY = _descriptor.Descriptor(
+  name='ImagesEntry',
+  full_name='chromiumos.ContainerImageMap.ImagesEntry',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='key', full_name='chromiumos.ContainerImageMap.ImagesEntry.key', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='value', full_name='chromiumos.ContainerImageMap.ImagesEntry.value', index=1,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=b'8\001',
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=297,
+  serialized_end=374,
+)
+
+_CONTAINERIMAGEMAP = _descriptor.Descriptor(
+  name='ContainerImageMap',
+  full_name='chromiumos.ContainerImageMap',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='images', full_name='chromiumos.ContainerImageMap.images', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[_CONTAINERIMAGEMAP_IMAGESENTRY, ],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=217,
+  serialized_end=374,
+)
+
+
+_CONTAINERMETADATA_CONTAINERSENTRY = _descriptor.Descriptor(
+  name='ContainersEntry',
+  full_name='chromiumos.ContainerMetadata.ContainersEntry',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='key', full_name='chromiumos.ContainerMetadata.ContainersEntry.key', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='value', full_name='chromiumos.ContainerMetadata.ContainersEntry.value', index=1,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=b'8\001',
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=465,
+  serialized_end=545,
+)
+
+_CONTAINERMETADATA = _descriptor.Descriptor(
+  name='ContainerMetadata',
+  full_name='chromiumos.ContainerMetadata',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='containers', full_name='chromiumos.ContainerMetadata.containers', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[_CONTAINERMETADATA_CONTAINERSENTRY, ],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=377,
+  serialized_end=545,
+)
+
+_CONTAINERIMAGEINFO.fields_by_name['repository'].message_type = _GCRREPOSITORY
+_CONTAINERIMAGEMAP_IMAGESENTRY.fields_by_name['value'].message_type = _CONTAINERIMAGEINFO
+_CONTAINERIMAGEMAP_IMAGESENTRY.containing_type = _CONTAINERIMAGEMAP
+_CONTAINERIMAGEMAP.fields_by_name['images'].message_type = _CONTAINERIMAGEMAP_IMAGESENTRY
+_CONTAINERMETADATA_CONTAINERSENTRY.fields_by_name['value'].message_type = _CONTAINERIMAGEMAP
+_CONTAINERMETADATA_CONTAINERSENTRY.containing_type = _CONTAINERMETADATA
+_CONTAINERMETADATA.fields_by_name['containers'].message_type = _CONTAINERMETADATA_CONTAINERSENTRY
+DESCRIPTOR.message_types_by_name['GcrRepository'] = _GCRREPOSITORY
+DESCRIPTOR.message_types_by_name['ContainerImageInfo'] = _CONTAINERIMAGEINFO
+DESCRIPTOR.message_types_by_name['ContainerImageMap'] = _CONTAINERIMAGEMAP
+DESCRIPTOR.message_types_by_name['ContainerMetadata'] = _CONTAINERMETADATA
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+GcrRepository = _reflection.GeneratedProtocolMessageType('GcrRepository', (_message.Message,), {
+  'DESCRIPTOR' : _GCRREPOSITORY,
+  '__module__' : 'chromiumos.container_metadata_pb2'
+  # @@protoc_insertion_point(class_scope:chromiumos.GcrRepository)
+  })
+_sym_db.RegisterMessage(GcrRepository)
+
+ContainerImageInfo = _reflection.GeneratedProtocolMessageType('ContainerImageInfo', (_message.Message,), {
+  'DESCRIPTOR' : _CONTAINERIMAGEINFO,
+  '__module__' : 'chromiumos.container_metadata_pb2'
+  # @@protoc_insertion_point(class_scope:chromiumos.ContainerImageInfo)
+  })
+_sym_db.RegisterMessage(ContainerImageInfo)
+
+ContainerImageMap = _reflection.GeneratedProtocolMessageType('ContainerImageMap', (_message.Message,), {
+
+  'ImagesEntry' : _reflection.GeneratedProtocolMessageType('ImagesEntry', (_message.Message,), {
+    'DESCRIPTOR' : _CONTAINERIMAGEMAP_IMAGESENTRY,
+    '__module__' : 'chromiumos.container_metadata_pb2'
+    # @@protoc_insertion_point(class_scope:chromiumos.ContainerImageMap.ImagesEntry)
+    })
+  ,
+  'DESCRIPTOR' : _CONTAINERIMAGEMAP,
+  '__module__' : 'chromiumos.container_metadata_pb2'
+  # @@protoc_insertion_point(class_scope:chromiumos.ContainerImageMap)
+  })
+_sym_db.RegisterMessage(ContainerImageMap)
+_sym_db.RegisterMessage(ContainerImageMap.ImagesEntry)
+
+ContainerMetadata = _reflection.GeneratedProtocolMessageType('ContainerMetadata', (_message.Message,), {
+
+  'ContainersEntry' : _reflection.GeneratedProtocolMessageType('ContainersEntry', (_message.Message,), {
+    'DESCRIPTOR' : _CONTAINERMETADATA_CONTAINERSENTRY,
+    '__module__' : 'chromiumos.container_metadata_pb2'
+    # @@protoc_insertion_point(class_scope:chromiumos.ContainerMetadata.ContainersEntry)
+    })
+  ,
+  'DESCRIPTOR' : _CONTAINERMETADATA,
+  '__module__' : 'chromiumos.container_metadata_pb2'
+  # @@protoc_insertion_point(class_scope:chromiumos.ContainerMetadata)
+  })
+_sym_db.RegisterMessage(ContainerMetadata)
+_sym_db.RegisterMessage(ContainerMetadata.ContainersEntry)
+
+
+DESCRIPTOR._options = None
+_CONTAINERIMAGEMAP_IMAGESENTRY._options = None
+_CONTAINERMETADATA_CONTAINERSENTRY._options = None
+# @@protoc_insertion_point(module_scope)
diff --git a/api/gen_sdk/chromiumos/test/api/dut_attribute_pb2.py b/api/gen_sdk/chromiumos/test/api/dut_attribute_pb2.py
index e0a7600..e5cdb43 100644
--- a/api/gen_sdk/chromiumos/test/api/dut_attribute_pb2.py
+++ b/api/gen_sdk/chromiumos/test/api/dut_attribute_pb2.py
@@ -18,7 +18,7 @@
   package='chromiumos.test.api',
   syntax='proto3',
   serialized_options=b'Z-go.chromium.org/chromiumos/config/go/test/api',
-  serialized_pb=b'\n\'chromiumos/test/api/dut_attribute.proto\x12\x13\x63hromiumos.test.api\"i\n\x0c\x44utAttribute\x12\x30\n\x02id\x18\x01 \x01(\x0b\x32$.chromiumos.test.api.DutAttribute.Id\x12\x12\n\nfield_path\x18\x02 \x01(\t\x1a\x13\n\x02Id\x12\r\n\x05value\x18\x01 \x01(\t\"M\n\x10\x44utAttributeList\x12\x39\n\x0e\x64ut_attributes\x18\x01 \x03(\x0b\x32!.chromiumos.test.api.DutAttribute\"Z\n\x0c\x44utCriterion\x12:\n\x0c\x61ttribute_id\x18\x01 \x01(\x0b\x32$.chromiumos.test.api.DutAttribute.Id\x12\x0e\n\x06values\x18\x02 \x03(\tB/Z-go.chromium.org/chromiumos/config/go/test/apib\x06proto3'
+  serialized_pb=b'\n\'chromiumos/test/api/dut_attribute.proto\x12\x13\x63hromiumos.test.api\"\x8b\x04\n\x0c\x44utAttribute\x12\x30\n\x02id\x18\x01 \x01(\x0b\x32$.chromiumos.test.api.DutAttribute.Id\x12\x0f\n\x07\x61liases\x18\x02 \x03(\t\x12P\n\x12\x66lat_config_source\x18\x03 \x01(\x0b\x32\x32.chromiumos.test.api.DutAttribute.FlatConfigSourceH\x00\x12\x43\n\x0bhwid_source\x18\x04 \x01(\x0b\x32,.chromiumos.test.api.DutAttribute.HwidSourceH\x00\x12\x16\n\x0e\x61llowed_values\x18\x05 \x03(\t\x12\x16\n\x0e\x65xclude_values\x18\x06 \x03(\t\x1a\x13\n\x02Id\x12\r\n\x05value\x18\x01 \x01(\t\x1a\x19\n\tFieldSpec\x12\x0c\n\x04path\x18\x01 \x01(\t\x1aO\n\x10\x46latConfigSource\x12;\n\x06\x66ields\x18\x01 \x03(\x0b\x32+.chromiumos.test.api.DutAttribute.FieldSpec\x1a\x61\n\nHwidSource\x12\x16\n\x0e\x63omponent_type\x18\x01 \x01(\t\x12;\n\x06\x66ields\x18\x02 \x03(\x0b\x32+.chromiumos.test.api.DutAttribute.FieldSpecB\r\n\x0b\x64\x61ta_source\"M\n\x10\x44utAttributeList\x12\x39\n\x0e\x64ut_attributes\x18\x01 \x03(\x0b\x32!.chromiumos.test.api.DutAttribute\"Z\n\x0c\x44utCriterion\x12:\n\x0c\x61ttribute_id\x18\x01 \x01(\x0b\x32$.chromiumos.test.api.DutAttribute.Id\x12\x0e\n\x06values\x18\x02 \x03(\tB/Z-go.chromium.org/chromiumos/config/go/test/apib\x06proto3'
 )
 
 
@@ -50,8 +50,105 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=150,
-  serialized_end=169,
+  serialized_start=347,
+  serialized_end=366,
+)
+
+_DUTATTRIBUTE_FIELDSPEC = _descriptor.Descriptor(
+  name='FieldSpec',
+  full_name='chromiumos.test.api.DutAttribute.FieldSpec',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='path', full_name='chromiumos.test.api.DutAttribute.FieldSpec.path', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=368,
+  serialized_end=393,
+)
+
+_DUTATTRIBUTE_FLATCONFIGSOURCE = _descriptor.Descriptor(
+  name='FlatConfigSource',
+  full_name='chromiumos.test.api.DutAttribute.FlatConfigSource',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='fields', full_name='chromiumos.test.api.DutAttribute.FlatConfigSource.fields', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=395,
+  serialized_end=474,
+)
+
+_DUTATTRIBUTE_HWIDSOURCE = _descriptor.Descriptor(
+  name='HwidSource',
+  full_name='chromiumos.test.api.DutAttribute.HwidSource',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='component_type', full_name='chromiumos.test.api.DutAttribute.HwidSource.component_type', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='fields', full_name='chromiumos.test.api.DutAttribute.HwidSource.fields', index=1,
+      number=2, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=476,
+  serialized_end=573,
 )
 
 _DUTATTRIBUTE = _descriptor.Descriptor(
@@ -69,16 +166,44 @@
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='field_path', full_name='chromiumos.test.api.DutAttribute.field_path', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
+      name='aliases', full_name='chromiumos.test.api.DutAttribute.aliases', index=1,
+      number=2, type=9, cpp_type=9, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='flat_config_source', full_name='chromiumos.test.api.DutAttribute.flat_config_source', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='hwid_source', full_name='chromiumos.test.api.DutAttribute.hwid_source', index=3,
+      number=4, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='allowed_values', full_name='chromiumos.test.api.DutAttribute.allowed_values', index=4,
+      number=5, type=9, cpp_type=9, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='exclude_values', full_name='chromiumos.test.api.DutAttribute.exclude_values', index=5,
+      number=6, type=9, cpp_type=9, label=3,
+      has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
-  nested_types=[_DUTATTRIBUTE_ID, ],
+  nested_types=[_DUTATTRIBUTE_ID, _DUTATTRIBUTE_FIELDSPEC, _DUTATTRIBUTE_FLATCONFIGSOURCE, _DUTATTRIBUTE_HWIDSOURCE, ],
   enum_types=[
   ],
   serialized_options=None,
@@ -86,9 +211,12 @@
   syntax='proto3',
   extension_ranges=[],
   oneofs=[
+    _descriptor.OneofDescriptor(
+      name='data_source', full_name='chromiumos.test.api.DutAttribute.data_source',
+      index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=64,
-  serialized_end=169,
+  serialized_start=65,
+  serialized_end=588,
 )
 
 
@@ -118,8 +246,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=171,
-  serialized_end=248,
+  serialized_start=590,
+  serialized_end=667,
 )
 
 
@@ -156,12 +284,25 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=250,
-  serialized_end=340,
+  serialized_start=669,
+  serialized_end=759,
 )
 
 _DUTATTRIBUTE_ID.containing_type = _DUTATTRIBUTE
+_DUTATTRIBUTE_FIELDSPEC.containing_type = _DUTATTRIBUTE
+_DUTATTRIBUTE_FLATCONFIGSOURCE.fields_by_name['fields'].message_type = _DUTATTRIBUTE_FIELDSPEC
+_DUTATTRIBUTE_FLATCONFIGSOURCE.containing_type = _DUTATTRIBUTE
+_DUTATTRIBUTE_HWIDSOURCE.fields_by_name['fields'].message_type = _DUTATTRIBUTE_FIELDSPEC
+_DUTATTRIBUTE_HWIDSOURCE.containing_type = _DUTATTRIBUTE
 _DUTATTRIBUTE.fields_by_name['id'].message_type = _DUTATTRIBUTE_ID
+_DUTATTRIBUTE.fields_by_name['flat_config_source'].message_type = _DUTATTRIBUTE_FLATCONFIGSOURCE
+_DUTATTRIBUTE.fields_by_name['hwid_source'].message_type = _DUTATTRIBUTE_HWIDSOURCE
+_DUTATTRIBUTE.oneofs_by_name['data_source'].fields.append(
+  _DUTATTRIBUTE.fields_by_name['flat_config_source'])
+_DUTATTRIBUTE.fields_by_name['flat_config_source'].containing_oneof = _DUTATTRIBUTE.oneofs_by_name['data_source']
+_DUTATTRIBUTE.oneofs_by_name['data_source'].fields.append(
+  _DUTATTRIBUTE.fields_by_name['hwid_source'])
+_DUTATTRIBUTE.fields_by_name['hwid_source'].containing_oneof = _DUTATTRIBUTE.oneofs_by_name['data_source']
 _DUTATTRIBUTELIST.fields_by_name['dut_attributes'].message_type = _DUTATTRIBUTE
 _DUTCRITERION.fields_by_name['attribute_id'].message_type = _DUTATTRIBUTE_ID
 DESCRIPTOR.message_types_by_name['DutAttribute'] = _DUTATTRIBUTE
@@ -177,12 +318,36 @@
     # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutAttribute.Id)
     })
   ,
+
+  'FieldSpec' : _reflection.GeneratedProtocolMessageType('FieldSpec', (_message.Message,), {
+    'DESCRIPTOR' : _DUTATTRIBUTE_FIELDSPEC,
+    '__module__' : 'chromiumos.test.api.dut_attribute_pb2'
+    # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutAttribute.FieldSpec)
+    })
+  ,
+
+  'FlatConfigSource' : _reflection.GeneratedProtocolMessageType('FlatConfigSource', (_message.Message,), {
+    'DESCRIPTOR' : _DUTATTRIBUTE_FLATCONFIGSOURCE,
+    '__module__' : 'chromiumos.test.api.dut_attribute_pb2'
+    # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutAttribute.FlatConfigSource)
+    })
+  ,
+
+  'HwidSource' : _reflection.GeneratedProtocolMessageType('HwidSource', (_message.Message,), {
+    'DESCRIPTOR' : _DUTATTRIBUTE_HWIDSOURCE,
+    '__module__' : 'chromiumos.test.api.dut_attribute_pb2'
+    # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutAttribute.HwidSource)
+    })
+  ,
   'DESCRIPTOR' : _DUTATTRIBUTE,
   '__module__' : 'chromiumos.test.api.dut_attribute_pb2'
   # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutAttribute)
   })
 _sym_db.RegisterMessage(DutAttribute)
 _sym_db.RegisterMessage(DutAttribute.Id)
+_sym_db.RegisterMessage(DutAttribute.FieldSpec)
+_sym_db.RegisterMessage(DutAttribute.FlatConfigSource)
+_sym_db.RegisterMessage(DutAttribute.HwidSource)
 
 DutAttributeList = _reflection.GeneratedProtocolMessageType('DutAttributeList', (_message.Message,), {
   'DESCRIPTOR' : _DUTATTRIBUTELIST,
diff --git a/api/gen_sdk/chromiumos/test/api/provision_cli_pb2.py b/api/gen_sdk/chromiumos/test/api/provision_cli_pb2.py
index c5c2a54..b5f42b3 100644
--- a/api/gen_sdk/chromiumos/test/api/provision_cli_pb2.py
+++ b/api/gen_sdk/chromiumos/test/api/provision_cli_pb2.py
@@ -21,7 +21,7 @@
   package='chromiumos.test.api',
   syntax='proto3',
   serialized_options=b'Z-go.chromium.org/chromiumos/config/go/test/api',
-  serialized_pb=b'\n\'chromiumos/test/api/provision_cli.proto\x12\x13\x63hromiumos.test.api\x1a!chromiumos/test/lab/api/dut.proto\x1a)chromiumos/test/api/provision_state.proto\x1a+chromiumos/test/api/provision_service.proto\"F\n\x11ProvisionCliInput\x12\x31\n\ndut_inputs\x18\x01 \x03(\x0b\x32\x1d.chromiumos.test.api.DutInput\"\x89\x01\n\x08\x44utInput\x12+\n\x02id\x18\x01 \x01(\x0b\x32\x1f.chromiumos.test.lab.api.Dut.Id\x12\x12\n\ndocker_tag\x18\x02 \x01(\t\x12<\n\x0fprovision_state\x18\x03 \x01(\x0b\x32#.chromiumos.test.api.ProvisionState\"I\n\x12ProvisionCliOutput\x12\x33\n\x0b\x64ut_outputs\x18\x01 \x03(\x0b\x32\x1e.chromiumos.test.api.DutOutput\"\xb3\x01\n\tDutOutput\x12+\n\x02id\x18\x01 \x01(\x0b\x32\x1f.chromiumos.test.lab.api.Dut.Id\x12\x36\n\x07success\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcomeB/Z-go.chromium.org/chromiumos/config/go/test/apib\x06proto3'
+  serialized_pb=b'\n\'chromiumos/test/api/provision_cli.proto\x12\x13\x63hromiumos.test.api\x1a!chromiumos/test/lab/api/dut.proto\x1a)chromiumos/test/api/provision_state.proto\x1a+chromiumos/test/api/provision_service.proto\"F\n\x11ProvisionCliInput\x12\x31\n\ndut_inputs\x18\x01 \x03(\x0b\x32\x1d.chromiumos.test.api.DutInput\"\xb6\x02\n\x08\x44utInput\x12+\n\x02id\x18\x01 \x01(\x0b\x32\x1f.chromiumos.test.lab.api.Dut.Id\x12<\n\x0fprovision_state\x18\x03 \x01(\x0b\x32#.chromiumos.test.api.ProvisionState\x12>\n\x0b\x64ut_service\x18\x04 \x01(\x0b\x32).chromiumos.test.api.DutInput.DockerImage\x12\x44\n\x11provision_service\x18\x05 \x01(\x0b\x32).chromiumos.test.api.DutInput.DockerImage\x1a\x33\n\x0b\x44ockerImage\x12\x17\n\x0frepository_path\x18\x01 \x01(\t\x12\x0b\n\x03tag\x18\x02 \x01(\tJ\x04\x08\x02\x10\x03\"I\n\x12ProvisionCliOutput\x12\x33\n\x0b\x64ut_outputs\x18\x01 \x03(\x0b\x32\x1e.chromiumos.test.api.DutOutput\"\xb3\x01\n\tDutOutput\x12+\n\x02id\x18\x01 \x01(\x0b\x32\x1f.chromiumos.test.lab.api.Dut.Id\x12\x36\n\x07success\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcomeB/Z-go.chromium.org/chromiumos/config/go/test/apib\x06proto3'
   ,
   dependencies=[chromiumos_dot_test_dot_lab_dot_api_dot_dut__pb2.DESCRIPTOR,chromiumos_dot_test_dot_api_dot_provision__state__pb2.DESCRIPTOR,chromiumos_dot_test_dot_api_dot_provision__service__pb2.DESCRIPTOR,])
 
@@ -59,31 +59,24 @@
 )
 
 
-_DUTINPUT = _descriptor.Descriptor(
-  name='DutInput',
-  full_name='chromiumos.test.api.DutInput',
+_DUTINPUT_DOCKERIMAGE = _descriptor.Descriptor(
+  name='DockerImage',
+  full_name='chromiumos.test.api.DutInput.DockerImage',
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
   fields=[
     _descriptor.FieldDescriptor(
-      name='id', full_name='chromiumos.test.api.DutInput.id', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='docker_tag', full_name='chromiumos.test.api.DutInput.docker_tag', index=1,
-      number=2, type=9, cpp_type=9, label=1,
+      name='repository_path', full_name='chromiumos.test.api.DutInput.DockerImage.repository_path', index=0,
+      number=1, type=9, cpp_type=9, label=1,
       has_default_value=False, default_value=b"".decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='provision_state', full_name='chromiumos.test.api.DutInput.provision_state', index=2,
-      number=3, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
+      name='tag', full_name='chromiumos.test.api.DutInput.DockerImage.tag', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
@@ -99,8 +92,59 @@
   extension_ranges=[],
   oneofs=[
   ],
+  serialized_start=513,
+  serialized_end=564,
+)
+
+_DUTINPUT = _descriptor.Descriptor(
+  name='DutInput',
+  full_name='chromiumos.test.api.DutInput',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='id', full_name='chromiumos.test.api.DutInput.id', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='provision_state', full_name='chromiumos.test.api.DutInput.provision_state', index=1,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='dut_service', full_name='chromiumos.test.api.DutInput.dut_service', index=2,
+      number=4, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='provision_service', full_name='chromiumos.test.api.DutInput.provision_service', index=3,
+      number=5, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[_DUTINPUT_DOCKERIMAGE, ],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
   serialized_start=260,
-  serialized_end=397,
+  serialized_end=570,
 )
 
 
@@ -130,8 +174,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=399,
-  serialized_end=472,
+  serialized_start=572,
+  serialized_end=645,
 )
 
 
@@ -178,13 +222,16 @@
       name='outcome', full_name='chromiumos.test.api.DutOutput.outcome',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=475,
-  serialized_end=654,
+  serialized_start=648,
+  serialized_end=827,
 )
 
 _PROVISIONCLIINPUT.fields_by_name['dut_inputs'].message_type = _DUTINPUT
+_DUTINPUT_DOCKERIMAGE.containing_type = _DUTINPUT
 _DUTINPUT.fields_by_name['id'].message_type = chromiumos_dot_test_dot_lab_dot_api_dot_dut__pb2._DUT_ID
 _DUTINPUT.fields_by_name['provision_state'].message_type = chromiumos_dot_test_dot_api_dot_provision__state__pb2._PROVISIONSTATE
+_DUTINPUT.fields_by_name['dut_service'].message_type = _DUTINPUT_DOCKERIMAGE
+_DUTINPUT.fields_by_name['provision_service'].message_type = _DUTINPUT_DOCKERIMAGE
 _PROVISIONCLIOUTPUT.fields_by_name['dut_outputs'].message_type = _DUTOUTPUT
 _DUTOUTPUT.fields_by_name['id'].message_type = chromiumos_dot_test_dot_lab_dot_api_dot_dut__pb2._DUT_ID
 _DUTOUTPUT.fields_by_name['success'].message_type = chromiumos_dot_test_dot_api_dot_provision__service__pb2._INSTALLSUCCESS
@@ -209,11 +256,19 @@
 _sym_db.RegisterMessage(ProvisionCliInput)
 
 DutInput = _reflection.GeneratedProtocolMessageType('DutInput', (_message.Message,), {
+
+  'DockerImage' : _reflection.GeneratedProtocolMessageType('DockerImage', (_message.Message,), {
+    'DESCRIPTOR' : _DUTINPUT_DOCKERIMAGE,
+    '__module__' : 'chromiumos.test.api.provision_cli_pb2'
+    # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutInput.DockerImage)
+    })
+  ,
   'DESCRIPTOR' : _DUTINPUT,
   '__module__' : 'chromiumos.test.api.provision_cli_pb2'
   # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutInput)
   })
 _sym_db.RegisterMessage(DutInput)
+_sym_db.RegisterMessage(DutInput.DockerImage)
 
 ProvisionCliOutput = _reflection.GeneratedProtocolMessageType('ProvisionCliOutput', (_message.Message,), {
   'DESCRIPTOR' : _PROVISIONCLIOUTPUT,
diff --git a/api/gen_sdk/chromiumos/test/api/provision_service_pb2.py b/api/gen_sdk/chromiumos/test/api/provision_service_pb2.py
index 0522756..a7f6aea 100644
--- a/api/gen_sdk/chromiumos/test/api/provision_service_pb2.py
+++ b/api/gen_sdk/chromiumos/test/api/provision_service_pb2.py
@@ -21,7 +21,7 @@
   package='chromiumos.test.api',
   syntax='proto3',
   serialized_options=b'Z-go.chromium.org/chromiumos/config/go/test/api',
-  serialized_pb=b'\n+chromiumos/test/api/provision_service.proto\x12\x13\x63hromiumos.test.api\x1a*chromiumos/build/api/firmware_config.proto\x1a\'chromiumos/longrunning/operations.proto\x1a\x1d\x63hromiumos/storage_path.proto\"\x10\n\x0eInstallSuccess\"\xaf\x02\n\x0eInstallFailure\x12:\n\x06reason\x18\x01 \x01(\x0e\x32*.chromiumos.test.api.InstallFailure.Reason\"\xe0\x01\n\x06Reason\x12\x1a\n\x16REASON_INVALID_REQUEST\x10\x00\x12(\n$REASON_DUT_UNREACHABLE_PRE_PROVISION\x10\x01\x12#\n\x1fREASON_DOWNLOADING_IMAGE_FAILED\x10\x02\x12 \n\x1cREASON_PROVISIONING_TIMEDOUT\x10\x03\x12\x1e\n\x1aREASON_PROVISIONING_FAILED\x10\x04\x12)\n%REASON_DUT_UNREACHABLE_POST_PROVISION\x10\x05\"\xbc\x01\n\x12InstallCrosRequest\x12\x30\n\x0f\x63ros_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\x12\x42\n\tdlc_specs\x18\x02 \x03(\x0b\x32/.chromiumos.test.api.InstallCrosRequest.DLCSpec\x12\x19\n\x11preserve_stateful\x18\x03 \x01(\x08\x1a\x15\n\x07\x44LCSpec\x12\n\n\x02id\x18\x01 \x01(\t\"\x90\x01\n\x13InstallCrosResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x15\n\x13InstallCrosMetadata\"J\n\x14InstallLacrosRequest\x12\x32\n\x11lacros_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\"\x92\x01\n\x15InstallLacrosResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x17\n\x15InstallLacrosMetadata\"D\n\x11InstallAshRequest\x12/\n\x0e\x61sh_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\"\x8f\x01\n\x12InstallAshResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x14\n\x12InstallAshMetadata\"D\n\x11InstallArcRequest\x12/\n\x0e\x61sh_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\"\x8f\x01\n\x12InstallArcResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x14\n\x12InstallArcMetadata\"W\n\x16InstallFirmwareRequest\x12=\n\x0f\x66irmware_config\x18\x01 \x01(\x0b\x32$.chromiumos.build.api.FirmwareConfig\"\x94\x01\n\x17InstallFirmwareResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x19\n\x17InstallFirmwareMetadata2\xd9\x05\n\x10ProvisionService\x12\x88\x01\n\x0bInstallCros\x12\'.chromiumos.test.api.InstallCrosRequest\x1a!.chromiumos.longrunning.Operation\"-\xd2\x41*\n\x13InstallCrosResponse\x12\x13InstallCrosMetadata\x12\x90\x01\n\rInstallLacros\x12).chromiumos.test.api.InstallLacrosRequest\x1a!.chromiumos.longrunning.Operation\"1\xd2\x41.\n\x15InstallLacrosResponse\x12\x15InstallLacrosMetadata\x12\x84\x01\n\nInstallAsh\x12&.chromiumos.test.api.InstallAshRequest\x1a!.chromiumos.longrunning.Operation\"+\xd2\x41(\n\x12InstallAshResponse\x12\x12InstallAshMetadata\x12\x84\x01\n\nInstallArc\x12&.chromiumos.test.api.InstallArcRequest\x1a!.chromiumos.longrunning.Operation\"+\xd2\x41(\n\x12InstallArcResponse\x12\x12InstallArcMetadata\x12\x98\x01\n\x0fInstallFirmware\x12+.chromiumos.test.api.InstallFirmwareRequest\x1a!.chromiumos.longrunning.Operation\"5\xd2\x41\x32\n\x17InstallFirmwareResponse\x12\x17InstallFirmwareMetadataB/Z-go.chromium.org/chromiumos/config/go/test/apib\x06proto3'
+  serialized_pb=b'\n+chromiumos/test/api/provision_service.proto\x12\x13\x63hromiumos.test.api\x1a*chromiumos/build/api/firmware_config.proto\x1a\'chromiumos/longrunning/operations.proto\x1a\x1d\x63hromiumos/storage_path.proto\"\x10\n\x0eInstallSuccess\"\xaf\x02\n\x0eInstallFailure\x12:\n\x06reason\x18\x01 \x01(\x0e\x32*.chromiumos.test.api.InstallFailure.Reason\"\xe0\x01\n\x06Reason\x12\x1a\n\x16REASON_INVALID_REQUEST\x10\x00\x12(\n$REASON_DUT_UNREACHABLE_PRE_PROVISION\x10\x01\x12#\n\x1fREASON_DOWNLOADING_IMAGE_FAILED\x10\x02\x12 \n\x1cREASON_PROVISIONING_TIMEDOUT\x10\x03\x12\x1e\n\x1aREASON_PROVISIONING_FAILED\x10\x04\x12)\n%REASON_DUT_UNREACHABLE_POST_PROVISION\x10\x05\"\xd4\x01\n\x12InstallCrosRequest\x12\x30\n\x0f\x63ros_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\x12\x42\n\tdlc_specs\x18\x02 \x03(\x0b\x32/.chromiumos.test.api.InstallCrosRequest.DLCSpec\x12\x19\n\x11preserve_stateful\x18\x03 \x01(\x08\x12\x16\n\x0eprevent_reboot\x18\x04 \x01(\x08\x1a\x15\n\x07\x44LCSpec\x12\n\n\x02id\x18\x01 \x01(\t\"\x90\x01\n\x13InstallCrosResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x15\n\x13InstallCrosMetadata\"J\n\x14InstallLacrosRequest\x12\x32\n\x11lacros_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\"\x92\x01\n\x15InstallLacrosResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x17\n\x15InstallLacrosMetadata\"D\n\x11InstallAshRequest\x12/\n\x0e\x61sh_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\"\x8f\x01\n\x12InstallAshResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x14\n\x12InstallAshMetadata\"D\n\x11InstallArcRequest\x12/\n\x0e\x61sh_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\"\x8f\x01\n\x12InstallArcResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x14\n\x12InstallArcMetadata\"W\n\x16InstallFirmwareRequest\x12=\n\x0f\x66irmware_config\x18\x01 \x01(\x0b\x32$.chromiumos.build.api.FirmwareConfig\"\x94\x01\n\x17InstallFirmwareResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x19\n\x17InstallFirmwareMetadata2\xd9\x05\n\x10ProvisionService\x12\x88\x01\n\x0bInstallCros\x12\'.chromiumos.test.api.InstallCrosRequest\x1a!.chromiumos.longrunning.Operation\"-\xd2\x41*\n\x13InstallCrosResponse\x12\x13InstallCrosMetadata\x12\x90\x01\n\rInstallLacros\x12).chromiumos.test.api.InstallLacrosRequest\x1a!.chromiumos.longrunning.Operation\"1\xd2\x41.\n\x15InstallLacrosResponse\x12\x15InstallLacrosMetadata\x12\x84\x01\n\nInstallAsh\x12&.chromiumos.test.api.InstallAshRequest\x1a!.chromiumos.longrunning.Operation\"+\xd2\x41(\n\x12InstallAshResponse\x12\x12InstallAshMetadata\x12\x84\x01\n\nInstallArc\x12&.chromiumos.test.api.InstallArcRequest\x1a!.chromiumos.longrunning.Operation\"+\xd2\x41(\n\x12InstallArcResponse\x12\x12InstallArcMetadata\x12\x98\x01\n\x0fInstallFirmware\x12+.chromiumos.test.api.InstallFirmwareRequest\x1a!.chromiumos.longrunning.Operation\"5\xd2\x41\x32\n\x17InstallFirmwareResponse\x12\x17InstallFirmwareMetadataB/Z-go.chromium.org/chromiumos/config/go/test/apib\x06proto3'
   ,
   dependencies=[chromiumos_dot_build_dot_api_dot_firmware__config__pb2.DESCRIPTOR,chromiumos_dot_longrunning_dot_operations__pb2.DESCRIPTOR,chromiumos_dot_storage__path__pb2.DESCRIPTOR,])
 
@@ -148,8 +148,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=676,
-  serialized_end=697,
+  serialized_start=700,
+  serialized_end=721,
 )
 
 _INSTALLCROSREQUEST = _descriptor.Descriptor(
@@ -180,6 +180,13 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='prevent_reboot', full_name='chromiumos.test.api.InstallCrosRequest.prevent_reboot', index=3,
+      number=4, type=8, cpp_type=7, label=1,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
@@ -193,7 +200,7 @@
   oneofs=[
   ],
   serialized_start=509,
-  serialized_end=697,
+  serialized_end=721,
 )
 
 
@@ -233,8 +240,8 @@
       name='outcome', full_name='chromiumos.test.api.InstallCrosResponse.outcome',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=700,
-  serialized_end=844,
+  serialized_start=724,
+  serialized_end=868,
 )
 
 
@@ -257,8 +264,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=846,
-  serialized_end=867,
+  serialized_start=870,
+  serialized_end=891,
 )
 
 
@@ -288,8 +295,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=869,
-  serialized_end=943,
+  serialized_start=893,
+  serialized_end=967,
 )
 
 
@@ -329,8 +336,8 @@
       name='outcome', full_name='chromiumos.test.api.InstallLacrosResponse.outcome',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=946,
-  serialized_end=1092,
+  serialized_start=970,
+  serialized_end=1116,
 )
 
 
@@ -353,8 +360,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1094,
-  serialized_end=1117,
+  serialized_start=1118,
+  serialized_end=1141,
 )
 
 
@@ -384,8 +391,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1119,
-  serialized_end=1187,
+  serialized_start=1143,
+  serialized_end=1211,
 )
 
 
@@ -425,8 +432,8 @@
       name='outcome', full_name='chromiumos.test.api.InstallAshResponse.outcome',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=1190,
-  serialized_end=1333,
+  serialized_start=1214,
+  serialized_end=1357,
 )
 
 
@@ -449,8 +456,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1335,
-  serialized_end=1355,
+  serialized_start=1359,
+  serialized_end=1379,
 )
 
 
@@ -480,8 +487,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1357,
-  serialized_end=1425,
+  serialized_start=1381,
+  serialized_end=1449,
 )
 
 
@@ -521,8 +528,8 @@
       name='outcome', full_name='chromiumos.test.api.InstallArcResponse.outcome',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=1428,
-  serialized_end=1571,
+  serialized_start=1452,
+  serialized_end=1595,
 )
 
 
@@ -545,8 +552,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1573,
-  serialized_end=1593,
+  serialized_start=1597,
+  serialized_end=1617,
 )
 
 
@@ -576,8 +583,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1595,
-  serialized_end=1682,
+  serialized_start=1619,
+  serialized_end=1706,
 )
 
 
@@ -617,8 +624,8 @@
       name='outcome', full_name='chromiumos.test.api.InstallFirmwareResponse.outcome',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=1685,
-  serialized_end=1833,
+  serialized_start=1709,
+  serialized_end=1857,
 )
 
 
@@ -641,8 +648,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1835,
-  serialized_end=1860,
+  serialized_start=1859,
+  serialized_end=1884,
 )
 
 _INSTALLFAILURE.fields_by_name['reason'].enum_type = _INSTALLFAILURE_REASON
@@ -849,8 +856,8 @@
   file=DESCRIPTOR,
   index=0,
   serialized_options=None,
-  serialized_start=1863,
-  serialized_end=2592,
+  serialized_start=1887,
+  serialized_end=2616,
   methods=[
   _descriptor.MethodDescriptor(
     name='InstallCros',
diff --git a/api/gen_sdk/test_platform/v2/request_pb2.py b/api/gen_sdk/test_platform/v2/request_pb2.py
index 779749f..dc6b514 100644
--- a/api/gen_sdk/test_platform/v2/request_pb2.py
+++ b/api/gen_sdk/test_platform/v2/request_pb2.py
@@ -11,7 +11,9 @@
 _sym_db = _symbol_database.Default()
 
 
+from chromite.api.gen_sdk.chromiumos import common_pb2 as chromiumos_dot_common__pb2
 from chromite.api.gen_sdk.chromiumos.test.api import coverage_rule_pb2 as chromiumos_dot_test_dot_api_dot_coverage__rule__pb2
+from chromite.api.gen_sdk.chromiumos.test.api import provision_state_pb2 as chromiumos_dot_test_dot_api_dot_provision__state__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
@@ -19,27 +21,34 @@
   package='test_platform.v2',
   syntax='proto3',
   serialized_options=b'Z:go.chromium.org/chromiumos/infra/proto/go/test_platform/v2',
-  serialized_pb=b'\n\x1etest_platform/v2/request.proto\x12\x10test_platform.v2\x1a\'chromiumos/test/api/coverage_rule.proto\"\x93\x01\n\x11HWTestRequestBeta\x12@\n\ntest_specs\x18\x01 \x03(\x0b\x32,.test_platform.v2.HWTestRequestBeta.TestSpec\x1a<\n\x08TestSpec\x12\x30\n\x05rules\x18\x01 \x01(\x0b\x32!.chromiumos.test.api.CoverageRule\"X\n\x0bRequestBeta\x12>\n\x0fhw_test_request\x18\x01 \x01(\x0b\x32#.test_platform.v2.HWTestRequestBetaH\x00\x42\t\n\x07requestB<Z:go.chromium.org/chromiumos/infra/proto/go/test_platform/v2b\x06proto3'
+  serialized_pb=b'\n\x1etest_platform/v2/request.proto\x12\x10test_platform.v2\x1a\x17\x63hromiumos/common.proto\x1a\'chromiumos/test/api/coverage_rule.proto\x1a)chromiumos/test/api/provision_state.proto\"\x85\x01\n\nHWTestSpec\x12\x38\n\rcoverage_rule\x18\x01 \x01(\x0b\x32!.chromiumos.test.api.CoverageRule\x12=\n\x10provision_states\x18\x02 \x03(\x0b\x32#.chromiumos.test.api.ProvisionState\"v\n\x08TestSpec\x12,\n\x0f\x62uild_directory\x18\x01 \x01(\x0b\x32\x13.chromiumos.GcsPath\x12\x34\n\x0chw_test_spec\x18\x02 \x01(\x0b\x32\x1c.test_platform.v2.HWTestSpecH\x00\x42\x06\n\x04spec\"\xe7\x01\n\x07Request\x12,\n\x0f\x62uild_directory\x18\x01 \x01(\x0b\x32\x13.chromiumos.GcsPath\x12.\n\ntest_specs\x18\x02 \x03(\x0b\x32\x1a.test_platform.v2.TestSpec\x12G\n\x12scheduler_settings\x18\x03 \x01(\x0b\x32+.test_platform.v2.Request.SchedulerSettings\x1a\x35\n\x11SchedulerSettings\x12\x0c\n\x04pool\x18\x01 \x01(\t\x12\x12\n\nqs_account\x18\x02 \x01(\tB<Z:go.chromium.org/chromiumos/infra/proto/go/test_platform/v2b\x06proto3'
   ,
-  dependencies=[chromiumos_dot_test_dot_api_dot_coverage__rule__pb2.DESCRIPTOR,])
+  dependencies=[chromiumos_dot_common__pb2.DESCRIPTOR,chromiumos_dot_test_dot_api_dot_coverage__rule__pb2.DESCRIPTOR,chromiumos_dot_test_dot_api_dot_provision__state__pb2.DESCRIPTOR,])
 
 
 
 
-_HWTESTREQUESTBETA_TESTSPEC = _descriptor.Descriptor(
-  name='TestSpec',
-  full_name='test_platform.v2.HWTestRequestBeta.TestSpec',
+_HWTESTSPEC = _descriptor.Descriptor(
+  name='HWTestSpec',
+  full_name='test_platform.v2.HWTestSpec',
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
   fields=[
     _descriptor.FieldDescriptor(
-      name='rules', full_name='test_platform.v2.HWTestRequestBeta.TestSpec.rules', index=0,
+      name='coverage_rule', full_name='test_platform.v2.HWTestSpec.coverage_rule', index=0,
       number=1, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='provision_states', full_name='test_platform.v2.HWTestSpec.provision_states', index=1,
+      number=2, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
@@ -52,51 +61,28 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=181,
-  serialized_end=241,
+  serialized_start=162,
+  serialized_end=295,
 )
 
-_HWTESTREQUESTBETA = _descriptor.Descriptor(
-  name='HWTestRequestBeta',
-  full_name='test_platform.v2.HWTestRequestBeta',
+
+_TESTSPEC = _descriptor.Descriptor(
+  name='TestSpec',
+  full_name='test_platform.v2.TestSpec',
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
   fields=[
     _descriptor.FieldDescriptor(
-      name='test_specs', full_name='test_platform.v2.HWTestRequestBeta.test_specs', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
+      name='build_directory', full_name='test_platform.v2.TestSpec.build_directory', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[_HWTESTREQUESTBETA_TESTSPEC, ],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=94,
-  serialized_end=241,
-)
-
-
-_REQUESTBETA = _descriptor.Descriptor(
-  name='RequestBeta',
-  full_name='test_platform.v2.RequestBeta',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
     _descriptor.FieldDescriptor(
-      name='hw_test_request', full_name='test_platform.v2.RequestBeta.hw_test_request', index=0,
-      number=1, type=11, cpp_type=10, label=1,
+      name='hw_test_spec', full_name='test_platform.v2.TestSpec.hw_test_spec', index=1,
+      number=2, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
@@ -113,45 +99,139 @@
   extension_ranges=[],
   oneofs=[
     _descriptor.OneofDescriptor(
-      name='request', full_name='test_platform.v2.RequestBeta.request',
+      name='spec', full_name='test_platform.v2.TestSpec.spec',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=243,
-  serialized_end=331,
+  serialized_start=297,
+  serialized_end=415,
 )
 
-_HWTESTREQUESTBETA_TESTSPEC.fields_by_name['rules'].message_type = chromiumos_dot_test_dot_api_dot_coverage__rule__pb2._COVERAGERULE
-_HWTESTREQUESTBETA_TESTSPEC.containing_type = _HWTESTREQUESTBETA
-_HWTESTREQUESTBETA.fields_by_name['test_specs'].message_type = _HWTESTREQUESTBETA_TESTSPEC
-_REQUESTBETA.fields_by_name['hw_test_request'].message_type = _HWTESTREQUESTBETA
-_REQUESTBETA.oneofs_by_name['request'].fields.append(
-  _REQUESTBETA.fields_by_name['hw_test_request'])
-_REQUESTBETA.fields_by_name['hw_test_request'].containing_oneof = _REQUESTBETA.oneofs_by_name['request']
-DESCRIPTOR.message_types_by_name['HWTestRequestBeta'] = _HWTESTREQUESTBETA
-DESCRIPTOR.message_types_by_name['RequestBeta'] = _REQUESTBETA
+
+_REQUEST_SCHEDULERSETTINGS = _descriptor.Descriptor(
+  name='SchedulerSettings',
+  full_name='test_platform.v2.Request.SchedulerSettings',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='pool', full_name='test_platform.v2.Request.SchedulerSettings.pool', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='qs_account', full_name='test_platform.v2.Request.SchedulerSettings.qs_account', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=596,
+  serialized_end=649,
+)
+
+_REQUEST = _descriptor.Descriptor(
+  name='Request',
+  full_name='test_platform.v2.Request',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='build_directory', full_name='test_platform.v2.Request.build_directory', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='test_specs', full_name='test_platform.v2.Request.test_specs', index=1,
+      number=2, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='scheduler_settings', full_name='test_platform.v2.Request.scheduler_settings', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[_REQUEST_SCHEDULERSETTINGS, ],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=418,
+  serialized_end=649,
+)
+
+_HWTESTSPEC.fields_by_name['coverage_rule'].message_type = chromiumos_dot_test_dot_api_dot_coverage__rule__pb2._COVERAGERULE
+_HWTESTSPEC.fields_by_name['provision_states'].message_type = chromiumos_dot_test_dot_api_dot_provision__state__pb2._PROVISIONSTATE
+_TESTSPEC.fields_by_name['build_directory'].message_type = chromiumos_dot_common__pb2._GCSPATH
+_TESTSPEC.fields_by_name['hw_test_spec'].message_type = _HWTESTSPEC
+_TESTSPEC.oneofs_by_name['spec'].fields.append(
+  _TESTSPEC.fields_by_name['hw_test_spec'])
+_TESTSPEC.fields_by_name['hw_test_spec'].containing_oneof = _TESTSPEC.oneofs_by_name['spec']
+_REQUEST_SCHEDULERSETTINGS.containing_type = _REQUEST
+_REQUEST.fields_by_name['build_directory'].message_type = chromiumos_dot_common__pb2._GCSPATH
+_REQUEST.fields_by_name['test_specs'].message_type = _TESTSPEC
+_REQUEST.fields_by_name['scheduler_settings'].message_type = _REQUEST_SCHEDULERSETTINGS
+DESCRIPTOR.message_types_by_name['HWTestSpec'] = _HWTESTSPEC
+DESCRIPTOR.message_types_by_name['TestSpec'] = _TESTSPEC
+DESCRIPTOR.message_types_by_name['Request'] = _REQUEST
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
-HWTestRequestBeta = _reflection.GeneratedProtocolMessageType('HWTestRequestBeta', (_message.Message,), {
+HWTestSpec = _reflection.GeneratedProtocolMessageType('HWTestSpec', (_message.Message,), {
+  'DESCRIPTOR' : _HWTESTSPEC,
+  '__module__' : 'test_platform.v2.request_pb2'
+  # @@protoc_insertion_point(class_scope:test_platform.v2.HWTestSpec)
+  })
+_sym_db.RegisterMessage(HWTestSpec)
 
-  'TestSpec' : _reflection.GeneratedProtocolMessageType('TestSpec', (_message.Message,), {
-    'DESCRIPTOR' : _HWTESTREQUESTBETA_TESTSPEC,
+TestSpec = _reflection.GeneratedProtocolMessageType('TestSpec', (_message.Message,), {
+  'DESCRIPTOR' : _TESTSPEC,
+  '__module__' : 'test_platform.v2.request_pb2'
+  # @@protoc_insertion_point(class_scope:test_platform.v2.TestSpec)
+  })
+_sym_db.RegisterMessage(TestSpec)
+
+Request = _reflection.GeneratedProtocolMessageType('Request', (_message.Message,), {
+
+  'SchedulerSettings' : _reflection.GeneratedProtocolMessageType('SchedulerSettings', (_message.Message,), {
+    'DESCRIPTOR' : _REQUEST_SCHEDULERSETTINGS,
     '__module__' : 'test_platform.v2.request_pb2'
-    # @@protoc_insertion_point(class_scope:test_platform.v2.HWTestRequestBeta.TestSpec)
+    # @@protoc_insertion_point(class_scope:test_platform.v2.Request.SchedulerSettings)
     })
   ,
-  'DESCRIPTOR' : _HWTESTREQUESTBETA,
+  'DESCRIPTOR' : _REQUEST,
   '__module__' : 'test_platform.v2.request_pb2'
-  # @@protoc_insertion_point(class_scope:test_platform.v2.HWTestRequestBeta)
+  # @@protoc_insertion_point(class_scope:test_platform.v2.Request)
   })
-_sym_db.RegisterMessage(HWTestRequestBeta)
-_sym_db.RegisterMessage(HWTestRequestBeta.TestSpec)
-
-RequestBeta = _reflection.GeneratedProtocolMessageType('RequestBeta', (_message.Message,), {
-  'DESCRIPTOR' : _REQUESTBETA,
-  '__module__' : 'test_platform.v2.request_pb2'
-  # @@protoc_insertion_point(class_scope:test_platform.v2.RequestBeta)
-  })
-_sym_db.RegisterMessage(RequestBeta)
+_sym_db.RegisterMessage(Request)
+_sym_db.RegisterMessage(Request.SchedulerSettings)
 
 
 DESCRIPTOR._options = None