@eide/foir-proto-ts 0.42.0 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eide/foir-proto-ts",
3
- "version": "0.42.0",
3
+ "version": "0.44.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./analytics/v1/analytics_pb": "./src/analytics/v1/analytics_pb.js",
@@ -687,30 +687,57 @@ export declare type GetExperimentConversionsResponse = Message<"analytics.v1.Get
687
687
  export declare const GetExperimentConversionsResponseSchema: GenMessage<GetExperimentConversionsResponse>;
688
688
 
689
689
  /**
690
- * @generated from message analytics.v1.FunnelStep
690
+ * FunnelStepStat is one (step, variant) cell in the funnel breakdown.
691
+ * step_index is 0-based against the experiment's declared funnel_steps in
692
+ * order. unique_count is the number of distinct identities (customer_id
693
+ * or viewer_key, whichever the conversion event carried) who recorded an
694
+ * event matching this step. drop_off_rate is computed against the same
695
+ * variant's previous step; for step_index=0 it is always 0.
696
+ *
697
+ * @generated from message analytics.v1.FunnelStepStat
691
698
  */
692
- export declare type FunnelStep = Message<"analytics.v1.FunnelStep"> & {
699
+ export declare type FunnelStepStat = Message<"analytics.v1.FunnelStepStat"> & {
700
+ /**
701
+ * @generated from field: string variant_key = 1;
702
+ */
703
+ variantKey: string;
704
+
693
705
  /**
694
- * @generated from field: string step_name = 1;
706
+ * @generated from field: int32 step_index = 2;
707
+ */
708
+ stepIndex: number;
709
+
710
+ /**
711
+ * @generated from field: string step_key = 3;
712
+ */
713
+ stepKey: string;
714
+
715
+ /**
716
+ * @generated from field: string step_name = 4;
695
717
  */
696
718
  stepName: string;
697
719
 
698
720
  /**
699
- * @generated from field: int64 count = 2;
721
+ * @generated from field: int64 unique_count = 5;
722
+ */
723
+ uniqueCount: bigint;
724
+
725
+ /**
726
+ * @generated from field: int64 event_count = 6;
700
727
  */
701
- count: bigint;
728
+ eventCount: bigint;
702
729
 
703
730
  /**
704
- * @generated from field: double drop_off_rate = 3;
731
+ * @generated from field: double drop_off_rate = 7;
705
732
  */
706
733
  dropOffRate: number;
707
734
  };
708
735
 
709
736
  /**
710
- * Describes the message analytics.v1.FunnelStep.
711
- * Use `create(FunnelStepSchema)` to create a new message.
737
+ * Describes the message analytics.v1.FunnelStepStat.
738
+ * Use `create(FunnelStepStatSchema)` to create a new message.
712
739
  */
713
- export declare const FunnelStepSchema: GenMessage<FunnelStep>;
740
+ export declare const FunnelStepStatSchema: GenMessage<FunnelStepStat>;
714
741
 
715
742
  /**
716
743
  * @generated from message analytics.v1.GetExperimentFunnelAnalysisRequest
@@ -743,9 +770,9 @@ export declare const GetExperimentFunnelAnalysisRequestSchema: GenMessage<GetExp
743
770
  */
744
771
  export declare type GetExperimentFunnelAnalysisResponse = Message<"analytics.v1.GetExperimentFunnelAnalysisResponse"> & {
745
772
  /**
746
- * @generated from field: repeated analytics.v1.FunnelStep steps = 1;
773
+ * @generated from field: repeated analytics.v1.FunnelStepStat stats = 1;
747
774
  */
748
- steps: FunnelStep[];
775
+ stats: FunnelStepStat[];
749
776
  };
750
777
 
751
778
  /**
@@ -9,7 +9,7 @@ import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bu
9
9
  * Describes the file analytics/v1/analytics.proto.
10
10
  */
11
11
  export const file_analytics_v1_analytics = /*@__PURE__*/
12
- fileDesc("ChxhbmFseXRpY3MvdjEvYW5hbHl0aWNzLnByb3RvEgxhbmFseXRpY3MudjEiogEKEEFuYWx5dGljc1N1bW1hcnkSFQoNdG90YWxfcmVjb3JkcxgBIAEoBRIUCgx0b3RhbF9tb2RlbHMYAiABKAUSFwoPdG90YWxfY3VzdG9tZXJzGAMgASgFEhMKC3RvdGFsX3VzZXJzGAQgASgFEhoKEmFjdGl2ZV9leHBlcmltZW50cxgFIAEoBRIXCg9hY3RpdmVfc2VnbWVudHMYBiABKAUiKQoKVHJlbmRQb2ludBIMCgRkYXRlGAEgASgJEg0KBXZhbHVlGAIgASgDIi4KEERpc3RyaWJ1dGlvbkl0ZW0SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDInAKD1NlY3VyaXR5U3VtbWFyeRIUCgx0b3RhbF9sb2dpbnMYASABKAUSFQoNZmFpbGVkX2xvZ2lucxgCIAEoBRIYChBhY2NvdW50X2xvY2tvdXRzGAMgASgFEhYKDnN1c3BpY2lvdXNfaXBzGAQgASgFIm4KD1N1c3BpY2lvdXNMb2dpbhINCgVlbWFpbBgBIAEoCRIQCghpcF9jb3VudBgCIAEoBRILCgNpcHMYAyADKAkSLQoJbGFzdF9zZWVuGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJiCgtGYWlsZWRMb2dpbhISCgppZGVudGlmaWVyGAEgASgJEg0KBWNvdW50GAIgASgFEjAKDGxhc3RfYXR0ZW1wdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAibgoOQWNjb3VudExvY2tvdXQSDQoFZW1haWwYASABKAkSLQoJbG9ja2VkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgZyZWFzb24YAyABKAlIAIgBAUIJCgdfcmVhc29uIogBChpHZXRBbmFseXRpY3NTdW1tYXJ5UmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQgcKBV9mcm9tQgUKA190byJOChtHZXRBbmFseXRpY3NTdW1tYXJ5UmVzcG9uc2USLwoHc3VtbWFyeRgBIAEoCzIeLmFuYWx5dGljcy52MS5BbmFseXRpY3NTdW1tYXJ5IrcBCg9HZXRUcmVuZFJlcXVlc3QSDgoGbWV0cmljGAEgASgJEi0KBGZyb20YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESKwoCdG8YAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESGAoLZ3JhbnVsYXJpdHkYBCABKAlIAogBAUIHCgVfZnJvbUIFCgNfdG9CDgoMX2dyYW51bGFyaXR5IjwKEEdldFRyZW5kUmVzcG9uc2USKAoGcG9pbnRzGAEgAygLMhguYW5hbHl0aWNzLnYxLlRyZW5kUG9pbnQiNwoWR2V0RGlzdHJpYnV0aW9uUmVxdWVzdBIOCgZtZXRyaWMYASABKAkSDQoFbGltaXQYCiABKAUiSAoXR2V0RGlzdHJpYnV0aW9uUmVzcG9uc2USLQoFaXRlbXMYASADKAsyHi5hbmFseXRpY3MudjEuRGlzdHJpYnV0aW9uSXRlbSKtAQoZR2V0U2VjdXJpdHlTdW1tYXJ5UmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhYKCXRlbmFudF9pZBgDIAEoCUgCiAEBQgcKBV9mcm9tQgUKA190b0IMCgpfdGVuYW50X2lkIkwKGkdldFNlY3VyaXR5U3VtbWFyeVJlc3BvbnNlEi4KB3N1bW1hcnkYASABKAsyHS5hbmFseXRpY3MudjEuU2VjdXJpdHlTdW1tYXJ5IlEKGkdldFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0Eg0KBWxpbWl0GAEgASgFEhYKCXRlbmFudF9pZBgCIAEoCUgAiAEBQgwKCl90ZW5hbnRfaWQiTAobR2V0U3VzcGljaW91c0xvZ2luc1Jlc3BvbnNlEi0KBmxvZ2lucxgBIAMoCzIdLmFuYWx5dGljcy52MS5TdXNwaWNpb3VzTG9naW4iZQoWR2V0RmFpbGVkTG9naW5zUmVxdWVzdBIPCgJieRgBIAEoCUgAiAEBEg0KBWxpbWl0GAogASgFEhYKCXRlbmFudF9pZBgDIAEoCUgBiAEBQgUKA19ieUIMCgpfdGVuYW50X2lkIkUKF0dldEZhaWxlZExvZ2luc1Jlc3BvbnNlEioKB2VudHJpZXMYASADKAsyGS5hbmFseXRpY3MudjEuRmFpbGVkTG9naW4iUAoZR2V0QWNjb3VudExvY2tvdXRzUmVxdWVzdBINCgVsaW1pdBgBIAEoBRIWCgl0ZW5hbnRfaWQYAiABKAlIAIgBAUIMCgpfdGVuYW50X2lkIkwKGkdldEFjY291bnRMb2Nrb3V0c1Jlc3BvbnNlEi4KCGxvY2tvdXRzGAEgAygLMhwuYW5hbHl0aWNzLnYxLkFjY291bnRMb2Nrb3V0IlwKFlZhcmlhbnRQZXJmb3JtYW5jZUl0ZW0SEwoLdmFyaWFudF9rZXkYASABKAkSEwoLcmVzb2x1dGlvbnMYAiABKAMSGAoQdW5pcXVlX2N1c3RvbWVycxgDIAEoAyKKAQocR2V0VmFyaWFudFBlcmZvcm1hbmNlUmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQgcKBV9mcm9tQgUKA190byJUCh1HZXRWYXJpYW50UGVyZm9ybWFuY2VSZXNwb25zZRIzCgVpdGVtcxgBIAMoCzIkLmFuYWx5dGljcy52MS5WYXJpYW50UGVyZm9ybWFuY2VJdGVtIlgKFVNlZ21lbnRFbmdhZ2VtZW50SXRlbRITCgtzZWdtZW50X2tleRgBIAEoCRIUCgxtZW1iZXJfY291bnQYAiABKAMSFAoMYWN0aXZlX2NvdW50GAMgASgDIokBChtHZXRTZWdtZW50RW5nYWdlbWVudFJlcXVlc3QSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIrCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUIHCgVfZnJvbUIFCgNfdG8iUgocR2V0U2VnbWVudEVuZ2FnZW1lbnRSZXNwb25zZRIyCgVpdGVtcxgBIAMoCzIjLmFuYWx5dGljcy52MS5TZWdtZW50RW5nYWdlbWVudEl0ZW0idAoYRXhwZXJpbWVudENvbnZlcnNpb25JdGVtEhUKDWV4cGVyaW1lbnRfaWQYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSEwoLY29udmVyc2lvbnMYAyABKAMSFwoPY29udmVyc2lvbl9yYXRlGAQgASgBIrsBCh9HZXRFeHBlcmltZW50Q29udmVyc2lvbnNSZXF1ZXN0EhoKDWV4cGVyaW1lbnRfaWQYASABKAlIAIgBARItCgRmcm9tGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEisKAnRvGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBQhAKDl9leHBlcmltZW50X2lkQgcKBV9mcm9tQgUKA190byJZCiBHZXRFeHBlcmltZW50Q29udmVyc2lvbnNSZXNwb25zZRI1CgVpdGVtcxgBIAMoCzImLmFuYWx5dGljcy52MS5FeHBlcmltZW50Q29udmVyc2lvbkl0ZW0iRQoKRnVubmVsU3RlcBIRCglzdGVwX25hbWUYASABKAkSDQoFY291bnQYAiABKAMSFQoNZHJvcF9vZmZfcmF0ZRgDIAEoASKnAQoiR2V0RXhwZXJpbWVudEZ1bm5lbEFuYWx5c2lzUmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJEi0KBGZyb20YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESKwoCdG8YAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQFCBwoFX2Zyb21CBQoDX3RvIk4KI0dldEV4cGVyaW1lbnRGdW5uZWxBbmFseXNpc1Jlc3BvbnNlEicKBXN0ZXBzGAEgAygLMhguYW5hbHl0aWNzLnYxLkZ1bm5lbFN0ZXAiggIKHFJlY29yZENvbnZlcnNpb25FdmVudFJlcXVlc3QSFgoOZXhwZXJpbWVudF9rZXkYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSEgoKaXNfY29udHJvbBgDIAEoCBISCgpldmVudF9uYW1lGAQgASgJEhgKC2N1c3RvbWVyX2lkGAUgASgJSACIAQESFwoKdmlld2VyX2tleRgGIAEoCUgBiAEBEi4KCG1ldGFkYXRhGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBQg4KDF9jdXN0b21lcl9pZEINCgtfdmlld2VyX2tleUILCglfbWV0YWRhdGEiMAodUmVjb3JkQ29udmVyc2lvbkV2ZW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCDKaCgoQQW5hbHl0aWNzU2VydmljZRJqChNHZXRBbmFseXRpY3NTdW1tYXJ5EiguYW5hbHl0aWNzLnYxLkdldEFuYWx5dGljc1N1bW1hcnlSZXF1ZXN0GikuYW5hbHl0aWNzLnYxLkdldEFuYWx5dGljc1N1bW1hcnlSZXNwb25zZRJJCghHZXRUcmVuZBIdLmFuYWx5dGljcy52MS5HZXRUcmVuZFJlcXVlc3QaHi5hbmFseXRpY3MudjEuR2V0VHJlbmRSZXNwb25zZRJeCg9HZXREaXN0cmlidXRpb24SJC5hbmFseXRpY3MudjEuR2V0RGlzdHJpYnV0aW9uUmVxdWVzdBolLmFuYWx5dGljcy52MS5HZXREaXN0cmlidXRpb25SZXNwb25zZRJnChJHZXRTZWN1cml0eVN1bW1hcnkSJy5hbmFseXRpY3MudjEuR2V0U2VjdXJpdHlTdW1tYXJ5UmVxdWVzdBooLmFuYWx5dGljcy52MS5HZXRTZWN1cml0eVN1bW1hcnlSZXNwb25zZRJqChNHZXRTdXNwaWNpb3VzTG9naW5zEiguYW5hbHl0aWNzLnYxLkdldFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0GikuYW5hbHl0aWNzLnYxLkdldFN1c3BpY2lvdXNMb2dpbnNSZXNwb25zZRJeCg9HZXRGYWlsZWRMb2dpbnMSJC5hbmFseXRpY3MudjEuR2V0RmFpbGVkTG9naW5zUmVxdWVzdBolLmFuYWx5dGljcy52MS5HZXRGYWlsZWRMb2dpbnNSZXNwb25zZRJnChJHZXRBY2NvdW50TG9ja291dHMSJy5hbmFseXRpY3MudjEuR2V0QWNjb3VudExvY2tvdXRzUmVxdWVzdBooLmFuYWx5dGljcy52MS5HZXRBY2NvdW50TG9ja291dHNSZXNwb25zZRJwChVHZXRWYXJpYW50UGVyZm9ybWFuY2USKi5hbmFseXRpY3MudjEuR2V0VmFyaWFudFBlcmZvcm1hbmNlUmVxdWVzdBorLmFuYWx5dGljcy52MS5HZXRWYXJpYW50UGVyZm9ybWFuY2VSZXNwb25zZRJtChRHZXRTZWdtZW50RW5nYWdlbWVudBIpLmFuYWx5dGljcy52MS5HZXRTZWdtZW50RW5nYWdlbWVudFJlcXVlc3QaKi5hbmFseXRpY3MudjEuR2V0U2VnbWVudEVuZ2FnZW1lbnRSZXNwb25zZRJ5ChhHZXRFeHBlcmltZW50Q29udmVyc2lvbnMSLS5hbmFseXRpY3MudjEuR2V0RXhwZXJpbWVudENvbnZlcnNpb25zUmVxdWVzdBouLmFuYWx5dGljcy52MS5HZXRFeHBlcmltZW50Q29udmVyc2lvbnNSZXNwb25zZRKCAQobR2V0RXhwZXJpbWVudEZ1bm5lbEFuYWx5c2lzEjAuYW5hbHl0aWNzLnYxLkdldEV4cGVyaW1lbnRGdW5uZWxBbmFseXNpc1JlcXVlc3QaMS5hbmFseXRpY3MudjEuR2V0RXhwZXJpbWVudEZ1bm5lbEFuYWx5c2lzUmVzcG9uc2UScAoVUmVjb3JkQ29udmVyc2lvbkV2ZW50EiouYW5hbHl0aWNzLnYxLlJlY29yZENvbnZlcnNpb25FdmVudFJlcXVlc3QaKy5hbmFseXRpY3MudjEuUmVjb3JkQ29udmVyc2lvbkV2ZW50UmVzcG9uc2VCP1o9Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL2FuYWx5dGljcy92MTthbmFseXRpY3N2MWIGcHJvdG8z", [file_google_protobuf_struct, file_google_protobuf_timestamp]);
12
+ fileDesc("ChxhbmFseXRpY3MvdjEvYW5hbHl0aWNzLnByb3RvEgxhbmFseXRpY3MudjEiogEKEEFuYWx5dGljc1N1bW1hcnkSFQoNdG90YWxfcmVjb3JkcxgBIAEoBRIUCgx0b3RhbF9tb2RlbHMYAiABKAUSFwoPdG90YWxfY3VzdG9tZXJzGAMgASgFEhMKC3RvdGFsX3VzZXJzGAQgASgFEhoKEmFjdGl2ZV9leHBlcmltZW50cxgFIAEoBRIXCg9hY3RpdmVfc2VnbWVudHMYBiABKAUiKQoKVHJlbmRQb2ludBIMCgRkYXRlGAEgASgJEg0KBXZhbHVlGAIgASgDIi4KEERpc3RyaWJ1dGlvbkl0ZW0SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDInAKD1NlY3VyaXR5U3VtbWFyeRIUCgx0b3RhbF9sb2dpbnMYASABKAUSFQoNZmFpbGVkX2xvZ2lucxgCIAEoBRIYChBhY2NvdW50X2xvY2tvdXRzGAMgASgFEhYKDnN1c3BpY2lvdXNfaXBzGAQgASgFIm4KD1N1c3BpY2lvdXNMb2dpbhINCgVlbWFpbBgBIAEoCRIQCghpcF9jb3VudBgCIAEoBRILCgNpcHMYAyADKAkSLQoJbGFzdF9zZWVuGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJiCgtGYWlsZWRMb2dpbhISCgppZGVudGlmaWVyGAEgASgJEg0KBWNvdW50GAIgASgFEjAKDGxhc3RfYXR0ZW1wdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAibgoOQWNjb3VudExvY2tvdXQSDQoFZW1haWwYASABKAkSLQoJbG9ja2VkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgZyZWFzb24YAyABKAlIAIgBAUIJCgdfcmVhc29uIogBChpHZXRBbmFseXRpY3NTdW1tYXJ5UmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQgcKBV9mcm9tQgUKA190byJOChtHZXRBbmFseXRpY3NTdW1tYXJ5UmVzcG9uc2USLwoHc3VtbWFyeRgBIAEoCzIeLmFuYWx5dGljcy52MS5BbmFseXRpY3NTdW1tYXJ5IrcBCg9HZXRUcmVuZFJlcXVlc3QSDgoGbWV0cmljGAEgASgJEi0KBGZyb20YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESKwoCdG8YAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESGAoLZ3JhbnVsYXJpdHkYBCABKAlIAogBAUIHCgVfZnJvbUIFCgNfdG9CDgoMX2dyYW51bGFyaXR5IjwKEEdldFRyZW5kUmVzcG9uc2USKAoGcG9pbnRzGAEgAygLMhguYW5hbHl0aWNzLnYxLlRyZW5kUG9pbnQiNwoWR2V0RGlzdHJpYnV0aW9uUmVxdWVzdBIOCgZtZXRyaWMYASABKAkSDQoFbGltaXQYCiABKAUiSAoXR2V0RGlzdHJpYnV0aW9uUmVzcG9uc2USLQoFaXRlbXMYASADKAsyHi5hbmFseXRpY3MudjEuRGlzdHJpYnV0aW9uSXRlbSKtAQoZR2V0U2VjdXJpdHlTdW1tYXJ5UmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhYKCXRlbmFudF9pZBgDIAEoCUgCiAEBQgcKBV9mcm9tQgUKA190b0IMCgpfdGVuYW50X2lkIkwKGkdldFNlY3VyaXR5U3VtbWFyeVJlc3BvbnNlEi4KB3N1bW1hcnkYASABKAsyHS5hbmFseXRpY3MudjEuU2VjdXJpdHlTdW1tYXJ5IlEKGkdldFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0Eg0KBWxpbWl0GAEgASgFEhYKCXRlbmFudF9pZBgCIAEoCUgAiAEBQgwKCl90ZW5hbnRfaWQiTAobR2V0U3VzcGljaW91c0xvZ2luc1Jlc3BvbnNlEi0KBmxvZ2lucxgBIAMoCzIdLmFuYWx5dGljcy52MS5TdXNwaWNpb3VzTG9naW4iZQoWR2V0RmFpbGVkTG9naW5zUmVxdWVzdBIPCgJieRgBIAEoCUgAiAEBEg0KBWxpbWl0GAogASgFEhYKCXRlbmFudF9pZBgDIAEoCUgBiAEBQgUKA19ieUIMCgpfdGVuYW50X2lkIkUKF0dldEZhaWxlZExvZ2luc1Jlc3BvbnNlEioKB2VudHJpZXMYASADKAsyGS5hbmFseXRpY3MudjEuRmFpbGVkTG9naW4iUAoZR2V0QWNjb3VudExvY2tvdXRzUmVxdWVzdBINCgVsaW1pdBgBIAEoBRIWCgl0ZW5hbnRfaWQYAiABKAlIAIgBAUIMCgpfdGVuYW50X2lkIkwKGkdldEFjY291bnRMb2Nrb3V0c1Jlc3BvbnNlEi4KCGxvY2tvdXRzGAEgAygLMhwuYW5hbHl0aWNzLnYxLkFjY291bnRMb2Nrb3V0IlwKFlZhcmlhbnRQZXJmb3JtYW5jZUl0ZW0SEwoLdmFyaWFudF9rZXkYASABKAkSEwoLcmVzb2x1dGlvbnMYAiABKAMSGAoQdW5pcXVlX2N1c3RvbWVycxgDIAEoAyKKAQocR2V0VmFyaWFudFBlcmZvcm1hbmNlUmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQgcKBV9mcm9tQgUKA190byJUCh1HZXRWYXJpYW50UGVyZm9ybWFuY2VSZXNwb25zZRIzCgVpdGVtcxgBIAMoCzIkLmFuYWx5dGljcy52MS5WYXJpYW50UGVyZm9ybWFuY2VJdGVtIlgKFVNlZ21lbnRFbmdhZ2VtZW50SXRlbRITCgtzZWdtZW50X2tleRgBIAEoCRIUCgxtZW1iZXJfY291bnQYAiABKAMSFAoMYWN0aXZlX2NvdW50GAMgASgDIokBChtHZXRTZWdtZW50RW5nYWdlbWVudFJlcXVlc3QSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIrCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUIHCgVfZnJvbUIFCgNfdG8iUgocR2V0U2VnbWVudEVuZ2FnZW1lbnRSZXNwb25zZRIyCgVpdGVtcxgBIAMoCzIjLmFuYWx5dGljcy52MS5TZWdtZW50RW5nYWdlbWVudEl0ZW0idAoYRXhwZXJpbWVudENvbnZlcnNpb25JdGVtEhUKDWV4cGVyaW1lbnRfaWQYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSEwoLY29udmVyc2lvbnMYAyABKAMSFwoPY29udmVyc2lvbl9yYXRlGAQgASgBIrsBCh9HZXRFeHBlcmltZW50Q29udmVyc2lvbnNSZXF1ZXN0EhoKDWV4cGVyaW1lbnRfaWQYASABKAlIAIgBARItCgRmcm9tGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEisKAnRvGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBQhAKDl9leHBlcmltZW50X2lkQgcKBV9mcm9tQgUKA190byJZCiBHZXRFeHBlcmltZW50Q29udmVyc2lvbnNSZXNwb25zZRI1CgVpdGVtcxgBIAMoCzImLmFuYWx5dGljcy52MS5FeHBlcmltZW50Q29udmVyc2lvbkl0ZW0ioAEKDkZ1bm5lbFN0ZXBTdGF0EhMKC3ZhcmlhbnRfa2V5GAEgASgJEhIKCnN0ZXBfaW5kZXgYAiABKAUSEAoIc3RlcF9rZXkYAyABKAkSEQoJc3RlcF9uYW1lGAQgASgJEhQKDHVuaXF1ZV9jb3VudBgFIAEoAxITCgtldmVudF9jb3VudBgGIAEoAxIVCg1kcm9wX29mZl9yYXRlGAcgASgBIqcBCiJHZXRFeHBlcmltZW50RnVubmVsQW5hbHlzaXNSZXF1ZXN0EhUKDWV4cGVyaW1lbnRfaWQYASABKAkSLQoEZnJvbRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIrCgJ0bxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUIHCgVfZnJvbUIFCgNfdG8iUgojR2V0RXhwZXJpbWVudEZ1bm5lbEFuYWx5c2lzUmVzcG9uc2USKwoFc3RhdHMYASADKAsyHC5hbmFseXRpY3MudjEuRnVubmVsU3RlcFN0YXQiggIKHFJlY29yZENvbnZlcnNpb25FdmVudFJlcXVlc3QSFgoOZXhwZXJpbWVudF9rZXkYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSEgoKaXNfY29udHJvbBgDIAEoCBISCgpldmVudF9uYW1lGAQgASgJEhgKC2N1c3RvbWVyX2lkGAUgASgJSACIAQESFwoKdmlld2VyX2tleRgGIAEoCUgBiAEBEi4KCG1ldGFkYXRhGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBQg4KDF9jdXN0b21lcl9pZEINCgtfdmlld2VyX2tleUILCglfbWV0YWRhdGEiMAodUmVjb3JkQ29udmVyc2lvbkV2ZW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCDKaCgoQQW5hbHl0aWNzU2VydmljZRJqChNHZXRBbmFseXRpY3NTdW1tYXJ5EiguYW5hbHl0aWNzLnYxLkdldEFuYWx5dGljc1N1bW1hcnlSZXF1ZXN0GikuYW5hbHl0aWNzLnYxLkdldEFuYWx5dGljc1N1bW1hcnlSZXNwb25zZRJJCghHZXRUcmVuZBIdLmFuYWx5dGljcy52MS5HZXRUcmVuZFJlcXVlc3QaHi5hbmFseXRpY3MudjEuR2V0VHJlbmRSZXNwb25zZRJeCg9HZXREaXN0cmlidXRpb24SJC5hbmFseXRpY3MudjEuR2V0RGlzdHJpYnV0aW9uUmVxdWVzdBolLmFuYWx5dGljcy52MS5HZXREaXN0cmlidXRpb25SZXNwb25zZRJnChJHZXRTZWN1cml0eVN1bW1hcnkSJy5hbmFseXRpY3MudjEuR2V0U2VjdXJpdHlTdW1tYXJ5UmVxdWVzdBooLmFuYWx5dGljcy52MS5HZXRTZWN1cml0eVN1bW1hcnlSZXNwb25zZRJqChNHZXRTdXNwaWNpb3VzTG9naW5zEiguYW5hbHl0aWNzLnYxLkdldFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0GikuYW5hbHl0aWNzLnYxLkdldFN1c3BpY2lvdXNMb2dpbnNSZXNwb25zZRJeCg9HZXRGYWlsZWRMb2dpbnMSJC5hbmFseXRpY3MudjEuR2V0RmFpbGVkTG9naW5zUmVxdWVzdBolLmFuYWx5dGljcy52MS5HZXRGYWlsZWRMb2dpbnNSZXNwb25zZRJnChJHZXRBY2NvdW50TG9ja291dHMSJy5hbmFseXRpY3MudjEuR2V0QWNjb3VudExvY2tvdXRzUmVxdWVzdBooLmFuYWx5dGljcy52MS5HZXRBY2NvdW50TG9ja291dHNSZXNwb25zZRJwChVHZXRWYXJpYW50UGVyZm9ybWFuY2USKi5hbmFseXRpY3MudjEuR2V0VmFyaWFudFBlcmZvcm1hbmNlUmVxdWVzdBorLmFuYWx5dGljcy52MS5HZXRWYXJpYW50UGVyZm9ybWFuY2VSZXNwb25zZRJtChRHZXRTZWdtZW50RW5nYWdlbWVudBIpLmFuYWx5dGljcy52MS5HZXRTZWdtZW50RW5nYWdlbWVudFJlcXVlc3QaKi5hbmFseXRpY3MudjEuR2V0U2VnbWVudEVuZ2FnZW1lbnRSZXNwb25zZRJ5ChhHZXRFeHBlcmltZW50Q29udmVyc2lvbnMSLS5hbmFseXRpY3MudjEuR2V0RXhwZXJpbWVudENvbnZlcnNpb25zUmVxdWVzdBouLmFuYWx5dGljcy52MS5HZXRFeHBlcmltZW50Q29udmVyc2lvbnNSZXNwb25zZRKCAQobR2V0RXhwZXJpbWVudEZ1bm5lbEFuYWx5c2lzEjAuYW5hbHl0aWNzLnYxLkdldEV4cGVyaW1lbnRGdW5uZWxBbmFseXNpc1JlcXVlc3QaMS5hbmFseXRpY3MudjEuR2V0RXhwZXJpbWVudEZ1bm5lbEFuYWx5c2lzUmVzcG9uc2UScAoVUmVjb3JkQ29udmVyc2lvbkV2ZW50EiouYW5hbHl0aWNzLnYxLlJlY29yZENvbnZlcnNpb25FdmVudFJlcXVlc3QaKy5hbmFseXRpY3MudjEuUmVjb3JkQ29udmVyc2lvbkV2ZW50UmVzcG9uc2VCP1o9Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL2FuYWx5dGljcy92MTthbmFseXRpY3N2MWIGcHJvdG8z", [file_google_protobuf_struct, file_google_protobuf_timestamp]);
13
13
 
14
14
  /**
15
15
  * Describes the message analytics.v1.AnalyticsSummary.
@@ -222,10 +222,10 @@ export const GetExperimentConversionsResponseSchema = /*@__PURE__*/
222
222
  messageDesc(file_analytics_v1_analytics, 29);
223
223
 
224
224
  /**
225
- * Describes the message analytics.v1.FunnelStep.
226
- * Use `create(FunnelStepSchema)` to create a new message.
225
+ * Describes the message analytics.v1.FunnelStepStat.
226
+ * Use `create(FunnelStepStatSchema)` to create a new message.
227
227
  */
228
- export const FunnelStepSchema = /*@__PURE__*/
228
+ export const FunnelStepStatSchema = /*@__PURE__*/
229
229
  messageDesc(file_analytics_v1_analytics, 30);
230
230
 
231
231
  /**
@@ -76,6 +76,87 @@ export declare type ExperimentVariant = Message<"experiments.v1.ExperimentVarian
76
76
  */
77
77
  export declare const ExperimentVariantSchema: GenMessage<ExperimentVariant>;
78
78
 
79
+ /**
80
+ * ExperimentGoal is a declared conversion event for an experiment. Goal keys
81
+ * are matched case-sensitively against the event_name on
82
+ * RecordConversionEvent — events whose name is not in the experiment's goals
83
+ * list are rejected as InvalidArgument.
84
+ *
85
+ * An experiment with zero goals declared accepts any event_name (no
86
+ * goal-match enforcement).
87
+ *
88
+ * At most one goal per experiment may be marked is_primary=true. The primary
89
+ * goal is the metric the admin dashboard surfaces by default in the
90
+ * experiment list and uses to highlight winning variants; secondary goals
91
+ * are tracked but don't drive the headline number.
92
+ *
93
+ * @generated from message experiments.v1.ExperimentGoal
94
+ */
95
+ export declare type ExperimentGoal = Message<"experiments.v1.ExperimentGoal"> & {
96
+ /**
97
+ * @generated from field: string key = 1;
98
+ */
99
+ key: string;
100
+
101
+ /**
102
+ * @generated from field: string name = 2;
103
+ */
104
+ name: string;
105
+
106
+ /**
107
+ * @generated from field: optional string description = 3;
108
+ */
109
+ description?: string | undefined;
110
+
111
+ /**
112
+ * @generated from field: bool is_primary = 4;
113
+ */
114
+ isPrimary: boolean;
115
+ };
116
+
117
+ /**
118
+ * Describes the message experiments.v1.ExperimentGoal.
119
+ * Use `create(ExperimentGoalSchema)` to create a new message.
120
+ */
121
+ export declare const ExperimentGoalSchema: GenMessage<ExperimentGoal>;
122
+
123
+ /**
124
+ * ExperimentFunnelStep is one step in the conversion funnel for an
125
+ * experiment. Steps are evaluated in declaration order: a visitor counts
126
+ * toward step N's unique-count only after they've recorded an event
127
+ * matching some prior step's goal_key. Drop-off rate at step N is reported
128
+ * per variant relative to step N-1.
129
+ *
130
+ * goal_key is the event_name a recordConversion call must carry to advance
131
+ * the funnel. It need not match a top-level Experiment.goals entry — the
132
+ * funnel exists in parallel with goals and acts as its own accept-list for
133
+ * recordConversion when goals is empty.
134
+ *
135
+ * @generated from message experiments.v1.ExperimentFunnelStep
136
+ */
137
+ export declare type ExperimentFunnelStep = Message<"experiments.v1.ExperimentFunnelStep"> & {
138
+ /**
139
+ * @generated from field: string goal_key = 1;
140
+ */
141
+ goalKey: string;
142
+
143
+ /**
144
+ * @generated from field: string name = 2;
145
+ */
146
+ name: string;
147
+
148
+ /**
149
+ * @generated from field: optional string description = 3;
150
+ */
151
+ description?: string | undefined;
152
+ };
153
+
154
+ /**
155
+ * Describes the message experiments.v1.ExperimentFunnelStep.
156
+ * Use `create(ExperimentFunnelStepSchema)` to create a new message.
157
+ */
158
+ export declare const ExperimentFunnelStepSchema: GenMessage<ExperimentFunnelStep>;
159
+
79
160
  /**
80
161
  * @generated from message experiments.v1.Experiment
81
162
  */
@@ -134,6 +215,17 @@ export declare type Experiment = Message<"experiments.v1.Experiment"> & {
134
215
  */
135
216
  assignmentPersistence: string;
136
217
 
218
+ /**
219
+ * Mutual exclusion: experiments sharing a non-empty exclusion_group_key
220
+ * are mutually exclusive — a visitor bucketed into one of them is
221
+ * ineligible for the others. Empty/unset means the experiment runs
222
+ * independently and a visitor can be in it concurrently with any other
223
+ * experiment.
224
+ *
225
+ * @generated from field: optional string exclusion_group_key = 24;
226
+ */
227
+ exclusionGroupKey?: string | undefined;
228
+
137
229
  /**
138
230
  * Scheduling.
139
231
  *
@@ -154,9 +246,14 @@ export declare type Experiment = Message<"experiments.v1.Experiment"> & {
154
246
  metrics?: JsonObject | undefined;
155
247
 
156
248
  /**
157
- * @generated from field: optional google.protobuf.Struct goals = 36;
249
+ * @generated from field: repeated experiments.v1.ExperimentGoal goals = 36;
250
+ */
251
+ goals: ExperimentGoal[];
252
+
253
+ /**
254
+ * @generated from field: repeated experiments.v1.ExperimentFunnelStep funnel_steps = 37;
158
255
  */
159
- goals?: JsonObject | undefined;
256
+ funnelSteps: ExperimentFunnelStep[];
160
257
 
161
258
  /**
162
259
  * Ownership.
@@ -422,9 +519,19 @@ export declare type CreateExperimentRequest = Message<"experiments.v1.CreateExpe
422
519
  assignmentPersistence?: string | undefined;
423
520
 
424
521
  /**
425
- * @generated from field: optional google.protobuf.Struct goals = 10;
522
+ * @generated from field: repeated experiments.v1.ExperimentGoal goals = 10;
426
523
  */
427
- goals?: JsonObject | undefined;
524
+ goals: ExperimentGoal[];
525
+
526
+ /**
527
+ * @generated from field: repeated experiments.v1.ExperimentFunnelStep funnel_steps = 11;
528
+ */
529
+ funnelSteps: ExperimentFunnelStep[];
530
+
531
+ /**
532
+ * @generated from field: optional string exclusion_group_key = 12;
533
+ */
534
+ exclusionGroupKey?: string | undefined;
428
535
  };
429
536
 
430
537
  /**
@@ -615,9 +722,41 @@ export declare type UpdateExperimentRequest = Message<"experiments.v1.UpdateExpe
615
722
  assignmentPersistence?: string | undefined;
616
723
 
617
724
  /**
618
- * @generated from field: optional google.protobuf.Struct goals = 10;
725
+ * To clear declared goals, set goals_clear=true (sending an empty array
726
+ * alone is indistinguishable from "no change" for repeated fields).
727
+ *
728
+ * @generated from field: repeated experiments.v1.ExperimentGoal goals = 10;
729
+ */
730
+ goals: ExperimentGoal[];
731
+
732
+ /**
733
+ * @generated from field: bool goals_clear = 11;
734
+ */
735
+ goalsClear: boolean;
736
+
737
+ /**
738
+ * Same pattern for funnel_steps and exclusion_group_key — repeated and
739
+ * optional scalar fields need an explicit clear flag because the unset/
740
+ * empty wire shape is indistinguishable from "no change."
741
+ *
742
+ * @generated from field: repeated experiments.v1.ExperimentFunnelStep funnel_steps = 12;
743
+ */
744
+ funnelSteps: ExperimentFunnelStep[];
745
+
746
+ /**
747
+ * @generated from field: bool funnel_steps_clear = 13;
748
+ */
749
+ funnelStepsClear: boolean;
750
+
751
+ /**
752
+ * @generated from field: optional string exclusion_group_key = 14;
753
+ */
754
+ exclusionGroupKey?: string | undefined;
755
+
756
+ /**
757
+ * @generated from field: bool exclusion_group_key_clear = 15;
619
758
  */
620
- goals?: JsonObject | undefined;
759
+ exclusionGroupKeyClear: boolean;
621
760
  };
