Repository: argoproj/argo-cd
Pull request #4724 (2020-11-02 04:38:27)

chore: helm2 verison bump
upgrading to 2.17.0

#4511

Checklist:

* [x] The title of the PR states what changed and the related issues number (used for the release note).




Patch:
diff --git a/Makefile b/Makefile
index a74f658bc..ca01033e4 100644
--- a/Makefile
+++ b/Makefile
@@ -383,7 +383,7 @@ start-e2e-local:
 	ARGOCD_ZJWT_FEATURE_FLAG=always \
 	ARGOCD_IN_CI=$(ARGOCD_IN_CI) \
 	ARGOCD_E2E_TEST=true \
-		goreman -f $(ARGOCD_PROCFILE) start
+		goreman -f $(ARGOCD_PROCFILE) start ${ARGOCD_START}
 
 # Cleans VSCode debug.test files from sub-dirs to prevent them from being included in packr boxes
 .PHONY: clean-debug
diff --git a/USERS.md b/USERS.md
index bcb6eee61..f1c92a65a 100644
--- a/USERS.md
+++ b/USERS.md
@@ -51,6 +51,7 @@ Currently, the following organizations are **officially** using Argo CD:
 1. [MOO Print](https://www.moo.com/)
 1. [Nikkei](https://www.nikkei.co.jp/nikkeiinfo/en/)
 1. [OpenSaaS Studio](https://opensaas.studio)
+1. [Opensurvey](https://www.opensurvey.co.kr/)
 1. [Optoro](https://www.optoro.com/)
 1. [Peloton Interactive](https://www.onepeloton.com/)
 1. [Pipefy](https://www.pipefy.com/)
diff --git a/assets/swagger.json b/assets/swagger.json
index d79da45bd..6c81f4694 100644
--- a/assets/swagger.json
+++ b/assets/swagger.json
@@ -124,7 +124,7 @@
           "AccountService"
         ],
         "summary": "CreateToken creates a token",
-        "operationId": "CreateToken",
+        "operationId": "CreateTokenMixin10",
         "parameters": [
           {
             "type": "string",
@@ -157,7 +157,7 @@
           "AccountService"
         ],
         "summary": "DeleteToken deletes a token",
-        "operationId": "DeleteToken",
+        "operationId": "DeleteTokenMixin10",
         "parameters": [
           {
             "type": "string",
@@ -400,7 +400,7 @@
           "ApplicationService"
         ],
         "summary": "Get returns an application by name",
-        "operationId": "Get",
+        "operationId": "GetMixin1",
         "parameters": [
           {
             "type": "string",
@@ -1162,7 +1162,7 @@
           "ClusterService"
         ],
         "summary": "List returns list of clusters",
-        "operationId": "ListMixin3",
+        "operationId": "ListMixin5",
         "parameters": [
           {
             "type": "string",
@@ -1189,7 +1189,7 @@
           "ClusterService"
         ],
         "summary": "Create creates a cluster",
-        "operationId": "CreateMixin3",
+        "operationId": "CreateMixin5",
         "parameters": [
           {
             "name": "body",
@@ -1216,7 +1216,7 @@
           "ClusterService"
         ],
         "summary": "Update updates a cluster",
-        "operationId": "UpdateMixin3",
+        "operationId": "UpdateMixin5",
         "parameters": [
           {
             "type": "string",
@@ -1250,7 +1250,7 @@
           "ClusterService"
         ],
         "summary": "Get returns a cluster by server address",
-        "operationId": "GetMixin3",
+        "operationId": "GetMixin5",
         "parameters": [
           {
             "type": "string",
@@ -1278,7 +1278,7 @@
           "ClusterService"
         ],
         "summary": "Delete deletes a cluster",
-        "operationId": "DeleteMixin3",
+        "operationId": "DeleteMixin5",
         "parameters": [
           {
             "type": "string",
@@ -1358,7 +1358,7 @@
           "GPGKeyService"
         ],
         "summary": "List all available repository certificates",
-        "operationId": "ListMixin4",
+        "operationId": "ListMixin2",
         "parameters": [
           {
             "type": "string",
@@ -1381,7 +1381,7 @@
           "GPGKeyService"
         ],
         "summary": "Create one or more GPG public keys in the server's configuration",
-        "operationId": "CreateMixin4",
+        "operationId": "CreateMixin2",
         "parameters": [
           {
             "description": "Raw key data of the GPG key(s) to create",
@@ -1407,7 +1407,7 @@
           "GPGKeyService"
         ],
         "summary": "Delete specified GPG public key from the server's configuration",
-        "operationId": "DeleteMixin4",
+        "operationId": "DeleteMixin2",
         "parameters": [
           {
             "type": "string",
@@ -1432,7 +1432,7 @@
           "GPGKeyService"
         ],
         "summary": "Get information about specified GPG public key from the server",
-        "operationId": "GetMixin4",
+        "operationId": "GetMixin2",
         "parameters": [
           {
             "type": "string",
@@ -1458,7 +1458,7 @@
           "ProjectService"
         ],
         "summary": "List returns list of projects",
-        "operationId": "ListMixin5",
+        "operationId": "ListMixin6",
         "parameters": [
           {
             "type": "string",
@@ -1480,7 +1480,7 @@
           "ProjectService"
         ],
         "summary": "Create a new project",
-        "operationId": "CreateMixin5",
+        "operationId": "CreateMixin6",
         "parameters": [
           {
             "name": "body",
@@ -1507,7 +1507,7 @@
           "ProjectService"
         ],
         "summary": "Get returns a project by name",
-        "operationId": "GetMixin5",
+        "operationId": "GetMixin6",
         "parameters": [
           {
             "type": "string",
@@ -1530,7 +1530,7 @@
           "ProjectService"
         ],
         "summary": "Delete deletes a project",
-        "operationId": "DeleteMixin5",
+        "operationId": "DeleteMixin6",
         "parameters": [
           {
             "type": "string",
@@ -1630,7 +1630,7 @@
           "ProjectService"
         ],
         "summary": "Update updates a project",
-        "operationId": "UpdateMixin5",
+        "operationId": "UpdateMixin6",
         "parameters": [
           {
             "type": "string",
@@ -1664,7 +1664,7 @@
           "ProjectService"
         ],
         "summary": "Create a new project token",
-        "operationId": "CreateTokenMixin5",
+        "operationId": "CreateToken",
         "parameters": [
           {
             "type": "string",
@@ -1703,7 +1703,7 @@
           "ProjectService"
         ],
         "summary": "Delete a new project token",
-        "operationId": "DeleteTokenMixin5",
+        "operationId": "DeleteToken",
         "parameters": [
           {
             "type": "string",
@@ -1948,7 +1948,7 @@
           "RepositoryService"
         ],
         "summary": "Get returns a repository or its credentials",
-        "operationId": "GetMixin7",
+        "operationId": "Get",
         "parameters": [
           {
             "type": "string",
@@ -2011,7 +2011,7 @@
         "tags": [
           "RepositoryService"
         ],
-        "summary": "ListApps returns list of apps in the repo",
+        "summary": "ListApps returns list of apps in the repe",
         "operationId": "ListApps",
         "parameters": [
           {
@@ -2176,7 +2176,7 @@
           "SessionService"
         ],
         "summary": "Create a new JWT for authentication and set a cookie if using HTTP",
-        "operationId": "CreateMixin8",
+        "operationId": "CreateMixin11",
         "parameters": [
           {
             "name": "body",
@@ -2201,7 +2201,7 @@
           "SessionService"
         ],
         "summary": "Delete an existing JWT cookie if using HTTP",
-        "operationId": "DeleteMixin8",
+        "operationId": "DeleteMixin11",
         "responses": {
           "200": {
             "description": "A successful response.",
@@ -2235,7 +2235,7 @@
           "SettingsService"
         ],
         "summary": "Get returns Argo CD settings",
-        "operationId": "GetMixin10",
+        "operationId": "GetMixin8",
         "responses": {
           "200": {
             "description": "A successful response.",
@@ -3868,6 +3868,9 @@
     "v1alpha1ApplicationSourceDirectory": {
       "type": "object",
       "properties": {
+        "exclude": {
+          "type": "string"
+        },
         "jsonnet": {
           "$ref": "#/definitions/v1alpha1ApplicationSourceJsonnet"
         },
diff --git a/cmd/argocd/commands/app.go b/cmd/argocd/commands/app.go
index 47ea5e11a..54d3a89d6 100644
--- a/cmd/argocd/commands/app.go
+++ b/cmd/argocd/commands/app.go
@@ -541,7 +541,17 @@ func setAppSpecOptions(flags *pflag.FlagSet, spec *argoappv1.ApplicationSpec, ap
 		case "helm-set-file":
 			setHelmOpt(&spec.Source, helmOpts{helmSetFiles: appOpts.helmSetFiles})
 		case "directory-recurse":
-			spec.Source.Directory = &argoappv1.ApplicationSourceDirectory{Recurse: appOpts.directoryRecurse}
+			if spec.Source.Directory != nil {
+				spec.Source.Directory.Recurse = appOpts.directoryRecurse
+			} else {
+				spec.Source.Directory = &argoappv1.ApplicationSourceDirectory{Recurse: appOpts.directoryRecurse}
+			}
+		case "directory-exclude":
+			if spec.Source.Directory != nil {
+				spec.Source.Directory.Exclude = appOpts.directoryExclude
+			} else {
+				spec.Source.Directory = &argoappv1.ApplicationSourceDirectory{Exclude: appOpts.directoryExclude}
+			}
 		case "config-management-plugin":
 			spec.Source.Plugin = &argoappv1.ApplicationSourcePlugin{Name: appOpts.configManagementPlugin}
 		case "dest-name":
@@ -797,6 +807,7 @@ type appOptions struct {
 	kustomizeCommonLabels      []string
 	kustomizeCommonAnnotations []string
 	validate                   bool
+	directoryExclude           string
 }
 
 func addAppFlags(command *cobra.Command, opts *appOptions) {
@@ -837,6 +848,7 @@ func addAppFlags(command *cobra.Command, opts *appOptions) {
 	command.Flags().BoolVar(&opts.validate, "validate", true, "Validation of repo and cluster")
 	command.Flags().StringArrayVar(&opts.kustomizeCommonLabels, "kustomize-common-label", []string{}, "Set common labels in Kustomize")
 	command.Flags().StringArrayVar(&opts.kustomizeCommonAnnotations, "kustomize-common-annotation", []string{}, "Set common labels in Kustomize")
+	command.Flags().StringVar(&opts.directoryExclude, "directory-exclude", "", "Set glob expression used to exclude files from application source path")
 }
 
 // NewApplicationUnsetCommand returns a new instance of an `argocd app unset` command
@@ -2335,7 +2347,7 @@ func filterResources(command *cobra.Command, resources []*argoappv1.ResourceDiff
 		if resourceName != "" && resourceName != obj.GetName() {
 			continue
 		}
-		if kind != gvk.Kind {
+		if kind != "" && kind != gvk.Kind {
 			continue
 		}
 		deepCopy := obj.DeepCopy()
diff --git a/cmd/argocd/commands/app_actions.go b/cmd/argocd/commands/app_actions.go
index eb00ed6b3..f9c629313 100644
--- a/cmd/argocd/commands/app_actions.go
+++ b/cmd/argocd/commands/app_actions.go
@@ -100,7 +100,6 @@ func NewApplicationResourceActionsListCommand(clientOpts *argocdclient.ClientOpt
 		case "":
 			w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
 			fmt.Fprintf(w, "GROUP\tKIND\tNAME\tACTION\tDISABLED\n")
-			fmt.Println()
 			for _, action := range availableActions {
 				fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%s\n", action.Group, action.Kind, action.Name, action.Action, strconv.FormatBool(action.Disabled))
 			}
diff --git a/cmd/argocd/commands/project.go b/cmd/argocd/commands/project.go
index b88f2fe21..dfb9d0e6a 100644
--- a/cmd/argocd/commands/project.go
+++ b/cmd/argocd/commands/project.go
@@ -564,9 +564,9 @@ func modifyResourceListCmd(cmdUse, cmdDesc string, clientOpts *argocdclient.Clie
 		defaultList string
 	)
 	if namespacedList {
-		defaultList = "black"
+		defaultList = "deny"
 	} else {
-		defaultList = "white"
+		defaultList = "allow"
 	}
 	var command = &cobra.Command{
 		Use:   cmdUse,
@@ -582,24 +582,24 @@ func modifyResourceListCmd(cmdUse, cmdDesc string, clientOpts *argocdclient.Clie
 
 			proj, err := projIf.Get(context.Background(), &projectpkg.ProjectQuery{Name: projName})
 			errors.CheckError(err)
-			var list, white, black *[]metav1.GroupKind
+			var list, allowList, denyList *[]metav1.GroupKind
 			var listAction, listDesc string
 			var add bool
 			if namespacedList {
-				white, black = &proj.Spec.NamespaceResourceWhitelist, &proj.Spec.NamespaceResourceBlacklist
+				allowList, denyList = &proj.Spec.NamespaceResourceWhitelist, &proj.Spec.NamespaceResourceBlacklist
 				listDesc = "namespaced"
 			} else {
-				white, black = &proj.Spec.ClusterResourceWhitelist, &proj.Spec.ClusterResourceBlacklist
+				allowList, denyList = &proj.Spec.ClusterResourceWhitelist, &proj.Spec.ClusterResourceBlacklist
 				listDesc = "cluster"
 			}
 
-			if listType == "white" {
-				list = white
-				listAction = "whitelisted"
+			if (listType == "allow") || (listType == "white") {
+				list = allowList
+				listAction = "allowed"
 				add = allow
 			} else {
-				list = black
-				listAction = "blacklisted"
+				list = denyList
+				listAction = "denied"
 				add = !allow
 			}
 
@@ -609,35 +609,35 @@ func modifyResourceListCmd(cmdUse, cmdDesc string, clientOpts *argocdclient.Clie
 			}
 		},
 	}
-	command.Flags().StringVarP(&listType, "list", "l", defaultList, "Use blacklist or whitelist. This can only be 'white' or 'black'")
+	command.Flags().StringVarP(&listType, "list", "l", defaultList, "Use deny list or allow list. This can only be 'allow' or 'deny'")
 	return command
 }
 
 // NewProjectAllowNamespaceResourceCommand returns a new instance of an `deny-cluster-resources` command
 func NewProjectAllowNamespaceResourceCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
 	use := "allow-namespace-resource PROJECT GROUP KIND"
-	desc := "Removes a namespaced API resource from the blacklist or add a namespaced API resource to the whitelist"
+	desc := "Removes a namespaced API resource from the deny list or add a namespaced API resource to the allow list"
 	return modifyResourceListCmd(use, desc, clientOpts, true, true)
 }
 
 // NewProjectDenyNamespaceResourceCommand returns a new instance of an `argocd proj deny-namespace-resource` command
 func NewProjectDenyNamespaceResourceCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
 	use := "deny-namespace-resource PROJECT GROUP KIND"
-	desc := "Adds a namespaced API resource to the blacklist or removes a namespaced API resource from the whitelist"
+	desc := "Adds a namespaced API resource to the deny list or removes a namespaced API resource from the allow list"
 	return modifyResourceListCmd(use, desc, clientOpts, false, true)
 }
 
 // NewProjectDenyClusterResourceCommand returns a new instance of an `deny-cluster-resource` command
 func NewProjectDenyClusterResourceCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
 	use := "deny-cluster-resource PROJECT GROUP KIND"
-	desc := "Removes a cluster-scoped API resource from the whitelist and adds it to blacklist"
+	desc := "Removes a cluster-scoped API resource from the allow list and adds it to deny list"
 	return modifyResourceListCmd(use, desc, clientOpts, false, false)
 }
 
 // NewProjectAllowClusterResourceCommand returns a new instance of an `argocd proj allow-cluster-resource` command
 func NewProjectAllowClusterResourceCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command {
 	use := "allow-cluster-resource PROJECT GROUP KIND"
-	desc := "Adds a cluster-scoped API resource to the whitelist and removes it from blacklist"
+	desc := "Adds a cluster-scoped API resource to the allow list and removes it from deny list"
 	return modifyResourceListCmd(use, desc, clientOpts, true, false)
 }
 
@@ -800,7 +800,7 @@ func printProjectLine(w io.Writer, p *v1alpha1.AppProject) {
 }
 
 func printProject(p *v1alpha1.AppProject) {
-	const printProjFmtStr = "%-34s%s\n"
+	const printProjFmtStr = "%-29s%s\n"
 
 	fmt.Printf(printProjFmtStr, "Name:", p.Name)
 	fmt.Printf(printProjFmtStr, "Description:", p.Spec.Description)
@@ -825,22 +825,22 @@ func printProject(p *v1alpha1.AppProject) {
 		fmt.Printf(printProjFmtStr, "", p.Spec.SourceRepos[i])
 	}
 
-	// Print whitelisted cluster resources
+	// Print allowed cluster resources
 	cwl0 := "<none>"
 	if len(p.Spec.ClusterResourceWhitelist) > 0 {
 		cwl0 = fmt.Sprintf("%s/%s", p.Spec.ClusterResourceWhitelist[0].Group, p.Spec.ClusterResourceWhitelist[0].Kind)
 	}
-	fmt.Printf(printProjFmtStr, "Whitelisted Cluster Resources:", cwl0)
+	fmt.Printf(printProjFmtStr, "Allowed Cluster Resources:", cwl0)
 	for i := 1; i < len(p.Spec.ClusterResourceWhitelist); i++ {
 		fmt.Printf(printProjFmtStr, "", fmt.Sprintf("%s/%s", p.Spec.ClusterResourceWhitelist[i].Group, p.Spec.ClusterResourceWhitelist[i].Kind))
 	}
 
-	// Print blacklisted namespaced resources
+	// Print denied namespaced resources
 	rbl0 := "<none>"
 	if len(p.Spec.NamespaceResourceBlacklist) > 0 {
 		rbl0 = fmt.Sprintf("%s/%s", p.Spec.NamespaceResourceBlacklist[0].Group, p.Spec.NamespaceResourceBlacklist[0].Kind)
 	}
-	fmt.Printf(printProjFmtStr, "Blacklisted Namespaced Resources:", rbl0)
+	fmt.Printf(printProjFmtStr, "Denied Namespaced Resources:", rbl0)
 	for i := 1; i < len(p.Spec.NamespaceResourceBlacklist); i++ {
 		fmt.Printf(printProjFmtStr, "", fmt.Sprintf("%s/%s", p.Spec.NamespaceResourceBlacklist[i].Group, p.Spec.NamespaceResourceBlacklist[i].Kind))
 	}
diff --git a/controller/appcontroller.go b/controller/appcontroller.go
index 52e0e70cf..565d851e0 100644
--- a/controller/appcontroller.go
+++ b/controller/appcontroller.go
@@ -228,7 +228,7 @@ func (ctrl *ApplicationController) getAppProj(app *appv1.Application) (*appv1.Ap
 func (ctrl *ApplicationController) handleObjectUpdated(managedByApp map[string]bool, ref v1.ObjectReference) {
 	// if namespaced resource is not managed by any app it might be orphaned resource of some other apps
 	if len(managedByApp) == 0 && ref.Namespace != "" {
-		// retrieve applications which monitor orphaned resources in the same namespace and refresh them unless resource is blacklisted in app project
+		// retrieve applications which monitor orphaned resources in the same namespace and refresh them unless resource is denied in app project
 		if objs, err := ctrl.appInformer.GetIndexer().ByIndex(orphanedIndex, ref.Namespace); err == nil {
 			for i := range objs {
 				app, ok := objs[i].(*appv1.Application)
diff --git a/controller/sync.go b/controller/sync.go
index dedfc71c3..cdef70220 100644
--- a/controller/sync.go
+++ b/controller/sync.go
@@ -3,6 +3,8 @@ package controller
 import (
 	"context"
 	"fmt"
+	"os"
+	"strconv"
 	"sync/atomic"
 	"time"
 
@@ -26,6 +28,12 @@ import (
 
 var syncIdPrefix uint64 = 0
 
+const (
+	// EnvVarSyncWaveDelay is an environment variable which controls the delay in seconds between
+	// each sync-wave
+	EnvVarSyncWaveDelay = "ARGOCD_SYNC_WAVE_DELAY"
+)
+
 func (m *appStateManager) SyncAppState(app *v1alpha1.Application, state *v1alpha1.OperationState) {
 	// 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
@@ -158,6 +166,7 @@ func (m *appStateManager) SyncAppState(app *v1alpha1.Application, state *v1alpha
 			}
 			return false
 		}),
+		sync.WithSyncWaveHook(delayBetweenSyncWaves),
 	)
 
 	if err != nil {
@@ -200,3 +209,25 @@ func (m *appStateManager) SyncAppState(app *v1alpha1.Application, state *v1alpha
 		}
 	}
 }
+
+// delayBetweenSyncWaves is a gitops-engine SyncWaveHook which introduces an artificial delay
+// between each sync wave. We introduce an artificial delay in order give other controllers a
+// _chance_ to react to the spec change that we just applied. This is important because without
+// this, Argo CD will likely assess resource health too quickly (against the stale object), causing
+// hooks to fire prematurely. See: https://github.com/argoproj/argo-cd/issues/4669.
+// Note, this is not foolproof, since a proper fix would require the CRD record
+// status.observedGeneration coupled with a health.lua that verifies
+// status.observedGeneration == metadata.generation
+func delayBetweenSyncWaves(phase common.SyncPhase, wave int, finalWave bool) error {
+	if !finalWave {
+		delaySec := 2
+		if delaySecStr := os.Getenv(EnvVarSyncWaveDelay); delaySecStr != "" {
+			if val, err := strconv.Atoi(delaySecStr); err == nil {
+				delaySec = val
+			}
+		}
+		duration := time.Duration(delaySec) * time.Second
+		time.Sleep(duration)
+	}
+	return nil
+}
diff --git a/docs/user-guide/commands/argocd_app_create.md b/docs/user-guide/commands/argocd_app_create.md
index cd5208600..a9fb38859 100644
--- a/docs/user-guide/commands/argocd_app_create.md
+++ b/docs/user-guide/commands/argocd_app_create.md
@@ -43,6 +43,7 @@ argocd app create APPNAME [flags]
       --dest-name string                          K8s cluster Name (e.g. minikube)
       --dest-namespace string                     K8s target namespace (overrides the namespace specified in the ksonnet app.yaml)
       --dest-server string                        K8s cluster URL (e.g. https://kubernetes.default.svc)
+      --directory-exclude string                  Set glob expression used to exclude files from application source path
       --directory-recurse                         Recurse directory
       --env string                                Application environment to monitor
   -f, --file string                               Filename or URL to Kubernetes manifests for the app
diff --git a/docs/user-guide/commands/argocd_app_set.md b/docs/user-guide/commands/argocd_app_set.md
index 8726bfb7d..04c99b7d1 100644
--- a/docs/user-guide/commands/argocd_app_set.md
+++ b/docs/user-guide/commands/argocd_app_set.md
@@ -19,6 +19,7 @@ argocd app set APPNAME [flags]
       --dest-name string                          K8s cluster Name (e.g. minikube)
       --dest-namespace string                     K8s target namespace (overrides the namespace specified in the ksonnet app.yaml)
       --dest-server string                        K8s cluster URL (e.g. https://kubernetes.default.svc)
+      --directory-exclude string                  Set glob expression used to exclude files from application source path
       --directory-recurse                         Recurse directory
       --env string                                Application environment to monitor
       --helm-chart string                         Helm Chart name
diff --git a/docs/user-guide/commands/argocd_proj.md b/docs/user-guide/commands/argocd_proj.md
index 8ea5f18ea..1098c8a5a 100644
--- a/docs/user-guide/commands/argocd_proj.md
+++ b/docs/user-guide/commands/argocd_proj.md
@@ -43,12 +43,12 @@ argocd proj [flags]
 * [argocd proj add-orphaned-ignore](argocd_proj_add-orphaned-ignore.md)	 - Add a resource to orphaned ignore list
 * [argocd proj add-signature-key](argocd_proj_add-signature-key.md)	 - Add GnuPG signature key to project
 * [argocd proj add-source](argocd_proj_add-source.md)	 - Add project source repository
-* [argocd proj allow-cluster-resource](argocd_proj_allow-cluster-resource.md)	 - Adds a cluster-scoped API resource to the whitelist and removes it from blacklist
-* [argocd proj allow-namespace-resource](argocd_proj_allow-namespace-resource.md)	 - Removes a namespaced API resource from the blacklist or add a namespaced API resource to the whitelist
+* [argocd proj allow-cluster-resource](argocd_proj_allow-cluster-resource.md)	 - Adds a cluster-scoped API resource to the allow list and removes it from deny list
+* [argocd proj allow-namespace-resource](argocd_proj_allow-namespace-resource.md)	 - Removes a namespaced API resource from the deny list or add a namespaced API resource to the allow list
 * [argocd proj create](argocd_proj_create.md)	 - Create a project
 * [argocd proj delete](argocd_proj_delete.md)	 - Delete project
-* [argocd proj deny-cluster-resource](argocd_proj_deny-cluster-resource.md)	 - Removes a cluster-scoped API resource from the whitelist and adds it to blacklist
-* [argocd proj deny-namespace-resource](argocd_proj_deny-namespace-resource.md)	 - Adds a namespaced API resource to the blacklist or removes a namespaced API resource from the whitelist
+* [argocd proj deny-cluster-resource](argocd_proj_deny-cluster-resource.md)	 - Removes a cluster-scoped API resource from the allow list and adds it to deny list
+* [argocd proj deny-namespace-resource](argocd_proj_deny-namespace-resource.md)	 - Adds a namespaced API resource to the deny list or removes a namespaced API resource from the allow list
 * [argocd proj edit](argocd_proj_edit.md)	 - Edit project
 * [argocd proj get](argocd_proj_get.md)	 - Get project details
 * [argocd proj list](argocd_proj_list.md)	 - List projects
diff --git a/docs/user-guide/commands/argocd_proj_allow-cluster-resource.md b/docs/user-guide/commands/argocd_proj_allow-cluster-resource.md
index f5a4e1d24..abdce755f 100644
--- a/docs/user-guide/commands/argocd_proj_allow-cluster-resource.md
+++ b/docs/user-guide/commands/argocd_proj_allow-cluster-resource.md
@@ -1,10 +1,10 @@
 ## argocd proj allow-cluster-resource
 
-Adds a cluster-scoped API resource to the whitelist and removes it from blacklist
+Adds a cluster-scoped API resource to the allow list and removes it from deny list
 
 ### Synopsis
 
-Adds a cluster-scoped API resource to the whitelist and removes it from blacklist
+Adds a cluster-scoped API resource to the allow list and removes it from deny list
 
 ```
 argocd proj allow-cluster-resource PROJECT GROUP KIND [flags]
@@ -14,7 +14,7 @@ argocd proj allow-cluster-resource PROJECT GROUP KIND [flags]
 
 ```
   -h, --help          help for allow-cluster-resource
-  -l, --list string   Use blacklist or whitelist. This can only be 'white' or 'black' (default "white")
+  -l, --list string   Use deny list or allow list. This can only be 'allow' or 'deny' (default "allow")
 ```
 
 ### Options inherited from parent commands
diff --git a/docs/user-guide/commands/argocd_proj_allow-namespace-resource.md b/docs/user-guide/commands/argocd_proj_allow-namespace-resource.md
index c064f2669..9ec543b12 100644
--- a/docs/user-guide/commands/argocd_proj_allow-namespace-resource.md
+++ b/docs/user-guide/commands/argocd_proj_allow-namespace-resource.md
@@ -1,10 +1,10 @@
 ## argocd proj allow-namespace-resource
 
-Removes a namespaced API resource from the blacklist or add a namespaced API resource to the whitelist
+Removes a namespaced API resource from the deny list or add a namespaced API resource to the allow list
 
 ### Synopsis
 
-Removes a namespaced API resource from the blacklist or add a namespaced API resource to the whitelist
+Removes a namespaced API resource from the deny list or add a namespaced API resource to the allow list
 
 ```
 argocd proj allow-namespace-resource PROJECT GROUP KIND [flags]
@@ -14,7 +14,7 @@ argocd proj allow-namespace-resource PROJECT GROUP KIND [flags]
 
 ```
   -h, --help          help for allow-namespace-resource
-  -l, --list string   Use blacklist or whitelist. This can only be 'white' or 'black' (default "black")
+  -l, --list string   Use deny list or allow list. This can only be 'allow' or 'deny' (default "deny")
 ```
 
 ### Options inherited from parent commands
diff --git a/docs/user-guide/commands/argocd_proj_deny-cluster-resource.md b/docs/user-guide/commands/argocd_proj_deny-cluster-resource.md
index 7f35a0bd1..1893dc14c 100644
--- a/docs/user-guide/commands/argocd_proj_deny-cluster-resource.md
+++ b/docs/user-guide/commands/argocd_proj_deny-cluster-resource.md
@@ -1,10 +1,10 @@
 ## argocd proj deny-cluster-resource
 
-Removes a cluster-scoped API resource from the whitelist and adds it to blacklist
+Removes a cluster-scoped API resource from the allow list and adds it to deny list
 
 ### Synopsis
 
-Removes a cluster-scoped API resource from the whitelist and adds it to blacklist
+Removes a cluster-scoped API resource from the allow list and adds it to deny list
 
 ```
 argocd proj deny-cluster-resource PROJECT GROUP KIND [flags]
@@ -14,7 +14,7 @@ argocd proj deny-cluster-resource PROJECT GROUP KIND [flags]
 
 ```
   -h, --help          help for deny-cluster-resource
-  -l, --list string   Use blacklist or whitelist. This can only be 'white' or 'black' (default "white")
+  -l, --list string   Use deny list or allow list. This can only be 'allow' or 'deny' (default "allow")
 ```
 
 ### Options inherited from parent commands
diff --git a/docs/user-guide/commands/argocd_proj_deny-namespace-resource.md b/docs/user-guide/commands/argocd_proj_deny-namespace-resource.md
index 3a03f7e15..2bb7aa572 100644
--- a/docs/user-guide/commands/argocd_proj_deny-namespace-resource.md
+++ b/docs/user-guide/commands/argocd_proj_deny-namespace-resource.md
@@ -1,10 +1,10 @@
 ## argocd proj deny-namespace-resource
 
-Adds a namespaced API resource to the blacklist or removes a namespaced API resource from the whitelist
+Adds a namespaced API resource to the deny list or removes a namespaced API resource from the allow list
 
 ### Synopsis
 
-Adds a namespaced API resource to the blacklist or removes a namespaced API resource from the whitelist
+Adds a namespaced API resource to the deny list or removes a namespaced API resource from the allow list
 
 ```
 argocd proj deny-namespace-resource PROJECT GROUP KIND [flags]
@@ -14,7 +14,7 @@ argocd proj deny-namespace-resource PROJECT GROUP KIND [flags]
 
 ```
   -h, --help          help for deny-namespace-resource
-  -l, --list string   Use blacklist or whitelist. This can only be 'white' or 'black' (default "black")
+  -l, --list string   Use deny list or allow list. This can only be 'allow' or 'deny' (default "deny")
 ```
 
 ### Options inherited from parent commands
diff --git a/docs/user-guide/gpg-verification.md b/docs/user-guide/gpg-verification.md
index c3cc722de..8d370d41c 100644
--- a/docs/user-guide/gpg-verification.md
+++ b/docs/user-guide/gpg-verification.md
@@ -187,14 +187,14 @@ output of the `argocd proj get` command, i.e for a project named `gpg`:
 
 ```bash
 $ argocd proj get gpg
-Name:                             gpg
-Description:                      GnuPG verification
-Destinations:                     *,*
-Repositories:                     *
-Whitelisted Cluster Resources:    */*
-Blacklisted Namespaced Resources: <none>
-Signature keys:                   4AEE18F83AFDEB23, 07E34825A909B250
-Orphaned Resources:               disabled
+Name:                        gpg
+Description:                 GnuPG verification
+Destinations:                *,*
+Repositories:                *
+Allowed Cluster Resources:   */*
+Denied Namespaced Resources: <none>
+Signature keys:              4AEE18F83AFDEB23, 07E34825A909B250
+Orphaned Resources:          disabled
 ```
 
 #### Override list of key IDs
diff --git a/docs/user-guide/orphaned-resources.md b/docs/user-guide/orphaned-resources.md
index 45ad2d70b..8e4cf0d89 100644
--- a/docs/user-guide/orphaned-resources.md
+++ b/docs/user-guide/orphaned-resources.md
@@ -14,6 +14,6 @@ Before enabling feature you might consider disabling warning. In this case appli
 
 Not every resource in the Kubernetes cluster is controlled by the end user. Following resources are never considered as orphaned:
 
-* Namespaced resources blacklisted in the project. Usually, such resources are managed by cluster administrators and not supposed to be modified by namespace user.
+* Namespaced resources denied in the project. Usually, such resources are managed by cluster administrators and not supposed to be modified by namespace user.
 * `ServiceAccount` with name `default` ( and corresponding auto-generated `ServiceAccountToken` ).
 * `Service` with name `kubernetes` in the `default` namespace.
diff --git a/docs/user-guide/parameters.md b/docs/user-guide/parameters.md
index 0e017b89b..41a2994d6 100644
--- a/docs/user-guide/parameters.md
+++ b/docs/user-guide/parameters.md
@@ -15,15 +15,15 @@ changes to the manifests in Git.
 To use parameter overrides, run the `argocd app set -p (COMPONENT=)PARAM=VALUE` command:
 
 ```bash
-argocd app set guestbook -p guestbook=image=example/guestbook:abcd123
+argocd app set guestbook -p image=example/guestbook:abcd123
 argocd app sync guestbook
 ```
 
 The `PARAM` is expected to be a normal YAML path
 
 ```bash
-argocd app set guestbook -p guestbook=ingress.enabled=true
-argocd app set guestbook -p guestbook=ingress.hosts[0]=guestbook.myclusterurl
+argocd app set guestbook -p ingress.enabled=true
+argocd app set guestbook -p ingress.hosts[0]=guestbook.myclusterurl
 ```
 
 The following are situations where parameter overrides would be useful:
@@ -34,7 +34,7 @@ case, the application would expose a parameter named `image`, whose value used i
 environment contains a placeholder value (e.g. `example/guestbook:replaceme`). The placeholder value
 would be determined externally (outside of Git) such as a build system. Then, as part of the build
 pipeline, the parameter value of the `image` would be continually updated to the freshly built image
-(e.g. `argocd app set guestbook -p guestbook=image=example/guestbook:abcd123`). A sync operation
+(e.g. `argocd app set guestbook -p image=example/guestbook:abcd123`). A sync operation
 would result in the application being redeployed with the new image.
 
 2. A repository of Helm manifests is already publicly available (e.g. https://github.com/helm/charts).
diff --git a/docs/user-guide/projects.md b/docs/user-guide/projects.md
index 4cb066a31..b4049aeb1 100644
--- a/docs/user-guide/projects.md
+++ b/docs/user-guide/projects.md
@@ -55,8 +55,8 @@ argocd proj remove-destination <PROJECT> <CLUSTER>,<NAMESPACE>
 ```
 
 Permitted destination K8s resource kinds are managed with the commands. Note that namespaced-scoped
-resources are restricted via a blacklist, whereas cluster-scoped resources are restricted via
-whitelist.
+resources are restricted via a deny list, whereas cluster-scoped resources are restricted via
+allow list.
 
 ```bash
 argocd proj allow-cluster-resource <PROJECT> <GROUP> <KIND>
diff --git a/go.mod b/go.mod
index 61e098b29..6f41dcd3a 100644
--- a/go.mod
+++ b/go.mod
@@ -7,9 +7,9 @@ require (
 	github.com/TomOnTime/utfutil v0.0.0-20180511104225-09c41003ee1d
 	github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6 // indirect
 	github.com/alicebob/miniredis v2.5.0+incompatible
-	github.com/argoproj/gitops-engine v0.1.3-0.20201027001456-31311943a57a
+	github.com/argoproj/gitops-engine v0.1.3-0.20201030194627-cfdefa46b20c
 	github.com/argoproj/pkg v0.2.0
-	github.com/bombsimon/logrusr v0.0.0-20200131103305-03a291ce59b4
+	github.com/bombsimon/logrusr v1.0.0
 	github.com/casbin/casbin v1.9.1
 	github.com/chai2010/gettext-go v0.0.0-20170215093142-bf70f2a70fb1 // indirect
 	github.com/coreos/go-oidc v2.1.0+incompatible
diff --git a/go.sum b/go.sum
index ad7a36508..4f234af38 100644
--- a/go.sum
+++ b/go.sum
@@ -84,8 +84,8 @@ github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo
 github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA=
 github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
 github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q=
-github.com/argoproj/gitops-engine v0.1.3-0.20201027001456-31311943a57a h1:ShQaYWNaNKJ8iy65vkftl6jYbDU2kLiAdQ0XJ8LSlOo=
-github.com/argoproj/gitops-engine v0.1.3-0.20201027001456-31311943a57a/go.mod h1:7Hzxz1c5YFXpAsM+i9L4LzKPnt8oY0t9QaGgEEUbQuc=
+github.com/argoproj/gitops-engine v0.1.3-0.20201030194627-cfdefa46b20c h1:vc4gE1r2H0U8UtCdfSYdQJ4LtwbRtE2cy5Z3p0dgyys=
+github.com/argoproj/gitops-engine v0.1.3-0.20201030194627-cfdefa46b20c/go.mod h1:OxXp8YaT73rw9gEBnGBWg55af80nkV/uIjWCbJu1Nw0=
 github.com/argoproj/pkg v0.2.0 h1:ETgC600kr8WcAi3MEVY5sA1H7H/u1/IysYOobwsZ8No=
 github.com/argoproj/pkg v0.2.0/go.mod h1:F4TZgInLUEjzsWFB/BTJBsewoEy0ucnKSq6vmQiD/yc=
 github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
@@ -101,7 +101,6 @@ github.com/aws/aws-sdk-go v1.28.2/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN
 github.com/aws/aws-sdk-go v1.33.16/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
 github.com/benbjohnson/clock v1.0.0/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM=
 github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
-github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0=
 github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
 github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
@@ -111,8 +110,8 @@ github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnweb
 github.com/blang/semver v3.5.0+incompatible h1:CGxCgetQ64DKk7rdZ++Vfnb1+ogGNnB17OJKJXD2Cfs=
 github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
 github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
-github.com/bombsimon/logrusr v0.0.0-20200131103305-03a291ce59b4 h1:Myj4mlaLi25AoncNPb8uf+Riru0Mp4xw7S9RUxBCYxk=
-github.com/bombsimon/logrusr v0.0.0-20200131103305-03a291ce59b4/go.mod h1:Jq0nHtvxabKE5EMwAAdgTaz7dfWE8C4i11NOltxGQpc=
+github.com/bombsimon/logrusr v1.0.0 h1:CTCkURYAt5nhCCnKH9eLShYayj2/8Kn/4Qg3QfiU+Ro=
+github.com/bombsimon/logrusr v1.0.0/go.mod h1:Jq0nHtvxabKE5EMwAAdgTaz7dfWE8C4i11NOltxGQpc=
 github.com/caddyserver/caddy v1.0.3/go.mod h1:G+ouvOY32gENkJC+jhgl62TyhvqEsFaDiZ4uw0RzP1E=
 github.com/casbin/casbin v1.9.1 h1:ucjbS5zTrmSLtH4XogqOG920Poe6QatdXtz1FEbApeM=
 github.com/casbin/casbin v1.9.1/go.mod h1:z8uPsfBJGUsnkagrt3G8QvjgTKFMBJ32UP8HpZllfog=
@@ -215,7 +214,6 @@ github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw
 github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ=
 github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
 github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
-github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
 github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
 github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
@@ -236,7 +234,6 @@ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2
 github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
 github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
-github.com/go-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY=
 github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
 github.com/go-logr/logr v0.2.1 h1:fV3MLmabKIZ383XifUjFSwcoGee0v9qgPp8wy5svibE=
 github.com/go-logr/logr v0.2.1/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
@@ -296,7 +293,6 @@ github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85n
 github.com/go-ozzo/ozzo-validation v3.5.0+incompatible/go.mod h1:gsEKFIVnabGBt6mXmxK0MoFy+cZoTJY6mu5Ll3LVLBU=
 github.com/go-redis/cache/v8 v8.0.0-beta.11 h1:6QdpDYemSFQ2yrDkDkEofHpXid6Mm3UctqaVUzxGdn8=
 github.com/go-redis/cache/v8 v8.0.0-beta.11/go.mod h1:4wxD/neK+Uw+SteOR+AXtlyQYMBlI/D1u7UahfDCBAI=
-github.com/go-redis/redis/v8 v8.0.0-beta.2 h1:9S28J9QMBotgI3tGgXbX1Wk9i8QYC3Orw4bTLoPrQeI=
 github.com/go-redis/redis/v8 v8.0.0-beta.2/go.mod h1:o1M7JtsgfDYyv3o+gBn/jJ1LkqpnCrmil7PSppZGBak=
 github.com/go-redis/redis/v8 v8.0.0-beta.9 h1:gcRNXZvs4PFi/mptho1D3hXant8JsbQKQxQ+0W3QGPw=
 github.com/go-redis/redis/v8 v8.0.0-beta.9/go.mod h1:CCWlPAL3uftOyyBOGpJ+A0ps2WpG3+hqo14fVs5aQ6A=
@@ -317,9 +313,7 @@ github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXP
 github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903 h1:LbsanbbD6LieFkXbj9YNNBupiGHJgFeLpO0j0Fza1h8=
 github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef h1:veQD95Isof8w9/WXiA+pa3tz3fJXkt5B7QaRBrM62gk=
 github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 h1:5ZkaAPbicIKTF2I64qf5Fh8Aa83Q/dnOafMYV0OMwjA=
@@ -351,11 +345,9 @@ github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k=
 github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-jsonnet v0.16.0 h1:Nb4EEOp+rdeGGyB1rQ5eisgSAqrTnhf9ip+X6lzZbY0=
 github.com/google/go-jsonnet v0.16.0/go.mod h1:sOcuej3UW1vpPTZOr8L7RQimqai1a57bt5j22LzGZCw=
-github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g=
 github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
 github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
 github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
 github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
@@ -437,13 +429,11 @@ github.com/klauspost/compress v1.10.5 h1:7q6vHIqubShURwQz8cQK6yIe/xC3IF0Vm7TGfqj
 github.com/klauspost/compress v1.10.5/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
 github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
 github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
-github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk=
 github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8=
 github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
-github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
 github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
@@ -475,14 +465,11 @@ github.com/malexdev/utfutil v0.0.0-20180510171754-00c8d4a8e7a8 h1:A6SLdFpRzUUF5v
 github.com/malexdev/utfutil v0.0.0-20180510171754-00c8d4a8e7a8/go.mod h1:UtpLyb/EupVKXF/N0b4NRe1DNg+QYJsnsHQ038romhM=
 github.com/marten-seemann/qtls v0.2.3/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk=
 github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
-github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA=
 github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
 github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
 github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
-github.com/mattn/go-isatty v0.0.11 h1:FxPOTFNqGkuDUGi3H/qkUbQO4ZiBa2brKq5r0l8TGeM=
 github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
 github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
-github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
 github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI=
 github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
@@ -567,26 +554,22 @@ github.com/pquerna/cachecontrol v0.0.0-20180306154005-525d0eb5f91d h1:7gXyC293Ls
 github.com/pquerna/cachecontrol v0.0.0-20180306154005-525d0eb5f91d/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
 github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
 github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
-github.com/prometheus/client_golang v1.0.0 h1:vrDKnkGzuGvhNAL56c7DBz29ZL+KxnoR0x7enabFceM=
 github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
 github.com/prometheus/client_golang v1.7.1 h1:NTGy1Ja9pByO+xAeH/qiWnLrKtr3hJPNjaVUwnjpdpA=
 github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
 github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
-github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE=
 github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M=
 github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
 github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
-github.com/prometheus/common v0.4.1 h1:K0MGApIoQvMw27RTdJkPbr3JZ7DNbtxQNyi5STVM6Kw=
 github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
 github.com/prometheus/common v0.10.0 h1:RyRA7RzGXQZiW+tGMr7sxa85G1z0yOpM1qq5c8lNawc=
 github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
 github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
 github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
 github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
-github.com/prometheus/procfs v0.0.2 h1:6LJUbpNm42llc4HRCuvApCSWB/WfhuNo9K98Q9sNGfs=
 github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
 github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8=
 github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
@@ -614,7 +597,6 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5I
 github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
 github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
 github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
-github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4=
 github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
 github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I=
 github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
@@ -697,7 +679,6 @@ go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qL
 go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
 go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
 go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opentelemetry.io/otel v0.5.0 h1:tdIR1veg/z+VRJaw/6SIxz+QX3l+m+BDleYLTs+GC1g=
 go.opentelemetry.io/otel v0.5.0/go.mod h1:jzBIgIzK43Iu1BpDAXwqOd6UPsSAk+ewVZ5ofSXw4Ek=
 go.opentelemetry.io/otel v0.11.0 h1:IN2tzQa9Gc4ZVKnTaMbPVcHjvzOdg5n9QfnmlqiET7E=
 go.opentelemetry.io/otel v0.11.0/go.mod h1:G8UCk+KooF2HLkgo8RHX9epABH/aRGYET7gQOqBVdB0=
@@ -728,7 +709,6 @@ golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495 h1:I6A9Ag9FpEKOjcKrRNjQkPHawoXIhKyTGfvvjFAiiAk=
 golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
 golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
 golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
@@ -751,7 +731,6 @@ golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKG
 golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
 golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
 golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
-golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ=
 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
 golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
@@ -778,7 +757,6 @@ golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLL
 golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191004110552-13f9640d40b9 h1:rjwSpXsdiK0dV8/Naq3kAw9ymfAeJIyd0upUIElB+lI=
 golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -786,13 +764,11 @@ golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLL
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200513185701-a91f0712d120 h1:EZ3cVSzKOlJxAd8e8YAJ7no8nNypTxexh/YE/xW3ZEY=
 golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
 golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU=
 golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0=
 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs=
 golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -801,7 +777,6 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ
 golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY=
 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA=
 golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -833,7 +808,6 @@ golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4=
 golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -849,19 +823,16 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200327173247-9dae0f8f5775/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1 h1:ogLJMz+qpzav7lGMh10LMvAkM/fAoGlaiiHYiFYdm80=
 golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4 h1:5/PjkGUjvEU5Gl6BxmvKRPpqo2uNMv4rcHBMwzk/st8=
 golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ=
 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs=
 golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -896,7 +867,6 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn
 golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
 golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
 golang.org/x/tools v0.0.0-20200425043458-8463f397d07c/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a h1:gILuVKC+ZPD6g/tj6zBOdnOH1ZHI0zZ86+KLMogc6/s=
 golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 golang.org/x/tools v0.0.0-20200616133436-c1934b75d054 h1:HHeAlu5H9b71C+Fx0K+1dGgVFN1DM1/wz4aoGOA5qS8=
 golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
@@ -905,11 +875,9 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
-gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485 h1:OB/uP/Puiu5vS5QMRPrXCDWUPb+kt8f1KW8oQzFejQw=
 gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0=
 gonum.org/v1/gonum v0.6.2/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU=
 gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
-gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e h1:jRyg0XfpwWlhEV8mDfdNGBeSJM2fuyh9Yjrnd8kF2Ts=
 gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ=
 gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc=
 google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
@@ -921,7 +889,6 @@ google.golang.org/api v0.15.1-0.20200106000736-b8fc810ca6b5/go.mod h1:iLdEw5Ide6
 google.golang.org/api v0.15.1/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
 google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
 google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c=
 google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
 google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
@@ -931,13 +898,11 @@ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoA
 google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
 google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
 google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873 h1:nfPFGzJkUDX6uBmpN/pSw7MbOAWegH5QDQuoXFHedLg=
 google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
 google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
 google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
 google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
 google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
-google.golang.org/genproto v0.0.0-20191009194640-548a555dbc03 h1:4HYDjxeNXAOTv3o1N2tjo8UUSlhQgAD52FVkwxnWgM8=
 google.golang.org/genproto v0.0.0-20191009194640-548a555dbc03/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
 google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
 google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
@@ -1019,7 +984,6 @@ k8s.io/component-base v0.19.2 h1:jW5Y9RcZTb79liEhW3XDVTW7MuvEGP0tQZnfSX6/+gs=
 k8s.io/component-base v0.19.2/go.mod h1:g5LrsiTiabMLZ40AR6Hl45f088DevyGY+cCE2agEIVo=
 k8s.io/cri-api v0.19.2/go.mod h1:UN/iU9Ua0iYdDREBXNE9vqCJ7MIh/FW3VIL0d8pw7Fw=
 k8s.io/csi-translation-lib v0.19.2/go.mod h1:9V3DYlJ6reyKD+/S/JrFyk/j0N1i8FCQYukch0JbNew=
-k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac h1:sAvhNk5RRuc6FNYGqe7Ygz3PSo/2wGWbulskmzRX8Vs=
 k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
 k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14 h1:t4L10Qfx/p7ASH3gXCdIUtPbbIuegCoUJf3TMSFekjw=
 k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
diff --git a/hack/tool-versions.sh b/hack/tool-versions.sh
index ef64e8881..56fcad9a7 100644
--- a/hack/tool-versions.sh
+++ b/hack/tool-versions.sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # The checksum of this file is used as cache key in our integration toolchain
 # 
-helm2_version=2.15.2
+helm2_version=2.17.0
 helm3_version=3.3.1
 jq_version=1.6
 ksonnet_version=0.13.1
diff --git a/manifests/crds/application-crd.yaml b/manifests/crds/application-crd.yaml
index f689afc40..b69edfc9e 100644
--- a/manifests/crds/application-crd.yaml
+++ b/manifests/crds/application-crd.yaml
@@ -131,6 +131,8 @@ spec:
                     directory:
                       description: Directory holds path/directory specific options
                       properties:
+                        exclude:
+                          type: string
                         jsonnet:
                           description: ApplicationSourceJsonnet holds jsonnet specific options
                           properties:
@@ -397,6 +399,8 @@ spec:
                 directory:
                   description: Directory holds path/directory specific options
                   properties:
+                    exclude:
+                      type: string
                     jsonnet:
                       description: ApplicationSourceJsonnet holds jsonnet specific options
                       properties:
@@ -679,6 +683,8 @@ spec:
                       directory:
                         description: Directory holds path/directory specific options
                         properties:
+                          exclude:
+                            type: string
                           jsonnet:
                             description: ApplicationSourceJsonnet holds jsonnet specific options
                             properties:
@@ -964,6 +970,8 @@ spec:
                             directory:
                               description: Directory holds path/directory specific options
                               properties:
+                                exclude:
+                                  type: string
                                 jsonnet:
                                   description: ApplicationSourceJsonnet holds jsonnet specific options
                                   properties:
@@ -1227,6 +1235,8 @@ spec:
                         directory:
                           description: Directory holds path/directory specific options
                           properties:
+                            exclude:
+                              type: string
                             jsonnet:
                               description: ApplicationSourceJsonnet holds jsonnet specific options
                               properties:
@@ -1487,6 +1497,8 @@ spec:
                         directory:
                           description: Directory holds path/directory specific options
                           properties:
+                            exclude:
+                              type: string
                             jsonnet:
                               description: ApplicationSourceJsonnet holds jsonnet specific options
                               properties:
diff --git a/manifests/ha/install.yaml b/manifests/ha/install.yaml
index b1b4c2f59..4daa4261f 100644
--- a/manifests/ha/install.yaml
+++ b/manifests/ha/install.yaml
@@ -132,6 +132,8 @@ spec:
                     directory:
                       description: Directory holds path/directory specific options
                       properties:
+                        exclude:
+                          type: string
                         jsonnet:
                           description: ApplicationSourceJsonnet holds jsonnet specific options
                           properties:
@@ -398,6 +400,8 @@ spec:
                 directory:
                   description: Directory holds path/directory specific options
                   properties:
+                    exclude:
+                      type: string
                     jsonnet:
                       description: ApplicationSourceJsonnet holds jsonnet specific options
                       properties:
@@ -680,6 +684,8 @@ spec:
                       directory:
                         description: Directory holds path/directory specific options
                         properties:
+                          exclude:
+                            type: string
                           jsonnet:
                             description: ApplicationSourceJsonnet holds jsonnet specific options
                             properties:
@@ -965,6 +971,8 @@ spec:
                             directory:
                               description: Directory holds path/directory specific options
                               properties:
+                                exclude:
+                                  type: string
                                 jsonnet:
                                   description: ApplicationSourceJsonnet holds jsonnet specific options
                                   properties:
@@ -1228,6 +1236,8 @@ spec:
                         directory:
                           description: Directory holds path/directory specific options
                           properties:
+                            exclude:
+                              type: string
                             jsonnet:
                               description: ApplicationSourceJsonnet holds jsonnet specific options
                               properties:
@@ -1488,6 +1498,8 @@ spec:
                         directory:
                           description: Directory holds path/directory specific options
                           properties:
+                            exclude:
+                              type: string
                             jsonnet:
                               description: ApplicationSourceJsonnet holds jsonnet specific options
                               properties:
diff --git a/manifests/ha/namespace-install.yaml b/manifests/ha/namespace-install.yaml
index bc3a148ea..95842b430 100644
--- a/manifests/ha/namespace-install.yaml
+++ b/manifests/ha/namespace-install.yaml
@@ -132,6 +132,8 @@ spec:
                     directory:
                       description: Directory holds path/directory specific options
                       properties:
+                        exclude:
+                          type: string
                         jsonnet:
                           description: ApplicationSourceJsonnet holds jsonnet specific options
                           properties:
@@ -398,6 +400,8 @@ spec:
                 directory:
                   description: Directory holds path/directory specific options
                   properties:
+                    exclude:
+                      type: string
                     jsonnet:
                       description: ApplicationSourceJsonnet holds jsonnet specific options
                       properties:
@@ -680,6 +684,8 @@ spec:
                       directory:
                         description: Directory holds path/directory specific options
                         properties:
+                          exclude:
+                            type: string
                           jsonnet:
                             description: ApplicationSourceJsonnet holds jsonnet specific options
                             properties:
@@ -965,6 +971,8 @@ spec:
                             directory:
                               description: Directory holds path/directory specific options
                               properties:
+                                exclude:
+                                  type: string
                                 jsonnet:
                                   description: ApplicationSourceJsonnet holds jsonnet specific options
                                   properties:
@@ -1228,6 +1236,8 @@ spec:
                         directory:
                           description: Directory holds path/directory specific options
                           properties:
+                            exclude:
+                              type: string
                             jsonnet:
                               description: ApplicationSourceJsonnet holds jsonnet specific options
                               properties:
@@ -1488,6 +1498,8 @@ spec:
                         directory:
                           description: Directory holds path/directory specific options
                           properties:
+                            exclude:
+                              type: string
                             jsonnet:
                               description: ApplicationSourceJsonnet holds jsonnet specific options
                               properties:
diff --git a/manifests/install.yaml b/manifests/install.yaml
index 94161a640..496f3593b 100644
--- a/manifests/install.yaml
+++ b/manifests/install.yaml
@@ -132,6 +132,8 @@ spec:
                     directory:
                       description: Directory holds path/directory specific options
                       properties:
+                        exclude:
+                          type: string
                         jsonnet:
                           description: ApplicationSourceJsonnet holds jsonnet specific options
                           properties:
@@ -398,6 +400,8 @@ spec:
                 directory:
                   description: Directory holds path/directory specific options
                   properties:
+                    exclude:
+                      type: string
                     jsonnet:
                       description: ApplicationSourceJsonnet holds jsonnet specific options
                       properties:
@@ -680,6 +684,8 @@ spec:
                       directory:
                         description: Directory holds path/directory specific options
                         properties:
+                          exclude:
+                            type: string
                           jsonnet:
                             description: ApplicationSourceJsonnet holds jsonnet specific options
                             properties:
@@ -965,6 +971,8 @@ spec:
                             directory:
                               description: Directory holds path/directory specific options
                               properties:
+                                exclude:
+                                  type: string
                                 jsonnet:
                                   description: ApplicationSourceJsonnet holds jsonnet specific options
                                   properties:
@@ -1228,6 +1236,8 @@ spec:
                         directory:
                           description: Directory holds path/directory specific options
                           properties:
+                            exclude:
+                              type: string
                             jsonnet:
                               description: ApplicationSourceJsonnet holds jsonnet specific options
                               properties:
@@ -1488,6 +1498,8 @@ spec:
                         directory:
                           description: Directory holds path/directory specific options
                           properties:
+                            exclude:
+                              type: string
                             jsonnet:
                               description: ApplicationSourceJsonnet holds jsonnet specific options
                               properties:
diff --git a/manifests/namespace-install.yaml b/manifests/namespace-install.yaml
index fddec063d..bf4185994 100644
--- a/manifests/namespace-install.yaml
+++ b/manifests/namespace-install.yaml
@@ -132,6 +132,8 @@ spec:
                     directory:
                       description: Directory holds path/directory specific options
                       properties:
+                        exclude:
+                          type: string
                         jsonnet:
                           description: ApplicationSourceJsonnet holds jsonnet specific options
                           properties:
@@ -398,6 +400,8 @@ spec:
                 directory:
                   description: Directory holds path/directory specific options
                   properties:
+                    exclude:
+                      type: string
                     jsonnet:
                       description: ApplicationSourceJsonnet holds jsonnet specific options
                       properties:
@@ -680,6 +684,8 @@ spec:
                       directory:
                         description: Directory holds path/directory specific options
                         properties:
+                          exclude:
+                            type: string
                           jsonnet:
                             description: ApplicationSourceJsonnet holds jsonnet specific options
                             properties:
@@ -965,6 +971,8 @@ spec:
                             directory:
                               description: Directory holds path/directory specific options
                               properties:
+                                exclude:
+                                  type: string
                                 jsonnet:
                                   description: ApplicationSourceJsonnet holds jsonnet specific options
                                   properties:
@@ -1228,6 +1236,8 @@ spec:
                         directory:
                           description: Directory holds path/directory specific options
                           properties:
+                            exclude:
+                              type: string
                             jsonnet:
                               description: ApplicationSourceJsonnet holds jsonnet specific options
                               properties:
@@ -1488,6 +1498,8 @@ spec:
                         directory:
                           description: Directory holds path/directory specific options
                           properties:
+                            exclude:
+                              type: string
                             jsonnet:
                               description: ApplicationSourceJsonnet holds jsonnet specific options
                               properties:
diff --git a/pkg/apis/application/v1alpha1/generated.pb.go b/pkg/apis/application/v1alpha1/generated.pb.go
index e4c7d0bde..6386d0a24 100644
--- a/pkg/apis/application/v1alpha1/generated.pb.go
+++ b/pkg/apis/application/v1alpha1/generated.pb.go
@@ -2572,389 +2572,390 @@ func init() {
 }
 
 var fileDescriptor_e7dc23c2911a1a00 = []byte{
-	// 6108 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x5d, 0x8c, 0x24, 0xd7,
-	0x55, 0xb0, 0xab, 0x7b, 0x7e, 0xba, 0xcf, 0xfc, 0xec, 0xce, 0xb5, 0xd7, 0x99, 0xec, 0xe7, 0xec,
-	0xac, 0xca, 0x4a, 0xe2, 0x8f, 0x24, 0x33, 0xd8, 0x98, 0xe0, 0xc4, 0x90, 0x30, 0x3d, 0xb3, 0x3f,
-	0xb3, 0x3b, 0x3b, 0x3b, 0x3e, 0x33, 0xf6, 0x4a, 0xce, 0x0f, 0xae, 0xa9, 0xbe, 0xdd, 0x5d, 0x3b,
-	0xdd, 0x55, 0xed, 0xaa, 0xea, 0xd9, 0x6d, 0x93, 0x84, 0x04, 0x12, 0x64, 0x05, 0x3b, 0x42, 0x44,
-	0xc9, 0x0b, 0x89, 0x44, 0xe0, 0x01, 0x11, 0x89, 0x87, 0x08, 0x21, 0xc1, 0x23, 0x41, 0x02, 0x3f,
-	0x85, 0x28, 0x42, 0x60, 0x21, 0x34, 0xe0, 0x8d, 0x90, 0x10, 0x3c, 0x04, 0x04, 0x12, 0xd2, 0x3e,
-	0xa1, 0xfb, 0x7f, 0xab, 0xba, 0x7b, 0x67, 0x66, 0xbb, 0x76, 0x13, 0x85, 0xb7, 0xe9, 0x73, 0xce,
-	0x3d, 0xe7, 0xdc, 0x9f, 0x73, 0xee, 0xb9, 0xe7, 0x9e, 0x5b, 0x03, 0x1b, 0xcd, 0x20, 0x6d, 0xf5,
-	0xf6, 0x96, 0xfd, 0xa8, 0xb3, 0xe2, 0xc5, 0xcd, 0xa8, 0x1b, 0x47, 0x37, 0xf9, 0x1f, 0x1f, 0xf2,
-	0xeb, 0x2b, 0xdd, 0xfd, 0xe6, 0x8a, 0xd7, 0x0d, 0x92, 0x15, 0xaf, 0xdb, 0x6d, 0x07, 0xbe, 0x97,
-	0x06, 0x51, 0xb8, 0x72, 0xf0, 0xb4, 0xd7, 0xee, 0xb6, 0xbc, 0xa7, 0x57, 0x9a, 0x34, 0xa4, 0xb1,
-	0x97, 0xd2, 0xfa, 0x72, 0x37, 0x8e, 0xd2, 0x88, 0x7c, 0xc4, 0xb0, 0x5a, 0x56, 0xac, 0xf8, 0x1f,
-	0xbf, 0xe2, 0xd7, 0x97, 0xbb, 0xfb, 0xcd, 0x65, 0xc6, 0x6a, 0xd9, 0x62, 0xb5, 0xac, 0x58, 0x9d,
-	0xfd, 0x90, 0xa5, 0x45, 0x33, 0x6a, 0x46, 0x2b, 0x9c, 0xe3, 0x5e, 0xaf, 0xc1, 0x7f, 0xf1, 0x1f,
-	0xfc, 0x2f, 0x21, 0xe9, 0xac, 0xbb, 0xff, 0x5c, 0xb2, 0x1c, 0x44, 0x4c, 0xb7, 0x15, 0x3f, 0x8a,
-	0xe9, 0xca, 0xc1, 0x80, 0x36, 0x67, 0x9f, 0x35, 0x34, 0x1d, 0xcf, 0x6f, 0x05, 0x21, 0x8d, 0xfb,
-	0xa6, 0x43, 0x1d, 0x9a, 0x7a, 0xc3, 0x5a, 0xad, 0x8c, 0x6a, 0x15, 0xf7, 0xc2, 0x34, 0xe8, 0xd0,
-	0x81, 0x06, 0x1f, 0x3e, 0xaa, 0x41, 0xe2, 0xb7, 0x68, 0xc7, 0xcb, 0xb7, 0x73, 0x5f, 0x85, 0xb9,
-	0xd5, 0x1b, 0x3b, 0xab, 0xbd, 0xb4, 0xb5, 0x16, 0x85, 0x8d, 0xa0, 0x49, 0x7e, 0x1e, 0x66, 0xfc,
-	0x76, 0x2f, 0x49, 0x69, 0xbc, 0xe5, 0x75, 0xe8, 0xa2, 0x73, 0xde, 0x79, 0xaa, 0x5a, 0x7b, 0xf4,
-	0xad, 0xc3, 0xa5, 0x47, 0xee, 0x1c, 0x2e, 0xcd, 0xac, 0x19, 0x14, 0xda, 0x74, 0xe4, 0xff, 0xc3,
-	0x74, 0x1c, 0xb5, 0xe9, 0x2a, 0x6e, 0x2d, 0x96, 0x78, 0x93, 0x53, 0xb2, 0xc9, 0x34, 0x0a, 0x30,
-	0x2a, 0xbc, 0xfb, 0xfd, 0x12, 0xc0, 0x6a, 0xb7, 0xbb, 0x1d, 0x47, 0x37, 0xa9, 0x9f, 0x92, 0x57,
-	0xa0, 0xc2, 0x46, 0xa1, 0xee, 0xa5, 0x1e, 0x97, 0x36, 0xf3, 0xcc, 0xcf, 0x2e, 0x8b, 0xce, 0x2c,
-	0xdb, 0x9d, 0x31, 0x33, 0xc7, 0xa8, 0x97, 0x0f, 0x9e, 0x5e, 0xbe, 0xbe, 0xc7, 0xda, 0x5f, 0xa3,
-	0xa9, 0x57, 0x23, 0x52, 0x18, 0x18, 0x18, 0x6a, 0xae, 0x64, 0x1f, 0x26, 0x92, 0x2e, 0xf5, 0xb9,
-	0x62, 0x33, 0xcf, 0x6c, 0x2c, 0xdf, 0xf7, 0xfa, 0x58, 0x36, 0x6a, 0xef, 0x74, 0xa9, 0x5f, 0x9b,
-	0x95, 0x62, 0x27, 0xd8, 0x2f, 0xe4, 0x42, 0x48, 0x02, 0x53, 0x49, 0xea, 0xa5, 0xbd, 0x64, 0xb1,
-	0xcc, 0xc5, 0x5d, 0x2d, 0x46, 0x1c, 0x67, 0x59, 0x9b, 0x97, 0x02, 0xa7, 0xc4, 0x6f, 0x94, 0xa2,
-	0xdc, 0x7f, 0x70, 0x60, 0xde, 0x10, 0x6f, 0x06, 0x49, 0x4a, 0x3e, 0x39, 0x30, 0xac, 0xcb, 0xc7,
-	0x1b, 0x56, 0xd6, 0x9a, 0x0f, 0xea, 0x69, 0x29, 0xac, 0xa2, 0x20, 0xd6, 0x90, 0xde, 0x84, 0xc9,
-	0x20, 0xa5, 0x9d, 0x64, 0xb1, 0x74, 0xbe, 0xfc, 0xd4, 0xcc, 0x33, 0x17, 0x0a, 0xe9, 0x64, 0x6d,
-	0x4e, 0x4a, 0x9c, 0xdc, 0x60, 0xbc, 0x51, 0x88, 0x70, 0xff, 0x05, 0xec, 0xce, 0xb1, 0xa1, 0x26,
-	0x4f, 0xc3, 0x4c, 0x12, 0xf5, 0x62, 0x9f, 0x22, 0xed, 0x46, 0xc9, 0xa2, 0x73, 0xbe, 0xcc, 0x56,
-	0x1c, 0x5b, 0xa0, 0x3b, 0x06, 0x8c, 0x36, 0x0d, 0xf9, 0x2d, 0x07, 0x66, 0xeb, 0x34, 0x49, 0x83,
-	0x90, 0xcb, 0x57, 0x9a, 0xbf, 0x30, 0x9e, 0xe6, 0x0a, 0xb8, 0x6e, 0x38, 0xd7, 0x1e, 0x93, 0xbd,
-	0x98, 0xb5, 0x80, 0x09, 0x66, 0x84, 0x33, 0x2b, 0xab, 0xd3, 0xc4, 0x8f, 0x83, 0x2e, 0xfb, 0xcd,
-	0x97, 0x8a, 0x65, 0x65, 0xeb, 0x06, 0x85, 0x36, 0x1d, 0xd9, 0x87, 0x49, 0x66, 0x45, 0xc9, 0xe2,
-	0x04, 0x57, 0xfe, 0xe2, 0x18, 0xca, 0xcb, 0xe1, 0x64, 0xd6, 0x69, 0xc6, 0x9d, 0xfd, 0x4a, 0x50,
-	0xc8, 0x20, 0x6f, 0x3a, 0xb0, 0x28, 0x4d, 0x1c, 0xa9, 0x18, 0xca, 0x1b, 0xad, 0x20, 0xa5, 0xed,
-	0x20, 0x49, 0x17, 0x27, 0xb9, 0x02, 0x2b, 0xc7, 0x5b, 0x52, 0x97, 0xe2, 0xa8, 0xd7, 0xbd, 0x1a,
-	0x84, 0xf5, 0xda, 0x79, 0x29, 0x69, 0x71, 0x6d, 0x04, 0x63, 0x1c, 0x29, 0x92, 0x7c, 0xd5, 0x81,
-	0xb3, 0xa1, 0xd7, 0xa1, 0x49, 0xd7, 0x63, 0x93, 0x2a, 0xd0, 0xb5, 0xb6, 0xe7, 0xef, 0x73, 0x8d,
-	0xa6, 0xee, 0x4f, 0x23, 0x57, 0x6a, 0x74, 0x76, 0x6b, 0x24, 0x6b, 0xbc, 0x87, 0x58, 0xf2, 0x7b,
-	0x0e, 0x2c, 0x44, 0x71, 0xb7, 0xe5, 0x85, 0xb4, 0xae, 0xb0, 0xc9, 0xe2, 0x34, 0xb7, 0xb8, 0x4f,
-	0x8c, 0x31, 0x3f, 0xd7, 0xf3, 0x3c, 0xaf, 0x45, 0x61, 0x90, 0x46, 0xf1, 0x0e, 0x4d, 0xd3, 0x20,
-	0x6c, 0x26, 0xb5, 0x33, 0x77, 0x0e, 0x97, 0x16, 0x06, 0xa8, 0x70, 0x50, 0x19, 0x72, 0x1b, 0x66,
-	0x92, 0x7e, 0xe8, 0xdf, 0x08, 0xc2, 0x7a, 0x74, 0x2b, 0x59, 0xac, 0x8c, 0x6d, 0xb2, 0x3b, 0x9a,
-	0x9b, 0x34, 0x3a, 0xc3, 0x1d, 0x6d, 0x51, 0xc3, 0xa7, 0xcc, 0x2c, 0xa2, 0x6a, 0xd1, 0x53, 0x66,
-	0x96, 0xd1, 0x3d, 0xc4, 0x92, 0x2f, 0x3a, 0x30, 0x97, 0x04, 0xcd, 0xd0, 0x4b, 0x7b, 0x31, 0xbd,
-	0x4a, 0xfb, 0xc9, 0x22, 0x70, 0x45, 0x2e, 0x8d, 0x33, 0x24, 0x16, 0xbf, 0xda, 0x19, 0xa9, 0xe0,
-	0x9c, 0x0d, 0x4d, 0x30, 0x2b, 0x74, 0x98, 0x7d, 0x99, 0xd5, 0x3c, 0x53, 0xac, 0x7d, 0x99, 0xb5,
-	0x3c, 0x52, 0xa4, 0xfb, 0x97, 0x25, 0x38, 0x9d, 0xdf, 0x71, 0xc8, 0x1f, 0x38, 0x70, 0xea, 0xe6,
-	0xad, 0x74, 0x37, 0xda, 0xa7, 0x61, 0x52, 0xeb, 0x33, 0x07, 0xc1, 0xdd, 0xed, 0xcc, 0x33, 0xaf,
-	0x14, 0xb8, 0xb1, 0x2d, 0x5f, 0xc9, 0x8a, 0xb8, 0x10, 0xa6, 0x71, 0xbf, 0xf6, 0x2e, 0xd9, 0x99,
-	0x53, 0x57, 0x6e, 0xec, 0xda, 0x58, 0xcc, 0x6b, 0x74, 0xf6, 0x75, 0x07, 0x1e, 0x1b, 0xc6, 0x82,
-	0x9c, 0x86, 0xf2, 0x3e, 0xed, 0x8b, 0x28, 0x06, 0xd9, 0x9f, 0xe4, 0x65, 0x98, 0x3c, 0xf0, 0xda,
-	0x3d, 0x2a, 0xa3, 0x81, 0xf5, 0x31, 0x7a, 0xa1, 0xd5, 0x42, 0xc1, 0xf2, 0xa3, 0xa5, 0xe7, 0x1c,
-	0xf7, 0xaf, 0xca, 0x30, 0x63, 0x6d, 0x0c, 0x0f, 0x21, 0xbc, 0x69, 0x67, 0xc2, 0x9b, 0x2b, 0xc5,
-	0x6c, 0x68, 0x23, 0xe3, 0x9b, 0x34, 0x17, 0xdf, 0x6c, 0x16, 0x24, 0xef, 0x9e, 0x01, 0x0e, 0x79,
-	0x15, 0xaa, 0x51, 0x97, 0x05, 0xae, 0x6c, 0xb7, 0x9c, 0x18, 0x7b, 0xe6, 0xae, 0x2b, 0x5e, 0xb5,
-	0xb9, 0x3b, 0x87, 0x4b, 0x55, 0xfd, 0x13, 0x8d, 0x14, 0xf7, 0xef, 0x1d, 0x78, 0xcc, 0x52, 0x70,
-	0x2d, 0x0a, 0xeb, 0x01, 0x9f, 0xd1, 0xf3, 0x30, 0x91, 0xf6, 0xbb, 0x2a, 0x34, 0xd6, 0x63, 0xb4,
-	0xdb, 0xef, 0x52, 0xe4, 0x18, 0x16, 0x0c, 0x77, 0x68, 0x92, 0x78, 0x4d, 0x9a, 0x0f, 0x86, 0xaf,
-	0x09, 0x30, 0x2a, 0x3c, 0x89, 0x81, 0xb4, 0xbd, 0x24, 0xdd, 0x8d, 0xbd, 0x30, 0xe1, 0xec, 0x77,
-	0x83, 0x0e, 0x95, 0x43, 0xfb, 0x33, 0xc7, 0x5b, 0x28, 0xac, 0x45, 0xed, 0xf1, 0x3b, 0x87, 0x4b,
-	0x64, 0x73, 0x80, 0x13, 0x0e, 0xe1, 0xee, 0x7e, 0xd5, 0x81, 0xc7, 0x87, 0xc7, 0x2e, 0xe4, 0x7d,
-	0x30, 0x95, 0xd0, 0xf8, 0x80, 0xc6, 0xb2, 0x77, 0x66, 0x3e, 0x38, 0x14, 0x25, 0x96, 0xac, 0x40,
-	0x55, 0x3b, 0x58, 0xd9, 0xc7, 0x05, 0x49, 0x5a, 0x35, 0x5e, 0xd9, 0xd0, 0xb0, 0x41, 0x63, 0x3f,
-	0x64, 0xa4, 0xa3, 0x07, 0x8d, 0x1f, 0x24, 0x38, 0xc6, 0xfd, 0x47, 0x07, 0x4e, 0x59, 0x5a, 0x3d,
-	0x84, 0x20, 0x76, 0x3f, 0x1b, 0xc4, 0x5e, 0x2c, 0x66, 0x25, 0x8f, 0x88, 0x62, 0xff, 0x64, 0x0a,
-	0x16, 0xec, 0xf5, 0xce, 0x9d, 0x2f, 0x3f, 0x36, 0xd1, 0x6e, 0xf4, 0x22, 0x6e, 0xca, 0x01, 0x37,
-	0xc7, 0x26, 0x01, 0x46, 0x85, 0x67, 0x23, 0xd8, 0xf5, 0xd2, 0x96, 0x1c, 0x6d, 0x3d, 0x82, 0xdb,
-	0x5e, 0xda, 0x42, 0x8e, 0x21, 0x1f, 0x83, 0xf9, 0xd4, 0x8b, 0x9b, 0x34, 0x45, 0x7a, 0x10, 0x24,
-	0xca, 0x52, 0xaa, 0xb5, 0xc7, 0x25, 0xed, 0xfc, 0x6e, 0x06, 0x8b, 0x39, 0x6a, 0x12, 0xc2, 0x44,
-	0x8b, 0xb6, 0x3b, 0x32, 0x78, 0xd9, 0x2e, 0xc8, 0xb0, 0x79, 0x47, 0x2f, 0xd3, 0x76, 0xa7, 0x56,
-	0x61, 0xfa, 0xb2, 0xbf, 0x90, 0xcb, 0x21, 0xbf, 0xee, 0x40, 0x75, 0xbf, 0x97, 0xa4, 0x51, 0x27,
-	0x78, 0x8d, 0x2e, 0x56, 0xb8, 0xd4, 0x17, 0x8b, 0x94, 0x7a, 0x55, 0x31, 0x17, 0x66, 0xae, 0x7f,
-	0xa2, 0x11, 0x4b, 0x5e, 0x83, 0xe9, 0xfd, 0x24, 0x0a, 0x43, 0xca, 0xc2, 0x11, 0xa6, 0xc1, 0x4e,
-	0xa1, 0x1a, 0x08, 0xd6, 0xb5, 0x19, 0x36, 0xa5, 0xf2, 0x07, 0x2a, 0x81, 0x7c, 0x00, 0xea, 0x41,
-	0x4c, 0xfd, 0x34, 0x8a, 0xfb, 0x8b, 0x50, 0xfc, 0x00, 0xac, 0x2b, 0xe6, 0x62, 0x00, 0xf4, 0x4f,
-	0x34, 0x62, 0xc9, 0x01, 0x4c, 0x75, 0xdb, 0xbd, 0x66, 0x10, 0x2e, 0xce, 0x70, 0x05, 0xb0, 0x48,
-	0x05, 0xb6, 0x39, 0xe7, 0x1a, 0x30, 0x17, 0x22, 0xfe, 0x46, 0x29, 0x8d, 0x3c, 0x09, 0x93, 0x7e,
-	0xcb, 0x8b, 0xd3, 0xc5, 0x59, 0xbe, 0x48, 0xb5, 0xd5, 0xac, 0x31, 0x20, 0x0a, 0x9c, 0xfb, 0xd7,
-	0x0e, 0x9c, 0x1d, 0xdd, 0x2b, 0x61, 0x3e, 0x7e, 0x2f, 0x4e, 0x84, 0x37, 0xae, 0xd8, 0xe6, 0xc3,
-	0xc1, 0xa8, 0xf0, 0xe4, 0x73, 0x30, 0x7d, 0x53, 0xce, 0x73, 0xa9, 0xf8, 0x79, 0xbe, 0x22, 0xe7,
-	0x59, 0xcb, 0xbf, 0xa2, 0xe6, 0x5a, 0x0a, 0x75, 0x0f, 0xcb, 0x70, 0x66, 0xa8, 0x59, 0x90, 0x65,
-	0x00, 0x1e, 0x3e, 0x5c, 0x0c, 0xd8, 0xc9, 0x4e, 0x9c, 0x65, 0xe7, 0xd9, 0x6e, 0xff, 0x92, 0x86,
-	0xa2, 0x45, 0x41, 0x3e, 0x03, 0xd0, 0xf5, 0x62, 0xaf, 0x43, 0x53, 0x1a, 0x2b, 0xdf, 0x75, 0x79,
-	0x8c, 0xce, 0x30, 0x25, 0xb6, 0x15, 0x43, 0x13, 0x6b, 0x68, 0x50, 0x82, 0x96, 0x3c, 0x76, 0x72,
-	0x8d, 0x69, 0x9b, 0x7a, 0x09, 0xdd, 0x32, 0xfe, 0x5c, 0x9f, 0x5c, 0xd1, 0xa0, 0xd0, 0xa6, 0x63,
-	0x1b, 0x0b, 0xef, 0x42, 0x22, 0x7d, 0x92, 0xde, 0x58, 0x78, 0x27, 0x13, 0x94, 0x58, 0xf2, 0x86,
-	0x03, 0xf3, 0x8d, 0xa0, 0x4d, 0x8d, 0x74, 0x79, 0xd4, 0xdc, 0x1c, 0xb3, 0x87, 0x17, 0x6d, 0xa6,
-	0xc6, 0x25, 0x66, 0xc0, 0x09, 0xe6, 0x64, 0xb3, 0x05, 0x76, 0x40, 0x63, 0xee, 0x4b, 0xa7, 0xb2,
-	0xfe, 0xf9, 0x25, 0x01, 0x46, 0x85, 0x77, 0xbf, 0x5a, 0x82, 0xc5, 0x51, 0xeb, 0x82, 0x74, 0x61,
-	0x9a, 0xde, 0x4e, 0x5f, 0xf2, 0xe2, 0x44, 0x46, 0xcf, 0xe3, 0x1c, 0xbf, 0x24, 0xd3, 0x97, 0xbc,
-	0xd8, 0xa8, 0x73, 0x41, 0x70, 0x47, 0x25, 0x86, 0x34, 0x61, 0x22, 0x6d, 0x7b, 0x45, 0x24, 0x68,
-	0x2c, 0x71, 0x26, 0xd8, 0xd9, 0x5c, 0x4d, 0x90, 0x0b, 0x20, 0x4f, 0xc0, 0x44, 0x3b, 0xd8, 0x63,
-	0xe1, 0x20, 0x5b, 0xb8, 0xdc, 0xc7, 0x6f, 0x06, 0x7b, 0x09, 0x72, 0xa8, 0xfb, 0x03, 0x67, 0xc8,
-	0xa8, 0x48, 0x47, 0xc8, 0xd6, 0x12, 0x0d, 0x0f, 0x82, 0x38, 0x0a, 0x3b, 0x34, 0x4c, 0xf3, 0xb9,
-	0xc6, 0x0b, 0x06, 0x85, 0x36, 0x1d, 0xf9, 0xb5, 0x21, 0x06, 0x30, 0x4e, 0x9a, 0x4d, 0xaa, 0x73,
-	0x6c, 0x1b, 0x70, 0xdf, 0x9a, 0x1c, 0xe2, 0x95, 0xf4, 0xee, 0x42, 0x9e, 0x01, 0x60, 0x11, 0xcd,
-	0x76, 0x4c, 0x1b, 0xc1, 0x6d, 0xd9, 0x2b, 0xcd, 0x72, 0x4b, 0x63, 0xd0, 0xa2, 0x52, 0x6d, 0x76,
-	0x7a, 0x0d, 0xd6, 0xa6, 0x34, 0xd8, 0x46, 0x60, 0xd0, 0xa2, 0x22, 0xcf, 0xc2, 0x54, 0xd0, 0xf1,
-	0x9a, 0x54, 0x8d, 0xfd, 0x13, 0xcc, 0x9e, 0x36, 0x38, 0xe4, 0xee, 0xe1, 0xd2, 0xbc, 0x56, 0x88,
-	0x83, 0x50, 0xd2, 0x92, 0x6f, 0x39, 0x30, 0xeb, 0x47, 0x9d, 0x4e, 0x14, 0x6e, 0x7a, 0x7b, 0xb4,
-	0xad, 0x72, 0x49, 0xcd, 0x07, 0xb2, 0xf1, 0x2e, 0xaf, 0x59, 0x92, 0xc4, 0xa9, 0x4e, 0xa7, 0xc7,
-	0x6c, 0x14, 0x66, 0x54, 0xb2, 0xcd, 0x6e, 0xf2, 0xde, 0x66, 0x47, 0xfe, 0xd4, 0x81, 0x05, 0xd1,
-	0x76, 0x35, 0x0c, 0xa3, 0x54, 0x26, 0xf7, 0x44, 0x32, 0xa8, 0xfd, 0x20, 0xfb, 0x64, 0x89, 0x13,
-	0x1d, 0x7b, 0xb7, 0xd4, 0x71, 0x61, 0x00, 0x8f, 0x83, 0x1a, 0x9e, 0xfd, 0x38, 0x2c, 0x0c, 0x8c,
-	0xcd, 0x90, 0xe3, 0xea, 0x63, 0xf6, 0x71, 0xb5, 0x6a, 0x1d, 0x34, 0xcf, 0xae, 0xc3, 0xe3, 0xc3,
-	0x15, 0x39, 0x09, 0x17, 0xf7, 0x77, 0x1d, 0x78, 0xd7, 0x88, 0x5d, 0x5b, 0xc7, 0xec, 0xce, 0xa8,
-	0x98, 0x9d, 0x7c, 0x1a, 0xca, 0x34, 0x3c, 0x90, 0x26, 0xb8, 0x36, 0xc6, 0x68, 0x5f, 0x08, 0x0f,
-	0xc4, 0x20, 0x4e, 0xdf, 0x39, 0x5c, 0x2a, 0x5f, 0x08, 0x0f, 0x90, 0x31, 0x76, 0xbf, 0x34, 0x95,
-	0x39, 0x13, 0xec, 0xa8, 0x03, 0x28, 0xd7, 0x52, 0x9e, 0x08, 0x36, 0x8b, 0x9c, 0x64, 0xeb, 0xc0,
-	0x23, 0x72, 0xc7, 0x52, 0x16, 0x79, 0xdd, 0xe1, 0x19, 0x5b, 0x75, 0x50, 0x92, 0x31, 0xc4, 0x03,
-	0xc8, 0x1e, 0xdb, 0x49, 0x60, 0x05, 0x44, 0x5b, 0x34, 0x33, 0x8e, 0xae, 0x48, 0x9e, 0xc8, 0xdd,
-	0x57, 0x1b, 0x87, 0xca, 0xe9, 0x2a, 0x3c, 0xe9, 0x01, 0x24, 0xfd, 0xd0, 0xdf, 0x8e, 0xda, 0x81,
-	0xdf, 0x97, 0xe7, 0xe6, 0x71, 0x13, 0x7f, 0x82, 0x99, 0x88, 0x50, 0xcc, 0x6f, 0xb4, 0x04, 0x91,
-	0x6f, 0x3a, 0xb0, 0x10, 0x34, 0xc3, 0x28, 0xa6, 0xeb, 0x41, 0xa3, 0x41, 0x63, 0x1a, 0xfa, 0x54,
-	0xed, 0xe3, 0xbb, 0x63, 0x88, 0x57, 0x39, 0xab, 0x8d, 0x3c, 0x6f, 0x63, 0x7b, 0x03, 0x28, 0x1c,
-	0xd4, 0x84, 0x78, 0x30, 0x11, 0x84, 0x8d, 0x48, 0x7a, 0x89, 0x8f, 0x8f, 0xa1, 0xd1, 0x46, 0xd8,
-	0x88, 0x8c, 0x65, 0xb0, 0x5f, 0xc8, 0x59, 0x93, 0x4d, 0x78, 0x2c, 0x96, 0xe7, 0xaa, 0xcb, 0x41,
-	0xc2, 0x82, 0xd5, 0xcd, 0xa0, 0x13, 0xa4, 0xfc, 0x6c, 0x55, 0xae, 0x2d, 0xde, 0x39, 0x5c, 0x7a,
-	0x0c, 0x87, 0xe0, 0x71, 0x68, 0x2b, 0xf7, 0xbf, 0x2a, 0xd9, 0xc3, 0xa3, 0x48, 0x8a, 0xbc, 0x06,
-	0xd5, 0x58, 0x67, 0x9c, 0x45, 0x58, 0xb1, 0x51, 0xc0, 0xe8, 0xca, 0x54, 0x8c, 0x3e, 0xcf, 0x9b,
-	0xdc, 0xb2, 0x11, 0xc7, 0xc2, 0x0b, 0x36, 0xe1, 0xd2, 0x0e, 0xc6, 0x5d, 0x53, 0x52, 0xa4, 0xc9,
-	0x37, 0xf5, 0x43, 0x1f, 0xb9, 0x00, 0x12, 0xc1, 0x54, 0x8b, 0x7a, 0xed, 0xb4, 0x25, 0x93, 0x22,
-	0x97, 0xc6, 0x8a, 0x03, 0x19, 0xa3, 0x7c, 0xaa, 0x49, 0x40, 0x51, 0x8a, 0x21, 0x3d, 0x98, 0x6e,
-	0x89, 0xb1, 0x97, 0x3b, 0xe3, 0x95, 0xb1, 0xc6, 0x34, 0x33, 0x9b, 0xc6, 0x54, 0x25, 0x00, 0x95,
-	0x2c, 0xf2, 0x1b, 0x0e, 0x80, 0xaf, 0x72, 0x4c, 0xca, 0x58, 0xae, 0x17, 0xe3, 0x5f, 0x74, 0xee,
-	0xca, 0x84, 0x14, 0x1a, 0x94, 0xa0, 0x25, 0x96, 0xbc, 0x02, 0xb3, 0x31, 0xf5, 0xa3, 0xd0, 0x0f,
-	0xda, 0xb4, 0xbe, 0x9a, 0xf2, 0xa0, 0xf7, 0x64, 0x89, 0xa8, 0xd3, 0x6c, 0x6b, 0x47, 0x8b, 0x07,
-	0x66, 0x38, 0x92, 0x2f, 0x39, 0x30, 0xaf, 0x93, 0x6c, 0x6c, 0x2a, 0xa8, 0xcc, 0x37, 0x6c, 0x14,
-	0x91, 0xcf, 0xe3, 0x0c, 0x6b, 0x84, 0x45, 0xf6, 0x59, 0x18, 0xe6, 0x84, 0x92, 0x97, 0x01, 0xa2,
-	0x3d, 0x9e, 0xcd, 0x62, 0xfd, 0xac, 0x9c, 0xb8, 0x9f, 0xf3, 0x22, 0x1f, 0xab, 0x38, 0xa0, 0xc5,
-	0x8d, 0x5c, 0x05, 0x10, 0x76, 0xb2, 0xdb, 0xef, 0x52, 0x9e, 0x56, 0xa8, 0xd6, 0x3e, 0xa0, 0x46,
-	0x7e, 0x47, 0x63, 0xee, 0x1e, 0x2e, 0x0d, 0x1e, 0x09, 0x79, 0x1a, 0xd1, 0x6a, 0x4e, 0x6e, 0xc3,
-	0x74, 0xd2, 0xeb, 0x74, 0x3c, 0x9d, 0x21, 0xb8, 0x56, 0xd0, 0x86, 0x27, 0x98, 0x9a, 0x25, 0x29,
-	0x01, 0xa8, 0xc4, 0xb9, 0x21, 0x90, 0x41, 0x7a, 0xf2, 0x2c, 0xcc, 0xd2, 0xdb, 0x29, 0x8d, 0x43,
-	0xaf, 0xfd, 0x22, 0x6e, 0xaa, 0x03, 0x2b, 0x9f, 0xf6, 0x0b, 0x16, 0x1c, 0x33, 0x54, 0xc4, 0xd5,
-	0xb1, 0x6a, 0x89, 0xd3, 0x83, 0x89, 0x55, 0x55, 0x64, 0xea, 0xfe, 0x66, 0x29, 0xb3, 0xdb, 0xef,
-	0xc6, 0x94, 0x92, 0x36, 0x4c, 0x86, 0x51, 0x5d, 0xfb, 0xb7, 0x4b, 0x05, 0xf8, 0xb7, 0xad, 0xa8,
-	0x6e, 0x5d, 0x79, 0xb2, 0x5f, 0x09, 0x0a, 0x21, 0xfc, 0x66, 0x48, 0xdd, 0x9f, 0x71, 0x84, 0x0c,
-	0x6d, 0x0a, 0x13, 0xab, 0x6f, 0x86, 0xae, 0xdb, 0x52, 0x30, 0x2b, 0xd4, 0xfd, 0xa1, 0x93, 0xc9,
-	0x15, 0xdc, 0xf0, 0x52, 0xbf, 0x75, 0xe1, 0x80, 0x1d, 0x7d, 0xae, 0x66, 0x72, 0xcf, 0xbf, 0x60,
-	0xe7, 0x9e, 0xef, 0x1e, 0x2e, 0xbd, 0x7f, 0x54, 0x11, 0xc8, 0x2d, 0xc6, 0x61, 0x99, 0xb3, 0xb0,
-	0xd2, 0xd4, 0x9f, 0x85, 0x19, 0x4b, 0x63, 0xe9, 0xca, 0x8b, 0xca, 0x82, 0xea, 0x38, 0xc6, 0x02,
-	0xa2, 0x2d, 0xcf, 0xfd, 0x1d, 0x07, 0xa6, 0x6b, 0x9e, 0xbf, 0x1f, 0x35, 0x1a, 0xe4, 0x83, 0x50,
-	0xa9, 0xf7, 0x64, 0x7a, 0x5f, 0xf4, 0x4d, 0x27, 0x6e, 0xd7, 0x25, 0x1c, 0x35, 0x05, 0x5b, 0x4c,
-	0x0d, 0xcf, 0x4f, 0xa3, 0x98, 0xeb, 0x5c, 0x16, 0x8b, 0xe9, 0x22, 0x87, 0xa0, 0xc4, 0xb0, 0xb3,
-	0x65, 0xc7, 0xbb, 0xad, 0x1a, 0xe7, 0xf3, 0x14, 0xd7, 0x0c, 0x0a, 0x6d, 0x3a, 0xf7, 0x2f, 0x26,
-	0x61, 0x5a, 0xde, 0x9d, 0x1d, 0x3b, 0x19, 0xae, 0xe2, 0xe4, 0xd2, 0xc8, 0x38, 0xb9, 0x0b, 0x53,
-	0x3e, 0x2f, 0xaf, 0x91, 0x9b, 0xd8, 0x38, 0xe9, 0x1a, 0xa9, 0x9d, 0x28, 0xd7, 0x31, 0x3a, 0x89,
-	0xdf, 0x28, 0xe5, 0x90, 0x37, 0x1d, 0x38, 0xe5, 0xb3, 0x63, 0xad, 0x6f, 0xfc, 0xec, 0xc4, 0xd8,
-	0x17, 0x44, 0x6b, 0x59, 0x8e, 0xe6, 0x86, 0x2e, 0x87, 0xc0, 0xbc, 0x6c, 0xf2, 0x3c, 0xcc, 0x89,
-	0xd1, 0x7a, 0x29, 0x73, 0xae, 0x33, 0x37, 0xa5, 0x36, 0x12, 0xb3, 0xb4, 0x64, 0x59, 0x1c, 0x8e,
-	0xf9, 0x4d, 0x82, 0x38, 0xdb, 0xc9, 0x0c, 0x99, 0xbe, 0x6a, 0x48, 0xd0, 0xa2, 0x20, 0x31, 0x90,
-	0x98, 0x36, 0x62, 0x9a, 0xb4, 0x90, 0xbe, 0xda, 0xa3, 0x49, 0xca, 0x7d, 0xfc, 0xf4, 0xfd, 0x5d,
-	0xaa, 0xe0, 0x00, 0x27, 0x1c, 0xc2, 0x9d, 0xb4, 0x64, 0x4c, 0x59, 0x19, 0xdb, 0x8a, 0xe4, 0x04,
-	0x8f, 0x0c, 0x2d, 0x97, 0x60, 0x32, 0x69, 0x79, 0x71, 0x9d, 0x6f, 0x2c, 0xe5, 0x5a, 0x95, 0x79,
-	0xb1, 0x1d, 0x06, 0x40, 0x01, 0x77, 0xff, 0xdb, 0x81, 0xd3, 0x6a, 0x95, 0x78, 0x7e, 0x8b, 0xb2,
-	0xb6, 0xe4, 0x63, 0x30, 0xaf, 0xa3, 0xb7, 0xb5, 0xa8, 0x27, 0xd3, 0x2d, 0x65, 0x93, 0x09, 0xc3,
-	0x0c, 0x16, 0x73, 0xd4, 0x64, 0x05, 0xaa, 0x4c, 0x65, 0xd1, 0x54, 0x98, 0x9d, 0x8e, 0x10, 0x57,
-	0xb7, 0x37, 0x64, 0x2b, 0x43, 0x43, 0x22, 0x58, 0x68, 0x7b, 0x49, 0xca, 0x35, 0x60, 0xf1, 0xdc,
-	0x7d, 0x5e, 0x6c, 0xf1, 0x32, 0x87, 0xcd, 0x3c, 0x23, 0x1c, 0xe4, 0xed, 0x7e, 0x6f, 0x02, 0xe6,
-	0x32, 0xc6, 0xc1, 0xbc, 0x4a, 0x2f, 0x61, 0x7b, 0x90, 0x3e, 0xc4, 0x6a, 0xaf, 0xf2, 0xa2, 0x84,
-	0xa3, 0xa6, 0x60, 0xd4, 0x5d, 0x2f, 0x49, 0x6e, 0x45, 0x71, 0x5d, 0x9a, 0xb2, 0xa6, 0xde, 0x96,
-	0x70, 0xd4, 0x14, 0xcc, 0xbf, 0xec, 0x51, 0x2f, 0xa6, 0x31, 0xbf, 0x02, 0xce, 0xfb, 0x97, 0x9a,
-	0x41, 0xa1, 0x4d, 0xc7, 0xed, 0x32, 0x6d, 0x27, 0x6b, 0xed, 0x80, 0x86, 0xa9, 0x50, 0xb3, 0x00,
-	0xbb, 0xdc, 0xdd, 0xdc, 0xb1, 0x39, 0x1a, 0xbb, 0xcc, 0x21, 0x30, 0x2f, 0x9b, 0x7c, 0xc1, 0x81,
-	0x39, 0xef, 0x56, 0x62, 0x0a, 0x00, 0xb9, 0x61, 0x8e, 0xe7, 0xa1, 0x32, 0x05, 0x85, 0xb5, 0x05,
-	0x66, 0xde, 0x19, 0x10, 0x66, 0x25, 0x92, 0xaf, 0x39, 0x40, 0xe8, 0x6d, 0xea, 0x6f, 0xc7, 0xd1,
-	0x41, 0x50, 0x57, 0xb3, 0x27, 0x63, 0xcf, 0x71, 0xa2, 0x9d, 0x0b, 0x03, 0x4c, 0x85, 0x49, 0x0f,
-	0xc2, 0x71, 0x88, 0x02, 0xee, 0xb7, 0xca, 0x30, 0x63, 0x19, 0xe3, 0x50, 0x9f, 0xea, 0xfc, 0x24,
-	0xf9, 0xd4, 0xd2, 0x09, 0x7c, 0xea, 0x67, 0xa0, 0xea, 0x2b, 0xe7, 0x50, 0x40, 0xa9, 0x62, 0xde,
-	0xdf, 0x18, 0xe7, 0xa0, 0x41, 0x68, 0x04, 0x92, 0x4b, 0xb0, 0x60, 0xb1, 0x91, 0x5e, 0x65, 0x82,
-	0x7b, 0x15, 0x7d, 0x94, 0x5f, 0xcd, 0x13, 0xe0, 0x60, 0x1b, 0xf7, 0x6f, 0x1d, 0x3d, 0x47, 0x0f,
-	0xe1, 0xc6, 0xb8, 0x99, 0xbd, 0x31, 0xae, 0x8d, 0x3f, 0x60, 0x23, 0x6e, 0x8b, 0xb7, 0x60, 0x7a,
-	0x2d, 0xea, 0x74, 0xbc, 0xb0, 0x4e, 0xde, 0x0b, 0xd3, 0xbe, 0xf8, 0x53, 0x86, 0xda, 0xfc, 0x2e,
-	0x51, 0x62, 0x51, 0xe1, 0xc8, 0x13, 0x30, 0xe1, 0xc5, 0x4d, 0x15, 0x5e, 0xf3, 0x34, 0xfc, 0x6a,
-	0xdc, 0x4c, 0x90, 0x43, 0xdd, 0x37, 0x4b, 0x00, 0x6b, 0x51, 0xa7, 0xeb, 0xc5, 0xb4, 0xbe, 0x1b,
-	0xfd, 0x9f, 0xcf, 0xa1, 0xb9, 0x6f, 0x38, 0x40, 0xd8, 0x78, 0x44, 0x21, 0x0d, 0x4d, 0xe2, 0x9f,
-	0x6d, 0x72, 0xbe, 0x82, 0xca, 0x1d, 0xc3, 0xac, 0x63, 0x85, 0x40, 0x43, 0x73, 0x8c, 0xd0, 0xef,
-	0x49, 0x95, 0x7a, 0x2d, 0x67, 0xaf, 0x39, 0xf9, 0xbd, 0x97, 0xcc, 0xc4, 0xba, 0x5f, 0x29, 0xc1,
-	0xe3, 0xc2, 0xe9, 0x5c, 0xf3, 0x42, 0xaf, 0x49, 0x3b, 0x4c, 0xab, 0xe3, 0x26, 0x61, 0x5f, 0x61,
-	0x91, 0x47, 0xa0, 0xae, 0x35, 0xc7, 0x5a, 0x93, 0x62, 0x2d, 0x89, 0xd5, 0xb3, 0x11, 0x06, 0x29,
-	0x72, 0xce, 0xa4, 0x0b, 0x15, 0x55, 0x37, 0x2e, 0x5d, 0x45, 0x11, 0x52, 0xb4, 0xa1, 0x5d, 0x92,
-	0xbc, 0x51, 0x4b, 0x71, 0xbf, 0xeb, 0x40, 0xde, 0xff, 0xf1, 0x70, 0x5c, 0x54, 0x1e, 0xe5, 0xc3,
-	0xf1, 0x6c, 0xad, 0xd0, 0x09, 0xaa, 0x6f, 0x3e, 0x09, 0x33, 0x5e, 0x9a, 0xd2, 0x4e, 0x57, 0x44,
-	0x88, 0xe5, 0xfb, 0xcb, 0x02, 0x5c, 0x8b, 0xea, 0x41, 0x23, 0xe0, 0x91, 0xa1, 0xcd, 0xce, 0x7d,
-	0x01, 0x2a, 0x2a, 0xaf, 0x7d, 0x8c, 0x69, 0x7c, 0x32, 0x93, 0xa3, 0x1f, 0xb1, 0x50, 0xfe, 0xa7,
-	0x04, 0x43, 0x76, 0x2f, 0xd6, 0x65, 0xe3, 0x23, 0x32, 0x5d, 0x3e, 0x99, 0x9f, 0x20, 0x3d, 0x91,
-	0xd0, 0x2f, 0x73, 0xf7, 0xf6, 0x52, 0xa1, 0x5b, 0xaf, 0xc9, 0xf1, 0xcf, 0x48, 0xe5, 0x74, 0x9e,
-	0x9f, 0x3c, 0x03, 0xe0, 0x75, 0x03, 0xb5, 0x8d, 0x4d, 0x64, 0x6f, 0xbf, 0x56, 0xb7, 0x37, 0xd4,
-	0x1e, 0x66, 0x51, 0xb1, 0x00, 0x2c, 0x08, 0x93, 0xd4, 0x6b, 0xb7, 0x2f, 0x07, 0x61, 0x2a, 0xcf,
-	0x13, 0xda, 0xf2, 0x37, 0x0c, 0x0a, 0x6d, 0xba, 0xb3, 0x1f, 0xb6, 0x26, 0xe5, 0x24, 0x17, 0x25,
-	0x6f, 0x94, 0x60, 0xfe, 0x52, 0xd8, 0xdb, 0xbe, 0xb4, 0xdd, 0xdb, 0x6b, 0x07, 0xfe, 0x55, 0xda,
-	0x67, 0x33, 0xb6, 0x4f, 0xfb, 0x1b, 0xeb, 0x72, 0xcc, 0xf5, 0x8c, 0x5d, 0x65, 0x40, 0x14, 0x38,
-	0xa6, 0x66, 0x23, 0x08, 0x9b, 0x34, 0xee, 0xc6, 0x81, 0x8c, 0x9c, 0x2d, 0x35, 0x2f, 0x1a, 0x14,
-	0xda, 0x74, 0x8c, 0x77, 0x74, 0x2b, 0xa4, 0x71, 0xde, 0x6d, 0x5c, 0x67, 0x40, 0x14, 0x38, 0x46,
-	0x94, 0xc6, 0xbd, 0x24, 0x95, 0x23, 0xa6, 0x89, 0x76, 0x19, 0x10, 0x05, 0x8e, 0xad, 0x8d, 0xa4,
-	0xb7, 0xc7, 0x33, 0x51, 0xb9, 0xbb, 0xb4, 0x1d, 0x01, 0x46, 0x85, 0x67, 0xa4, 0xfb, 0xb4, 0xbf,
-	0xce, 0xf6, 0xce, 0xdc, 0x6d, 0xf7, 0x55, 0x01, 0x46, 0x85, 0x77, 0xef, 0x38, 0x40, 0xb2, 0xc3,
-	0xf1, 0x10, 0xb6, 0xdf, 0x30, 0xbb, 0xfd, 0x8e, 0x93, 0x31, 0xcc, 0xea, 0x3e, 0x62, 0x17, 0xfe,
-	0x7d, 0x07, 0x66, 0xed, 0x9c, 0x31, 0x69, 0xe6, 0x5c, 0xd0, 0xf5, 0xac, 0x0b, 0xba, 0x7b, 0xb8,
-	0xf4, 0x4b, 0xc3, 0xde, 0x31, 0x35, 0x83, 0x34, 0xea, 0x26, 0x1f, 0xa2, 0x61, 0x33, 0x08, 0x29,
-	0x4f, 0xc8, 0x88, 0x5c, 0x73, 0x26, 0x21, 0xbd, 0x16, 0xd5, 0xe9, 0x7d, 0xf8, 0x30, 0xf7, 0x06,
-	0x2c, 0x0c, 0xd4, 0x37, 0x1c, 0xc3, 0xdd, 0x1c, 0x59, 0x4e, 0xe6, 0xbe, 0xe9, 0xc0, 0x5c, 0xa6,
-	0x36, 0xa4, 0x20, 0x27, 0xc6, 0x4d, 0x22, 0xe2, 0x17, 0x0d, 0x71, 0x10, 0x8a, 0x94, 0x48, 0xc5,
-	0x32, 0x09, 0x83, 0x42, 0x9b, 0xce, 0xbd, 0x06, 0xfc, 0x14, 0x5c, 0x94, 0x2b, 0x7d, 0x01, 0x2a,
-	0x8c, 0x1d, 0x9b, 0xf0, 0xa2, 0x58, 0x46, 0x50, 0x51, 0x35, 0xc1, 0xc4, 0x85, 0x72, 0xe0, 0xa9,
-	0x43, 0xb6, 0x5e, 0xd4, 0x1b, 0x49, 0xd2, 0xe3, 0x1b, 0x05, 0x43, 0x92, 0x27, 0xa1, 0x4c, 0x6f,
-	0x77, 0xf3, 0xa7, 0xe9, 0x0b, 0xb7, 0xbb, 0x41, 0x4c, 0x13, 0x46, 0x44, 0x6f, 0x77, 0xc9, 0x59,
-	0x28, 0x05, 0x75, 0xe9, 0x06, 0x40, 0xd2, 0x94, 0x36, 0xd6, 0xb1, 0x14, 0xd4, 0xdd, 0x1e, 0x54,
-	0x75, 0x11, 0x32, 0x69, 0x29, 0xeb, 0x70, 0xc6, 0xbe, 0x8e, 0x55, 0x4c, 0x47, 0xd8, 0x45, 0x0f,
-	0xc0, 0x14, 0x85, 0x14, 0xb5, 0x2a, 0xce, 0xc3, 0x84, 0x1f, 0xd5, 0xa9, 0x5c, 0x0e, 0x9a, 0x0d,
-	0x37, 0x0b, 0x8e, 0x71, 0x6f, 0xc0, 0xfc, 0xd5, 0x30, 0xba, 0x15, 0x32, 0x5f, 0x75, 0x31, 0xa0,
-	0xed, 0x3a, 0x63, 0xdc, 0x60, 0x7f, 0xe4, 0x3d, 0x30, 0xc7, 0xa2, 0xc0, 0xe9, 0x7a, 0xdd, 0xd2,
-	0xa8, 0x7a, 0x5d, 0xf7, 0xcb, 0x0e, 0x9c, 0xce, 0x17, 0x81, 0xfc, 0xd8, 0x62, 0xc1, 0xcf, 0x33,
-	0x65, 0x54, 0xad, 0xc1, 0xf5, 0xae, 0xb8, 0x97, 0x79, 0x0e, 0x66, 0xf7, 0x7a, 0x41, 0xbb, 0x2e,
-	0x7f, 0x4b, 0x7d, 0x74, 0x29, 0x45, 0xcd, 0xc2, 0x61, 0x86, 0x92, 0x6d, 0xad, 0x7b, 0x41, 0xe8,
-	0xc5, 0xfd, 0x6d, 0x63, 0xed, 0x7a, 0x6b, 0xad, 0x69, 0x0c, 0x5a, 0x54, 0xee, 0x5b, 0x65, 0x30,
-	0x35, 0xd1, 0xa4, 0x21, 0xaf, 0xfa, 0x9c, 0xb1, 0x13, 0x03, 0x3b, 0xfd, 0xd0, 0x37, 0xa5, 0xd7,
-	0x95, 0xdc, 0x4d, 0xdf, 0x17, 0x1d, 0xb6, 0xa3, 0x07, 0x69, 0xe0, 0xa5, 0xb4, 0x5e, 0xeb, 0xcb,
-	0x78, 0xf6, 0x5a, 0x11, 0xd7, 0x42, 0x1b, 0x82, 0x6d, 0x14, 0xdb, 0x01, 0x82, 0x96, 0x84, 0xb6,
-	0x58, 0xf2, 0x29, 0x99, 0xc8, 0x2b, 0x17, 0x73, 0x39, 0x5c, 0xc9, 0x65, 0xef, 0x3a, 0x30, 0x19,
-	0xd3, 0x34, 0x56, 0xb7, 0xf1, 0x97, 0xc7, 0xba, 0x59, 0x48, 0xe3, 0xfe, 0x4e, 0xca, 0x02, 0xe6,
-	0xa6, 0xb5, 0x85, 0x71, 0x30, 0x0a, 0x29, 0x6e, 0x02, 0x64, 0x70, 0x14, 0x4e, 0x98, 0x18, 0x5b,
-	0x81, 0xaa, 0xd7, 0x4b, 0xa3, 0x0e, 0x1b, 0x20, 0x3e, 0x2b, 0x15, 0x2b, 0xf5, 0xa7, 0x10, 0x68,
-	0x68, 0xdc, 0xd7, 0x27, 0x21, 0x77, 0xfd, 0x46, 0x7a, 0x76, 0x01, 0xbf, 0x53, 0x60, 0x01, 0xbf,
-	0xd6, 0x64, 0x58, 0x11, 0x3f, 0x3b, 0xb0, 0x77, 0x5b, 0x5e, 0xa2, 0x8c, 0xf2, 0x05, 0x35, 0x46,
-	0xdb, 0x0c, 0x78, 0xf7, 0x70, 0xe9, 0x97, 0x8f, 0xb7, 0x5d, 0xb3, 0xf5, 0xb9, 0x22, 0x6a, 0x78,
-	0x8c, 0x68, 0xce, 0x03, 0x05, 0x7f, 0x7b, 0xc3, 0x2e, 0x1f, 0x71, 0xe8, 0xf8, 0x9c, 0x28, 0xca,
-	0x40, 0x9a, 0xf4, 0xda, 0xa9, 0x5c, 0x06, 0x5b, 0x45, 0x59, 0x95, 0xe0, 0x6a, 0xaa, 0x33, 0xc4,
-	0x6f, 0xb4, 0x24, 0x92, 0x4f, 0x40, 0x35, 0x49, 0xbd, 0x38, 0xbd, 0xcf, 0x0b, 0x5e, 0x3d, 0xe0,
-	0x3b, 0x8a, 0x09, 0x1a, 0x7e, 0xe4, 0x65, 0x80, 0x46, 0x10, 0x06, 0x49, 0xeb, 0x3e, 0x53, 0xee,
-	0x5c, 0xf1, 0x8b, 0x9a, 0x03, 0x5a, 0xdc, 0x98, 0x2b, 0xe3, 0x8b, 0x5a, 0x64, 0x8b, 0x2a, 0x7c,
-	0xd7, 0xd4, 0xae, 0x0c, 0x35, 0x06, 0x2d, 0x2a, 0xf7, 0x73, 0xf0, 0x68, 0xfe, 0x8d, 0x9c, 0x0c,
-	0xdd, 0x9b, 0x71, 0xd4, 0xeb, 0xe6, 0x37, 0x0e, 0xfe, 0x92, 0x0a, 0x05, 0x8e, 0x39, 0xf4, 0xfd,
-	0x20, 0xac, 0xe7, 0x1d, 0xfa, 0xd5, 0x20, 0xac, 0x23, 0xc7, 0x1c, 0xe3, 0x55, 0xc3, 0x9f, 0x39,
-	0x70, 0xfe, 0xa8, 0xa7, 0x7c, 0xec, 0x4c, 0x76, 0xcb, 0x8b, 0x43, 0x59, 0xc3, 0xcc, 0x3d, 0xc6,
-	0x0d, 0x2f, 0x0e, 0x91, 0x43, 0xc9, 0x01, 0x4c, 0x89, 0x12, 0x16, 0x19, 0xf6, 0x6e, 0x15, 0xf8,
-	0xaa, 0x90, 0xc5, 0xbe, 0xfa, 0x1c, 0x2d, 0x6a, 0x67, 0x50, 0x4a, 0x73, 0xaf, 0x00, 0xb9, 0x7e,
-	0x40, 0xe3, 0x38, 0xa8, 0x5b, 0x05, 0x37, 0xe4, 0x59, 0x98, 0xbd, 0xb9, 0x73, 0x7d, 0x6b, 0x3b,
-	0x0a, 0x42, 0x5e, 0x7e, 0x69, 0x5d, 0xff, 0x5e, 0xb1, 0xe0, 0x98, 0xa1, 0x72, 0xbf, 0x5d, 0x82,
-	0x19, 0xeb, 0xc5, 0xe9, 0x31, 0x62, 0x86, 0xdc, 0x0b, 0xd9, 0xd2, 0x31, 0x5f, 0xc8, 0x3e, 0x05,
-	0x95, 0x6e, 0xd4, 0x0e, 0xfc, 0x40, 0x57, 0x45, 0xce, 0xf2, 0x04, 0xbe, 0x84, 0xa1, 0xc6, 0x92,
-	0x14, 0xaa, 0xfa, 0x19, 0x99, 0xac, 0xf4, 0x28, 0x24, 0x64, 0xd2, 0xf6, 0x61, 0x9e, 0x87, 0x19,
-	0x41, 0xc4, 0x85, 0x29, 0xbe, 0xb8, 0x44, 0x85, 0x87, 0xbc, 0x07, 0xe7, 0xab, 0x2e, 0x41, 0x89,
-	0x71, 0x7f, 0x50, 0x82, 0x2a, 0xd2, 0x6e, 0xb4, 0x16, 0xd3, 0x7a, 0x42, 0xde, 0x03, 0xe5, 0x5e,
-	0xdc, 0x96, 0x23, 0xa5, 0x8f, 0xce, 0x2f, 0xe2, 0x26, 0x32, 0x78, 0xc6, 0x95, 0x97, 0x4e, 0x74,
-	0xc7, 0x51, 0x3e, 0xf2, 0x8e, 0xe3, 0x79, 0x98, 0x4b, 0x92, 0xd6, 0x76, 0x1c, 0x1c, 0x78, 0x29,
-	0x5b, 0x2a, 0xf2, 0x9c, 0x69, 0x12, 0xcc, 0x3b, 0x97, 0x0d, 0x12, 0xb3, 0xb4, 0xe4, 0x12, 0x2c,
-	0x98, 0xcb, 0x06, 0x1a, 0xa7, 0xfc, 0x58, 0x29, 0x4e, 0xa0, 0x3a, 0xc5, 0x6b, 0xae, 0x27, 0x24,
-	0x01, 0x0e, 0xb6, 0x21, 0xeb, 0x70, 0x3a, 0x03, 0x64, 0x8a, 0x88, 0xe3, 0xe9, 0xa2, 0xe4, 0x73,
-	0x3a, 0xc3, 0x87, 0xe9, 0x32, 0xd0, 0xc2, 0x7d, 0xdb, 0x81, 0x39, 0x3d, 0xa8, 0x0f, 0xe1, 0xac,
-	0x1a, 0x64, 0xcf, 0xaa, 0xeb, 0x63, 0xed, 0xf3, 0x52, 0xed, 0x11, 0xe1, 0xf8, 0xdf, 0x4c, 0x01,
-	0xf0, 0x47, 0xee, 0x01, 0xaf, 0x24, 0x3a, 0x0f, 0x13, 0x31, 0xed, 0x46, 0x79, 0xdb, 0x62, 0x14,
-	0xc8, 0x31, 0x3f, 0xb9, 0x6b, 0x66, 0xd8, 0x0d, 0xcb, 0xe4, 0x8f, 0xf1, 0x86, 0x65, 0x07, 0xce,
-	0x04, 0x61, 0x42, 0xfd, 0x5e, 0x2c, 0x5d, 0xe0, 0xe5, 0x28, 0xd1, 0xeb, 0xaf, 0x52, 0x7b, 0x8f,
-	0x64, 0x74, 0x66, 0x63, 0x18, 0x11, 0x0e, 0x6f, 0xcb, 0xc6, 0x53, 0x21, 0xf8, 0x06, 0x59, 0xb1,
-	0x8e, 0x87, 0x12, 0x8e, 0x9a, 0x82, 0x05, 0x5f, 0x34, 0xf4, 0xf6, 0xda, 0x74, 0xb3, 0x91, 0xf0,
-	0x3d, 0xcf, 0x0a, 0xbe, 0x2e, 0x08, 0xc4, 0xc5, 0x1d, 0x34, 0x34, 0xc3, 0xed, 0xae, 0x5a, 0x90,
-	0xdd, 0xc1, 0x49, 0xed, 0x4e, 0x9f, 0xbe, 0x66, 0x46, 0xbe, 0x96, 0x54, 0x7b, 0xc1, 0xec, 0xc8,
-	0xbd, 0xe0, 0x63, 0x30, 0x1f, 0x84, 0x2d, 0x1a, 0x07, 0x29, 0xad, 0x73, 0x43, 0x58, 0x9c, 0xe3,
-	0x03, 0xa1, 0xef, 0xae, 0x37, 0x32, 0x58, 0xcc, 0x51, 0x9b, 0x31, 0xbc, 0xbe, 0xb6, 0xb1, 0x38,
-	0x3f, 0x6c, 0x0c, 0xaf, 0xaf, 0x6d, 0xa0, 0xa1, 0x71, 0x5f, 0x2f, 0xc1, 0x19, 0x63, 0x51, 0xac,
-	0x2b, 0x41, 0x83, 0x2d, 0x2b, 0x5e, 0xdb, 0x2f, 0xee, 0xd1, 0xac, 0xaf, 0xa3, 0xe8, 0x18, 0x64,
-	0x47, 0x63, 0xd0, 0xa2, 0x62, 0x13, 0xee, 0xd3, 0x98, 0x57, 0xde, 0xe4, 0xcd, 0x6d, 0x4d, 0xc2,
-	0x51, 0x53, 0xf0, 0x0f, 0xb0, 0xd0, 0x38, 0x95, 0xc9, 0xb9, 0xfc, 0xc5, 0xf2, 0x9a, 0x41, 0xa1,
-	0x4d, 0xc7, 0x36, 0x3e, 0x5f, 0xcd, 0x36, 0x33, 0xb9, 0x59, 0xb1, 0xf1, 0xe9, 0x09, 0xd6, 0x58,
-	0xa5, 0x0e, 0xbf, 0xf8, 0x9b, 0x1c, 0x54, 0x87, 0x9f, 0x55, 0x34, 0x85, 0xfb, 0x1f, 0x0e, 0xbc,
-	0x7b, 0xe8, 0x50, 0x3c, 0x04, 0x1f, 0xda, 0xcb, 0xfa, 0xd0, 0xed, 0x31, 0x7d, 0xe8, 0x40, 0x17,
-	0x46, 0xf8, 0xd3, 0xbf, 0x73, 0x60, 0xde, 0xd0, 0x3f, 0x84, 0x7e, 0x36, 0x8a, 0xfb, 0x9a, 0x8a,
-	0xd1, 0x5b, 0x14, 0x86, 0x64, 0x3a, 0xf6, 0x36, 0xef, 0x98, 0x88, 0xfc, 0x56, 0x7d, 0xf5, 0x98,
-	0xf9, 0x88, 0x40, 0xec, 0x00, 0xa6, 0xf8, 0xd3, 0x97, 0xa4, 0x80, 0xf0, 0x33, 0x2b, 0x9c, 0xe7,
-	0x5a, 0x4c, 0xf8, 0xc9, 0x7f, 0x26, 0x28, 0xa5, 0xf1, 0x92, 0xb0, 0x20, 0x61, 0x16, 0x59, 0x97,
-	0x39, 0x21, 0x53, 0x12, 0x26, 0xe1, 0xa8, 0x29, 0xdc, 0x0e, 0x2c, 0x66, 0x99, 0xaf, 0xd3, 0x06,
-	0x3f, 0xd5, 0x1f, 0xab, 0x8f, 0xec, 0x84, 0xcb, 0x5b, 0x6d, 0xf6, 0xbc, 0xfc, 0x73, 0xe6, 0x55,
-	0x85, 0x40, 0x43, 0xe3, 0xfe, 0x91, 0x03, 0x8f, 0x0e, 0xe9, 0x4c, 0x81, 0xb9, 0xb0, 0xd4, 0x18,
-	0xff, 0x88, 0x27, 0xe6, 0x75, 0xda, 0xf0, 0xd4, 0x09, 0xd2, 0x3a, 0x6f, 0xae, 0x0b, 0x30, 0x2a,
-	0xbc, 0xfb, 0x6f, 0x0e, 0x9c, 0xca, 0xea, 0x9a, 0x90, 0x2b, 0x40, 0x44, 0x67, 0xd6, 0x83, 0xc4,
-	0x8f, 0x0e, 0x68, 0xdc, 0x67, 0x3d, 0x17, 0x5a, 0x9f, 0x95, 0x9c, 0xc8, 0xea, 0x00, 0x05, 0x0e,
-	0x69, 0x45, 0xbe, 0xcc, 0xaf, 0x75, 0xd5, 0x68, 0xab, 0x65, 0xb2, 0x53, 0xd8, 0x32, 0x31, 0x33,
-	0x69, 0xc7, 0xff, 0x5a, 0x1e, 0xda, 0xc2, 0xdd, 0x1f, 0x95, 0x61, 0x56, 0x35, 0xe7, 0xe7, 0x95,
-	0x82, 0x4e, 0x7a, 0x99, 0x07, 0xef, 0xe5, 0x13, 0x3c, 0x78, 0x9f, 0xb8, 0xd7, 0x09, 0x47, 0x3c,
-	0xc0, 0x36, 0x71, 0x8e, 0xe5, 0xe8, 0x77, 0x0d, 0x0a, 0x6d, 0x3a, 0xa6, 0x49, 0x3b, 0x38, 0xa0,
-	0xa2, 0xd1, 0x54, 0x56, 0x93, 0x4d, 0x85, 0x40, 0x43, 0xc3, 0x34, 0xa9, 0x07, 0x8d, 0x06, 0x8f,
-	0x35, 0x2c, 0x4d, 0xd8, 0xe8, 0x20, 0xc7, 0x30, 0x8a, 0x56, 0x14, 0xed, 0xcb, 0xf0, 0x42, 0x53,
-	0x5c, 0x8e, 0xa2, 0x7d, 0xe4, 0x18, 0x72, 0x0d, 0x1e, 0x0d, 0xa3, 0xb8, 0xe3, 0xb5, 0x83, 0xd7,
-	0x68, 0x5d, 0x4b, 0x91, 0x61, 0xc5, 0xff, 0x93, 0x0d, 0x1e, 0xdd, 0x1a, 0x24, 0xc1, 0x61, 0xed,
-	0xd8, 0xf2, 0xeb, 0xc6, 0xb4, 0x1e, 0xf8, 0xa9, 0xcd, 0x0d, 0xb2, 0xcb, 0x6f, 0x7b, 0x80, 0x02,
-	0x87, 0xb4, 0x72, 0xff, 0x9d, 0x6f, 0x50, 0x23, 0x1e, 0x86, 0x3c, 0xb4, 0x83, 0x7e, 0x76, 0x81,
-	0x4c, 0x1c, 0x63, 0x81, 0xb0, 0x83, 0x74, 0x12, 0x85, 0xfa, 0x20, 0x3d, 0x39, 0xf2, 0x20, 0x6d,
-	0x51, 0xb9, 0xdf, 0x9d, 0x84, 0xc7, 0x75, 0x45, 0x31, 0x4d, 0x6f, 0x45, 0xf1, 0x7e, 0x10, 0x36,
-	0xf9, 0xbd, 0xc8, 0x37, 0x1d, 0x98, 0x15, 0x0b, 0x45, 0x3e, 0xec, 0x13, 0xf7, 0x00, 0x7e, 0x11,
-	0xb5, 0xcb, 0x19, 0x49, 0xcb, 0xbb, 0x96, 0x94, 0xdc, 0xa3, 0x3e, 0x1b, 0x85, 0x19, 0x75, 0xc8,
-	0x6b, 0x00, 0xea, 0x83, 0x03, 0x8d, 0x22, 0xbe, 0xb9, 0xa0, 0x94, 0x43, 0xda, 0x30, 0x21, 0xd8,
-	0xae, 0x96, 0x80, 0x96, 0x34, 0xf2, 0x25, 0x07, 0xa6, 0xda, 0x62, 0x54, 0x44, 0x5e, 0xf7, 0x53,
-	0xc5, 0x8f, 0x8a, 0x3d, 0x1e, 0x7a, 0x53, 0x93, 0x23, 0x21, 0x85, 0x13, 0x84, 0xe9, 0x20, 0x6c,
-	0xc6, 0x34, 0x51, 0x29, 0x87, 0xf7, 0x5b, 0x61, 0xc4, 0xb2, 0x1f, 0xc5, 0x94, 0x07, 0x0d, 0x91,
-	0x57, 0xaf, 0x79, 0x6d, 0x2f, 0xf4, 0x69, 0xbc, 0x21, 0xc8, 0x8d, 0x7f, 0x97, 0x00, 0x54, 0x8c,
-	0x06, 0x0a, 0xf2, 0x27, 0x8f, 0x53, 0x90, 0x7f, 0xf6, 0xe3, 0xb0, 0x30, 0x30, 0x8d, 0x27, 0x7a,
-	0x7f, 0xf8, 0x11, 0x98, 0xb9, 0xcf, 0xa6, 0xee, 0x1f, 0x4f, 0x19, 0x27, 0xbd, 0x15, 0xd5, 0x79,
-	0x25, 0x7a, 0x6c, 0x66, 0x53, 0x46, 0x58, 0x45, 0xad, 0x0d, 0xeb, 0x71, 0xba, 0x06, 0xa2, 0x2d,
-	0x8f, 0xad, 0xcc, 0xae, 0x17, 0xd3, 0xf0, 0x81, 0xae, 0xcc, 0x6d, 0x2d, 0x01, 0x2d, 0x69, 0x84,
-	0x66, 0xae, 0x1b, 0xd6, 0xc6, 0xbc, 0x6e, 0x60, 0xe1, 0xde, 0xd0, 0xa2, 0xe1, 0x37, 0x1d, 0x98,
-	0x0f, 0x33, 0xeb, 0x55, 0x66, 0x9e, 0x5f, 0x28, 0xdc, 0x10, 0xc4, 0xf3, 0x9b, 0x2c, 0x0c, 0x73,
-	0xc2, 0xc9, 0x2a, 0x9c, 0x52, 0x33, 0x90, 0xad, 0x08, 0xd7, 0x87, 0x73, 0xcc, 0xa2, 0x31, 0x4f,
-	0x6f, 0x3d, 0x29, 0x99, 0x1a, 0xf5, 0xa4, 0x84, 0xec, 0xeb, 0xd7, 0x63, 0xd3, 0xc5, 0xbe, 0x1e,
-	0x83, 0x21, 0x2f, 0xc7, 0x6e, 0x40, 0xd5, 0x8f, 0xa9, 0x97, 0xde, 0xe7, 0x8b, 0x22, 0xfe, 0x89,
-	0x8e, 0x35, 0xc5, 0x00, 0x0d, 0x2f, 0xf7, 0xeb, 0x65, 0x38, 0xad, 0x86, 0x43, 0xa5, 0x64, 0xd9,
-	0x86, 0x23, 0xe4, 0x9a, 0xc8, 0x4d, 0x6f, 0x38, 0x97, 0x15, 0x02, 0x0d, 0x0d, 0x0b, 0x19, 0x45,
-	0xf4, 0x96, 0xe4, 0xaf, 0x28, 0x64, 0x54, 0x88, 0x0a, 0x4f, 0xbe, 0x3e, 0xf4, 0x01, 0x67, 0x01,
-	0x17, 0x72, 0x03, 0xf9, 0xe4, 0x13, 0xbe, 0xdc, 0x7c, 0xc3, 0x81, 0x53, 0xfb, 0x99, 0x3b, 0x60,
-	0xe5, 0x48, 0xc7, 0x29, 0x06, 0xc9, 0xde, 0x2a, 0x9b, 0x25, 0x98, 0x85, 0x27, 0x98, 0x17, 0xed,
-	0xfe, 0xa7, 0x03, 0xb6, 0x57, 0x39, 0x5e, 0xb4, 0x61, 0x3d, 0x6e, 0x2f, 0x1d, 0xf1, 0xb8, 0x5d,
-	0x05, 0x26, 0xe5, 0xe3, 0xc5, 0xa5, 0x13, 0x27, 0x88, 0x4b, 0x27, 0x47, 0x46, 0x32, 0xef, 0x81,
-	0x72, 0x2f, 0xa8, 0xcb, 0xd0, 0xd2, 0x24, 0x9c, 0x37, 0xd6, 0x91, 0xc1, 0xdd, 0x3f, 0x9f, 0x34,
-	0x87, 0x48, 0x79, 0xa3, 0xf4, 0x53, 0xd1, 0xed, 0x86, 0xae, 0xed, 0x11, 0x3d, 0xdf, 0x1a, 0xa8,
-	0xed, 0xf9, 0xc5, 0x93, 0x5f, 0x16, 0x8a, 0x01, 0x1a, 0x55, 0xda, 0x33, 0x7d, 0xc4, 0x4d, 0xe1,
-	0x4d, 0xa8, 0xb0, 0xe8, 0x9b, 0xe7, 0x81, 0x2a, 0x19, 0xa5, 0x2a, 0x97, 0x25, 0xfc, 0xee, 0xe1,
-	0xd2, 0x47, 0x4f, 0xae, 0x96, 0x6a, 0x8d, 0x9a, 0x3f, 0x49, 0xa0, 0xca, 0xfe, 0xe6, 0x97, 0x9a,
-	0x32, 0xae, 0x7f, 0x51, 0xbb, 0x13, 0x85, 0x28, 0xe4, 0xc6, 0xd4, 0xc8, 0x21, 0x21, 0x54, 0xf9,
-	0xb3, 0x71, 0x2e, 0x54, 0x84, 0xff, 0xdb, 0xfa, 0x7a, 0x51, 0x21, 0xee, 0x1e, 0x2e, 0x3d, 0x7f,
-	0x72, 0xa1, 0xba, 0x39, 0x1a, 0x11, 0xee, 0x3b, 0x65, 0xb3, 0x76, 0x65, 0x49, 0xd7, 0x4f, 0xc5,
-	0xda, 0x7d, 0x2e, 0xb7, 0x76, 0xcf, 0x0f, 0xac, 0xdd, 0x79, 0xf3, 0xcc, 0x3a, 0xb3, 0x1a, 0x1f,
-	0xea, 0x06, 0x79, 0xf4, 0x39, 0x93, 0x87, 0x05, 0xaf, 0xf6, 0x82, 0x98, 0x26, 0xdb, 0x71, 0x2f,
-	0x0c, 0xc2, 0x26, 0x5f, 0x8b, 0x15, 0x3b, 0x2c, 0xc8, 0xa0, 0x31, 0x4f, 0xef, 0x7e, 0x9b, 0x5f,
-	0xf4, 0x58, 0x95, 0x11, 0x6c, 0x8a, 0xdb, 0xfc, 0xf1, 0xbd, 0x28, 0xc6, 0xd2, 0x53, 0x2c, 0x5e,
-	0xdc, 0x0b, 0x1c, 0x49, 0x61, 0x7a, 0x4f, 0x3c, 0x46, 0x2c, 0xa0, 0x90, 0x5a, 0x3e, 0x6b, 0xe4,
-	0xaf, 0x4d, 0xd4, 0x1b, 0xc7, 0xbb, 0xe6, 0x4f, 0x54, 0xa2, 0xdc, 0x6f, 0x94, 0xe1, 0x54, 0xee,
-	0x8d, 0x38, 0xf9, 0x20, 0x54, 0xd4, 0x47, 0x00, 0xf2, 0xe9, 0x62, 0xfd, 0xe9, 0x36, 0x4d, 0x41,
-	0x3e, 0x0d, 0x50, 0xa7, 0xdd, 0x76, 0xd4, 0xe7, 0x51, 0xc7, 0xc4, 0x89, 0xa3, 0x0e, 0x1d, 0x9f,
-	0xae, 0x6b, 0x2e, 0x68, 0x71, 0x94, 0xe5, 0x67, 0x93, 0xe2, 0x9d, 0x65, 0xb6, 0xfc, 0xcc, 0x7a,
-	0x46, 0x30, 0xf5, 0x10, 0x9f, 0x11, 0x04, 0x70, 0x4a, 0xe8, 0xa7, 0x0b, 0x10, 0xee, 0xa3, 0xce,
-	0xe0, 0x51, 0xb6, 0x96, 0xd6, 0xb3, 0x6c, 0x30, 0xcf, 0xd7, 0xfd, 0x4a, 0x89, 0x05, 0x5e, 0x62,
-	0xa4, 0xaf, 0xa9, 0x6c, 0xed, 0xfb, 0x60, 0xca, 0xeb, 0xa5, 0xad, 0x68, 0xe0, 0x59, 0xe8, 0x2a,
-	0x87, 0xa2, 0xc4, 0x92, 0x4d, 0x98, 0xa8, 0x7b, 0xa9, 0xfa, 0xd0, 0xe8, 0x49, 0x94, 0x33, 0x39,
-	0x1a, 0x2f, 0xa5, 0xc8, 0xb9, 0x90, 0x27, 0x60, 0x22, 0xf5, 0x9a, 0x99, 0xcf, 0x2c, 0xed, 0x7a,
-	0xcd, 0x04, 0x39, 0xd4, 0xde, 0x54, 0x26, 0x8e, 0xd8, 0x54, 0x9e, 0xb7, 0x3e, 0x7e, 0x6b, 0xdd,
-	0x01, 0x0c, 0x7e, 0xb3, 0x96, 0xc7, 0xed, 0x59, 0x5a, 0xf7, 0xe7, 0x60, 0xd6, 0xfe, 0xa6, 0xed,
-	0xb1, 0x4a, 0xa0, 0xdd, 0x7f, 0x9a, 0x80, 0xb9, 0x4c, 0x91, 0x4a, 0x66, 0x89, 0x3b, 0x47, 0x2e,
-	0xf1, 0x27, 0x61, 0xb2, 0x1b, 0xf7, 0x42, 0x2a, 0x6b, 0x8f, 0xb4, 0x10, 0x66, 0xf1, 0x14, 0x05,
-	0x8e, 0xcd, 0x4a, 0x3d, 0xee, 0x63, 0x2f, 0x94, 0xc9, 0x62, 0x3d, 0x2b, 0xeb, 0x1c, 0x8a, 0x12,
-	0x4b, 0x3e, 0x0b, 0xb3, 0x09, 0x77, 0x85, 0xc2, 0x39, 0x48, 0x8b, 0xb9, 0x34, 0xf6, 0x07, 0x2c,
-	0x64, 0x15, 0x16, 0x3f, 0x76, 0xdb, 0x10, 0xcc, 0x88, 0x23, 0x5f, 0x70, 0xec, 0x8f, 0x76, 0x4c,
-	0x8d, 0x7d, 0xaf, 0x91, 0x2f, 0xfe, 0x11, 0xa6, 0x73, 0xef, 0x6f, 0x77, 0x74, 0xb5, 0xd9, 0x4e,
-	0x3f, 0x00, 0xb3, 0x85, 0x21, 0x26, 0xfb, 0x01, 0xa8, 0x76, 0xbc, 0x30, 0x68, 0xd0, 0x24, 0x15,
-	0xdf, 0x9f, 0xae, 0x8a, 0xd3, 0xce, 0x35, 0x05, 0x44, 0x83, 0xe7, 0x1f, 0x77, 0xe7, 0xbd, 0x12,
-	0x67, 0x95, 0xaa, 0xf5, 0x71, 0x77, 0x03, 0x46, 0x9b, 0xc6, 0xfd, 0x8e, 0x03, 0x67, 0x86, 0x8e,
-	0xc4, 0x4f, 0x6e, 0xfe, 0xcf, 0xfd, 0x4e, 0x09, 0x1e, 0x1d, 0x52, 0xba, 0x45, 0x0e, 0x1e, 0xcc,
-	0x57, 0x5d, 0x64, 0x61, 0xd8, 0xdc, 0xc8, 0x55, 0x71, 0xb2, 0x6d, 0xc7, 0xb8, 0xfe, 0xf2, 0xc3,
-	0x73, 0xfd, 0xee, 0x1f, 0x96, 0xc0, 0xfa, 0xe6, 0x10, 0xf9, 0x55, 0xbb, 0x30, 0xd1, 0x29, 0xa4,
-	0x90, 0x4e, 0x70, 0xd6, 0x55, 0x8d, 0x62, 0xbc, 0x86, 0x15, 0x39, 0xe6, 0x97, 0x69, 0xe9, 0xe8,
-	0x65, 0x4a, 0x02, 0x55, 0xfb, 0x59, 0x2e, 0xb8, 0xf6, 0xb3, 0x3a, 0x50, 0xf7, 0xf9, 0x0d, 0x47,
-	0xac, 0xae, 0x5c, 0x7f, 0x8c, 0x2f, 0x75, 0xee, 0xe1, 0x4b, 0x3f, 0x08, 0x95, 0x84, 0xb6, 0x1b,
-	0x2c, 0x7a, 0x93, 0x3e, 0x57, 0x2f, 0x85, 0x1d, 0x09, 0x47, 0x4d, 0xc1, 0x1f, 0xef, 0xb4, 0xdb,
-	0xd1, 0xad, 0x0b, 0x9d, 0x6e, 0xda, 0x97, 0xde, 0xd7, 0x3c, 0xde, 0xd1, 0x18, 0xb4, 0xa8, 0xdc,
-	0x1f, 0x39, 0x62, 0x22, 0x65, 0x10, 0xfe, 0x5c, 0xee, 0x5d, 0xc5, 0xf1, 0xe3, 0xd7, 0x3e, 0x80,
-	0xaf, 0xdf, 0x35, 0x16, 0xf0, 0x35, 0x22, 0xf3, 0x48, 0xd2, 0xfe, 0x56, 0x8e, 0x82, 0xa1, 0x25,
-	0x2c, 0x63, 0x30, 0xe5, 0xa3, 0x0c, 0xc6, 0xfd, 0x57, 0x07, 0x32, 0xfb, 0x02, 0xe9, 0xc0, 0x24,
-	0xd3, 0xa0, 0x5f, 0xc0, 0x13, 0x4c, 0x9b, 0x2f, 0x33, 0x26, 0xb9, 0x20, 0xf8, 0x9f, 0x28, 0xa4,
-	0x90, 0x40, 0xc6, 0xde, 0xa5, 0xb1, 0x9f, 0xfa, 0xda, 0xd2, 0x58, 0xe8, 0x2e, 0xbf, 0xeb, 0xab,
-	0x83, 0x78, 0xf7, 0x39, 0x58, 0x18, 0xd0, 0x88, 0x97, 0xea, 0x47, 0xea, 0xc5, 0xa9, 0xb5, 0xf0,
-	0xf8, 0x73, 0x0f, 0x14, 0x38, 0x16, 0xbb, 0x9f, 0xce, 0xb3, 0x27, 0x5f, 0x73, 0x60, 0x21, 0xc9,
-	0xf3, 0x7b, 0x20, 0xa3, 0xa6, 0x73, 0x51, 0x03, 0x28, 0x1c, 0xd4, 0xc0, 0xfd, 0x9e, 0x74, 0x46,
-	0xe2, 0x9f, 0x1d, 0xe8, 0x4d, 0xc4, 0x19, 0xb9, 0x89, 0x30, 0xb3, 0xf2, 0x5b, 0xb4, 0xde, 0x6b,
-	0x0f, 0xd4, 0x81, 0xec, 0x48, 0x38, 0x6a, 0x8a, 0xcc, 0x27, 0x51, 0xca, 0x47, 0x7e, 0x12, 0xe5,
-	0x59, 0x98, 0xb5, 0x1f, 0x47, 0xf3, 0xa4, 0x98, 0xbc, 0x04, 0xb0, 0xdf, 0x51, 0x63, 0x86, 0x2a,
-	0xf7, 0x61, 0x8d, 0xc9, 0x23, 0x3f, 0xac, 0xf1, 0x14, 0x54, 0xe4, 0xbf, 0x0f, 0x50, 0x49, 0x57,
-	0x51, 0x64, 0x22, 0x61, 0xa8, 0xb1, 0xcc, 0x29, 0x74, 0xbc, 0xb0, 0xe7, 0xb5, 0xd9, 0x08, 0xc9,
-	0x32, 0x27, 0x6d, 0x50, 0xd7, 0x34, 0x06, 0x2d, 0x2a, 0x66, 0x22, 0xf9, 0x0f, 0x16, 0x64, 0x8a,
-	0xa5, 0x9c, 0x23, 0x8b, 0xa5, 0xb2, 0xd5, 0x39, 0xa5, 0x63, 0x55, 0xe7, 0xd8, 0x85, 0x33, 0xe5,
-	0x7b, 0x16, 0xce, 0xbc, 0xd7, 0x3c, 0x8f, 0x13, 0x15, 0x36, 0x33, 0xc3, 0x9e, 0xc6, 0x11, 0x17,
-	0xa6, 0x7c, 0x4f, 0x57, 0x3b, 0xce, 0x8a, 0x80, 0x68, 0x6d, 0x95, 0x13, 0x49, 0x4c, 0x6d, 0xf9,
-	0xad, 0x77, 0xce, 0x3d, 0xf2, 0xfd, 0x77, 0xce, 0x3d, 0xf2, 0xf6, 0x3b, 0xe7, 0x1e, 0xf9, 0xfc,
-	0x9d, 0x73, 0xce, 0x5b, 0x77, 0xce, 0x39, 0xdf, 0xbf, 0x73, 0xce, 0x79, 0xfb, 0xce, 0x39, 0xe7,
-	0x9f, 0xef, 0x9c, 0x73, 0x7e, 0xfb, 0x87, 0xe7, 0x1e, 0x79, 0xb9, 0xa2, 0xd6, 0xea, 0xff, 0x06,
-	0x00, 0x00, 0xff, 0xff, 0x51, 0x74, 0xae, 0x7e, 0x1f, 0x6b, 0x00, 0x00,
+	// 6120 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x5d, 0x6c, 0x24, 0xc7,
+	0x71, 0xb0, 0x66, 0x97, 0x3f, 0xbb, 0xc5, 0x9f, 0x3b, 0xb6, 0x74, 0x32, 0x7d, 0x9f, 0x7c, 0x3c,
+	0x8c, 0x60, 0x5b, 0x5f, 0x6c, 0x93, 0x91, 0xa2, 0x38, 0xb2, 0x95, 0xd8, 0xe1, 0x92, 0xf7, 0xc3,
+	0x3b, 0x1e, 0x8f, 0x2a, 0x52, 0x3a, 0x40, 0xfe, 0x89, 0x86, 0xb3, 0xbd, 0xbb, 0x73, 0xdc, 0x9d,
+	0x59, 0xcd, 0xcc, 0xf2, 0x6e, 0x15, 0xdb, 0xb1, 0x13, 0x3b, 0x10, 0x1c, 0xc9, 0x08, 0x62, 0xd8,
+	0x2f, 0xb1, 0x81, 0x38, 0x79, 0x08, 0x62, 0x20, 0x0f, 0x46, 0x10, 0x20, 0x79, 0x8c, 0x03, 0x04,
+	0x7a, 0x72, 0x0c, 0x23, 0x48, 0x84, 0x20, 0x60, 0xa2, 0x33, 0x02, 0x04, 0xc9, 0x83, 0xf3, 0x07,
+	0x04, 0xb8, 0xa7, 0xa0, 0xff, 0x7b, 0x66, 0x77, 0x8f, 0xe4, 0xed, 0xdc, 0xd9, 0x70, 0xde, 0xb8,
+	0x55, 0xd5, 0x55, 0xd5, 0x3f, 0x55, 0x5d, 0x5d, 0x5d, 0x3d, 0x84, 0x8d, 0x66, 0x90, 0xb6, 0x7a,
+	0x7b, 0xcb, 0x7e, 0xd4, 0x59, 0xf1, 0xe2, 0x66, 0xd4, 0x8d, 0xa3, 0x9b, 0xfc, 0x8f, 0x0f, 0xf9,
+	0xf5, 0x95, 0xee, 0x7e, 0x73, 0xc5, 0xeb, 0x06, 0xc9, 0x8a, 0xd7, 0xed, 0xb6, 0x03, 0xdf, 0x4b,
+	0x83, 0x28, 0x5c, 0x39, 0x78, 0xda, 0x6b, 0x77, 0x5b, 0xde, 0xd3, 0x2b, 0x4d, 0x1a, 0xd2, 0xd8,
+	0x4b, 0x69, 0x7d, 0xb9, 0x1b, 0x47, 0x69, 0x44, 0x3e, 0x62, 0x58, 0x2d, 0x2b, 0x56, 0xfc, 0x8f,
+	0x5f, 0xf1, 0xeb, 0xcb, 0xdd, 0xfd, 0xe6, 0x32, 0x63, 0xb5, 0x6c, 0xb1, 0x5a, 0x56, 0xac, 0xce,
+	0x7e, 0xc8, 0xd2, 0xa2, 0x19, 0x35, 0xa3, 0x15, 0xce, 0x71, 0xaf, 0xd7, 0xe0, 0xbf, 0xf8, 0x0f,
+	0xfe, 0x97, 0x90, 0x74, 0xd6, 0xdd, 0x7f, 0x2e, 0x59, 0x0e, 0x22, 0xa6, 0xdb, 0x8a, 0x1f, 0xc5,
+	0x74, 0xe5, 0x60, 0x40, 0x9b, 0xb3, 0xcf, 0x1a, 0x9a, 0x8e, 0xe7, 0xb7, 0x82, 0x90, 0xc6, 0x7d,
+	0xd3, 0xa1, 0x0e, 0x4d, 0xbd, 0x61, 0xad, 0x56, 0x46, 0xb5, 0x8a, 0x7b, 0x61, 0x1a, 0x74, 0xe8,
+	0x40, 0x83, 0x0f, 0x1f, 0xd5, 0x20, 0xf1, 0x5b, 0xb4, 0xe3, 0xe5, 0xdb, 0xb9, 0xaf, 0xc2, 0xdc,
+	0xea, 0x8d, 0x9d, 0xd5, 0x5e, 0xda, 0x5a, 0x8b, 0xc2, 0x46, 0xd0, 0x24, 0x3f, 0x0f, 0x33, 0x7e,
+	0xbb, 0x97, 0xa4, 0x34, 0xde, 0xf2, 0x3a, 0x74, 0xd1, 0x39, 0xef, 0x3c, 0x55, 0xad, 0x3d, 0xfa,
+	0xd6, 0xe1, 0xd2, 0x23, 0x77, 0x0e, 0x97, 0x66, 0xd6, 0x0c, 0x0a, 0x6d, 0x3a, 0xf2, 0xff, 0x61,
+	0x3a, 0x8e, 0xda, 0x74, 0x15, 0xb7, 0x16, 0x4b, 0xbc, 0xc9, 0x29, 0xd9, 0x64, 0x1a, 0x05, 0x18,
+	0x15, 0xde, 0xfd, 0x7e, 0x09, 0x60, 0xb5, 0xdb, 0xdd, 0x8e, 0xa3, 0x9b, 0xd4, 0x4f, 0xc9, 0x2b,
+	0x50, 0x61, 0xa3, 0x50, 0xf7, 0x52, 0x8f, 0x4b, 0x9b, 0x79, 0xe6, 0x67, 0x97, 0x45, 0x67, 0x96,
+	0xed, 0xce, 0x98, 0x99, 0x63, 0xd4, 0xcb, 0x07, 0x4f, 0x2f, 0x5f, 0xdf, 0x63, 0xed, 0xaf, 0xd1,
+	0xd4, 0xab, 0x11, 0x29, 0x0c, 0x0c, 0x0c, 0x35, 0x57, 0xb2, 0x0f, 0x13, 0x49, 0x97, 0xfa, 0x5c,
+	0xb1, 0x99, 0x67, 0x36, 0x96, 0xef, 0x7b, 0x7d, 0x2c, 0x1b, 0xb5, 0x77, 0xba, 0xd4, 0xaf, 0xcd,
+	0x4a, 0xb1, 0x13, 0xec, 0x17, 0x72, 0x21, 0x24, 0x81, 0xa9, 0x24, 0xf5, 0xd2, 0x5e, 0xb2, 0x58,
+	0xe6, 0xe2, 0xae, 0x16, 0x23, 0x8e, 0xb3, 0xac, 0xcd, 0x4b, 0x81, 0x53, 0xe2, 0x37, 0x4a, 0x51,
+	0xee, 0xdf, 0x3b, 0x30, 0x6f, 0x88, 0x37, 0x83, 0x24, 0x25, 0x9f, 0x1c, 0x18, 0xd6, 0xe5, 0xe3,
+	0x0d, 0x2b, 0x6b, 0xcd, 0x07, 0xf5, 0xb4, 0x14, 0x56, 0x51, 0x10, 0x6b, 0x48, 0x6f, 0xc2, 0x64,
+	0x90, 0xd2, 0x4e, 0xb2, 0x58, 0x3a, 0x5f, 0x7e, 0x6a, 0xe6, 0x99, 0x0b, 0x85, 0x74, 0xb2, 0x36,
+	0x27, 0x25, 0x4e, 0x6e, 0x30, 0xde, 0x28, 0x44, 0xb8, 0xff, 0x0c, 0x76, 0xe7, 0xd8, 0x50, 0x93,
+	0xa7, 0x61, 0x26, 0x89, 0x7a, 0xb1, 0x4f, 0x91, 0x76, 0xa3, 0x64, 0xd1, 0x39, 0x5f, 0x66, 0x2b,
+	0x8e, 0x2d, 0xd0, 0x1d, 0x03, 0x46, 0x9b, 0x86, 0xfc, 0x96, 0x03, 0xb3, 0x75, 0x9a, 0xa4, 0x41,
+	0xc8, 0xe5, 0x2b, 0xcd, 0x5f, 0x18, 0x4f, 0x73, 0x05, 0x5c, 0x37, 0x9c, 0x6b, 0x8f, 0xc9, 0x5e,
+	0xcc, 0x5a, 0xc0, 0x04, 0x33, 0xc2, 0x99, 0x95, 0xd5, 0x69, 0xe2, 0xc7, 0x41, 0x97, 0xfd, 0xe6,
+	0x4b, 0xc5, 0xb2, 0xb2, 0x75, 0x83, 0x42, 0x9b, 0x8e, 0xec, 0xc3, 0x24, 0xb3, 0xa2, 0x64, 0x71,
+	0x82, 0x2b, 0x7f, 0x71, 0x0c, 0xe5, 0xe5, 0x70, 0x32, 0xeb, 0x34, 0xe3, 0xce, 0x7e, 0x25, 0x28,
+	0x64, 0x90, 0x37, 0x1d, 0x58, 0x94, 0x26, 0x8e, 0x54, 0x0c, 0xe5, 0x8d, 0x56, 0x90, 0xd2, 0x76,
+	0x90, 0xa4, 0x8b, 0x93, 0x5c, 0x81, 0x95, 0xe3, 0x2d, 0xa9, 0x4b, 0x71, 0xd4, 0xeb, 0x5e, 0x0d,
+	0xc2, 0x7a, 0xed, 0xbc, 0x94, 0xb4, 0xb8, 0x36, 0x82, 0x31, 0x8e, 0x14, 0x49, 0xbe, 0xea, 0xc0,
+	0xd9, 0xd0, 0xeb, 0xd0, 0xa4, 0xeb, 0xb1, 0x49, 0x15, 0xe8, 0x5a, 0xdb, 0xf3, 0xf7, 0xb9, 0x46,
+	0x53, 0xf7, 0xa7, 0x91, 0x2b, 0x35, 0x3a, 0xbb, 0x35, 0x92, 0x35, 0xde, 0x43, 0x2c, 0xf9, 0x3d,
+	0x07, 0x16, 0xa2, 0xb8, 0xdb, 0xf2, 0x42, 0x5a, 0x57, 0xd8, 0x64, 0x71, 0x9a, 0x5b, 0xdc, 0x27,
+	0xc6, 0x98, 0x9f, 0xeb, 0x79, 0x9e, 0xd7, 0xa2, 0x30, 0x48, 0xa3, 0x78, 0x87, 0xa6, 0x69, 0x10,
+	0x36, 0x93, 0xda, 0x99, 0x3b, 0x87, 0x4b, 0x0b, 0x03, 0x54, 0x38, 0xa8, 0x0c, 0xb9, 0x0d, 0x33,
+	0x49, 0x3f, 0xf4, 0x6f, 0x04, 0x61, 0x3d, 0xba, 0x95, 0x2c, 0x56, 0xc6, 0x36, 0xd9, 0x1d, 0xcd,
+	0x4d, 0x1a, 0x9d, 0xe1, 0x8e, 0xb6, 0xa8, 0xe1, 0x53, 0x66, 0x16, 0x51, 0xb5, 0xe8, 0x29, 0x33,
+	0xcb, 0xe8, 0x1e, 0x62, 0xc9, 0x17, 0x1d, 0x98, 0x4b, 0x82, 0x66, 0xe8, 0xa5, 0xbd, 0x98, 0x5e,
+	0xa5, 0xfd, 0x64, 0x11, 0xb8, 0x22, 0x97, 0xc6, 0x19, 0x12, 0x8b, 0x5f, 0xed, 0x8c, 0x54, 0x70,
+	0xce, 0x86, 0x26, 0x98, 0x15, 0x3a, 0xcc, 0xbe, 0xcc, 0x6a, 0x9e, 0x29, 0xd6, 0xbe, 0xcc, 0x5a,
+	0x1e, 0x29, 0xd2, 0xfd, 0xcb, 0x12, 0x9c, 0xce, 0xef, 0x38, 0xe4, 0x0f, 0x1c, 0x38, 0x75, 0xf3,
+	0x56, 0xba, 0x1b, 0xed, 0xd3, 0x30, 0xa9, 0xf5, 0x99, 0x83, 0xe0, 0xee, 0x76, 0xe6, 0x99, 0x57,
+	0x0a, 0xdc, 0xd8, 0x96, 0xaf, 0x64, 0x45, 0x5c, 0x08, 0xd3, 0xb8, 0x5f, 0x7b, 0x97, 0xec, 0xcc,
+	0xa9, 0x2b, 0x37, 0x76, 0x6d, 0x2c, 0xe6, 0x35, 0x3a, 0xfb, 0xba, 0x03, 0x8f, 0x0d, 0x63, 0x41,
+	0x4e, 0x43, 0x79, 0x9f, 0xf6, 0x45, 0x14, 0x83, 0xec, 0x4f, 0xf2, 0x32, 0x4c, 0x1e, 0x78, 0xed,
+	0x1e, 0x95, 0xd1, 0xc0, 0xfa, 0x18, 0xbd, 0xd0, 0x6a, 0xa1, 0x60, 0xf9, 0xd1, 0xd2, 0x73, 0x8e,
+	0xfb, 0x57, 0x65, 0x98, 0xb1, 0x36, 0x86, 0x87, 0x10, 0xde, 0xb4, 0x33, 0xe1, 0xcd, 0x95, 0x62,
+	0x36, 0xb4, 0x91, 0xf1, 0x4d, 0x9a, 0x8b, 0x6f, 0x36, 0x0b, 0x92, 0x77, 0xcf, 0x00, 0x87, 0xbc,
+	0x0a, 0xd5, 0xa8, 0xcb, 0x02, 0x57, 0xb6, 0x5b, 0x4e, 0x8c, 0x3d, 0x73, 0xd7, 0x15, 0xaf, 0xda,
+	0xdc, 0x9d, 0xc3, 0xa5, 0xaa, 0xfe, 0x89, 0x46, 0x8a, 0xfb, 0x77, 0x0e, 0x3c, 0x66, 0x29, 0xb8,
+	0x16, 0x85, 0xf5, 0x80, 0xcf, 0xe8, 0x79, 0x98, 0x48, 0xfb, 0x5d, 0x15, 0x1a, 0xeb, 0x31, 0xda,
+	0xed, 0x77, 0x29, 0x72, 0x0c, 0x0b, 0x86, 0x3b, 0x34, 0x49, 0xbc, 0x26, 0xcd, 0x07, 0xc3, 0xd7,
+	0x04, 0x18, 0x15, 0x9e, 0xc4, 0x40, 0xda, 0x5e, 0x92, 0xee, 0xc6, 0x5e, 0x98, 0x70, 0xf6, 0xbb,
+	0x41, 0x87, 0xca, 0xa1, 0xfd, 0x99, 0xe3, 0x2d, 0x14, 0xd6, 0xa2, 0xf6, 0xf8, 0x9d, 0xc3, 0x25,
+	0xb2, 0x39, 0xc0, 0x09, 0x87, 0x70, 0x77, 0xbf, 0xea, 0xc0, 0xe3, 0xc3, 0x63, 0x17, 0xf2, 0x3e,
+	0x98, 0x4a, 0x68, 0x7c, 0x40, 0x63, 0xd9, 0x3b, 0x33, 0x1f, 0x1c, 0x8a, 0x12, 0x4b, 0x56, 0xa0,
+	0xaa, 0x1d, 0xac, 0xec, 0xe3, 0x82, 0x24, 0xad, 0x1a, 0xaf, 0x6c, 0x68, 0xd8, 0xa0, 0xb1, 0x1f,
+	0x32, 0xd2, 0xd1, 0x83, 0xc6, 0x0f, 0x12, 0x1c, 0xe3, 0xfe, 0x83, 0x03, 0xa7, 0x2c, 0xad, 0x1e,
+	0x42, 0x10, 0xbb, 0x9f, 0x0d, 0x62, 0x2f, 0x16, 0xb3, 0x92, 0x47, 0x44, 0xb1, 0x7f, 0x32, 0x05,
+	0x0b, 0xf6, 0x7a, 0xe7, 0xce, 0x97, 0x1f, 0x9b, 0x68, 0x37, 0x7a, 0x11, 0x37, 0xe5, 0x80, 0x9b,
+	0x63, 0x93, 0x00, 0xa3, 0xc2, 0xb3, 0x11, 0xec, 0x7a, 0x69, 0x4b, 0x8e, 0xb6, 0x1e, 0xc1, 0x6d,
+	0x2f, 0x6d, 0x21, 0xc7, 0x90, 0x8f, 0xc1, 0x7c, 0xea, 0xc5, 0x4d, 0x9a, 0x22, 0x3d, 0x08, 0x12,
+	0x65, 0x29, 0xd5, 0xda, 0xe3, 0x92, 0x76, 0x7e, 0x37, 0x83, 0xc5, 0x1c, 0x35, 0x09, 0x61, 0xa2,
+	0x45, 0xdb, 0x1d, 0x19, 0xbc, 0x6c, 0x17, 0x64, 0xd8, 0xbc, 0xa3, 0x97, 0x69, 0xbb, 0x53, 0xab,
+	0x30, 0x7d, 0xd9, 0x5f, 0xc8, 0xe5, 0x90, 0x5f, 0x77, 0xa0, 0xba, 0xdf, 0x4b, 0xd2, 0xa8, 0x13,
+	0xbc, 0x46, 0x17, 0x2b, 0x5c, 0xea, 0x8b, 0x45, 0x4a, 0xbd, 0xaa, 0x98, 0x0b, 0x33, 0xd7, 0x3f,
+	0xd1, 0x88, 0x25, 0xaf, 0xc1, 0xf4, 0x7e, 0x12, 0x85, 0x21, 0x65, 0xe1, 0x08, 0xd3, 0x60, 0xa7,
+	0x50, 0x0d, 0x04, 0xeb, 0xda, 0x0c, 0x9b, 0x52, 0xf9, 0x03, 0x95, 0x40, 0x3e, 0x00, 0xf5, 0x20,
+	0xa6, 0x7e, 0x1a, 0xc5, 0xfd, 0x45, 0x28, 0x7e, 0x00, 0xd6, 0x15, 0x73, 0x31, 0x00, 0xfa, 0x27,
+	0x1a, 0xb1, 0xe4, 0x00, 0xa6, 0xba, 0xed, 0x5e, 0x33, 0x08, 0x17, 0x67, 0xb8, 0x02, 0x58, 0xa4,
+	0x02, 0xdb, 0x9c, 0x73, 0x0d, 0x98, 0x0b, 0x11, 0x7f, 0xa3, 0x94, 0x46, 0x9e, 0x84, 0x49, 0xbf,
+	0xe5, 0xc5, 0xe9, 0xe2, 0x2c, 0x5f, 0xa4, 0xda, 0x6a, 0xd6, 0x18, 0x10, 0x05, 0xce, 0xfd, 0x4f,
+	0x07, 0xce, 0x8e, 0xee, 0x95, 0x30, 0x1f, 0xbf, 0x17, 0x27, 0xc2, 0x1b, 0x57, 0x6c, 0xf3, 0xe1,
+	0x60, 0x54, 0x78, 0xf2, 0x39, 0x98, 0xbe, 0x29, 0xe7, 0xb9, 0x54, 0xfc, 0x3c, 0x5f, 0x91, 0xf3,
+	0xac, 0xe5, 0x5f, 0x51, 0x73, 0x2d, 0x85, 0x32, 0x55, 0xe9, 0x6d, 0xbf, 0xdd, 0xab, 0x2b, 0x1f,
+	0xa8, 0x49, 0x2f, 0x08, 0x30, 0x2a, 0xbc, 0x7b, 0x58, 0x86, 0x33, 0x43, 0x2d, 0x88, 0x2c, 0x03,
+	0xf0, 0x48, 0xe3, 0x62, 0xc0, 0x0e, 0x81, 0xe2, 0xd8, 0x3b, 0xcf, 0x02, 0x83, 0x97, 0x34, 0x14,
+	0x2d, 0x0a, 0xf2, 0x19, 0x80, 0xae, 0x17, 0x7b, 0x1d, 0x9a, 0xd2, 0x58, 0xb9, 0xb9, 0xcb, 0x63,
+	0xf4, 0x9b, 0x29, 0xb1, 0xad, 0x18, 0x9a, 0xb0, 0x44, 0x83, 0x12, 0xb4, 0xe4, 0xb1, 0x43, 0x6e,
+	0x4c, 0xdb, 0xd4, 0x4b, 0xe8, 0x96, 0x71, 0xfd, 0xfa, 0x90, 0x8b, 0x06, 0x85, 0x36, 0x1d, 0xdb,
+	0x83, 0x78, 0x17, 0x12, 0xe9, 0xbe, 0xf4, 0x1e, 0xc4, 0x3b, 0x99, 0xa0, 0xc4, 0x92, 0x37, 0x1c,
+	0x98, 0x6f, 0x04, 0x6d, 0x6a, 0xa4, 0xcb, 0x53, 0xe9, 0xe6, 0x98, 0x3d, 0xbc, 0x68, 0x33, 0x35,
+	0xde, 0x33, 0x03, 0x4e, 0x30, 0x27, 0x9b, 0x4d, 0xf0, 0x01, 0x8d, 0xb9, 0xdb, 0x9d, 0xca, 0x4e,
+	0xf0, 0x4b, 0x02, 0x8c, 0x0a, 0xef, 0x7e, 0xb5, 0x04, 0x8b, 0xa3, 0x96, 0x10, 0xe9, 0xb2, 0x85,
+	0x92, 0xbe, 0xe4, 0xc5, 0x89, 0x0c, 0xb4, 0xc7, 0x39, 0xa9, 0x49, 0xa6, 0x2f, 0x79, 0xb1, 0xbd,
+	0xde, 0x38, 0x77, 0x54, 0x62, 0x48, 0x13, 0x26, 0xd2, 0xb6, 0x57, 0x44, 0x2e, 0xc7, 0x12, 0x67,
+	0xe2, 0xa2, 0xcd, 0xd5, 0x04, 0xb9, 0x00, 0xf2, 0x04, 0x4c, 0xb4, 0x83, 0x3d, 0x16, 0x39, 0xb2,
+	0x85, 0xcb, 0xb7, 0x83, 0xcd, 0x60, 0x2f, 0x41, 0x0e, 0x75, 0x7f, 0xe0, 0x0c, 0x19, 0x15, 0xe9,
+	0x33, 0xd9, 0x5a, 0xa2, 0xe1, 0x41, 0x10, 0x47, 0x61, 0x87, 0x86, 0x69, 0x3e, 0x2d, 0x79, 0xc1,
+	0xa0, 0xd0, 0xa6, 0x23, 0xbf, 0x36, 0xc4, 0x00, 0xc6, 0xc9, 0xc8, 0x49, 0x75, 0x8e, 0x6d, 0x03,
+	0xee, 0x5b, 0x93, 0x43, 0x1c, 0x98, 0xde, 0x88, 0xc8, 0x33, 0x00, 0x2c, 0xf8, 0xd9, 0x8e, 0x69,
+	0x23, 0xb8, 0x2d, 0x7b, 0xa5, 0x59, 0x6e, 0x69, 0x0c, 0x5a, 0x54, 0xaa, 0xcd, 0x4e, 0xaf, 0xc1,
+	0xda, 0x94, 0x06, 0xdb, 0x08, 0x0c, 0x5a, 0x54, 0xe4, 0x59, 0x98, 0x0a, 0x3a, 0x5e, 0x93, 0xaa,
+	0xb1, 0x7f, 0x82, 0xd9, 0xd3, 0x06, 0x87, 0xdc, 0x3d, 0x5c, 0x9a, 0xd7, 0x0a, 0x71, 0x10, 0x4a,
+	0x5a, 0xf2, 0x2d, 0x07, 0x66, 0xfd, 0xa8, 0xd3, 0x89, 0xc2, 0x4d, 0x6f, 0x8f, 0xb6, 0x55, 0xda,
+	0xa9, 0xf9, 0x40, 0xf6, 0xe8, 0xe5, 0x35, 0x4b, 0x92, 0x38, 0x00, 0xea, 0x4c, 0x9a, 0x8d, 0xc2,
+	0x8c, 0x4a, 0xb6, 0xd9, 0x4d, 0xde, 0xdb, 0xec, 0xc8, 0x9f, 0x3a, 0xb0, 0x20, 0xda, 0xae, 0x86,
+	0x61, 0x94, 0xca, 0x3c, 0xa0, 0xc8, 0x1b, 0xb5, 0x1f, 0x64, 0x9f, 0x2c, 0x71, 0xa2, 0x63, 0xef,
+	0x96, 0x3a, 0x2e, 0x0c, 0xe0, 0x71, 0x50, 0xc3, 0xb3, 0x1f, 0x87, 0x85, 0x81, 0xb1, 0x19, 0x72,
+	0xb2, 0x7d, 0xcc, 0x3e, 0xd9, 0x56, 0xad, 0x33, 0xe9, 0xd9, 0x75, 0x78, 0x7c, 0xb8, 0x22, 0x27,
+	0xe1, 0xe2, 0xfe, 0xae, 0x03, 0xef, 0x1a, 0xb1, 0xc1, 0xeb, 0xf0, 0xde, 0x19, 0x15, 0xde, 0x93,
+	0x4f, 0x43, 0x99, 0x86, 0x07, 0xd2, 0x04, 0xd7, 0xc6, 0x18, 0xed, 0x0b, 0xe1, 0x81, 0x18, 0xc4,
+	0xe9, 0x3b, 0x87, 0x4b, 0xe5, 0x0b, 0xe1, 0x01, 0x32, 0xc6, 0xee, 0x97, 0xa6, 0x32, 0xc7, 0x87,
+	0x1d, 0x75, 0x56, 0xe5, 0x5a, 0xca, 0xc3, 0xc3, 0x66, 0x91, 0x93, 0x6c, 0x9d, 0x8d, 0x44, 0x9a,
+	0x59, 0xca, 0x22, 0xaf, 0x3b, 0x3c, 0xb9, 0xab, 0xce, 0x54, 0x32, 0xdc, 0x78, 0x00, 0x89, 0x66,
+	0x3b, 0x5f, 0xac, 0x80, 0x68, 0x8b, 0x66, 0xc6, 0xd1, 0x15, 0x79, 0x96, 0x7c, 0xd0, 0xa1, 0xd2,
+	0xbf, 0x0a, 0x4f, 0x7a, 0x00, 0x49, 0x3f, 0xf4, 0xb7, 0xa3, 0x76, 0xe0, 0xf7, 0xe5, 0x11, 0x7b,
+	0xdc, 0x1c, 0xa1, 0x60, 0x26, 0x22, 0x14, 0xf3, 0x1b, 0x2d, 0x41, 0xe4, 0x9b, 0x0e, 0x2c, 0x04,
+	0xcd, 0x30, 0x8a, 0xe9, 0x7a, 0xd0, 0x68, 0xd0, 0x98, 0x86, 0x3e, 0x55, 0xfb, 0xf8, 0xee, 0x18,
+	0xe2, 0x55, 0x7a, 0x6b, 0x23, 0xcf, 0xdb, 0xd8, 0xde, 0x00, 0x0a, 0x07, 0x35, 0x21, 0x1e, 0x4c,
+	0x04, 0x61, 0x23, 0x92, 0x5e, 0xe2, 0xe3, 0x63, 0x68, 0xb4, 0x11, 0x36, 0x22, 0x63, 0x19, 0xec,
+	0x17, 0x72, 0xd6, 0x64, 0x13, 0x1e, 0x8b, 0xe5, 0x11, 0xec, 0x72, 0x90, 0xb0, 0xb8, 0x76, 0x33,
+	0xe8, 0x04, 0x29, 0x3f, 0x86, 0x95, 0x6b, 0x8b, 0x77, 0x0e, 0x97, 0x1e, 0xc3, 0x21, 0x78, 0x1c,
+	0xda, 0xca, 0xfd, 0xaf, 0x4a, 0xf6, 0x9c, 0x29, 0xf2, 0x27, 0xaf, 0x41, 0x35, 0xd6, 0xc9, 0x69,
+	0x11, 0x56, 0x6c, 0x14, 0x30, 0xba, 0x32, 0x6b, 0xa3, 0x8f, 0xfe, 0x26, 0x0d, 0x6d, 0xc4, 0xb1,
+	0xf0, 0x82, 0x4d, 0xb8, 0xb4, 0x83, 0x71, 0xd7, 0x94, 0x14, 0x69, 0x52, 0x53, 0xfd, 0xd0, 0x47,
+	0x2e, 0x80, 0x44, 0x30, 0xd5, 0xa2, 0x5e, 0x3b, 0x6d, 0xc9, 0xfc, 0xc9, 0xa5, 0xb1, 0xe2, 0x40,
+	0xc6, 0x28, 0x9f, 0x95, 0x12, 0x50, 0x94, 0x62, 0x48, 0x0f, 0xa6, 0x5b, 0x62, 0xec, 0xe5, 0xce,
+	0x78, 0x65, 0xac, 0x31, 0xcd, 0xcc, 0xa6, 0x31, 0x55, 0x09, 0x40, 0x25, 0x8b, 0xfc, 0x86, 0x03,
+	0xe0, 0xab, 0x74, 0x94, 0x32, 0x96, 0xeb, 0xc5, 0xf8, 0x17, 0x9d, 0xe6, 0x32, 0x21, 0x85, 0x06,
+	0x25, 0x68, 0x89, 0x25, 0xaf, 0xc0, 0x6c, 0x4c, 0xfd, 0x28, 0xf4, 0x83, 0x36, 0xad, 0xaf, 0xa6,
+	0x3c, 0xe8, 0x3d, 0x59, 0xce, 0xea, 0x34, 0xdb, 0xda, 0xd1, 0xe2, 0x81, 0x19, 0x8e, 0xe4, 0x4b,
+	0x0e, 0xcc, 0xeb, 0x7c, 0x1c, 0x9b, 0x0a, 0x2a, 0x53, 0x13, 0x1b, 0x45, 0xa4, 0xfe, 0x38, 0xc3,
+	0x1a, 0x61, 0x91, 0x7d, 0x16, 0x86, 0x39, 0xa1, 0xe4, 0x65, 0x80, 0x68, 0x8f, 0x27, 0xbe, 0x58,
+	0x3f, 0x2b, 0x27, 0xee, 0xe7, 0xbc, 0x48, 0xdd, 0x2a, 0x0e, 0x68, 0x71, 0x23, 0x57, 0x01, 0x84,
+	0x9d, 0xec, 0xf6, 0xbb, 0x94, 0x67, 0x20, 0xaa, 0xb5, 0x0f, 0xa8, 0x91, 0xdf, 0xd1, 0x98, 0xbb,
+	0x87, 0x4b, 0x83, 0x47, 0x42, 0x9e, 0x71, 0xb4, 0x9a, 0x93, 0xdb, 0x30, 0x9d, 0xf4, 0x3a, 0x1d,
+	0x4f, 0x27, 0x13, 0xae, 0x15, 0xb4, 0xe1, 0x09, 0xa6, 0x66, 0x49, 0x4a, 0x00, 0x2a, 0x71, 0x6e,
+	0x08, 0x64, 0x90, 0x9e, 0x3c, 0x0b, 0xb3, 0xf4, 0x76, 0x4a, 0xe3, 0xd0, 0x6b, 0xbf, 0x88, 0x9b,
+	0xea, 0xc0, 0xca, 0xa7, 0xfd, 0x82, 0x05, 0xc7, 0x0c, 0x15, 0x71, 0x75, 0xac, 0x5a, 0xe2, 0xf4,
+	0x60, 0x62, 0x55, 0x15, 0x99, 0xba, 0xbf, 0x59, 0xca, 0xec, 0xf6, 0xbb, 0x31, 0xa5, 0xa4, 0x0d,
+	0x93, 0x61, 0x54, 0xd7, 0xfe, 0xed, 0x52, 0x01, 0xfe, 0x6d, 0x2b, 0xaa, 0x5b, 0xb7, 0xa3, 0xec,
+	0x57, 0x82, 0x42, 0x08, 0xbf, 0x44, 0x52, 0x57, 0x6d, 0x1c, 0x21, 0x43, 0x9b, 0xc2, 0xc4, 0xea,
+	0x4b, 0xa4, 0xeb, 0xb6, 0x14, 0xcc, 0x0a, 0x75, 0x7f, 0xe8, 0x64, 0x72, 0x05, 0x37, 0xbc, 0xd4,
+	0x6f, 0x5d, 0x38, 0x60, 0x47, 0x9f, 0xab, 0x99, 0x34, 0xf5, 0x2f, 0xd8, 0x69, 0xea, 0xbb, 0x87,
+	0x4b, 0xef, 0x1f, 0x55, 0x2f, 0x72, 0x8b, 0x71, 0x58, 0xe6, 0x2c, 0xac, 0x8c, 0xf6, 0x67, 0x61,
+	0xc6, 0xd2, 0x58, 0xba, 0xf2, 0xa2, 0x12, 0xa6, 0x3a, 0x8e, 0xb1, 0x80, 0x68, 0xcb, 0x73, 0x7f,
+	0xc7, 0x81, 0xe9, 0x9a, 0xe7, 0xef, 0x47, 0x8d, 0x06, 0xf9, 0x20, 0x54, 0xea, 0x3d, 0x79, 0x13,
+	0x20, 0xfa, 0xa6, 0x73, 0xbc, 0xeb, 0x12, 0x8e, 0x9a, 0x82, 0x2d, 0xa6, 0x86, 0xe7, 0xa7, 0x51,
+	0xcc, 0x75, 0x2e, 0x8b, 0xc5, 0x74, 0x91, 0x43, 0x50, 0x62, 0xd8, 0xd9, 0xb2, 0xe3, 0xdd, 0x56,
+	0x8d, 0xf3, 0x79, 0x8a, 0x6b, 0x06, 0x85, 0x36, 0x9d, 0xfb, 0x17, 0x93, 0x30, 0x2d, 0xaf, 0xd9,
+	0x8e, 0x9d, 0x37, 0x57, 0x71, 0x72, 0x69, 0x64, 0x9c, 0xdc, 0x85, 0x29, 0x9f, 0x57, 0xe2, 0xc8,
+	0x4d, 0x6c, 0x9c, 0x74, 0x8d, 0xd4, 0x4e, 0x54, 0xf6, 0x18, 0x9d, 0xc4, 0x6f, 0x94, 0x72, 0xc8,
+	0x9b, 0x0e, 0x9c, 0xf2, 0xd9, 0xb1, 0xd6, 0x37, 0x7e, 0x76, 0x62, 0xec, 0xbb, 0xa4, 0xb5, 0x2c,
+	0x47, 0x73, 0x99, 0x97, 0x43, 0x60, 0x5e, 0x36, 0x79, 0x1e, 0xe6, 0xc4, 0x68, 0xbd, 0x94, 0x39,
+	0xd7, 0x99, 0x4b, 0x55, 0x1b, 0x89, 0x59, 0x5a, 0xb2, 0x2c, 0x0e, 0xc7, 0xfc, 0xd2, 0x41, 0x9c,
+	0xed, 0x64, 0x86, 0x4c, 0xdf, 0x4a, 0x24, 0x68, 0x51, 0x90, 0x18, 0x48, 0x4c, 0x1b, 0x31, 0x4d,
+	0x5a, 0x48, 0x5f, 0xed, 0xd1, 0x24, 0xe5, 0x3e, 0x7e, 0xfa, 0xfe, 0xee, 0x5f, 0x70, 0x80, 0x13,
+	0x0e, 0xe1, 0x4e, 0x5a, 0x32, 0xa6, 0xac, 0x8c, 0x6d, 0x45, 0x72, 0x82, 0x47, 0x86, 0x96, 0x4b,
+	0x30, 0x99, 0xb4, 0xbc, 0xb8, 0xce, 0x37, 0x96, 0x72, 0xad, 0xca, 0xbc, 0xd8, 0x0e, 0x03, 0xa0,
+	0x80, 0xbb, 0xff, 0xed, 0xc0, 0x69, 0xb5, 0x4a, 0x3c, 0xbf, 0x45, 0x59, 0x5b, 0xf2, 0x31, 0x98,
+	0xd7, 0xd1, 0xdb, 0x5a, 0xd4, 0x93, 0xe9, 0x96, 0xb2, 0xc9, 0x84, 0x61, 0x06, 0x8b, 0x39, 0x6a,
+	0xb2, 0x02, 0x55, 0xa6, 0xb2, 0x68, 0x2a, 0xcc, 0x4e, 0x47, 0x88, 0xab, 0xdb, 0x1b, 0xb2, 0x95,
+	0xa1, 0x21, 0x11, 0x2c, 0xb4, 0xbd, 0x24, 0xe5, 0x1a, 0xb0, 0x78, 0xee, 0x3e, 0xef, 0xc0, 0x78,
+	0x45, 0xc4, 0x66, 0x9e, 0x11, 0x0e, 0xf2, 0x76, 0xbf, 0x37, 0x01, 0x73, 0x19, 0xe3, 0x60, 0x5e,
+	0xa5, 0x97, 0xb0, 0x3d, 0x48, 0x1f, 0x62, 0xb5, 0x57, 0x79, 0x51, 0xc2, 0x51, 0x53, 0x30, 0xea,
+	0xae, 0x97, 0x24, 0xb7, 0xa2, 0xb8, 0x2e, 0x4d, 0x59, 0x53, 0x6f, 0x4b, 0x38, 0x6a, 0x0a, 0xe6,
+	0x5f, 0xf6, 0xa8, 0x17, 0xd3, 0x98, 0xdf, 0x16, 0xe7, 0xfd, 0x4b, 0xcd, 0xa0, 0xd0, 0xa6, 0xe3,
+	0x76, 0x99, 0xb6, 0x93, 0xb5, 0x76, 0x40, 0xc3, 0x54, 0xa8, 0x59, 0x80, 0x5d, 0xee, 0x6e, 0xee,
+	0xd8, 0x1c, 0x8d, 0x5d, 0xe6, 0x10, 0x98, 0x97, 0x4d, 0xbe, 0xe0, 0xc0, 0x9c, 0x77, 0x2b, 0x31,
+	0xb5, 0x82, 0xdc, 0x30, 0xc7, 0xf3, 0x50, 0x99, 0xda, 0xc3, 0xda, 0x02, 0x33, 0xef, 0x0c, 0x08,
+	0xb3, 0x12, 0xc9, 0xd7, 0x1c, 0x20, 0xf4, 0x36, 0xf5, 0xb7, 0xe3, 0xe8, 0x20, 0xa8, 0xab, 0xd9,
+	0x93, 0xb1, 0xe7, 0x38, 0xd1, 0xce, 0x85, 0x01, 0xa6, 0xc2, 0xa4, 0x07, 0xe1, 0x38, 0x44, 0x01,
+	0xf7, 0x5b, 0x65, 0x98, 0xb1, 0x8c, 0x71, 0xa8, 0x4f, 0x75, 0x7e, 0x92, 0x7c, 0x6a, 0xe9, 0x04,
+	0x3e, 0xf5, 0x33, 0x50, 0xf5, 0x95, 0x73, 0x28, 0xa0, 0xaa, 0x31, 0xef, 0x6f, 0x8c, 0x73, 0xd0,
+	0x20, 0x34, 0x02, 0xc9, 0x25, 0x58, 0xb0, 0xd8, 0x48, 0xaf, 0x32, 0xc1, 0xbd, 0x8a, 0x3e, 0xca,
+	0xaf, 0xe6, 0x09, 0x70, 0xb0, 0x8d, 0xfb, 0x37, 0x8e, 0x9e, 0xa3, 0x87, 0x70, 0xb9, 0xdc, 0xcc,
+	0x5e, 0x2e, 0xd7, 0xc6, 0x1f, 0xb0, 0x11, 0x17, 0xcb, 0x5b, 0x30, 0xbd, 0x16, 0x75, 0x3a, 0x5e,
+	0x58, 0x27, 0xef, 0x85, 0x69, 0x5f, 0xfc, 0x29, 0x43, 0x6d, 0x7e, 0xed, 0x28, 0xb1, 0xa8, 0x70,
+	0xe4, 0x09, 0x98, 0xf0, 0xe2, 0xa6, 0x0a, 0xaf, 0x79, 0x1a, 0x7e, 0x35, 0x6e, 0x26, 0xc8, 0xa1,
+	0xee, 0x9b, 0x25, 0x80, 0xb5, 0xa8, 0xd3, 0xf5, 0x62, 0x5a, 0xdf, 0x8d, 0xfe, 0xcf, 0xe7, 0xd0,
+	0xdc, 0x37, 0x1c, 0x20, 0x6c, 0x3c, 0xa2, 0x90, 0x86, 0x26, 0xf1, 0xcf, 0x36, 0x39, 0x5f, 0x41,
+	0xe5, 0x8e, 0x61, 0xd6, 0xb1, 0x42, 0xa0, 0xa1, 0x39, 0x46, 0xe8, 0xf7, 0xa4, 0x4a, 0xbd, 0x96,
+	0xb3, 0x37, 0xa2, 0xfc, 0xde, 0x4b, 0x66, 0x62, 0xdd, 0xaf, 0x94, 0xe0, 0x71, 0xe1, 0x74, 0xae,
+	0x79, 0xa1, 0xd7, 0xa4, 0x1d, 0xa6, 0xd5, 0x71, 0x93, 0xb0, 0xaf, 0xb0, 0xc8, 0x23, 0x50, 0x37,
+	0xa0, 0x63, 0xad, 0x49, 0xb1, 0x96, 0xc4, 0xea, 0xd9, 0x08, 0x83, 0x14, 0x39, 0x67, 0xd2, 0x85,
+	0x8a, 0x2a, 0x31, 0x97, 0xae, 0xa2, 0x08, 0x29, 0xda, 0xd0, 0x2e, 0x49, 0xde, 0xa8, 0xa5, 0xb8,
+	0xdf, 0x75, 0x20, 0xef, 0xff, 0x78, 0x38, 0x2e, 0x8a, 0x94, 0xf2, 0xe1, 0x78, 0xb6, 0xac, 0xe8,
+	0x04, 0x85, 0x3a, 0x9f, 0x84, 0x19, 0x2f, 0x4d, 0x69, 0xa7, 0x2b, 0x22, 0xc4, 0xf2, 0xfd, 0x65,
+	0x01, 0xae, 0x45, 0xf5, 0xa0, 0x11, 0xf0, 0xc8, 0xd0, 0x66, 0xe7, 0xbe, 0x00, 0x15, 0x95, 0xd7,
+	0x3e, 0xc6, 0x34, 0x3e, 0x99, 0xc9, 0xd1, 0x8f, 0x58, 0x28, 0xff, 0x53, 0x82, 0x21, 0xbb, 0x17,
+	0xeb, 0xb2, 0xf1, 0x11, 0x99, 0x2e, 0x9f, 0xcc, 0x4f, 0x90, 0x9e, 0x48, 0xe8, 0x97, 0xb9, 0x7b,
+	0x7b, 0xa9, 0xd0, 0xad, 0xd7, 0xe4, 0xf8, 0x67, 0xa4, 0x72, 0x3a, 0xcf, 0x4f, 0x9e, 0x01, 0xf0,
+	0xba, 0x81, 0xda, 0xc6, 0x26, 0xb2, 0xb7, 0x5f, 0xab, 0xdb, 0x1b, 0x6a, 0x0f, 0xb3, 0xa8, 0x58,
+	0x00, 0x16, 0x84, 0x49, 0xea, 0xb5, 0xdb, 0x97, 0x83, 0x30, 0x95, 0xe7, 0x09, 0x6d, 0xf9, 0x1b,
+	0x06, 0x85, 0x36, 0xdd, 0xd9, 0x0f, 0x5b, 0x93, 0x72, 0x92, 0x8b, 0x92, 0x37, 0x4a, 0x30, 0x7f,
+	0x29, 0xec, 0x6d, 0x5f, 0xda, 0xee, 0xed, 0xb5, 0x03, 0xff, 0x2a, 0xed, 0xb3, 0x19, 0xdb, 0xa7,
+	0xfd, 0x8d, 0x75, 0x39, 0xe6, 0x7a, 0xc6, 0xae, 0x32, 0x20, 0x0a, 0x1c, 0x53, 0xb3, 0x11, 0x84,
+	0x4d, 0x1a, 0x77, 0xe3, 0x40, 0x46, 0xce, 0x96, 0x9a, 0x17, 0x0d, 0x0a, 0x6d, 0x3a, 0xc6, 0x3b,
+	0xba, 0x15, 0xd2, 0x38, 0xef, 0x36, 0xae, 0x33, 0x20, 0x0a, 0x1c, 0x23, 0x4a, 0xe3, 0x5e, 0x92,
+	0xca, 0x11, 0xd3, 0x44, 0xbb, 0x0c, 0x88, 0x02, 0xc7, 0xd6, 0x46, 0xd2, 0xdb, 0xe3, 0x99, 0xa8,
+	0xdc, 0x5d, 0xda, 0x8e, 0x00, 0xa3, 0xc2, 0x33, 0xd2, 0x7d, 0xda, 0x5f, 0x67, 0x7b, 0x67, 0xee,
+	0xb6, 0xfb, 0xaa, 0x00, 0xa3, 0xc2, 0xbb, 0x77, 0x1c, 0x20, 0xd9, 0xe1, 0x78, 0x08, 0xdb, 0x6f,
+	0x98, 0xdd, 0x7e, 0xc7, 0xc9, 0x18, 0x66, 0x75, 0x1f, 0xb1, 0x0b, 0xff, 0xbe, 0x03, 0xb3, 0x76,
+	0xce, 0x98, 0x34, 0x73, 0x2e, 0xe8, 0x7a, 0xd6, 0x05, 0xdd, 0x3d, 0x5c, 0xfa, 0xa5, 0x61, 0x4f,
+	0x9e, 0x9a, 0x41, 0x1a, 0x75, 0x93, 0x0f, 0xd1, 0xb0, 0x19, 0x84, 0x94, 0x27, 0x64, 0x44, 0xae,
+	0x39, 0x93, 0x90, 0x5e, 0x8b, 0xea, 0xf4, 0x3e, 0x7c, 0x98, 0x7b, 0x03, 0x16, 0x06, 0xea, 0x1b,
+	0x8e, 0xe1, 0x6e, 0x8e, 0xac, 0x3c, 0x73, 0xdf, 0x74, 0x60, 0x2e, 0x53, 0x1b, 0x52, 0x90, 0x13,
+	0xe3, 0x26, 0x11, 0xf1, 0x8b, 0x86, 0x38, 0x08, 0x45, 0x4a, 0xa4, 0x62, 0x99, 0x84, 0x41, 0xa1,
+	0x4d, 0xe7, 0x5e, 0x03, 0x7e, 0x0a, 0x2e, 0xca, 0x95, 0xbe, 0x00, 0x15, 0xc6, 0x8e, 0x4d, 0x78,
+	0x51, 0x2c, 0x23, 0xa8, 0xa8, 0xf2, 0x61, 0xe2, 0x42, 0x39, 0xf0, 0xd4, 0x21, 0x5b, 0x2f, 0xea,
+	0x8d, 0x24, 0xe9, 0xf1, 0x8d, 0x82, 0x21, 0xc9, 0x93, 0x50, 0xa6, 0xb7, 0xbb, 0xf9, 0xd3, 0xf4,
+	0x85, 0xdb, 0xdd, 0x20, 0xa6, 0x09, 0x23, 0xa2, 0xb7, 0xbb, 0xe4, 0x2c, 0x94, 0x82, 0xba, 0x74,
+	0x03, 0x20, 0x69, 0x4a, 0x1b, 0xeb, 0x58, 0x0a, 0xea, 0x6e, 0x0f, 0xaa, 0xba, 0x5e, 0x99, 0xb4,
+	0x94, 0x75, 0x38, 0x63, 0x5f, 0xc7, 0x2a, 0xa6, 0x23, 0xec, 0xa2, 0x07, 0x60, 0x8a, 0x42, 0x8a,
+	0x5a, 0x15, 0xe7, 0x61, 0xc2, 0x8f, 0x64, 0x21, 0x55, 0xc5, 0xb0, 0xe1, 0x66, 0xc1, 0x31, 0xee,
+	0x0d, 0x98, 0xbf, 0x1a, 0x46, 0xb7, 0x42, 0xe6, 0xab, 0x2e, 0x06, 0xb4, 0x5d, 0x67, 0x8c, 0x1b,
+	0xec, 0x8f, 0xbc, 0x07, 0xe6, 0x58, 0x14, 0x38, 0x5d, 0xda, 0x5b, 0x1a, 0x55, 0xda, 0xeb, 0x7e,
+	0xd9, 0x81, 0xd3, 0xf9, 0x22, 0x90, 0x1f, 0x5b, 0x2c, 0xf8, 0x79, 0xa6, 0x8c, 0xaa, 0x35, 0xb8,
+	0xde, 0x15, 0xf7, 0x32, 0xcf, 0xc1, 0xec, 0x5e, 0x2f, 0x68, 0xd7, 0xe5, 0x6f, 0xa9, 0x8f, 0x2e,
+	0xa5, 0xa8, 0x59, 0x38, 0xcc, 0x50, 0xb2, 0xad, 0x75, 0x2f, 0x08, 0xbd, 0xb8, 0xbf, 0x6d, 0xac,
+	0x5d, 0x6f, 0xad, 0x35, 0x8d, 0x41, 0x8b, 0xca, 0x7d, 0xab, 0x0c, 0xa6, 0x7c, 0x9a, 0x34, 0xe4,
+	0x55, 0x9f, 0x33, 0x76, 0x62, 0x60, 0xa7, 0x1f, 0xfa, 0xa6, 0x4a, 0xbb, 0x92, 0xbb, 0xe9, 0xfb,
+	0xa2, 0xc3, 0x76, 0xf4, 0x20, 0x0d, 0xbc, 0x94, 0xd6, 0x6b, 0x7d, 0x19, 0xcf, 0x5e, 0x2b, 0xe2,
+	0x5a, 0x68, 0x43, 0xb0, 0x8d, 0x62, 0x3b, 0x40, 0xd0, 0x92, 0xd0, 0x16, 0x4b, 0x3e, 0x25, 0x13,
+	0x79, 0xe5, 0x62, 0x2e, 0x87, 0x2b, 0xb9, 0xec, 0x5d, 0x07, 0x26, 0x63, 0x9a, 0xc6, 0xea, 0x36,
+	0xfe, 0xf2, 0x58, 0x37, 0x0b, 0x69, 0xdc, 0xdf, 0x49, 0x59, 0xc0, 0xdc, 0xb4, 0xb6, 0x30, 0x0e,
+	0x46, 0x21, 0xc5, 0x4d, 0x80, 0x0c, 0x8e, 0xc2, 0x09, 0x13, 0x63, 0x2b, 0x50, 0xf5, 0x7a, 0x69,
+	0xd4, 0x61, 0x03, 0xc4, 0x67, 0xa5, 0x62, 0xa5, 0xfe, 0x14, 0x02, 0x0d, 0x8d, 0xfb, 0xfa, 0x24,
+	0xe4, 0xae, 0xdf, 0x48, 0xcf, 0xae, 0xf5, 0x77, 0x0a, 0xac, 0xf5, 0xd7, 0x9a, 0x0c, 0xab, 0xf7,
+	0x67, 0x07, 0xf6, 0x6e, 0xcb, 0x4b, 0x94, 0x51, 0xbe, 0xa0, 0xc6, 0x68, 0x9b, 0x01, 0xef, 0x1e,
+	0x2e, 0xfd, 0xf2, 0xf1, 0xb6, 0x6b, 0xb6, 0x3e, 0x57, 0x44, 0x0d, 0x8f, 0x11, 0xcd, 0x79, 0xa0,
+	0xe0, 0x6f, 0x6f, 0xd8, 0xe5, 0x23, 0x0e, 0x1d, 0x9f, 0x13, 0x45, 0x19, 0x48, 0x93, 0x5e, 0x3b,
+	0x95, 0xcb, 0x60, 0xab, 0x28, 0xab, 0x12, 0x5c, 0x4d, 0x75, 0x86, 0xf8, 0x8d, 0x96, 0x44, 0xf2,
+	0x09, 0xa8, 0x26, 0xa9, 0x17, 0xa7, 0xf7, 0x79, 0xc1, 0xab, 0x07, 0x7c, 0x47, 0x31, 0x41, 0xc3,
+	0x8f, 0xbc, 0x0c, 0xd0, 0x08, 0xc2, 0x20, 0x69, 0xdd, 0x67, 0xca, 0x9d, 0x2b, 0x7e, 0x51, 0x73,
+	0x40, 0x8b, 0x1b, 0x73, 0x65, 0x7c, 0x51, 0x8b, 0x6c, 0x51, 0x85, 0xef, 0x9a, 0xda, 0x95, 0xa1,
+	0xc6, 0xa0, 0x45, 0xe5, 0x7e, 0x0e, 0x1e, 0xcd, 0x3f, 0xa7, 0x93, 0xa1, 0x7b, 0x33, 0x8e, 0x7a,
+	0xdd, 0xfc, 0xc6, 0xc1, 0x1f, 0x5d, 0xa1, 0xc0, 0x31, 0x87, 0xbe, 0x1f, 0x84, 0xf5, 0xbc, 0x43,
+	0xbf, 0x1a, 0x84, 0x75, 0xe4, 0x98, 0x63, 0x3c, 0x80, 0xf8, 0x33, 0x07, 0xce, 0x1f, 0xf5, 0xea,
+	0x8f, 0x9d, 0xc9, 0x6e, 0x79, 0x71, 0x28, 0xcb, 0x9d, 0xb9, 0xc7, 0xb8, 0xe1, 0xc5, 0x21, 0x72,
+	0x28, 0x39, 0x80, 0x29, 0x51, 0xc2, 0x22, 0xc3, 0xde, 0xad, 0x02, 0x1f, 0x20, 0xb2, 0xd8, 0x57,
+	0x9f, 0xa3, 0x45, 0xed, 0x0c, 0x4a, 0x69, 0xee, 0x15, 0x20, 0xd7, 0x0f, 0x68, 0x1c, 0x07, 0x75,
+	0xab, 0xe0, 0x86, 0x3c, 0x0b, 0xb3, 0x37, 0x77, 0xae, 0x6f, 0x6d, 0x47, 0x41, 0xc8, 0xcb, 0x2f,
+	0xad, 0xeb, 0xdf, 0x2b, 0x16, 0x1c, 0x33, 0x54, 0xee, 0xb7, 0x4b, 0x30, 0x63, 0x3d, 0x4e, 0x3d,
+	0x46, 0xcc, 0x90, 0x7b, 0x4c, 0x5b, 0x3a, 0xe6, 0x63, 0xda, 0xa7, 0xa0, 0xd2, 0x8d, 0xda, 0x81,
+	0x1f, 0xe8, 0xaa, 0xc8, 0x59, 0x9e, 0xc0, 0x97, 0x30, 0xd4, 0x58, 0x92, 0x42, 0x55, 0xbf, 0x38,
+	0x93, 0x95, 0x1e, 0x85, 0x84, 0x4c, 0xda, 0x3e, 0xcc, 0x4b, 0x32, 0x23, 0x88, 0xb8, 0x30, 0xc5,
+	0x17, 0x97, 0xa8, 0xf0, 0x90, 0xf7, 0xe0, 0x7c, 0xd5, 0x25, 0x28, 0x31, 0xee, 0x0f, 0x4a, 0x50,
+	0x45, 0xda, 0x8d, 0xd6, 0x62, 0x5a, 0x4f, 0xc8, 0x7b, 0xa0, 0xdc, 0x8b, 0xdb, 0x72, 0xa4, 0xf4,
+	0xd1, 0xf9, 0x45, 0xdc, 0x44, 0x06, 0xcf, 0xb8, 0xf2, 0xd2, 0x89, 0xee, 0x38, 0xca, 0x47, 0xde,
+	0x71, 0x3c, 0x0f, 0x73, 0x49, 0xd2, 0xda, 0x8e, 0x83, 0x03, 0x2f, 0x65, 0x4b, 0x45, 0x9e, 0x33,
+	0x4d, 0x82, 0x79, 0xe7, 0xb2, 0x41, 0x62, 0x96, 0x96, 0x5c, 0x82, 0x05, 0x73, 0xd9, 0x40, 0xe3,
+	0x94, 0x1f, 0x2b, 0xc5, 0x09, 0x54, 0xa7, 0x78, 0xcd, 0xf5, 0x84, 0x24, 0xc0, 0xc1, 0x36, 0x64,
+	0x1d, 0x4e, 0x67, 0x80, 0x4c, 0x11, 0x71, 0x3c, 0x5d, 0x94, 0x7c, 0x4e, 0x67, 0xf8, 0x30, 0x5d,
+	0x06, 0x5a, 0xb8, 0x6f, 0x3b, 0x30, 0xa7, 0x07, 0xf5, 0x21, 0x9c, 0x55, 0x83, 0xec, 0x59, 0x75,
+	0x7d, 0xac, 0x7d, 0x5e, 0xaa, 0x3d, 0x22, 0x1c, 0xff, 0xeb, 0x29, 0x00, 0xfe, 0x1e, 0x3e, 0xe0,
+	0x95, 0x44, 0xe7, 0x61, 0x22, 0xa6, 0xdd, 0x28, 0x6f, 0x5b, 0x8c, 0x02, 0x39, 0xe6, 0x27, 0x77,
+	0xcd, 0x0c, 0xbb, 0x61, 0x99, 0xfc, 0x31, 0xde, 0xb0, 0xec, 0xc0, 0x99, 0x20, 0x4c, 0xa8, 0xdf,
+	0x8b, 0xa5, 0x0b, 0xbc, 0x1c, 0x25, 0x7a, 0xfd, 0x55, 0x6a, 0xef, 0x91, 0x8c, 0xce, 0x6c, 0x0c,
+	0x23, 0xc2, 0xe1, 0x6d, 0xd9, 0x78, 0x2a, 0x04, 0xdf, 0x20, 0x2b, 0xd6, 0xf1, 0x50, 0xc2, 0x51,
+	0x53, 0xb0, 0xe0, 0x8b, 0x86, 0xde, 0x5e, 0x9b, 0x6e, 0x36, 0x12, 0xbe, 0xe7, 0x59, 0xc1, 0xd7,
+	0x05, 0x81, 0xb8, 0xb8, 0x83, 0x86, 0x66, 0xb8, 0xdd, 0x55, 0x0b, 0xb2, 0x3b, 0x38, 0xa9, 0xdd,
+	0xe9, 0xd3, 0xd7, 0xcc, 0xc8, 0x87, 0x95, 0x6a, 0x2f, 0x98, 0x1d, 0xb9, 0x17, 0x7c, 0x0c, 0xe6,
+	0x83, 0xb0, 0x45, 0xe3, 0x20, 0xa5, 0x75, 0x6e, 0x08, 0x8b, 0x73, 0x7c, 0x20, 0xf4, 0xdd, 0xf5,
+	0x46, 0x06, 0x8b, 0x39, 0x6a, 0x33, 0x86, 0xd7, 0xd7, 0x36, 0x16, 0xe7, 0x87, 0x8d, 0xe1, 0xf5,
+	0xb5, 0x0d, 0x34, 0x34, 0xee, 0xeb, 0x25, 0x38, 0x63, 0x2c, 0x8a, 0x75, 0x25, 0x68, 0xb0, 0x65,
+	0xc5, 0x6b, 0xfb, 0xc5, 0x3d, 0x9a, 0xf5, 0x21, 0x15, 0x1d, 0x83, 0xec, 0x68, 0x0c, 0x5a, 0x54,
+	0x6c, 0xc2, 0x7d, 0x1a, 0xf3, 0xca, 0x9b, 0xbc, 0xb9, 0xad, 0x49, 0x38, 0x6a, 0x0a, 0xfe, 0xad,
+	0x16, 0x1a, 0xa7, 0x32, 0x39, 0x97, 0xbf, 0x58, 0x5e, 0x33, 0x28, 0xb4, 0xe9, 0xd8, 0xc6, 0xe7,
+	0xab, 0xd9, 0x66, 0x26, 0x37, 0x2b, 0x36, 0x3e, 0x3d, 0xc1, 0x1a, 0xab, 0xd4, 0xe1, 0x17, 0x7f,
+	0x93, 0x83, 0xea, 0xf0, 0xb3, 0x8a, 0xa6, 0x70, 0xff, 0xdd, 0x81, 0x77, 0x0f, 0x1d, 0x8a, 0x87,
+	0xe0, 0x43, 0x7b, 0x59, 0x1f, 0xba, 0x3d, 0xa6, 0x0f, 0x1d, 0xe8, 0xc2, 0x08, 0x7f, 0xfa, 0xb7,
+	0x0e, 0xcc, 0x1b, 0xfa, 0x87, 0xd0, 0xcf, 0x46, 0x71, 0x1f, 0x5e, 0x31, 0x7a, 0x8b, 0xc2, 0x90,
+	0x4c, 0xc7, 0xde, 0xe6, 0x1d, 0x13, 0x91, 0xdf, 0xaa, 0xaf, 0xde, 0x3d, 0x1f, 0x11, 0x88, 0x1d,
+	0xc0, 0x14, 0x7f, 0xfa, 0x92, 0x14, 0x10, 0x7e, 0x66, 0x85, 0xf3, 0x5c, 0x8b, 0x09, 0x3f, 0xf9,
+	0xcf, 0x04, 0xa5, 0x34, 0x5e, 0x12, 0x16, 0x24, 0xcc, 0x22, 0xeb, 0x32, 0x27, 0x64, 0x4a, 0xc2,
+	0x24, 0x1c, 0x35, 0x85, 0xdb, 0x81, 0xc5, 0x2c, 0xf3, 0x75, 0xda, 0xe0, 0xa7, 0xfa, 0x63, 0xf5,
+	0x91, 0x9d, 0x70, 0x79, 0xab, 0xcd, 0x9e, 0x97, 0x7f, 0xf9, 0xbc, 0xaa, 0x10, 0x68, 0x68, 0xdc,
+	0x3f, 0x72, 0xe0, 0xd1, 0x21, 0x9d, 0x29, 0x30, 0x17, 0x96, 0x1a, 0xe3, 0x1f, 0xf1, 0x1a, 0xbd,
+	0x4e, 0x1b, 0x9e, 0x3a, 0x41, 0x5a, 0xe7, 0xcd, 0x75, 0x01, 0x46, 0x85, 0x77, 0xff, 0xd5, 0x81,
+	0x53, 0x59, 0x5d, 0x13, 0x72, 0x05, 0x88, 0xe8, 0xcc, 0x7a, 0x90, 0xf8, 0xd1, 0x01, 0x8d, 0xfb,
+	0xac, 0xe7, 0x42, 0xeb, 0xb3, 0x92, 0x13, 0x59, 0x1d, 0xa0, 0xc0, 0x21, 0xad, 0xc8, 0x97, 0xf9,
+	0xb5, 0xae, 0x1a, 0x6d, 0xb5, 0x4c, 0x76, 0x0a, 0x5b, 0x26, 0x66, 0x26, 0xed, 0xf8, 0x5f, 0xcb,
+	0x43, 0x5b, 0xb8, 0xfb, 0xa3, 0x32, 0xcc, 0xaa, 0xe6, 0xfc, 0xbc, 0x52, 0xd0, 0x49, 0x2f, 0xf3,
+	0x36, 0xbe, 0x7c, 0x82, 0xb7, 0xf1, 0x13, 0xf7, 0x3a, 0xe1, 0x88, 0xb7, 0xda, 0x26, 0xce, 0xb1,
+	0x1c, 0xfd, 0xae, 0x41, 0xa1, 0x4d, 0xc7, 0x34, 0x69, 0x07, 0x07, 0x54, 0x34, 0x9a, 0xca, 0x6a,
+	0xb2, 0xa9, 0x10, 0x68, 0x68, 0x98, 0x26, 0xf5, 0xa0, 0xd1, 0xe0, 0xb1, 0x86, 0xa5, 0x09, 0x1b,
+	0x1d, 0xe4, 0x18, 0x46, 0xd1, 0x8a, 0xa2, 0x7d, 0x19, 0x5e, 0x68, 0x8a, 0xcb, 0x51, 0xb4, 0x8f,
+	0x1c, 0x43, 0xae, 0xc1, 0xa3, 0x61, 0x14, 0x77, 0xbc, 0x76, 0xf0, 0x1a, 0xad, 0x6b, 0x29, 0x32,
+	0xac, 0xf8, 0x7f, 0xb2, 0xc1, 0xa3, 0x5b, 0x83, 0x24, 0x38, 0xac, 0x1d, 0x5b, 0x7e, 0xdd, 0x98,
+	0xd6, 0x03, 0x3f, 0xb5, 0xb9, 0x41, 0x76, 0xf9, 0x6d, 0x0f, 0x50, 0xe0, 0x90, 0x56, 0xee, 0xbf,
+	0xf1, 0x0d, 0x6a, 0xc4, 0xc3, 0x90, 0x87, 0x76, 0xd0, 0xcf, 0x2e, 0x90, 0x89, 0x63, 0x2c, 0x10,
+	0x76, 0x90, 0x4e, 0xa2, 0x50, 0x1f, 0xa4, 0x27, 0x47, 0x1e, 0xa4, 0x2d, 0x2a, 0xf7, 0xbb, 0x93,
+	0xf0, 0xb8, 0xae, 0x28, 0xa6, 0xe9, 0xad, 0x28, 0xde, 0x0f, 0xc2, 0x26, 0xbf, 0x17, 0xf9, 0xa6,
+	0x03, 0xb3, 0x62, 0xa1, 0xc8, 0x87, 0x7d, 0xe2, 0x1e, 0xc0, 0x2f, 0xa2, 0x76, 0x39, 0x23, 0x69,
+	0x79, 0xd7, 0x92, 0x92, 0x7b, 0xd4, 0x67, 0xa3, 0x30, 0xa3, 0x0e, 0x79, 0x0d, 0x40, 0x7d, 0x9b,
+	0xa0, 0x51, 0xc4, 0xe7, 0x19, 0x94, 0x72, 0x48, 0x1b, 0x26, 0x04, 0xdb, 0xd5, 0x12, 0xd0, 0x92,
+	0x46, 0xbe, 0xe4, 0xc0, 0x54, 0x5b, 0x8c, 0x8a, 0xc8, 0xeb, 0x7e, 0xaa, 0xf8, 0x51, 0xb1, 0xc7,
+	0x43, 0x6f, 0x6a, 0x72, 0x24, 0xa4, 0x70, 0x82, 0x30, 0x1d, 0x84, 0xcd, 0x98, 0x26, 0x2a, 0xe5,
+	0xf0, 0x7e, 0x2b, 0x8c, 0x58, 0xf6, 0xa3, 0x98, 0xf2, 0xa0, 0x21, 0xf2, 0xea, 0x35, 0xaf, 0xed,
+	0x85, 0x3e, 0x8d, 0x37, 0x04, 0xb9, 0xf1, 0xef, 0x12, 0x80, 0x8a, 0xd1, 0x40, 0x41, 0xfe, 0xe4,
+	0x71, 0x0a, 0xf2, 0xcf, 0x7e, 0x1c, 0x16, 0x06, 0xa6, 0xf1, 0x44, 0xef, 0x0f, 0x3f, 0x02, 0x33,
+	0xf7, 0xd9, 0xd4, 0xfd, 0xe3, 0x29, 0xe3, 0xa4, 0xb7, 0xa2, 0x3a, 0xaf, 0x44, 0x8f, 0xcd, 0x6c,
+	0xca, 0x08, 0xab, 0xa8, 0xb5, 0x61, 0x3d, 0x4e, 0xd7, 0x40, 0xb4, 0xe5, 0xb1, 0x95, 0xd9, 0xf5,
+	0x62, 0x1a, 0x3e, 0xd0, 0x95, 0xb9, 0xad, 0x25, 0xa0, 0x25, 0x8d, 0xd0, 0xcc, 0x75, 0xc3, 0xda,
+	0x98, 0xd7, 0x0d, 0x2c, 0xdc, 0x1b, 0x5a, 0x34, 0xfc, 0xa6, 0x03, 0xf3, 0x61, 0x66, 0xbd, 0xca,
+	0xcc, 0xf3, 0x0b, 0x85, 0x1b, 0x82, 0x78, 0x7e, 0x93, 0x85, 0x61, 0x4e, 0x38, 0x59, 0x85, 0x53,
+	0x6a, 0x06, 0xb2, 0x15, 0xe1, 0xfa, 0x70, 0x8e, 0x59, 0x34, 0xe6, 0xe9, 0xad, 0x27, 0x25, 0x53,
+	0xa3, 0x9e, 0x94, 0x90, 0x7d, 0xfd, 0x7a, 0x6c, 0xba, 0xd8, 0xd7, 0x63, 0x30, 0xe4, 0xe5, 0xd8,
+	0x0d, 0xa8, 0xfa, 0x31, 0xf5, 0xd2, 0xfb, 0x7c, 0x51, 0xc4, 0xbf, 0xe6, 0xb1, 0xa6, 0x18, 0xa0,
+	0xe1, 0xe5, 0x7e, 0xbd, 0x0c, 0xa7, 0xd5, 0x70, 0xa8, 0x94, 0x2c, 0xdb, 0x70, 0x84, 0x5c, 0x13,
+	0xb9, 0xe9, 0x0d, 0xe7, 0xb2, 0x42, 0xa0, 0xa1, 0x61, 0x21, 0xa3, 0x88, 0xde, 0x92, 0xfc, 0x15,
+	0x85, 0x8c, 0x0a, 0x51, 0xe1, 0xc9, 0xd7, 0x87, 0x3e, 0xe0, 0x2c, 0xe0, 0x42, 0x6e, 0x20, 0x9f,
+	0x7c, 0xc2, 0x97, 0x9b, 0x6f, 0x38, 0x70, 0x6a, 0x3f, 0x73, 0x07, 0xac, 0x1c, 0xe9, 0x38, 0xc5,
+	0x20, 0xd9, 0x5b, 0x65, 0xb3, 0x04, 0xb3, 0xf0, 0x04, 0xf3, 0xa2, 0xdd, 0xff, 0x70, 0xc0, 0xf6,
+	0x2a, 0xc7, 0x8b, 0x36, 0xac, 0xc7, 0xed, 0xa5, 0x23, 0x1e, 0xb7, 0xab, 0xc0, 0xa4, 0x7c, 0xbc,
+	0xb8, 0x74, 0xe2, 0x04, 0x71, 0xe9, 0xe4, 0xc8, 0x48, 0xe6, 0x3d, 0x50, 0xee, 0x05, 0x75, 0x19,
+	0x5a, 0x9a, 0x84, 0xf3, 0xc6, 0x3a, 0x32, 0xb8, 0xfb, 0xe7, 0x93, 0xe6, 0x10, 0x29, 0x6f, 0x94,
+	0x7e, 0x2a, 0xba, 0xdd, 0xd0, 0xb5, 0x3d, 0xa2, 0xe7, 0x5b, 0x03, 0xb5, 0x3d, 0xbf, 0x78, 0xf2,
+	0xcb, 0x42, 0x31, 0x40, 0xa3, 0x4a, 0x7b, 0xa6, 0x8f, 0xb8, 0x29, 0xbc, 0x09, 0x15, 0x16, 0x7d,
+	0xf3, 0x3c, 0x50, 0x25, 0xa3, 0x54, 0xe5, 0xb2, 0x84, 0xdf, 0x3d, 0x5c, 0xfa, 0xe8, 0xc9, 0xd5,
+	0x52, 0xad, 0x51, 0xf3, 0x27, 0x09, 0x54, 0xd9, 0xdf, 0xfc, 0x52, 0x53, 0xc6, 0xf5, 0x2f, 0x6a,
+	0x77, 0xa2, 0x10, 0x85, 0xdc, 0x98, 0x1a, 0x39, 0x24, 0x84, 0x2a, 0x7f, 0x36, 0xce, 0x85, 0x8a,
+	0xf0, 0x7f, 0x5b, 0x5f, 0x2f, 0x2a, 0xc4, 0xdd, 0xc3, 0xa5, 0xe7, 0x4f, 0x2e, 0x54, 0x37, 0x47,
+	0x23, 0xc2, 0x7d, 0xa7, 0x6c, 0xd6, 0xae, 0x2c, 0xe9, 0xfa, 0xa9, 0x58, 0xbb, 0xcf, 0xe5, 0xd6,
+	0xee, 0xf9, 0x81, 0xb5, 0x3b, 0x6f, 0x9e, 0x59, 0x67, 0x56, 0xe3, 0x43, 0xdd, 0x20, 0x8f, 0x3e,
+	0x67, 0xf2, 0xb0, 0xe0, 0xd5, 0x5e, 0x10, 0xd3, 0x64, 0x3b, 0xee, 0x85, 0x41, 0xd8, 0xe4, 0x6b,
+	0xb1, 0x62, 0x87, 0x05, 0x19, 0x34, 0xe6, 0xe9, 0xdd, 0x6f, 0xf3, 0x8b, 0x1e, 0xab, 0x32, 0x82,
+	0x4d, 0x71, 0x9b, 0x3f, 0xbe, 0x17, 0xc5, 0x58, 0x7a, 0x8a, 0xc5, 0x8b, 0x7b, 0x81, 0x23, 0x29,
+	0x4c, 0xef, 0x89, 0xc7, 0x88, 0x05, 0x14, 0x52, 0xcb, 0x67, 0x8d, 0xfc, 0xb5, 0x89, 0x7a, 0xe3,
+	0x78, 0xd7, 0xfc, 0x89, 0x4a, 0x94, 0xfb, 0x8d, 0x32, 0x9c, 0xca, 0xbd, 0x11, 0x27, 0x1f, 0x84,
+	0x8a, 0xfa, 0x08, 0x40, 0x3e, 0x5d, 0xac, 0xbf, 0xf2, 0xa6, 0x29, 0xc8, 0xa7, 0x01, 0xea, 0xb4,
+	0xdb, 0x8e, 0xfa, 0x3c, 0xea, 0x98, 0x38, 0x71, 0xd4, 0xa1, 0xe3, 0xd3, 0x75, 0xcd, 0x05, 0x2d,
+	0x8e, 0xb2, 0xfc, 0x6c, 0x52, 0xbc, 0xb3, 0xcc, 0x96, 0x9f, 0x59, 0xcf, 0x08, 0xa6, 0x1e, 0xe2,
+	0x33, 0x82, 0x00, 0x4e, 0x09, 0xfd, 0x74, 0x01, 0xc2, 0x7d, 0xd4, 0x19, 0x3c, 0xca, 0xd6, 0xd2,
+	0x7a, 0x96, 0x0d, 0xe6, 0xf9, 0xba, 0x5f, 0x29, 0xb1, 0xc0, 0x4b, 0x8c, 0xf4, 0x35, 0x95, 0xad,
+	0x7d, 0x1f, 0x4c, 0x79, 0xbd, 0xb4, 0x15, 0x0d, 0x3c, 0x0b, 0x5d, 0xe5, 0x50, 0x94, 0x58, 0xb2,
+	0x09, 0x13, 0x75, 0x2f, 0x55, 0xdf, 0x24, 0x3d, 0x89, 0x72, 0x26, 0x47, 0xe3, 0xa5, 0x14, 0x39,
+	0x17, 0xf2, 0x04, 0x4c, 0xa4, 0x5e, 0x33, 0xf3, 0x99, 0xa5, 0x5d, 0xaf, 0x99, 0x20, 0x87, 0xda,
+	0x9b, 0xca, 0xc4, 0x11, 0x9b, 0xca, 0xf3, 0xd6, 0x77, 0x72, 0xad, 0x3b, 0x80, 0xc1, 0xcf, 0xdb,
+	0xf2, 0xb8, 0x3d, 0x4b, 0xeb, 0xfe, 0x1c, 0xcc, 0xda, 0x9f, 0xbf, 0x3d, 0x56, 0x09, 0xb4, 0xfb,
+	0x8f, 0x13, 0x30, 0x97, 0x29, 0x52, 0xc9, 0x2c, 0x71, 0xe7, 0xc8, 0x25, 0xfe, 0x24, 0x4c, 0x76,
+	0xe3, 0x5e, 0x48, 0x65, 0xed, 0x91, 0x16, 0xc2, 0x2c, 0x9e, 0xa2, 0xc0, 0xb1, 0x59, 0xa9, 0xc7,
+	0x7d, 0xec, 0x85, 0x32, 0x59, 0xac, 0x67, 0x65, 0x9d, 0x43, 0x51, 0x62, 0xc9, 0x67, 0x61, 0x36,
+	0xe1, 0xae, 0x50, 0x38, 0x07, 0x69, 0x31, 0x97, 0xc6, 0xfe, 0x80, 0x85, 0xac, 0xc2, 0xe2, 0xc7,
+	0x6e, 0x1b, 0x82, 0x19, 0x71, 0xe4, 0x0b, 0x8e, 0xfd, 0xd1, 0x8e, 0xa9, 0xb1, 0xef, 0x35, 0xf2,
+	0xc5, 0x3f, 0xc2, 0x74, 0xee, 0xfd, 0xed, 0x8e, 0xae, 0x36, 0xdb, 0xe9, 0x07, 0x60, 0xb6, 0x30,
+	0xc4, 0x64, 0x3f, 0x00, 0xd5, 0x8e, 0x17, 0x06, 0x0d, 0x9a, 0xa4, 0xe2, 0x53, 0xd5, 0x55, 0x71,
+	0xda, 0xb9, 0xa6, 0x80, 0x68, 0xf0, 0xfc, 0x3b, 0xf0, 0xbc, 0x57, 0xe2, 0xac, 0x52, 0xb5, 0xbe,
+	0x03, 0x6f, 0xc0, 0x68, 0xd3, 0xb8, 0xdf, 0x71, 0xe0, 0xcc, 0xd0, 0x91, 0xf8, 0xc9, 0xcd, 0xff,
+	0xb9, 0xdf, 0x29, 0xc1, 0xa3, 0x43, 0x4a, 0xb7, 0xc8, 0xc1, 0x83, 0xf9, 0xaa, 0x8b, 0x2c, 0x0c,
+	0x9b, 0x1b, 0xb9, 0x2a, 0x4e, 0xb6, 0xed, 0x18, 0xd7, 0x5f, 0x7e, 0x78, 0xae, 0xdf, 0xfd, 0xc3,
+	0x12, 0x58, 0xdf, 0x1c, 0x22, 0xbf, 0x6a, 0x17, 0x26, 0x3a, 0x85, 0x14, 0xd2, 0x09, 0xce, 0xba,
+	0xaa, 0x51, 0x8c, 0xd7, 0xb0, 0x22, 0xc7, 0xfc, 0x32, 0x2d, 0x1d, 0xbd, 0x4c, 0x49, 0xa0, 0x6a,
+	0x3f, 0xcb, 0x05, 0xd7, 0x7e, 0x56, 0x07, 0xea, 0x3e, 0xbf, 0xe1, 0x88, 0xd5, 0x95, 0xeb, 0x8f,
+	0xf1, 0xa5, 0xce, 0x3d, 0x7c, 0xe9, 0x07, 0xa1, 0x92, 0xd0, 0x76, 0x83, 0x45, 0x6f, 0xd2, 0xe7,
+	0xea, 0xa5, 0xb0, 0x23, 0xe1, 0xa8, 0x29, 0xf8, 0xe3, 0x9d, 0x76, 0x3b, 0xba, 0x75, 0xa1, 0xd3,
+	0x4d, 0xfb, 0xd2, 0xfb, 0x9a, 0xc7, 0x3b, 0x1a, 0x83, 0x16, 0x95, 0xfb, 0x23, 0x47, 0x4c, 0xa4,
+	0x0c, 0xc2, 0x9f, 0xcb, 0xbd, 0xab, 0x38, 0x7e, 0xfc, 0xda, 0x07, 0xf0, 0xf5, 0xbb, 0xc6, 0x02,
+	0xbe, 0x46, 0x64, 0x1e, 0x49, 0xda, 0xdf, 0xca, 0x51, 0x30, 0xb4, 0x84, 0x65, 0x0c, 0xa6, 0x7c,
+	0x94, 0xc1, 0xb8, 0xff, 0xe2, 0x40, 0x66, 0x5f, 0x20, 0x1d, 0x98, 0x64, 0x1a, 0xf4, 0x0b, 0x78,
+	0x82, 0x69, 0xf3, 0x65, 0xc6, 0x24, 0x17, 0x04, 0xff, 0x13, 0x85, 0x14, 0x12, 0xc8, 0xd8, 0xbb,
+	0x34, 0xf6, 0x53, 0x5f, 0x5b, 0x1a, 0x0b, 0xdd, 0xe5, 0x27, 0x80, 0x75, 0x10, 0xef, 0x3e, 0x07,
+	0x0b, 0x03, 0x1a, 0xf1, 0x52, 0xfd, 0x48, 0xbd, 0x38, 0xb5, 0x16, 0x1e, 0x7f, 0xee, 0x81, 0x02,
+	0xc7, 0x62, 0xf7, 0xd3, 0x79, 0xf6, 0xe4, 0x6b, 0x0e, 0x2c, 0x24, 0x79, 0x7e, 0x0f, 0x64, 0xd4,
+	0x74, 0x2e, 0x6a, 0x00, 0x85, 0x83, 0x1a, 0xb8, 0xdf, 0x93, 0xce, 0x48, 0xfc, 0x5f, 0x04, 0xbd,
+	0x89, 0x38, 0x23, 0x37, 0x11, 0x66, 0x56, 0x7e, 0x8b, 0xd6, 0x7b, 0xed, 0x81, 0x3a, 0x90, 0x1d,
+	0x09, 0x47, 0x4d, 0x91, 0xf9, 0x24, 0x4a, 0xf9, 0xc8, 0x4f, 0xa2, 0x3c, 0x0b, 0xb3, 0xf6, 0xe3,
+	0x68, 0x9e, 0x14, 0x93, 0x97, 0x00, 0xf6, 0x3b, 0x6a, 0xcc, 0x50, 0xe5, 0x3e, 0xac, 0x31, 0x79,
+	0xe4, 0x87, 0x35, 0x9e, 0x82, 0x8a, 0xfc, 0x4f, 0x03, 0x2a, 0xe9, 0x2a, 0x8a, 0x4c, 0x24, 0x0c,
+	0x35, 0x96, 0x39, 0x85, 0x8e, 0x17, 0xf6, 0xbc, 0x36, 0x1b, 0x21, 0x59, 0xe6, 0xa4, 0x0d, 0xea,
+	0x9a, 0xc6, 0xa0, 0x45, 0xc5, 0x4c, 0x24, 0xff, 0xc1, 0x82, 0x4c, 0xb1, 0x94, 0x73, 0x64, 0xb1,
+	0x54, 0xb6, 0x3a, 0xa7, 0x74, 0xac, 0xea, 0x1c, 0xbb, 0x70, 0xa6, 0x7c, 0xcf, 0xc2, 0x99, 0xf7,
+	0x9a, 0xe7, 0x71, 0xa2, 0xc2, 0x66, 0x66, 0xd8, 0xd3, 0x38, 0xe2, 0xc2, 0x94, 0xef, 0xe9, 0x6a,
+	0xc7, 0x59, 0x11, 0x10, 0xad, 0xad, 0x72, 0x22, 0x89, 0xa9, 0x2d, 0xbf, 0xf5, 0xce, 0xb9, 0x47,
+	0xbe, 0xff, 0xce, 0xb9, 0x47, 0xde, 0x7e, 0xe7, 0xdc, 0x23, 0x9f, 0xbf, 0x73, 0xce, 0x79, 0xeb,
+	0xce, 0x39, 0xe7, 0xfb, 0x77, 0xce, 0x39, 0x6f, 0xdf, 0x39, 0xe7, 0xfc, 0xd3, 0x9d, 0x73, 0xce,
+	0x6f, 0xff, 0xf0, 0xdc, 0x23, 0x2f, 0x57, 0xd4, 0x5a, 0xfd, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff,
+	0xb5, 0xdc, 0x5e, 0xe8, 0x4a, 0x6b, 0x00, 0x00,
 }
 
 func (m *AWSAuthConfig) Marshal() (dAtA []byte, err error) {
@@ -3621,6 +3622,11 @@ func (m *ApplicationSourceDirectory) MarshalToSizedBuffer(dAtA []byte) (int, err
 	_ = i
 	var l int
 	_ = l
+	i -= len(m.Exclude)
+	copy(dAtA[i:], m.Exclude)
+	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Exclude)))
+	i--
+	dAtA[i] = 0x1a
 	{
 		size, err := m.Jsonnet.MarshalToSizedBuffer(dAtA[:i])
 		if err != nil {
@@ -7996,6 +8002,8 @@ func (m *ApplicationSourceDirectory) Size() (n int) {
 	n += 2
 	l = m.Jsonnet.Size()
 	n += 1 + l + sovGenerated(uint64(l))
+	l = len(m.Exclude)
+	n += 1 + l + sovGenerated(uint64(l))
 	return n
 }
 
@@ -9758,6 +9766,7 @@ func (this *ApplicationSourceDirectory) String() string {
 	s := strings.Join([]string{`&ApplicationSourceDirectory{`,
 		`Recurse:` + fmt.Sprintf("%v", this.Recurse) + `,`,
 		`Jsonnet:` + strings.Replace(strings.Replace(this.Jsonnet.String(), "ApplicationSourceJsonnet", "ApplicationSourceJsonnet", 1), `&`, ``, 1) + `,`,
+		`Exclude:` + fmt.Sprintf("%v", this.Exclude) + `,`,
 		`}`,
 	}, "")
 	return s
@@ -13006,6 +13015,38 @@ func (m *ApplicationSourceDirectory) Unmarshal(dAtA []byte) error {
 				return err
 			}
 			iNdEx = postIndex
+		case 3:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field Exclude", wireType)
+			}
+			var stringLen uint64
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				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 ErrInvalidLengthGenerated
+			}
+			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			m.Exclude = string(dAtA[iNdEx:postIndex])
+			iNdEx = postIndex
 		default:
 			iNdEx = preIndex
 			skippy, err := skipGenerated(dAtA[iNdEx:])
diff --git a/pkg/apis/application/v1alpha1/generated.proto b/pkg/apis/application/v1alpha1/generated.proto
index 050c9fba1..dee5ef6f0 100644
--- a/pkg/apis/application/v1alpha1/generated.proto
+++ b/pkg/apis/application/v1alpha1/generated.proto
@@ -174,6 +174,8 @@ message ApplicationSourceDirectory {
   optional bool recurse = 1;
 
   optional ApplicationSourceJsonnet jsonnet = 2;
+
+  optional string exclude = 3;
 }
 
 // ApplicationSourceHelm holds helm specific options
diff --git a/pkg/apis/application/v1alpha1/openapi_generated.go b/pkg/apis/application/v1alpha1/openapi_generated.go
index 080d0d0ec..943d95255 100644
--- a/pkg/apis/application/v1alpha1/openapi_generated.go
+++ b/pkg/apis/application/v1alpha1/openapi_generated.go
@@ -656,6 +656,12 @@ func schema_pkg_apis_application_v1alpha1_ApplicationSourceDirectory(ref common.
 							Ref: ref("github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1.ApplicationSourceJsonnet"),
 						},
 					},
+					"exclude": {
+						SchemaProps: spec.SchemaProps{
+							Type:   []string{"string"},
+							Format: "",
+						},
+					},
 				},
 			},
 		},
diff --git a/pkg/apis/application/v1alpha1/types.go b/pkg/apis/application/v1alpha1/types.go
index 92d15180b..932fac066 100644
--- a/pkg/apis/application/v1alpha1/types.go
+++ b/pkg/apis/application/v1alpha1/types.go
@@ -427,6 +427,7 @@ func (k *ApplicationSourceKsonnet) IsZero() bool {
 type ApplicationSourceDirectory struct {
 	Recurse bool                     `json:"recurse,omitempty" protobuf:"bytes,1,opt,name=recurse"`
 	Jsonnet ApplicationSourceJsonnet `json:"jsonnet,omitempty" protobuf:"bytes,2,opt,name=jsonnet"`
+	Exclude string                   `json:"exclude,omitempty" protobuf:"bytes,3,opt,name=exclude"`
 }
 
 func (d *ApplicationSourceDirectory) IsZero() bool {
diff --git a/reposerver/apiclient/repository.pb.go b/reposerver/apiclient/repository.pb.go
index 210daf73f..804d7d39f 100644
--- a/reposerver/apiclient/repository.pb.go
+++ b/reposerver/apiclient/repository.pb.go
@@ -628,7 +628,9 @@ type RepoServerRevisionMetadataRequest struct {
 	// the repo
 	Repo *v1alpha1.Repository `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
 	// the revision within the repo
-	Revision             string   `protobuf:"bytes,2,opt,name=revision,proto3" json:"revision,omitempty"`
+	Revision string `protobuf:"bytes,2,opt,name=revision,proto3" json:"revision,omitempty"`
+	// whether to check signature on revision
+	CheckSignature       bool     `protobuf:"varint,3,opt,name=checkSignature,proto3" json:"checkSignature,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -681,6 +683,13 @@ func (m *RepoServerRevisionMetadataRequest) GetRevision() string {
 	return ""
 }
 
+func (m *RepoServerRevisionMetadataRequest) GetCheckSignature() bool {
+	if m != nil {
+		return m.CheckSignature
+	}
+	return false
+}
+
 // KsonnetAppSpec contains Ksonnet app response
 // This roughly reflects: ksonnet/ksonnet/metadata/app/schema.go
 type KsonnetAppSpec struct {
@@ -1218,87 +1227,88 @@ func init() {
 }
 
 var fileDescriptor_dd8723cfcc820480 = []byte{
-	// 1280 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0x5b, 0x6f, 0x1b, 0xc5,
-	0x17, 0xcf, 0xda, 0xce, 0xc5, 0xc7, 0x6d, 0xe3, 0x4c, 0xfb, 0xef, 0x7f, 0x31, 0xa9, 0x15, 0x56,
-	0x80, 0x02, 0xa5, 0x36, 0x0d, 0x15, 0x54, 0xad, 0x54, 0x29, 0xf4, 0x8a, 0x92, 0xaa, 0xe9, 0x06,
-	0x2a, 0x71, 0x91, 0xaa, 0xc9, 0xfa, 0x64, 0x3d, 0x78, 0xbd, 0x3b, 0xec, 0x8c, 0x8d, 0xdc, 0x2f,
-	0x00, 0xef, 0x88, 0x17, 0xbe, 0x00, 0xef, 0x48, 0x3c, 0xf0, 0x8e, 0x10, 0x8f, 0x7c, 0x04, 0xd4,
-	0x4f, 0x82, 0x66, 0xf6, 0x36, 0x5e, 0x3b, 0x79, 0x71, 0x2f, 0x2f, 0xc9, 0xcc, 0x99, 0x73, 0x9b,
-	0x33, 0xbf, 0xf9, 0xcd, 0xf1, 0xc2, 0xbb, 0x31, 0xf2, 0x48, 0x60, 0x3c, 0xc6, 0xb8, 0xab, 0x87,
-	0x4c, 0x46, 0xf1, 0xc4, 0x18, 0x76, 0x78, 0x1c, 0xc9, 0x88, 0x40, 0x21, 0x69, 0x5d, 0xf0, 0x23,
-	0x3f, 0xd2, 0xe2, 0xae, 0x1a, 0x25, 0x1a, 0xad, 0x4d, 0x3f, 0x8a, 0xfc, 0x00, 0xbb, 0x94, 0xb3,
-	0x2e, 0x0d, 0xc3, 0x48, 0x52, 0xc9, 0xa2, 0x50, 0xa4, 0xab, 0xce, 0xe0, 0xba, 0xe8, 0xb0, 0x48,
-	0xaf, 0x7a, 0x51, 0x8c, 0xdd, 0xf1, 0xd5, 0xae, 0x8f, 0x21, 0xc6, 0x54, 0x62, 0x2f, 0xd5, 0xf9,
-	0xcc, 0x67, 0xb2, 0x3f, 0x3a, 0xea, 0x78, 0xd1, 0xb0, 0x4b, 0x63, 0x1d, 0xe2, 0x5b, 0x3d, 0xb8,
-	0xe2, 0xf5, 0xba, 0x7c, 0xe0, 0x2b, 0x63, 0xd1, 0xa5, 0x9c, 0x07, 0xcc, 0xd3, 0xce, 0xbb, 0xe3,
-	0xab, 0x34, 0xe0, 0x7d, 0x3a, 0xe3, 0xca, 0xf9, 0x7d, 0x05, 0xd6, 0x1f, 0xd2, 0x90, 0x1d, 0xa3,
-	0x90, 0x2e, 0x7e, 0x37, 0x42, 0x21, 0xc9, 0x97, 0x50, 0x53, 0x9b, 0xb0, 0xad, 0x2d, 0x6b, 0xbb,
-	0xb1, 0x73, 0xb7, 0x53, 0x44, 0xeb, 0x64, 0xd1, 0xf4, 0xe0, 0xa9, 0xd7, 0xeb, 0xf0, 0x81, 0xdf,
-	0x51, 0xd1, 0x3a, 0x46, 0xb4, 0x4e, 0x16, 0xad, 0xe3, 0xe6, 0xb5, 0x70, 0xb5, 0x4b, 0xd2, 0x82,
-	0xb5, 0x18, 0xc7, 0x4c, 0xb0, 0x28, 0xb4, 0x2b, 0x5b, 0xd6, 0x76, 0xdd, 0xcd, 0xe7, 0xc4, 0x86,
-	0xd5, 0x30, 0xba, 0x4d, 0xbd, 0x3e, 0xda, 0xd5, 0x2d, 0x6b, 0x7b, 0xcd, 0xcd, 0xa6, 0x64, 0x0b,
-	0x1a, 0x94, 0xf3, 0x7d, 0x7a, 0x84, 0xc1, 0x1e, 0x4e, 0xec, 0x9a, 0x36, 0x34, 0x45, 0xe4, 0x6d,
-	0x38, 0x9b, 0x4d, 0x9f, 0xd0, 0x60, 0x84, 0xf6, 0xb2, 0xd6, 0x99, 0x16, 0x92, 0x4d, 0xa8, 0x87,
-	0x74, 0x88, 0x82, 0x53, 0x0f, 0xed, 0x35, 0xad, 0x51, 0x08, 0xc8, 0x33, 0xd8, 0x30, 0x36, 0x71,
-	0x18, 0x8d, 0x62, 0x0f, 0x6d, 0xd0, 0x35, 0xd8, 0x5f, 0xa0, 0x06, 0xbb, 0x65, 0x9f, 0xee, 0x6c,
-	0x18, 0xf2, 0x35, 0x2c, 0x6b, 0xdc, 0xd8, 0x8d, 0xad, 0xea, 0x8b, 0xab, 0x79, 0xe2, 0x93, 0x0c,
-	0x60, 0x95, 0x07, 0x23, 0x9f, 0x85, 0xc2, 0x3e, 0xa3, 0xdd, 0x3f, 0x5e, 0xc0, 0xfd, 0xed, 0x28,
-	0x3c, 0x66, 0xfe, 0x43, 0x1a, 0x52, 0x1f, 0x87, 0x18, 0xca, 0x03, 0xed, 0xd9, 0xcd, 0x22, 0x90,
-	0xef, 0xa1, 0x39, 0x18, 0x09, 0x19, 0x0d, 0xd9, 0x33, 0x7c, 0xc4, 0x35, 0xb2, 0xed, 0xb3, 0xba,
-	0x88, 0x7b, 0x0b, 0x44, 0xdd, 0x2b, 0xb9, 0x74, 0x67, 0x82, 0x28, 0x90, 0x0c, 0x46, 0x47, 0xf8,
-	0x04, 0x63, 0x8d, 0xae, 0x73, 0x09, 0x48, 0x0c, 0x51, 0x02, 0x23, 0x96, 0xce, 0x84, 0xbd, 0xbe,
-	0x55, 0x4d, 0x60, 0x94, 0x8b, 0xc8, 0x36, 0xac, 0x8f, 0x31, 0x66, 0xc7, 0x93, 0x43, 0xe6, 0x87,
-	0x54, 0x8e, 0x62, 0xb4, 0x9b, 0x1a, 0x8a, 0x65, 0xb1, 0xf3, 0x97, 0x05, 0xcd, 0xe2, 0xde, 0x08,
-	0x1e, 0x85, 0x42, 0xe3, 0x6b, 0x98, 0xca, 0x84, 0x6d, 0x69, 0xf7, 0x85, 0x60, 0x1a, 0x7d, 0x95,
-	0x32, 0xfa, 0x2e, 0xc2, 0x4a, 0xc2, 0x2e, 0x1a, 0xfc, 0x75, 0x37, 0x9d, 0x4d, 0xdd, 0x98, 0x5a,
-	0xe9, 0xc6, 0xb4, 0x01, 0x84, 0xc6, 0xcf, 0xe7, 0x13, 0x8e, 0xf6, 0x8a, 0x5e, 0x35, 0x24, 0xc4,
-	0x81, 0x33, 0x49, 0xde, 0x2e, 0x8a, 0x51, 0x20, 0xed, 0x55, 0xad, 0x31, 0x25, 0x73, 0x02, 0x58,
-	0xdf, 0x67, 0x6a, 0x0f, 0xc7, 0xe2, 0xe5, 0xdf, 0x7f, 0xe7, 0x63, 0xa8, 0xa9, 0x48, 0x6a, 0x57,
-	0x47, 0x31, 0x0d, 0xbd, 0x3e, 0x66, 0x85, 0xca, 0xe7, 0x84, 0x40, 0x4d, 0x52, 0x5f, 0xd8, 0x15,
-	0x2d, 0xd7, 0x63, 0xe7, 0x47, 0x2b, 0x49, 0x73, 0x97, 0x73, 0xf1, 0x7a, 0x69, 0xca, 0x19, 0xc1,
-	0xea, 0x2e, 0xe7, 0x2a, 0x19, 0x72, 0x15, 0x6a, 0x94, 0xf3, 0x64, 0x07, 0x8d, 0x9d, 0x4b, 0x1d,
-	0xe3, 0x31, 0x48, 0x55, 0xd4, 0x7f, 0x71, 0x37, 0x94, 0xca, 0xb3, 0x52, 0x6d, 0x7d, 0x02, 0xf5,
-	0x5c, 0x44, 0x9a, 0x50, 0x1d, 0xe0, 0x44, 0x6f, 0xa0, 0xee, 0xaa, 0x21, 0xb9, 0x00, 0xcb, 0x63,
-	0xcd, 0x5f, 0x49, 0xd4, 0x64, 0x72, 0xa3, 0x72, 0xdd, 0x72, 0x7e, 0xab, 0xc2, 0x1b, 0x2a, 0xcf,
-	0x43, 0x0d, 0x8b, 0x5d, 0xce, 0xef, 0xa0, 0xa4, 0x2c, 0x10, 0x8f, 0x47, 0x18, 0x4f, 0x5e, 0x66,
-	0x2d, 0x7a, 0xb0, 0x92, 0x40, 0x4a, 0xe7, 0xf4, 0xa2, 0xb9, 0x30, 0xf5, 0x5d, 0x10, 0x60, 0xf5,
-	0x25, 0x10, 0xe0, 0x3c, 0x4e, 0xaa, 0xbd, 0x02, 0x4e, 0x72, 0x7e, 0xa8, 0xc0, 0x45, 0x95, 0x4e,
-	0x71, 0x5c, 0x39, 0x57, 0x28, 0x94, 0xab, 0x5b, 0x9b, 0x1c, 0xbe, 0x1e, 0x93, 0x6b, 0xb0, 0x3a,
-	0x10, 0x51, 0x18, 0xa2, 0x4c, 0x6b, 0xdd, 0x32, 0x21, 0xb5, 0x97, 0x2c, 0xed, 0x72, 0x7e, 0xc8,
-	0xd1, 0x73, 0x33, 0x55, 0x72, 0x19, 0x6a, 0x7d, 0x0c, 0x86, 0x9a, 0x37, 0x1a, 0x3b, 0xff, 0x37,
-	0x4d, 0x1e, 0x60, 0x30, 0xcc, 0xf4, 0xb5, 0x12, 0xb9, 0x01, 0xf5, 0x3c, 0xcb, 0xb4, 0x06, 0x9b,
-	0x53, 0x41, 0xb2, 0xc5, 0xcc, 0xac, 0x50, 0x57, 0xb6, 0x3d, 0x16, 0xa3, 0xa7, 0x14, 0xf5, 0x03,
-	0x5b, 0xb2, 0xbd, 0x93, 0x2d, 0xe6, 0xb6, 0xb9, 0xba, 0xf3, 0x8b, 0x05, 0x6f, 0x15, 0xf0, 0x75,
-	0xd3, 0xcb, 0xf4, 0x10, 0x25, 0xed, 0x51, 0x49, 0x5f, 0xf3, 0x95, 0xfe, 0xb3, 0x02, 0xe7, 0xa6,
-	0xab, 0xab, 0x8e, 0x47, 0x71, 0x73, 0x76, 0x3c, 0x6a, 0x4c, 0x0e, 0xe0, 0x0c, 0x86, 0x63, 0x16,
-	0x47, 0xa1, 0x7a, 0xf8, 0x32, 0xa8, 0x7e, 0x70, 0xf2, 0x19, 0x75, 0xee, 0x1a, 0xea, 0x09, 0x0b,
-	0x4c, 0x79, 0x20, 0x03, 0x00, 0x4e, 0x63, 0x3a, 0x44, 0x89, 0xb1, 0x82, 0x64, 0x75, 0x51, 0x48,
-	0x26, 0xe1, 0x0f, 0x32, 0x9f, 0xae, 0xe1, 0xbe, 0xf5, 0x14, 0x36, 0x66, 0xf2, 0x99, 0x43, 0x41,
-	0xd7, 0x4c, 0x0a, 0x6a, 0xec, 0xb4, 0xe7, 0x6c, 0xcf, 0x70, 0x63, 0x52, 0xd4, 0x1f, 0x15, 0x68,
-	0x18, 0x88, 0x9b, 0x5b, 0xc3, 0x36, 0x80, 0x36, 0xb8, 0xc7, 0x02, 0x4c, 0x2a, 0x58, 0x77, 0x0d,
-	0x09, 0xe9, 0xcf, 0xa9, 0xc8, 0x83, 0x05, 0x2a, 0xa2, 0xf2, 0x99, 0x5b, 0x0e, 0xf5, 0xe0, 0xea,
-	0xb8, 0x22, 0xed, 0x15, 0xd3, 0x19, 0x91, 0x70, 0xee, 0x98, 0x05, 0x78, 0x50, 0x64, 0xb1, 0xa2,
-	0xb3, 0xd8, 0x5f, 0x30, 0x8b, 0x7b, 0xa6, 0x53, 0xb7, 0x14, 0xc3, 0x79, 0x1f, 0x9a, 0xe5, 0xab,
-	0xa7, 0x32, 0x64, 0x43, 0xea, 0xe7, 0x75, 0x4a, 0x67, 0xce, 0xcf, 0x16, 0x90, 0xd9, 0x93, 0x38,
-	0xa9, 0xdc, 0x83, 0xeb, 0x22, 0xeb, 0x89, 0x12, 0xdc, 0x1b, 0x12, 0xb2, 0x07, 0x8d, 0x1e, 0x0a,
-	0xc9, 0x42, 0x9d, 0x70, 0x4a, 0x08, 0xef, 0x9d, 0x7e, 0xe4, 0x77, 0x0a, 0x03, 0xd7, 0xb4, 0x76,
-	0xbe, 0x80, 0x4b, 0xa7, 0x6a, 0x1b, 0x3d, 0x8e, 0x35, 0xd5, 0xe3, 0x9c, 0xda, 0x19, 0x39, 0x04,
-	0x9a, 0x65, 0x66, 0x71, 0x42, 0xd8, 0x50, 0x35, 0xbd, 0xdd, 0xa7, 0xb1, 0x7c, 0x15, 0x7d, 0xcb,
-	0x4d, 0xa8, 0xe7, 0xf1, 0xe6, 0x16, 0xba, 0x05, 0x6b, 0xe3, 0xac, 0xb1, 0x4c, 0x1a, 0x97, 0x7c,
-	0xee, 0xec, 0x02, 0x31, 0x93, 0x4d, 0x1f, 0x80, 0xcb, 0xb0, 0xcc, 0x24, 0x0e, 0xb3, 0xee, 0xe1,
-	0x7f, 0x65, 0xde, 0xd6, 0xea, 0x6e, 0xa2, 0xb3, 0xf3, 0x6b, 0x0d, 0x36, 0x0a, 0xfa, 0x54, 0x7f,
-	0x99, 0x87, 0xe4, 0x11, 0x34, 0xef, 0xa7, 0xbf, 0xe7, 0xb2, 0x5e, 0x94, 0xbc, 0x69, 0xfa, 0x29,
-	0xfd, 0xb2, 0x6b, 0x6d, 0xce, 0x5f, 0x4c, 0x32, 0x72, 0x96, 0xc8, 0x4d, 0x58, 0xcb, 0x9a, 0xc1,
-	0x69, 0x47, 0xa5, 0x16, 0xb1, 0xd5, 0x34, 0x17, 0xd5, 0x82, 0xb3, 0x44, 0x6e, 0x25, 0xc6, 0xaa,
-	0xbd, 0x99, 0x35, 0x36, 0x1a, 0xb7, 0xd6, 0xf9, 0x39, 0x8d, 0x92, 0xb3, 0x44, 0xbe, 0x81, 0xb3,
-	0xf7, 0x35, 0x75, 0xa6, 0x4f, 0x25, 0x79, 0x67, 0x3a, 0xc8, 0x09, 0xbd, 0x4f, 0xcb, 0x29, 0xab,
-	0xcd, 0xbe, 0xb6, 0xce, 0x12, 0xf9, 0xc9, 0x82, 0xf3, 0xf7, 0x51, 0x96, 0x5f, 0x1e, 0x72, 0x65,
-	0x7e, 0x90, 0x13, 0x5e, 0xa8, 0xd6, 0xde, 0x42, 0xa8, 0x9a, 0xf6, 0xe9, 0x2c, 0x91, 0x03, 0xbd,
-	0xe7, 0x02, 0x1d, 0xe4, 0xd2, 0x5c, 0x18, 0xe4, 0xa5, 0x6b, 0x9f, 0xb4, 0x9c, 0xed, 0xf3, 0xd3,
-	0x5b, 0x7f, 0x3f, 0x6f, 0x5b, 0xff, 0x3c, 0x6f, 0x5b, 0xff, 0x3e, 0x6f, 0x5b, 0x5f, 0x7d, 0x78,
-	0xda, 0x97, 0x02, 0xe3, 0x8b, 0x06, 0xe5, 0xcc, 0x0b, 0x18, 0x86, 0xf2, 0x68, 0x45, 0x7f, 0x17,
-	0xf8, 0xe8, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x61, 0xb4, 0xe7, 0xb1, 0xf0, 0x10, 0x00, 0x00,
+	// 1292 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0x5b, 0x6f, 0x1b, 0x45,
+	0x14, 0xce, 0xda, 0xce, 0xc5, 0xc7, 0x6d, 0xe2, 0x4c, 0x4b, 0x59, 0x4c, 0x6a, 0x85, 0x15, 0x54,
+	0x81, 0x52, 0x9b, 0x86, 0x0a, 0xaa, 0x56, 0xaa, 0x14, 0x7a, 0x45, 0x49, 0xd5, 0x74, 0x03, 0x95,
+	0xb8, 0x48, 0xd5, 0x64, 0x7d, 0xb2, 0x1e, 0xbc, 0xde, 0x1d, 0x76, 0xc6, 0x46, 0xe9, 0x1f, 0x80,
+	0x77, 0xc4, 0x6f, 0xe0, 0x1d, 0x89, 0x07, 0x5e, 0x11, 0x42, 0x3c, 0xf2, 0x13, 0x50, 0x7f, 0x09,
+	0x9a, 0xd9, 0xdb, 0x78, 0xed, 0xe4, 0xc5, 0xbd, 0xbc, 0x24, 0x33, 0x67, 0xce, 0x6d, 0xce, 0x7c,
+	0xf3, 0xcd, 0xf1, 0xc2, 0xa5, 0x18, 0x79, 0x24, 0x30, 0x1e, 0x63, 0xdc, 0xd5, 0x43, 0x26, 0xa3,
+	0xf8, 0xd8, 0x18, 0x76, 0x78, 0x1c, 0xc9, 0x88, 0x40, 0x21, 0x69, 0x9d, 0xf7, 0x23, 0x3f, 0xd2,
+	0xe2, 0xae, 0x1a, 0x25, 0x1a, 0xad, 0x0d, 0x3f, 0x8a, 0xfc, 0x00, 0xbb, 0x94, 0xb3, 0x2e, 0x0d,
+	0xc3, 0x48, 0x52, 0xc9, 0xa2, 0x50, 0xa4, 0xab, 0xce, 0xe0, 0xba, 0xe8, 0xb0, 0x48, 0xaf, 0x7a,
+	0x51, 0x8c, 0xdd, 0xf1, 0xd5, 0xae, 0x8f, 0x21, 0xc6, 0x54, 0x62, 0x2f, 0xd5, 0xf9, 0xdc, 0x67,
+	0xb2, 0x3f, 0x3a, 0xec, 0x78, 0xd1, 0xb0, 0x4b, 0x63, 0x1d, 0xe2, 0x3b, 0x3d, 0xb8, 0xe2, 0xf5,
+	0xba, 0x7c, 0xe0, 0x2b, 0x63, 0xd1, 0xa5, 0x9c, 0x07, 0xcc, 0xd3, 0xce, 0xbb, 0xe3, 0xab, 0x34,
+	0xe0, 0x7d, 0x3a, 0xe5, 0xca, 0xf9, 0x7d, 0x09, 0xd6, 0x1e, 0xd2, 0x90, 0x1d, 0xa1, 0x90, 0x2e,
+	0x7e, 0x3f, 0x42, 0x21, 0xc9, 0x57, 0x50, 0x53, 0x9b, 0xb0, 0xad, 0x4d, 0x6b, 0xab, 0xb1, 0x7d,
+	0xb7, 0x53, 0x44, 0xeb, 0x64, 0xd1, 0xf4, 0xe0, 0xa9, 0xd7, 0xeb, 0xf0, 0x81, 0xdf, 0x51, 0xd1,
+	0x3a, 0x46, 0xb4, 0x4e, 0x16, 0xad, 0xe3, 0xe6, 0xb5, 0x70, 0xb5, 0x4b, 0xd2, 0x82, 0x95, 0x18,
+	0xc7, 0x4c, 0xb0, 0x28, 0xb4, 0x2b, 0x9b, 0xd6, 0x56, 0xdd, 0xcd, 0xe7, 0xc4, 0x86, 0xe5, 0x30,
+	0xba, 0x4d, 0xbd, 0x3e, 0xda, 0xd5, 0x4d, 0x6b, 0x6b, 0xc5, 0xcd, 0xa6, 0x64, 0x13, 0x1a, 0x94,
+	0xf3, 0x3d, 0x7a, 0x88, 0xc1, 0x2e, 0x1e, 0xdb, 0x35, 0x6d, 0x68, 0x8a, 0xc8, 0xbb, 0x70, 0x36,
+	0x9b, 0x3e, 0xa1, 0xc1, 0x08, 0xed, 0x45, 0xad, 0x33, 0x29, 0x24, 0x1b, 0x50, 0x0f, 0xe9, 0x10,
+	0x05, 0xa7, 0x1e, 0xda, 0x2b, 0x5a, 0xa3, 0x10, 0x90, 0x67, 0xb0, 0x6e, 0x6c, 0xe2, 0x20, 0x1a,
+	0xc5, 0x1e, 0xda, 0xa0, 0x6b, 0xb0, 0x37, 0x47, 0x0d, 0x76, 0xca, 0x3e, 0xdd, 0xe9, 0x30, 0xe4,
+	0x1b, 0x58, 0xd4, 0xb8, 0xb1, 0x1b, 0x9b, 0xd5, 0x17, 0x57, 0xf3, 0xc4, 0x27, 0x19, 0xc0, 0x32,
+	0x0f, 0x46, 0x3e, 0x0b, 0x85, 0x7d, 0x46, 0xbb, 0x7f, 0x3c, 0x87, 0xfb, 0xdb, 0x51, 0x78, 0xc4,
+	0xfc, 0x87, 0x34, 0xa4, 0x3e, 0x0e, 0x31, 0x94, 0xfb, 0xda, 0xb3, 0x9b, 0x45, 0x20, 0x3f, 0x40,
+	0x73, 0x30, 0x12, 0x32, 0x1a, 0xb2, 0x67, 0xf8, 0x88, 0x6b, 0x64, 0xdb, 0x67, 0x75, 0x11, 0x77,
+	0xe7, 0x88, 0xba, 0x5b, 0x72, 0xe9, 0x4e, 0x05, 0x51, 0x20, 0x19, 0x8c, 0x0e, 0xf1, 0x09, 0xc6,
+	0x1a, 0x5d, 0xab, 0x09, 0x48, 0x0c, 0x51, 0x02, 0x23, 0x96, 0xce, 0x84, 0xbd, 0xb6, 0x59, 0x4d,
+	0x60, 0x94, 0x8b, 0xc8, 0x16, 0xac, 0x8d, 0x31, 0x66, 0x47, 0xc7, 0x07, 0xcc, 0x0f, 0xa9, 0x1c,
+	0xc5, 0x68, 0x37, 0x35, 0x14, 0xcb, 0x62, 0xe7, 0x6f, 0x0b, 0x9a, 0xc5, 0xbd, 0x11, 0x3c, 0x0a,
+	0x85, 0xc6, 0xd7, 0x30, 0x95, 0x09, 0xdb, 0xd2, 0xee, 0x0b, 0xc1, 0x24, 0xfa, 0x2a, 0x65, 0xf4,
+	0x5d, 0x80, 0xa5, 0x84, 0x5d, 0x34, 0xf8, 0xeb, 0x6e, 0x3a, 0x9b, 0xb8, 0x31, 0xb5, 0xd2, 0x8d,
+	0x69, 0x03, 0x08, 0x8d, 0x9f, 0x2f, 0x8e, 0x39, 0xda, 0x4b, 0x7a, 0xd5, 0x90, 0x10, 0x07, 0xce,
+	0x24, 0x79, 0xbb, 0x28, 0x46, 0x81, 0xb4, 0x97, 0xb5, 0xc6, 0x84, 0xcc, 0x09, 0x60, 0x6d, 0x8f,
+	0xa9, 0x3d, 0x1c, 0x89, 0x97, 0x7f, 0xff, 0x9d, 0x4f, 0xa0, 0xa6, 0x22, 0xa9, 0x5d, 0x1d, 0xc6,
+	0x34, 0xf4, 0xfa, 0x98, 0x15, 0x2a, 0x9f, 0x13, 0x02, 0x35, 0x49, 0x7d, 0x61, 0x57, 0xb4, 0x5c,
+	0x8f, 0x9d, 0x9f, 0xac, 0x24, 0xcd, 0x1d, 0xce, 0xc5, 0xeb, 0xa5, 0x29, 0x67, 0x04, 0xcb, 0x3b,
+	0x9c, 0xab, 0x64, 0xc8, 0x55, 0xa8, 0x51, 0xce, 0x93, 0x1d, 0x34, 0xb6, 0x2f, 0x76, 0x8c, 0xc7,
+	0x20, 0x55, 0x51, 0xff, 0xc5, 0xdd, 0x50, 0x2a, 0xcf, 0x4a, 0xb5, 0xf5, 0x29, 0xd4, 0x73, 0x11,
+	0x69, 0x42, 0x75, 0x80, 0xc7, 0x7a, 0x03, 0x75, 0x57, 0x0d, 0xc9, 0x79, 0x58, 0x1c, 0x6b, 0xfe,
+	0x4a, 0xa2, 0x26, 0x93, 0x1b, 0x95, 0xeb, 0x96, 0xf3, 0x5b, 0x15, 0xde, 0x52, 0x79, 0x1e, 0x68,
+	0x58, 0xec, 0x70, 0x7e, 0x07, 0x25, 0x65, 0x81, 0x78, 0x3c, 0xc2, 0xf8, 0xf8, 0x65, 0xd6, 0xa2,
+	0x07, 0x4b, 0x09, 0xa4, 0x74, 0x4e, 0x2f, 0x9a, 0x0b, 0x53, 0xdf, 0x05, 0x01, 0x56, 0x5f, 0x02,
+	0x01, 0xce, 0xe2, 0xa4, 0xda, 0x2b, 0xe0, 0x24, 0xe7, 0xc7, 0x0a, 0x5c, 0x50, 0xe9, 0x14, 0xc7,
+	0x95, 0x73, 0x85, 0x42, 0xb9, 0xba, 0xb5, 0xc9, 0xe1, 0xeb, 0x31, 0xb9, 0x06, 0xcb, 0x03, 0x11,
+	0x85, 0x21, 0xca, 0xb4, 0xd6, 0x2d, 0x13, 0x52, 0xbb, 0xc9, 0xd2, 0x0e, 0xe7, 0x07, 0x1c, 0x3d,
+	0x37, 0x53, 0x25, 0x97, 0xa1, 0xd6, 0xc7, 0x60, 0xa8, 0x79, 0xa3, 0xb1, 0xfd, 0xa6, 0x69, 0xf2,
+	0x00, 0x83, 0x61, 0xa6, 0xaf, 0x95, 0xc8, 0x0d, 0xa8, 0xe7, 0x59, 0xa6, 0x35, 0xd8, 0x98, 0x08,
+	0x92, 0x2d, 0x66, 0x66, 0x85, 0xba, 0xb2, 0xed, 0xb1, 0x18, 0x3d, 0xa5, 0xa8, 0x1f, 0xd8, 0x92,
+	0xed, 0x9d, 0x6c, 0x31, 0xb7, 0xcd, 0xd5, 0x9d, 0x3f, 0x2d, 0x78, 0xa7, 0x80, 0xaf, 0x9b, 0x5e,
+	0xa6, 0x87, 0x28, 0x69, 0x8f, 0x4a, 0xfa, 0x9a, 0x3b, 0x8f, 0x4b, 0xb0, 0xea, 0xf5, 0xd1, 0x1b,
+	0x14, 0xac, 0x9f, 0x34, 0x20, 0x25, 0xa9, 0xf3, 0x57, 0x05, 0x56, 0x27, 0x4f, 0x41, 0x1d, 0xa3,
+	0xe2, 0xf0, 0xec, 0x18, 0xd5, 0x98, 0xec, 0xc3, 0x19, 0x0c, 0xc7, 0x2c, 0x8e, 0x42, 0xf5, 0x40,
+	0x66, 0x90, 0xfe, 0xf0, 0xe4, 0xb3, 0xec, 0xdc, 0x35, 0xd4, 0x13, 0xb6, 0x98, 0xf0, 0x40, 0x06,
+	0x00, 0x9c, 0xc6, 0x74, 0x88, 0x12, 0x63, 0x05, 0xdd, 0xea, 0xbc, 0xd0, 0x4d, 0xc2, 0xef, 0x67,
+	0x3e, 0x5d, 0xc3, 0x7d, 0xeb, 0x29, 0xac, 0x4f, 0xe5, 0x33, 0x83, 0xaa, 0xae, 0x99, 0x54, 0xd5,
+	0xd8, 0x6e, 0xcf, 0xd8, 0x9e, 0xe1, 0xc6, 0xa4, 0xb2, 0x3f, 0x2a, 0xd0, 0x30, 0x90, 0x39, 0xb3,
+	0x86, 0x6d, 0x00, 0x6d, 0x70, 0x8f, 0x05, 0x98, 0x54, 0xb0, 0xee, 0x1a, 0x12, 0xd2, 0x9f, 0x51,
+	0x91, 0x07, 0x73, 0x54, 0x44, 0xe5, 0x33, 0xb3, 0x1c, 0xea, 0x61, 0xd6, 0x71, 0x45, 0xda, 0x53,
+	0xa6, 0x33, 0x22, 0x61, 0xf5, 0x88, 0x05, 0xb8, 0x5f, 0x64, 0xb1, 0xa4, 0xb3, 0xd8, 0x9b, 0x33,
+	0x8b, 0x7b, 0xa6, 0x53, 0xb7, 0x14, 0xc3, 0xf9, 0x00, 0x9a, 0xe5, 0x2b, 0xaa, 0x32, 0x64, 0x43,
+	0xea, 0xe7, 0x75, 0x4a, 0x67, 0xce, 0x2f, 0x16, 0x90, 0xe9, 0x93, 0x38, 0xa9, 0xdc, 0x83, 0xeb,
+	0x22, 0xeb, 0x9d, 0x92, 0xfb, 0x61, 0x48, 0xc8, 0x2e, 0x34, 0x7a, 0x28, 0x24, 0x0b, 0x75, 0xc2,
+	0x29, 0x71, 0xbc, 0x7f, 0xfa, 0x91, 0xdf, 0x29, 0x0c, 0x5c, 0xd3, 0xda, 0xf9, 0x12, 0x2e, 0x9e,
+	0xaa, 0x6d, 0xf4, 0x42, 0xd6, 0x44, 0x2f, 0x74, 0x6a, 0x07, 0xe5, 0x10, 0x68, 0x96, 0x19, 0xc8,
+	0x09, 0x61, 0x5d, 0xd5, 0xf4, 0x76, 0x9f, 0xc6, 0xf2, 0x55, 0xf4, 0x37, 0x37, 0xa1, 0x9e, 0xc7,
+	0x9b, 0x59, 0xe8, 0x16, 0xac, 0x8c, 0xb3, 0x06, 0x34, 0x69, 0x70, 0xf2, 0xb9, 0xb3, 0x03, 0xc4,
+	0x4c, 0x36, 0x7d, 0x28, 0x2e, 0xc3, 0x22, 0x93, 0x38, 0xcc, 0xba, 0x8c, 0x37, 0xca, 0xfc, 0xae,
+	0xd5, 0xdd, 0x44, 0x67, 0xfb, 0xd7, 0x1a, 0xac, 0x17, 0x34, 0xab, 0xfe, 0x32, 0x0f, 0xc9, 0x23,
+	0x68, 0xde, 0x4f, 0x7f, 0xf7, 0x65, 0x3d, 0x2b, 0x79, 0xdb, 0xf4, 0x53, 0xfa, 0x05, 0xd8, 0xda,
+	0x98, 0xbd, 0x98, 0x64, 0xe4, 0x2c, 0x90, 0x9b, 0xb0, 0x92, 0x35, 0x8d, 0x93, 0x8e, 0x4a, 0xad,
+	0x64, 0xab, 0x69, 0x2e, 0xaa, 0x05, 0x67, 0x81, 0xdc, 0x4a, 0x8c, 0x55, 0x1b, 0x34, 0x6d, 0x6c,
+	0x34, 0x78, 0xad, 0x73, 0x33, 0x1a, 0x2a, 0x67, 0x81, 0x7c, 0x0b, 0x67, 0xef, 0x6b, 0xea, 0x4c,
+	0x9f, 0x54, 0xf2, 0xde, 0x64, 0x90, 0x13, 0x7a, 0xa4, 0x96, 0x53, 0x56, 0x9b, 0x7e, 0x95, 0x9d,
+	0x05, 0xf2, 0xb3, 0x05, 0xe7, 0xee, 0xa3, 0x2c, 0xbf, 0x50, 0xe4, 0xca, 0xec, 0x20, 0x27, 0xbc,
+	0x64, 0xad, 0xdd, 0xb9, 0x50, 0x35, 0xe9, 0xd3, 0x59, 0x20, 0xfb, 0x7a, 0xcf, 0x05, 0x3a, 0xc8,
+	0xc5, 0x99, 0x30, 0xc8, 0x4b, 0xd7, 0x3e, 0x69, 0x39, 0xdb, 0xe7, 0x67, 0xb7, 0xfe, 0x79, 0xde,
+	0xb6, 0xfe, 0x7d, 0xde, 0xb6, 0xfe, 0x7b, 0xde, 0xb6, 0xbe, 0xfe, 0xe8, 0xb4, 0x2f, 0x0a, 0xc6,
+	0x97, 0x0f, 0xca, 0x99, 0x17, 0x30, 0x0c, 0xe5, 0xe1, 0x92, 0xfe, 0x7e, 0xf0, 0xf1, 0xff, 0x01,
+	0x00, 0x00, 0xff, 0xff, 0xaa, 0x90, 0xca, 0xf2, 0x18, 0x11, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -2160,6 +2170,16 @@ func (m *RepoServerRevisionMetadataRequest) MarshalToSizedBuffer(dAtA []byte) (i
 		i -= len(m.XXX_unrecognized)
 		copy(dAtA[i:], m.XXX_unrecognized)
 	}
+	if m.CheckSignature {
+		i--
+		if m.CheckSignature {
+			dAtA[i] = 1
+		} else {
+			dAtA[i] = 0
+		}
+		i--
+		dAtA[i] = 0x18
+	}
 	if len(m.Revision) > 0 {
 		i -= len(m.Revision)
 		copy(dAtA[i:], m.Revision)
@@ -2887,6 +2907,9 @@ func (m *RepoServerRevisionMetadataRequest) Size() (n int) {
 	if l > 0 {
 		n += 1 + l + sovRepository(uint64(l))
 	}
+	if m.CheckSignature {
+		n += 2
+	}
 	if m.XXX_unrecognized != nil {
 		n += len(m.XXX_unrecognized)
 	}
@@ -4844,6 +4867,26 @@ func (m *RepoServerRevisionMetadataRequest) Unmarshal(dAtA []byte) error {
 			}
 			m.Revision = string(dAtA[iNdEx:postIndex])
 			iNdEx = postIndex
+		case 3:
+			if wireType != 0 {
+				return fmt.Errorf("proto: wrong wireType = %d for field CheckSignature", wireType)
+			}
+			var v int
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowRepository
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				v |= int(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			m.CheckSignature = bool(v != 0)
 		default:
 			iNdEx = preIndex
 			skippy, err := skipRepository(dAtA[iNdEx:])
diff --git a/reposerver/cache/cache.go b/reposerver/cache/cache.go
index a45b6a0ec..d9fc4a327 100644
--- a/reposerver/cache/cache.go
+++ b/reposerver/cache/cache.go
@@ -1,8 +1,10 @@
 package cache
 
 import (
+	"encoding/base64"
 	"encoding/json"
 	"fmt"
+	"hash/fnv"
 	"time"
 
 	"github.com/go-redis/redis/v8"
@@ -12,6 +14,8 @@ import (
 	"github.com/argoproj/argo-cd/reposerver/apiclient"
 	cacheutil "github.com/argoproj/argo-cd/util/cache"
 	"github.com/argoproj/argo-cd/util/hash"
+
+	log "github.com/sirupsen/logrus"
 )
 
 var ErrCacheMiss = cacheutil.ErrCacheMiss
@@ -70,10 +74,48 @@ func manifestCacheKey(revision string, appSrc *appv1.ApplicationSource, namespac
 }
 
 func (c *Cache) GetManifests(revision string, appSrc *appv1.ApplicationSource, namespace string, appLabelKey string, appLabelValue string, res *CachedManifestResponse) error {
-	return c.cache.GetItem(manifestCacheKey(revision, appSrc, namespace, appLabelKey, appLabelValue), res)
+	err := c.cache.GetItem(manifestCacheKey(revision, appSrc, namespace, appLabelKey, appLabelValue), res)
+
+	if err != nil {
+		return err
+	}
+
+	hash, err := res.generateCacheEntryHash()
+	if err != nil {
+		return fmt.Errorf("Unable to generate hash value: %s", err)
+	}
+
+	// If the expected hash of the cache entry does not match the actual hash value...
+	if hash != res.CacheEntryHash {
+		log.Warnf("Manifest hash did not match expected value, treating as a cache miss: %s", appLabelValue)
+
+		err = c.DeleteManifests(revision, appSrc, namespace, appLabelKey, appLabelValue)
+		if err != nil {
+			return fmt.Errorf("Unable to delete manifest after hash mismatch, %v", err)
+		}
+
+		// Treat hash mismatches as cache misses, so that the underlying resource is reacquired
+		return ErrCacheMiss
+	}
+
+	// The expected hash matches the actual hash, so remove the hash from the returned value
+	res.CacheEntryHash = ""
+
+	return nil
 }
 
 func (c *Cache) SetManifests(revision string, appSrc *appv1.ApplicationSource, namespace string, appLabelKey string, appLabelValue string, res *CachedManifestResponse) error {
+
+	// Generate and apply the cache entry hash, before writing
+	if res != nil {
+		res = res.shallowCopy()
+		hash, err := res.generateCacheEntryHash()
+		if err != nil {
+			return fmt.Errorf("Unable to generate hash value: %s", err)
+		}
+		res.CacheEntryHash = hash
+	}
+
 	return c.cache.SetItem(manifestCacheKey(revision, appSrc, namespace, appLabelKey, appLabelValue), res, c.repoCacheExpiration, res == nil)
 }
 
@@ -106,12 +148,52 @@ func (c *Cache) SetRevisionMetadata(repoURL, revision string, item *appv1.Revisi
 	return c.cache.SetItem(revisionMetadataKey(repoURL, revision), item, c.repoCacheExpiration, false)
 }
 
+func (cmr *CachedManifestResponse) shallowCopy() *CachedManifestResponse {
+	if cmr == nil {
+		return nil
+	}
+
+	return &CachedManifestResponse{
+		CacheEntryHash:                  cmr.CacheEntryHash,
+		FirstFailureTimestamp:           cmr.FirstFailureTimestamp,
+		ManifestResponse:                cmr.ManifestResponse,
+		MostRecentError:                 cmr.MostRecentError,
+		NumberOfCachedResponsesReturned: cmr.NumberOfCachedResponsesReturned,
+		NumberOfConsecutiveFailures:     cmr.NumberOfConsecutiveFailures,
+	}
+}
+
+func (cmr *CachedManifestResponse) generateCacheEntryHash() (string, error) {
+
+	// Copy, then remove the old hash
+	copy := cmr.shallowCopy()
+	copy.CacheEntryHash = ""
+
+	// Hash the JSON representation into a base-64-encoded FNV 64a (we don't need a cryptographic hash algorithm, since this is only for detecting data corruption)
+	bytes, err := json.Marshal(copy)
+	if err != nil {
+		return "", err
+	}
+	h := fnv.New64a()
+	_, err = h.Write(bytes)
+	if err != nil {
+		return "", err
+	}
+	fnvHash := h.Sum(nil)
+	return base64.URLEncoding.EncodeToString(fnvHash), nil
+
+}
+
 // CachedManifestResponse represents a cached result of a previous manifest generation operation, including the caching
 // of a manifest generation error, plus additional information on previous failures
 type CachedManifestResponse struct {
-	ManifestResponse                *apiclient.ManifestResponse
-	MostRecentError                 string
-	FirstFailureTimestamp           int64
-	NumberOfConsecutiveFailures     int
-	NumberOfCachedResponsesReturned int
+
+	// NOTE: When adding fields to this struct, you MUST also update shallowCopy()
+
+	CacheEntryHash                  string                      `json:"cacheEntryHash"`
+	ManifestResponse                *apiclient.ManifestResponse `json:"manifestResponse"`
+	MostRecentError                 string                      `json:"mostRecentError"`
+	FirstFailureTimestamp           int64                       `json:"firstFailureTimestamp"`
+	NumberOfConsecutiveFailures     int                         `json:"numberOfConsecutiveFailures"`
+	NumberOfCachedResponsesReturned int                         `json:"numberOfCachedResponsesReturned"`
 }
diff --git a/reposerver/repository/repository.go b/reposerver/repository/repository.go
index a1ee13e5e..10a08a773 100644
--- a/reposerver/repository/repository.go
+++ b/reposerver/repository/repository.go
@@ -41,6 +41,7 @@ import (
 	argopath "github.com/argoproj/argo-cd/util/app/path"
 	executil "github.com/argoproj/argo-cd/util/exec"
 	"github.com/argoproj/argo-cd/util/git"
+	"github.com/argoproj/argo-cd/util/glob"
 	"github.com/argoproj/argo-cd/util/gpg"
 	"github.com/argoproj/argo-cd/util/helm"
 	"github.com/argoproj/argo-cd/util/io"
@@ -829,6 +830,12 @@ func findManifests(appPath string, repoRoot string, env *v1alpha1.Env, directory
 		if !manifestFile.MatchString(f.Name()) {
 			return nil
 		}
+
+		fileNameWithPath := filepath.Join(appPath, f.Name())
+		if glob.Match(directory.Exclude, fileNameWithPath) {
+			return nil
+		}
+
 		out, err := utfutil.ReadFile(path, utfutil.UTF8)
 		if err != nil {
 			return err
@@ -1114,8 +1121,20 @@ func (s *Service) GetRevisionMetadata(ctx context.Context, q *apiclient.RepoServ
 	}
 	metadata, err := s.cache.GetRevisionMetadata(q.Repo.Repo, q.Revision)
 	if err == nil {
-		log.Infof("revision metadata cache hit: %s/%s", q.Repo.Repo, q.Revision)
-		return metadata, nil
+		// The logic here is that if a signature check on metadata is requested,
+		// but there is none in the cache, we handle as if we have a cache miss
+		// and re-generate the meta data. Otherwise, if there is signature info
+		// in the metadata, but none was requested, we remove it from the data
+		// that we return.
+		if q.CheckSignature && metadata.SignatureInfo == "" {
+			log.Infof("revision metadata cache hit, but need to regenerate due to missing signature info: %s/%s", q.Repo.Repo, q.Revision)
+		} else {
+			log.Infof("revision metadata cache hit: %s/%s", q.Repo.Repo, q.Revision)
+			if !q.CheckSignature {
+				metadata.SignatureInfo = ""
+			}
+			return metadata, nil
+		}
 	} else {
 		if err != reposervercache.ErrCacheMiss {
 			log.Warnf("revision metadata cache error %s/%s: %v", q.Repo.Repo, q.Revision, err)
@@ -1149,7 +1168,7 @@ func (s *Service) GetRevisionMetadata(ctx context.Context, q *apiclient.RepoServ
 
 	// Run gpg verify-commit on the revision
 	signatureInfo := ""
-	if gpg.IsGPGEnabled() {
+	if gpg.IsGPGEnabled() && q.CheckSignature {
 		cs, err := gitClient.VerifyCommitSignature(q.Revision)
 		if err != nil {
 			log.Debugf("Could not verify commit signature: %v", err)
diff --git a/reposerver/repository/repository.proto b/reposerver/repository/repository.proto
index 7802aab3d..986d14092 100644
--- a/reposerver/repository/repository.proto
+++ b/reposerver/repository/repository.proto
@@ -81,6 +81,8 @@ message RepoServerRevisionMetadataRequest {
     github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.Repository repo = 1;
     // the revision within the repo
     string revision = 2;
+    // whether to check signature on revision
+    bool checkSignature = 3;
 }
 
 // KsonnetAppSpec contains Ksonnet app response
diff --git a/server/application/application.go b/server/application/application.go
index 09e7282d0..b8ddab2db 100644
--- a/server/application/application.go
+++ b/server/application/application.go
@@ -982,12 +982,22 @@ func (s *Server) RevisionMetadata(ctx context.Context, q *application.RevisionMe
 	if err != nil {
 		return nil, err
 	}
+	// We need to get some information with the project associated to the app,
+	// so we'll know whether GPG signatures are enforced.
+	proj, err := argo.GetAppProject(&a.Spec, applisters.NewAppProjectLister(s.projInformer.GetIndexer()), a.Namespace, s.settingsMgr)
+	if err != nil {
+		return nil, err
+	}
 	conn, repoClient, err := s.repoClientset.NewRepoServerClient()
 	if err != nil {
 		return nil, err
 	}
 	defer io.Close(conn)
-	return repoClient.GetRevisionMetadata(ctx, &apiclient.RepoServerRevisionMetadataRequest{Repo: repo, Revision: q.GetRevision()})
+	return repoClient.GetRevisionMetadata(ctx, &apiclient.RepoServerRevisionMetadataRequest{
+		Repo:           repo,
+		Revision:       q.GetRevision(),
+		CheckSignature: len(proj.Spec.SignatureKeys) > 0,
+	})
 }
 
 func isMatchingResource(q *application.ResourcesQuery, key kube.ResourceKey) bool {
@@ -1448,9 +1458,6 @@ func (s *Server) RunResourceAction(ctx context.Context, q *application.ResourceA
 		return nil, err
 	}
 
-	s.logAppEvent(a, ctx, argo.EventReasonResourceActionRan, fmt.Sprintf("ran action %s on resource %s/%s/%s", q.Action, res.Group, res.Kind, res.Name))
-	s.logResourceEvent(res, ctx, argo.EventReasonResourceActionRan, fmt.Sprintf("ran action %s", q.Action))
-
 	newObjBytes, err := json.Marshal(newObj)
 	if err != nil {
 		return nil, err
@@ -1469,13 +1476,76 @@ func (s *Server) RunResourceAction(ctx context.Context, q *application.ResourceA
 		return &application.ApplicationResponse{}, nil
 	}
 
-	_, err = s.kubectl.PatchResource(ctx, config, newObj.GroupVersionKind(), newObj.GetName(), newObj.GetNamespace(), types.MergePatchType, diffBytes)
+	// The following logic detects if the resource action makes a modification to status and/or spec.
+	// If status was modified, we attempt to patch the status using status subresource, in case the
+	// CRD is configured using the status subresource feature. See:
+	// https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#status-subresource
+	// If status subresource is in use, the patch has to be split into two:
+	// * one to update spec (and other non-status fields)
+	// * the other to update only status.
+	nonStatusPatch, statusPatch, err := splitStatusPatch(diffBytes)
 	if err != nil {
 		return nil, err
 	}
+	if statusPatch != nil {
+		_, err = s.kubectl.PatchResource(ctx, config, newObj.GroupVersionKind(), newObj.GetName(), newObj.GetNamespace(), types.MergePatchType, diffBytes, "status")
+		if err != nil {
+			if !apierr.IsNotFound(err) {
+				return nil, err
+			}
+			// K8s API server returns 404 NotFound when the CRD does not support the status subresource
+			// if we get here, the CRD does not use the status subresource. We will fall back to a normal patch
+		} else {
+			// If we get here, the CRD does use the status subresource, so we must patch status and
+			// spec separately. update the diffBytes to the spec-only patch and fall through.
+			diffBytes = nonStatusPatch
+		}
+	}
+	if diffBytes != nil {
+		_, err = s.kubectl.PatchResource(ctx, config, newObj.GroupVersionKind(), newObj.GetName(), newObj.GetNamespace(), types.MergePatchType, diffBytes)
+		if err != nil {
+			return nil, err
+		}
+	}
+
+	s.logAppEvent(a, ctx, argo.EventReasonResourceActionRan, fmt.Sprintf("ran action %s on resource %s/%s/%s", q.Action, res.Group, res.Kind, res.Name))
+	s.logResourceEvent(res, ctx, argo.EventReasonResourceActionRan, fmt.Sprintf("ran action %s", q.Action))
 	return &application.ApplicationResponse{}, nil
 }
 
+// splitStatusPatch splits a patch into two: one for a non-status patch, and the status-only patch.
+// Returns nil for either if the patch doesn't have modifications to non-status, or status, respectively.
+func splitStatusPatch(patch []byte) ([]byte, []byte, error) {
+	var obj map[string]interface{}
+	err := json.Unmarshal(patch, &obj)
+	if err != nil {
+		return nil, nil, err
+	}
+	var nonStatusPatch, statusPatch []byte
+	if statusVal, ok := obj["status"]; ok {
+		// calculate the status-only patch
+		statusObj := map[string]interface{}{
+			"status": statusVal,
+		}
+		statusPatch, err = json.Marshal(statusObj)
+		if err != nil {
+			return nil, nil, err
+		}
+		// remove status, and calculate the non-status patch
+		delete(obj, "status")
+		if len(obj) > 0 {
+			nonStatusPatch, err = json.Marshal(obj)
+			if err != nil {
+				return nil, nil, err
+			}
+		}
+	} else {
+		// status was not modified in patch
+		nonStatusPatch = patch
+	}
+	return nonStatusPatch, statusPatch, nil
+}
+
 func (s *Server) plugins() ([]*v1alpha1.ConfigManagementPlugin, error) {
 	plugins, err := s.settingsMgr.GetConfigManagementPlugins()
 	if err != nil {
diff --git a/ui/src/app/applications/components/revision-form-field/revision-form-field.tsx b/ui/src/app/applications/components/revision-form-field/revision-form-field.tsx
index 2acad61af..f40386f2e 100644
--- a/ui/src/app/applications/components/revision-form-field/revision-form-field.tsx
+++ b/ui/src/app/applications/components/revision-form-field/revision-form-field.tsx
@@ -22,7 +22,7 @@ export class RevisionFormField extends React.PureComponent<RevisionFormFieldProp
                         if (src.repoURL) {
                             return services.repos
                                 .revisions(src.repoURL)
-                                .then(revisionsRes => ['HEAD'].concat(revisionsRes.branches).concat(revisionsRes.tags))
+                                .then(revisionsRes => ['HEAD'].concat(revisionsRes.branches || []).concat(revisionsRes.tags || []))
                                 .catch(() => []);
                         }
                         return [];
diff --git a/ui/src/app/settings/components/project-edit-panel/project-edit-panel.tsx b/ui/src/app/settings/components/project-edit-panel/project-edit-panel.tsx
index f99ad4014..1f86ebd59 100644
--- a/ui/src/app/settings/components/project-edit-panel/project-edit-panel.tsx
+++ b/ui/src/app/settings/components/project-edit-panel/project-edit-panel.tsx
@@ -117,7 +117,7 @@ export const ProjectEditPanel = (props: {nameReadonly?: boolean; defaultParams?:
                     </DataLoader>
 
                     <React.Fragment>
-                        <h4>Whitelisted Cluster Resources</h4>
+                        <h4>Allowed Cluster Resources</h4>
                         <div>Cluster-scoped K8s API Groups and Kinds which are permitted to be deployed</div>
                         <div className='argo-table-list__head'>
                             <div className='row'>
@@ -141,12 +141,12 @@ export const ProjectEditPanel = (props: {nameReadonly?: boolean; defaultParams?:
                             </div>
                         ))}
                         <a onClick={() => api.setValue('clusterResourceWhitelist', api.values.clusterResourceWhitelist.concat({group: '', kind: ''}))}>
-                            whitelist new cluster resource
+                            allow new cluster resource
                         </a>
                     </React.Fragment>
 
                     <React.Fragment>
-                        <h4>Blacklisted Cluster Resources</h4>
+                        <h4>Denied Cluster Resources</h4>
                         <div>Cluster-scoped K8s API Groups and Kinds which are not permitted to be deployed</div>
                         <div className='argo-table-list__head'>
                             <div className='row'>
@@ -169,13 +169,11 @@ export const ProjectEditPanel = (props: {nameReadonly?: boolean; defaultParams?:
                                 </div>
                             </div>
                         ))}
-                        <a onClick={() => api.setValue('clusterResourceBlacklist', api.values.clusterResourceBlacklist.concat({group: '', kind: ''}))}>
-                            blacklist new cluster resource
-                        </a>
+                        <a onClick={() => api.setValue('clusterResourceBlacklist', api.values.clusterResourceBlacklist.concat({group: '', kind: ''}))}>deny new cluster resource</a>
                     </React.Fragment>
 
                     <React.Fragment>
-                        <h4>Blacklisted Namespaced Resources</h4>
+                        <h4>Denied Namespaced Resources</h4>
                         <div>
                             Namespace-scoped K8s API Groups and Kinds which are <strong>prohibited</strong> from being deployed
                         </div>
@@ -201,12 +199,12 @@ export const ProjectEditPanel = (props: {nameReadonly?: boolean; defaultParams?:
                             </div>
                         ))}
                         <a onClick={() => api.setValue('namespaceResourceBlacklist', api.values.namespaceResourceBlacklist.concat({group: '', kind: ''}))}>
-                            blacklist new namespaced resource
+                            deny new namespaced resource
                         </a>
                     </React.Fragment>
 
                     <React.Fragment>
-                        <h4>Whitelisted Namespaced Resources</h4>
+                        <h4>Allowed Namespaced Resources</h4>
                         <div>
                             Namespace-scoped K8s API Groups and Kinds which are <strong>permitted</strong> to deploy
                         </div>
@@ -232,7 +230,7 @@ export const ProjectEditPanel = (props: {nameReadonly?: boolean; defaultParams?:
                             </div>
                         ))}
                         <a onClick={() => api.setValue('namespaceResourceWhitelist', api.values.namespaceResourceWhitelist.concat({group: '', kind: ''}))}>
-                            whitelist new namespaced resource
+                            allow new namespaced resource
                         </a>
                     </React.Fragment>
 
diff --git a/util/argo/argo.go b/util/argo/argo.go
index 683161a8f..2a3f95844 100644
--- a/util/argo/argo.go
+++ b/util/argo/argo.go
@@ -482,7 +482,11 @@ func NormalizeApplicationSpec(spec *argoappv1.ApplicationSpec) *argoappv1.Applic
 		spec.Source.Ksonnet = nil
 	}
 	if spec.Source.Directory != nil && spec.Source.Directory.IsZero() {
-		spec.Source.Directory = nil
+		if spec.Source.Directory.Exclude != "" {
+			spec.Source.Directory = &argoappv1.ApplicationSourceDirectory{Exclude: spec.Source.Directory.Exclude}
+		} else {
+			spec.Source.Directory = nil
+		}
 	}
 	return spec
 }
diff --git a/util/cache/inmemory.go b/util/cache/inmemory.go
index 1cfe88e46..7064b7108 100644
--- a/util/cache/inmemory.go
+++ b/util/cache/inmemory.go
@@ -54,3 +54,25 @@ func (i *InMemoryCache) OnUpdated(ctx context.Context, key string, callback func
 func (i *InMemoryCache) NotifyUpdated(key string) error {
 	return nil
 }
+
+// Items return a list of items in the cache; requires passing a constructor function
+// so that the items can be decoded from gob format.
+func (i *InMemoryCache) Items(createNewObject func() interface{}) (map[string]interface{}, error) {
+
+	result := map[string]interface{}{}
+
+	for key, value := range i.memCache.Items() {
+
+		buf := value.Object.(bytes.Buffer)
+		obj := createNewObject()
+		err := gob.NewDecoder(&buf).Decode(obj)
+		if err != nil {
+			return nil, err
+		}
+
+		result[key] = obj
+
+	}
+
+	return result, nil
+}
diff --git a/util/log/logrus.go b/util/log/logrus.go
index ecb725a61..966fa5fbe 100644
--- a/util/log/logrus.go
+++ b/util/log/logrus.go
@@ -1,11 +1,15 @@
 package log
 
 import (
+	"fmt"
+
 	adapter "github.com/bombsimon/logrusr"
 	"github.com/go-logr/logr"
 	"github.com/sirupsen/logrus"
 )
 
 func NewLogrusLogger(fieldLogger logrus.FieldLogger) logr.Logger {
-	return adapter.NewLogger(fieldLogger)
+	return adapter.NewLoggerWithFormatter(fieldLogger, func(val interface{}) string {
+		return fmt.Sprintf("%v", val)
+	})
 }


Test patch:
diff --git a/reposerver/cache/cache_test.go b/reposerver/cache/cache_test.go
index 6dae34ceb..bc60fb2c5 100644
--- a/reposerver/cache/cache_test.go
+++ b/reposerver/cache/cache_test.go
@@ -1,6 +1,9 @@
 package cache
 
 import (
+	"encoding/json"
+	"errors"
+	"strings"
 	"testing"
 	"time"
 
@@ -8,6 +11,7 @@ import (
 	"github.com/stretchr/testify/assert"
 
 	. "github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1"
+	appv1 "github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1"
 	"github.com/argoproj/argo-cd/reposerver/apiclient"
 	cacheutil "github.com/argoproj/argo-cd/util/cache"
 )
@@ -120,3 +124,174 @@ func TestAddCacheFlagsToCmd(t *testing.T) {
 	assert.NoError(t, err)
 	assert.Equal(t, 24*time.Hour, cache.repoCacheExpiration)
 }
+
+func TestCachedManifestResponse_HashBehavior(t *testing.T) {
+
+	inMemCache := cacheutil.NewInMemoryCache(1 * time.Hour)
+
+	repoCache := NewCache(
+		cacheutil.NewCache(inMemCache),
+		1*time.Minute,
+	)
+
+	response := apiclient.ManifestResponse{
+		Namespace: "default",
+		Revision:  "revision",
+		Manifests: []string{"sample-text"},
+	}
+	appSrc := &appv1.ApplicationSource{}
+	appKey := "key"
+	appValue := "value"
+
+	// Set the value in the cache
+	store := &CachedManifestResponse{
+		FirstFailureTimestamp:           0,
+		ManifestResponse:                &response,
+		MostRecentError:                 "",
+		NumberOfCachedResponsesReturned: 0,
+		NumberOfConsecutiveFailures:     0,
+	}
+	err := repoCache.SetManifests(response.Revision, appSrc, response.Namespace, appKey, appValue, store)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	// Get the cache entry of the set value directly from the in memory cache, and check the values
+	var cacheKey string
+	var cmr *CachedManifestResponse
+	{
+
+		items := getInMemoryCacheContents(t, inMemCache)
+
+		assert.Equal(t, len(items), 1)
+
+		for key, val := range items {
+			cmr = val
+			cacheKey = key
+		}
+		assert.NotEmpty(t, cmr.CacheEntryHash)
+		assert.NotNil(t, cmr.ManifestResponse)
+		assert.Equal(t, cmr.ManifestResponse, store.ManifestResponse)
+
+		regeneratedHash, err := cmr.generateCacheEntryHash()
+		if err != nil {
+			t.Fatal(err)
+		}
+		assert.Equal(t, cmr.CacheEntryHash, regeneratedHash)
+	}
+
+	// Retrieve the value using 'GetManifests' and confirm it works
+	retrievedVal := &CachedManifestResponse{}
+	err = repoCache.GetManifests(response.Revision, appSrc, response.Namespace, appKey, appValue, retrievedVal)
+	if err != nil {
+		t.Fatal(err)
+	}
+	assert.Equal(t, retrievedVal, store)
+
+	// Corrupt the hash so that it doesn't match
+	{
+		newCmr := cmr.shallowCopy()
+		newCmr.CacheEntryHash = "!bad-hash!"
+
+		err := inMemCache.Set(&cacheutil.Item{
+			Key:    cacheKey,
+			Object: &newCmr,
+		})
+		if err != nil {
+			t.Fatal(err)
+		}
+
+	}
+
+	// Retrieve the value using GetManifests and confirm it returns a cache miss
+	retrievedVal = &CachedManifestResponse{}
+	err = repoCache.GetManifests(response.Revision, appSrc, response.Namespace, appKey, appValue, retrievedVal)
+
+	assert.True(t, err == cacheutil.ErrCacheMiss)
+
+	// Verify that the hash mismatch item has been deleted
+	items := getInMemoryCacheContents(t, inMemCache)
+	assert.Equal(t, len(items), 0)
+
+}
+
+func getInMemoryCacheContents(t *testing.T, inMemCache *cacheutil.InMemoryCache) map[string]*CachedManifestResponse {
+	items, err := inMemCache.Items(func() interface{} { return &CachedManifestResponse{} })
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	result := map[string]*CachedManifestResponse{}
+	for key, val := range items {
+		obj, ok := val.(*CachedManifestResponse)
+		if !ok {
+			t.Fatal(errors.New("Unexpected type in cache"))
+		}
+
+		result[key] = obj
+	}
+
+	return result
+}
+
+func TestCachedManifestResponse_ShallowCopy(t *testing.T) {
+
+	pre := &CachedManifestResponse{
+		CacheEntryHash:        "value",
+		FirstFailureTimestamp: 1,
+		ManifestResponse: &apiclient.ManifestResponse{
+			Manifests: []string{"one", "two"},
+		},
+		MostRecentError:                 "error",
+		NumberOfCachedResponsesReturned: 2,
+		NumberOfConsecutiveFailures:     3,
+	}
+
+	post := pre.shallowCopy()
+	assert.Equal(t, pre, post)
+
+	unequal := &CachedManifestResponse{
+		CacheEntryHash:        "diff-value",
+		FirstFailureTimestamp: 1,
+		ManifestResponse: &apiclient.ManifestResponse{
+			Manifests: []string{"one", "two"},
+		},
+		MostRecentError:                 "error",
+		NumberOfCachedResponsesReturned: 2,
+		NumberOfConsecutiveFailures:     3,
+	}
+	assert.NotEqual(t, pre, unequal)
+}
+
+func TestCachedManifestResponse_ShallowCopyExpectedFields(t *testing.T) {
+
+	// Attempt to ensure that the developer updated CachedManifestResponse.shallowCopy(), by doing a sanity test of the structure here
+
+	val := &CachedManifestResponse{}
+
+	str, err := json.Marshal(val)
+	if err != nil {
+		assert.FailNow(t, "Unable to marshal", err)
+		return
+	}
+
+	jsonMap := map[string]interface{}{}
+	err = json.Unmarshal(str, &jsonMap)
+	if err != nil {
+		assert.FailNow(t, "Unable to unmarshal", err)
+		return
+	}
+
+	expectedFields := []string{"cacheEntryHash", "manifestResponse", "mostRecentError", "firstFailureTimestamp",
+		"numberOfConsecutiveFailures", "numberOfCachedResponsesReturned"}
+
+	assert.Equal(t, len(jsonMap), len(expectedFields))
+
+	// If this test failed, you probably also forgot to update CachedManifestResponse.shallowCopy(), so
+	// go do that first :)
+
+	for _, expectedField := range expectedFields {
+		assert.Truef(t, strings.Contains(string(str), "\""+expectedField+"\""), "Missing field: %s", expectedField)
+	}
+
+}
diff --git a/reposerver/repository/repository_test.go b/reposerver/repository/repository_test.go
index a2ac2ab0c..c74015b27 100644
--- a/reposerver/repository/repository_test.go
+++ b/reposerver/repository/repository_test.go
@@ -963,8 +963,9 @@ func TestGetRevisionMetadata(t *testing.T) {
 	}, nil)
 
 	res, err := service.GetRevisionMetadata(context.Background(), &apiclient.RepoServerRevisionMetadataRequest{
-		Repo:     &argoappv1.Repository{},
-		Revision: "c0b400fc458875d925171398f9ba9eabd5529923",
+		Repo:           &argoappv1.Repository{},
+		Revision:       "c0b400fc458875d925171398f9ba9eabd5529923",
+		CheckSignature: true,
 	})
 
 	assert.NoError(t, err)
@@ -972,7 +973,34 @@ func TestGetRevisionMetadata(t *testing.T) {
 	assert.Equal(t, now, res.Date.Time)
 	assert.Equal(t, "author", res.Author)
 	assert.EqualValues(t, []string{"tag1", "tag2"}, res.Tags)
+	assert.NotEmpty(t, res.SignatureInfo)
 
+	// Cache hit - signature info should not be in result
+	res, err = service.GetRevisionMetadata(context.Background(), &apiclient.RepoServerRevisionMetadataRequest{
+		Repo:           &argoappv1.Repository{},
+		Revision:       "c0b400fc458875d925171398f9ba9eabd5529923",
+		CheckSignature: false,
+	})
+	assert.NoError(t, err)
+	assert.Empty(t, res.SignatureInfo)
+
+	// Enforce cache miss - signature info should not be in result
+	res, err = service.GetRevisionMetadata(context.Background(), &apiclient.RepoServerRevisionMetadataRequest{
+		Repo:           &argoappv1.Repository{},
+		Revision:       "c0b400fc458875d925171398f9ba9eabd5529924",
+		CheckSignature: false,
+	})
+	assert.NoError(t, err)
+	assert.Empty(t, res.SignatureInfo)
+
+	// Cache hit on previous entry that did not have signature info
+	res, err = service.GetRevisionMetadata(context.Background(), &apiclient.RepoServerRevisionMetadataRequest{
+		Repo:           &argoappv1.Repository{},
+		Revision:       "c0b400fc458875d925171398f9ba9eabd5529924",
+		CheckSignature: true,
+	})
+	assert.NoError(t, err)
+	assert.NotEmpty(t, res.SignatureInfo)
 }
 
 func TestGetSignatureVerificationResult(t *testing.T) {
diff --git a/server/application/application_test.go b/server/application/application_test.go
index b49473256..09f8e1194 100644
--- a/server/application/application_test.go
+++ b/server/application/application_test.go
@@ -622,3 +622,34 @@ func TestGetCachedAppState(t *testing.T) {
 		assert.Equal(t, randomError, err)
 	})
 }
+
+func TestSplitStatusPatch(t *testing.T) {
+	specPatch := `{"spec":{"aaa":"bbb"}}`
+	statusPatch := `{"status":{"ccc":"ddd"}}`
+	{
+		nonStatus, status, err := splitStatusPatch([]byte(specPatch))
+		assert.NoError(t, err)
+		assert.Equal(t, specPatch, string(nonStatus))
+		assert.Nil(t, status)
+	}
+	{
+		nonStatus, status, err := splitStatusPatch([]byte(statusPatch))
+		assert.NoError(t, err)
+		assert.Nil(t, nonStatus)
+		assert.Equal(t, statusPatch, string(status))
+	}
+	{
+		bothPatch := `{"spec":{"aaa":"bbb"},"status":{"ccc":"ddd"}}`
+		nonStatus, status, err := splitStatusPatch([]byte(bothPatch))
+		assert.NoError(t, err)
+		assert.Equal(t, specPatch, string(nonStatus))
+		assert.Equal(t, statusPatch, string(status))
+	}
+	{
+		otherFields := `{"operation":{"eee":"fff"},"spec":{"aaa":"bbb"},"status":{"ccc":"ddd"}}`
+		nonStatus, status, err := splitStatusPatch([]byte(otherFields))
+		assert.NoError(t, err)
+		assert.Equal(t, `{"operation":{"eee":"fff"},"spec":{"aaa":"bbb"}}`, string(nonStatus))
+		assert.Equal(t, statusPatch, string(status))
+	}
+}
diff --git a/test/e2e/app_management_test.go b/test/e2e/app_management_test.go
index a6143b0e6..34d26b325 100644
--- a/test/e2e/app_management_test.go
+++ b/test/e2e/app_management_test.go
@@ -1404,3 +1404,98 @@ func TestCreateFromPartialFile(t *testing.T) {
 			assert.Equal(t, []HelmParameter{{Name: "foo", Value: "foo"}}, app.Spec.Source.Helm.Parameters)
 		})
 }
+func TestAppCreationWithExclude(t *testing.T) {
+	Given(t).
+		Path("app-exclusions").
+		When().
+		Create("--directory-exclude", "**/.*", "--directory-recurse").
+		Sync().
+		Then().
+		Expect(OperationPhaseIs(OperationSucceeded)).
+		Expect(SyncStatusIs(SyncStatusCodeSynced)).
+		Expect(HealthIs(health.HealthStatusHealthy))
+}
+
+// Ensure actions work when using a resource action that modifies status and/or spec
+func TestCRDStatusSubresourceAction(t *testing.T) {
+	actions := `
+discovery.lua: |
+  actions = {}
+  actions["update-spec"] = {["disabled"] = false}
+  actions["update-status"] = {["disabled"] = false}
+  actions["update-both"] = {["disabled"] = false}
+  return actions
+definitions:
+- name: update-both
+  action.lua: |
+    obj.spec = {}
+    obj.spec.foo = "update-both"
+    obj.status = {}
+    obj.status.bar = "update-both"
+    return obj
+- name: update-spec
+  action.lua: |
+    obj.spec = {}
+    obj.spec.foo = "update-spec"
+    return obj
+- name: update-status
+  action.lua: |
+    obj.status = {}
+    obj.status.bar = "update-status"
+    return obj
+`
+	Given(t).
+		Path("crd-subresource").
+		And(func() {
+			SetResourceOverrides(map[string]ResourceOverride{
+				"argoproj.io/StatusSubResource": {
+					Actions: actions,
+				},
+				"argoproj.io/NonStatusSubResource": {
+					Actions: actions,
+				},
+			})
+		}).
+		When().Create().Sync().Then().
+		Expect(OperationPhaseIs(OperationSucceeded)).Expect(SyncStatusIs(SyncStatusCodeSynced)).
+		When().
+		Then().
+		// tests resource actions on a CRD using status subresource
+		And(func(app *Application) {
+			_, err := RunCli("app", "actions", "run", app.Name, "--kind", "StatusSubResource", "update-both")
+			assert.NoError(t, err)
+			text := FailOnErr(Run(".", "kubectl", "-n", app.Spec.Destination.Namespace, "get", "statussubresources", "status-subresource", "-o", "jsonpath={.spec.foo}")).(string)
+			assert.Equal(t, "update-both", text)
+			text = FailOnErr(Run(".", "kubectl", "-n", app.Spec.Destination.Namespace, "get", "statussubresources", "status-subresource", "-o", "jsonpath={.status.bar}")).(string)
+			assert.Equal(t, "update-both", text)
+
+			_, err = RunCli("app", "actions", "run", app.Name, "--kind", "StatusSubResource", "update-spec")
+			assert.NoError(t, err)
+			text = FailOnErr(Run(".", "kubectl", "-n", app.Spec.Destination.Namespace, "get", "statussubresources", "status-subresource", "-o", "jsonpath={.spec.foo}")).(string)
+			assert.Equal(t, "update-spec", text)
+
+			_, err = RunCli("app", "actions", "run", app.Name, "--kind", "StatusSubResource", "update-status")
+			assert.NoError(t, err)
+			text = FailOnErr(Run(".", "kubectl", "-n", app.Spec.Destination.Namespace, "get", "statussubresources", "status-subresource", "-o", "jsonpath={.status.bar}")).(string)
+			assert.Equal(t, "update-status", text)
+		}).
+		// tests resource actions on a CRD *not* using status subresource
+		And(func(app *Application) {
+			_, err := RunCli("app", "actions", "run", app.Name, "--kind", "NonStatusSubResource", "update-both")
+			assert.NoError(t, err)
+			text := FailOnErr(Run(".", "kubectl", "-n", app.Spec.Destination.Namespace, "get", "nonstatussubresources", "non-status-subresource", "-o", "jsonpath={.spec.foo}")).(string)
+			assert.Equal(t, "update-both", text)
+			text = FailOnErr(Run(".", "kubectl", "-n", app.Spec.Destination.Namespace, "get", "nonstatussubresources", "non-status-subresource", "-o", "jsonpath={.status.bar}")).(string)
+			assert.Equal(t, "update-both", text)
+
+			_, err = RunCli("app", "actions", "run", app.Name, "--kind", "NonStatusSubResource", "update-spec")
+			assert.NoError(t, err)
+			text = FailOnErr(Run(".", "kubectl", "-n", app.Spec.Destination.Namespace, "get", "nonstatussubresources", "non-status-subresource", "-o", "jsonpath={.spec.foo}")).(string)
+			assert.Equal(t, "update-spec", text)
+
+			_, err = RunCli("app", "actions", "run", app.Name, "--kind", "NonStatusSubResource", "update-status")
+			assert.NoError(t, err)
+			text = FailOnErr(Run(".", "kubectl", "-n", app.Spec.Destination.Namespace, "get", "nonstatussubresources", "non-status-subresource", "-o", "jsonpath={.status.bar}")).(string)
+			assert.Equal(t, "update-status", text)
+		})
+}
diff --git a/test/e2e/sync_waves_test.go b/test/e2e/sync_waves_test.go
index 49fc43453..5308b0ac5 100644
--- a/test/e2e/sync_waves_test.go
+++ b/test/e2e/sync_waves_test.go
@@ -36,17 +36,6 @@ func TestFixingDegradedApp(t *testing.T) {
 		When().
 		Sync().
 		Then().
-		Expect(OperationPhaseIs(OperationFailed)).
-		Expect(SyncStatusIs(SyncStatusCodeOutOfSync)).
-		Expect(HealthIs(health.HealthStatusMissing)).
-		Expect(ResourceResultNumbering(1)).
-		Expect(ResourceSyncStatusIs("Pod", "pod-1", SyncStatusCodeSynced)).
-		Expect(ResourceHealthIs("Pod", "pod-1", health.HealthStatusHealthy)).
-		Expect(ResourceSyncStatusIs("Pod", "pod-2", SyncStatusCodeOutOfSync)).
-		Expect(ResourceHealthIs("Pod", "pod-2", health.HealthStatusMissing)).
-		When().
-		Sync().
-		Then().
 		Expect(OperationPhaseIs(OperationSucceeded)).
 		Expect(SyncStatusIs(SyncStatusCodeSynced)).
 		Expect(HealthIs(health.HealthStatusHealthy)).
diff --git a/test/e2e/testdata/app-exclusions/.bot.yaml b/test/e2e/testdata/app-exclusions/.bot.yaml
new file mode 100644
index 000000000..edac8fb9b
--- /dev/null
+++ b/test/e2e/testdata/app-exclusions/.bot.yaml
@@ -0,0 +1,14 @@
+metadata:
+  labels:
+    app.kubernetes.io/instance: a-single-pod
+    foo: bar
+  name: helloBot
+spec:
+  containers:
+    - name: hello
+      image: busybox
+      command:
+        - sh
+      args:
+        - -c
+        - "echo HI && tail -f /dev/null"
diff --git a/test/e2e/testdata/app-exclusions/deployment.yaml b/test/e2e/testdata/app-exclusions/deployment.yaml
new file mode 100644
index 000000000..d84ca5e1f
--- /dev/null
+++ b/test/e2e/testdata/app-exclusions/deployment.yaml
@@ -0,0 +1,21 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: nginx-deployment
+  labels:
+    app: nginx
+spec:
+  replicas: 0
+  selector:
+    matchLabels:
+      app: nginx
+  template:
+    metadata:
+      labels:
+        app: nginx
+    spec:
+      containers:
+        - name: nginx
+          image: nginx:1.17.4-alpine
+          ports:
+            - containerPort: 80
diff --git a/test/e2e/testdata/app-exclusions/subdir/.botSub.yaml b/test/e2e/testdata/app-exclusions/subdir/.botSub.yaml
new file mode 100644
index 000000000..6c4c1fbab
--- /dev/null
+++ b/test/e2e/testdata/app-exclusions/subdir/.botSub.yaml
@@ -0,0 +1,14 @@
+metadata:
+  labels:
+    app.kubernetes.io/instance: a-single-pod
+    foo: bar
+  name: helloBotSub
+spec:
+  containers:
+    - name: hello
+      image: busybox
+      command:
+        - sh
+      args:
+        - -c
+        - "echo HI && tail -f /dev/null"
diff --git a/test/e2e/testdata/app-exclusions/subdir/deploymentSub.yaml b/test/e2e/testdata/app-exclusions/subdir/deploymentSub.yaml
new file mode 100644
index 000000000..29a6f9da2
--- /dev/null
+++ b/test/e2e/testdata/app-exclusions/subdir/deploymentSub.yaml
@@ -0,0 +1,21 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: nginx-deployment-sub
+  labels:
+    app: nginx
+spec:
+  replicas: 0
+  selector:
+    matchLabels:
+      app: nginx
+  template:
+    metadata:
+      labels:
+        app: nginx
+    spec:
+      containers:
+        - name: nginx
+          image: nginx:1.17.4-alpine
+          ports:
+            - containerPort: 80
diff --git a/test/e2e/testdata/crd-subresource/crd-instances.yaml b/test/e2e/testdata/crd-subresource/crd-instances.yaml
new file mode 100644
index 000000000..7d7565cb8
--- /dev/null
+++ b/test/e2e/testdata/crd-subresource/crd-instances.yaml
@@ -0,0 +1,13 @@
+apiVersion: argoproj.io/v1alpha1
+kind: StatusSubResource
+metadata:
+  name: status-subresource
+spec:
+  foo: bar
+---
+apiVersion: argoproj.io/v1alpha1
+kind: NonStatusSubResource
+metadata:
+  name: non-status-subresource
+spec:
+  foo: bar
diff --git a/test/e2e/testdata/crd-subresource/crd.yaml b/test/e2e/testdata/crd-subresource/crd.yaml
new file mode 100644
index 000000000..4d1e37c43
--- /dev/null
+++ b/test/e2e/testdata/crd-subresource/crd.yaml
@@ -0,0 +1,25 @@
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: statussubresources.argoproj.io
+spec:
+  group: argoproj.io
+  version: v1alpha1
+  scope: Namespaced
+  names:
+    kind: StatusSubResource
+    plural: statussubresources
+  subresources:
+   status: {}
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: nonstatussubresources.argoproj.io
+spec:
+  group: argoproj.io
+  version: v1alpha1
+  scope: Namespaced
+  names:
+    kind: NonStatusSubResource
+    plural: nonstatussubresources
diff --git a/test/e2e/testdata/crd-subresource/kustomization.yaml b/test/e2e/testdata/crd-subresource/kustomization.yaml
new file mode 100644
index 000000000..c7545e867
--- /dev/null
+++ b/test/e2e/testdata/crd-subresource/kustomization.yaml
@@ -0,0 +1,3 @@
+resources:
+- crd.yaml
+- crd-instances.yaml
\ No newline at end of file
diff --git a/util/helm/testdata/helm2-dependency/requirements.lock b/util/helm/testdata/helm2-dependency/requirements.lock
index cb3439862..35fb82343 100644
--- a/util/helm/testdata/helm2-dependency/requirements.lock
+++ b/util/helm/testdata/helm2-dependency/requirements.lock
@@ -1,6 +1,6 @@
 dependencies:
 - name: mariadb
-  repository: https://kubernetes-charts.storage.googleapis.com/
-  version: 4.3.1
-digest: sha256:82a0e5374376169d2ecf7d452c18a2ed93507f5d17c3393a1457f9ffad7e9b26
-generated: 2018-08-02T22:07:51.905271776Z
+  repository: https://charts.helm.sh/stable
+  version: 4.4.2
+digest: sha256:c07f89818ebcd92a4dbaff719ebedc14e2569ee27447d3abf739e2dd11d13fcb
+generated: "2020-11-03T09:04:00.781031-08:00"
diff --git a/util/helm/testdata/helm2-dependency/requirements.yaml b/util/helm/testdata/helm2-dependency/requirements.yaml
index a894b8b3b..85c98944f 100644
--- a/util/helm/testdata/helm2-dependency/requirements.yaml
+++ b/util/helm/testdata/helm2-dependency/requirements.yaml
@@ -1,7 +1,7 @@
 dependencies:
 - name: mariadb
   version: 4.x.x
-  repository: https://kubernetes-charts.storage.googleapis.com/
+  repository: https://charts.helm.sh/stable
   condition: mariadb.enabled
   tags:
     - wordpress-database