diff --git a/controller/appcontroller.go b/controller/appcontroller.go index 18aa48772aae6..f57f51c653db3 100644 --- a/controller/appcontroller.go +++ b/controller/appcontroller.go @@ -711,32 +711,26 @@ func (ctrl *ApplicationController) autoSync(app *appv1.Application, comparisonRe return nil } desiredCommitSHA := comparisonResult.Revision + // It is possible for manifests to remain OutOfSync even after a sync/kubectl apply (e.g. // auto-sync with pruning disabled). We need to ensure that we do not keep Syncing an // application in an infinite loop. To detect this, we only attempt the Sync if the revision - // and parameter overrides do *not* appear in the application's most recent history. - historyLen := len(app.Status.History) - if historyLen > 0 { - mostRecent := app.Status.History[historyLen-1] - if mostRecent.Revision == desiredCommitSHA && reflect.DeepEqual(app.Spec.Source.ComponentParameterOverrides, mostRecent.ComponentParameterOverrides) { - logCtx.Infof("Skipping auto-sync: most recent sync already to %s", desiredCommitSHA) - return nil - } - } - // If a sync failed, the revision will not make it's way into application history. We also need - // to check the operationState to see if the last operation was the one we just attempted. - if app.Status.OperationState != nil && app.Status.OperationState.SyncResult != nil { - if app.Status.OperationState.SyncResult.Revision == desiredCommitSHA { + // and parameter overrides are different from our most recent sync operation. + if alreadyAttemptedSync(app, desiredCommitSHA) { + if app.Status.OperationState.Phase != appv1.OperationSucceeded { logCtx.Warnf("Skipping auto-sync: failed previous sync attempt to %s", desiredCommitSHA) message := fmt.Sprintf("Failed sync attempt to %s: %s", desiredCommitSHA, app.Status.OperationState.Message) return &appv1.ApplicationCondition{Type: appv1.ApplicationConditionSyncError, Message: message} } + logCtx.Infof("Skipping auto-sync: most recent sync already to %s", desiredCommitSHA) + return nil } op := appv1.Operation{ Sync: &appv1.SyncOperation{ - Revision: desiredCommitSHA, - Prune: app.Spec.SyncPolicy.Automated.Prune, + Revision: desiredCommitSHA, + Prune: app.Spec.SyncPolicy.Automated.Prune, + ParameterOverrides: app.Spec.Source.ComponentParameterOverrides, }, } appIf := ctrl.applicationClientset.ArgoprojV1alpha1().Applications(app.Namespace) @@ -749,6 +743,21 @@ func (ctrl *ApplicationController) autoSync(app *appv1.Application, comparisonRe return nil } +// alreadyAttemptedSync returns whether or not the most recent sync was performed against the +// commitSHA and with the same parameter overrides which are currently set in the app +func alreadyAttemptedSync(app *appv1.Application, commitSHA string) bool { + if app.Status.OperationState == nil || app.Status.OperationState.Operation.Sync == nil || app.Status.OperationState.SyncResult == nil { + return false + } + if app.Status.OperationState.SyncResult.Revision != commitSHA { + return false + } + if !reflect.DeepEqual(appv1.ParameterOverrides(app.Spec.Source.ComponentParameterOverrides), app.Status.OperationState.Operation.Sync.ParameterOverrides) { + return false + } + return true +} + func (ctrl *ApplicationController) newApplicationInformer() cache.SharedIndexInformer { appInformerFactory := appinformers.NewFilteredSharedInformerFactory( ctrl.applicationClientset, diff --git a/controller/appcontroller_test.go b/controller/appcontroller_test.go index 2f7de5fc4697c..a3554916112a6 100644 --- a/controller/appcontroller_test.go +++ b/controller/appcontroller_test.go @@ -45,11 +45,24 @@ spec: syncPolicy: automated: {} status: - history: - - deployedAt: 2018-09-08T09:16:50Z - id: 0 - params: [] - revision: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + operationState: + finishedAt: 2018-09-21T23:50:29Z + message: successfully synced + operation: + sync: + revision: HEAD + phase: Succeeded + startedAt: 2018-09-21T23:50:25Z + syncResult: + resources: + - kind: RoleBinding + message: |- + rolebinding.rbac.authorization.k8s.io/always-outofsync reconciled + rolebinding.rbac.authorization.k8s.io/always-outofsync configured + name: always-outofsync + namespace: default + status: Synced + revision: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ` func newFakeApp() *argoappv1.Application { @@ -123,6 +136,9 @@ func TestSkipAutoSync(t *testing.T) { // Set current to 'aaaaa', desired to 'bbbbb' and add 'bbbbb' to failure history app = newFakeApp() app.Status.OperationState = &argoappv1.OperationState{ + Operation: argoappv1.Operation{ + Sync: &argoappv1.SyncOperation{}, + }, Phase: argoappv1.OperationFailed, SyncResult: &argoappv1.SyncOperationResult{ Revision: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", @@ -139,3 +155,77 @@ func TestSkipAutoSync(t *testing.T) { assert.NoError(t, err) assert.Nil(t, app.Operation) } + +// TestAutoSyncIndicateError verifies we skip auto-sync and return error condition if previous sync failed +func TestAutoSyncIndicateError(t *testing.T) { + app := newFakeApp() + app.Spec.Source.ComponentParameterOverrides = []argoappv1.ComponentParameter{ + { + Name: "a", + Value: "1", + }, + } + ctrl := newFakeController(app) + compRes := argoappv1.ComparisonResult{ + Status: argoappv1.ComparisonStatusOutOfSync, + Revision: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + } + app.Status.OperationState = &argoappv1.OperationState{ + Operation: argoappv1.Operation{ + Sync: &argoappv1.SyncOperation{ + ParameterOverrides: argoappv1.ParameterOverrides{ + { + Name: "a", + Value: "1", + }, + }, + }, + }, + Phase: argoappv1.OperationFailed, + SyncResult: &argoappv1.SyncOperationResult{ + Revision: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + }, + } + cond := ctrl.autoSync(app, &compRes) + assert.NotNil(t, cond) + app, err := ctrl.applicationClientset.ArgoprojV1alpha1().Applications("argocd").Get("my-app", metav1.GetOptions{}) + assert.NoError(t, err) + assert.Nil(t, app.Operation) +} + +// TestAutoSyncParameterOverrides verifies we auto-sync if revision is same but parameter overrides are different +func TestAutoSyncParameterOverrides(t *testing.T) { + app := newFakeApp() + app.Spec.Source.ComponentParameterOverrides = []argoappv1.ComponentParameter{ + { + Name: "a", + Value: "1", + }, + } + ctrl := newFakeController(app) + compRes := argoappv1.ComparisonResult{ + Status: argoappv1.ComparisonStatusOutOfSync, + Revision: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + } + app.Status.OperationState = &argoappv1.OperationState{ + Operation: argoappv1.Operation{ + Sync: &argoappv1.SyncOperation{ + ParameterOverrides: argoappv1.ParameterOverrides{ + { + Name: "a", + Value: "2", // this value changed + }, + }, + }, + }, + Phase: argoappv1.OperationFailed, + SyncResult: &argoappv1.SyncOperationResult{ + Revision: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + }, + } + cond := ctrl.autoSync(app, &compRes) + assert.Nil(t, cond) + app, err := ctrl.applicationClientset.ArgoprojV1alpha1().Applications("argocd").Get("my-app", metav1.GetOptions{}) + assert.NoError(t, err) + assert.NotNil(t, app.Operation) +} diff --git a/controller/sync.go b/controller/sync.go index f790d8f07ce8c..2c234fe821a88 100644 --- a/controller/sync.go +++ b/controller/sync.go @@ -47,7 +47,7 @@ type syncContext struct { } func (s *appStateManager) SyncAppState(app *appv1.Application, state *appv1.OperationState) { - // Sync requests are usually requested with ambiguous revisions (e.g. master, HEAD, v1.2.3). + // Sync requests might be requested with ambiguous revisions (e.g. master, HEAD, v1.2.3). // This can change meaning when resuming operations (e.g a hook sync). After calculating a // concrete git commit SHA, the SHA is remembered in the status.operationState.syncResult and // rollbackResult fields. This ensures that when resuming an operation, we sync to the same @@ -59,6 +59,7 @@ func (s *appStateManager) SyncAppState(app *appv1.Application, state *appv1.Oper if state.Operation.Sync != nil { syncOp = *state.Operation.Sync + overrides = []appv1.ComponentParameter(state.Operation.Sync.ParameterOverrides) if state.SyncResult != nil { syncRes = state.SyncResult revision = state.SyncResult.Revision diff --git a/pkg/apis/application/v1alpha1/generated.pb.go b/pkg/apis/application/v1alpha1/generated.pb.go index b8cdc7fb3d422..fcb9ca86c7867 100644 --- a/pkg/apis/application/v1alpha1/generated.pb.go +++ b/pkg/apis/application/v1alpha1/generated.pb.go @@ -30,7 +30,7 @@ const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package func (m *AWSAuthConfig) Reset() { *m = AWSAuthConfig{} } func (*AWSAuthConfig) ProtoMessage() {} func (*AWSAuthConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{0} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{0} } func (m *AWSAuthConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -58,7 +58,7 @@ var xxx_messageInfo_AWSAuthConfig proto.InternalMessageInfo func (m *AppProject) Reset() { *m = AppProject{} } func (*AppProject) ProtoMessage() {} func (*AppProject) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{1} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{1} } func (m *AppProject) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -86,7 +86,7 @@ var xxx_messageInfo_AppProject proto.InternalMessageInfo func (m *AppProjectList) Reset() { *m = AppProjectList{} } func (*AppProjectList) ProtoMessage() {} func (*AppProjectList) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{2} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{2} } func (m *AppProjectList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -114,7 +114,7 @@ var xxx_messageInfo_AppProjectList proto.InternalMessageInfo func (m *AppProjectSpec) Reset() { *m = AppProjectSpec{} } func (*AppProjectSpec) ProtoMessage() {} func (*AppProjectSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{3} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{3} } func (m *AppProjectSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -142,7 +142,7 @@ var xxx_messageInfo_AppProjectSpec proto.InternalMessageInfo func (m *Application) Reset() { *m = Application{} } func (*Application) ProtoMessage() {} func (*Application) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{4} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{4} } func (m *Application) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -170,7 +170,7 @@ var xxx_messageInfo_Application proto.InternalMessageInfo func (m *ApplicationCondition) Reset() { *m = ApplicationCondition{} } func (*ApplicationCondition) ProtoMessage() {} func (*ApplicationCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{5} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{5} } func (m *ApplicationCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -198,7 +198,7 @@ var xxx_messageInfo_ApplicationCondition proto.InternalMessageInfo func (m *ApplicationDestination) Reset() { *m = ApplicationDestination{} } func (*ApplicationDestination) ProtoMessage() {} func (*ApplicationDestination) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{6} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{6} } func (m *ApplicationDestination) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -226,7 +226,7 @@ var xxx_messageInfo_ApplicationDestination proto.InternalMessageInfo func (m *ApplicationList) Reset() { *m = ApplicationList{} } func (*ApplicationList) ProtoMessage() {} func (*ApplicationList) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{7} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{7} } func (m *ApplicationList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -254,7 +254,7 @@ var xxx_messageInfo_ApplicationList proto.InternalMessageInfo func (m *ApplicationSource) Reset() { *m = ApplicationSource{} } func (*ApplicationSource) ProtoMessage() {} func (*ApplicationSource) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{8} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{8} } func (m *ApplicationSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -282,7 +282,7 @@ var xxx_messageInfo_ApplicationSource proto.InternalMessageInfo func (m *ApplicationSpec) Reset() { *m = ApplicationSpec{} } func (*ApplicationSpec) ProtoMessage() {} func (*ApplicationSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{9} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{9} } func (m *ApplicationSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -310,7 +310,7 @@ var xxx_messageInfo_ApplicationSpec proto.InternalMessageInfo func (m *ApplicationStatus) Reset() { *m = ApplicationStatus{} } func (*ApplicationStatus) ProtoMessage() {} func (*ApplicationStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{10} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{10} } func (m *ApplicationStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -338,7 +338,7 @@ var xxx_messageInfo_ApplicationStatus proto.InternalMessageInfo func (m *ApplicationWatchEvent) Reset() { *m = ApplicationWatchEvent{} } func (*ApplicationWatchEvent) ProtoMessage() {} func (*ApplicationWatchEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{11} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{11} } func (m *ApplicationWatchEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -366,7 +366,7 @@ var xxx_messageInfo_ApplicationWatchEvent proto.InternalMessageInfo func (m *Cluster) Reset() { *m = Cluster{} } func (*Cluster) ProtoMessage() {} func (*Cluster) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{12} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{12} } func (m *Cluster) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -394,7 +394,7 @@ var xxx_messageInfo_Cluster proto.InternalMessageInfo func (m *ClusterConfig) Reset() { *m = ClusterConfig{} } func (*ClusterConfig) ProtoMessage() {} func (*ClusterConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{13} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{13} } func (m *ClusterConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -422,7 +422,7 @@ var xxx_messageInfo_ClusterConfig proto.InternalMessageInfo func (m *ClusterList) Reset() { *m = ClusterList{} } func (*ClusterList) ProtoMessage() {} func (*ClusterList) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{14} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{14} } func (m *ClusterList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -450,7 +450,7 @@ var xxx_messageInfo_ClusterList proto.InternalMessageInfo func (m *ComparisonResult) Reset() { *m = ComparisonResult{} } func (*ComparisonResult) ProtoMessage() {} func (*ComparisonResult) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{15} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{15} } func (m *ComparisonResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -478,7 +478,7 @@ var xxx_messageInfo_ComparisonResult proto.InternalMessageInfo func (m *ComponentParameter) Reset() { *m = ComponentParameter{} } func (*ComponentParameter) ProtoMessage() {} func (*ComponentParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{16} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{16} } func (m *ComponentParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -506,7 +506,7 @@ var xxx_messageInfo_ComponentParameter proto.InternalMessageInfo func (m *ConnectionState) Reset() { *m = ConnectionState{} } func (*ConnectionState) ProtoMessage() {} func (*ConnectionState) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{17} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{17} } func (m *ConnectionState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -534,7 +534,7 @@ var xxx_messageInfo_ConnectionState proto.InternalMessageInfo func (m *DeploymentInfo) Reset() { *m = DeploymentInfo{} } func (*DeploymentInfo) ProtoMessage() {} func (*DeploymentInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{18} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{18} } func (m *DeploymentInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -562,7 +562,7 @@ var xxx_messageInfo_DeploymentInfo proto.InternalMessageInfo func (m *HealthStatus) Reset() { *m = HealthStatus{} } func (*HealthStatus) ProtoMessage() {} func (*HealthStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{19} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{19} } func (m *HealthStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -590,7 +590,7 @@ var xxx_messageInfo_HealthStatus proto.InternalMessageInfo func (m *HookStatus) Reset() { *m = HookStatus{} } func (*HookStatus) ProtoMessage() {} func (*HookStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{20} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{20} } func (m *HookStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -618,7 +618,7 @@ var xxx_messageInfo_HookStatus proto.InternalMessageInfo func (m *JWTToken) Reset() { *m = JWTToken{} } func (*JWTToken) ProtoMessage() {} func (*JWTToken) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{21} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{21} } func (m *JWTToken) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -646,7 +646,7 @@ var xxx_messageInfo_JWTToken proto.InternalMessageInfo func (m *Operation) Reset() { *m = Operation{} } func (*Operation) ProtoMessage() {} func (*Operation) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{22} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{22} } func (m *Operation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -674,7 +674,7 @@ var xxx_messageInfo_Operation proto.InternalMessageInfo func (m *OperationState) Reset() { *m = OperationState{} } func (*OperationState) ProtoMessage() {} func (*OperationState) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{23} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{23} } func (m *OperationState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -699,10 +699,38 @@ func (m *OperationState) XXX_DiscardUnknown() { var xxx_messageInfo_OperationState proto.InternalMessageInfo +func (m *ParameterOverrides) Reset() { *m = ParameterOverrides{} } +func (*ParameterOverrides) ProtoMessage() {} +func (*ParameterOverrides) Descriptor() ([]byte, []int) { + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{24} +} +func (m *ParameterOverrides) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ParameterOverrides) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (dst *ParameterOverrides) XXX_Merge(src proto.Message) { + xxx_messageInfo_ParameterOverrides.Merge(dst, src) +} +func (m *ParameterOverrides) XXX_Size() int { + return m.Size() +} +func (m *ParameterOverrides) XXX_DiscardUnknown() { + xxx_messageInfo_ParameterOverrides.DiscardUnknown(m) +} + +var xxx_messageInfo_ParameterOverrides proto.InternalMessageInfo + func (m *ProjectRole) Reset() { *m = ProjectRole{} } func (*ProjectRole) ProtoMessage() {} func (*ProjectRole) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{24} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{25} } func (m *ProjectRole) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -730,7 +758,7 @@ var xxx_messageInfo_ProjectRole proto.InternalMessageInfo func (m *Repository) Reset() { *m = Repository{} } func (*Repository) ProtoMessage() {} func (*Repository) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{25} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{26} } func (m *Repository) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -758,7 +786,7 @@ var xxx_messageInfo_Repository proto.InternalMessageInfo func (m *RepositoryList) Reset() { *m = RepositoryList{} } func (*RepositoryList) ProtoMessage() {} func (*RepositoryList) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{26} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{27} } func (m *RepositoryList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -786,7 +814,7 @@ var xxx_messageInfo_RepositoryList proto.InternalMessageInfo func (m *ResourceDetails) Reset() { *m = ResourceDetails{} } func (*ResourceDetails) ProtoMessage() {} func (*ResourceDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{27} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{28} } func (m *ResourceDetails) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -814,7 +842,7 @@ var xxx_messageInfo_ResourceDetails proto.InternalMessageInfo func (m *ResourceNode) Reset() { *m = ResourceNode{} } func (*ResourceNode) ProtoMessage() {} func (*ResourceNode) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{28} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{29} } func (m *ResourceNode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -842,7 +870,7 @@ var xxx_messageInfo_ResourceNode proto.InternalMessageInfo func (m *ResourceState) Reset() { *m = ResourceState{} } func (*ResourceState) ProtoMessage() {} func (*ResourceState) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{29} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{30} } func (m *ResourceState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -870,7 +898,7 @@ var xxx_messageInfo_ResourceState proto.InternalMessageInfo func (m *RollbackOperation) Reset() { *m = RollbackOperation{} } func (*RollbackOperation) ProtoMessage() {} func (*RollbackOperation) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{30} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{31} } func (m *RollbackOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -898,7 +926,7 @@ var xxx_messageInfo_RollbackOperation proto.InternalMessageInfo func (m *SyncOperation) Reset() { *m = SyncOperation{} } func (*SyncOperation) ProtoMessage() {} func (*SyncOperation) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{31} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{32} } func (m *SyncOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -926,7 +954,7 @@ var xxx_messageInfo_SyncOperation proto.InternalMessageInfo func (m *SyncOperationResult) Reset() { *m = SyncOperationResult{} } func (*SyncOperationResult) ProtoMessage() {} func (*SyncOperationResult) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{32} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{33} } func (m *SyncOperationResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -954,7 +982,7 @@ var xxx_messageInfo_SyncOperationResult proto.InternalMessageInfo func (m *SyncPolicy) Reset() { *m = SyncPolicy{} } func (*SyncPolicy) ProtoMessage() {} func (*SyncPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{33} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{34} } func (m *SyncPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -982,7 +1010,7 @@ var xxx_messageInfo_SyncPolicy proto.InternalMessageInfo func (m *SyncPolicyAutomated) Reset() { *m = SyncPolicyAutomated{} } func (*SyncPolicyAutomated) ProtoMessage() {} func (*SyncPolicyAutomated) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{34} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{35} } func (m *SyncPolicyAutomated) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1010,7 +1038,7 @@ var xxx_messageInfo_SyncPolicyAutomated proto.InternalMessageInfo func (m *SyncStrategy) Reset() { *m = SyncStrategy{} } func (*SyncStrategy) ProtoMessage() {} func (*SyncStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{35} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{36} } func (m *SyncStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1038,7 +1066,7 @@ var xxx_messageInfo_SyncStrategy proto.InternalMessageInfo func (m *SyncStrategyApply) Reset() { *m = SyncStrategyApply{} } func (*SyncStrategyApply) ProtoMessage() {} func (*SyncStrategyApply) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{36} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{37} } func (m *SyncStrategyApply) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1066,7 +1094,7 @@ var xxx_messageInfo_SyncStrategyApply proto.InternalMessageInfo func (m *SyncStrategyHook) Reset() { *m = SyncStrategyHook{} } func (*SyncStrategyHook) ProtoMessage() {} func (*SyncStrategyHook) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{37} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{38} } func (m *SyncStrategyHook) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1094,7 +1122,7 @@ var xxx_messageInfo_SyncStrategyHook proto.InternalMessageInfo func (m *TLSClientConfig) Reset() { *m = TLSClientConfig{} } func (*TLSClientConfig) ProtoMessage() {} func (*TLSClientConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_5731619495638c4f, []int{38} + return fileDescriptor_generated_1cfd4e79e6b02f22, []int{39} } func (m *TLSClientConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1144,6 +1172,7 @@ func init() { proto.RegisterType((*JWTToken)(nil), "github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.JWTToken") proto.RegisterType((*Operation)(nil), "github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.Operation") proto.RegisterType((*OperationState)(nil), "github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.OperationState") + proto.RegisterType((*ParameterOverrides)(nil), "github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.ParameterOverrides") proto.RegisterType((*ProjectRole)(nil), "github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.ProjectRole") proto.RegisterType((*Repository)(nil), "github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.Repository") proto.RegisterType((*RepositoryList)(nil), "github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.RepositoryList") @@ -2211,6 +2240,36 @@ func (m *OperationState) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m ParameterOverrides) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m ParameterOverrides) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m) > 0 { + for _, msg := range m { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + func (m *ProjectRole) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -2548,6 +2607,16 @@ func (m *SyncOperation) MarshalTo(dAtA []byte) (int, error) { } i += n35 } + if m.ParameterOverrides != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ParameterOverrides.Size())) + n36, err := m.ParameterOverrides.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n36 + } return i, nil } @@ -2616,11 +2685,11 @@ func (m *SyncPolicy) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Automated.Size())) - n36, err := m.Automated.MarshalTo(dAtA[i:]) + n37, err := m.Automated.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n36 + i += n37 } return i, nil } @@ -2670,21 +2739,21 @@ func (m *SyncStrategy) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Apply.Size())) - n37, err := m.Apply.MarshalTo(dAtA[i:]) + n38, err := m.Apply.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n37 + i += n38 } if m.Hook != nil { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Hook.Size())) - n38, err := m.Hook.MarshalTo(dAtA[i:]) + n39, err := m.Hook.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n38 + i += n39 } return i, nil } @@ -2733,11 +2802,11 @@ func (m *SyncStrategyHook) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SyncStrategyApply.Size())) - n39, err := m.SyncStrategyApply.MarshalTo(dAtA[i:]) + n40, err := m.SyncStrategyApply.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n39 + i += n40 return i, nil } @@ -3195,6 +3264,18 @@ func (m *OperationState) Size() (n int) { return n } +func (m ParameterOverrides) Size() (n int) { + var l int + _ = l + if len(m) > 0 { + for _, e := range m { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + func (m *ProjectRole) Size() (n int) { var l int _ = l @@ -3317,6 +3398,10 @@ func (m *SyncOperation) Size() (n int) { l = m.SyncStrategy.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.ParameterOverrides != nil { + l = m.ParameterOverrides.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -3820,6 +3905,7 @@ func (this *SyncOperation) String() string { `Prune:` + fmt.Sprintf("%v", this.Prune) + `,`, `DryRun:` + fmt.Sprintf("%v", this.DryRun) + `,`, `SyncStrategy:` + strings.Replace(fmt.Sprintf("%v", this.SyncStrategy), "SyncStrategy", "SyncStrategy", 1) + `,`, + `ParameterOverrides:` + strings.Replace(fmt.Sprintf("%v", this.ParameterOverrides), "ParameterOverrides", "ParameterOverrides", 1) + `,`, `}`, }, "") return s @@ -7662,6 +7748,87 @@ func (m *OperationState) Unmarshal(dAtA []byte) error { } return nil } +func (m *ParameterOverrides) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ParameterOverrides: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ParameterOverrides: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + *m = append(*m, ComponentParameter{}) + if err := (*m)[len(*m)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *ProjectRole) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -8880,6 +9047,39 @@ func (m *SyncOperation) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ParameterOverrides", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ParameterOverrides == nil { + m.ParameterOverrides = ParameterOverrides{} + } + if err := m.ParameterOverrides.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -9759,183 +9959,187 @@ var ( ) func init() { - proto.RegisterFile("github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1/generated.proto", fileDescriptor_generated_5731619495638c4f) + proto.RegisterFile("github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1/generated.proto", fileDescriptor_generated_1cfd4e79e6b02f22) } -var fileDescriptor_generated_5731619495638c4f = []byte{ - // 2782 bytes of a gzipped FileDescriptorProto +var fileDescriptor_generated_1cfd4e79e6b02f22 = []byte{ + // 2834 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0x4d, 0x8c, 0x23, 0x47, - 0xf5, 0xdf, 0xf6, 0xc7, 0x8c, 0xfd, 0x3c, 0x33, 0xbb, 0x5b, 0xf9, 0xf8, 0xfb, 0x3f, 0x91, 0x66, - 0x46, 0x1d, 0x3e, 0x02, 0x4a, 0x6c, 0x76, 0x21, 0x10, 0x02, 0x42, 0x1a, 0x7b, 0x76, 0xb3, 0x93, - 0xd9, 0x9d, 0x1d, 0xca, 0x93, 0xac, 0x14, 0xa2, 0x40, 0x6f, 0xbb, 0xc6, 0xee, 0xb5, 0xdd, 0xdd, - 0xe9, 0x2a, 0x7b, 0x63, 0x41, 0x50, 0x10, 0x02, 0x11, 0x3e, 0x24, 0x50, 0x84, 0x38, 0x70, 0xe1, - 0xc0, 0x89, 0x0b, 0x97, 0x88, 0x03, 0x37, 0x38, 0xa0, 0x1c, 0x73, 0x00, 0x11, 0x05, 0x34, 0x22, - 0x93, 0x4b, 0x24, 0x0e, 0xdc, 0x73, 0x42, 0xf5, 0xd1, 0x5d, 0xd5, 0xed, 0x71, 0x66, 0x76, 0xed, - 0x5d, 0xe0, 0xe6, 0x7e, 0xef, 0xf5, 0xfb, 0xbd, 0x7e, 0xf5, 0xea, 0x7d, 0x54, 0x19, 0xb6, 0x3b, - 0x1e, 0xeb, 0x0e, 0x6f, 0xd6, 0xdc, 0x60, 0x50, 0x77, 0xa2, 0x4e, 0x10, 0x46, 0xc1, 0x2d, 0xf1, - 0xe3, 0x09, 0xb7, 0x5d, 0x0f, 0x7b, 0x9d, 0xba, 0x13, 0x7a, 0xb4, 0xee, 0x84, 0x61, 0xdf, 0x73, - 0x1d, 0xe6, 0x05, 0x7e, 0x7d, 0x74, 0xc1, 0xe9, 0x87, 0x5d, 0xe7, 0x42, 0xbd, 0x43, 0x7c, 0x12, - 0x39, 0x8c, 0xb4, 0x6b, 0x61, 0x14, 0xb0, 0x00, 0x7d, 0x51, 0xab, 0xaa, 0xc5, 0xaa, 0xc4, 0x8f, - 0xaf, 0xbb, 0xed, 0x5a, 0xd8, 0xeb, 0xd4, 0xb8, 0xaa, 0x9a, 0xa1, 0xaa, 0x16, 0xab, 0x5a, 0x7d, - 0xc2, 0xb0, 0xa2, 0x13, 0x74, 0x82, 0xba, 0xd0, 0x78, 0x73, 0x78, 0x20, 0x9e, 0xc4, 0x83, 0xf8, - 0x25, 0x91, 0x56, 0x3f, 0xd7, 0x7b, 0x8a, 0xd6, 0xbc, 0x80, 0xdb, 0x36, 0x70, 0xdc, 0xae, 0xe7, - 0x93, 0x68, 0xac, 0x8d, 0x1d, 0x10, 0xe6, 0xd4, 0x47, 0x13, 0xf6, 0xad, 0xd6, 0xa7, 0xbd, 0x15, - 0x0d, 0x7d, 0xe6, 0x0d, 0xc8, 0xc4, 0x0b, 0x9f, 0x3f, 0xe9, 0x05, 0xea, 0x76, 0xc9, 0xc0, 0x99, - 0x78, 0xef, 0xb3, 0xd3, 0xde, 0x1b, 0x32, 0xaf, 0x5f, 0xf7, 0x7c, 0x46, 0x59, 0x94, 0x7d, 0xc9, - 0x7e, 0x19, 0x96, 0x37, 0x6f, 0xb4, 0x36, 0x87, 0xac, 0xdb, 0x0c, 0xfc, 0x03, 0xaf, 0x83, 0x9e, - 0x84, 0x8a, 0xdb, 0x1f, 0x52, 0x46, 0xa2, 0x5d, 0x67, 0x40, 0xaa, 0xd6, 0x86, 0xf5, 0x58, 0xb9, - 0xf1, 0xc0, 0x5b, 0x87, 0xeb, 0x67, 0x8e, 0x0e, 0xd7, 0x2b, 0x4d, 0xcd, 0xc2, 0xa6, 0x1c, 0xfa, - 0x14, 0x2c, 0x46, 0x41, 0x9f, 0x6c, 0xe2, 0xdd, 0x6a, 0x4e, 0xbc, 0x72, 0x56, 0xbd, 0xb2, 0x88, - 0x25, 0x19, 0xc7, 0x7c, 0xfb, 0x6f, 0x16, 0xc0, 0x66, 0x18, 0xee, 0x45, 0xc1, 0x2d, 0xe2, 0x32, - 0xf4, 0x0d, 0x28, 0x71, 0xd7, 0xb5, 0x1d, 0xe6, 0x08, 0xb4, 0xca, 0xc5, 0xcf, 0xd4, 0xe4, 0x97, - 0xd4, 0xcc, 0x2f, 0xd1, 0x4b, 0xc9, 0xa5, 0x6b, 0xa3, 0x0b, 0xb5, 0xeb, 0x37, 0xf9, 0xfb, 0xd7, - 0x08, 0x73, 0x1a, 0x48, 0x81, 0x81, 0xa6, 0xe1, 0x44, 0x2b, 0xea, 0x41, 0x81, 0x86, 0xc4, 0x15, - 0x86, 0x55, 0x2e, 0x6e, 0xd7, 0xee, 0x3a, 0x60, 0x6a, 0xda, 0xec, 0x56, 0x48, 0xdc, 0xc6, 0x92, - 0x82, 0x2d, 0xf0, 0x27, 0x2c, 0x40, 0xec, 0x77, 0x2d, 0x58, 0xd1, 0x62, 0x57, 0x3d, 0xca, 0xd0, - 0x8b, 0x13, 0x5f, 0x58, 0x3b, 0xdd, 0x17, 0xf2, 0xb7, 0xc5, 0xf7, 0x9d, 0x53, 0x40, 0xa5, 0x98, - 0x62, 0x7c, 0xdd, 0x2d, 0x28, 0x7a, 0x8c, 0x0c, 0x68, 0x35, 0xb7, 0x91, 0x7f, 0xac, 0x72, 0xf1, - 0xd2, 0x5c, 0x3e, 0xaf, 0xb1, 0xac, 0x10, 0x8b, 0xdb, 0x5c, 0x37, 0x96, 0x10, 0xf6, 0x2f, 0x8b, - 0xe6, 0xc7, 0xf1, 0xaf, 0x46, 0x17, 0xa0, 0x42, 0x83, 0x61, 0xe4, 0x12, 0x4c, 0xc2, 0x80, 0x56, - 0xad, 0x8d, 0x3c, 0x5f, 0x7c, 0x1e, 0x2b, 0x2d, 0x4d, 0xc6, 0xa6, 0x0c, 0xfa, 0x91, 0x05, 0x4b, - 0x6d, 0x42, 0x99, 0xe7, 0x0b, 0xfc, 0xd8, 0xf2, 0xaf, 0xce, 0x66, 0x79, 0x4c, 0xdc, 0xd2, 0x9a, - 0x1b, 0x0f, 0xaa, 0xaf, 0x58, 0x32, 0x88, 0x14, 0xa7, 0xc0, 0x79, 0xc0, 0xb7, 0x09, 0x75, 0x23, - 0x2f, 0xe4, 0xcf, 0xd5, 0x7c, 0x3a, 0xe0, 0xb7, 0x34, 0x0b, 0x9b, 0x72, 0xa8, 0x07, 0x45, 0x1e, - 0xd0, 0xb4, 0x5a, 0x10, 0xc6, 0x5f, 0x9e, 0xc1, 0x78, 0xe5, 0x4e, 0xbe, 0x51, 0xb4, 0xdf, 0xf9, - 0x13, 0xc5, 0x12, 0x03, 0xfd, 0xc4, 0x82, 0xaa, 0xda, 0x6d, 0x98, 0x48, 0x57, 0xde, 0xe8, 0x7a, - 0x8c, 0xf4, 0x3d, 0xca, 0xaa, 0x45, 0x61, 0x40, 0xfd, 0x74, 0x21, 0xf5, 0x4c, 0x14, 0x0c, 0xc3, - 0x1d, 0xcf, 0x6f, 0x37, 0x36, 0x14, 0x52, 0xb5, 0x39, 0x45, 0x31, 0x9e, 0x0a, 0x89, 0xde, 0xb0, - 0x60, 0xd5, 0x77, 0x06, 0x84, 0x86, 0x0e, 0x5f, 0x54, 0xc9, 0x6e, 0xf4, 0x1d, 0xb7, 0x27, 0x2c, - 0x5a, 0xb8, 0x3b, 0x8b, 0x6c, 0x65, 0xd1, 0xea, 0xee, 0x54, 0xd5, 0xf8, 0x23, 0x60, 0xed, 0x3f, - 0xe5, 0xa1, 0x62, 0x04, 0xc2, 0x7d, 0xc8, 0x2c, 0xfd, 0x54, 0x66, 0x79, 0x76, 0x3e, 0x01, 0x3c, - 0x2d, 0xb5, 0x20, 0x06, 0x0b, 0x94, 0x39, 0x6c, 0x48, 0x45, 0x90, 0x56, 0x2e, 0x5e, 0x9d, 0x13, - 0x9e, 0xd0, 0xd9, 0x58, 0x51, 0x88, 0x0b, 0xf2, 0x19, 0x2b, 0x2c, 0xf4, 0x32, 0x94, 0x83, 0x90, - 0xd7, 0x0c, 0xbe, 0x3b, 0x0a, 0x02, 0x78, 0x6b, 0x06, 0xe0, 0xeb, 0xb1, 0xae, 0xc6, 0xf2, 0xd1, - 0xe1, 0x7a, 0x39, 0x79, 0xc4, 0x1a, 0xc5, 0x76, 0xe1, 0x41, 0xc3, 0xbe, 0x66, 0xe0, 0xb7, 0x3d, - 0xb1, 0xa0, 0x1b, 0x50, 0x60, 0xe3, 0x30, 0x2e, 0x4a, 0x89, 0x8b, 0xf6, 0xc7, 0x21, 0xc1, 0x82, - 0xc3, 0xcb, 0xd0, 0x80, 0x50, 0xea, 0x74, 0x48, 0xb6, 0x0c, 0x5d, 0x93, 0x64, 0x1c, 0xf3, 0xed, - 0x97, 0xe1, 0xe1, 0xe3, 0xb3, 0x06, 0xfa, 0x04, 0x2c, 0x50, 0x12, 0x8d, 0x48, 0xa4, 0x80, 0xb4, - 0x67, 0x04, 0x15, 0x2b, 0x2e, 0xaa, 0x43, 0x39, 0x89, 0x46, 0x05, 0x77, 0x5e, 0x89, 0x96, 0x75, - 0x08, 0x6b, 0x19, 0xfb, 0xef, 0x16, 0x9c, 0x35, 0x30, 0xef, 0x43, 0x71, 0xe8, 0xa5, 0x8b, 0xc3, - 0xe5, 0xf9, 0x44, 0xcc, 0x94, 0xea, 0xf0, 0x87, 0x3c, 0x9c, 0x37, 0xe3, 0x4a, 0x6c, 0x4f, 0xd1, - 0x19, 0x90, 0x30, 0x78, 0x0e, 0x5f, 0x55, 0xee, 0xd4, 0x9d, 0x81, 0x24, 0xe3, 0x98, 0xcf, 0xd7, - 0x37, 0x74, 0x58, 0x57, 0xf9, 0x32, 0x59, 0xdf, 0x3d, 0x87, 0x75, 0xb1, 0xe0, 0xf0, 0x64, 0x4d, - 0xfc, 0x91, 0x17, 0x05, 0xfe, 0x80, 0xf8, 0x2c, 0x9b, 0xac, 0x2f, 0x69, 0x16, 0x36, 0xe5, 0xd0, - 0x57, 0x60, 0x85, 0x39, 0x51, 0x87, 0x30, 0x4c, 0x46, 0x1e, 0x8d, 0x03, 0xb9, 0xdc, 0x78, 0x58, - 0xbd, 0xb9, 0xb2, 0x9f, 0xe2, 0xe2, 0x8c, 0x34, 0x7a, 0xd3, 0x82, 0x47, 0xdc, 0x60, 0x10, 0x06, - 0x3e, 0xf1, 0xd9, 0x9e, 0x13, 0x39, 0x03, 0xc2, 0x48, 0x74, 0x7d, 0x44, 0xa2, 0xc8, 0x6b, 0x13, - 0xaa, 0x52, 0xf0, 0xb5, 0x19, 0xbc, 0xdb, 0x9c, 0xd0, 0xde, 0x78, 0x54, 0x19, 0xf7, 0x48, 0x73, - 0x3a, 0x32, 0xfe, 0x28, 0xb3, 0x78, 0x6d, 0x1e, 0x39, 0xfd, 0x21, 0xa1, 0x97, 0x3d, 0x5e, 0xa9, - 0x16, 0x74, 0x6d, 0x7e, 0x5e, 0x93, 0xb1, 0x29, 0x63, 0xbf, 0x99, 0x4f, 0x85, 0x68, 0x2b, 0xce, - 0x3b, 0x62, 0x2d, 0x55, 0x80, 0xce, 0x2b, 0xef, 0xc8, 0xf4, 0xad, 0x77, 0x97, 0x6c, 0x11, 0x14, - 0x16, 0xfa, 0x81, 0x25, 0x0a, 0x73, 0xbc, 0x2b, 0x55, 0x8e, 0xbd, 0x07, 0x4d, 0x82, 0x59, 0xeb, - 0x63, 0x22, 0x36, 0xa1, 0x79, 0x08, 0x87, 0xb2, 0x46, 0xab, 0x88, 0x4b, 0x42, 0x38, 0x2e, 0xdd, - 0x31, 0x1f, 0x0d, 0x01, 0xe8, 0xd8, 0x77, 0xf7, 0x82, 0xbe, 0xe7, 0x8e, 0x55, 0xba, 0x9c, 0xa5, - 0x25, 0x6b, 0x25, 0xca, 0x1a, 0x2b, 0xbc, 0x0c, 0xe9, 0x67, 0x6c, 0x00, 0xd9, 0xbf, 0x5a, 0x48, - 0x6f, 0x3d, 0x99, 0xba, 0x7f, 0x66, 0xc1, 0x39, 0x1e, 0x1f, 0x4e, 0xe4, 0xd1, 0xc0, 0xc7, 0x84, - 0x0e, 0xfb, 0x4c, 0xad, 0xe1, 0xce, 0x8c, 0xb1, 0x6a, 0xaa, 0x6c, 0x54, 0x95, 0x3b, 0xce, 0x65, - 0x39, 0x78, 0x02, 0x1e, 0x31, 0x58, 0xec, 0x7a, 0x94, 0x05, 0xd1, 0x58, 0xe5, 0xa4, 0x59, 0xfa, - 0xf1, 0x2d, 0x12, 0xf6, 0x83, 0x31, 0xdf, 0xe2, 0xdb, 0xfe, 0x41, 0xa0, 0x97, 0xe5, 0x8a, 0x44, - 0xc0, 0x31, 0x14, 0xfa, 0x8e, 0x05, 0x10, 0xc6, 0x1b, 0x84, 0xd7, 0xcf, 0x7b, 0xb0, 0x5f, 0x93, - 0x56, 0x21, 0x21, 0x51, 0x6c, 0x80, 0xa2, 0x00, 0x16, 0xba, 0xc4, 0xe9, 0xb3, 0xae, 0x0a, 0x8b, - 0x67, 0x66, 0x80, 0xbf, 0x22, 0x14, 0x65, 0x2b, 0xb7, 0xa4, 0x62, 0x05, 0x83, 0xbe, 0x67, 0xc1, - 0x4a, 0x52, 0x54, 0xb9, 0x2c, 0xa9, 0x16, 0x67, 0x1e, 0x81, 0xae, 0xa7, 0x14, 0x36, 0x10, 0xcf, - 0x9e, 0x69, 0x1a, 0xce, 0x80, 0xa2, 0xef, 0x5a, 0x00, 0x6e, 0x5c, 0xc4, 0xa9, 0xea, 0x0e, 0xaf, - 0xcf, 0x67, 0x23, 0x27, 0xcd, 0x81, 0x76, 0x7f, 0x42, 0xa2, 0xd8, 0x80, 0xb5, 0xdf, 0xb7, 0xe0, - 0x21, 0xe3, 0xc5, 0x1b, 0x0e, 0x73, 0xbb, 0x97, 0x46, 0xbc, 0x3a, 0xec, 0xa4, 0xda, 0x8a, 0x2f, - 0x98, 0x6d, 0xc5, 0x87, 0x87, 0xeb, 0x9f, 0x9c, 0x36, 0x56, 0xdf, 0xe6, 0x1a, 0x6a, 0x42, 0x85, - 0xd1, 0x81, 0xbc, 0x0a, 0x15, 0xc3, 0x66, 0x95, 0xb5, 0xe6, 0x55, 0x77, 0x93, 0x54, 0x65, 0x10, - 0xb1, 0x89, 0x67, 0xff, 0x25, 0x07, 0x8b, 0xaa, 0xa1, 0x3f, 0x75, 0x1f, 0xb3, 0x01, 0x05, 0xde, - 0xa3, 0x64, 0xcb, 0xae, 0x18, 0xf2, 0x05, 0x07, 0x85, 0xb0, 0xe0, 0x8a, 0xe3, 0x01, 0xd5, 0x79, - 0x5e, 0x99, 0x65, 0xe7, 0x48, 0xeb, 0xe4, 0x71, 0x83, 0xb6, 0x49, 0x3e, 0x63, 0x85, 0xc3, 0x27, - 0x9e, 0xb3, 0x6e, 0xe0, 0xfb, 0xc4, 0xd5, 0xc1, 0x5b, 0x98, 0xb9, 0xcb, 0x6e, 0xa6, 0x35, 0x36, - 0xfe, 0x4f, 0xa1, 0x9f, 0xcd, 0x30, 0x70, 0x16, 0xdb, 0xfe, 0x5d, 0x1e, 0x96, 0x53, 0x96, 0xa3, - 0xc7, 0xa1, 0x34, 0xa4, 0x24, 0xf2, 0xf5, 0x29, 0x49, 0xd2, 0x88, 0x3d, 0xa7, 0xe8, 0x38, 0x91, - 0xe0, 0xd2, 0xa1, 0x43, 0xe9, 0xed, 0x20, 0x6a, 0x2b, 0x3f, 0x27, 0xd2, 0x7b, 0x8a, 0x8e, 0x13, - 0x09, 0xde, 0xe6, 0xdc, 0x24, 0x4e, 0x44, 0xa2, 0xfd, 0xa0, 0x47, 0x26, 0x66, 0xd2, 0x86, 0x66, - 0x61, 0x53, 0x4e, 0x38, 0x8d, 0xf5, 0x69, 0xb3, 0xef, 0x11, 0x9f, 0x49, 0x33, 0xe7, 0xe0, 0xb4, - 0xfd, 0xab, 0x2d, 0x53, 0xa3, 0x76, 0x5a, 0x86, 0x81, 0xb3, 0xd8, 0x3c, 0xeb, 0x2e, 0x3b, 0xb7, - 0xa9, 0x3e, 0x5d, 0x52, 0xf9, 0x67, 0x96, 0xf0, 0x49, 0x9d, 0x56, 0x35, 0xce, 0x1f, 0x1d, 0xae, - 0xa7, 0x0f, 0xb0, 0x70, 0x1a, 0xd1, 0xfe, 0xb3, 0x05, 0xf1, 0xa9, 0xd5, 0x7d, 0xe8, 0xb7, 0x3b, - 0xe9, 0x7e, 0xbb, 0x31, 0xfb, 0x3e, 0x99, 0xd2, 0x6b, 0xbf, 0x9b, 0x87, 0x89, 0x6a, 0x8b, 0x5e, - 0xe2, 0x79, 0x96, 0xd3, 0x48, 0x7b, 0x33, 0x2e, 0xf4, 0x9f, 0x3e, 0xdd, 0xd7, 0xed, 0x7b, 0x03, - 0x62, 0xa6, 0xd0, 0x58, 0x0b, 0x36, 0x34, 0xa2, 0xd7, 0x2c, 0x0d, 0xb0, 0x1f, 0xa8, 0xdc, 0x36, - 0xdf, 0x6e, 0x70, 0xc2, 0x84, 0xfd, 0x00, 0x1b, 0x98, 0xe8, 0xe9, 0x64, 0x06, 0x2e, 0x8a, 0x4d, - 0x61, 0xa7, 0xa7, 0xd6, 0x0f, 0x53, 0x4d, 0x48, 0x66, 0x92, 0x1d, 0x43, 0x39, 0x52, 0x87, 0x06, - 0x71, 0x15, 0x9a, 0x25, 0x12, 0xe3, 0x03, 0x08, 0x99, 0x4a, 0x92, 0xc9, 0x2f, 0x26, 0x53, 0xac, - 0xd1, 0xf8, 0xf6, 0x8f, 0xe2, 0xd1, 0x63, 0x31, 0xbd, 0xfd, 0x93, 0xa1, 0x23, 0x91, 0xb0, 0x7f, - 0x6c, 0x01, 0x9a, 0x6c, 0x30, 0xf8, 0xbc, 0x99, 0x74, 0xfb, 0x2a, 0xe5, 0x24, 0xa8, 0x89, 0x38, - 0xd6, 0x32, 0xa7, 0x48, 0xec, 0x8f, 0x42, 0x51, 0x74, 0xff, 0x2a, 0xc5, 0x24, 0xb1, 0x26, 0xe6, - 0x03, 0x2c, 0x79, 0xf6, 0x1f, 0x2d, 0xc8, 0x26, 0x48, 0x51, 0x5b, 0xe4, 0x3a, 0x64, 0x6b, 0x4b, - 0xda, 0xe7, 0xa7, 0x1f, 0xc8, 0xd1, 0x8b, 0x50, 0x71, 0x18, 0x23, 0x83, 0x90, 0x89, 0xf0, 0xcd, - 0xdf, 0x71, 0xf8, 0x8a, 0x06, 0xf9, 0x5a, 0xd0, 0xf6, 0x0e, 0x3c, 0x11, 0xba, 0xa6, 0x3a, 0xfb, - 0x83, 0x3c, 0xac, 0xa4, 0xdb, 0x45, 0x34, 0x84, 0x05, 0xd1, 0x9e, 0xc9, 0x53, 0xcb, 0xb9, 0xf7, - 0x83, 0x89, 0x4b, 0x04, 0x89, 0x62, 0x05, 0x96, 0x8a, 0x85, 0xdc, 0x49, 0xb1, 0x70, 0xe2, 0xe8, - 0x99, 0xff, 0xef, 0x1c, 0x3d, 0x5f, 0x02, 0x68, 0x0b, 0x6f, 0x8b, 0xb5, 0x2c, 0xdc, 0x7d, 0x2a, - 0xda, 0x4a, 0xb4, 0x60, 0x43, 0x23, 0x5a, 0x85, 0x9c, 0xd7, 0x16, 0x39, 0x20, 0xdf, 0x00, 0x25, - 0x9b, 0xdb, 0xde, 0xc2, 0x39, 0xaf, 0x6d, 0x53, 0x58, 0x32, 0xfb, 0xe3, 0x53, 0xc7, 0xea, 0x97, - 0x60, 0x59, 0xfe, 0xda, 0x22, 0xcc, 0xf1, 0xfa, 0x54, 0xad, 0xce, 0x43, 0x4a, 0x7c, 0xb9, 0x65, - 0x32, 0x71, 0x5a, 0xd6, 0xfe, 0x45, 0x0e, 0xe0, 0x4a, 0x10, 0xf4, 0x14, 0x66, 0xbc, 0xf5, 0xac, - 0xa9, 0x5b, 0x6f, 0x03, 0x0a, 0x3d, 0xcf, 0x6f, 0x67, 0x37, 0xe7, 0x8e, 0xe7, 0xb7, 0xb1, 0xe0, - 0xa0, 0x8b, 0x00, 0x4e, 0xe8, 0x3d, 0x4f, 0x22, 0xaa, 0x0f, 0xa6, 0x13, 0xbf, 0x6c, 0xee, 0x6d, - 0x2b, 0x0e, 0x36, 0xa4, 0xd0, 0xe3, 0xaa, 0x97, 0x95, 0xe7, 0x1b, 0xd5, 0x4c, 0x2f, 0x5b, 0xe2, - 0x16, 0x1a, 0xcd, 0xea, 0x53, 0x99, 0x6c, 0xba, 0x31, 0x91, 0x4d, 0x75, 0x6f, 0xbf, 0xd7, 0x75, - 0x28, 0x39, 0x6e, 0x5f, 0x2f, 0x9c, 0x70, 0xd0, 0xd6, 0x82, 0xd2, 0xb3, 0x37, 0xf6, 0x65, 0x87, - 0x62, 0x43, 0xde, 0x73, 0x64, 0xf2, 0xca, 0xeb, 0xb0, 0xdf, 0xa6, 0x74, 0x28, 0x56, 0x98, 0x33, - 0xd1, 0xa3, 0x90, 0x27, 0xaf, 0x84, 0xc2, 0x2f, 0x79, 0x9d, 0xe0, 0x2e, 0xbd, 0x12, 0x7a, 0x11, - 0xa1, 0x5c, 0x88, 0xbc, 0x12, 0xda, 0xff, 0xb4, 0x40, 0x9f, 0x1d, 0xa2, 0x03, 0x28, 0xf0, 0x61, - 0x58, 0x95, 0xbc, 0x2b, 0x33, 0xce, 0xdb, 0xfa, 0x88, 0xb2, 0x24, 0x4e, 0x60, 0xc7, 0xbe, 0x8b, - 0x85, 0x7e, 0x34, 0x82, 0x52, 0x14, 0xf4, 0xfb, 0x37, 0x1d, 0xb7, 0x37, 0x87, 0xea, 0x87, 0x95, - 0x2a, 0x8d, 0xb7, 0x24, 0x92, 0x80, 0x22, 0xe3, 0x04, 0xcb, 0xfe, 0x6d, 0x11, 0x32, 0x43, 0x16, - 0x1a, 0x9a, 0xc7, 0xb2, 0xd6, 0x1c, 0x8f, 0x65, 0x13, 0x8f, 0x1f, 0x77, 0x34, 0x8b, 0x9e, 0x84, - 0x62, 0xc8, 0x03, 0x41, 0x85, 0xed, 0x7a, 0x5c, 0x30, 0x44, 0x74, 0x1c, 0x13, 0x2f, 0x52, 0xda, - 0x0c, 0x97, 0xfc, 0x09, 0x65, 0xe0, 0xdb, 0xf2, 0x04, 0x45, 0x9d, 0x56, 0xc8, 0xcc, 0xb1, 0x3b, - 0xaf, 0x15, 0x55, 0x07, 0x16, 0xc9, 0x51, 0x8a, 0x3a, 0xa6, 0x30, 0x10, 0xd1, 0x0f, 0x2d, 0x58, - 0x89, 0x1d, 0xaf, 0x8c, 0x28, 0xde, 0x13, 0x23, 0xc4, 0xe8, 0x8c, 0x53, 0x48, 0x38, 0x83, 0x8c, - 0xbe, 0x06, 0x65, 0xca, 0x9c, 0x48, 0x56, 0xc4, 0x85, 0x3b, 0xce, 0xa2, 0xc9, 0x5a, 0xb6, 0x62, - 0x25, 0x58, 0xeb, 0x43, 0x2f, 0x00, 0x1c, 0x78, 0xbe, 0x47, 0xbb, 0x42, 0xfb, 0xe2, 0xdd, 0xd5, - 0xdb, 0xcb, 0x89, 0x06, 0x6c, 0x68, 0xb3, 0xbf, 0x9f, 0x83, 0x8a, 0x71, 0xaf, 0x75, 0x8a, 0x7c, - 0x98, 0xb9, 0x87, 0xcb, 0x9d, 0xf2, 0x1e, 0xee, 0x31, 0x28, 0x85, 0x41, 0xdf, 0x73, 0x3d, 0x55, - 0x0b, 0xcb, 0x72, 0x13, 0xed, 0x29, 0x1a, 0x4e, 0xb8, 0x88, 0x41, 0xf9, 0xd6, 0x6d, 0x26, 0xf2, - 0x50, 0x7c, 0x6b, 0xd7, 0x9c, 0x61, 0x49, 0xe3, 0x9c, 0xa6, 0x9d, 0x1c, 0x53, 0x28, 0xd6, 0x40, - 0xf6, 0x5f, 0x73, 0x00, 0xe2, 0xda, 0xd3, 0x13, 0x07, 0x51, 0x1b, 0x50, 0x88, 0x48, 0x18, 0x64, - 0xfd, 0xc0, 0x25, 0xb0, 0xe0, 0xa4, 0xe6, 0xca, 0xdc, 0x1d, 0xcd, 0x95, 0xf9, 0x13, 0xe7, 0x4a, - 0x5e, 0xe1, 0x68, 0x77, 0x2f, 0xf2, 0x46, 0x0e, 0x23, 0x3b, 0x64, 0xac, 0xca, 0x84, 0xae, 0x70, - 0xad, 0x2b, 0x9a, 0x89, 0xd3, 0xb2, 0xc7, 0x8e, 0xe4, 0xc5, 0xff, 0xe0, 0x48, 0xfe, 0xae, 0x05, - 0x2b, 0xda, 0xb3, 0xff, 0x5b, 0x37, 0xed, 0xda, 0xee, 0x29, 0xf3, 0xdd, 0xbf, 0x2c, 0x38, 0x1b, - 0x4f, 0x12, 0xaa, 0xc5, 0x98, 0x4b, 0x4f, 0x91, 0xba, 0xb3, 0xca, 0x9f, 0x7c, 0x67, 0x65, 0x66, - 0xee, 0xc2, 0x09, 0x99, 0xfb, 0xcb, 0x99, 0x6e, 0xe2, 0x63, 0x13, 0xdd, 0x04, 0x4a, 0x66, 0xa6, - 0xb1, 0xef, 0xa6, 0xbb, 0x2f, 0xfb, 0x37, 0x16, 0x2c, 0xc5, 0xec, 0xdd, 0xa0, 0x2d, 0x66, 0x13, - 0x2a, 0x82, 0xcc, 0x4a, 0xcf, 0x26, 0x32, 0x1c, 0x24, 0x0f, 0x0d, 0xa1, 0xe4, 0x76, 0xbd, 0x7e, - 0x3b, 0x22, 0xbe, 0x5a, 0x96, 0x67, 0xe6, 0x30, 0xd2, 0x71, 0x7c, 0x1d, 0x0a, 0x4d, 0x05, 0x80, - 0x13, 0x28, 0xfb, 0xf7, 0x79, 0x58, 0x4e, 0xcd, 0x7f, 0x3c, 0x7d, 0xc9, 0x4b, 0xa3, 0x96, 0x61, - 0x73, 0x92, 0xbe, 0xf6, 0x35, 0x0b, 0x9b, 0x72, 0x7c, 0x3d, 0xfa, 0xde, 0x48, 0xea, 0xc8, 0xde, - 0x21, 0x5e, 0x8d, 0x19, 0x58, 0xcb, 0x18, 0x03, 0x70, 0xfe, 0x8e, 0x07, 0xe0, 0x37, 0x2c, 0x40, - 0xe2, 0x13, 0xb8, 0xe6, 0x64, 0x4e, 0x55, 0xb9, 0x70, 0x6e, 0x7e, 0x5b, 0x55, 0x16, 0xa1, 0xe6, - 0x04, 0x14, 0x3e, 0x06, 0xde, 0x38, 0x17, 0x2f, 0xde, 0x97, 0x73, 0x71, 0xfb, 0x5b, 0x70, 0x7e, - 0xa2, 0xf5, 0x52, 0x03, 0x85, 0x75, 0xdc, 0x40, 0xc1, 0x23, 0x31, 0x8c, 0x86, 0xbe, 0x5c, 0xa0, - 0x92, 0x8e, 0xc4, 0x3d, 0x4e, 0xc4, 0x92, 0xc7, 0xa7, 0x8c, 0x76, 0x34, 0xc6, 0x43, 0xd9, 0xa9, - 0x97, 0x34, 0xfa, 0x96, 0xa0, 0x62, 0xc5, 0xb5, 0x5f, 0xcf, 0xc1, 0x72, 0xaa, 0x1d, 0x48, 0x0d, - 0x84, 0xd6, 0x89, 0x03, 0xe1, 0x3c, 0x8d, 0x41, 0xaf, 0xc2, 0x12, 0x15, 0x5b, 0x31, 0x72, 0x18, - 0xe9, 0x8c, 0xe7, 0x70, 0x33, 0xd1, 0x32, 0xd4, 0x35, 0xce, 0x1d, 0x1d, 0xae, 0x2f, 0x99, 0x14, - 0x9c, 0x82, 0xb3, 0x7f, 0x9d, 0x83, 0x07, 0x8e, 0x69, 0x8d, 0xd0, 0x6d, 0xf3, 0xa4, 0x46, 0x0e, - 0xe7, 0xcf, 0xce, 0x21, 0x3c, 0x55, 0x22, 0x95, 0xff, 0x3c, 0x38, 0xf1, 0x9c, 0xe6, 0xe4, 0xd9, - 0xfc, 0x00, 0x8a, 0xdd, 0x20, 0xe8, 0xc5, 0x43, 0xf8, 0x2c, 0x05, 0x41, 0x8f, 0x8e, 0x8d, 0x32, - 0x5f, 0x4d, 0xfe, 0x4c, 0xb1, 0x54, 0x6f, 0xbf, 0x6e, 0x81, 0x71, 0xf1, 0x87, 0xbe, 0x09, 0x65, - 0x67, 0xc8, 0x82, 0x81, 0xc3, 0x48, 0x5b, 0x95, 0xb9, 0xdd, 0xb9, 0x5c, 0x31, 0x6e, 0xc6, 0x5a, - 0xa5, 0x87, 0x92, 0x47, 0xac, 0xf1, 0xec, 0xa7, 0xe5, 0x8a, 0x65, 0x5e, 0xd0, 0x51, 0x69, 0x4d, - 0x8f, 0x4a, 0xfb, 0x03, 0x0b, 0x52, 0xd1, 0x80, 0x06, 0x50, 0xe4, 0x26, 0x8d, 0xe7, 0x70, 0xb1, - 0x6c, 0xea, 0xdd, 0xe4, 0x3a, 0xa5, 0x1f, 0xc5, 0x4f, 0x2c, 0x51, 0x90, 0x07, 0x05, 0xee, 0x50, - 0x35, 0xba, 0xed, 0xcc, 0x09, 0x8d, 0x2f, 0x95, 0x9c, 0x14, 0xf9, 0x2f, 0x2c, 0x20, 0xec, 0xa7, - 0xe0, 0xfc, 0x84, 0x45, 0xdc, 0x49, 0x07, 0x41, 0x7c, 0x8f, 0x6e, 0x38, 0xe9, 0x32, 0x27, 0x62, - 0xc9, 0xe3, 0x75, 0xf0, 0x5c, 0x56, 0x3d, 0xfa, 0xb9, 0x05, 0xe7, 0x69, 0x56, 0xdf, 0x3d, 0xf1, - 0xda, 0xff, 0x2b, 0xa3, 0x26, 0xcd, 0xc7, 0x93, 0x16, 0xf0, 0x15, 0xcd, 0x5e, 0x03, 0xf0, 0x3d, - 0xe4, 0xf9, 0x94, 0xb8, 0xc3, 0x28, 0xfe, 0x50, 0x3d, 0xe8, 0x2b, 0x3a, 0x4e, 0x24, 0xd0, 0x45, - 0x00, 0x79, 0x0d, 0xb5, 0xab, 0x1b, 0xde, 0xe4, 0x90, 0xa3, 0x95, 0x70, 0xb0, 0x21, 0xc5, 0x7b, - 0x7e, 0x97, 0x44, 0x6c, 0x8b, 0xb7, 0x79, 0x3c, 0xbf, 0x2d, 0xc9, 0x9e, 0xbf, 0xa9, 0x68, 0x38, - 0xe1, 0xa2, 0x8f, 0xc3, 0x62, 0x8f, 0x8c, 0x85, 0x60, 0x41, 0x08, 0x56, 0x78, 0xe7, 0xb2, 0x23, - 0x49, 0x38, 0xe6, 0x21, 0x1b, 0x16, 0x5c, 0x47, 0x48, 0x15, 0x85, 0x14, 0x88, 0x1b, 0xa9, 0x4d, - 0x21, 0xa4, 0x38, 0x8d, 0xda, 0x5b, 0xef, 0xad, 0x9d, 0x79, 0xfb, 0xbd, 0xb5, 0x33, 0xef, 0xbc, - 0xb7, 0x76, 0xe6, 0xb5, 0xa3, 0x35, 0xeb, 0xad, 0xa3, 0x35, 0xeb, 0xed, 0xa3, 0x35, 0xeb, 0x9d, - 0xa3, 0x35, 0xeb, 0x1f, 0x47, 0x6b, 0xd6, 0x4f, 0xdf, 0x5f, 0x3b, 0xf3, 0x42, 0x29, 0x76, 0xed, - 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x01, 0x37, 0x60, 0x86, 0xe3, 0x2c, 0x00, 0x00, + 0xf5, 0x9f, 0xf6, 0xc7, 0x8c, 0xe7, 0xcd, 0xc7, 0xee, 0x56, 0x3e, 0xfe, 0xfe, 0x4f, 0xa4, 0x99, + 0x51, 0x87, 0x8f, 0x80, 0x12, 0x9b, 0x5d, 0x08, 0x84, 0x80, 0x90, 0xc6, 0x9e, 0xdd, 0xec, 0x64, + 0x76, 0x67, 0x87, 0xf2, 0x24, 0x2b, 0x85, 0x28, 0xd0, 0xdb, 0xae, 0xb1, 0x7b, 0x6d, 0x77, 0x77, + 0xba, 0xca, 0xde, 0x58, 0x10, 0x14, 0x84, 0x40, 0x7c, 0x4a, 0x40, 0x84, 0x40, 0xe2, 0x12, 0x24, + 0x4e, 0x5c, 0xb8, 0x44, 0x1c, 0xb8, 0xc1, 0x01, 0xe5, 0x98, 0x03, 0x88, 0x28, 0x44, 0x23, 0x32, + 0xb9, 0x44, 0xe2, 0xc0, 0x3d, 0x27, 0x54, 0x1f, 0xdd, 0x55, 0xdd, 0xb6, 0x33, 0xb3, 0x6b, 0xef, + 0x02, 0x37, 0x77, 0xbd, 0xd7, 0xef, 0xf7, 0xfa, 0xd5, 0xab, 0xf7, 0x55, 0x86, 0x9d, 0x96, 0xc7, + 0xda, 0xfd, 0x1b, 0x15, 0x37, 0xe8, 0x55, 0x9d, 0xa8, 0x15, 0x84, 0x51, 0x70, 0x53, 0xfc, 0x78, + 0xcc, 0x6d, 0x56, 0xc3, 0x4e, 0xab, 0xea, 0x84, 0x1e, 0xad, 0x3a, 0x61, 0xd8, 0xf5, 0x5c, 0x87, + 0x79, 0x81, 0x5f, 0x1d, 0x9c, 0x77, 0xba, 0x61, 0xdb, 0x39, 0x5f, 0x6d, 0x11, 0x9f, 0x44, 0x0e, + 0x23, 0xcd, 0x4a, 0x18, 0x05, 0x2c, 0x40, 0x9f, 0xd7, 0xa2, 0x2a, 0xb1, 0x28, 0xf1, 0xe3, 0xab, + 0x6e, 0xb3, 0x12, 0x76, 0x5a, 0x15, 0x2e, 0xaa, 0x62, 0x88, 0xaa, 0xc4, 0xa2, 0xd6, 0x1e, 0x33, + 0xb4, 0x68, 0x05, 0xad, 0xa0, 0x2a, 0x24, 0xde, 0xe8, 0x1f, 0x8a, 0x27, 0xf1, 0x20, 0x7e, 0x49, + 0xa4, 0xb5, 0xcf, 0x74, 0x9e, 0xa0, 0x15, 0x2f, 0xe0, 0xba, 0xf5, 0x1c, 0xb7, 0xed, 0xf9, 0x24, + 0x1a, 0x6a, 0x65, 0x7b, 0x84, 0x39, 0xd5, 0xc1, 0x88, 0x7e, 0x6b, 0xd5, 0x49, 0x6f, 0x45, 0x7d, + 0x9f, 0x79, 0x3d, 0x32, 0xf2, 0xc2, 0x67, 0x4f, 0x7a, 0x81, 0xba, 0x6d, 0xd2, 0x73, 0x46, 0xde, + 0xfb, 0xf4, 0xa4, 0xf7, 0xfa, 0xcc, 0xeb, 0x56, 0x3d, 0x9f, 0x51, 0x16, 0x65, 0x5f, 0xb2, 0x5f, + 0x84, 0x95, 0xad, 0xeb, 0x8d, 0xad, 0x3e, 0x6b, 0xd7, 0x03, 0xff, 0xd0, 0x6b, 0xa1, 0xc7, 0x61, + 0xc9, 0xed, 0xf6, 0x29, 0x23, 0xd1, 0x9e, 0xd3, 0x23, 0x65, 0x6b, 0xd3, 0x7a, 0x64, 0xb1, 0x76, + 0xdf, 0x1b, 0x47, 0x1b, 0x73, 0xc7, 0x47, 0x1b, 0x4b, 0x75, 0x4d, 0xc2, 0x26, 0x1f, 0xfa, 0x04, + 0x2c, 0x44, 0x41, 0x97, 0x6c, 0xe1, 0xbd, 0x72, 0x4e, 0xbc, 0x72, 0x46, 0xbd, 0xb2, 0x80, 0xe5, + 0x32, 0x8e, 0xe9, 0xf6, 0xdf, 0x2d, 0x80, 0xad, 0x30, 0xdc, 0x8f, 0x82, 0x9b, 0xc4, 0x65, 0xe8, + 0x6b, 0x50, 0xe2, 0xa6, 0x6b, 0x3a, 0xcc, 0x11, 0x68, 0x4b, 0x17, 0x3e, 0x55, 0x91, 0x5f, 0x52, + 0x31, 0xbf, 0x44, 0x6f, 0x25, 0xe7, 0xae, 0x0c, 0xce, 0x57, 0xae, 0xdd, 0xe0, 0xef, 0x5f, 0x25, + 0xcc, 0xa9, 0x21, 0x05, 0x06, 0x7a, 0x0d, 0x27, 0x52, 0x51, 0x07, 0x0a, 0x34, 0x24, 0xae, 0x50, + 0x6c, 0xe9, 0xc2, 0x4e, 0xe5, 0x8e, 0x1d, 0xa6, 0xa2, 0xd5, 0x6e, 0x84, 0xc4, 0xad, 0x2d, 0x2b, + 0xd8, 0x02, 0x7f, 0xc2, 0x02, 0xc4, 0x7e, 0xdb, 0x82, 0x55, 0xcd, 0x76, 0xc5, 0xa3, 0x0c, 0x3d, + 0x3f, 0xf2, 0x85, 0x95, 0xd3, 0x7d, 0x21, 0x7f, 0x5b, 0x7c, 0xdf, 0x59, 0x05, 0x54, 0x8a, 0x57, + 0x8c, 0xaf, 0xbb, 0x09, 0x45, 0x8f, 0x91, 0x1e, 0x2d, 0xe7, 0x36, 0xf3, 0x8f, 0x2c, 0x5d, 0xb8, + 0x38, 0x93, 0xcf, 0xab, 0xad, 0x28, 0xc4, 0xe2, 0x0e, 0x97, 0x8d, 0x25, 0x84, 0xfd, 0xab, 0xa2, + 0xf9, 0x71, 0xfc, 0xab, 0xd1, 0x79, 0x58, 0xa2, 0x41, 0x3f, 0x72, 0x09, 0x26, 0x61, 0x40, 0xcb, + 0xd6, 0x66, 0x9e, 0x6f, 0x3e, 0xf7, 0x95, 0x86, 0x5e, 0xc6, 0x26, 0x0f, 0xfa, 0xa1, 0x05, 0xcb, + 0x4d, 0x42, 0x99, 0xe7, 0x0b, 0xfc, 0x58, 0xf3, 0x2f, 0x4f, 0xa7, 0x79, 0xbc, 0xb8, 0xad, 0x25, + 0xd7, 0xee, 0x57, 0x5f, 0xb1, 0x6c, 0x2c, 0x52, 0x9c, 0x02, 0xe7, 0x0e, 0xdf, 0x24, 0xd4, 0x8d, + 0xbc, 0x90, 0x3f, 0x97, 0xf3, 0x69, 0x87, 0xdf, 0xd6, 0x24, 0x6c, 0xf2, 0xa1, 0x0e, 0x14, 0xb9, + 0x43, 0xd3, 0x72, 0x41, 0x28, 0x7f, 0x69, 0x0a, 0xe5, 0x95, 0x39, 0xf9, 0x41, 0xd1, 0x76, 0xe7, + 0x4f, 0x14, 0x4b, 0x0c, 0xf4, 0x63, 0x0b, 0xca, 0xea, 0xb4, 0x61, 0x22, 0x4d, 0x79, 0xbd, 0xed, + 0x31, 0xd2, 0xf5, 0x28, 0x2b, 0x17, 0x85, 0x02, 0xd5, 0xd3, 0xb9, 0xd4, 0x53, 0x51, 0xd0, 0x0f, + 0x77, 0x3d, 0xbf, 0x59, 0xdb, 0x54, 0x48, 0xe5, 0xfa, 0x04, 0xc1, 0x78, 0x22, 0x24, 0x7a, 0xd5, + 0x82, 0x35, 0xdf, 0xe9, 0x11, 0x1a, 0x3a, 0x7c, 0x53, 0x25, 0xb9, 0xd6, 0x75, 0xdc, 0x8e, 0xd0, + 0x68, 0xfe, 0xce, 0x34, 0xb2, 0x95, 0x46, 0x6b, 0x7b, 0x13, 0x45, 0xe3, 0x0f, 0x81, 0xb5, 0xff, + 0x9c, 0x87, 0x25, 0xc3, 0x11, 0xee, 0x41, 0x64, 0xe9, 0xa6, 0x22, 0xcb, 0xd3, 0xb3, 0x71, 0xe0, + 0x49, 0xa1, 0x05, 0x31, 0x98, 0xa7, 0xcc, 0x61, 0x7d, 0x2a, 0x9c, 0x74, 0xe9, 0xc2, 0x95, 0x19, + 0xe1, 0x09, 0x99, 0xb5, 0x55, 0x85, 0x38, 0x2f, 0x9f, 0xb1, 0xc2, 0x42, 0x2f, 0xc2, 0x62, 0x10, + 0xf2, 0x9c, 0xc1, 0x4f, 0x47, 0x41, 0x00, 0x6f, 0x4f, 0x01, 0x7c, 0x2d, 0x96, 0x55, 0x5b, 0x39, + 0x3e, 0xda, 0x58, 0x4c, 0x1e, 0xb1, 0x46, 0xb1, 0x5d, 0xb8, 0xdf, 0xd0, 0xaf, 0x1e, 0xf8, 0x4d, + 0x4f, 0x6c, 0xe8, 0x26, 0x14, 0xd8, 0x30, 0x8c, 0x93, 0x52, 0x62, 0xa2, 0x83, 0x61, 0x48, 0xb0, + 0xa0, 0xf0, 0x34, 0xd4, 0x23, 0x94, 0x3a, 0x2d, 0x92, 0x4d, 0x43, 0x57, 0xe5, 0x32, 0x8e, 0xe9, + 0xf6, 0x8b, 0xf0, 0xe0, 0xf8, 0xa8, 0x81, 0x3e, 0x06, 0xf3, 0x94, 0x44, 0x03, 0x12, 0x29, 0x20, + 0x6d, 0x19, 0xb1, 0x8a, 0x15, 0x15, 0x55, 0x61, 0x31, 0xf1, 0x46, 0x05, 0x77, 0x4e, 0xb1, 0x2e, + 0x6a, 0x17, 0xd6, 0x3c, 0xf6, 0x3b, 0x16, 0x9c, 0x31, 0x30, 0xef, 0x41, 0x72, 0xe8, 0xa4, 0x93, + 0xc3, 0xa5, 0xd9, 0x78, 0xcc, 0x84, 0xec, 0xf0, 0xc7, 0x3c, 0x9c, 0x33, 0xfd, 0x4a, 0x1c, 0x4f, + 0x51, 0x19, 0x90, 0x30, 0x78, 0x06, 0x5f, 0x51, 0xe6, 0xd4, 0x95, 0x81, 0x5c, 0xc6, 0x31, 0x9d, + 0xef, 0x6f, 0xe8, 0xb0, 0xb6, 0xb2, 0x65, 0xb2, 0xbf, 0xfb, 0x0e, 0x6b, 0x63, 0x41, 0xe1, 0xc1, + 0x9a, 0xf8, 0x03, 0x2f, 0x0a, 0xfc, 0x1e, 0xf1, 0x59, 0x36, 0x58, 0x5f, 0xd4, 0x24, 0x6c, 0xf2, + 0xa1, 0x2f, 0xc1, 0x2a, 0x73, 0xa2, 0x16, 0x61, 0x98, 0x0c, 0x3c, 0x1a, 0x3b, 0xf2, 0x62, 0xed, + 0x41, 0xf5, 0xe6, 0xea, 0x41, 0x8a, 0x8a, 0x33, 0xdc, 0xe8, 0x75, 0x0b, 0x1e, 0x72, 0x83, 0x5e, + 0x18, 0xf8, 0xc4, 0x67, 0xfb, 0x4e, 0xe4, 0xf4, 0x08, 0x23, 0xd1, 0xb5, 0x01, 0x89, 0x22, 0xaf, + 0x49, 0xa8, 0x0a, 0xc1, 0x57, 0xa7, 0xb0, 0x6e, 0x7d, 0x44, 0x7a, 0xed, 0x61, 0xa5, 0xdc, 0x43, + 0xf5, 0xc9, 0xc8, 0xf8, 0xc3, 0xd4, 0xe2, 0xb9, 0x79, 0xe0, 0x74, 0xfb, 0x84, 0x5e, 0xf2, 0x78, + 0xa6, 0x9a, 0xd7, 0xb9, 0xf9, 0x59, 0xbd, 0x8c, 0x4d, 0x1e, 0xfb, 0xf5, 0x7c, 0xca, 0x45, 0x1b, + 0x71, 0xdc, 0x11, 0x7b, 0xa9, 0x1c, 0x74, 0x56, 0x71, 0x47, 0x86, 0x6f, 0x7d, 0xba, 0x64, 0x89, + 0xa0, 0xb0, 0xd0, 0xf7, 0x2c, 0x91, 0x98, 0xe3, 0x53, 0xa9, 0x62, 0xec, 0x5d, 0x28, 0x12, 0xcc, + 0x5c, 0x1f, 0x2f, 0x62, 0x13, 0x9a, 0xbb, 0x70, 0x28, 0x73, 0xb4, 0xf2, 0xb8, 0xc4, 0x85, 0xe3, + 0xd4, 0x1d, 0xd3, 0x51, 0x1f, 0x80, 0x0e, 0x7d, 0x77, 0x3f, 0xe8, 0x7a, 0xee, 0x50, 0x85, 0xcb, + 0x69, 0x4a, 0xb2, 0x46, 0x22, 0xac, 0xb6, 0xca, 0xd3, 0x90, 0x7e, 0xc6, 0x06, 0x90, 0xfd, 0xda, + 0x7c, 0xfa, 0xe8, 0xc9, 0xd0, 0xfd, 0x53, 0x0b, 0xce, 0x72, 0xff, 0x70, 0x22, 0x8f, 0x06, 0x3e, + 0x26, 0xb4, 0xdf, 0x65, 0x6a, 0x0f, 0x77, 0xa7, 0xf4, 0x55, 0x53, 0x64, 0xad, 0xac, 0xcc, 0x71, + 0x36, 0x4b, 0xc1, 0x23, 0xf0, 0x88, 0xc1, 0x42, 0xdb, 0xa3, 0x2c, 0x88, 0x86, 0x2a, 0x26, 0x4d, + 0x53, 0x8f, 0x6f, 0x93, 0xb0, 0x1b, 0x0c, 0xf9, 0x11, 0xdf, 0xf1, 0x0f, 0x03, 0xbd, 0x2d, 0x97, + 0x25, 0x02, 0x8e, 0xa1, 0xd0, 0xb7, 0x2c, 0x80, 0x30, 0x3e, 0x20, 0x3c, 0x7f, 0xde, 0x85, 0xf3, + 0x9a, 0x94, 0x0a, 0xc9, 0x12, 0xc5, 0x06, 0x28, 0x0a, 0x60, 0xbe, 0x4d, 0x9c, 0x2e, 0x6b, 0x2b, + 0xb7, 0x78, 0x6a, 0x0a, 0xf8, 0xcb, 0x42, 0x50, 0x36, 0x73, 0xcb, 0x55, 0xac, 0x60, 0xd0, 0x77, + 0x2c, 0x58, 0x4d, 0x92, 0x2a, 0xe7, 0x25, 0xe5, 0xe2, 0xd4, 0x2d, 0xd0, 0xb5, 0x94, 0xc0, 0x1a, + 0xe2, 0xd1, 0x33, 0xbd, 0x86, 0x33, 0xa0, 0xe8, 0xdb, 0x16, 0x80, 0x1b, 0x27, 0x71, 0xaa, 0xaa, + 0xc3, 0x6b, 0xb3, 0x39, 0xc8, 0x49, 0x71, 0xa0, 0xcd, 0x9f, 0x2c, 0x51, 0x6c, 0xc0, 0xda, 0xef, + 0x59, 0xf0, 0x80, 0xf1, 0xe2, 0x75, 0x87, 0xb9, 0xed, 0x8b, 0x03, 0x9e, 0x1d, 0x76, 0x53, 0x65, + 0xc5, 0xe7, 0xcc, 0xb2, 0xe2, 0x83, 0xa3, 0x8d, 0x8f, 0x4f, 0x6a, 0xab, 0x6f, 0x71, 0x09, 0x15, + 0x21, 0xc2, 0xa8, 0x40, 0x5e, 0x86, 0x25, 0x43, 0x67, 0x15, 0xb5, 0x66, 0x95, 0x77, 0x93, 0x50, + 0x65, 0x2c, 0x62, 0x13, 0xcf, 0xfe, 0x6b, 0x0e, 0x16, 0x54, 0x41, 0x7f, 0xea, 0x3a, 0x66, 0x13, + 0x0a, 0xbc, 0x46, 0xc9, 0xa6, 0x5d, 0xd1, 0xe4, 0x0b, 0x0a, 0x0a, 0x61, 0xde, 0x15, 0xe3, 0x01, + 0x55, 0x79, 0x5e, 0x9e, 0xe6, 0xe4, 0x48, 0xed, 0xe4, 0xb8, 0x41, 0xeb, 0x24, 0x9f, 0xb1, 0xc2, + 0xe1, 0x1d, 0xcf, 0x19, 0x37, 0xf0, 0x7d, 0xe2, 0x6a, 0xe7, 0x2d, 0x4c, 0x5d, 0x65, 0xd7, 0xd3, + 0x12, 0x6b, 0xff, 0xa7, 0xd0, 0xcf, 0x64, 0x08, 0x38, 0x8b, 0x6d, 0xff, 0x3e, 0x0f, 0x2b, 0x29, + 0xcd, 0xd1, 0xa3, 0x50, 0xea, 0x53, 0x12, 0xf9, 0x7a, 0x4a, 0x92, 0x14, 0x62, 0xcf, 0xa8, 0x75, + 0x9c, 0x70, 0x70, 0xee, 0xd0, 0xa1, 0xf4, 0x56, 0x10, 0x35, 0x95, 0x9d, 0x13, 0xee, 0x7d, 0xb5, + 0x8e, 0x13, 0x0e, 0x5e, 0xe6, 0xdc, 0x20, 0x4e, 0x44, 0xa2, 0x83, 0xa0, 0x43, 0x46, 0x7a, 0xd2, + 0x9a, 0x26, 0x61, 0x93, 0x4f, 0x18, 0x8d, 0x75, 0x69, 0xbd, 0xeb, 0x11, 0x9f, 0x49, 0x35, 0x67, + 0x60, 0xb4, 0x83, 0x2b, 0x0d, 0x53, 0xa2, 0x36, 0x5a, 0x86, 0x80, 0xb3, 0xd8, 0x3c, 0xea, 0xae, + 0x38, 0xb7, 0xa8, 0x9e, 0x2e, 0xa9, 0xf8, 0x33, 0x8d, 0xfb, 0xa4, 0xa6, 0x55, 0xb5, 0x73, 0xc7, + 0x47, 0x1b, 0xe9, 0x01, 0x16, 0x4e, 0x23, 0xda, 0x7f, 0xb1, 0x20, 0x9e, 0x5a, 0xdd, 0x83, 0x7a, + 0xbb, 0x95, 0xae, 0xb7, 0x6b, 0xd3, 0x9f, 0x93, 0x09, 0xb5, 0xf6, 0xdb, 0x79, 0x18, 0xc9, 0xb6, + 0xe8, 0x05, 0x1e, 0x67, 0xf9, 0x1a, 0x69, 0x6e, 0xc5, 0x89, 0xfe, 0x93, 0xa7, 0xfb, 0xba, 0x03, + 0xaf, 0x47, 0xcc, 0x10, 0x1a, 0x4b, 0xc1, 0x86, 0x44, 0xf4, 0x8a, 0xa5, 0x01, 0x0e, 0x02, 0x15, + 0xdb, 0x66, 0x5b, 0x0d, 0x8e, 0xa8, 0x70, 0x10, 0x60, 0x03, 0x13, 0x3d, 0x99, 0xf4, 0xc0, 0x45, + 0x71, 0x28, 0xec, 0x74, 0xd7, 0xfa, 0x41, 0xaa, 0x08, 0xc9, 0x74, 0xb2, 0x43, 0x58, 0x8c, 0xd4, + 0xd0, 0x20, 0xce, 0x42, 0xd3, 0x78, 0x62, 0x3c, 0x80, 0x90, 0xa1, 0x24, 0xe9, 0xfc, 0xe2, 0x65, + 0x8a, 0x35, 0x1a, 0x3f, 0xfe, 0x51, 0xdc, 0x7a, 0x2c, 0xa4, 0x8f, 0x7f, 0xd2, 0x74, 0x24, 0x1c, + 0xf6, 0x8f, 0x2c, 0x40, 0xa3, 0x05, 0x06, 0xef, 0x37, 0x93, 0x6a, 0x5f, 0x85, 0x9c, 0x04, 0x35, + 0x61, 0xc7, 0x9a, 0xe7, 0x14, 0x81, 0xfd, 0x61, 0x28, 0x8a, 0xea, 0x5f, 0x85, 0x98, 0xc4, 0xd7, + 0x44, 0x7f, 0x80, 0x25, 0xcd, 0xfe, 0x93, 0x05, 0xd9, 0x00, 0x29, 0x72, 0x8b, 0xdc, 0x87, 0x6c, + 0x6e, 0x49, 0xdb, 0xfc, 0xf4, 0x0d, 0x39, 0x7a, 0x1e, 0x96, 0x1c, 0xc6, 0x48, 0x2f, 0x64, 0xc2, + 0x7d, 0xf3, 0xb7, 0xed, 0xbe, 0xa2, 0x40, 0xbe, 0x1a, 0x34, 0xbd, 0x43, 0x4f, 0xb8, 0xae, 0x29, + 0xce, 0x7e, 0x3f, 0x0f, 0xab, 0xe9, 0x72, 0x11, 0xf5, 0x61, 0x5e, 0x94, 0x67, 0x72, 0x6a, 0x39, + 0xf3, 0x7a, 0x30, 0x31, 0x89, 0x58, 0xa2, 0x58, 0x81, 0xa5, 0x7c, 0x21, 0x77, 0x92, 0x2f, 0x9c, + 0xd8, 0x7a, 0xe6, 0xff, 0x3b, 0x5b, 0xcf, 0x17, 0x00, 0x9a, 0xc2, 0xda, 0x62, 0x2f, 0x0b, 0x77, + 0x1e, 0x8a, 0xb6, 0x13, 0x29, 0xd8, 0x90, 0x88, 0xd6, 0x20, 0xe7, 0x35, 0x45, 0x0c, 0xc8, 0xd7, + 0x40, 0xf1, 0xe6, 0x76, 0xb6, 0x71, 0xce, 0x6b, 0xda, 0x14, 0x96, 0xcd, 0xfa, 0xf8, 0xd4, 0xbe, + 0xfa, 0x05, 0x58, 0x91, 0xbf, 0xb6, 0x09, 0x73, 0xbc, 0x2e, 0x55, 0xbb, 0xf3, 0x80, 0x62, 0x5f, + 0x69, 0x98, 0x44, 0x9c, 0xe6, 0xb5, 0x7f, 0x91, 0x03, 0xb8, 0x1c, 0x04, 0x1d, 0x85, 0x19, 0x1f, + 0x3d, 0x6b, 0xe2, 0xd1, 0xdb, 0x84, 0x42, 0xc7, 0xf3, 0x9b, 0xd9, 0xc3, 0xb9, 0xeb, 0xf9, 0x4d, + 0x2c, 0x28, 0xe8, 0x02, 0x80, 0x13, 0x7a, 0xcf, 0x92, 0x88, 0xea, 0xc1, 0x74, 0x62, 0x97, 0xad, + 0xfd, 0x1d, 0x45, 0xc1, 0x06, 0x17, 0x7a, 0x54, 0xd5, 0xb2, 0x72, 0xbe, 0x51, 0xce, 0xd4, 0xb2, + 0x25, 0xae, 0xa1, 0x51, 0xac, 0x3e, 0x91, 0x89, 0xa6, 0x9b, 0x23, 0xd1, 0x54, 0xd7, 0xf6, 0xfb, + 0x6d, 0x87, 0x92, 0x71, 0xe7, 0x7a, 0xfe, 0x84, 0x41, 0x5b, 0x03, 0x4a, 0x4f, 0x5f, 0x3f, 0x90, + 0x15, 0x8a, 0x0d, 0x79, 0xcf, 0x91, 0xc1, 0x2b, 0xaf, 0xdd, 0x7e, 0x87, 0xd2, 0xbe, 0xd8, 0x61, + 0x4e, 0x44, 0x0f, 0x43, 0x9e, 0xbc, 0x14, 0x0a, 0xbb, 0xe4, 0x75, 0x80, 0xbb, 0xf8, 0x52, 0xe8, + 0x45, 0x84, 0x72, 0x26, 0xf2, 0x52, 0x68, 0xff, 0xd3, 0x02, 0x3d, 0x3b, 0x44, 0x87, 0x50, 0xe0, + 0xcd, 0xb0, 0x4a, 0x79, 0x97, 0xa7, 0xec, 0xb7, 0xf5, 0x88, 0xb2, 0x24, 0x26, 0xb0, 0x43, 0xdf, + 0xc5, 0x42, 0x3e, 0x1a, 0x40, 0x29, 0x0a, 0xba, 0xdd, 0x1b, 0x8e, 0xdb, 0x99, 0x41, 0xf6, 0xc3, + 0x4a, 0x94, 0xc6, 0x5b, 0x16, 0x41, 0x40, 0x2d, 0xe3, 0x04, 0xcb, 0xfe, 0x5d, 0x11, 0x32, 0x4d, + 0x16, 0xea, 0x9b, 0x63, 0x59, 0x6b, 0x86, 0x63, 0xd9, 0xc4, 0xe2, 0xe3, 0x46, 0xb3, 0xe8, 0x71, + 0x28, 0x86, 0xdc, 0x11, 0x94, 0xdb, 0x6e, 0xc4, 0x09, 0x43, 0x78, 0xc7, 0x18, 0x7f, 0x91, 0xdc, + 0xa6, 0xbb, 0xe4, 0x4f, 0x48, 0x03, 0xdf, 0x94, 0x13, 0x14, 0x35, 0xad, 0x90, 0x91, 0x63, 0x6f, + 0x56, 0x3b, 0xaa, 0x06, 0x16, 0xc9, 0x28, 0x45, 0x8d, 0x29, 0x0c, 0x44, 0xf4, 0x03, 0x0b, 0x56, + 0x63, 0xc3, 0x2b, 0x25, 0x8a, 0x77, 0x45, 0x09, 0xd1, 0x3a, 0xe3, 0x14, 0x12, 0xce, 0x20, 0xa3, + 0xaf, 0xc0, 0x22, 0x65, 0x4e, 0x24, 0x33, 0xe2, 0xfc, 0x6d, 0x47, 0xd1, 0x64, 0x2f, 0x1b, 0xb1, + 0x10, 0xac, 0xe5, 0xa1, 0xe7, 0x00, 0x0e, 0x3d, 0xdf, 0xa3, 0x6d, 0x21, 0x7d, 0xe1, 0xce, 0xf2, + 0xed, 0xa5, 0x44, 0x02, 0x36, 0xa4, 0xd9, 0x3f, 0xb3, 0x00, 0x8d, 0x49, 0x0b, 0x51, 0x5c, 0x1f, + 0xdf, 0x95, 0x8c, 0x3b, 0xb6, 0x54, 0x7e, 0xb2, 0xf4, 0xcb, 0xd7, 0x36, 0xe6, 0x5e, 0x79, 0x67, + 0x73, 0xce, 0xfe, 0x6e, 0x0e, 0x96, 0x8c, 0xcb, 0xb6, 0x53, 0x04, 0xe9, 0xcc, 0xe5, 0x60, 0xee, + 0x94, 0x97, 0x83, 0x8f, 0x40, 0x29, 0x0c, 0xba, 0x9e, 0xeb, 0xa9, 0x04, 0xbd, 0x28, 0x4f, 0xf6, + 0xbe, 0x5a, 0xc3, 0x09, 0x15, 0x31, 0x58, 0xbc, 0x79, 0x8b, 0x89, 0xe0, 0x18, 0x5f, 0x25, 0xd6, + 0xa7, 0x30, 0x4a, 0x1c, 0x68, 0xf5, 0xce, 0xc7, 0x2b, 0x14, 0x6b, 0x20, 0xfb, 0x6f, 0x39, 0x00, + 0x71, 0x17, 0xeb, 0x89, 0xe9, 0xd8, 0x26, 0x14, 0x22, 0x12, 0x06, 0x59, 0x3b, 0x70, 0x0e, 0x2c, + 0x28, 0xa9, 0x66, 0x37, 0x77, 0x5b, 0xcd, 0x6e, 0xfe, 0xc4, 0x66, 0x97, 0xa7, 0x5d, 0xda, 0xde, + 0x8f, 0xbc, 0x81, 0xc3, 0xc8, 0x2e, 0x19, 0xaa, 0xdc, 0xa5, 0xd3, 0x6e, 0xe3, 0xb2, 0x26, 0xe2, + 0x34, 0xef, 0xd8, 0x39, 0x41, 0xf1, 0x3f, 0x38, 0x27, 0x78, 0xdb, 0x82, 0x55, 0x6d, 0xd9, 0xff, + 0xad, 0xeb, 0x7f, 0xad, 0xf7, 0x84, 0xa6, 0xf3, 0x5f, 0x16, 0x9c, 0x89, 0xdb, 0x1b, 0x55, 0xf7, + 0xcc, 0xa4, 0xd0, 0x49, 0x5d, 0xa4, 0xe5, 0x4f, 0xbe, 0x48, 0x33, 0xd3, 0x49, 0xe1, 0x84, 0x74, + 0xf2, 0xc5, 0x4c, 0x89, 0xf3, 0x91, 0x91, 0x12, 0x07, 0x25, 0x8d, 0xdc, 0xd0, 0x77, 0xd3, 0x25, + 0xa1, 0xfd, 0x5b, 0x0b, 0x96, 0x63, 0xf2, 0x5e, 0xd0, 0x14, 0x0d, 0x13, 0x15, 0x4e, 0x66, 0xa5, + 0x1b, 0x26, 0xe9, 0x0e, 0x92, 0x86, 0xfa, 0x50, 0x72, 0xdb, 0x5e, 0xb7, 0x19, 0x11, 0x5f, 0x6d, + 0xcb, 0x53, 0x33, 0xe8, 0x33, 0x39, 0xbe, 0x76, 0x85, 0xba, 0x02, 0xc0, 0x09, 0x94, 0xfd, 0x87, + 0x3c, 0xac, 0xa4, 0x9a, 0x52, 0x1e, 0xbe, 0xe4, 0x4d, 0x56, 0xc3, 0xd0, 0x39, 0x09, 0x5f, 0x07, + 0x9a, 0x84, 0x4d, 0x3e, 0xbe, 0x1f, 0x5d, 0x6f, 0x20, 0x65, 0x64, 0x2f, 0x36, 0xaf, 0xc4, 0x04, + 0xac, 0x79, 0x8c, 0xae, 0x3c, 0x7f, 0xdb, 0x5d, 0xf9, 0xab, 0x16, 0x20, 0xf1, 0x09, 0x5c, 0x72, + 0xd2, 0x3c, 0xab, 0x58, 0x38, 0x33, 0xbb, 0xad, 0x29, 0x8d, 0x50, 0x7d, 0x04, 0x0a, 0x8f, 0x81, + 0x37, 0x86, 0xf5, 0xc5, 0x7b, 0x32, 0xac, 0xb7, 0xbf, 0x01, 0xe7, 0x46, 0xea, 0x41, 0xd5, 0xe5, + 0x58, 0xe3, 0xba, 0x1c, 0xee, 0x89, 0x61, 0xd4, 0xf7, 0xe5, 0x06, 0x95, 0xb4, 0x27, 0xee, 0xf3, + 0x45, 0x2c, 0x69, 0xbc, 0xf5, 0x69, 0x46, 0x43, 0xdc, 0x97, 0xed, 0x43, 0x49, 0xa3, 0x6f, 0x8b, + 0x55, 0xac, 0xa8, 0xf6, 0xaf, 0xf3, 0xb0, 0x92, 0xaa, 0x51, 0x52, 0x5d, 0xaa, 0x75, 0x62, 0x97, + 0x3a, 0x4b, 0x65, 0xd0, 0xcb, 0xb0, 0x4c, 0xc5, 0x51, 0x8c, 0x1c, 0x46, 0x5a, 0xc3, 0x19, 0x5c, + 0x97, 0x34, 0x0c, 0x71, 0xb5, 0xb3, 0xc7, 0x47, 0x1b, 0xcb, 0xe6, 0x0a, 0x4e, 0xc1, 0xa1, 0x9f, + 0x5b, 0x80, 0xc2, 0x71, 0x77, 0xbc, 0xd6, 0x94, 0x15, 0xcb, 0x68, 0x3d, 0x54, 0x7b, 0x90, 0xbb, + 0xe4, 0x98, 0xde, 0x7a, 0x8c, 0x02, 0xf6, 0x6f, 0x72, 0x70, 0xdf, 0x98, 0x3a, 0x12, 0xdd, 0x32, + 0xc7, 0x5a, 0xb2, 0xae, 0x7a, 0x7a, 0x06, 0xc7, 0x46, 0x05, 0x78, 0xf9, 0x37, 0x8d, 0x13, 0x87, + 0x5a, 0x27, 0x0f, 0x32, 0x0e, 0xa1, 0xd8, 0x0e, 0x82, 0x4e, 0x3c, 0xb1, 0x98, 0x26, 0x51, 0xe9, + 0x3e, 0xbb, 0xb6, 0xc8, 0xbd, 0x8c, 0x3f, 0x53, 0x2c, 0xc5, 0xdb, 0xdf, 0xb7, 0xc0, 0xb8, 0x25, + 0x45, 0x5f, 0x87, 0x45, 0xa7, 0xcf, 0x82, 0x9e, 0xc3, 0x48, 0x53, 0xa5, 0xdf, 0xbd, 0x99, 0xdc, + 0xc7, 0x6e, 0xc5, 0x52, 0xa5, 0x85, 0x92, 0x47, 0xac, 0xf1, 0xec, 0x27, 0xe5, 0x8e, 0x65, 0x5e, + 0xd0, 0xa7, 0xc5, 0x9a, 0x7c, 0x5a, 0xec, 0xf7, 0x2d, 0x48, 0x79, 0x29, 0xea, 0x41, 0x91, 0xab, + 0x34, 0x9c, 0xc1, 0x2d, 0xbc, 0x29, 0x77, 0x8b, 0xcb, 0x94, 0x76, 0x14, 0x3f, 0xb1, 0x44, 0x41, + 0x1e, 0x14, 0xb8, 0x41, 0x55, 0x9f, 0xbb, 0x3b, 0x23, 0x34, 0xbe, 0x55, 0xb2, 0xad, 0xe6, 0xbf, + 0xb0, 0x80, 0xb0, 0x9f, 0x80, 0x73, 0x23, 0x1a, 0x71, 0x23, 0x1d, 0x06, 0xf1, 0x9f, 0x0e, 0x0c, + 0x23, 0x5d, 0xe2, 0x8b, 0x58, 0xd2, 0x78, 0x7e, 0x3e, 0x9b, 0x15, 0xcf, 0x0f, 0xf0, 0x39, 0x9a, + 0x95, 0x77, 0x57, 0xac, 0xf6, 0xff, 0x4a, 0xa9, 0x51, 0xf5, 0xf1, 0xa8, 0x06, 0x7c, 0x47, 0xb3, + 0x77, 0x26, 0xfc, 0x0c, 0x79, 0x3e, 0x25, 0x6e, 0x3f, 0x8a, 0x3f, 0x54, 0x4f, 0x45, 0xd4, 0x3a, + 0x4e, 0x38, 0xd0, 0x05, 0x00, 0x79, 0x67, 0xb7, 0xa7, 0x0b, 0xf1, 0x64, 0x22, 0xd4, 0x48, 0x28, + 0xd8, 0xe0, 0xe2, 0xbd, 0x88, 0x4b, 0x22, 0xb6, 0xcd, 0xcb, 0x4f, 0x1e, 0x77, 0x97, 0x65, 0x2f, + 0x52, 0x57, 0x6b, 0x38, 0xa1, 0xa2, 0x8f, 0xc2, 0x42, 0x87, 0x0c, 0x05, 0x63, 0x41, 0x30, 0x2e, + 0xf1, 0x8a, 0x6a, 0x57, 0x2e, 0xe1, 0x98, 0x86, 0x6c, 0x98, 0x77, 0x1d, 0xc1, 0x55, 0x14, 0x5c, + 0x20, 0xae, 0xef, 0xb6, 0x04, 0x93, 0xa2, 0xd4, 0x2a, 0x6f, 0xbc, 0xbb, 0x3e, 0xf7, 0xe6, 0xbb, + 0xeb, 0x73, 0x6f, 0xbd, 0xbb, 0x3e, 0xf7, 0xca, 0xf1, 0xba, 0xf5, 0xc6, 0xf1, 0xba, 0xf5, 0xe6, + 0xf1, 0xba, 0xf5, 0xd6, 0xf1, 0xba, 0xf5, 0x8f, 0xe3, 0x75, 0xeb, 0x27, 0xef, 0xad, 0xcf, 0x3d, + 0x57, 0x8a, 0x4d, 0xfb, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe5, 0x5f, 0xbf, 0x3f, 0x10, 0x2e, + 0x00, 0x00, } diff --git a/pkg/apis/application/v1alpha1/generated.proto b/pkg/apis/application/v1alpha1/generated.proto index 217b48040b1c3..beb7702d5c674 100644 --- a/pkg/apis/application/v1alpha1/generated.proto +++ b/pkg/apis/application/v1alpha1/generated.proto @@ -315,6 +315,15 @@ message OperationState { optional k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 7; } +// ParameterOverrides masks the value so protobuf can generate +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +message ParameterOverrides { + // items, if empty, will result in an empty slice + + repeated ComponentParameter items = 1; +} + // ProjectRole represents a role that has access to a project message ProjectRole { optional string name = 1; @@ -401,6 +410,11 @@ message SyncOperation { // SyncStrategy describes how to perform the sync optional SyncStrategy syncStrategy = 4; + + // ParameterOverrides applies any parameter overrides as part of the sync + // If nil, uses the parameter override set in application. + // If empty, sets no parameter overrides + optional ParameterOverrides parameterOverrides = 5; } // SyncOperationResult represent result of sync operation diff --git a/pkg/apis/application/v1alpha1/types.go b/pkg/apis/application/v1alpha1/types.go index 9b58bce9841c6..f371a12dc3219 100644 --- a/pkg/apis/application/v1alpha1/types.go +++ b/pkg/apis/application/v1alpha1/types.go @@ -2,17 +2,16 @@ package v1alpha1 import ( "encoding/json" + fmt "fmt" + "path/filepath" "reflect" "strings" - "k8s.io/client-go/tools/clientcmd/api" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/watch" "k8s.io/client-go/rest" - - "path/filepath" + "k8s.io/client-go/tools/clientcmd/api" "github.com/argoproj/argo-cd/common" "github.com/argoproj/argo-cd/util/git" @@ -29,6 +28,19 @@ type SyncOperation struct { DryRun bool `json:"dryRun,omitempty" protobuf:"bytes,3,opt,name=dryRun"` // SyncStrategy describes how to perform the sync SyncStrategy *SyncStrategy `json:"syncStrategy,omitempty" protobuf:"bytes,4,opt,name=syncStrategy"` + // ParameterOverrides applies any parameter overrides as part of the sync + // If nil, uses the parameter override set in application. + // If empty, sets no parameter overrides + ParameterOverrides ParameterOverrides `json:"parameterOverrides" protobuf:"bytes,5,opt,name=parameterOverrides"` +} + +// ParameterOverrides masks the value so protobuf can generate +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +type ParameterOverrides []ComponentParameter + +func (po ParameterOverrides) String() string { + return fmt.Sprintf("%v", []ComponentParameter(po)) } type RollbackOperation struct { @@ -236,7 +248,7 @@ type ApplicationSpec struct { // Project is a application project name. Empty name means that application belongs to 'default' project. Project string `json:"project" protobuf:"bytes,3,name=project"` // SyncPolicy controls when a sync will be performed - SyncPolicy *SyncPolicy `json:"syncPolicy" protobuf:"bytes,4,name=syncPolicy"` + SyncPolicy *SyncPolicy `json:"syncPolicy,omitempty" protobuf:"bytes,4,name=syncPolicy"` } // ComponentParameter contains information about component parameter value diff --git a/server/application/application.go b/server/application/application.go index 1984667a1b741..34bacca8c3fb0 100644 --- a/server/application/application.go +++ b/server/application/application.go @@ -720,12 +720,33 @@ func (s *Server) Sync(ctx context.Context, syncReq *ApplicationSyncRequest) (*ap } } + parameterOverrides := make(appv1.ParameterOverrides, 0) + if syncReq.Parameter != nil { + // If parameter overrides are supplied, the caller explicitly states to use the provided + // list of overrides. NOTE: gogo/protobuf cannot currently distinguish between empty arrays + // vs nil arrays, which is why the wrapping syncReq.Parameter is examined for intent. + // See: https://github.com/gogo/protobuf/issues/181 + for _, p := range syncReq.Parameter.Overrides { + parameterOverrides = append(parameterOverrides, appv1.ComponentParameter{ + Name: p.Name, + Value: p.Value, + Component: p.Component, + }) + } + } else { + // If parameter overrides are omitted completely, we use what is set in the application + if a.Spec.Source.ComponentParameterOverrides != nil { + parameterOverrides = appv1.ParameterOverrides(a.Spec.Source.ComponentParameterOverrides) + } + } + op := appv1.Operation{ Sync: &appv1.SyncOperation{ - Revision: syncReq.Revision, - Prune: syncReq.Prune, - DryRun: syncReq.DryRun, - SyncStrategy: syncReq.Strategy, + Revision: syncReq.Revision, + Prune: syncReq.Prune, + DryRun: syncReq.DryRun, + SyncStrategy: syncReq.Strategy, + ParameterOverrides: parameterOverrides, }, } return argo.SetAppOperation(ctx, appIf, s.auditLogger, *syncReq.Name, &op) diff --git a/server/application/application.pb.go b/server/application/application.pb.go index 60dcf4457fe8b..14f5ebc186aa1 100644 --- a/server/application/application.pb.go +++ b/server/application/application.pb.go @@ -51,7 +51,7 @@ func (m *ApplicationQuery) Reset() { *m = ApplicationQuery{} } func (m *ApplicationQuery) String() string { return proto.CompactTextString(m) } func (*ApplicationQuery) ProtoMessage() {} func (*ApplicationQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_application_8d38e2083f155a76, []int{0} + return fileDescriptor_application_139f86dca173329e, []int{0} } func (m *ApplicationQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -115,7 +115,7 @@ func (m *ApplicationResourceEventsQuery) Reset() { *m = ApplicationResou func (m *ApplicationResourceEventsQuery) String() string { return proto.CompactTextString(m) } func (*ApplicationResourceEventsQuery) ProtoMessage() {} func (*ApplicationResourceEventsQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_application_8d38e2083f155a76, []int{1} + return fileDescriptor_application_139f86dca173329e, []int{1} } func (m *ApplicationResourceEventsQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -178,7 +178,7 @@ func (m *ApplicationManifestQuery) Reset() { *m = ApplicationManifestQue func (m *ApplicationManifestQuery) String() string { return proto.CompactTextString(m) } func (*ApplicationManifestQuery) ProtoMessage() {} func (*ApplicationManifestQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_application_8d38e2083f155a76, []int{2} + return fileDescriptor_application_139f86dca173329e, []int{2} } func (m *ApplicationManifestQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -231,7 +231,7 @@ func (m *ApplicationResponse) Reset() { *m = ApplicationResponse{} } func (m *ApplicationResponse) String() string { return proto.CompactTextString(m) } func (*ApplicationResponse) ProtoMessage() {} func (*ApplicationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_application_8d38e2083f155a76, []int{3} + return fileDescriptor_application_139f86dca173329e, []int{3} } func (m *ApplicationResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -272,7 +272,7 @@ func (m *ApplicationCreateRequest) Reset() { *m = ApplicationCreateReque func (m *ApplicationCreateRequest) String() string { return proto.CompactTextString(m) } func (*ApplicationCreateRequest) ProtoMessage() {} func (*ApplicationCreateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_application_8d38e2083f155a76, []int{4} + return fileDescriptor_application_139f86dca173329e, []int{4} } func (m *ApplicationCreateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -326,7 +326,7 @@ func (m *ApplicationUpdateRequest) Reset() { *m = ApplicationUpdateReque func (m *ApplicationUpdateRequest) String() string { return proto.CompactTextString(m) } func (*ApplicationUpdateRequest) ProtoMessage() {} func (*ApplicationUpdateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_application_8d38e2083f155a76, []int{5} + return fileDescriptor_application_139f86dca173329e, []int{5} } func (m *ApplicationUpdateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -374,7 +374,7 @@ func (m *ApplicationDeleteRequest) Reset() { *m = ApplicationDeleteReque func (m *ApplicationDeleteRequest) String() string { return proto.CompactTextString(m) } func (*ApplicationDeleteRequest) ProtoMessage() {} func (*ApplicationDeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_application_8d38e2083f155a76, []int{6} + return fileDescriptor_application_139f86dca173329e, []int{6} } func (m *ApplicationDeleteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -424,6 +424,7 @@ type ApplicationSyncRequest struct { DryRun bool `protobuf:"varint,3,opt,name=dryRun" json:"dryRun"` Prune bool `protobuf:"varint,4,opt,name=prune" json:"prune"` Strategy *v1alpha1.SyncStrategy `protobuf:"bytes,5,opt,name=strategy" json:"strategy,omitempty"` + Parameter *ParameterOverrides `protobuf:"bytes,6,opt,name=parameter" json:"parameter,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -433,7 +434,7 @@ func (m *ApplicationSyncRequest) Reset() { *m = ApplicationSyncRequest{} func (m *ApplicationSyncRequest) String() string { return proto.CompactTextString(m) } func (*ApplicationSyncRequest) ProtoMessage() {} func (*ApplicationSyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_application_8d38e2083f155a76, []int{7} + return fileDescriptor_application_139f86dca173329e, []int{7} } func (m *ApplicationSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -497,6 +498,123 @@ func (m *ApplicationSyncRequest) GetStrategy() *v1alpha1.SyncStrategy { return nil } +func (m *ApplicationSyncRequest) GetParameter() *ParameterOverrides { + if m != nil { + return m.Parameter + } + return nil +} + +type ParameterOverrides struct { + Overrides []*Parameter `protobuf:"bytes,1,rep,name=overrides" json:"overrides,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ParameterOverrides) Reset() { *m = ParameterOverrides{} } +func (m *ParameterOverrides) String() string { return proto.CompactTextString(m) } +func (*ParameterOverrides) ProtoMessage() {} +func (*ParameterOverrides) Descriptor() ([]byte, []int) { + return fileDescriptor_application_139f86dca173329e, []int{8} +} +func (m *ParameterOverrides) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ParameterOverrides) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ParameterOverrides.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *ParameterOverrides) XXX_Merge(src proto.Message) { + xxx_messageInfo_ParameterOverrides.Merge(dst, src) +} +func (m *ParameterOverrides) XXX_Size() int { + return m.Size() +} +func (m *ParameterOverrides) XXX_DiscardUnknown() { + xxx_messageInfo_ParameterOverrides.DiscardUnknown(m) +} + +var xxx_messageInfo_ParameterOverrides proto.InternalMessageInfo + +func (m *ParameterOverrides) GetOverrides() []*Parameter { + if m != nil { + return m.Overrides + } + return nil +} + +type Parameter struct { + Name string `protobuf:"bytes,1,req,name=name" json:"name"` + Value string `protobuf:"bytes,2,opt,name=value" json:"value"` + Component string `protobuf:"bytes,3,opt,name=component" json:"component"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Parameter) Reset() { *m = Parameter{} } +func (m *Parameter) String() string { return proto.CompactTextString(m) } +func (*Parameter) ProtoMessage() {} +func (*Parameter) Descriptor() ([]byte, []int) { + return fileDescriptor_application_139f86dca173329e, []int{9} +} +func (m *Parameter) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Parameter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Parameter.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *Parameter) XXX_Merge(src proto.Message) { + xxx_messageInfo_Parameter.Merge(dst, src) +} +func (m *Parameter) XXX_Size() int { + return m.Size() +} +func (m *Parameter) XXX_DiscardUnknown() { + xxx_messageInfo_Parameter.DiscardUnknown(m) +} + +var xxx_messageInfo_Parameter proto.InternalMessageInfo + +func (m *Parameter) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Parameter) GetValue() string { + if m != nil { + return m.Value + } + return "" +} + +func (m *Parameter) GetComponent() string { + if m != nil { + return m.Component + } + return "" +} + // ApplicationUpdateSpecRequest is a request to update application spec type ApplicationUpdateSpecRequest struct { Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"` @@ -510,7 +628,7 @@ func (m *ApplicationUpdateSpecRequest) Reset() { *m = ApplicationUpdateS func (m *ApplicationUpdateSpecRequest) String() string { return proto.CompactTextString(m) } func (*ApplicationUpdateSpecRequest) ProtoMessage() {} func (*ApplicationUpdateSpecRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_application_8d38e2083f155a76, []int{8} + return fileDescriptor_application_139f86dca173329e, []int{10} } func (m *ApplicationUpdateSpecRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -567,7 +685,7 @@ func (m *ApplicationRollbackRequest) Reset() { *m = ApplicationRollbackR func (m *ApplicationRollbackRequest) String() string { return proto.CompactTextString(m) } func (*ApplicationRollbackRequest) ProtoMessage() {} func (*ApplicationRollbackRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_application_8d38e2083f155a76, []int{9} + return fileDescriptor_application_139f86dca173329e, []int{11} } func (m *ApplicationRollbackRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -638,7 +756,7 @@ func (m *ApplicationDeleteResourceRequest) Reset() { *m = ApplicationDel func (m *ApplicationDeleteResourceRequest) String() string { return proto.CompactTextString(m) } func (*ApplicationDeleteResourceRequest) ProtoMessage() {} func (*ApplicationDeleteResourceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_application_8d38e2083f155a76, []int{10} + return fileDescriptor_application_139f86dca173329e, []int{12} } func (m *ApplicationDeleteResourceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -712,7 +830,7 @@ func (m *ApplicationPodLogsQuery) Reset() { *m = ApplicationPodLogsQuery func (m *ApplicationPodLogsQuery) String() string { return proto.CompactTextString(m) } func (*ApplicationPodLogsQuery) ProtoMessage() {} func (*ApplicationPodLogsQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_application_8d38e2083f155a76, []int{11} + return fileDescriptor_application_139f86dca173329e, []int{13} } func (m *ApplicationPodLogsQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -802,7 +920,7 @@ func (m *LogEntry) Reset() { *m = LogEntry{} } func (m *LogEntry) String() string { return proto.CompactTextString(m) } func (*LogEntry) ProtoMessage() {} func (*LogEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_application_8d38e2083f155a76, []int{12} + return fileDescriptor_application_139f86dca173329e, []int{14} } func (m *LogEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -856,7 +974,7 @@ func (m *OperationTerminateRequest) Reset() { *m = OperationTerminateReq func (m *OperationTerminateRequest) String() string { return proto.CompactTextString(m) } func (*OperationTerminateRequest) ProtoMessage() {} func (*OperationTerminateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_application_8d38e2083f155a76, []int{13} + return fileDescriptor_application_139f86dca173329e, []int{15} } func (m *OperationTerminateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -902,7 +1020,7 @@ func (m *OperationTerminateResponse) Reset() { *m = OperationTerminateRe func (m *OperationTerminateResponse) String() string { return proto.CompactTextString(m) } func (*OperationTerminateResponse) ProtoMessage() {} func (*OperationTerminateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_application_8d38e2083f155a76, []int{14} + return fileDescriptor_application_139f86dca173329e, []int{16} } func (m *OperationTerminateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -940,6 +1058,8 @@ func init() { proto.RegisterType((*ApplicationUpdateRequest)(nil), "application.ApplicationUpdateRequest") proto.RegisterType((*ApplicationDeleteRequest)(nil), "application.ApplicationDeleteRequest") proto.RegisterType((*ApplicationSyncRequest)(nil), "application.ApplicationSyncRequest") + proto.RegisterType((*ParameterOverrides)(nil), "application.ParameterOverrides") + proto.RegisterType((*Parameter)(nil), "application.Parameter") proto.RegisterType((*ApplicationUpdateSpecRequest)(nil), "application.ApplicationUpdateSpecRequest") proto.RegisterType((*ApplicationRollbackRequest)(nil), "application.ApplicationRollbackRequest") proto.RegisterType((*ApplicationDeleteResourceRequest)(nil), "application.ApplicationDeleteResourceRequest") @@ -1838,6 +1958,82 @@ func (m *ApplicationSyncRequest) MarshalTo(dAtA []byte) (int, error) { } i += n3 } + if m.Parameter != nil { + dAtA[i] = 0x32 + i++ + i = encodeVarintApplication(dAtA, i, uint64(m.Parameter.Size())) + n4, err := m.Parameter.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *ParameterOverrides) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ParameterOverrides) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Overrides) > 0 { + for _, msg := range m.Overrides { + dAtA[i] = 0xa + i++ + i = encodeVarintApplication(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *Parameter) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Parameter) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintApplication(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x12 + i++ + i = encodeVarintApplication(dAtA, i, uint64(len(m.Value))) + i += copy(dAtA[i:], m.Value) + dAtA[i] = 0x1a + i++ + i = encodeVarintApplication(dAtA, i, uint64(len(m.Component))) + i += copy(dAtA[i:], m.Component) if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -1870,11 +2066,11 @@ func (m *ApplicationUpdateSpecRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApplication(dAtA, i, uint64(m.Spec.Size())) - n4, err := m.Spec.MarshalTo(dAtA[i:]) + n5, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n4 + i += n5 if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -2012,11 +2208,11 @@ func (m *ApplicationPodLogsQuery) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintApplication(dAtA, i, uint64(m.SinceTime.Size())) - n5, err := m.SinceTime.MarshalTo(dAtA[i:]) + n6, err := m.SinceTime.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n5 + i += n6 } dAtA[i] = 0x30 i++ @@ -2057,11 +2253,11 @@ func (m *LogEntry) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApplication(dAtA, i, uint64(m.TimeStamp.Size())) - n6, err := m.TimeStamp.MarshalTo(dAtA[i:]) + n7, err := m.TimeStamp.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n6 + i += n7 if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -2246,6 +2442,40 @@ func (m *ApplicationSyncRequest) Size() (n int) { l = m.Strategy.Size() n += 1 + l + sovApplication(uint64(l)) } + if m.Parameter != nil { + l = m.Parameter.Size() + n += 1 + l + sovApplication(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *ParameterOverrides) Size() (n int) { + var l int + _ = l + if len(m.Overrides) > 0 { + for _, e := range m.Overrides { + l = e.Size() + n += 1 + l + sovApplication(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *Parameter) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovApplication(uint64(l)) + l = len(m.Value) + n += 1 + l + sovApplication(uint64(l)) + l = len(m.Component) + n += 1 + l + sovApplication(uint64(l)) if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -3290,6 +3520,264 @@ func (m *ApplicationSyncRequest) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Parameter", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApplication + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApplication + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Parameter == nil { + m.Parameter = &ParameterOverrides{} + } + if err := m.Parameter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApplication(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthApplication + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("name") + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ParameterOverrides) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApplication + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ParameterOverrides: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ParameterOverrides: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Overrides", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApplication + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApplication + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Overrides = append(m.Overrides, &Parameter{}) + if err := m.Overrides[len(m.Overrides)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApplication(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthApplication + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Parameter) Unmarshal(dAtA []byte) error { + var hasFields [1]uint64 + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApplication + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Parameter: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Parameter: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApplication + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthApplication + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + hasFields[0] |= uint64(0x00000001) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApplication + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthApplication + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Component", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApplication + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthApplication + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Component = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipApplication(dAtA[iNdEx:]) @@ -4387,92 +4875,97 @@ var ( ) func init() { - proto.RegisterFile("server/application/application.proto", fileDescriptor_application_8d38e2083f155a76) -} - -var fileDescriptor_application_8d38e2083f155a76 = []byte{ - // 1323 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0xcd, 0x6f, 0xdc, 0x44, - 0x14, 0x67, 0x76, 0xb7, 0xf9, 0x78, 0xa9, 0x10, 0x0c, 0x6d, 0x31, 0x26, 0x4d, 0x57, 0x6e, 0x9a, - 0xa6, 0x29, 0xb5, 0x9b, 0x08, 0x09, 0x54, 0x21, 0xa1, 0x86, 0x96, 0x36, 0x28, 0x94, 0xb0, 0x69, - 0x41, 0xe2, 0x82, 0xa6, 0xf6, 0x74, 0x63, 0xb2, 0x3b, 0x63, 0x66, 0x66, 0x17, 0x2d, 0x55, 0x0f, - 0x14, 0xc4, 0x09, 0xa9, 0x42, 0x70, 0xe0, 0x06, 0xf4, 0x8c, 0xb8, 0x70, 0xe7, 0xdc, 0x23, 0x12, - 0xf7, 0x08, 0x45, 0x5c, 0xf9, 0x1f, 0xd0, 0x8c, 0xed, 0xf5, 0xb8, 0xd9, 0x75, 0x0a, 0x2c, 0xb7, - 0xf1, 0x9b, 0x37, 0xef, 0xfd, 0xde, 0xc7, 0xcc, 0xfb, 0xc9, 0xb0, 0x28, 0xa9, 0xe8, 0x53, 0x11, - 0x90, 0x24, 0xe9, 0xc4, 0x21, 0x51, 0x31, 0x67, 0xf6, 0xda, 0x4f, 0x04, 0x57, 0x1c, 0xcf, 0x59, - 0x22, 0xf7, 0x58, 0x9b, 0xb7, 0xb9, 0x91, 0x07, 0x7a, 0x95, 0xaa, 0xb8, 0xf3, 0x6d, 0xce, 0xdb, - 0x1d, 0x1a, 0x90, 0x24, 0x0e, 0x08, 0x63, 0x5c, 0x19, 0x65, 0x99, 0xed, 0x7a, 0xbb, 0xaf, 0x4a, - 0x3f, 0xe6, 0x66, 0x37, 0xe4, 0x82, 0x06, 0xfd, 0xd5, 0xa0, 0x4d, 0x19, 0x15, 0x44, 0xd1, 0x28, - 0xd3, 0x79, 0xb9, 0xd0, 0xe9, 0x92, 0x70, 0x27, 0x66, 0x54, 0x0c, 0x82, 0x64, 0xb7, 0xad, 0x05, - 0x32, 0xe8, 0x52, 0x45, 0x46, 0x9d, 0xda, 0x68, 0xc7, 0x6a, 0xa7, 0x77, 0xdb, 0x0f, 0x79, 0x37, - 0x20, 0xc2, 0x00, 0xfb, 0xc8, 0x2c, 0x2e, 0x84, 0x51, 0x71, 0xda, 0x0e, 0xaf, 0xbf, 0x4a, 0x3a, - 0xc9, 0x0e, 0x39, 0x68, 0x6a, 0xbd, 0xca, 0x94, 0xa0, 0x09, 0xcf, 0x72, 0x65, 0x96, 0xb1, 0xe2, - 0x62, 0x60, 0x2d, 0x53, 0x1b, 0x1e, 0x83, 0x67, 0x2e, 0x17, 0xbe, 0xde, 0xed, 0x51, 0x31, 0xc0, - 0x18, 0x1a, 0x8c, 0x74, 0xa9, 0x83, 0x9a, 0x68, 0x79, 0xb6, 0x65, 0xd6, 0x78, 0x01, 0xa6, 0x05, - 0xbd, 0x23, 0xa8, 0xdc, 0x71, 0x6a, 0x4d, 0xb4, 0x3c, 0xb3, 0xde, 0x78, 0xb4, 0x77, 0xea, 0xa9, - 0x56, 0x2e, 0xc4, 0x4b, 0x30, 0xad, 0xdd, 0xd3, 0x50, 0x39, 0xf5, 0x66, 0x7d, 0x79, 0x76, 0xfd, - 0xe8, 0xfe, 0xde, 0xa9, 0x99, 0xad, 0x54, 0x24, 0x5b, 0xf9, 0xa6, 0xf7, 0x25, 0x82, 0x05, 0xcb, - 0x61, 0x8b, 0x4a, 0xde, 0x13, 0x21, 0xbd, 0xda, 0xa7, 0x4c, 0xc9, 0xc7, 0xdd, 0xd7, 0x86, 0xee, - 0x97, 0xe1, 0xa8, 0xc8, 0x54, 0x6f, 0xe8, 0xbd, 0x9a, 0xde, 0xcb, 0x30, 0x94, 0x76, 0xf0, 0x12, - 0xcc, 0xe5, 0xdf, 0xb7, 0x36, 0xae, 0x38, 0x75, 0x4b, 0xd1, 0xde, 0xf0, 0xb6, 0xc0, 0xb1, 0x70, - 0xbc, 0x4d, 0x58, 0x7c, 0x87, 0x4a, 0x35, 0x1e, 0x41, 0x13, 0x66, 0x04, 0xed, 0xc7, 0x32, 0xe6, - 0xcc, 0x64, 0x20, 0x37, 0x3a, 0x94, 0x7a, 0xc7, 0xe1, 0xb9, 0x72, 0x64, 0x09, 0x67, 0x92, 0x7a, - 0x0f, 0x51, 0xc9, 0xd3, 0x1b, 0x82, 0x12, 0x45, 0x5b, 0xf4, 0xe3, 0x1e, 0x95, 0x0a, 0x33, 0xb0, - 0x5b, 0xd5, 0x38, 0x9c, 0x5b, 0x7b, 0xd3, 0x2f, 0x0a, 0xeb, 0xe7, 0x85, 0x35, 0x8b, 0x0f, 0xc3, - 0xc8, 0x4f, 0x76, 0xdb, 0xbe, 0xee, 0x11, 0xdf, 0x6e, 0xfb, 0xbc, 0x47, 0x7c, 0xcb, 0x53, 0x1e, - 0xb5, 0xa5, 0x87, 0x4f, 0xc0, 0x54, 0x2f, 0x91, 0x54, 0xa8, 0xb4, 0x8a, 0xad, 0xec, 0xcb, 0xfb, - 0xa2, 0x0c, 0xf2, 0x56, 0x12, 0x59, 0x20, 0x77, 0xfe, 0x47, 0x90, 0x25, 0x78, 0xde, 0xf5, 0x12, - 0x8a, 0x2b, 0xb4, 0x43, 0x0b, 0x14, 0xa3, 0x8a, 0xe2, 0xc0, 0x74, 0x48, 0x64, 0x48, 0x22, 0x9a, - 0xc5, 0x93, 0x7f, 0x7a, 0x7f, 0x21, 0x38, 0x61, 0x99, 0xda, 0x1e, 0xb0, 0xb0, 0xca, 0xd0, 0xa1, - 0xd5, 0xc5, 0xf3, 0x30, 0x15, 0x89, 0x41, 0xab, 0xc7, 0x9c, 0xba, 0xd5, 0xff, 0x99, 0x0c, 0xbb, - 0x70, 0x24, 0x11, 0x3d, 0x46, 0x9d, 0x86, 0xb5, 0x99, 0x8a, 0x70, 0x08, 0x33, 0x52, 0xe9, 0x7b, - 0xdb, 0x1e, 0x38, 0x47, 0x9a, 0x68, 0x79, 0x6e, 0xed, 0xda, 0x7f, 0xc8, 0x9d, 0x8e, 0x64, 0x3b, - 0x33, 0xd7, 0x1a, 0x1a, 0xf6, 0xbe, 0x43, 0x30, 0x7f, 0xa0, 0x80, 0xdb, 0x09, 0xad, 0x8c, 0x3a, - 0x82, 0x86, 0x4c, 0x68, 0x68, 0x6e, 0xd3, 0xdc, 0xda, 0x5b, 0x93, 0xa9, 0xa8, 0x76, 0x9a, 0x25, - 0xc0, 0x58, 0xd7, 0x57, 0xde, 0xb5, 0x2b, 0xce, 0x3b, 0x9d, 0xdb, 0x24, 0xdc, 0xad, 0x02, 0xe6, - 0x42, 0x2d, 0x8e, 0x0c, 0xac, 0xfa, 0x3a, 0x68, 0x53, 0xfb, 0x7b, 0xa7, 0x6a, 0x1b, 0x57, 0x5a, - 0xb5, 0x38, 0xfa, 0xf7, 0x85, 0xf0, 0x7e, 0x46, 0xd0, 0x1c, 0xd1, 0x5e, 0xe9, 0x9b, 0x50, 0x05, - 0xe7, 0xc9, 0x5f, 0x9f, 0x35, 0x00, 0x92, 0xc4, 0xef, 0x51, 0x61, 0x3a, 0x29, 0x7d, 0x7c, 0x70, - 0x16, 0x00, 0x5c, 0xde, 0xda, 0xc8, 0x76, 0x5a, 0x96, 0x16, 0x76, 0xa0, 0xb1, 0x1b, 0xb3, 0xc8, - 0x69, 0x58, 0x56, 0x8d, 0xc4, 0xfb, 0xb1, 0x06, 0xcf, 0x5b, 0x80, 0xb7, 0x78, 0xb4, 0xc9, 0xdb, - 0x15, 0xaf, 0xa4, 0x03, 0xd3, 0x09, 0x8f, 0x0a, 0x88, 0xad, 0xfc, 0x13, 0x7b, 0x30, 0x1b, 0x72, - 0xa6, 0x88, 0x1e, 0x52, 0xa5, 0x37, 0xb1, 0x10, 0xeb, 0x28, 0x65, 0xcc, 0x42, 0xba, 0x4d, 0x43, - 0xce, 0x22, 0x69, 0xf0, 0xd4, 0xf3, 0x28, 0xed, 0x1d, 0x7c, 0x1d, 0x66, 0xcd, 0xf7, 0xcd, 0xb8, - 0x4b, 0xb3, 0x96, 0x5e, 0xf1, 0xd3, 0x69, 0xe8, 0xdb, 0xd3, 0xb0, 0x68, 0x1a, 0x3d, 0x0d, 0xfd, - 0xfe, 0xaa, 0xaf, 0x4f, 0xb4, 0x8a, 0xc3, 0x1a, 0x97, 0x22, 0x71, 0x67, 0x33, 0x66, 0x54, 0x3a, - 0x53, 0x96, 0xc3, 0x42, 0xac, 0x0b, 0x7e, 0x87, 0x77, 0x3a, 0xfc, 0x13, 0x67, 0xba, 0x59, 0x2b, - 0x0a, 0x9e, 0xca, 0xbc, 0x4f, 0x61, 0x66, 0x93, 0xb7, 0xaf, 0x32, 0x25, 0x06, 0x7a, 0x48, 0xe9, - 0x70, 0x28, 0x53, 0x69, 0x5a, 0xf2, 0x21, 0x95, 0x09, 0xf1, 0x0d, 0x98, 0x55, 0x71, 0x97, 0x6e, - 0x2b, 0xd2, 0x4d, 0xb2, 0xa6, 0xff, 0x07, 0xb8, 0x87, 0xc8, 0x72, 0x13, 0x5e, 0x00, 0x2f, 0xbc, - 0x93, 0xe8, 0x91, 0x1c, 0x73, 0x76, 0x93, 0x8a, 0x6e, 0xcc, 0x48, 0xe5, 0x7b, 0xe5, 0xcd, 0x83, - 0x3b, 0xea, 0x40, 0x3a, 0x29, 0xd6, 0x3e, 0x7f, 0x16, 0xb0, 0x7d, 0x91, 0xa8, 0xe8, 0xc7, 0x21, - 0xc5, 0x0f, 0x10, 0x34, 0x36, 0x63, 0xa9, 0xf0, 0xc9, 0xd2, 0xdd, 0x7b, 0x7c, 0x6c, 0xbb, 0x13, - 0xba, 0xbf, 0xda, 0x95, 0x37, 0x7f, 0xff, 0xf7, 0x3f, 0xbf, 0xa9, 0x9d, 0xc0, 0xc7, 0x0c, 0x03, - 0xea, 0xaf, 0xda, 0x84, 0x44, 0xe2, 0xaf, 0x10, 0x60, 0xad, 0x56, 0x9e, 0xde, 0xf8, 0xfc, 0x38, - 0x7c, 0x23, 0xa6, 0xbc, 0x7b, 0xd2, 0x4a, 0xbc, 0xaf, 0x29, 0x96, 0x4e, 0xb3, 0x51, 0x30, 0x00, - 0x56, 0x0c, 0x80, 0x45, 0xec, 0x8d, 0x02, 0x10, 0xdc, 0xd5, 0xd9, 0xbc, 0x17, 0xd0, 0xd4, 0xef, - 0xf7, 0x08, 0x8e, 0xbc, 0x4f, 0x54, 0xb8, 0x73, 0x58, 0x86, 0xb6, 0x26, 0x93, 0x21, 0xe3, 0xcb, - 0x40, 0xf5, 0x4e, 0x1b, 0x98, 0x27, 0xf1, 0x8b, 0x39, 0x4c, 0xa9, 0x04, 0x25, 0xdd, 0x12, 0xda, - 0x8b, 0x08, 0x3f, 0x44, 0x30, 0x95, 0x0e, 0x7e, 0x7c, 0x66, 0x1c, 0xc4, 0x12, 0x31, 0x70, 0x27, - 0x34, 0x5e, 0xbd, 0x73, 0x06, 0xe0, 0x69, 0x6f, 0x64, 0x21, 0x2f, 0x95, 0xb8, 0xc1, 0xd7, 0x08, - 0xea, 0xd7, 0xe8, 0xa1, 0x6d, 0x36, 0x29, 0x64, 0x07, 0x52, 0x37, 0xa2, 0xc2, 0xf8, 0x3e, 0x82, - 0xa3, 0xd7, 0xa8, 0xca, 0xe9, 0x99, 0x1c, 0x9f, 0xbe, 0x12, 0x83, 0x73, 0xe7, 0x7d, 0x8b, 0xe9, - 0xe6, 0x5b, 0x43, 0x4a, 0x76, 0xc1, 0xb8, 0x3e, 0x8b, 0xcf, 0x54, 0x35, 0x57, 0x77, 0xe8, 0xf3, - 0x57, 0x04, 0x53, 0xe9, 0x40, 0x1d, 0xef, 0xbe, 0xc4, 0x98, 0x26, 0x96, 0xa3, 0xab, 0x06, 0xe8, - 0xeb, 0xee, 0xc5, 0xd1, 0x40, 0xed, 0xf3, 0xfa, 0xa5, 0x8a, 0x88, 0x22, 0xbe, 0x41, 0x5f, 0xae, - 0xec, 0x2f, 0x08, 0xa0, 0x60, 0x04, 0xf8, 0x5c, 0x75, 0x10, 0x16, 0x6b, 0x70, 0x27, 0xc8, 0x09, - 0x3c, 0xdf, 0x04, 0xb3, 0xec, 0x36, 0xab, 0xb2, 0xae, 0x19, 0xc3, 0x25, 0xc3, 0x1b, 0x70, 0x1f, - 0xa6, 0xd2, 0x11, 0x3d, 0x3e, 0xeb, 0x25, 0x86, 0xe8, 0x36, 0x2b, 0xde, 0x9f, 0xb4, 0xf0, 0x59, - 0xcf, 0xad, 0x54, 0xf6, 0xdc, 0x0f, 0x08, 0x1a, 0x9a, 0x65, 0xe1, 0xd3, 0xe3, 0xec, 0x59, 0x6c, - 0x72, 0x62, 0xa5, 0x3e, 0x6f, 0xa0, 0x9d, 0xf1, 0xaa, 0xb3, 0x33, 0x60, 0xe1, 0x25, 0xb4, 0x82, - 0x7f, 0x42, 0x30, 0x93, 0xf3, 0x28, 0x7c, 0x76, 0x6c, 0xd8, 0x65, 0xa6, 0x35, 0x31, 0xa8, 0x81, - 0x81, 0x7a, 0xce, 0x5b, 0xac, 0x82, 0x2a, 0x32, 0xe7, 0x1a, 0xee, 0xb7, 0x08, 0xf0, 0x70, 0xdc, - 0x0d, 0x07, 0x20, 0x5e, 0x2a, 0xb9, 0x1a, 0x3b, 0x49, 0xdd, 0xb3, 0x87, 0xea, 0x95, 0xef, 0xf5, - 0x4a, 0xe5, 0xbd, 0xe6, 0x43, 0xff, 0x0f, 0x10, 0x3c, 0x5d, 0x26, 0x81, 0xf8, 0xc2, 0x61, 0x9d, - 0x56, 0x22, 0x8b, 0x4f, 0xd0, 0x71, 0x2f, 0x19, 0x48, 0x4b, 0x2b, 0xd5, 0xb9, 0xca, 0xdd, 0x7f, - 0x86, 0x60, 0x3a, 0x63, 0x79, 0x78, 0x71, 0x9c, 0x6d, 0x9b, 0x06, 0xba, 0xc7, 0x4b, 0x5a, 0x39, - 0x13, 0xf2, 0x5e, 0x31, 0x6e, 0x57, 0x71, 0x50, 0xe5, 0x36, 0xe1, 0x91, 0x0c, 0xee, 0x66, 0x14, - 0xf1, 0x5e, 0xd0, 0xe1, 0x6d, 0x79, 0x11, 0xad, 0xbf, 0xf6, 0x68, 0x7f, 0x01, 0xfd, 0xb6, 0xbf, - 0x80, 0xfe, 0xd8, 0x5f, 0x40, 0x1f, 0xf8, 0x55, 0xff, 0x18, 0x0e, 0xfe, 0x8b, 0xf9, 0x3b, 0x00, - 0x00, 0xff, 0xff, 0x23, 0x18, 0x5a, 0x1f, 0xa0, 0x11, 0x00, 0x00, + proto.RegisterFile("server/application/application.proto", fileDescriptor_application_139f86dca173329e) +} + +var fileDescriptor_application_139f86dca173329e = []byte{ + // 1407 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0xcf, 0x6f, 0xdc, 0x44, + 0x14, 0x66, 0x76, 0x37, 0x9b, 0xec, 0x4b, 0x85, 0x60, 0x68, 0x83, 0x31, 0x69, 0xb2, 0x9a, 0xa6, + 0xe9, 0x36, 0xa5, 0x76, 0x13, 0x55, 0x02, 0x55, 0x20, 0xd4, 0xd0, 0xd2, 0xa6, 0x0a, 0x6d, 0x70, + 0x5a, 0x90, 0xb8, 0xa0, 0xa9, 0x3d, 0xdd, 0x35, 0xd9, 0xf5, 0x98, 0xb1, 0x77, 0xd1, 0x52, 0xf5, + 0x40, 0x41, 0x9c, 0x90, 0x2a, 0x04, 0x07, 0x6e, 0x40, 0xcf, 0x15, 0x17, 0xee, 0x9c, 0x7b, 0x44, + 0xe2, 0x5e, 0xa1, 0x88, 0x3f, 0x04, 0xcd, 0xd8, 0x5e, 0x8f, 0x9b, 0x5d, 0xa7, 0xc0, 0x72, 0x1b, + 0xbf, 0x79, 0xf3, 0xde, 0xf7, 0x7e, 0xcc, 0xbc, 0x4f, 0x86, 0x95, 0x88, 0x89, 0x01, 0x13, 0x36, + 0x0d, 0xc3, 0xae, 0xef, 0xd2, 0xd8, 0xe7, 0x81, 0xbe, 0xb6, 0x42, 0xc1, 0x63, 0x8e, 0xe7, 0x35, + 0x91, 0x79, 0xb4, 0xcd, 0xdb, 0x5c, 0xc9, 0x6d, 0xb9, 0x4a, 0x54, 0xcc, 0xc5, 0x36, 0xe7, 0xed, + 0x2e, 0xb3, 0x69, 0xe8, 0xdb, 0x34, 0x08, 0x78, 0xac, 0x94, 0xa3, 0x74, 0x97, 0xec, 0xbd, 0x11, + 0x59, 0x3e, 0x57, 0xbb, 0x2e, 0x17, 0xcc, 0x1e, 0xac, 0xdb, 0x6d, 0x16, 0x30, 0x41, 0x63, 0xe6, + 0xa5, 0x3a, 0xe7, 0x73, 0x9d, 0x1e, 0x75, 0x3b, 0x7e, 0xc0, 0xc4, 0xd0, 0x0e, 0xf7, 0xda, 0x52, + 0x10, 0xd9, 0x3d, 0x16, 0xd3, 0x71, 0xa7, 0xb6, 0xda, 0x7e, 0xdc, 0xe9, 0xdf, 0xb6, 0x5c, 0xde, + 0xb3, 0xa9, 0x50, 0xc0, 0x3e, 0x51, 0x8b, 0xb3, 0xae, 0x97, 0x9f, 0xd6, 0xc3, 0x1b, 0xac, 0xd3, + 0x6e, 0xd8, 0xa1, 0x07, 0x4d, 0x6d, 0x96, 0x99, 0x12, 0x2c, 0xe4, 0x69, 0xae, 0xd4, 0xd2, 0x8f, + 0xb9, 0x18, 0x6a, 0xcb, 0xc4, 0x06, 0x09, 0xe0, 0x85, 0x8b, 0xb9, 0xaf, 0xf7, 0xfb, 0x4c, 0x0c, + 0x31, 0x86, 0x5a, 0x40, 0x7b, 0xcc, 0x40, 0x4d, 0xd4, 0x6a, 0x38, 0x6a, 0x8d, 0x97, 0x60, 0x56, + 0xb0, 0x3b, 0x82, 0x45, 0x1d, 0xa3, 0xd2, 0x44, 0xad, 0xb9, 0xcd, 0xda, 0xe3, 0x27, 0xcb, 0xcf, + 0x39, 0x99, 0x10, 0xaf, 0xc2, 0xac, 0x74, 0xcf, 0xdc, 0xd8, 0xa8, 0x36, 0xab, 0xad, 0xc6, 0xe6, + 0x91, 0xfd, 0x27, 0xcb, 0x73, 0x3b, 0x89, 0x28, 0x72, 0xb2, 0x4d, 0xf2, 0x35, 0x82, 0x25, 0xcd, + 0xa1, 0xc3, 0x22, 0xde, 0x17, 0x2e, 0xbb, 0x3c, 0x60, 0x41, 0x1c, 0x3d, 0xed, 0xbe, 0x32, 0x72, + 0xdf, 0x82, 0x23, 0x22, 0x55, 0xbd, 0x2e, 0xf7, 0x2a, 0x72, 0x2f, 0xc5, 0x50, 0xd8, 0xc1, 0xab, + 0x30, 0x9f, 0x7d, 0xdf, 0xda, 0xba, 0x64, 0x54, 0x35, 0x45, 0x7d, 0x83, 0xec, 0x80, 0xa1, 0xe1, + 0x78, 0x8f, 0x06, 0xfe, 0x1d, 0x16, 0xc5, 0x93, 0x11, 0x34, 0x61, 0x4e, 0xb0, 0x81, 0x1f, 0xf9, + 0x3c, 0x50, 0x19, 0xc8, 0x8c, 0x8e, 0xa4, 0xe4, 0x18, 0xbc, 0x54, 0x8c, 0x2c, 0xe4, 0x41, 0xc4, + 0xc8, 0x43, 0x54, 0xf0, 0xf4, 0x8e, 0x60, 0x34, 0x66, 0x0e, 0xfb, 0xb4, 0xcf, 0xa2, 0x18, 0x07, + 0xa0, 0xb7, 0xaa, 0x72, 0x38, 0xbf, 0xf1, 0xae, 0x95, 0x17, 0xd6, 0xca, 0x0a, 0xab, 0x16, 0x1f, + 0xbb, 0x9e, 0x15, 0xee, 0xb5, 0x2d, 0xd9, 0x23, 0x96, 0xde, 0xf6, 0x59, 0x8f, 0x58, 0x9a, 0xa7, + 0x2c, 0x6a, 0x4d, 0x0f, 0x2f, 0x40, 0xbd, 0x1f, 0x46, 0x4c, 0xc4, 0x49, 0x15, 0x9d, 0xf4, 0x8b, + 0x7c, 0x55, 0x04, 0x79, 0x2b, 0xf4, 0x34, 0x90, 0x9d, 0xff, 0x11, 0x64, 0x01, 0x1e, 0xb9, 0x5a, + 0x40, 0x71, 0x89, 0x75, 0x59, 0x8e, 0x62, 0x5c, 0x51, 0x0c, 0x98, 0x75, 0x69, 0xe4, 0x52, 0x8f, + 0xa5, 0xf1, 0x64, 0x9f, 0xe4, 0x51, 0x05, 0x16, 0x34, 0x53, 0xbb, 0xc3, 0xc0, 0x2d, 0x33, 0x74, + 0x68, 0x75, 0xf1, 0x22, 0xd4, 0x3d, 0x31, 0x74, 0xfa, 0x81, 0x51, 0xd5, 0xfa, 0x3f, 0x95, 0x61, + 0x13, 0x66, 0x42, 0xd1, 0x0f, 0x98, 0x51, 0xd3, 0x36, 0x13, 0x11, 0x76, 0x61, 0x2e, 0x8a, 0xe5, + 0xbd, 0x6d, 0x0f, 0x8d, 0x99, 0x26, 0x6a, 0xcd, 0x6f, 0x5c, 0xf9, 0x0f, 0xb9, 0x93, 0x91, 0xec, + 0xa6, 0xe6, 0x9c, 0x91, 0x61, 0xfc, 0x16, 0x34, 0x42, 0x2a, 0x68, 0x8f, 0xc5, 0x4c, 0x18, 0x75, + 0xe5, 0x65, 0xb9, 0x60, 0x60, 0x27, 0xdb, 0xbd, 0x31, 0x60, 0x42, 0xf8, 0x1e, 0x8b, 0x9c, 0xfc, + 0x04, 0xb9, 0x06, 0xf8, 0xa0, 0x02, 0x3e, 0x0f, 0x0d, 0x9e, 0x7d, 0x18, 0xa8, 0x59, 0x6d, 0xcd, + 0x6f, 0x2c, 0x8c, 0x37, 0xea, 0xe4, 0x8a, 0x84, 0x41, 0x63, 0x24, 0xc7, 0x86, 0x9e, 0xec, 0x34, + 0x2f, 0x49, 0xca, 0x4d, 0x98, 0x19, 0xd0, 0x6e, 0x9f, 0x15, 0xf2, 0x9d, 0x88, 0x30, 0x81, 0x86, + 0xcb, 0x7b, 0x21, 0x0f, 0x58, 0x10, 0xab, 0x7c, 0x67, 0xfb, 0xb9, 0x98, 0xfc, 0x80, 0x60, 0xf1, + 0x40, 0xcb, 0xee, 0x86, 0xac, 0xb4, 0xce, 0x1e, 0xd4, 0xa2, 0x90, 0xb9, 0xea, 0xfd, 0x98, 0xdf, + 0xb8, 0x36, 0x9d, 0x1e, 0x96, 0x4e, 0xb3, 0xd0, 0xa4, 0x75, 0xf9, 0xc8, 0x99, 0x7a, 0x8f, 0xf3, + 0x6e, 0xf7, 0x36, 0x75, 0xf7, 0xca, 0x80, 0x99, 0x50, 0xf1, 0x3d, 0x05, 0xab, 0xba, 0x09, 0xd2, + 0xd4, 0xfe, 0x93, 0xe5, 0xca, 0xd6, 0x25, 0xa7, 0xe2, 0x7b, 0xff, 0xbe, 0xf5, 0xc8, 0x2f, 0x08, + 0x9a, 0x63, 0x2e, 0x54, 0xf2, 0x0a, 0x96, 0xc1, 0x79, 0xf6, 0xf7, 0x76, 0x03, 0x80, 0x86, 0xfe, + 0x07, 0x4c, 0xa8, 0xbb, 0x93, 0x3c, 0xb7, 0x38, 0x0d, 0x00, 0x2e, 0xee, 0x6c, 0xa5, 0x3b, 0x8e, + 0xa6, 0x25, 0x9b, 0x62, 0xcf, 0x0f, 0x3c, 0xa3, 0xa6, 0x37, 0x85, 0x94, 0x90, 0x9f, 0x2b, 0xf0, + 0xb2, 0x06, 0x78, 0x87, 0x7b, 0xdb, 0xbc, 0x5d, 0x32, 0x17, 0x0c, 0x98, 0x0d, 0xb9, 0x97, 0x43, + 0x74, 0xb2, 0xcf, 0xa4, 0x85, 0x82, 0x98, 0xca, 0xb1, 0x5c, 0x98, 0x02, 0xb9, 0x58, 0x46, 0x19, + 0xf9, 0x81, 0xcb, 0x76, 0x99, 0xcb, 0x03, 0x2f, 0x52, 0x78, 0xaa, 0x59, 0x94, 0xfa, 0x0e, 0xbe, + 0x0a, 0x0d, 0xf5, 0x7d, 0xd3, 0xef, 0xb1, 0xf4, 0x12, 0xaf, 0x59, 0xc9, 0xfc, 0xb7, 0xf4, 0xf9, + 0x9f, 0x37, 0x8d, 0x9c, 0xff, 0xd6, 0x60, 0xdd, 0x92, 0x27, 0x9c, 0xfc, 0xb0, 0xc4, 0x15, 0x53, + 0xbf, 0xbb, 0xed, 0x07, 0x2c, 0x32, 0xea, 0x9a, 0xc3, 0x5c, 0x2c, 0x0b, 0x7e, 0x87, 0x77, 0xbb, + 0xfc, 0x33, 0x63, 0xb6, 0x59, 0xc9, 0x0b, 0x9e, 0xc8, 0xc8, 0xe7, 0x30, 0xb7, 0xcd, 0xdb, 0x97, + 0x83, 0x58, 0x0c, 0xe5, 0x58, 0x96, 0xe1, 0xc8, 0x6b, 0xa2, 0xdf, 0xb0, 0x4c, 0x88, 0xaf, 0x43, + 0x23, 0xf6, 0x7b, 0x6c, 0x37, 0xa6, 0xbd, 0x30, 0x6d, 0xfa, 0x7f, 0x80, 0x7b, 0x84, 0x2c, 0x33, + 0x41, 0x6c, 0x78, 0xe5, 0x46, 0x28, 0x49, 0x88, 0xcf, 0x83, 0x9b, 0x4c, 0xf4, 0xfc, 0x80, 0x96, + 0xbe, 0xd0, 0x64, 0x11, 0xcc, 0x71, 0x07, 0x92, 0xd9, 0xb8, 0xf1, 0xe5, 0x8b, 0x80, 0xf5, 0x8b, + 0xc4, 0xc4, 0xc0, 0x77, 0x19, 0x7e, 0x80, 0xa0, 0xb6, 0xed, 0x47, 0x31, 0x3e, 0x5e, 0xb8, 0x7b, + 0x4f, 0x13, 0x15, 0x73, 0x4a, 0xf7, 0x57, 0xba, 0x22, 0x8b, 0xf7, 0xff, 0xf8, 0xeb, 0xbb, 0xca, + 0x02, 0x3e, 0xaa, 0x38, 0xdf, 0x60, 0x5d, 0xa7, 0x60, 0x11, 0xfe, 0x06, 0x01, 0x96, 0x6a, 0x45, + 0xbe, 0x82, 0xcf, 0x4c, 0xc2, 0x37, 0x86, 0xd7, 0x98, 0xc7, 0xb5, 0xc4, 0x5b, 0x92, 0x54, 0xca, + 0x34, 0x2b, 0x05, 0x05, 0x60, 0x4d, 0x01, 0x58, 0xc1, 0x64, 0x1c, 0x00, 0xfb, 0xae, 0xcc, 0xe6, + 0x3d, 0x9b, 0x25, 0x7e, 0x7f, 0x44, 0x30, 0xf3, 0x21, 0x8d, 0xdd, 0xce, 0x61, 0x19, 0xda, 0x99, + 0x4e, 0x86, 0x94, 0x2f, 0x05, 0x95, 0x9c, 0x50, 0x30, 0x8f, 0xe3, 0x57, 0x33, 0x98, 0x51, 0x2c, + 0x18, 0xed, 0x15, 0xd0, 0x9e, 0x43, 0xf8, 0x21, 0x82, 0x7a, 0x42, 0x75, 0xf0, 0xc9, 0x49, 0x10, + 0x0b, 0x54, 0xc8, 0x9c, 0x12, 0xa1, 0x20, 0xa7, 0x15, 0xc0, 0x13, 0x64, 0x6c, 0x21, 0x2f, 0x14, + 0xd8, 0xd0, 0xb7, 0x08, 0xaa, 0x57, 0xd8, 0xa1, 0x6d, 0x36, 0x2d, 0x64, 0x07, 0x52, 0x37, 0xa6, + 0xc2, 0xf8, 0x3e, 0x82, 0x23, 0x57, 0x58, 0x9c, 0x11, 0xd2, 0x68, 0x72, 0xfa, 0x0a, 0x9c, 0xd5, + 0x5c, 0xb4, 0x34, 0x6e, 0x9f, 0x6d, 0x8d, 0x48, 0xe8, 0x59, 0xe5, 0xfa, 0x14, 0x3e, 0x59, 0xd6, + 0x5c, 0xbd, 0x91, 0xcf, 0xdf, 0x10, 0xd4, 0x93, 0x81, 0x3a, 0xd9, 0x7d, 0x81, 0x23, 0x4e, 0x2d, + 0x47, 0x97, 0x15, 0xd0, 0xb7, 0xcd, 0x73, 0xe3, 0x81, 0xea, 0xe7, 0xe5, 0x4b, 0xe5, 0xd1, 0x98, + 0x5a, 0x0a, 0x7d, 0xb1, 0xb2, 0xbf, 0x22, 0x80, 0x9c, 0x11, 0xe0, 0xd3, 0xe5, 0x41, 0x68, 0xac, + 0xc1, 0x9c, 0x22, 0x27, 0x20, 0x96, 0x0a, 0xa6, 0x65, 0x36, 0xcb, 0xb2, 0x2e, 0x19, 0xc3, 0x05, + 0xc5, 0x1b, 0xf0, 0x00, 0xea, 0xc9, 0x88, 0x9e, 0x9c, 0xf5, 0x02, 0x27, 0x36, 0x9b, 0x25, 0xef, + 0x4f, 0x52, 0xf8, 0xb4, 0xe7, 0xd6, 0x4a, 0x7b, 0xee, 0x27, 0x04, 0x35, 0xc9, 0x2b, 0xf1, 0x89, + 0x49, 0xf6, 0x34, 0xfe, 0x3c, 0xb5, 0x52, 0x9f, 0x51, 0xd0, 0x4e, 0x92, 0xf2, 0xec, 0x0c, 0x03, + 0xf7, 0x02, 0x5a, 0xc3, 0x8f, 0x10, 0xcc, 0x65, 0x3c, 0x0a, 0x9f, 0x9a, 0x18, 0x76, 0x91, 0x69, + 0x4d, 0x0d, 0xaa, 0xad, 0xa0, 0x9e, 0x26, 0x2b, 0x65, 0x50, 0x45, 0xea, 0x5c, 0xc2, 0xfd, 0x1e, + 0x01, 0x1e, 0x8d, 0xbb, 0xd1, 0x00, 0xc4, 0xab, 0x05, 0x57, 0x13, 0x27, 0xa9, 0x79, 0xea, 0x50, + 0xbd, 0xe2, 0xbd, 0x5e, 0x2b, 0xbd, 0xd7, 0x7c, 0xe4, 0xff, 0x01, 0x82, 0xe7, 0x8b, 0x24, 0x10, + 0x9f, 0x3d, 0xac, 0xd3, 0x0a, 0x64, 0xf1, 0x19, 0x3a, 0xee, 0x35, 0x05, 0x69, 0x75, 0xad, 0x3c, + 0x57, 0x99, 0xfb, 0x2f, 0x10, 0xcc, 0xa6, 0x2c, 0x0f, 0xaf, 0x4c, 0xb2, 0xad, 0xd3, 0x40, 0xf3, + 0x58, 0x41, 0x2b, 0x63, 0x42, 0xe4, 0x75, 0xe5, 0x76, 0x1d, 0xdb, 0x65, 0x6e, 0x43, 0xee, 0x45, + 0xf6, 0xdd, 0x94, 0x22, 0xde, 0xb3, 0xbb, 0xbc, 0x1d, 0x9d, 0x43, 0x9b, 0x6f, 0x3e, 0xde, 0x5f, + 0x42, 0xbf, 0xef, 0x2f, 0xa1, 0x3f, 0xf7, 0x97, 0xd0, 0x47, 0x56, 0xd9, 0x5f, 0x95, 0x83, 0x7f, + 0x9f, 0xfe, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x3d, 0xe7, 0xbe, 0x98, 0x92, 0x12, 0x00, 0x00, } diff --git a/server/application/application.proto b/server/application/application.proto index f2615efece836..64b88535bc612 100644 --- a/server/application/application.proto +++ b/server/application/application.proto @@ -57,6 +57,19 @@ message ApplicationSyncRequest { optional bool dryRun = 3 [(gogoproto.nullable) = false]; optional bool prune = 4 [(gogoproto.nullable) = false]; optional github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.SyncStrategy strategy = 5; + optional ParameterOverrides parameter = 6; +} + +// ParameterOverrides is a wrapper on a list of parameters. If omitted, the application's overrides +// in the spec will be used. If set, will use the supplied list of overrides +message ParameterOverrides { + repeated Parameter overrides = 1; +} + +message Parameter { + required string name = 1 [(gogoproto.nullable) = false]; + optional string value = 2 [(gogoproto.nullable) = false]; + optional string component = 3 [(gogoproto.nullable) = false]; } // ApplicationUpdateSpecRequest is a request to update application spec diff --git a/server/swagger.json b/server/swagger.json index 3fc076577e759..87ded3169c1a9 100644 --- a/server/swagger.json +++ b/server/swagger.json @@ -1313,6 +1313,9 @@ "name": { "type": "string" }, + "parameter": { + "$ref": "#/definitions/applicationParameterOverrides" + }, "prune": { "type": "boolean", "format": "boolean" @@ -1339,6 +1342,43 @@ "applicationOperationTerminateResponse": { "type": "object" }, + "applicationParameter": { + "type": "object", + "properties": { + "component": { + "type": "string" + }, + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "applicationParameterOverrides": { + "type": "object", + "properties": { + "overrides": { + "type": "array", + "items": { + "$ref": "#/definitions/applicationParameter" + } + } + } + }, + "applicationv1alpha1ParameterOverrides": { + "type": "object", + "title": "ParameterOverrides masks the value so protobuf can generate\n+protobuf.nullable=true\n+protobuf.options.(gogoproto.goproto_stringer)=false", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ComponentParameter" + } + } + } + }, "clusterClusterCreateFromKubeConfigRequest": { "type": "object", "properties": { @@ -2587,6 +2627,9 @@ "format": "boolean", "title": "DryRun will perform a `kubectl apply --dry-run` without actually performing the sync" }, + "parameterOverrides": { + "$ref": "#/definitions/applicationv1alpha1ParameterOverrides" + }, "prune": { "type": "boolean", "format": "boolean", diff --git a/test/e2e/functional/always-outofsync/always-outofsync.yaml b/test/e2e/functional/always-outofsync/always-outofsync.yaml new file mode 100644 index 0000000000000..8f9a9eb9c2e85 --- /dev/null +++ b/test/e2e/functional/always-outofsync/always-outofsync.yaml @@ -0,0 +1,15 @@ +# This manifest will always be out of sync because the empty string for apiGroup will get defaulted +# to rbac.authorization.k8s.io by kubernetes, resulting in a difference. This manifest is useful for +# testing auto-sync and ensuring sure it does not fall into a sync loop. +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: always-outofsync +subjects: +- apiGroup: "" + kind: User + name: jane +roleRef: + apiGroup: "" + kind: Role + name: doesnt-matter diff --git a/test/e2e/functional/always-outofsync/kustomization.yaml b/test/e2e/functional/always-outofsync/kustomization.yaml new file mode 100644 index 0000000000000..efa70e918dd8f --- /dev/null +++ b/test/e2e/functional/always-outofsync/kustomization.yaml @@ -0,0 +1,2 @@ +resources: +- always-outofsync.yaml diff --git a/test/e2e/functional/app.yaml b/test/e2e/functional/app.yaml deleted file mode 100644 index a7224f3c19e32..0000000000000 --- a/test/e2e/functional/app.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: my-app -spec: - source: - targetRevision: abc123 - repoURL: http://my-git-repo.git - path: apps/elk - environment: prod/us-west-2 diff --git a/test/e2e/functional/cluster.yaml b/test/e2e/functional/cluster.yaml deleted file mode 100644 index 3705b5c7a563e..0000000000000 --- a/test/e2e/functional/cluster.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Cluster -metadata: - name: production -spec: - server: "http://1.2.3.4" diff --git a/test/e2e/functional/crd-creation/crd.yaml b/test/e2e/functional/crd-creation/crd.yaml index 63ad7481ef330..4163ffd38d712 100644 --- a/test/e2e/functional/crd-creation/crd.yaml +++ b/test/e2e/functional/crd-creation/crd.yaml @@ -2,26 +2,17 @@ apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: - name: workflows.argoproj.io + name: dummy-crd.argoproj.io spec: group: argoproj.io version: v1alpha1 scope: Namespaced names: - kind: Workflow - plural: workflows - shortNames: - - wf + kind: Dummy + plural: dummies --- apiVersion: argoproj.io/v1alpha1 -kind: Workflow +kind: Dummy metadata: - name: hello-world -spec: - entrypoint: whalesay - templates: - - name: whalesay - container: - image: docker/whalesay:latest - command: [cowsay] - args: ["hello world"] + name: dummy-crd-instance + diff --git a/test/e2e/functional/crd-creation/kustomization.yaml b/test/e2e/functional/crd-creation/kustomization.yaml new file mode 100644 index 0000000000000..1d3cbf0f893c2 --- /dev/null +++ b/test/e2e/functional/crd-creation/kustomization.yaml @@ -0,0 +1,2 @@ +resources: +- crd.yaml diff --git a/test/e2e/functional/failure-during-sync/failure-during-sync.yaml b/test/e2e/functional/failure-during-sync/failure-during-sync.yaml new file mode 100644 index 0000000000000..b6e7a71ebfe55 --- /dev/null +++ b/test/e2e/functional/failure-during-sync/failure-during-sync.yaml @@ -0,0 +1,8 @@ +# This manifest will fail to sync because the spec is invalid. This manifest is useful for testing +# auto-sync and ensuring sure it does not fall into a sync loop. +apiVersion: v1 +kind: ServiceAccount +metadata: + name: failure-during-sync + labels: + my-label: has-inva/id-character! diff --git a/test/e2e/functional/failure-during-sync/kustomization.yaml b/test/e2e/functional/failure-during-sync/kustomization.yaml new file mode 100644 index 0000000000000..e9cfade9bf73d --- /dev/null +++ b/test/e2e/functional/failure-during-sync/kustomization.yaml @@ -0,0 +1,2 @@ +resources: +- failure-during-sync.yaml