622
761
 
623
762
  /**
@@ -10,7 +10,7 @@ import { file_expressions_v1_expressions } from "../../expressions/v1/expression
10
10
  * Describes the file experiments/v1/experiments.proto.
11
11
  */
12
12
  export const file_experiments_v1_experiments = /*@__PURE__*/
13
- fileDesc("CiBleHBlcmltZW50cy92MS9leHBlcmltZW50cy5wcm90bxIOZXhwZXJpbWVudHMudjEiswEKE0V4cGVyaW1lbnRUYXJnZXRpbmcSDAoEdHlwZRgBIAEoCRIXCgpzZWdtZW50X2lkGAIgASgJSACIAQESGAoLc2VnbWVudF9rZXkYAyABKAlIAYgBARIyCgVydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAKIAQFCDQoLX3NlZ21lbnRfaWRCDgoMX3NlZ21lbnRfa2V5QggKBl9ydWxlcyJ4ChFFeHBlcmltZW50VmFyaWFudBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIPCgdwZXJjZW50GAMgASgFEiwKBmNvbmZpZxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIJCgdfY29uZmlnIpUGCgpFeHBlcmltZW50EgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESMAoGc3RhdHVzGAogASgOMiAuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFN0YXR1cxIRCglpc19hY3RpdmUYCyABKAgSNgoJdGFyZ2V0aW5nGBQgASgLMiMuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFRhcmdldGluZxIXCg9jb250cm9sX3BlcmNlbnQYFSABKAUSMwoIdmFyaWFudHMYFiADKAsyIS5leHBlcmltZW50cy52MS5FeHBlcmltZW50VmFyaWFudBIeChZhc3NpZ25tZW50X3BlcnNpc3RlbmNlGBcgASgJEjMKCnN0YXJ0X2RhdGUYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESMQoIZW5kX2RhdGUYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESLQoHbWV0cmljcxgjIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIrCgVnb2FscxgkIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIRCgl0ZW5hbnRfaWQYKCABKAkSEgoKcHJvamVjdF9pZBgpIAEoCRIXCgpjcmVhdGVkX2J5GC0gASgJSAWIAQESFwoKdXBkYXRlZF9ieRguIAEoCUgGiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkINCgtfc3RhcnRfZGF0ZUILCglfZW5kX2RhdGVCCgoIX21ldHJpY3NCCAoGX2dvYWxzQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5ItQDChRFeHBlcmltZW50QXNzaWdubWVudBIKCgJpZBgBIAEoCRIVCg1leHBlcmltZW50X2lkGAIgASgJEhgKC2N1c3RvbWVyX2lkGAMgASgJSACIAQESEwoLdmFyaWFudF9rZXkYBCABKAkSGQoRYXNzaWdubWVudF9tZXRob2QYBSABKAkSFgoOZXhwZXJpbWVudF9rZXkYBiABKAkSFwoKdmlld2VyX2tleRgHIAEoCUgBiAEBEhEKCXRlbmFudF9pZBgKIAEoCRISCgpwcm9qZWN0X2lkGAsgASgJEi8KC2Fzc2lnbmVkX2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1maXJzdF9zZWVuX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgxsYXN0X3NlZW5fYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCmV4cGlyZXNfYXQYFyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCDgoMX2N1c3RvbWVyX2lkQg0KC192aWV3ZXJfa2V5Qg0KC19leHBpcmVzX2F0IkUKFUV4cGVyaW1lbnREZWNsYXJhdGlvbhIWCg5leHBlcmltZW50X2tleRgBIAEoCRIUCgx2YXJpYW50X2tleXMYAiADKAkipwEKDFZhcmlhbnRTdGF0cxITCgt2YXJpYW50X2tleRgBIAEoCRIYChBhc3NpZ25tZW50X2NvdW50GAIgASgFEhcKD2NvbnZlcnNpb25fcmF0ZRgDIAEoARI4ChJhZGRpdGlvbmFsX21ldHJpY3MYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCFQoTX2FkZGl0aW9uYWxfbWV0cmljcyJhCg9FeHBlcmltZW50U3RhdHMSMwoNdmFyaWFudF9zdGF0cxgBIAMoCzIcLmV4cGVyaW1lbnRzLnYxLlZhcmlhbnRTdGF0cxIZChF0b3RhbF9hc3NpZ25tZW50cxgCIAEoBSKLBAoXQ3JlYXRlRXhwZXJpbWVudFJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARI7Cgl0YXJnZXRpbmcYBCABKAsyIy5leHBlcmltZW50cy52MS5FeHBlcmltZW50VGFyZ2V0aW5nSAGIAQESHAoPY29udHJvbF9wZXJjZW50GAUgASgFSAKIAQESMwoIdmFyaWFudHMYBiADKAsyIS5leHBlcmltZW50cy52MS5FeHBlcmltZW50VmFyaWFudBIzCgpzdGFydF9kYXRlGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEjEKCGVuZF9kYXRlGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiMKFmFzc2lnbm1lbnRfcGVyc2lzdGVuY2UYCSABKAlIBYgBARIrCgVnb2FscxgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBAUIOCgxfZGVzY3JpcHRpb25CDAoKX3RhcmdldGluZ0ISChBfY29udHJvbF9wZXJjZW50Qg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIZChdfYXNzaWdubWVudF9wZXJzaXN0ZW5jZUIICgZfZ29hbHMiSgoYQ3JlYXRlRXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50IiIKFEdldEV4cGVyaW1lbnRSZXF1ZXN0EgoKAmlkGAEgASgJIkcKFUdldEV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIoChlHZXRFeHBlcmltZW50QnlLZXlSZXF1ZXN0EgsKA2tleRgBIAEoCSJMChpHZXRFeHBlcmltZW50QnlLZXlSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCKfAQoWTGlzdEV4cGVyaW1lbnRzUmVxdWVzdBI1CgZzdGF0dXMYASABKA4yIC5leHBlcmltZW50cy52MS5FeHBlcmltZW50U3RhdHVzSACIAQESFgoJaXNfYWN0aXZlGAIgASgISAGIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zdGF0dXNCDAoKX2lzX2FjdGl2ZSJZChdMaXN0RXhwZXJpbWVudHNSZXNwb25zZRIvCgtleHBlcmltZW50cxgBIAMoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQSDQoFdG90YWwYAiABKAUimAQKF1VwZGF0ZUV4cGVyaW1lbnRSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIYCgtkZXNjcmlwdGlvbhgDIAEoCUgBiAEBEjsKCXRhcmdldGluZxgEIAEoCzIjLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRUYXJnZXRpbmdIAogBARIcCg9jb250cm9sX3BlcmNlbnQYBSABKAVIA4gBARIzCgh2YXJpYW50cxgGIAMoCzIhLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRWYXJpYW50EjMKCnN0YXJ0X2RhdGUYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESMQoIZW5kX2RhdGUYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESIwoWYXNzaWdubWVudF9wZXJzaXN0ZW5jZRgJIAEoCUgGiAEBEisKBWdvYWxzGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfdGFyZ2V0aW5nQhIKEF9jb250cm9sX3BlcmNlbnRCDQoLX3N0YXJ0X2RhdGVCCwoJX2VuZF9kYXRlQhkKF19hc3NpZ25tZW50X3BlcnNpc3RlbmNlQggKBl9nb2FscyJKChhVcGRhdGVFeHBlcmltZW50UmVzcG9uc2USLgoKZXhwZXJpbWVudBgBIAEoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQiJQoXRGVsZXRlRXhwZXJpbWVudFJlcXVlc3QSCgoCaWQYASABKAkiKwoYRGVsZXRlRXhwZXJpbWVudFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLwoWU3RhcnRFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkkKF1N0YXJ0RXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50Ii8KFlBhdXNlRXhwZXJpbWVudFJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCSJJChdQYXVzZUV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIwChdSZXN1bWVFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkoKGFJlc3VtZUV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCItChRFbmRFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkcKFUVuZEV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIyChlHZXRFeHBlcmltZW50U3RhdHNSZXF1ZXN0EhUKDWV4cGVyaW1lbnRfaWQYASABKAkiTAoaR2V0RXhwZXJpbWVudFN0YXRzUmVzcG9uc2USLgoFc3RhdHMYASABKAsyHy5leHBlcmltZW50cy52MS5FeHBlcmltZW50U3RhdHMinAEKHEZvcmNlQXNzaWduRXhwZXJpbWVudFJlcXVlc3QSGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBARIVCg1leHBlcmltZW50X2lkGAIgASgJEhMKC3ZhcmlhbnRfa2V5GAMgASgJEhcKCnZpZXdlcl9rZXkYBCABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCDQoLX3ZpZXdlcl9rZXkiWQodRm9yY2VBc3NpZ25FeHBlcmltZW50UmVzcG9uc2USOAoKYXNzaWdubWVudBgBIAEoCzIkLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRBc3NpZ25tZW50IowBCiFSZW1vdmVFeHBlcmltZW50QXNzaWdubWVudFJlcXVlc3QSGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBARIVCg1leHBlcmltZW50X2lkGAIgASgJEhcKCnZpZXdlcl9rZXkYAyABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCDQoLX3ZpZXdlcl9rZXkiNQoiUmVtb3ZlRXhwZXJpbWVudEFzc2lnbm1lbnRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIlEKHEFwcGx5RXhwZXJpbWVudFdpbm5lclJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCRIaChJ3aW5uZXJfdmFyaWFudF9rZXkYAiABKAkijQEKHUFwcGx5RXhwZXJpbWVudFdpbm5lclJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50Eh0KFWFmZmVjdGVkX3JlY29yZF9jb3VudBgCIAEoBRIdChVjbGVhcmVkX3ZhcmlhbnRfY291bnQYAyABKAUiWgolUHJldmlld0V4cGVyaW1lbnRXaW5uZXJSb2xsb3V0UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJEhoKEndpbm5lcl92YXJpYW50X2tleRgCIAEoCSJnCg5BZmZlY3RlZFJlY29yZBIRCglyZWNvcmRfaWQYASABKAkSIgoaY3VycmVudF9kZWZhdWx0X3ZhcmlhbnRfaWQYAiABKAkSHgoWbmV3X2RlZmF1bHRfdmFyaWFudF9pZBgDIAEoCSKBAQomUHJldmlld0V4cGVyaW1lbnRXaW5uZXJSb2xsb3V0UmVzcG9uc2USOAoQYWZmZWN0ZWRfcmVjb3JkcxgBIAMoCzIeLmV4cGVyaW1lbnRzLnYxLkFmZmVjdGVkUmVjb3JkEh0KFWNsZWFyZWRfdmFyaWFudF9jb3VudBgCIAEoBSIyChlSb2xsYmFja0V4cGVyaW1lbnRSZXF1ZXN0EhUKDWV4cGVyaW1lbnRfaWQYASABKAkiiwEKGlJvbGxiYWNrRXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50Eh0KFXJlc3RvcmVkX3JlY29yZF9jb3VudBgCIAEoBRIeChZyZXN0b3JlZF92YXJpYW50X2NvdW50GAMgASgFImkKFUdldEFzc2lnbm1lbnRzUmVxdWVzdBIYCgtjdXN0b21lcl9pZBgBIAEoCUgAiAEBEhcKCnZpZXdlcl9rZXkYAiABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCDQoLX3ZpZXdlcl9rZXkiUwoWR2V0QXNzaWdubWVudHNSZXNwb25zZRI5Cgthc3NpZ25tZW50cxgBIAMoCzIkLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRBc3NpZ25tZW50IiMKIUxpc3RFeHBlcmltZW50RGVjbGFyYXRpb25zUmVxdWVzdCJhCiJMaXN0RXhwZXJpbWVudERlY2xhcmF0aW9uc1Jlc3BvbnNlEjsKDGRlY2xhcmF0aW9ucxgBIAMoCzIlLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnREZWNsYXJhdGlvbiKCAQoWUmVzb2x2ZUV4cG9zdXJlUmVxdWVzdBIWCg5leHBlcmltZW50X2tleRgBIAEoCRIYCgtjdXN0b21lcl9pZBgCIAEoCUgAiAEBEhcKCnZpZXdlcl9rZXkYAyABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCDQoLX3ZpZXdlcl9rZXkipAEKF1Jlc29sdmVFeHBvc3VyZVJlc3BvbnNlEhYKDmV4cGVyaW1lbnRfa2V5GAEgASgJEhMKC3ZhcmlhbnRfa2V5GAIgASgJEhIKCmlzX2NvbnRyb2wYAyABKAgSEgoKaXNfZXhwb3NlZBgEIAEoCBIZChFhc3NpZ25tZW50X21ldGhvZBgFIAEoCRIZChFpc19uZXdfYXNzaWdubWVudBgGIAEoCCqwAQoQRXhwZXJpbWVudFN0YXR1cxIhCh1FWFBFUklNRU5UX1NUQVRVU19VTlNQRUNJRklFRBAAEhsKF0VYUEVSSU1FTlRfU1RBVFVTX0RSQUZUEAESHQoZRVhQRVJJTUVOVF9TVEFUVVNfUlVOTklORxACEhwKGEVYUEVSSU1FTlRfU1RBVFVTX1BBVVNFRBADEh8KG0VYUEVSSU1FTlRfU1RBVFVTX0NPTVBMRVRFRBAEMq4QChJFeHBlcmltZW50c1NlcnZpY2USXAoNR2V0RXhwZXJpbWVudBIkLmV4cGVyaW1lbnRzLnYxLkdldEV4cGVyaW1lbnRSZXF1ZXN0GiUuZXhwZXJpbWVudHMudjEuR2V0RXhwZXJpbWVudFJlc3BvbnNlEmsKEkdldEV4cGVyaW1lbnRCeUtleRIpLmV4cGVyaW1lbnRzLnYxLkdldEV4cGVyaW1lbnRCeUtleVJlcXVlc3QaKi5leHBlcmltZW50cy52MS5HZXRFeHBlcmltZW50QnlLZXlSZXNwb25zZRJiCg9MaXN0RXhwZXJpbWVudHMSJi5leHBlcmltZW50cy52MS5MaXN0RXhwZXJpbWVudHNSZXF1ZXN0GicuZXhwZXJpbWVudHMudjEuTGlzdEV4cGVyaW1lbnRzUmVzcG9uc2USZQoQQ3JlYXRlRXhwZXJpbWVudBInLmV4cGVyaW1lbnRzLnYxLkNyZWF0ZUV4cGVyaW1lbnRSZXF1ZXN0GiguZXhwZXJpbWVudHMudjEuQ3JlYXRlRXhwZXJpbWVudFJlc3BvbnNlEmUKEFVwZGF0ZUV4cGVyaW1lbnQSJy5leHBlcmltZW50cy52MS5VcGRhdGVFeHBlcmltZW50UmVxdWVzdBooLmV4cGVyaW1lbnRzLnYxLlVwZGF0ZUV4cGVyaW1lbnRSZXNwb25zZRJlChBEZWxldGVFeHBlcmltZW50EicuZXhwZXJpbWVudHMudjEuRGVsZXRlRXhwZXJpbWVudFJlcXVlc3QaKC5leHBlcmltZW50cy52MS5EZWxldGVFeHBlcmltZW50UmVzcG9uc2USYgoPU3RhcnRFeHBlcmltZW50EiYuZXhwZXJpbWVudHMudjEuU3RhcnRFeHBlcmltZW50UmVxdWVzdBonLmV4cGVyaW1lbnRzLnYxLlN0YXJ0RXhwZXJpbWVudFJlc3BvbnNlEmIKD1BhdXNlRXhwZXJpbWVudBImLmV4cGVyaW1lbnRzLnYxLlBhdXNlRXhwZXJpbWVudFJlcXVlc3QaJy5leHBlcmltZW50cy52MS5QYXVzZUV4cGVyaW1lbnRSZXNwb25zZRJlChBSZXN1bWVFeHBlcmltZW50EicuZXhwZXJpbWVudHMudjEuUmVzdW1lRXhwZXJpbWVudFJlcXVlc3QaKC5leHBlcmltZW50cy52MS5SZXN1bWVFeHBlcmltZW50UmVzcG9uc2USXAoNRW5kRXhwZXJpbWVudBIkLmV4cGVyaW1lbnRzLnYxLkVuZEV4cGVyaW1lbnRSZXF1ZXN0GiUuZXhwZXJpbWVudHMudjEuRW5kRXhwZXJpbWVudFJlc3BvbnNlEnQKFUFwcGx5RXhwZXJpbWVudFdpbm5lchIsLmV4cGVyaW1lbnRzLnYxLkFwcGx5RXhwZXJpbWVudFdpbm5lclJlcXVlc3QaLS5leHBlcmltZW50cy52MS5BcHBseUV4cGVyaW1lbnRXaW5uZXJSZXNwb25zZRKPAQoeUHJldmlld0V4cGVyaW1lbnRXaW5uZXJSb2xsb3V0EjUuZXhwZXJpbWVudHMudjEuUHJldmlld0V4cGVyaW1lbnRXaW5uZXJSb2xsb3V0UmVxdWVzdBo2LmV4cGVyaW1lbnRzLnYxLlByZXZpZXdFeHBlcmltZW50V2lubmVyUm9sbG91dFJlc3BvbnNlEmsKElJvbGxiYWNrRXhwZXJpbWVudBIpLmV4cGVyaW1lbnRzLnYxLlJvbGxiYWNrRXhwZXJpbWVudFJlcXVlc3QaKi5leHBlcmltZW50cy52MS5Sb2xsYmFja0V4cGVyaW1lbnRSZXNwb25zZRJrChJHZXRFeHBlcmltZW50U3RhdHMSKS5leHBlcmltZW50cy52MS5HZXRFeHBlcmltZW50U3RhdHNSZXF1ZXN0GiouZXhwZXJpbWVudHMudjEuR2V0RXhwZXJpbWVudFN0YXRzUmVzcG9uc2USdAoVRm9yY2VBc3NpZ25FeHBlcmltZW50EiwuZXhwZXJpbWVudHMudjEuRm9yY2VBc3NpZ25FeHBlcmltZW50UmVxdWVzdBotLmV4cGVyaW1lbnRzLnYxLkZvcmNlQXNzaWduRXhwZXJpbWVudFJlc3BvbnNlEoMBChpSZW1vdmVFeHBlcmltZW50QXNzaWdubWVudBIxLmV4cGVyaW1lbnRzLnYxLlJlbW92ZUV4cGVyaW1lbnRBc3NpZ25tZW50UmVxdWVzdBoyLmV4cGVyaW1lbnRzLnYxLlJlbW92ZUV4cGVyaW1lbnRBc3NpZ25tZW50UmVzcG9uc2USXwoOR2V0QXNzaWdubWVudHMSJS5leHBlcmltZW50cy52MS5HZXRBc3NpZ25tZW50c1JlcXVlc3QaJi5leHBlcmltZW50cy52MS5HZXRBc3NpZ25tZW50c1Jlc3BvbnNlEmIKD1Jlc29sdmVFeHBvc3VyZRImLmV4cGVyaW1lbnRzLnYxLlJlc29sdmVFeHBvc3VyZVJlcXVlc3QaJy5leHBlcmltZW50cy52MS5SZXNvbHZlRXhwb3N1cmVSZXNwb25zZRKDAQoaTGlzdEV4cGVyaW1lbnREZWNsYXJhdGlvbnMSMS5leHBlcmltZW50cy52MS5MaXN0RXhwZXJpbWVudERlY2xhcmF0aW9uc1JlcXVlc3QaMi5leHBlcmltZW50cy52MS5MaXN0RXhwZXJpbWVudERlY2xhcmF0aW9uc1Jlc3BvbnNlQkNaQWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9leHBlcmltZW50cy92MTtleHBlcmltZW50c3YxYgZwcm90bzM", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_expressions_v1_expressions]);
13
+ fileDesc("CiBleHBlcmltZW50cy92MS9leHBlcmltZW50cy5wcm90bxIOZXhwZXJpbWVudHMudjEiswEKE0V4cGVyaW1lbnRUYXJnZXRpbmcSDAoEdHlwZRgBIAEoCRIXCgpzZWdtZW50X2lkGAIgASgJSACIAQESGAoLc2VnbWVudF9rZXkYAyABKAlIAYgBARIyCgVydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAKIAQFCDQoLX3NlZ21lbnRfaWRCDgoMX3NlZ21lbnRfa2V5QggKBl9ydWxlcyJ4ChFFeHBlcmltZW50VmFyaWFudBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIPCgdwZXJjZW50GAMgASgFEiwKBmNvbmZpZxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIJCgdfY29uZmlnImkKDkV4cGVyaW1lbnRHb2FsEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEgoKaXNfcHJpbWFyeRgEIAEoCEIOCgxfZGVzY3JpcHRpb24iYAoURXhwZXJpbWVudEZ1bm5lbFN0ZXASEAoIZ29hbF9rZXkYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBQg4KDF9kZXNjcmlwdGlvbiKDBwoKRXhwZXJpbWVudBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjAKBnN0YXR1cxgKIAEoDjIgLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRTdGF0dXMSEQoJaXNfYWN0aXZlGAsgASgIEjYKCXRhcmdldGluZxgUIAEoCzIjLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRUYXJnZXRpbmcSFwoPY29udHJvbF9wZXJjZW50GBUgASgFEjMKCHZhcmlhbnRzGBYgAygLMiEuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFZhcmlhbnQSHgoWYXNzaWdubWVudF9wZXJzaXN0ZW5jZRgXIAEoCRIgChNleGNsdXNpb25fZ3JvdXBfa2V5GBggASgJSAGIAQESMwoKc3RhcnRfZGF0ZRgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIxCghlbmRfZGF0ZRgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARItCgdtZXRyaWNzGCMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEi0KBWdvYWxzGCQgAygLMh4uZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudEdvYWwSOgoMZnVubmVsX3N0ZXBzGCUgAygLMiQuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudEZ1bm5lbFN0ZXASEQoJdGVuYW50X2lkGCggASgJEhIKCnByb2plY3RfaWQYKSABKAkSFwoKY3JlYXRlZF9ieRgtIAEoCUgFiAEBEhcKCnVwZGF0ZWRfYnkYLiABKAlIBogBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CFgoUX2V4Y2x1c2lvbl9ncm91cF9rZXlCDQoLX3N0YXJ0X2RhdGVCCwoJX2VuZF9kYXRlQgoKCF9tZXRyaWNzQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5ItQDChRFeHBlcmltZW50QXNzaWdubWVudBIKCgJpZBgBIAEoCRIVCg1leHBlcmltZW50X2lkGAIgASgJEhgKC2N1c3RvbWVyX2lkGAMgASgJSACIAQESEwoLdmFyaWFudF9rZXkYBCABKAkSGQoRYXNzaWdubWVudF9tZXRob2QYBSABKAkSFgoOZXhwZXJpbWVudF9rZXkYBiABKAkSFwoKdmlld2VyX2tleRgHIAEoCUgBiAEBEhEKCXRlbmFudF9pZBgKIAEoCRISCgpwcm9qZWN0X2lkGAsgASgJEi8KC2Fzc2lnbmVkX2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1maXJzdF9zZWVuX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgxsYXN0X3NlZW5fYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCmV4cGlyZXNfYXQYFyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCDgoMX2N1c3RvbWVyX2lkQg0KC192aWV3ZXJfa2V5Qg0KC19leHBpcmVzX2F0IkUKFUV4cGVyaW1lbnREZWNsYXJhdGlvbhIWCg5leHBlcmltZW50X2tleRgBIAEoCRIUCgx2YXJpYW50X2tleXMYAiADKAkipwEKDFZhcmlhbnRTdGF0cxITCgt2YXJpYW50X2tleRgBIAEoCRIYChBhc3NpZ25tZW50X2NvdW50GAIgASgFEhcKD2NvbnZlcnNpb25fcmF0ZRgDIAEoARI4ChJhZGRpdGlvbmFsX21ldHJpY3MYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCFQoTX2FkZGl0aW9uYWxfbWV0cmljcyJhCg9FeHBlcmltZW50U3RhdHMSMwoNdmFyaWFudF9zdGF0cxgBIAMoCzIcLmV4cGVyaW1lbnRzLnYxLlZhcmlhbnRTdGF0cxIZChF0b3RhbF9hc3NpZ25tZW50cxgCIAEoBSL5BAoXQ3JlYXRlRXhwZXJpbWVudFJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARI7Cgl0YXJnZXRpbmcYBCABKAsyIy5leHBlcmltZW50cy52MS5FeHBlcmltZW50VGFyZ2V0aW5nSAGIAQESHAoPY29udHJvbF9wZXJjZW50GAUgASgFSAKIAQESMwoIdmFyaWFudHMYBiADKAsyIS5leHBlcmltZW50cy52MS5FeHBlcmltZW50VmFyaWFudBIzCgpzdGFydF9kYXRlGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEjEKCGVuZF9kYXRlGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiMKFmFzc2lnbm1lbnRfcGVyc2lzdGVuY2UYCSABKAlIBYgBARItCgVnb2FscxgKIAMoCzIeLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRHb2FsEjoKDGZ1bm5lbF9zdGVwcxgLIAMoCzIkLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRGdW5uZWxTdGVwEiAKE2V4Y2x1c2lvbl9ncm91cF9rZXkYDCABKAlIBogBAUIOCgxfZGVzY3JpcHRpb25CDAoKX3RhcmdldGluZ0ISChBfY29udHJvbF9wZXJjZW50Qg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIZChdfYXNzaWdubWVudF9wZXJzaXN0ZW5jZUIWChRfZXhjbHVzaW9uX2dyb3VwX2tleSJKChhDcmVhdGVFeHBlcmltZW50UmVzcG9uc2USLgoKZXhwZXJpbWVudBgBIAEoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQiIgoUR2V0RXhwZXJpbWVudFJlcXVlc3QSCgoCaWQYASABKAkiRwoVR2V0RXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50IigKGUdldEV4cGVyaW1lbnRCeUtleVJlcXVlc3QSCwoDa2V5GAEgASgJIkwKGkdldEV4cGVyaW1lbnRCeUtleVJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50Ip8BChZMaXN0RXhwZXJpbWVudHNSZXF1ZXN0EjUKBnN0YXR1cxgBIAEoDjIgLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRTdGF0dXNIAIgBARIWCglpc19hY3RpdmUYAiABKAhIAYgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCQoHX3N0YXR1c0IMCgpfaXNfYWN0aXZlIlkKF0xpc3RFeHBlcmltZW50c1Jlc3BvbnNlEi8KC2V4cGVyaW1lbnRzGAEgAygLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudBINCgV0b3RhbBgCIAEoBSLaBQoXVXBkYXRlRXhwZXJpbWVudFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESOwoJdGFyZ2V0aW5nGAQgASgLMiMuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFRhcmdldGluZ0gCiAEBEhwKD2NvbnRyb2xfcGVyY2VudBgFIAEoBUgDiAEBEjMKCHZhcmlhbnRzGAYgAygLMiEuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFZhcmlhbnQSMwoKc3RhcnRfZGF0ZRgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIxCghlbmRfZGF0ZRgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIjChZhc3NpZ25tZW50X3BlcnNpc3RlbmNlGAkgASgJSAaIAQESLQoFZ29hbHMYCiADKAsyHi5leHBlcmltZW50cy52MS5FeHBlcmltZW50R29hbBITCgtnb2Fsc19jbGVhchgLIAEoCBI6CgxmdW5uZWxfc3RlcHMYDCADKAsyJC5leHBlcmltZW50cy52MS5FeHBlcmltZW50RnVubmVsU3RlcBIaChJmdW5uZWxfc3RlcHNfY2xlYXIYDSABKAgSIAoTZXhjbHVzaW9uX2dyb3VwX2tleRgOIAEoCUgHiAEBEiEKGWV4Y2x1c2lvbl9ncm91cF9rZXlfY2xlYXIYDyABKAhCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl90YXJnZXRpbmdCEgoQX2NvbnRyb2xfcGVyY2VudEINCgtfc3RhcnRfZGF0ZUILCglfZW5kX2RhdGVCGQoXX2Fzc2lnbm1lbnRfcGVyc2lzdGVuY2VCFgoUX2V4Y2x1c2lvbl9ncm91cF9rZXkiSgoYVXBkYXRlRXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50IiUKF0RlbGV0ZUV4cGVyaW1lbnRSZXF1ZXN0EgoKAmlkGAEgASgJIisKGERlbGV0ZUV4cGVyaW1lbnRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi8KFlN0YXJ0RXhwZXJpbWVudFJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCSJJChdTdGFydEV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIvChZQYXVzZUV4cGVyaW1lbnRSZXF1ZXN0EhUKDWV4cGVyaW1lbnRfaWQYASABKAkiSQoXUGF1c2VFeHBlcmltZW50UmVzcG9uc2USLgoKZXhwZXJpbWVudBgBIAEoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQiMAoXUmVzdW1lRXhwZXJpbWVudFJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCSJKChhSZXN1bWVFeHBlcmltZW50UmVzcG9uc2USLgoKZXhwZXJpbWVudBgBIAEoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQiLQoURW5kRXhwZXJpbWVudFJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCSJHChVFbmRFeHBlcmltZW50UmVzcG9uc2USLgoKZXhwZXJpbWVudBgBIAEoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQiMgoZR2V0RXhwZXJpbWVudFN0YXRzUmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkwKGkdldEV4cGVyaW1lbnRTdGF0c1Jlc3BvbnNlEi4KBXN0YXRzGAEgASgLMh8uZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFN0YXRzIpwBChxGb3JjZUFzc2lnbkV4cGVyaW1lbnRSZXF1ZXN0EhgKC2N1c3RvbWVyX2lkGAEgASgJSACIAQESFQoNZXhwZXJpbWVudF9pZBgCIAEoCRITCgt2YXJpYW50X2tleRgDIAEoCRIXCgp2aWV3ZXJfa2V5GAQgASgJSAGIAQFCDgoMX2N1c3RvbWVyX2lkQg0KC192aWV3ZXJfa2V5IlkKHUZvcmNlQXNzaWduRXhwZXJpbWVudFJlc3BvbnNlEjgKCmFzc2lnbm1lbnQYASABKAsyJC5leHBlcmltZW50cy52MS5FeHBlcmltZW50QXNzaWdubWVudCKMAQohUmVtb3ZlRXhwZXJpbWVudEFzc2lnbm1lbnRSZXF1ZXN0EhgKC2N1c3RvbWVyX2lkGAEgASgJSACIAQESFQoNZXhwZXJpbWVudF9pZBgCIAEoCRIXCgp2aWV3ZXJfa2V5GAMgASgJSAGIAQFCDgoMX2N1c3RvbWVyX2lkQg0KC192aWV3ZXJfa2V5IjUKIlJlbW92ZUV4cGVyaW1lbnRBc3NpZ25tZW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJRChxBcHBseUV4cGVyaW1lbnRXaW5uZXJSZXF1ZXN0EhUKDWV4cGVyaW1lbnRfaWQYASABKAkSGgoSd2lubmVyX3ZhcmlhbnRfa2V5GAIgASgJIo0BCh1BcHBseUV4cGVyaW1lbnRXaW5uZXJSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudBIdChVhZmZlY3RlZF9yZWNvcmRfY291bnQYAiABKAUSHQoVY2xlYXJlZF92YXJpYW50X2NvdW50GAMgASgFIloKJVByZXZpZXdFeHBlcmltZW50V2lubmVyUm9sbG91dFJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCRIaChJ3aW5uZXJfdmFyaWFudF9rZXkYAiABKAkiZwoOQWZmZWN0ZWRSZWNvcmQSEQoJcmVjb3JkX2lkGAEgASgJEiIKGmN1cnJlbnRfZGVmYXVsdF92YXJpYW50X2lkGAIgASgJEh4KFm5ld19kZWZhdWx0X3ZhcmlhbnRfaWQYAyABKAkigQEKJlByZXZpZXdFeHBlcmltZW50V2lubmVyUm9sbG91dFJlc3BvbnNlEjgKEGFmZmVjdGVkX3JlY29yZHMYASADKAsyHi5leHBlcmltZW50cy52MS5BZmZlY3RlZFJlY29yZBIdChVjbGVhcmVkX3ZhcmlhbnRfY291bnQYAiABKAUiMgoZUm9sbGJhY2tFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIosBChpSb2xsYmFja0V4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudBIdChVyZXN0b3JlZF9yZWNvcmRfY291bnQYAiABKAUSHgoWcmVzdG9yZWRfdmFyaWFudF9jb3VudBgDIAEoBSJpChVHZXRBc3NpZ25tZW50c1JlcXVlc3QSGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBARIXCgp2aWV3ZXJfa2V5GAIgASgJSAGIAQFCDgoMX2N1c3RvbWVyX2lkQg0KC192aWV3ZXJfa2V5IlMKFkdldEFzc2lnbm1lbnRzUmVzcG9uc2USOQoLYXNzaWdubWVudHMYASADKAsyJC5leHBlcmltZW50cy52MS5FeHBlcmltZW50QXNzaWdubWVudCIjCiFMaXN0RXhwZXJpbWVudERlY2xhcmF0aW9uc1JlcXVlc3QiYQoiTGlzdEV4cGVyaW1lbnREZWNsYXJhdGlvbnNSZXNwb25zZRI7CgxkZWNsYXJhdGlvbnMYASADKAsyJS5leHBlcmltZW50cy52MS5FeHBlcmltZW50RGVjbGFyYXRpb24iggEKFlJlc29sdmVFeHBvc3VyZVJlcXVlc3QSFgoOZXhwZXJpbWVudF9rZXkYASABKAkSGAoLY3VzdG9tZXJfaWQYAiABKAlIAIgBARIXCgp2aWV3ZXJfa2V5GAMgASgJSAGIAQFCDgoMX2N1c3RvbWVyX2lkQg0KC192aWV3ZXJfa2V5IqQBChdSZXNvbHZlRXhwb3N1cmVSZXNwb25zZRIWCg5leHBlcmltZW50X2tleRgBIAEoCRITCgt2YXJpYW50X2tleRgCIAEoCRISCgppc19jb250cm9sGAMgASgIEhIKCmlzX2V4cG9zZWQYBCABKAgSGQoRYXNzaWdubWVudF9tZXRob2QYBSABKAkSGQoRaXNfbmV3X2Fzc2lnbm1lbnQYBiABKAgqsAEKEEV4cGVyaW1lbnRTdGF0dXMSIQodRVhQRVJJTUVOVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIbChdFWFBFUklNRU5UX1NUQVRVU19EUkFGVBABEh0KGUVYUEVSSU1FTlRfU1RBVFVTX1JVTk5JTkcQAhIcChhFWFBFUklNRU5UX1NUQVRVU19QQVVTRUQQAxIfChtFWFBFUklNRU5UX1NUQVRVU19DT01QTEVURUQQBDKuEAoSRXhwZXJpbWVudHNTZXJ2aWNlElwKDUdldEV4cGVyaW1lbnQSJC5leHBlcmltZW50cy52MS5HZXRFeHBlcmltZW50UmVxdWVzdBolLmV4cGVyaW1lbnRzLnYxLkdldEV4cGVyaW1lbnRSZXNwb25zZRJrChJHZXRFeHBlcmltZW50QnlLZXkSKS5leHBlcmltZW50cy52MS5HZXRFeHBlcmltZW50QnlLZXlSZXF1ZXN0GiouZXhwZXJpbWVudHMudjEuR2V0RXhwZXJpbWVudEJ5S2V5UmVzcG9uc2USYgoPTGlzdEV4cGVyaW1lbnRzEiYuZXhwZXJpbWVudHMudjEuTGlzdEV4cGVyaW1lbnRzUmVxdWVzdBonLmV4cGVyaW1lbnRzLnYxLkxpc3RFeHBlcmltZW50c1Jlc3BvbnNlEmUKEENyZWF0ZUV4cGVyaW1lbnQSJy5leHBlcmltZW50cy52MS5DcmVhdGVFeHBlcmltZW50UmVxdWVzdBooLmV4cGVyaW1lbnRzLnYxLkNyZWF0ZUV4cGVyaW1lbnRSZXNwb25zZRJlChBVcGRhdGVFeHBlcmltZW50EicuZXhwZXJpbWVudHMudjEuVXBkYXRlRXhwZXJpbWVudFJlcXVlc3QaKC5leHBlcmltZW50cy52MS5VcGRhdGVFeHBlcmltZW50UmVzcG9uc2USZQoQRGVsZXRlRXhwZXJpbWVudBInLmV4cGVyaW1lbnRzLnYxLkRlbGV0ZUV4cGVyaW1lbnRSZXF1ZXN0GiguZXhwZXJpbWVudHMudjEuRGVsZXRlRXhwZXJpbWVudFJlc3BvbnNlEmIKD1N0YXJ0RXhwZXJpbWVudBImLmV4cGVyaW1lbnRzLnYxLlN0YXJ0RXhwZXJpbWVudFJlcXVlc3QaJy5leHBlcmltZW50cy52MS5TdGFydEV4cGVyaW1lbnRSZXNwb25zZRJiCg9QYXVzZUV4cGVyaW1lbnQSJi5leHBlcmltZW50cy52MS5QYXVzZUV4cGVyaW1lbnRSZXF1ZXN0GicuZXhwZXJpbWVudHMudjEuUGF1c2VFeHBlcmltZW50UmVzcG9uc2USZQoQUmVzdW1lRXhwZXJpbWVudBInLmV4cGVyaW1lbnRzLnYxLlJlc3VtZUV4cGVyaW1lbnRSZXF1ZXN0GiguZXhwZXJpbWVudHMudjEuUmVzdW1lRXhwZXJpbWVudFJlc3BvbnNlElwKDUVuZEV4cGVyaW1lbnQSJC5leHBlcmltZW50cy52MS5FbmRFeHBlcmltZW50UmVxdWVzdBolLmV4cGVyaW1lbnRzLnYxLkVuZEV4cGVyaW1lbnRSZXNwb25zZRJ0ChVBcHBseUV4cGVyaW1lbnRXaW5uZXISLC5leHBlcmltZW50cy52MS5BcHBseUV4cGVyaW1lbnRXaW5uZXJSZXF1ZXN0Gi0uZXhwZXJpbWVudHMudjEuQXBwbHlFeHBlcmltZW50V2lubmVyUmVzcG9uc2USjwEKHlByZXZpZXdFeHBlcmltZW50V2lubmVyUm9sbG91dBI1LmV4cGVyaW1lbnRzLnYxLlByZXZpZXdFeHBlcmltZW50V2lubmVyUm9sbG91dFJlcXVlc3QaNi5leHBlcmltZW50cy52MS5QcmV2aWV3RXhwZXJpbWVudFdpbm5lclJvbGxvdXRSZXNwb25zZRJrChJSb2xsYmFja0V4cGVyaW1lbnQSKS5leHBlcmltZW50cy52MS5Sb2xsYmFja0V4cGVyaW1lbnRSZXF1ZXN0GiouZXhwZXJpbWVudHMudjEuUm9sbGJhY2tFeHBlcmltZW50UmVzcG9uc2USawoSR2V0RXhwZXJpbWVudFN0YXRzEikuZXhwZXJpbWVudHMudjEuR2V0RXhwZXJpbWVudFN0YXRzUmVxdWVzdBoqLmV4cGVyaW1lbnRzLnYxLkdldEV4cGVyaW1lbnRTdGF0c1Jlc3BvbnNlEnQKFUZvcmNlQXNzaWduRXhwZXJpbWVudBIsLmV4cGVyaW1lbnRzLnYxLkZvcmNlQXNzaWduRXhwZXJpbWVudFJlcXVlc3QaLS5leHBlcmltZW50cy52MS5Gb3JjZUFzc2lnbkV4cGVyaW1lbnRSZXNwb25zZRKDAQoaUmVtb3ZlRXhwZXJpbWVudEFzc2lnbm1lbnQSMS5leHBlcmltZW50cy52MS5SZW1vdmVFeHBlcmltZW50QXNzaWdubWVudFJlcXVlc3QaMi5leHBlcmltZW50cy52MS5SZW1vdmVFeHBlcmltZW50QXNzaWdubWVudFJlc3BvbnNlEl8KDkdldEFzc2lnbm1lbnRzEiUuZXhwZXJpbWVudHMudjEuR2V0QXNzaWdubWVudHNSZXF1ZXN0GiYuZXhwZXJpbWVudHMudjEuR2V0QXNzaWdubWVudHNSZXNwb25zZRJiCg9SZXNvbHZlRXhwb3N1cmUSJi5leHBlcmltZW50cy52MS5SZXNvbHZlRXhwb3N1cmVSZXF1ZXN0GicuZXhwZXJpbWVudHMudjEuUmVzb2x2ZUV4cG9zdXJlUmVzcG9uc2USgwEKGkxpc3RFeHBlcmltZW50RGVjbGFyYXRpb25zEjEuZXhwZXJpbWVudHMudjEuTGlzdEV4cGVyaW1lbnREZWNsYXJhdGlvbnNSZXF1ZXN0GjIuZXhwZXJpbWVudHMudjEuTGlzdEV4cGVyaW1lbnREZWNsYXJhdGlvbnNSZXNwb25zZUJDWkFnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vZXhwZXJpbWVudHMvdjE7ZXhwZXJpbWVudHN2MWIGcHJvdG8z", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_expressions_v1_expressions]);
14
14
 
15
15
  /**
16
16
  * Describes the message experiments.v1.ExperimentTargeting.
@@ -26,313 +26,327 @@ export const ExperimentTargetingSchema = /*@__PURE__*/
26
26
  export const ExperimentVariantSchema = /*@__PURE__*/
27
27
  messageDesc(file_experiments_v1_experiments, 1);
28
28
 
29
+ /**
30
+ * Describes the message experiments.v1.ExperimentGoal.
31
+ * Use `create(ExperimentGoalSchema)` to create a new message.
32
+ */
33
+ export const ExperimentGoalSchema = /*@__PURE__*/
34
+ messageDesc(file_experiments_v1_experiments, 2);
35
+
36
+ /**
37
+ * Describes the message experiments.v1.ExperimentFunnelStep.
38
+ * Use `create(ExperimentFunnelStepSchema)` to create a new message.
39
+ */
40
+ export const ExperimentFunnelStepSchema = /*@__PURE__*/
41
+ messageDesc(file_experiments_v1_experiments, 3);
42
+
29
43
  /**
30
44
  * Describes the message experiments.v1.Experiment.
31
45
  * Use `create(ExperimentSchema)` to create a new message.
32
46
  */
33
47
  export const ExperimentSchema = /*@__PURE__*/
34
- messageDesc(file_experiments_v1_experiments, 2);
48
+ messageDesc(file_experiments_v1_experiments, 4);
35
49
 
36
50
  /**
37
51
  * Describes the message experiments.v1.ExperimentAssignment.
38
52
  * Use `create(ExperimentAssignmentSchema)` to create a new message.
39
53
  */
40
54
  export const ExperimentAssignmentSchema = /*@__PURE__*/
41
- messageDesc(file_experiments_v1_experiments, 3);
55
+ messageDesc(file_experiments_v1_experiments, 5);
42
56
 
43
57
  /**
44
58
  * Describes the message experiments.v1.ExperimentDeclaration.
45
59
  * Use `create(ExperimentDeclarationSchema)` to create a new message.
46
60
  */
47
61
  export const ExperimentDeclarationSchema = /*@__PURE__*/
48
- messageDesc(file_experiments_v1_experiments, 4);
62
+ messageDesc(file_experiments_v1_experiments, 6);
49
63
 
50
64
  /**
51
65
  * Describes the message experiments.v1.VariantStats.
52
66
  * Use `create(VariantStatsSchema)` to create a new message.
53
67
  */
54
68
  export const VariantStatsSchema = /*@__PURE__*/
55
- messageDesc(file_experiments_v1_experiments, 5);
69
+ messageDesc(file_experiments_v1_experiments, 7);
56
70
 
57
71
  /**
58
72
  * Describes the message experiments.v1.ExperimentStats.
59
73
  * Use `create(ExperimentStatsSchema)` to create a new message.
60
74
  */
61
75
  export const ExperimentStatsSchema = /*@__PURE__*/
62
- messageDesc(file_experiments_v1_experiments, 6);
76
+ messageDesc(file_experiments_v1_experiments, 8);
63
77
 
64
78
  /**
65
79
  * Describes the message experiments.v1.CreateExperimentRequest.
66
80
  * Use `create(CreateExperimentRequestSchema)` to create a new message.
67
81
  */
68
82
  export const CreateExperimentRequestSchema = /*@__PURE__*/
69
- messageDesc(file_experiments_v1_experiments, 7);
83
+ messageDesc(file_experiments_v1_experiments, 9);
70
84
 
71
85
  /**
72
86
  * Describes the message experiments.v1.CreateExperimentResponse.
73
87
  * Use `create(CreateExperimentResponseSchema)` to create a new message.
74
88
  */
75
89
  export const CreateExperimentResponseSchema = /*@__PURE__*/
76
- messageDesc(file_experiments_v1_experiments, 8);
90
+ messageDesc(file_experiments_v1_experiments, 10);
77
91
 
78
92
  /**
79
93
  * Describes the message experiments.v1.GetExperimentRequest.
80
94
  * Use `create(GetExperimentRequestSchema)` to create a new message.
81
95
  */
82
96
  export const GetExperimentRequestSchema = /*@__PURE__*/
83
- messageDesc(file_experiments_v1_experiments, 9);
97
+ messageDesc(file_experiments_v1_experiments, 11);
84
98
 
85
99
  /**
86
100
  * Describes the message experiments.v1.GetExperimentResponse.
87
101
  * Use `create(GetExperimentResponseSchema)` to create a new message.
88
102
  */
89
103
  export const GetExperimentResponseSchema = /*@__PURE__*/
90
- messageDesc(file_experiments_v1_experiments, 10);
104
+ messageDesc(file_experiments_v1_experiments, 12);
91
105
 
92
106
  /**
93
107
  * Describes the message experiments.v1.GetExperimentByKeyRequest.
94
108
  * Use `create(GetExperimentByKeyRequestSchema)` to create a new message.
95
109
  */
96
110
  export const GetExperimentByKeyRequestSchema = /*@__PURE__*/
97
- messageDesc(file_experiments_v1_experiments, 11);
111
+ messageDesc(file_experiments_v1_experiments, 13);
98
112
 
99
113
  /**
100
114
  * Describes the message experiments.v1.GetExperimentByKeyResponse.
101
115
  * Use `create(GetExperimentByKeyResponseSchema)` to create a new message.
102
116
  */
103
117
  export const GetExperimentByKeyResponseSchema = /*@__PURE__*/
104
- messageDesc(file_experiments_v1_experiments, 12);
118
+ messageDesc(file_experiments_v1_experiments, 14);
105
119
 
106
120
  /**
107
121
  * Describes the message experiments.v1.ListExperimentsRequest.
108
122
  * Use `create(ListExperimentsRequestSchema)` to create a new message.
109
123
  */
110
124
  export const ListExperimentsRequestSchema = /*@__PURE__*/
111
- messageDesc(file_experiments_v1_experiments, 13);
125
+ messageDesc(file_experiments_v1_experiments, 15);
112
126
 
113
127
  /**
114
128
  * Describes the message experiments.v1.ListExperimentsResponse.
115
129
  * Use `create(ListExperimentsResponseSchema)` to create a new message.
116
130
  */
117
131
  export const ListExperimentsResponseSchema = /*@__PURE__*/
118
- messageDesc(file_experiments_v1_experiments, 14);
132
+ messageDesc(file_experiments_v1_experiments, 16);
119
133
 
120
134
  /**
121
135
  * Describes the message experiments.v1.UpdateExperimentRequest.
122
136
  * Use `create(UpdateExperimentRequestSchema)` to create a new message.
123
137
  */
124
138
  export const UpdateExperimentRequestSchema = /*@__PURE__*/
125
- messageDesc(file_experiments_v1_experiments, 15);
139
+ messageDesc(file_experiments_v1_experiments, 17);
126
140
 
127
141
  /**
128
142
  * Describes the message experiments.v1.UpdateExperimentResponse.
129
143
  * Use `create(UpdateExperimentResponseSchema)` to create a new message.
130
144
  */
131
145
  export const UpdateExperimentResponseSchema = /*@__PURE__*/
132
- messageDesc(file_experiments_v1_experiments, 16);
146
+ messageDesc(file_experiments_v1_experiments, 18);
133
147
 
134
148
  /**
135
149
  * Describes the message experiments.v1.DeleteExperimentRequest.
136
150
  * Use `create(DeleteExperimentRequestSchema)` to create a new message.
137
151
  */
138
152
  export const DeleteExperimentRequestSchema = /*@__PURE__*/
139
- messageDesc(file_experiments_v1_experiments, 17);
153
+ messageDesc(file_experiments_v1_experiments, 19);
140
154
 
141
155
  /**
142
156
  * Describes the message experiments.v1.DeleteExperimentResponse.
143
157
  * Use `create(DeleteExperimentResponseSchema)` to create a new message.
144
158
  */
145
159
  export const DeleteExperimentResponseSchema = /*@__PURE__*/
146
- messageDesc(file_experiments_v1_experiments, 18);
160
+ messageDesc(file_experiments_v1_experiments, 20);
147
161
 
148
162
  /**
149
163
  * Describes the message experiments.v1.StartExperimentRequest.
150
164
  * Use `create(StartExperimentRequestSchema)` to create a new message.
151
165
  */
152
166
  export const StartExperimentRequestSchema = /*@__PURE__*/
153
- messageDesc(file_experiments_v1_experiments, 19);
167
+ messageDesc(file_experiments_v1_experiments, 21);
154
168
 
155
169
  /**
156
170
  * Describes the message experiments.v1.StartExperimentResponse.
157
171
  * Use `create(StartExperimentResponseSchema)` to create a new message.
158
172
  */
159
173
  export const StartExperimentResponseSchema = /*@__PURE__*/
160
- messageDesc(file_experiments_v1_experiments, 20);
174
+ messageDesc(file_experiments_v1_experiments, 22);
161
175
 
162
176
  /**
163
177
  * Describes the message experiments.v1.PauseExperimentRequest.
164
178
  * Use `create(PauseExperimentRequestSchema)` to create a new message.
165
179
  */
166
180
  export const PauseExperimentRequestSchema = /*@__PURE__*/
167
- messageDesc(file_experiments_v1_experiments, 21);
181
+ messageDesc(file_experiments_v1_experiments, 23);
168
182
 
169
183
  /**
170
184
  * Describes the message experiments.v1.PauseExperimentResponse.
171
185
  * Use `create(PauseExperimentResponseSchema)` to create a new message.
172
186
  */
173
187
  export const PauseExperimentResponseSchema = /*@__PURE__*/
174
- messageDesc(file_experiments_v1_experiments, 22);
188
+ messageDesc(file_experiments_v1_experiments, 24);
175
189
 
176
190
  /**
177
191
  * Describes the message experiments.v1.ResumeExperimentRequest.
178
192
  * Use `create(ResumeExperimentRequestSchema)` to create a new message.
179
193
  */
180
194
  export const ResumeExperimentRequestSchema = /*@__PURE__*/
181
- messageDesc(file_experiments_v1_experiments, 23);
195
+ messageDesc(file_experiments_v1_experiments, 25);
182
196
 
183
197
  /**
184
198
  * Describes the message experiments.v1.ResumeExperimentResponse.
185
199
  * Use `create(ResumeExperimentResponseSchema)` to create a new message.
186
200
  */
187
201
  export const ResumeExperimentResponseSchema = /*@__PURE__*/
188
- messageDesc(file_experiments_v1_experiments, 24);
202
+ messageDesc(file_experiments_v1_experiments, 26);
189
203
 
190
204
  /**
191
205
  * Describes the message experiments.v1.EndExperimentRequest.
192
206
  * Use `create(EndExperimentRequestSchema)` to create a new message.
193
207
  */
194
208
  export const EndExperimentRequestSchema = /*@__PURE__*/
195
- messageDesc(file_experiments_v1_experiments, 25);
209
+ messageDesc(file_experiments_v1_experiments, 27);
196
210
 
197
211
  /**
198
212
  * Describes the message experiments.v1.EndExperimentResponse.
199
213
  * Use `create(EndExperimentResponseSchema)` to create a new message.
200
214
  */
201
215
  export const EndExperimentResponseSchema = /*@__PURE__*/
202
- messageDesc(file_experiments_v1_experiments, 26);
216
+ messageDesc(file_experiments_v1_experiments, 28);
203
217
 
204
218
  /**
205
219
  * Describes the message experiments.v1.GetExperimentStatsRequest.
206
220
  * Use `create(GetExperimentStatsRequestSchema)` to create a new message.
207
221
  */
208
222
  export const GetExperimentStatsRequestSchema = /*@__PURE__*/
209
- messageDesc(file_experiments_v1_experiments, 27);
223
+ messageDesc(file_experiments_v1_experiments, 29);
210
224
 
211
225
  /**
212
226
  * Describes the message experiments.v1.GetExperimentStatsResponse.
213
227
  * Use `create(GetExperimentStatsResponseSchema)` to create a new message.
214
228
  */
215
229
  export const GetExperimentStatsResponseSchema = /*@__PURE__*/
216
- messageDesc(file_experiments_v1_experiments, 28);
230
+ messageDesc(file_experiments_v1_experiments, 30);
217
231
 
218
232
  /**
219
233
  * Describes the message experiments.v1.ForceAssignExperimentRequest.
220
234
  * Use `create(ForceAssignExperimentRequestSchema)` to create a new message.
221
235
  */
222
236
  export const ForceAssignExperimentRequestSchema = /*@__PURE__*/
223
- messageDesc(file_experiments_v1_experiments, 29);
237
+ messageDesc(file_experiments_v1_experiments, 31);
224
238
 
225
239
  /**
226
240
  * Describes the message experiments.v1.ForceAssignExperimentResponse.
227
241
  * Use `create(ForceAssignExperimentResponseSchema)` to create a new message.
228
242
  */
229
243
  export const ForceAssignExperimentResponseSchema = /*@__PURE__*/
230
- messageDesc(file_experiments_v1_experiments, 30);
244
+ messageDesc(file_experiments_v1_experiments, 32);
231
245
 
232
246
  /**
233
247
  * Describes the message experiments.v1.RemoveExperimentAssignmentRequest.
234
248
  * Use `create(RemoveExperimentAssignmentRequestSchema)` to create a new message.
235
249
  */
236
250
  export const RemoveExperimentAssignmentRequestSchema = /*@__PURE__*/
237
- messageDesc(file_experiments_v1_experiments, 31);
251
+ messageDesc(file_experiments_v1_experiments, 33);
238
252
 
239
253
  /**
240
254
  * Describes the message experiments.v1.RemoveExperimentAssignmentResponse.
241
255
  * Use `create(RemoveExperimentAssignmentResponseSchema)` to create a new message.
242
256
  */
243
257
  export const RemoveExperimentAssignmentResponseSchema = /*@__PURE__*/
244
- messageDesc(file_experiments_v1_experiments, 32);
258
+ messageDesc(file_experiments_v1_experiments, 34);
245
259
 
246
260
  /**
247
261
  * Describes the message experiments.v1.ApplyExperimentWinnerRequest.
248
262
  * Use `create(ApplyExperimentWinnerRequestSchema)` to create a new message.
249
263
  */
250
264
  export const ApplyExperimentWinnerRequestSchema = /*@__PURE__*/
251
- messageDesc(file_experiments_v1_experiments, 33);
265
+ messageDesc(file_experiments_v1_experiments, 35);
252
266
 
253
267
  /**
254
268
  * Describes the message experiments.v1.ApplyExperimentWinnerResponse.
255
269
  * Use `create(ApplyExperimentWinnerResponseSchema)` to create a new message.
256
270
  */
257
271
  export const ApplyExperimentWinnerResponseSchema = /*@__PURE__*/
258
- messageDesc(file_experiments_v1_experiments, 34);
272
+ messageDesc(file_experiments_v1_experiments, 36);
259
273
 
260
274
  /**
261
275
  * Describes the message experiments.v1.PreviewExperimentWinnerRolloutRequest.
262
276
  * Use `create(PreviewExperimentWinnerRolloutRequestSchema)` to create a new message.
263
277
  */
264
278
  export const PreviewExperimentWinnerRolloutRequestSchema = /*@__PURE__*/
265
- messageDesc(file_experiments_v1_experiments, 35);
279
+ messageDesc(file_experiments_v1_experiments, 37);
266
280
 
267
281
  /**
268
282
  * Describes the message experiments.v1.AffectedRecord.
269
283
  * Use `create(AffectedRecordSchema)` to create a new message.
270
284
  */
271
285
  export const AffectedRecordSchema = /*@__PURE__*/
272
- messageDesc(file_experiments_v1_experiments, 36);
286
+ messageDesc(file_experiments_v1_experiments, 38);
273
287
 
274
288
  /**
275
289
  * Describes the message experiments.v1.PreviewExperimentWinnerRolloutResponse.
276
290
  * Use `create(PreviewExperimentWinnerRolloutResponseSchema)` to create a new message.
277
291
  */
278
292
  export const PreviewExperimentWinnerRolloutResponseSchema = /*@__PURE__*/
279
- messageDesc(file_experiments_v1_experiments, 37);
293
+ messageDesc(file_experiments_v1_experiments, 39);
280
294
 
281
295
  /**
282
296
  * Describes the message experiments.v1.RollbackExperimentRequest.
283
297
  * Use `create(RollbackExperimentRequestSchema)` to create a new message.
284
298
  */
285
299
  export const RollbackExperimentRequestSchema = /*@__PURE__*/
286
- messageDesc(file_experiments_v1_experiments, 38);
300
+ messageDesc(file_experiments_v1_experiments, 40);
287
301
 
288
302
  /**
289
303
  * Describes the message experiments.v1.RollbackExperimentResponse.
290
304
  * Use `create(RollbackExperimentResponseSchema)` to create a new message.
291
305
  */
292
306
  export const RollbackExperimentResponseSchema = /*@__PURE__*/
293
- messageDesc(file_experiments_v1_experiments, 39);
307
+ messageDesc(file_experiments_v1_experiments, 41);
294
308
 
295
309
  /**
296
310
  * Describes the message experiments.v1.GetAssignmentsRequest.
297
311
  * Use `create(GetAssignmentsRequestSchema)` to create a new message.
298
312
  */
299
313
  export const GetAssignmentsRequestSchema = /*@__PURE__*/
300
- messageDesc(file_experiments_v1_experiments, 40);
314
+ messageDesc(file_experiments_v1_experiments, 42);
301
315
 
302
316
  /**
303
317
  * Describes the message experiments.v1.GetAssignmentsResponse.
304
318
  * Use `create(GetAssignmentsResponseSchema)` to create a new message.
305
319
  */
306
320
  export const GetAssignmentsResponseSchema = /*@__PURE__*/
307
- messageDesc(file_experiments_v1_experiments, 41);
321
+ messageDesc(file_experiments_v1_experiments, 43);
308
322
 
309
323
  /**
310
324
  * Describes the message experiments.v1.ListExperimentDeclarationsRequest.
311
325
  * Use `create(ListExperimentDeclarationsRequestSchema)` to create a new message.
312
326
  */
313
327
  export const ListExperimentDeclarationsRequestSchema = /*@__PURE__*/
314
- messageDesc(file_experiments_v1_experiments, 42);
328
+ messageDesc(file_experiments_v1_experiments, 44);
315
329
 
316
330
  /**
317
331
  * Describes the message experiments.v1.ListExperimentDeclarationsResponse.
318
332
  * Use `create(ListExperimentDeclarationsResponseSchema)` to create a new message.
319
333
  */
320
334
  export const ListExperimentDeclarationsResponseSchema = /*@__PURE__*/
321
- messageDesc(file_experiments_v1_experiments, 43);
335
+ messageDesc(file_experiments_v1_experiments, 45);
322
336
 
323
337
  /**
324
338
  * Describes the message experiments.v1.ResolveExposureRequest.
325
339
  * Use `create(ResolveExposureRequestSchema)` to create a new message.
326
340
  */
327
341
  export const ResolveExposureRequestSchema = /*@__PURE__*/
328
- messageDesc(file_experiments_v1_experiments, 44);
342
+ messageDesc(file_experiments_v1_experiments, 46);
329
343
 
330
344
  /**
331
345
  * Describes the message experiments.v1.ResolveExposureResponse.
332
346
  * Use `create(ResolveExposureResponseSchema)` to create a new message.
333
347
  */
334
348
  export const ResolveExposureResponseSchema = /*@__PURE__*/
335
- messageDesc(file_experiments_v1_experiments, 45);
349
+ messageDesc(file_experiments_v1_experiments, 47);
336
350
 
337
351
  /**
338
352
  * Describes the enum experiments.v1.ExperimentStatus.