Repository: argoproj/argo
Pull request #4458 (2020-11-04 18:26:21)

feat(controller): Enhanced artifact repository ref. See #3184
Signed-off-by: Alex Collins <alex_collins@intuit.com>

Checklist:

* [x] My organization is added to [USERS.md](https://github.com/argoproj/argo/blob/master/USERS.md).

<!--

Please leave your PR in draft if you don't need a review yet. 

To fix failing `CI / Codegen`, run `make codegen`. 

-->

This PR allows you to:

* Configure a default artifact repository at namespace-level.


alexec: TestFunctionalSuite/TestArtifactRepositoryRef
alexec: `make codegen`
alexec: @sarabala1979 @jessesuen reviewed and approved the proto changes. Over to you to review the code changes - thank you.
alexec: I want to hold this for a few days so we can do v2.12 fixes for it. 

Patch:
diff --git a/api/jsonschema/schema.json b/api/jsonschema/schema.json
index 90d68900e..fc040bf9f 100644
--- a/api/jsonschema/schema.json
+++ b/api/jsonschema/schema.json
@@ -212,9 +212,32 @@
     "io.argoproj.workflow.v1alpha1.ArtifactRepositoryRef": {
       "properties": {
         "configMap": {
+          "description": "The name of the config map. Defaults to \"artifact-repositories\".",
           "type": "string"
         },
         "key": {
+          "description": "The config map key. Defaults to the value of the \"workflows.argoproj.io/default-artifact-repository\" annotation.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "io.argoproj.workflow.v1alpha1.ArtifactRepositoryRefStatus": {
+      "properties": {
+        "configMap": {
+          "description": "The name of the config map. Defaults to \"artifact-repositories\".",
+          "type": "string"
+        },
+        "default": {
+          "description": "If this ref represents the default artifact repository, rather than a config map.",
+          "type": "boolean"
+        },
+        "key": {
+          "description": "The config map key. Defaults to the value of the \"workflows.argoproj.io/default-artifact-repository\" annotation.",
+          "type": "string"
+        },
+        "namespace": {
+          "description": "The namespace of the config map. Defaults to the workflow's namespace, or the controller's namespace (if found).",
           "type": "string"
         }
       },
@@ -2739,6 +2762,10 @@
     "io.argoproj.workflow.v1alpha1.WorkflowStatus": {
       "description": "WorkflowStatus contains overall status information about a workflow",
       "properties": {
+        "artifactRepositoryRef": {
+          "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.ArtifactRepositoryRefStatus",
+          "description": "ArtifactRepositoryRef is used to cache the repository to use so we do not need to determine it everytime we reconcile."
+        },
         "compressedNodes": {
           "description": "Compressed and base64 decoded Nodes map",
           "type": "string"
diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json
index 78618d355..9f7f8249f 100644
--- a/api/openapi-spec/swagger.json
+++ b/api/openapi-spec/swagger.json
@@ -2269,9 +2269,32 @@
       "type": "object",
       "properties": {
         "configMap": {
+          "description": "The name of the config map. Defaults to \"artifact-repositories\".",
           "type": "string"
         },
         "key": {
+          "description": "The config map key. Defaults to the value of the \"workflows.argoproj.io/default-artifact-repository\" annotation.",
+          "type": "string"
+        }
+      }
+    },
+    "io.argoproj.workflow.v1alpha1.ArtifactRepositoryRefStatus": {
+      "type": "object",
+      "properties": {
+        "configMap": {
+          "description": "The name of the config map. Defaults to \"artifact-repositories\".",
+          "type": "string"
+        },
+        "default": {
+          "description": "If this ref represents the default artifact repository, rather than a config map.",
+          "type": "boolean"
+        },
+        "key": {
+          "description": "The config map key. Defaults to the value of the \"workflows.argoproj.io/default-artifact-repository\" annotation.",
+          "type": "string"
+        },
+        "namespace": {
+          "description": "The namespace of the config map. Defaults to the workflow's namespace, or the controller's namespace (if found).",
           "type": "string"
         }
       }
@@ -4788,6 +4811,10 @@
       "description": "WorkflowStatus contains overall status information about a workflow",
       "type": "object",
       "properties": {
+        "artifactRepositoryRef": {
+          "description": "ArtifactRepositoryRef is used to cache the repository to use so we do not need to determine it everytime we reconcile.",
+          "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.ArtifactRepositoryRefStatus"
+        },
         "compressedNodes": {
           "description": "Compressed and base64 decoded Nodes map",
           "type": "string"
diff --git a/docs/artifact-repository-ref.md b/docs/artifact-repository-ref.md
index 801940d5f..c5104d847 100644
--- a/docs/artifact-repository-ref.md
+++ b/docs/artifact-repository-ref.md
@@ -6,15 +6,19 @@
 
 You can reduce duplication in your templates by configuring repositories that can be accessed by any workflow. This can also remove sensitive information from your templates.
 
-Create a suitable config map in either (a) your workflows namespace or (b) in the Argo's namespace, the default name is `artifact-repositories`:
+Create a suitable config map in either (a) your workflows namespace or (b) in the managed namespace:
 
-```
+```yaml
 apiVersion: v1
 kind: ConfigMap
 metadata:
+    # if you want to use this config map by default - name it "artifact-repositories" 
   name: artifact-repositories
+  annotations:
+    # if you want to use a specific key, put that's key into this annotation 
+    workflows.argoproj.io/default-artifact-repository: default-v1
 data:
-  minio: |
+  default-v1: |
     s3:
       bucket: my-bucket
       endpoint: minio:9000
@@ -29,10 +33,11 @@ data:
 
 You can override the repository for a workflow as follows:
 
-```
+```yaml
 spec:
   artifactRepositoryRef:
-    key: minio
+    configMap: my-cm # default is "artifact-repositories"
+    key: my-key # default can be set by the annotation
 ```
 
 Reference: [fields.md#artifactrepositoryref](fields.md#artifactrepositoryref).
\ No newline at end of file
diff --git a/docs/configure-artifact-repository.md b/docs/configure-artifact-repository.md
index c0905dec6..f096d1bc5 100644
--- a/docs/configure-artifact-repository.md
+++ b/docs/configure-artifact-repository.md
@@ -16,6 +16,12 @@ Subsequent sections will show how to use it.
 | Raw | Yes | No | 5% |
 | S3 | Yes | Yes | 86% |
 
+The actual repository used by a workflow is choose by the following rules:
+
+1. Anything explicitly configured using [Artifact Repository Ref](artifact-repository-ref.md). This is the most flexible, safe, and secure option.
+2. From a config map named `artifact-repositories` if it has the `workflows.argoproj.io/default-artifact-repository` annotation in the workflow's namespace.                                        
+3. From a workflow controller configmap.
+
 ## Configuring Minio
 
 ```
diff --git a/docs/fields.md b/docs/fields.md
index 8f1a32b82..05bae7387 100644
--- a/docs/fields.md
+++ b/docs/fields.md
@@ -662,6 +662,7 @@ WorkflowStatus contains overall status information about a workflow
 ### Fields
 | Field Name | Field Type | Description   |
 |:----------:|:----------:|---------------|
+|`artifactRepositoryRef`|[`ArtifactRepositoryRefStatus`](#artifactrepositoryrefstatus)|ArtifactRepositoryRef is used to cache the repository to use so we do not need to determine it everytime we reconcile.|
 |`compressedNodes`|`string`|Compressed and base64 decoded Nodes map|
 |`conditions`|`Array<`[`Condition`](#condition)`>`|Conditions is a list of conditions the Workflow may have|
 |`estimatedDuration`|`int32`|EstimatedDuration in seconds.|
@@ -1492,8 +1493,8 @@ _No description available_
 ### Fields
 | Field Name | Field Type | Description   |
 |:----------:|:----------:|---------------|
-|`configMap`|`string`|_No description available_|
-|`key`|`string`|_No description available_|
+|`configMap`|`string`|The name of the config map. Defaults to "artifact-repositories".|
+|`key`|`string`|The config map key. Defaults to the value of the "workflows.argoproj.io/default-artifact-repository" annotation.|
 
 ## ExecutorConfig
 
@@ -1963,6 +1964,25 @@ WorkflowTemplateRef is a reference to a WorkflowTemplate resource.
 |`clusterScope`|`boolean`|ClusterScope indicates the referred template is cluster scoped (i.e. a ClusterWorkflowTemplate).|
 |`name`|`string`|Name is the resource name of the workflow template.|
 
+## ArtifactRepositoryRefStatus
+
+_No description available_
+
+<details>
+<summary>Examples with this field (click to open)</summary>
+<br>
+
+- [`artifact-repository-ref.yaml`](https://github.com/argoproj/argo/blob/master/examples/artifact-repository-ref.yaml)
+</details>
+
+### Fields
+| Field Name | Field Type | Description   |
+|:----------:|:----------:|---------------|
+|`configMap`|`string`|The name of the config map. Defaults to "artifact-repositories".|
+|`default`|`boolean`|If this ref represents the default artifact repository, rather than a config map.|
+|`key`|`string`|The config map key. Defaults to the value of the "workflows.argoproj.io/default-artifact-repository" annotation.|
+|`namespace`|`string`|The namespace of the config map. Defaults to the workflow's namespace, or the controller's namespace (if found).|
+
 ## Condition
 
 _No description available_
diff --git a/examples/artifact-repository-ref.yaml b/examples/artifact-repository-ref.yaml
index 7596747fa..a12aae6a5 100644
--- a/examples/artifact-repository-ref.yaml
+++ b/examples/artifact-repository-ref.yaml
@@ -5,13 +5,13 @@ metadata:
 spec:
   entrypoint: main
   artifactRepositoryRef:
-    key: minio
+    key: my-key
   templates:
     - name: main
       container:
         image: docker/whalesay:latest
-        command: [sh, -c]
-        args: ["cowsay hello world | tee /tmp/hello_world.txt"]
+        command: [ sh, -c ]
+        args: [ "cowsay hello world | tee /tmp/hello_world.txt" ]
       outputs:
         artifacts:
           - name: hello_world
diff --git a/manifests/base/crds/full/argoproj.io_workflows.yaml b/manifests/base/crds/full/argoproj.io_workflows.yaml
index e64254d66..fc4694de6 100644
--- a/manifests/base/crds/full/argoproj.io_workflows.yaml
+++ b/manifests/base/crds/full/argoproj.io_workflows.yaml
@@ -6702,6 +6702,17 @@ spec:
           type: object
         status:
           properties:
+            artifactRepositoryRef:
+              properties:
+                configMap:
+                  type: string
+                default:
+                  type: boolean
+                key:
+                  type: string
+                namespace:
+                  type: string
+              type: object
             compressedNodes:
               type: string
             conditions:
diff --git a/manifests/quick-start-minimal.yaml b/manifests/quick-start-minimal.yaml
index 5468fc25d..586196324 100644
--- a/manifests/quick-start-minimal.yaml
+++ b/manifests/quick-start-minimal.yaml
@@ -449,7 +449,20 @@ subjects:
 ---
 apiVersion: v1
 data:
-  minio: |
+  default-v1: |
+    archiveLogs: true
+    s3:
+      bucket: my-bucket
+      endpoint: minio:9000
+      insecure: true
+      accessKeySecret:
+        name: my-minio-cred
+        key: accesskey
+      secretKeySecret:
+        name: my-minio-cred
+        key: secretkey
+  my-key: |
+    archiveLogs: true
     s3:
       bucket: my-bucket
       endpoint: minio:9000
@@ -462,6 +475,8 @@ data:
         key: secretkey
 kind: ConfigMap
 metadata:
+  annotations:
+    workflows.argoproj.io/default-artifact-repository: default-v1
   name: artifact-repositories
 ---
 apiVersion: v1
diff --git a/manifests/quick-start-mysql.yaml b/manifests/quick-start-mysql.yaml
index 4021bb397..f7946d009 100644
--- a/manifests/quick-start-mysql.yaml
+++ b/manifests/quick-start-mysql.yaml
@@ -449,7 +449,20 @@ subjects:
 ---
 apiVersion: v1
 data:
-  minio: |
+  default-v1: |
+    archiveLogs: true
+    s3:
+      bucket: my-bucket
+      endpoint: minio:9000
+      insecure: true
+      accessKeySecret:
+        name: my-minio-cred
+        key: accesskey
+      secretKeySecret:
+        name: my-minio-cred
+        key: secretkey
+  my-key: |
+    archiveLogs: true
     s3:
       bucket: my-bucket
       endpoint: minio:9000
@@ -462,6 +475,8 @@ data:
         key: secretkey
 kind: ConfigMap
 metadata:
+  annotations:
+    workflows.argoproj.io/default-artifact-repository: default-v1
   name: artifact-repositories
 ---
 apiVersion: v1
diff --git a/manifests/quick-start-postgres.yaml b/manifests/quick-start-postgres.yaml
index 12688edc0..4cb29dc3a 100644
--- a/manifests/quick-start-postgres.yaml
+++ b/manifests/quick-start-postgres.yaml
@@ -449,7 +449,20 @@ subjects:
 ---
 apiVersion: v1
 data:
-  minio: |
+  default-v1: |
+    archiveLogs: true
+    s3:
+      bucket: my-bucket
+      endpoint: minio:9000
+      insecure: true
+      accessKeySecret:
+        name: my-minio-cred
+        key: accesskey
+      secretKeySecret:
+        name: my-minio-cred
+        key: secretkey
+  my-key: |
+    archiveLogs: true
     s3:
       bucket: my-bucket
       endpoint: minio:9000
@@ -462,6 +475,8 @@ data:
         key: secretkey
 kind: ConfigMap
 metadata:
+  annotations:
+    workflows.argoproj.io/default-artifact-repository: default-v1
   name: artifact-repositories
 ---
 apiVersion: v1
diff --git a/manifests/quick-start/base/artifact-repositories-configmap.yaml b/manifests/quick-start/base/artifact-repositories-configmap.yaml
index 82df05280..4286f34f8 100644
--- a/manifests/quick-start/base/artifact-repositories-configmap.yaml
+++ b/manifests/quick-start/base/artifact-repositories-configmap.yaml
@@ -1,6 +1,14 @@
 apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: artifact-repositories
+  annotations:
+    # you'll want to change the default over time, e.g. when you move to new storage solution,
+    # so we recommend you version them from the outset by suffixing the version
+    workflows.argoproj.io/default-artifact-repository: default-v1
 data:
-  minio: |
+  default-v1: |
+    archiveLogs: true
     s3:
       bucket: my-bucket
       endpoint: minio:9000
@@ -11,6 +19,15 @@ data:
       secretKeySecret:
         name: my-minio-cred
         key: secretkey
-kind: ConfigMap
-metadata:
-  name: artifact-repositories
+  my-key: |
+    archiveLogs: true
+    s3:
+      bucket: my-bucket
+      endpoint: minio:9000
+      insecure: true
+      accessKeySecret:
+        name: my-minio-cred
+        key: accesskey
+      secretKeySecret:
+        name: my-minio-cred
+        key: secretkey
\ No newline at end of file
diff --git a/pkg/apis/workflow/v1alpha1/generated.pb.go b/pkg/apis/workflow/v1alpha1/generated.pb.go
index d52d6cc01..e25e957cb 100644
--- a/pkg/apis/workflow/v1alpha1/generated.pb.go
+++ b/pkg/apis/workflow/v1alpha1/generated.pb.go
@@ -204,10 +204,38 @@ func (m *ArtifactRepositoryRef) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_ArtifactRepositoryRef proto.InternalMessageInfo
 
+func (m *ArtifactRepositoryRefStatus) Reset()      { *m = ArtifactRepositoryRefStatus{} }
+func (*ArtifactRepositoryRefStatus) ProtoMessage() {}
+func (*ArtifactRepositoryRefStatus) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c23edafa7e7ea072, []int{6}
+}
+func (m *ArtifactRepositoryRefStatus) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *ArtifactRepositoryRefStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	b = b[:cap(b)]
+	n, err := m.MarshalToSizedBuffer(b)
+	if err != nil {
+		return nil, err
+	}
+	return b[:n], nil
+}
+func (m *ArtifactRepositoryRefStatus) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ArtifactRepositoryRefStatus.Merge(m, src)
+}
+func (m *ArtifactRepositoryRefStatus) XXX_Size() int {
+	return m.Size()
+}
+func (m *ArtifactRepositoryRefStatus) XXX_DiscardUnknown() {
+	xxx_messageInfo_ArtifactRepositoryRefStatus.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ArtifactRepositoryRefStatus proto.InternalMessageInfo
+
 func (m *ArtifactoryArtifact) Reset()      { *m = ArtifactoryArtifact{} }
 func (*ArtifactoryArtifact) ProtoMessage() {}
 func (*ArtifactoryArtifact) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{6}
+	return fileDescriptor_c23edafa7e7ea072, []int{7}
 }
 func (m *ArtifactoryArtifact) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -235,7 +263,7 @@ var xxx_messageInfo_ArtifactoryArtifact proto.InternalMessageInfo
 func (m *ArtifactoryAuth) Reset()      { *m = ArtifactoryAuth{} }
 func (*ArtifactoryAuth) ProtoMessage() {}
 func (*ArtifactoryAuth) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{7}
+	return fileDescriptor_c23edafa7e7ea072, []int{8}
 }
 func (m *ArtifactoryAuth) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -263,7 +291,7 @@ var xxx_messageInfo_ArtifactoryAuth proto.InternalMessageInfo
 func (m *Backoff) Reset()      { *m = Backoff{} }
 func (*Backoff) ProtoMessage() {}
 func (*Backoff) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{8}
+	return fileDescriptor_c23edafa7e7ea072, []int{9}
 }
 func (m *Backoff) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -291,7 +319,7 @@ var xxx_messageInfo_Backoff proto.InternalMessageInfo
 func (m *Cache) Reset()      { *m = Cache{} }
 func (*Cache) ProtoMessage() {}
 func (*Cache) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{9}
+	return fileDescriptor_c23edafa7e7ea072, []int{10}
 }
 func (m *Cache) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -319,7 +347,7 @@ var xxx_messageInfo_Cache proto.InternalMessageInfo
 func (m *ClusterWorkflowTemplate) Reset()      { *m = ClusterWorkflowTemplate{} }
 func (*ClusterWorkflowTemplate) ProtoMessage() {}
 func (*ClusterWorkflowTemplate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{10}
+	return fileDescriptor_c23edafa7e7ea072, []int{11}
 }
 func (m *ClusterWorkflowTemplate) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -347,7 +375,7 @@ var xxx_messageInfo_ClusterWorkflowTemplate proto.InternalMessageInfo
 func (m *ClusterWorkflowTemplateList) Reset()      { *m = ClusterWorkflowTemplateList{} }
 func (*ClusterWorkflowTemplateList) ProtoMessage() {}
 func (*ClusterWorkflowTemplateList) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{11}
+	return fileDescriptor_c23edafa7e7ea072, []int{12}
 }
 func (m *ClusterWorkflowTemplateList) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -375,7 +403,7 @@ var xxx_messageInfo_ClusterWorkflowTemplateList proto.InternalMessageInfo
 func (m *Condition) Reset()      { *m = Condition{} }
 func (*Condition) ProtoMessage() {}
 func (*Condition) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{12}
+	return fileDescriptor_c23edafa7e7ea072, []int{13}
 }
 func (m *Condition) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -403,7 +431,7 @@ var xxx_messageInfo_Condition proto.InternalMessageInfo
 func (m *ContinueOn) Reset()      { *m = ContinueOn{} }
 func (*ContinueOn) ProtoMessage() {}
 func (*ContinueOn) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{13}
+	return fileDescriptor_c23edafa7e7ea072, []int{14}
 }
 func (m *ContinueOn) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -431,7 +459,7 @@ var xxx_messageInfo_ContinueOn proto.InternalMessageInfo
 func (m *Counter) Reset()      { *m = Counter{} }
 func (*Counter) ProtoMessage() {}
 func (*Counter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{14}
+	return fileDescriptor_c23edafa7e7ea072, []int{15}
 }
 func (m *Counter) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -459,7 +487,7 @@ var xxx_messageInfo_Counter proto.InternalMessageInfo
 func (m *CronWorkflow) Reset()      { *m = CronWorkflow{} }
 func (*CronWorkflow) ProtoMessage() {}
 func (*CronWorkflow) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{15}
+	return fileDescriptor_c23edafa7e7ea072, []int{16}
 }
 func (m *CronWorkflow) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -487,7 +515,7 @@ var xxx_messageInfo_CronWorkflow proto.InternalMessageInfo
 func (m *CronWorkflowList) Reset()      { *m = CronWorkflowList{} }
 func (*CronWorkflowList) ProtoMessage() {}
 func (*CronWorkflowList) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{16}
+	return fileDescriptor_c23edafa7e7ea072, []int{17}
 }
 func (m *CronWorkflowList) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -515,7 +543,7 @@ var xxx_messageInfo_CronWorkflowList proto.InternalMessageInfo
 func (m *CronWorkflowSpec) Reset()      { *m = CronWorkflowSpec{} }
 func (*CronWorkflowSpec) ProtoMessage() {}
 func (*CronWorkflowSpec) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{17}
+	return fileDescriptor_c23edafa7e7ea072, []int{18}
 }
 func (m *CronWorkflowSpec) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -543,7 +571,7 @@ var xxx_messageInfo_CronWorkflowSpec proto.InternalMessageInfo
 func (m *CronWorkflowStatus) Reset()      { *m = CronWorkflowStatus{} }
 func (*CronWorkflowStatus) ProtoMessage() {}
 func (*CronWorkflowStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{18}
+	return fileDescriptor_c23edafa7e7ea072, []int{19}
 }
 func (m *CronWorkflowStatus) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -571,7 +599,7 @@ var xxx_messageInfo_CronWorkflowStatus proto.InternalMessageInfo
 func (m *DAGTask) Reset()      { *m = DAGTask{} }
 func (*DAGTask) ProtoMessage() {}
 func (*DAGTask) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{19}
+	return fileDescriptor_c23edafa7e7ea072, []int{20}
 }
 func (m *DAGTask) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -599,7 +627,7 @@ var xxx_messageInfo_DAGTask proto.InternalMessageInfo
 func (m *DAGTemplate) Reset()      { *m = DAGTemplate{} }
 func (*DAGTemplate) ProtoMessage() {}
 func (*DAGTemplate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{20}
+	return fileDescriptor_c23edafa7e7ea072, []int{21}
 }
 func (m *DAGTemplate) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -627,7 +655,7 @@ var xxx_messageInfo_DAGTemplate proto.InternalMessageInfo
 func (m *Event) Reset()      { *m = Event{} }
 func (*Event) ProtoMessage() {}
 func (*Event) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{21}
+	return fileDescriptor_c23edafa7e7ea072, []int{22}
 }
 func (m *Event) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -655,7 +683,7 @@ var xxx_messageInfo_Event proto.InternalMessageInfo
 func (m *ExecutorConfig) Reset()      { *m = ExecutorConfig{} }
 func (*ExecutorConfig) ProtoMessage() {}
 func (*ExecutorConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{22}
+	return fileDescriptor_c23edafa7e7ea072, []int{23}
 }
 func (m *ExecutorConfig) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -683,7 +711,7 @@ var xxx_messageInfo_ExecutorConfig proto.InternalMessageInfo
 func (m *GCSArtifact) Reset()      { *m = GCSArtifact{} }
 func (*GCSArtifact) ProtoMessage() {}
 func (*GCSArtifact) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{23}
+	return fileDescriptor_c23edafa7e7ea072, []int{24}
 }
 func (m *GCSArtifact) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -711,7 +739,7 @@ var xxx_messageInfo_GCSArtifact proto.InternalMessageInfo
 func (m *GCSBucket) Reset()      { *m = GCSBucket{} }
 func (*GCSBucket) ProtoMessage() {}
 func (*GCSBucket) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{24}
+	return fileDescriptor_c23edafa7e7ea072, []int{25}
 }
 func (m *GCSBucket) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -739,7 +767,7 @@ var xxx_messageInfo_GCSBucket proto.InternalMessageInfo
 func (m *Gauge) Reset()      { *m = Gauge{} }
 func (*Gauge) ProtoMessage() {}
 func (*Gauge) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{25}
+	return fileDescriptor_c23edafa7e7ea072, []int{26}
 }
 func (m *Gauge) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -767,7 +795,7 @@ var xxx_messageInfo_Gauge proto.InternalMessageInfo
 func (m *GitArtifact) Reset()      { *m = GitArtifact{} }
 func (*GitArtifact) ProtoMessage() {}
 func (*GitArtifact) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{26}
+	return fileDescriptor_c23edafa7e7ea072, []int{27}
 }
 func (m *GitArtifact) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -795,7 +823,7 @@ var xxx_messageInfo_GitArtifact proto.InternalMessageInfo
 func (m *HDFSArtifact) Reset()      { *m = HDFSArtifact{} }
 func (*HDFSArtifact) ProtoMessage() {}
 func (*HDFSArtifact) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{27}
+	return fileDescriptor_c23edafa7e7ea072, []int{28}
 }
 func (m *HDFSArtifact) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -823,7 +851,7 @@ var xxx_messageInfo_HDFSArtifact proto.InternalMessageInfo
 func (m *HDFSConfig) Reset()      { *m = HDFSConfig{} }
 func (*HDFSConfig) ProtoMessage() {}
 func (*HDFSConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{28}
+	return fileDescriptor_c23edafa7e7ea072, []int{29}
 }
 func (m *HDFSConfig) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -851,7 +879,7 @@ var xxx_messageInfo_HDFSConfig proto.InternalMessageInfo
 func (m *HDFSKrbConfig) Reset()      { *m = HDFSKrbConfig{} }
 func (*HDFSKrbConfig) ProtoMessage() {}
 func (*HDFSKrbConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{29}
+	return fileDescriptor_c23edafa7e7ea072, []int{30}
 }
 func (m *HDFSKrbConfig) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -879,7 +907,7 @@ var xxx_messageInfo_HDFSKrbConfig proto.InternalMessageInfo
 func (m *HTTPArtifact) Reset()      { *m = HTTPArtifact{} }
 func (*HTTPArtifact) ProtoMessage() {}
 func (*HTTPArtifact) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{30}
+	return fileDescriptor_c23edafa7e7ea072, []int{31}
 }
 func (m *HTTPArtifact) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -907,7 +935,7 @@ var xxx_messageInfo_HTTPArtifact proto.InternalMessageInfo
 func (m *Header) Reset()      { *m = Header{} }
 func (*Header) ProtoMessage() {}
 func (*Header) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{31}
+	return fileDescriptor_c23edafa7e7ea072, []int{32}
 }
 func (m *Header) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -935,7 +963,7 @@ var xxx_messageInfo_Header proto.InternalMessageInfo
 func (m *Histogram) Reset()      { *m = Histogram{} }
 func (*Histogram) ProtoMessage() {}
 func (*Histogram) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{32}
+	return fileDescriptor_c23edafa7e7ea072, []int{33}
 }
 func (m *Histogram) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -963,7 +991,7 @@ var xxx_messageInfo_Histogram proto.InternalMessageInfo
 func (m *Inputs) Reset()      { *m = Inputs{} }
 func (*Inputs) ProtoMessage() {}
 func (*Inputs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{33}
+	return fileDescriptor_c23edafa7e7ea072, []int{34}
 }
 func (m *Inputs) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -991,7 +1019,7 @@ var xxx_messageInfo_Inputs proto.InternalMessageInfo
 func (m *Item) Reset()      { *m = Item{} }
 func (*Item) ProtoMessage() {}
 func (*Item) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{34}
+	return fileDescriptor_c23edafa7e7ea072, []int{35}
 }
 func (m *Item) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1019,7 +1047,7 @@ var xxx_messageInfo_Item proto.InternalMessageInfo
 func (m *Link) Reset()      { *m = Link{} }
 func (*Link) ProtoMessage() {}
 func (*Link) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{35}
+	return fileDescriptor_c23edafa7e7ea072, []int{36}
 }
 func (m *Link) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1047,7 +1075,7 @@ var xxx_messageInfo_Link proto.InternalMessageInfo
 func (m *MemoizationStatus) Reset()      { *m = MemoizationStatus{} }
 func (*MemoizationStatus) ProtoMessage() {}
 func (*MemoizationStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{36}
+	return fileDescriptor_c23edafa7e7ea072, []int{37}
 }
 func (m *MemoizationStatus) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1075,7 +1103,7 @@ var xxx_messageInfo_MemoizationStatus proto.InternalMessageInfo
 func (m *Memoize) Reset()      { *m = Memoize{} }
 func (*Memoize) ProtoMessage() {}
 func (*Memoize) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{37}
+	return fileDescriptor_c23edafa7e7ea072, []int{38}
 }
 func (m *Memoize) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1103,7 +1131,7 @@ var xxx_messageInfo_Memoize proto.InternalMessageInfo
 func (m *Metadata) Reset()      { *m = Metadata{} }
 func (*Metadata) ProtoMessage() {}
 func (*Metadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{38}
+	return fileDescriptor_c23edafa7e7ea072, []int{39}
 }
 func (m *Metadata) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1131,7 +1159,7 @@ var xxx_messageInfo_Metadata proto.InternalMessageInfo
 func (m *MetricLabel) Reset()      { *m = MetricLabel{} }
 func (*MetricLabel) ProtoMessage() {}
 func (*MetricLabel) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{39}
+	return fileDescriptor_c23edafa7e7ea072, []int{40}
 }
 func (m *MetricLabel) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1159,7 +1187,7 @@ var xxx_messageInfo_MetricLabel proto.InternalMessageInfo
 func (m *Metrics) Reset()      { *m = Metrics{} }
 func (*Metrics) ProtoMessage() {}
 func (*Metrics) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{40}
+	return fileDescriptor_c23edafa7e7ea072, []int{41}
 }
 func (m *Metrics) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1187,7 +1215,7 @@ var xxx_messageInfo_Metrics proto.InternalMessageInfo
 func (m *Mutex) Reset()      { *m = Mutex{} }
 func (*Mutex) ProtoMessage() {}
 func (*Mutex) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{41}
+	return fileDescriptor_c23edafa7e7ea072, []int{42}
 }
 func (m *Mutex) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1215,7 +1243,7 @@ var xxx_messageInfo_Mutex proto.InternalMessageInfo
 func (m *MutexHolding) Reset()      { *m = MutexHolding{} }
 func (*MutexHolding) ProtoMessage() {}
 func (*MutexHolding) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{42}
+	return fileDescriptor_c23edafa7e7ea072, []int{43}
 }
 func (m *MutexHolding) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1243,7 +1271,7 @@ var xxx_messageInfo_MutexHolding proto.InternalMessageInfo
 func (m *MutexStatus) Reset()      { *m = MutexStatus{} }
 func (*MutexStatus) ProtoMessage() {}
 func (*MutexStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{43}
+	return fileDescriptor_c23edafa7e7ea072, []int{44}
 }
 func (m *MutexStatus) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1271,7 +1299,7 @@ var xxx_messageInfo_MutexStatus proto.InternalMessageInfo
 func (m *NodeStatus) Reset()      { *m = NodeStatus{} }
 func (*NodeStatus) ProtoMessage() {}
 func (*NodeStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{44}
+	return fileDescriptor_c23edafa7e7ea072, []int{45}
 }
 func (m *NodeStatus) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1299,7 +1327,7 @@ var xxx_messageInfo_NodeStatus proto.InternalMessageInfo
 func (m *NodeSynchronizationStatus) Reset()      { *m = NodeSynchronizationStatus{} }
 func (*NodeSynchronizationStatus) ProtoMessage() {}
 func (*NodeSynchronizationStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{45}
+	return fileDescriptor_c23edafa7e7ea072, []int{46}
 }
 func (m *NodeSynchronizationStatus) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1327,7 +1355,7 @@ var xxx_messageInfo_NodeSynchronizationStatus proto.InternalMessageInfo
 func (m *NoneStrategy) Reset()      { *m = NoneStrategy{} }
 func (*NoneStrategy) ProtoMessage() {}
 func (*NoneStrategy) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{46}
+	return fileDescriptor_c23edafa7e7ea072, []int{47}
 }
 func (m *NoneStrategy) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1355,7 +1383,7 @@ var xxx_messageInfo_NoneStrategy proto.InternalMessageInfo
 func (m *OSSArtifact) Reset()      { *m = OSSArtifact{} }
 func (*OSSArtifact) ProtoMessage() {}
 func (*OSSArtifact) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{47}
+	return fileDescriptor_c23edafa7e7ea072, []int{48}
 }
 func (m *OSSArtifact) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1383,7 +1411,7 @@ var xxx_messageInfo_OSSArtifact proto.InternalMessageInfo
 func (m *OSSBucket) Reset()      { *m = OSSBucket{} }
 func (*OSSBucket) ProtoMessage() {}
 func (*OSSBucket) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{48}
+	return fileDescriptor_c23edafa7e7ea072, []int{49}
 }
 func (m *OSSBucket) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1411,7 +1439,7 @@ var xxx_messageInfo_OSSBucket proto.InternalMessageInfo
 func (m *Outputs) Reset()      { *m = Outputs{} }
 func (*Outputs) ProtoMessage() {}
 func (*Outputs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{49}
+	return fileDescriptor_c23edafa7e7ea072, []int{50}
 }
 func (m *Outputs) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1439,7 +1467,7 @@ var xxx_messageInfo_Outputs proto.InternalMessageInfo
 func (m *ParallelSteps) Reset()      { *m = ParallelSteps{} }
 func (*ParallelSteps) ProtoMessage() {}
 func (*ParallelSteps) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{50}
+	return fileDescriptor_c23edafa7e7ea072, []int{51}
 }
 func (m *ParallelSteps) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1467,7 +1495,7 @@ var xxx_messageInfo_ParallelSteps proto.InternalMessageInfo
 func (m *Parameter) Reset()      { *m = Parameter{} }
 func (*Parameter) ProtoMessage() {}
 func (*Parameter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{51}
+	return fileDescriptor_c23edafa7e7ea072, []int{52}
 }
 func (m *Parameter) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1495,7 +1523,7 @@ var xxx_messageInfo_Parameter proto.InternalMessageInfo
 func (m *PodGC) Reset()      { *m = PodGC{} }
 func (*PodGC) ProtoMessage() {}
 func (*PodGC) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{52}
+	return fileDescriptor_c23edafa7e7ea072, []int{53}
 }
 func (m *PodGC) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1523,7 +1551,7 @@ var xxx_messageInfo_PodGC proto.InternalMessageInfo
 func (m *Prometheus) Reset()      { *m = Prometheus{} }
 func (*Prometheus) ProtoMessage() {}
 func (*Prometheus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{53}
+	return fileDescriptor_c23edafa7e7ea072, []int{54}
 }
 func (m *Prometheus) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1551,7 +1579,7 @@ var xxx_messageInfo_Prometheus proto.InternalMessageInfo
 func (m *RawArtifact) Reset()      { *m = RawArtifact{} }
 func (*RawArtifact) ProtoMessage() {}
 func (*RawArtifact) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{54}
+	return fileDescriptor_c23edafa7e7ea072, []int{55}
 }
 func (m *RawArtifact) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1579,7 +1607,7 @@ var xxx_messageInfo_RawArtifact proto.InternalMessageInfo
 func (m *ResourceTemplate) Reset()      { *m = ResourceTemplate{} }
 func (*ResourceTemplate) ProtoMessage() {}
 func (*ResourceTemplate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{55}
+	return fileDescriptor_c23edafa7e7ea072, []int{56}
 }
 func (m *ResourceTemplate) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1607,7 +1635,7 @@ var xxx_messageInfo_ResourceTemplate proto.InternalMessageInfo
 func (m *RetryStrategy) Reset()      { *m = RetryStrategy{} }
 func (*RetryStrategy) ProtoMessage() {}
 func (*RetryStrategy) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{56}
+	return fileDescriptor_c23edafa7e7ea072, []int{57}
 }
 func (m *RetryStrategy) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1635,7 +1663,7 @@ var xxx_messageInfo_RetryStrategy proto.InternalMessageInfo
 func (m *S3Artifact) Reset()      { *m = S3Artifact{} }
 func (*S3Artifact) ProtoMessage() {}
 func (*S3Artifact) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{57}
+	return fileDescriptor_c23edafa7e7ea072, []int{58}
 }
 func (m *S3Artifact) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1663,7 +1691,7 @@ var xxx_messageInfo_S3Artifact proto.InternalMessageInfo
 func (m *S3Bucket) Reset()      { *m = S3Bucket{} }
 func (*S3Bucket) ProtoMessage() {}
 func (*S3Bucket) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{58}
+	return fileDescriptor_c23edafa7e7ea072, []int{59}
 }
 func (m *S3Bucket) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1691,7 +1719,7 @@ var xxx_messageInfo_S3Bucket proto.InternalMessageInfo
 func (m *ScriptTemplate) Reset()      { *m = ScriptTemplate{} }
 func (*ScriptTemplate) ProtoMessage() {}
 func (*ScriptTemplate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{59}
+	return fileDescriptor_c23edafa7e7ea072, []int{60}
 }
 func (m *ScriptTemplate) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1719,7 +1747,7 @@ var xxx_messageInfo_ScriptTemplate proto.InternalMessageInfo
 func (m *SemaphoreHolding) Reset()      { *m = SemaphoreHolding{} }
 func (*SemaphoreHolding) ProtoMessage() {}
 func (*SemaphoreHolding) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{60}
+	return fileDescriptor_c23edafa7e7ea072, []int{61}
 }
 func (m *SemaphoreHolding) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1747,7 +1775,7 @@ var xxx_messageInfo_SemaphoreHolding proto.InternalMessageInfo
 func (m *SemaphoreRef) Reset()      { *m = SemaphoreRef{} }
 func (*SemaphoreRef) ProtoMessage() {}
 func (*SemaphoreRef) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{61}
+	return fileDescriptor_c23edafa7e7ea072, []int{62}
 }
 func (m *SemaphoreRef) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1775,7 +1803,7 @@ var xxx_messageInfo_SemaphoreRef proto.InternalMessageInfo
 func (m *SemaphoreStatus) Reset()      { *m = SemaphoreStatus{} }
 func (*SemaphoreStatus) ProtoMessage() {}
 func (*SemaphoreStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{62}
+	return fileDescriptor_c23edafa7e7ea072, []int{63}
 }
 func (m *SemaphoreStatus) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1803,7 +1831,7 @@ var xxx_messageInfo_SemaphoreStatus proto.InternalMessageInfo
 func (m *Sequence) Reset()      { *m = Sequence{} }
 func (*Sequence) ProtoMessage() {}
 func (*Sequence) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{63}
+	return fileDescriptor_c23edafa7e7ea072, []int{64}
 }
 func (m *Sequence) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1831,7 +1859,7 @@ var xxx_messageInfo_Sequence proto.InternalMessageInfo
 func (m *Submit) Reset()      { *m = Submit{} }
 func (*Submit) ProtoMessage() {}
 func (*Submit) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{64}
+	return fileDescriptor_c23edafa7e7ea072, []int{65}
 }
 func (m *Submit) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1859,7 +1887,7 @@ var xxx_messageInfo_Submit proto.InternalMessageInfo
 func (m *SubmitOpts) Reset()      { *m = SubmitOpts{} }
 func (*SubmitOpts) ProtoMessage() {}
 func (*SubmitOpts) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{65}
+	return fileDescriptor_c23edafa7e7ea072, []int{66}
 }
 func (m *SubmitOpts) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1887,7 +1915,7 @@ var xxx_messageInfo_SubmitOpts proto.InternalMessageInfo
 func (m *SuppliedValueFrom) Reset()      { *m = SuppliedValueFrom{} }
 func (*SuppliedValueFrom) ProtoMessage() {}
 func (*SuppliedValueFrom) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{66}
+	return fileDescriptor_c23edafa7e7ea072, []int{67}
 }
 func (m *SuppliedValueFrom) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1915,7 +1943,7 @@ var xxx_messageInfo_SuppliedValueFrom proto.InternalMessageInfo
 func (m *SuspendTemplate) Reset()      { *m = SuspendTemplate{} }
 func (*SuspendTemplate) ProtoMessage() {}
 func (*SuspendTemplate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{67}
+	return fileDescriptor_c23edafa7e7ea072, []int{68}
 }
 func (m *SuspendTemplate) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1943,7 +1971,7 @@ var xxx_messageInfo_SuspendTemplate proto.InternalMessageInfo
 func (m *Synchronization) Reset()      { *m = Synchronization{} }
 func (*Synchronization) ProtoMessage() {}
 func (*Synchronization) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{68}
+	return fileDescriptor_c23edafa7e7ea072, []int{69}
 }
 func (m *Synchronization) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1971,7 +1999,7 @@ var xxx_messageInfo_Synchronization proto.InternalMessageInfo
 func (m *SynchronizationStatus) Reset()      { *m = SynchronizationStatus{} }
 func (*SynchronizationStatus) ProtoMessage() {}
 func (*SynchronizationStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{69}
+	return fileDescriptor_c23edafa7e7ea072, []int{70}
 }
 func (m *SynchronizationStatus) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -1999,7 +2027,7 @@ var xxx_messageInfo_SynchronizationStatus proto.InternalMessageInfo
 func (m *TTLStrategy) Reset()      { *m = TTLStrategy{} }
 func (*TTLStrategy) ProtoMessage() {}
 func (*TTLStrategy) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{70}
+	return fileDescriptor_c23edafa7e7ea072, []int{71}
 }
 func (m *TTLStrategy) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2027,7 +2055,7 @@ var xxx_messageInfo_TTLStrategy proto.InternalMessageInfo
 func (m *TarStrategy) Reset()      { *m = TarStrategy{} }
 func (*TarStrategy) ProtoMessage() {}
 func (*TarStrategy) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{71}
+	return fileDescriptor_c23edafa7e7ea072, []int{72}
 }
 func (m *TarStrategy) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2055,7 +2083,7 @@ var xxx_messageInfo_TarStrategy proto.InternalMessageInfo
 func (m *Template) Reset()      { *m = Template{} }
 func (*Template) ProtoMessage() {}
 func (*Template) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{72}
+	return fileDescriptor_c23edafa7e7ea072, []int{73}
 }
 func (m *Template) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2083,7 +2111,7 @@ var xxx_messageInfo_Template proto.InternalMessageInfo
 func (m *TemplateRef) Reset()      { *m = TemplateRef{} }
 func (*TemplateRef) ProtoMessage() {}
 func (*TemplateRef) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{73}
+	return fileDescriptor_c23edafa7e7ea072, []int{74}
 }
 func (m *TemplateRef) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2111,7 +2139,7 @@ var xxx_messageInfo_TemplateRef proto.InternalMessageInfo
 func (m *UserContainer) Reset()      { *m = UserContainer{} }
 func (*UserContainer) ProtoMessage() {}
 func (*UserContainer) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{74}
+	return fileDescriptor_c23edafa7e7ea072, []int{75}
 }
 func (m *UserContainer) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2139,7 +2167,7 @@ var xxx_messageInfo_UserContainer proto.InternalMessageInfo
 func (m *ValueFrom) Reset()      { *m = ValueFrom{} }
 func (*ValueFrom) ProtoMessage() {}
 func (*ValueFrom) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{75}
+	return fileDescriptor_c23edafa7e7ea072, []int{76}
 }
 func (m *ValueFrom) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2167,7 +2195,7 @@ var xxx_messageInfo_ValueFrom proto.InternalMessageInfo
 func (m *Version) Reset()      { *m = Version{} }
 func (*Version) ProtoMessage() {}
 func (*Version) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{76}
+	return fileDescriptor_c23edafa7e7ea072, []int{77}
 }
 func (m *Version) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2195,7 +2223,7 @@ var xxx_messageInfo_Version proto.InternalMessageInfo
 func (m *VolumeClaimGC) Reset()      { *m = VolumeClaimGC{} }
 func (*VolumeClaimGC) ProtoMessage() {}
 func (*VolumeClaimGC) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{77}
+	return fileDescriptor_c23edafa7e7ea072, []int{78}
 }
 func (m *VolumeClaimGC) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2223,7 +2251,7 @@ var xxx_messageInfo_VolumeClaimGC proto.InternalMessageInfo
 func (m *Workflow) Reset()      { *m = Workflow{} }
 func (*Workflow) ProtoMessage() {}
 func (*Workflow) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{78}
+	return fileDescriptor_c23edafa7e7ea072, []int{79}
 }
 func (m *Workflow) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2251,7 +2279,7 @@ var xxx_messageInfo_Workflow proto.InternalMessageInfo
 func (m *WorkflowEventBinding) Reset()      { *m = WorkflowEventBinding{} }
 func (*WorkflowEventBinding) ProtoMessage() {}
 func (*WorkflowEventBinding) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{79}
+	return fileDescriptor_c23edafa7e7ea072, []int{80}
 }
 func (m *WorkflowEventBinding) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2279,7 +2307,7 @@ var xxx_messageInfo_WorkflowEventBinding proto.InternalMessageInfo
 func (m *WorkflowEventBindingList) Reset()      { *m = WorkflowEventBindingList{} }
 func (*WorkflowEventBindingList) ProtoMessage() {}
 func (*WorkflowEventBindingList) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{80}
+	return fileDescriptor_c23edafa7e7ea072, []int{81}
 }
 func (m *WorkflowEventBindingList) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2307,7 +2335,7 @@ var xxx_messageInfo_WorkflowEventBindingList proto.InternalMessageInfo
 func (m *WorkflowEventBindingSpec) Reset()      { *m = WorkflowEventBindingSpec{} }
 func (*WorkflowEventBindingSpec) ProtoMessage() {}
 func (*WorkflowEventBindingSpec) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{81}
+	return fileDescriptor_c23edafa7e7ea072, []int{82}
 }
 func (m *WorkflowEventBindingSpec) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2335,7 +2363,7 @@ var xxx_messageInfo_WorkflowEventBindingSpec proto.InternalMessageInfo
 func (m *WorkflowList) Reset()      { *m = WorkflowList{} }
 func (*WorkflowList) ProtoMessage() {}
 func (*WorkflowList) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{82}
+	return fileDescriptor_c23edafa7e7ea072, []int{83}
 }
 func (m *WorkflowList) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2363,7 +2391,7 @@ var xxx_messageInfo_WorkflowList proto.InternalMessageInfo
 func (m *WorkflowSpec) Reset()      { *m = WorkflowSpec{} }
 func (*WorkflowSpec) ProtoMessage() {}
 func (*WorkflowSpec) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{83}
+	return fileDescriptor_c23edafa7e7ea072, []int{84}
 }
 func (m *WorkflowSpec) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2391,7 +2419,7 @@ var xxx_messageInfo_WorkflowSpec proto.InternalMessageInfo
 func (m *WorkflowStatus) Reset()      { *m = WorkflowStatus{} }
 func (*WorkflowStatus) ProtoMessage() {}
 func (*WorkflowStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{84}
+	return fileDescriptor_c23edafa7e7ea072, []int{85}
 }
 func (m *WorkflowStatus) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2419,7 +2447,7 @@ var xxx_messageInfo_WorkflowStatus proto.InternalMessageInfo
 func (m *WorkflowStep) Reset()      { *m = WorkflowStep{} }
 func (*WorkflowStep) ProtoMessage() {}
 func (*WorkflowStep) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{85}
+	return fileDescriptor_c23edafa7e7ea072, []int{86}
 }
 func (m *WorkflowStep) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2447,7 +2475,7 @@ var xxx_messageInfo_WorkflowStep proto.InternalMessageInfo
 func (m *WorkflowTemplate) Reset()      { *m = WorkflowTemplate{} }
 func (*WorkflowTemplate) ProtoMessage() {}
 func (*WorkflowTemplate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{86}
+	return fileDescriptor_c23edafa7e7ea072, []int{87}
 }
 func (m *WorkflowTemplate) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2475,7 +2503,7 @@ var xxx_messageInfo_WorkflowTemplate proto.InternalMessageInfo
 func (m *WorkflowTemplateList) Reset()      { *m = WorkflowTemplateList{} }
 func (*WorkflowTemplateList) ProtoMessage() {}
 func (*WorkflowTemplateList) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{87}
+	return fileDescriptor_c23edafa7e7ea072, []int{88}
 }
 func (m *WorkflowTemplateList) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2503,7 +2531,7 @@ var xxx_messageInfo_WorkflowTemplateList proto.InternalMessageInfo
 func (m *WorkflowTemplateRef) Reset()      { *m = WorkflowTemplateRef{} }
 func (*WorkflowTemplateRef) ProtoMessage() {}
 func (*WorkflowTemplateRef) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{88}
+	return fileDescriptor_c23edafa7e7ea072, []int{89}
 }
 func (m *WorkflowTemplateRef) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2531,7 +2559,7 @@ var xxx_messageInfo_WorkflowTemplateRef proto.InternalMessageInfo
 func (m *WorkflowTemplateSpec) Reset()      { *m = WorkflowTemplateSpec{} }
 func (*WorkflowTemplateSpec) ProtoMessage() {}
 func (*WorkflowTemplateSpec) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{89}
+	return fileDescriptor_c23edafa7e7ea072, []int{90}
 }
 func (m *WorkflowTemplateSpec) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2559,7 +2587,7 @@ var xxx_messageInfo_WorkflowTemplateSpec proto.InternalMessageInfo
 func (m *ZipStrategy) Reset()      { *m = ZipStrategy{} }
 func (*ZipStrategy) ProtoMessage() {}
 func (*ZipStrategy) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c23edafa7e7ea072, []int{90}
+	return fileDescriptor_c23edafa7e7ea072, []int{91}
 }
 func (m *ZipStrategy) XXX_Unmarshal(b []byte) error {
 	return m.Unmarshal(b)
@@ -2591,6 +2619,7 @@ func init() {
 	proto.RegisterType((*Artifact)(nil), "github.com.argoproj.argo.pkg.apis.workflow.v1alpha1.Artifact")
 	proto.RegisterType((*ArtifactLocation)(nil), "github.com.argoproj.argo.pkg.apis.workflow.v1alpha1.ArtifactLocation")
 	proto.RegisterType((*ArtifactRepositoryRef)(nil), "github.com.argoproj.argo.pkg.apis.workflow.v1alpha1.ArtifactRepositoryRef")
+	proto.RegisterType((*ArtifactRepositoryRefStatus)(nil), "github.com.argoproj.argo.pkg.apis.workflow.v1alpha1.ArtifactRepositoryRefStatus")
 	proto.RegisterType((*ArtifactoryArtifact)(nil), "github.com.argoproj.argo.pkg.apis.workflow.v1alpha1.ArtifactoryArtifact")
 	proto.RegisterType((*ArtifactoryAuth)(nil), "github.com.argoproj.argo.pkg.apis.workflow.v1alpha1.ArtifactoryAuth")
 	proto.RegisterType((*Backoff)(nil), "github.com.argoproj.argo.pkg.apis.workflow.v1alpha1.Backoff")
@@ -2691,466 +2720,471 @@ func init() {
 }
 
 var fileDescriptor_c23edafa7e7ea072 = []byte{
-	// 7343 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x5b, 0x6c, 0x24, 0xd7,
-	0x75, 0xa0, 0x9a, 0x64, 0x93, 0xdd, 0xa7, 0xc9, 0x21, 0x79, 0xe7, 0xd5, 0xa2, 0x46, 0xc3, 0x71,
-	0xc9, 0x12, 0x34, 0xbb, 0x32, 0x69, 0x8d, 0xac, 0x5d, 0xd9, 0xb2, 0x1e, 0x6c, 0xbe, 0x66, 0x34,
-	0xc3, 0x21, 0x75, 0x9a, 0x33, 0xb3, 0xd6, 0x08, 0xd2, 0x16, 0xbb, 0x6f, 0x77, 0xd7, 0xb0, 0xbb,
-	0xaa, 0x54, 0x55, 0x4d, 0x8a, 0xd2, 0x2e, 0x56, 0x36, 0xd6, 0x70, 0x1c, 0xc7, 0x48, 0x82, 0xc0,
-	0x89, 0x02, 0x23, 0x48, 0x7e, 0x82, 0x7c, 0xc4, 0x41, 0x3e, 0x82, 0xe4, 0x27, 0x80, 0x3f, 0x82,
-	0x24, 0x70, 0x0c, 0x04, 0x70, 0xbe, 0x62, 0x20, 0x06, 0x6d, 0x31, 0x3f, 0x32, 0x12, 0xc7, 0x5f,
-	0x41, 0x80, 0x41, 0x80, 0x04, 0xf7, 0x59, 0x8f, 0xae, 0x9e, 0x21, 0xab, 0x39, 0x03, 0x23, 0xf6,
-	0x5f, 0xd7, 0x39, 0xe7, 0x9e, 0x73, 0xdf, 0xf7, 0xbc, 0xee, 0x6d, 0x58, 0x6c, 0x5a, 0x41, 0xab,
-	0xbb, 0x35, 0x57, 0x73, 0x3a, 0xf3, 0xa6, 0xd7, 0x74, 0x5c, 0xcf, 0xb9, 0xc3, 0x7f, 0xcc, 0xbb,
-	0xdb, 0xcd, 0x79, 0xd3, 0xb5, 0xfc, 0xf9, 0x5d, 0xc7, 0xdb, 0x6e, 0xb4, 0x9d, 0xdd, 0xf9, 0x9d,
-	0x67, 0xcd, 0xb6, 0xdb, 0x32, 0x9f, 0x9d, 0x6f, 0x52, 0x9b, 0x7a, 0x66, 0x40, 0xeb, 0x73, 0xae,
-	0xe7, 0x04, 0x0e, 0x79, 0x2e, 0x64, 0x32, 0xa7, 0x98, 0xf0, 0x1f, 0x73, 0xee, 0x76, 0x73, 0x8e,
-	0x31, 0x99, 0x53, 0x4c, 0xe6, 0x14, 0x93, 0x99, 0x4f, 0x45, 0x24, 0x37, 0x1d, 0x26, 0x90, 0xf1,
-	0xda, 0xea, 0x36, 0xf8, 0x17, 0xff, 0xe0, 0xbf, 0x84, 0x8c, 0x19, 0x63, 0xfb, 0x05, 0x7f, 0xce,
-	0x72, 0x58, 0x95, 0xe6, 0x6b, 0x8e, 0x47, 0xe7, 0x77, 0x7a, 0xea, 0x31, 0x73, 0x31, 0x42, 0xe3,
-	0x3a, 0x6d, 0xab, 0xb6, 0x37, 0xbf, 0xf3, 0xec, 0x16, 0x0d, 0x7a, 0xab, 0x3c, 0xf3, 0x99, 0x90,
-	0xb4, 0x63, 0xd6, 0x5a, 0x96, 0x4d, 0xbd, 0xbd, 0xb0, 0xc9, 0x1d, 0x1a, 0x98, 0x69, 0x02, 0xe6,
-	0xfb, 0x95, 0xf2, 0xba, 0x76, 0x60, 0x75, 0x68, 0x4f, 0x81, 0xff, 0x71, 0xbf, 0x02, 0x7e, 0xad,
-	0x45, 0x3b, 0x66, 0x4f, 0xb9, 0xe7, 0xfa, 0x95, 0xeb, 0x06, 0x56, 0x7b, 0xde, 0xb2, 0x03, 0x3f,
-	0xf0, 0x92, 0x85, 0x8c, 0x65, 0x18, 0x5d, 0xe8, 0x38, 0x5d, 0x3b, 0x20, 0x2f, 0x42, 0x7e, 0xc7,
-	0x6c, 0x77, 0x69, 0x39, 0x77, 0x21, 0xf7, 0x74, 0xb1, 0xf2, 0xe4, 0x77, 0xf6, 0x67, 0x1f, 0x39,
-	0xd8, 0x9f, 0xcd, 0xdf, 0x64, 0xc0, 0xbb, 0xfb, 0xb3, 0xa7, 0xa8, 0x5d, 0x73, 0xea, 0x96, 0xdd,
-	0x9c, 0xbf, 0xe3, 0x3b, 0xf6, 0xdc, 0xf5, 0x6e, 0x67, 0x8b, 0x7a, 0x28, 0xca, 0x18, 0xdf, 0x1a,
-	0x82, 0xc9, 0x05, 0xaf, 0xd6, 0xb2, 0x76, 0x68, 0x35, 0x60, 0xfc, 0x9b, 0x7b, 0xe4, 0x36, 0x0c,
-	0x07, 0xa6, 0xc7, 0xd9, 0x95, 0x2e, 0xbd, 0x3a, 0x97, 0x61, 0xbc, 0xe7, 0x36, 0x4d, 0x4f, 0xb1,
-	0xab, 0x8c, 0x1d, 0xec, 0xcf, 0x0e, 0x6f, 0x9a, 0x1e, 0x32, 0xae, 0xe4, 0x6d, 0x18, 0xb1, 0x1d,
-	0x9b, 0x96, 0x87, 0x38, 0xf7, 0x85, 0x4c, 0xdc, 0xaf, 0x3b, 0xb6, 0xae, 0x6d, 0xa5, 0x70, 0xb0,
-	0x3f, 0x3b, 0xc2, 0x20, 0xc8, 0x19, 0xb3, 0xda, 0xbf, 0x67, 0xb9, 0xe5, 0xe1, 0x01, 0x6a, 0xff,
-	0x86, 0xe5, 0xc6, 0x6b, 0xff, 0x86, 0xe5, 0x22, 0xe3, 0x6a, 0xfc, 0x34, 0x07, 0xc5, 0x05, 0xaf,
-	0xd9, 0xed, 0x50, 0x3b, 0xf0, 0x89, 0x07, 0xe0, 0x9a, 0x9e, 0xd9, 0xa1, 0x01, 0xf5, 0xfc, 0x72,
-	0xee, 0xc2, 0xf0, 0xd3, 0xa5, 0x4b, 0x2f, 0x67, 0x92, 0xb8, 0xa1, 0xd8, 0x54, 0x88, 0x1c, 0x3e,
-	0xd0, 0x20, 0x1f, 0x23, 0x52, 0x88, 0x0d, 0x45, 0xd3, 0x0b, 0xac, 0x86, 0x59, 0x0b, 0xfc, 0xf2,
-	0x10, 0x17, 0xf9, 0x52, 0x26, 0x91, 0x0b, 0x92, 0x4b, 0x65, 0x5a, 0x4a, 0x2c, 0x2a, 0x88, 0x8f,
-	0xa1, 0x08, 0xe3, 0x6f, 0x47, 0xa0, 0xa0, 0x10, 0xe4, 0x02, 0x8c, 0xd8, 0x66, 0x47, 0xcd, 0xb4,
-	0x71, 0x59, 0x70, 0xe4, 0xba, 0xd9, 0x61, 0xbd, 0x6f, 0x76, 0x28, 0xa3, 0x70, 0xcd, 0xa0, 0xc5,
-	0x87, 0x37, 0x42, 0xb1, 0x61, 0x06, 0x2d, 0xe4, 0x18, 0x72, 0x0e, 0x46, 0x3a, 0x4e, 0x9d, 0xf2,
-	0x01, 0xca, 0x8b, 0xd1, 0x5b, 0x73, 0xea, 0x14, 0x39, 0x94, 0x95, 0x6f, 0x78, 0x4e, 0xa7, 0x3c,
-	0x12, 0x2f, 0xbf, 0xe2, 0x39, 0x1d, 0xe4, 0x18, 0xf2, 0xb5, 0x1c, 0x4c, 0xa9, 0xea, 0x5d, 0x73,
-	0x6a, 0x66, 0x60, 0x39, 0x76, 0x39, 0xcf, 0x47, 0x7b, 0x79, 0xa0, 0x8e, 0x50, 0xcc, 0x2a, 0x65,
-	0x29, 0x75, 0x2a, 0x89, 0xc1, 0x1e, 0xc1, 0xe4, 0x12, 0x40, 0xb3, 0xed, 0x6c, 0x99, 0x6d, 0xd6,
-	0x07, 0xe5, 0x51, 0x5e, 0x6b, 0x3d, 0x84, 0xab, 0x1a, 0x83, 0x11, 0x2a, 0xb2, 0x0d, 0x63, 0xa6,
-	0x58, 0x72, 0xe5, 0x31, 0x5e, 0xef, 0xa5, 0x8c, 0xf5, 0x8e, 0x2d, 0xdb, 0x4a, 0xe9, 0x60, 0x7f,
-	0x76, 0x4c, 0x02, 0x51, 0x49, 0x20, 0xcf, 0x40, 0xc1, 0x71, 0x59, 0x55, 0xcd, 0x76, 0xb9, 0x70,
-	0x21, 0xf7, 0x74, 0xa1, 0x32, 0x25, 0xab, 0x57, 0x58, 0x97, 0x70, 0xd4, 0x14, 0xe4, 0x22, 0x8c,
-	0xf9, 0xdd, 0x2d, 0x36, 0x5a, 0xe5, 0x22, 0x6f, 0xcb, 0xa4, 0x24, 0x1e, 0xab, 0x0a, 0x30, 0x2a,
-	0x3c, 0x79, 0x1e, 0x4a, 0x1e, 0xad, 0x75, 0x3d, 0x9f, 0xb2, 0xe1, 0x2b, 0x03, 0xe7, 0x7d, 0x52,
-	0x92, 0x97, 0x30, 0x44, 0x61, 0x94, 0xce, 0xf8, 0xbb, 0x51, 0xe8, 0xe9, 0x57, 0xf2, 0x2c, 0x94,
-	0x64, 0x7d, 0xaf, 0x39, 0x4d, 0x9f, 0x4f, 0xaf, 0x42, 0x65, 0x92, 0xf1, 0x59, 0x08, 0xc1, 0x18,
-	0xa5, 0x21, 0xb7, 0x60, 0xc8, 0x7f, 0x4e, 0xee, 0x22, 0xaf, 0x64, 0xea, 0xbf, 0xea, 0x73, 0x7a,
-	0x09, 0x8c, 0x1e, 0xec, 0xcf, 0x0e, 0x55, 0x9f, 0xc3, 0x21, 0xff, 0x39, 0xb6, 0x7f, 0x34, 0xad,
-	0x60, 0xa0, 0xfd, 0x63, 0xd5, 0x0a, 0x34, 0x6b, 0xbe, 0x7f, 0xac, 0x5a, 0x01, 0x32, 0xae, 0x6c,
-	0xf7, 0x6b, 0x05, 0x81, 0xcb, 0xa7, 0x77, 0xd6, 0xdd, 0xef, 0xf2, 0xe6, 0xe6, 0x86, 0x66, 0xcf,
-	0xd7, 0x0f, 0x83, 0x20, 0x67, 0x4c, 0xde, 0x67, 0x3d, 0x29, 0x70, 0x8e, 0xb7, 0x27, 0xd7, 0xc5,
-	0xe5, 0x81, 0xd6, 0x85, 0xe3, 0xed, 0x69, 0x71, 0x72, 0x4c, 0x34, 0x02, 0xa3, 0xd2, 0x78, 0xeb,
-	0xea, 0x0d, 0x9f, 0x2f, 0x83, 0xcc, 0xad, 0x5b, 0x5a, 0xa9, 0x26, 0x5a, 0xb7, 0xb4, 0x52, 0x45,
-	0xce, 0x98, 0x8d, 0x8d, 0x67, 0xee, 0xca, 0x55, 0x93, 0x6d, 0x6c, 0xd0, 0xdc, 0x8d, 0x8f, 0x0d,
-	0x9a, 0xbb, 0xc8, 0xb8, 0x32, 0xe6, 0x8e, 0xef, 0xf3, 0x45, 0x92, 0x95, 0xf9, 0x7a, 0xb5, 0x1a,
-	0x67, 0xbe, 0x5e, 0xad, 0x22, 0xe3, 0xca, 0x67, 0x55, 0xcd, 0xe7, 0x8b, 0x2a, 0xf3, 0xac, 0x5a,
-	0x4c, 0x30, 0x5f, 0x5d, 0xac, 0x22, 0xe3, 0x6a, 0x34, 0xe1, 0xb4, 0xc2, 0x20, 0x75, 0x1d, 0xdf,
-	0xe2, 0x43, 0x43, 0x1b, 0x64, 0x1e, 0x8a, 0x35, 0xc7, 0x6e, 0x58, 0xcd, 0x35, 0xd3, 0x95, 0x9b,
-	0xb6, 0xde, 0xed, 0x17, 0x15, 0x02, 0x43, 0x1a, 0xf2, 0x38, 0x0c, 0x6f, 0xd3, 0x3d, 0xb9, 0x7b,
-	0x97, 0x24, 0xe9, 0xf0, 0x55, 0xba, 0x87, 0x0c, 0x6e, 0x7c, 0x3b, 0x07, 0x27, 0x53, 0xa6, 0x05,
-	0x2b, 0xd6, 0xf5, 0xda, 0x52, 0x82, 0x2e, 0x76, 0x03, 0xaf, 0x21, 0x83, 0x93, 0xaf, 0xe4, 0x60,
-	0x32, 0x32, 0x4f, 0x16, 0xba, 0xf2, 0x80, 0xc8, 0xbe, 0xf3, 0xc5, 0x78, 0x55, 0xce, 0x4a, 0x89,
-	0x93, 0x09, 0x04, 0x26, 0xa5, 0x1a, 0x7f, 0x9f, 0x83, 0x24, 0x11, 0x31, 0xe1, 0x44, 0xd7, 0xa7,
-	0x1e, 0x3b, 0xbe, 0xaa, 0xb4, 0xe6, 0xd1, 0x40, 0x6a, 0x3e, 0x4f, 0xce, 0x09, 0xbd, 0x8c, 0xd5,
-	0x62, 0x8e, 0x69, 0xa1, 0x73, 0x3b, 0xcf, 0xce, 0x09, 0x8a, 0xab, 0x74, 0xaf, 0x4a, 0xdb, 0x94,
-	0xf1, 0xa8, 0x90, 0x83, 0xfd, 0xd9, 0x13, 0x37, 0x62, 0x0c, 0x30, 0xc1, 0x90, 0x89, 0x70, 0x4d,
-	0xdf, 0xdf, 0x75, 0xbc, 0xba, 0x14, 0x31, 0x74, 0x64, 0x11, 0x1b, 0x31, 0x06, 0x98, 0x60, 0x68,
-	0xfc, 0x65, 0x0e, 0xc6, 0x2a, 0x66, 0x6d, 0xdb, 0x69, 0x34, 0xd8, 0x9e, 0x5f, 0xef, 0x7a, 0xe2,
-	0x64, 0x14, 0x63, 0xa2, 0xf7, 0xfc, 0x25, 0x09, 0x47, 0x4d, 0x41, 0x36, 0x61, 0x54, 0x74, 0x87,
-	0xac, 0xd4, 0xa7, 0x23, 0x95, 0xd2, 0xfa, 0x28, 0x1f, 0x0e, 0xa6, 0x8f, 0xce, 0x09, 0x7d, 0x74,
-	0xee, 0x8a, 0x1d, 0xac, 0x33, 0x1d, 0xcf, 0xb2, 0x9b, 0x15, 0x38, 0xd8, 0x9f, 0x1d, 0x5d, 0xe1,
-	0x3c, 0x50, 0xf2, 0x62, 0xc7, 0x43, 0xc7, 0x7c, 0x57, 0x89, 0xe3, 0xdb, 0x69, 0x31, 0x3c, 0x1e,
-	0xd6, 0x42, 0x14, 0x46, 0xe9, 0x8c, 0xb7, 0x20, 0xbf, 0x68, 0xd6, 0x5a, 0x94, 0xdc, 0x48, 0x4e,
-	0xdd, 0xd2, 0xa5, 0xa7, 0xd3, 0x7a, 0x4b, 0x4f, 0xe3, 0x68, 0x87, 0x4d, 0xf4, 0x9b, 0xe0, 0xc6,
-	0xc7, 0x39, 0x38, 0xbb, 0xd8, 0xee, 0xfa, 0x01, 0xf5, 0x6e, 0xc9, 0x79, 0xb5, 0x49, 0x3b, 0x6e,
-	0xdb, 0x0c, 0x28, 0xf9, 0xdf, 0x50, 0x60, 0xb6, 0x40, 0xdd, 0x0c, 0x4c, 0x29, 0xb1, 0x7f, 0x57,
-	0xf0, 0x99, 0xc9, 0xa8, 0x59, 0x1d, 0xd6, 0xb7, 0xee, 0xd0, 0x5a, 0xb0, 0x46, 0x03, 0x33, 0x3c,
-	0xfb, 0x43, 0x18, 0x6a, 0xae, 0x64, 0x1b, 0x46, 0x7c, 0x97, 0xd6, 0x64, 0x47, 0x5f, 0xc9, 0x34,
-	0xf9, 0x93, 0xd5, 0xae, 0xba, 0xb4, 0x16, 0x2a, 0x4a, 0xec, 0x0b, 0xb9, 0x10, 0xe3, 0x5f, 0x72,
-	0xf0, 0x58, 0x9f, 0xa6, 0x5e, 0xb3, 0xfc, 0x80, 0xbc, 0xd9, 0xd3, 0xdc, 0xb9, 0xc3, 0x35, 0x97,
-	0x95, 0xe6, 0x8d, 0xd5, 0xb3, 0x4a, 0x41, 0x22, 0x4d, 0x7d, 0x07, 0xf2, 0x56, 0x40, 0x3b, 0x4a,
-	0x47, 0xbd, 0x96, 0xa9, 0xad, 0x7d, 0xaa, 0x5f, 0x99, 0x50, 0x36, 0xce, 0x15, 0x26, 0x02, 0x85,
-	0x24, 0xe3, 0x6f, 0x72, 0xc0, 0x06, 0xbd, 0x6e, 0x49, 0x9d, 0x62, 0x24, 0xd8, 0x73, 0x95, 0xae,
-	0xfa, 0xb8, 0xea, 0xa0, 0xcd, 0x3d, 0x97, 0x19, 0x45, 0x13, 0x9a, 0x90, 0x01, 0x90, 0x93, 0x92,
-	0xb7, 0x60, 0xd4, 0x0f, 0xcc, 0xa0, 0xeb, 0xcb, 0x0d, 0x70, 0x45, 0x16, 0x1a, 0xad, 0x72, 0xe8,
-	0xdd, 0xfd, 0xd9, 0x43, 0x59, 0x92, 0x73, 0x9a, 0xb7, 0x28, 0x87, 0x92, 0x2b, 0xd3, 0xae, 0x3a,
-	0xd4, 0xf7, 0xcd, 0x26, 0x95, 0xeb, 0x41, 0x6b, 0x57, 0x6b, 0x02, 0x8c, 0x0a, 0x6f, 0x7c, 0x01,
-	0x60, 0xd1, 0xb1, 0x03, 0xcb, 0xee, 0xd2, 0x75, 0x9b, 0x3c, 0x01, 0x79, 0xea, 0x79, 0x8e, 0x27,
-	0x35, 0x23, 0xdd, 0xfc, 0x65, 0x06, 0x44, 0x81, 0x23, 0x4f, 0xb1, 0x75, 0x6c, 0xb5, 0x69, 0x9d,
-	0xd7, 0xbe, 0x50, 0x39, 0xa1, 0x6a, 0xbf, 0xc2, 0xa1, 0x28, 0xb1, 0xc6, 0x1c, 0x8c, 0x2d, 0x32,
-	0xc3, 0x91, 0x7a, 0x8c, 0x6f, 0xd4, 0x74, 0x9c, 0x88, 0x99, 0x8e, 0xca, 0x44, 0xfc, 0xee, 0x10,
-	0x8c, 0x2f, 0x7a, 0x8e, 0xad, 0x46, 0xe1, 0x21, 0xac, 0x93, 0x66, 0x6c, 0x9d, 0x64, 0x53, 0xeb,
-	0xa3, 0x55, 0xee, 0xb7, 0x46, 0x88, 0xa3, 0x47, 0x5c, 0xe8, 0x7b, 0xab, 0x83, 0x8b, 0xe2, 0xec,
-	0xc2, 0xce, 0x8f, 0x4f, 0x01, 0xe3, 0xfb, 0x39, 0x98, 0x8a, 0x92, 0x3f, 0x84, 0x95, 0xd8, 0x88,
-	0xaf, 0xc4, 0x85, 0x81, 0x9b, 0xd8, 0x67, 0xf9, 0xfd, 0x7b, 0x3e, 0xde, 0x34, 0xd6, 0xcd, 0xcc,
-	0x5a, 0x1b, 0xdf, 0x8d, 0x00, 0x64, 0xfb, 0x16, 0x06, 0xda, 0xfa, 0xf8, 0x70, 0x7e, 0x52, 0x56,
-	0x62, 0x3c, 0x0a, 0xbd, 0x9b, 0xf8, 0xc6, 0x98, 0x70, 0x76, 0x30, 0xfa, 0xb5, 0x16, 0xad, 0x77,
-	0xdb, 0x54, 0x2e, 0x71, 0xdd, 0x71, 0x55, 0x09, 0x47, 0x4d, 0x41, 0xde, 0x84, 0xe9, 0x9a, 0x63,
-	0xd7, 0xba, 0x9e, 0x47, 0xed, 0xda, 0xde, 0x06, 0xf7, 0x31, 0xc9, 0x85, 0x3b, 0x27, 0x8b, 0x4d,
-	0x2f, 0x26, 0x09, 0xee, 0xa6, 0x01, 0xb1, 0x97, 0x91, 0x30, 0xb5, 0x7c, 0x97, 0xda, 0x75, 0x6e,
-	0x0d, 0x14, 0xa2, 0xa6, 0x16, 0x07, 0xa3, 0xc2, 0x93, 0x1b, 0x70, 0xd6, 0x0f, 0x98, 0x2a, 0x63,
-	0x37, 0x97, 0xa8, 0x59, 0x6f, 0x5b, 0x36, 0x53, 0x2c, 0x1c, 0xbb, 0xee, 0x73, 0x05, 0x7f, 0xb8,
-	0xf2, 0xd8, 0xc1, 0xfe, 0xec, 0xd9, 0x6a, 0x3a, 0x09, 0xf6, 0x2b, 0x4b, 0xde, 0x82, 0x19, 0xbf,
-	0x5b, 0xab, 0x51, 0xdf, 0x6f, 0x74, 0xdb, 0xaf, 0x39, 0x5b, 0xfe, 0x65, 0xcb, 0x67, 0x5a, 0xd1,
-	0x35, 0xab, 0x63, 0x05, 0x5c, 0x89, 0xcf, 0x57, 0xce, 0x1f, 0xec, 0xcf, 0xce, 0x54, 0xfb, 0x52,
-	0xe1, 0x3d, 0x38, 0x10, 0x84, 0x33, 0x62, 0xcb, 0xe9, 0xe1, 0x3d, 0xc6, 0x79, 0xcf, 0x1c, 0xec,
-	0xcf, 0x9e, 0x59, 0x49, 0xa5, 0xc0, 0x3e, 0x25, 0xd9, 0x08, 0x06, 0x56, 0x87, 0xbe, 0xe7, 0xd8,
-	0x94, 0x6b, 0xea, 0x91, 0x11, 0xdc, 0x94, 0x70, 0xd4, 0x14, 0xe4, 0x4e, 0x38, 0xf9, 0xd8, 0xa2,
-	0x90, 0xea, 0xf7, 0xd1, 0x77, 0xab, 0x53, 0x07, 0xfb, 0xb3, 0x53, 0xb7, 0x22, 0x9c, 0xd8, 0xc2,
-	0xc2, 0x18, 0x6f, 0xe3, 0xaf, 0x87, 0x80, 0xf4, 0x6e, 0x04, 0xe4, 0x2a, 0x8c, 0x9a, 0xb5, 0x80,
-	0xd9, 0xfa, 0xc2, 0x3f, 0xf4, 0x44, 0x9a, 0x12, 0x23, 0x44, 0x21, 0x6d, 0x50, 0x36, 0x43, 0x68,
-	0xb8, 0x7b, 0x2c, 0xf0, 0xa2, 0x28, 0x59, 0x10, 0x07, 0xa6, 0xdb, 0xa6, 0x1f, 0xa8, 0xb9, 0x5a,
-	0x67, 0x4d, 0x96, 0x9b, 0xe4, 0x7f, 0x3b, 0x5c, 0xa3, 0x58, 0x89, 0xca, 0x69, 0x36, 0x73, 0xaf,
-	0x25, 0x19, 0x61, 0x2f, 0x6f, 0xe2, 0x01, 0xd4, 0xd4, 0x61, 0xc6, 0xf6, 0xc8, 0xec, 0x1e, 0x2e,
-	0x7d, 0x26, 0x86, 0x5b, 0xbf, 0x06, 0xf9, 0x18, 0x91, 0x62, 0xfc, 0x64, 0x14, 0xc6, 0x96, 0x16,
-	0x56, 0x37, 0x4d, 0x7f, 0xfb, 0x10, 0x0e, 0x27, 0x36, 0x21, 0xa4, 0x5a, 0x90, 0x5c, 0xd2, 0x4a,
-	0x5d, 0x40, 0x4d, 0x41, 0x1c, 0x28, 0x9a, 0xca, 0x7d, 0x27, 0xb7, 0xfc, 0x97, 0x33, 0x9a, 0x20,
-	0x92, 0x4b, 0xd4, 0x7d, 0x26, 0x41, 0x18, 0xca, 0x20, 0x3e, 0x94, 0x94, 0x70, 0xa4, 0x0d, 0x69,
-	0xf7, 0x67, 0xf4, 0xa9, 0x86, 0x7c, 0x84, 0x1d, 0x1e, 0x01, 0x60, 0x54, 0x0a, 0xf9, 0x0c, 0x8c,
-	0xd7, 0x29, 0xdb, 0x39, 0xa8, 0x5d, 0xb3, 0x28, 0xdb, 0x24, 0x86, 0x59, 0xbf, 0xb0, 0xcd, 0x72,
-	0x29, 0x02, 0xc7, 0x18, 0x15, 0xb9, 0x03, 0xc5, 0x5d, 0x2b, 0x68, 0xf1, 0x3d, 0xbd, 0x3c, 0xca,
-	0x87, 0xfa, 0xb3, 0x99, 0x2a, 0xca, 0x38, 0x84, 0xdd, 0x72, 0x4b, 0xf1, 0xc4, 0x90, 0x3d, 0x33,
-	0x4c, 0xd9, 0x07, 0xf7, 0x71, 0xf2, 0xdd, 0xa0, 0x18, 0x2f, 0xc0, 0x11, 0x18, 0xd2, 0x10, 0x1f,
-	0xc6, 0xd9, 0x47, 0x95, 0xbe, 0xd3, 0x65, 0x2b, 0x44, 0x5a, 0xe9, 0xd9, 0x3c, 0x9f, 0x8a, 0x89,
-	0xe8, 0x91, 0x5b, 0x11, 0xb6, 0x18, 0x13, 0xc2, 0x66, 0xdf, 0x6e, 0x8b, 0xda, 0xd2, 0x15, 0xa6,
-	0x67, 0xdf, 0xad, 0x16, 0xb5, 0x91, 0x63, 0x88, 0xc3, 0xd7, 0x87, 0x54, 0xd3, 0xb8, 0x0f, 0x2c,
-	0xab, 0x37, 0x2a, 0xd4, 0xf6, 0x2a, 0x27, 0xe4, 0xe2, 0x90, 0xdf, 0x18, 0x11, 0xc1, 0x94, 0x3c,
-	0xc7, 0x5e, 0x7e, 0xd7, 0x0a, 0xca, 0x25, 0x5e, 0x29, 0xbd, 0x53, 0xac, 0x73, 0x28, 0x4a, 0x2c,
-	0x3b, 0x5d, 0xc4, 0xe0, 0xfa, 0xe5, 0xf1, 0xb8, 0xaa, 0x29, 0x66, 0x80, 0x8f, 0x0a, 0x6f, 0xfc,
-	0x45, 0x0e, 0x4a, 0x6c, 0xbd, 0xa9, 0x35, 0xf2, 0x14, 0x8c, 0x06, 0xa6, 0xd7, 0x94, 0x76, 0x70,
-	0x44, 0xc4, 0x26, 0x87, 0xa2, 0xc4, 0x12, 0x13, 0xf2, 0x81, 0xe9, 0x6f, 0x2b, 0xbd, 0xe2, 0xf3,
-	0x99, 0x9a, 0x2d, 0x17, 0x7a, 0xa8, 0x52, 0xb0, 0x2f, 0x1f, 0x05, 0x67, 0xf2, 0x34, 0x14, 0xd8,
-	0x39, 0xb0, 0x62, 0xfa, 0xc2, 0x21, 0x57, 0xa8, 0x8c, 0xb3, 0x85, 0xbd, 0x22, 0x61, 0xa8, 0xb1,
-	0xc6, 0xf3, 0x90, 0x5f, 0xde, 0xa1, 0x36, 0x3f, 0x20, 0x7c, 0x69, 0x06, 0x26, 0x6d, 0x5f, 0x65,
-	0x1e, 0xa2, 0xa6, 0x30, 0xde, 0x84, 0x13, 0xcb, 0xef, 0xd2, 0x5a, 0x37, 0x70, 0x3c, 0x61, 0x2e,
-	0x92, 0xd7, 0x80, 0xf8, 0xd4, 0xdb, 0xb1, 0x6a, 0x74, 0xa1, 0x56, 0x63, 0x6a, 0xf2, 0xf5, 0x70,
-	0xff, 0x99, 0x91, 0x9c, 0x48, 0xb5, 0x87, 0x02, 0x53, 0x4a, 0x19, 0xbf, 0x93, 0x83, 0x52, 0xc4,
-	0x6b, 0xc3, 0x76, 0x9f, 0xe6, 0x62, 0xb5, 0xd2, 0xad, 0x6d, 0x6b, 0x27, 0xc3, 0xcb, 0x59, 0x5d,
-	0x41, 0x82, 0x4b, 0xb8, 0x6a, 0x34, 0x08, 0x43, 0x19, 0xf7, 0x73, 0xe7, 0xfc, 0x59, 0x0e, 0xc2,
-	0x72, 0x6c, 0xdc, 0xb7, 0xc2, 0xaa, 0x45, 0xc6, 0x5d, 0xf2, 0x95, 0x58, 0xf2, 0x41, 0x0e, 0xce,
-	0xc6, 0x1b, 0xcb, 0x4d, 0xef, 0xa3, 0xbb, 0x35, 0x66, 0xa5, 0x80, 0xb3, 0xd5, 0x74, 0x6e, 0xd8,
-	0x4f, 0x8c, 0x71, 0x13, 0xf2, 0xab, 0x66, 0xb7, 0x49, 0x0f, 0x65, 0xc0, 0xb0, 0x59, 0xe4, 0x51,
-	0xb3, 0x1d, 0xa8, 0xc3, 0x52, 0xce, 0x22, 0x94, 0x30, 0xd4, 0x58, 0xe3, 0x5b, 0x23, 0x50, 0x8a,
-	0x38, 0x6f, 0xd9, 0x06, 0xe0, 0x51, 0xd7, 0x49, 0x1e, 0x3f, 0x48, 0x5d, 0x07, 0x39, 0x86, 0x4d,
-	0x37, 0x8f, 0xee, 0x58, 0xbe, 0xe5, 0xd8, 0xc9, 0xe3, 0x07, 0x25, 0x1c, 0x35, 0x05, 0x99, 0x85,
-	0x7c, 0x9d, 0xba, 0x41, 0x8b, 0x4f, 0xe6, 0x91, 0x4a, 0x91, 0x55, 0x75, 0x89, 0x01, 0x50, 0xc0,
-	0x19, 0x41, 0x83, 0x06, 0xb5, 0x56, 0x79, 0x84, 0x6f, 0xd9, 0x9c, 0x60, 0x85, 0x01, 0x50, 0xc0,
-	0x53, 0x9c, 0x55, 0xf9, 0x07, 0xef, 0xac, 0x1a, 0x3d, 0x66, 0x67, 0x15, 0x71, 0xe1, 0xa4, 0xef,
-	0xb7, 0x36, 0x3c, 0x6b, 0xc7, 0x0c, 0x68, 0x38, 0x7b, 0xc6, 0x8e, 0x22, 0xe7, 0xec, 0xc1, 0xfe,
-	0xec, 0xc9, 0x6a, 0xf5, 0x72, 0x92, 0x0b, 0xa6, 0xb1, 0x26, 0x55, 0x38, 0x6d, 0xd9, 0x3e, 0xad,
-	0x75, 0x3d, 0x7a, 0xa5, 0x69, 0x3b, 0x1e, 0xbd, 0xec, 0xf8, 0x8c, 0x9d, 0x8c, 0x89, 0x28, 0xf7,
-	0xc0, 0xe9, 0x2b, 0x69, 0x44, 0x98, 0x5e, 0xd6, 0xf8, 0x6e, 0x0e, 0xc6, 0xa3, 0xfe, 0x6a, 0xe2,
-	0x03, 0xb4, 0x96, 0x56, 0xaa, 0x62, 0x2b, 0x91, 0x2b, 0xfc, 0x95, 0xcc, 0x6e, 0x70, 0xc1, 0x26,
-	0xd4, 0x97, 0x42, 0x18, 0x46, 0xc4, 0x1c, 0x22, 0xe4, 0xf6, 0x04, 0xe4, 0x1b, 0x8e, 0x57, 0xa3,
-	0x72, 0x0f, 0xd5, 0xab, 0x64, 0x85, 0x01, 0x51, 0xe0, 0x8c, 0x8f, 0x73, 0x10, 0x91, 0x40, 0xfe,
-	0x1f, 0x4c, 0x30, 0x19, 0x57, 0xbd, 0xad, 0x58, 0x6b, 0x2a, 0x99, 0x5b, 0xa3, 0x39, 0x55, 0x4e,
-	0x4b, 0xf9, 0x13, 0x31, 0x30, 0xc6, 0xe5, 0x91, 0xff, 0x0e, 0x45, 0xb3, 0x5e, 0xf7, 0xa8, 0xef,
-	0x53, 0x71, 0xc4, 0x14, 0x85, 0x5b, 0x6f, 0x41, 0x01, 0x31, 0xc4, 0xb3, 0x65, 0xd8, 0xaa, 0x37,
-	0x7c, 0x36, 0xb3, 0xa5, 0x85, 0xa6, 0x97, 0x21, 0x13, 0xc2, 0xe0, 0xa8, 0x29, 0x8c, 0xaf, 0x8f,
-	0x40, 0x5c, 0x36, 0xa9, 0xc3, 0xe4, 0xb6, 0xb7, 0xb5, 0xc8, 0x5d, 0x8f, 0x59, 0x9c, 0xc0, 0x27,
-	0x0f, 0xf6, 0x67, 0x27, 0xaf, 0xc6, 0x39, 0x60, 0x92, 0xa5, 0x94, 0x72, 0x95, 0xee, 0x05, 0xe6,
-	0x56, 0x96, 0x0d, 0x53, 0x49, 0x89, 0x72, 0xc0, 0x24, 0x4b, 0xf2, 0x3c, 0x94, 0xb6, 0xbd, 0x2d,
-	0xb5, 0xc8, 0x93, 0x9e, 0xd7, 0xab, 0x21, 0x0a, 0xa3, 0x74, 0xac, 0x0b, 0xb7, 0xbd, 0x2d, 0xb6,
-	0x29, 0xaa, 0xe8, 0xab, 0xee, 0xc2, 0xab, 0x12, 0x8e, 0x9a, 0x82, 0xb8, 0x40, 0xb6, 0x55, 0xef,
-	0x69, 0x47, 0xab, 0xdc, 0x8b, 0x0e, 0xef, 0xa7, 0x3d, 0xc3, 0x0e, 0xd3, 0xab, 0x3d, 0x7c, 0x30,
-	0x85, 0x37, 0xf9, 0x02, 0x9c, 0xdd, 0xf6, 0xb6, 0xe4, 0x51, 0xb1, 0xe1, 0x59, 0x76, 0xcd, 0x72,
-	0x63, 0x61, 0x57, 0x7d, 0x9c, 0x5c, 0x4d, 0x27, 0xc3, 0x7e, 0xe5, 0x8d, 0x6f, 0xb0, 0x75, 0x1c,
-	0x89, 0xaa, 0xdd, 0x2f, 0x9e, 0xd1, 0x80, 0xb1, 0x16, 0x35, 0xeb, 0xd4, 0x53, 0xba, 0xcf, 0x8b,
-	0xd9, 0x56, 0x05, 0xe7, 0x11, 0x6a, 0x66, 0xe2, 0xdb, 0x47, 0xc5, 0xdc, 0x58, 0x87, 0x51, 0x01,
-	0x3b, 0x84, 0x1d, 0xa4, 0x4f, 0xc2, 0xa1, 0x7b, 0xb8, 0xf2, 0x3e, 0xcc, 0x41, 0x91, 0x9b, 0xd3,
-	0x4d, 0xa6, 0x53, 0xeb, 0x22, 0xc3, 0xf7, 0x38, 0x3c, 0x1b, 0x30, 0x26, 0xce, 0x7d, 0x9f, 0x9f,
-	0x49, 0x59, 0xdb, 0x2a, 0x72, 0x55, 0xc2, 0xb6, 0x0a, 0x9d, 0xc2, 0x47, 0xc5, 0xdc, 0xf8, 0xe7,
-	0x1c, 0x8c, 0x5e, 0xb1, 0xdd, 0xee, 0xcf, 0x49, 0x5a, 0xc5, 0x1a, 0x8c, 0x30, 0x4b, 0x28, 0x9e,
-	0xbc, 0x33, 0x5e, 0x79, 0x32, 0x9a, 0xb8, 0x53, 0x8e, 0x27, 0xee, 0xa0, 0xb9, 0xab, 0xdc, 0xc4,
-	0xa2, 0xcc, 0xe7, 0x0a, 0x1f, 0xfe, 0xde, 0xec, 0x23, 0x1f, 0xfc, 0xe0, 0xc2, 0x23, 0x46, 0x1b,
-	0x46, 0xae, 0x59, 0xf6, 0xf6, 0xe1, 0xe6, 0x89, 0x5f, 0x73, 0xdc, 0x9e, 0x79, 0x52, 0x65, 0x40,
-	0x14, 0x38, 0x35, 0xff, 0x87, 0xd3, 0xe7, 0xbf, 0xf1, 0xa5, 0x1c, 0x4c, 0xaf, 0xd1, 0x8e, 0x63,
-	0xbd, 0x67, 0x86, 0x5e, 0x6e, 0x56, 0xa8, 0x65, 0x05, 0xd2, 0x45, 0xad, 0x0b, 0x5d, 0xb6, 0x02,
-	0x64, 0xf0, 0xfb, 0xe8, 0xa2, 0x3c, 0x54, 0xc9, 0xb6, 0xca, 0xeb, 0xe1, 0x9e, 0x15, 0x86, 0x2a,
-	0x15, 0x02, 0x43, 0x1a, 0xe3, 0x8f, 0x72, 0x30, 0x26, 0x2a, 0x41, 0x15, 0xef, 0x5c, 0x1f, 0xde,
-	0xb7, 0x21, 0xcf, 0xcb, 0xc9, 0xdd, 0xf6, 0x73, 0xd9, 0x0c, 0x34, 0xc6, 0x41, 0x68, 0x64, 0xfc,
-	0x27, 0x0a, 0x9e, 0x4c, 0x6d, 0xee, 0x98, 0xef, 0x2e, 0x68, 0x9f, 0xbe, 0x56, 0x9b, 0xd7, 0x38,
-	0x14, 0x25, 0xd6, 0xf8, 0x60, 0x18, 0x0a, 0xca, 0x75, 0x44, 0xbe, 0x9c, 0x83, 0x92, 0x69, 0xdb,
-	0x4e, 0x60, 0x0a, 0xcf, 0x8a, 0x98, 0xe4, 0xd7, 0x33, 0x55, 0x4c, 0x31, 0x9d, 0x5b, 0x08, 0x19,
-	0x2e, 0xdb, 0x81, 0xb7, 0x17, 0x6e, 0xfa, 0x11, 0x0c, 0x46, 0xe5, 0x92, 0x77, 0x60, 0xb4, 0x6d,
-	0x6e, 0xd1, 0xb6, 0x9a, 0xf3, 0x57, 0x06, 0xab, 0xc1, 0x35, 0xce, 0x4b, 0x08, 0xd7, 0xfd, 0x20,
-	0x80, 0x28, 0x05, 0xcd, 0xbc, 0x0c, 0x53, 0xc9, 0x8a, 0x92, 0xa9, 0xc8, 0xf8, 0x89, 0x21, 0x3b,
-	0x15, 0xdb, 0xce, 0xd4, 0x84, 0x1f, 0x7a, 0x21, 0x37, 0xf3, 0x59, 0x28, 0x45, 0xc4, 0x1c, 0xa5,
-	0xa8, 0xf1, 0x3a, 0x94, 0xd6, 0x68, 0xe0, 0x59, 0x35, 0xce, 0xe0, 0x7e, 0xb3, 0xe6, 0x50, 0x3b,
-	0xea, 0x7b, 0x6c, 0x12, 0x32, 0x96, 0x3e, 0x71, 0x00, 0x5c, 0xcf, 0xe9, 0xd0, 0xa0, 0x45, 0xbb,
-	0x6a, 0x44, 0xb3, 0x29, 0x7f, 0x1b, 0x9a, 0x8d, 0xf0, 0x05, 0x84, 0xdf, 0x18, 0x11, 0x61, 0x5c,
-	0x84, 0xfc, 0x5a, 0x37, 0xa0, 0xef, 0xde, 0x7f, 0xd5, 0x1b, 0xb7, 0x61, 0x9c, 0x93, 0x5e, 0x76,
-	0xda, 0x6c, 0x43, 0x61, 0x6d, 0xeb, 0xb0, 0xef, 0xa4, 0xdd, 0xc4, 0x89, 0x50, 0xe0, 0xd8, 0xcc,
-	0x6e, 0x39, 0xed, 0x3a, 0xf5, 0x64, 0x0f, 0xe8, 0x11, 0xbd, 0xcc, 0xa1, 0x28, 0xb1, 0xc6, 0x8f,
-	0x73, 0x50, 0xe2, 0x05, 0xe5, 0x46, 0xd0, 0x86, 0xb1, 0x96, 0x90, 0x23, 0x7b, 0x21, 0x9b, 0xb7,
-	0x3f, 0x5a, 0xe1, 0xc8, 0x21, 0x29, 0x00, 0xa8, 0x44, 0x30, 0x69, 0xbb, 0xa6, 0x15, 0x30, 0x69,
-	0x43, 0xc7, 0x2e, 0xed, 0x96, 0xe0, 0x8c, 0x4a, 0x84, 0xf1, 0xc7, 0x53, 0x00, 0xd7, 0x9d, 0x3a,
-	0x95, 0x4d, 0x9d, 0x81, 0x21, 0xab, 0x2e, 0x3b, 0x11, 0x64, 0xa1, 0xa1, 0x2b, 0x4b, 0x38, 0x64,
-	0xd5, 0xf5, 0xa8, 0x0c, 0xf5, 0xdd, 0x8b, 0x9f, 0x87, 0x52, 0xdd, 0xf2, 0xdd, 0xb6, 0xb9, 0x77,
-	0x3d, 0x45, 0x53, 0x5b, 0x0a, 0x51, 0x18, 0xa5, 0x23, 0xcf, 0xc8, 0xc8, 0xa6, 0xd0, 0xd2, 0xca,
-	0x89, 0xc8, 0x66, 0x81, 0x55, 0x2f, 0x12, 0xd4, 0x7c, 0x01, 0xc6, 0x95, 0x6f, 0x90, 0x4b, 0xc9,
-	0xf3, 0x52, 0xa7, 0x54, 0xf4, 0x64, 0x33, 0x82, 0xc3, 0x18, 0x65, 0xd2, 0x77, 0x39, 0xfa, 0x50,
-	0x7c, 0x97, 0x4b, 0x30, 0xe5, 0x07, 0x8e, 0x47, 0xeb, 0x8a, 0xe2, 0xca, 0x52, 0x99, 0xc4, 0x1a,
-	0x3a, 0x55, 0x4d, 0xe0, 0xb1, 0xa7, 0x04, 0xd9, 0x80, 0x53, 0xbb, 0x89, 0xa0, 0x31, 0x6f, 0xfc,
-	0x49, 0xce, 0xe9, 0x9c, 0xe4, 0x74, 0xea, 0x56, 0x0a, 0x0d, 0xa6, 0x96, 0x24, 0x2f, 0xc2, 0x84,
-	0xaa, 0x26, 0x3f, 0x2a, 0xcb, 0xa7, 0x38, 0x2b, 0x6d, 0xcb, 0x6c, 0x46, 0x91, 0x18, 0xa7, 0x25,
-	0x9f, 0x86, 0xbc, 0xdb, 0x32, 0x7d, 0x2a, 0x5d, 0x9d, 0xca, 0x8f, 0x94, 0xdf, 0x60, 0xc0, 0xbb,
-	0xfb, 0xb3, 0x45, 0x36, 0x66, 0xfc, 0x03, 0x05, 0x21, 0xb9, 0x04, 0xb0, 0xe5, 0x74, 0xed, 0xba,
-	0xe9, 0xed, 0x5d, 0x59, 0x92, 0x91, 0x0e, 0xad, 0xc3, 0x54, 0x34, 0x06, 0x23, 0x54, 0xd1, 0xf0,
-	0x72, 0xf1, 0xde, 0xe1, 0x65, 0x72, 0x1b, 0x8a, 0x3c, 0x2a, 0x44, 0xeb, 0x0b, 0x81, 0x74, 0x5b,
-	0x1e, 0x25, 0x80, 0xa0, 0x4f, 0xe6, 0xaa, 0x62, 0x82, 0x21, 0x3f, 0xf2, 0x16, 0x40, 0xc3, 0xb2,
-	0x2d, 0xbf, 0xc5, 0xb9, 0x97, 0x8e, 0xcc, 0x5d, 0xb7, 0x73, 0x45, 0x73, 0xc1, 0x08, 0x47, 0xf2,
-	0x26, 0x4c, 0x53, 0x3f, 0xb0, 0x3a, 0x66, 0x40, 0xeb, 0x3a, 0xc1, 0xa4, 0xcc, 0x03, 0x61, 0x3a,
-	0x2e, 0xb7, 0x9c, 0x24, 0xb8, 0x9b, 0x06, 0xc4, 0x5e, 0x46, 0xe4, 0x05, 0x28, 0xb8, 0x9e, 0xd3,
-	0x64, 0x86, 0x65, 0x79, 0x26, 0x36, 0x5d, 0x0a, 0x1b, 0x12, 0x7e, 0x37, 0xf2, 0x1b, 0x35, 0x35,
-	0xf9, 0xa7, 0x1c, 0x4c, 0x7b, 0xd4, 0x77, 0xba, 0x5e, 0x8d, 0xfa, 0xba, 0x62, 0xa7, 0xf9, 0xa6,
-	0x74, 0x33, 0x63, 0xa2, 0xb3, 0xda, 0x69, 0xe6, 0x30, 0xc9, 0x58, 0x9c, 0xb2, 0x54, 0x35, 0xb8,
-	0x07, 0x7f, 0x37, 0x0d, 0xf8, 0xa5, 0x1f, 0xce, 0xce, 0xf6, 0xe6, 0xd6, 0x6b, 0xe6, 0x6c, 0xa6,
-	0xff, 0xf2, 0x0f, 0x67, 0xa7, 0xd4, 0x77, 0xd8, 0x4f, 0x3d, 0xed, 0x62, 0x47, 0x88, 0xeb, 0xd4,
-	0xaf, 0x6c, 0x48, 0xff, 0xb2, 0x3e, 0x42, 0x36, 0x18, 0x10, 0x05, 0x8e, 0x3c, 0x0d, 0x85, 0xba,
-	0x49, 0x3b, 0x8e, 0x4d, 0xeb, 0xe5, 0x89, 0xd0, 0xf5, 0xb6, 0x24, 0x61, 0xa8, 0xb1, 0xe4, 0x6d,
-	0x18, 0xb5, 0xb8, 0xfa, 0x5f, 0x3e, 0xc1, 0x27, 0x4c, 0x36, 0x33, 0x43, 0x58, 0x10, 0x22, 0x21,
-	0x49, 0xfc, 0x46, 0xc9, 0x96, 0xd4, 0x60, 0xcc, 0xe9, 0x06, 0x5c, 0xc2, 0x24, 0x97, 0x90, 0xcd,
-	0x61, 0xbd, 0x2e, 0x78, 0x88, 0x6c, 0x5b, 0xf9, 0x81, 0x8a, 0x33, 0x6b, 0x6f, 0xad, 0x65, 0xb5,
-	0xeb, 0x1e, 0xb5, 0xcb, 0x53, 0xdc, 0x67, 0xc1, 0xdb, 0xbb, 0x28, 0x61, 0xa8, 0xb1, 0xe4, 0x7f,
-	0xc2, 0x84, 0xd3, 0x0d, 0xf8, 0xea, 0x65, 0xa3, 0xec, 0x97, 0xa7, 0x39, 0xf9, 0x34, 0xdb, 0x4b,
-	0xd6, 0xa3, 0x08, 0x8c, 0xd3, 0xb1, 0xfd, 0xbc, 0xe5, 0xf8, 0x01, 0xfb, 0xe0, 0x5b, 0xda, 0x99,
-	0xf8, 0x7e, 0x7e, 0x39, 0x82, 0xc3, 0x18, 0x25, 0xf9, 0x5a, 0x0e, 0xa6, 0x3b, 0x49, 0xb5, 0xbd,
-	0x7c, 0x96, 0x77, 0xc6, 0x4a, 0x46, 0xc5, 0x2f, 0xc1, 0x4d, 0x84, 0x16, 0x7b, 0xc0, 0xd8, 0x2b,
-	0x97, 0xfc, 0x6e, 0x0e, 0x4e, 0xfb, 0x7b, 0x76, 0xad, 0xe5, 0x39, 0x76, 0xbc, 0x46, 0x8f, 0xf2,
-	0x1a, 0x5d, 0xcf, 0xbe, 0x62, 0xd2, 0xb8, 0x56, 0x1e, 0x3d, 0xd8, 0x9f, 0x3d, 0x9d, 0x8a, 0xc2,
-	0xf4, 0x7a, 0xcc, 0x2c, 0xc1, 0x99, 0xf4, 0x55, 0x77, 0x3f, 0xa5, 0x73, 0x38, 0xaa, 0x74, 0xae,
-	0xc0, 0xa3, 0x7d, 0x2b, 0xc5, 0xb6, 0x6c, 0xa5, 0xbc, 0xe4, 0xe2, 0x5b, 0x76, 0x8f, 0xe6, 0x71,
-	0x02, 0xc6, 0xa3, 0xf7, 0x1e, 0x78, 0x70, 0x21, 0x92, 0x6f, 0x4a, 0x1c, 0x28, 0x3a, 0xd5, 0xe3,
-	0x08, 0x2e, 0xac, 0x57, 0x7b, 0x82, 0x0b, 0x1a, 0x84, 0xa1, 0x8c, 0xfb, 0x05, 0x17, 0xfe, 0x74,
-	0x08, 0xc2, 0x72, 0xe4, 0x19, 0x28, 0x50, 0xbb, 0xee, 0x3a, 0x96, 0x1d, 0x24, 0xc3, 0x32, 0xcb,
-	0x12, 0x8e, 0x9a, 0x22, 0x12, 0x8a, 0x18, 0xba, 0x67, 0x28, 0xa2, 0x05, 0x93, 0x26, 0x4f, 0x3f,
-	0x08, 0x7d, 0xc8, 0xc3, 0x47, 0xf2, 0x21, 0xeb, 0xc4, 0xd1, 0x38, 0x17, 0x4c, 0xb2, 0x65, 0x92,
-	0xfc, 0xb0, 0x38, 0x97, 0x34, 0x92, 0x49, 0x52, 0x35, 0xce, 0x05, 0x93, 0x6c, 0x8d, 0x3f, 0x1f,
-	0x02, 0xb5, 0xaf, 0xfc, 0x3c, 0x78, 0x42, 0x88, 0x01, 0xa3, 0x1e, 0xf5, 0xbb, 0xed, 0x40, 0xea,
-	0xbf, 0x7c, 0xef, 0x46, 0x0e, 0x41, 0x89, 0x61, 0xdb, 0x2a, 0x7d, 0xd7, 0x0a, 0x16, 0x9d, 0xba,
-	0xd2, 0x7a, 0xf9, 0xb6, 0xba, 0x2c, 0x61, 0xa8, 0xb1, 0xc6, 0x2e, 0x4c, 0xb0, 0x76, 0xb5, 0xdb,
-	0xb4, 0x5d, 0x0d, 0xa8, 0xeb, 0x93, 0x06, 0xe4, 0x7d, 0xf6, 0x63, 0x20, 0x53, 0x24, 0xcc, 0xe9,
-	0xa0, 0x6e, 0xc4, 0x65, 0xc2, 0xf8, 0xa2, 0x60, 0x6f, 0xfc, 0xc3, 0x10, 0x14, 0x75, 0x8f, 0x1e,
-	0xc2, 0x0f, 0x73, 0x09, 0xc6, 0xea, 0xb4, 0x61, 0xb2, 0x76, 0x8b, 0x39, 0x5e, 0x16, 0xc1, 0x59,
-	0x0e, 0x62, 0x2a, 0xe1, 0x82, 0xbd, 0x27, 0xd2, 0x6b, 0x51, 0x11, 0x92, 0x67, 0xe2, 0x0e, 0xbb,
-	0x33, 0x51, 0x67, 0x51, 0x84, 0x5e, 0x7a, 0xee, 0xb6, 0xa1, 0xc8, 0x7f, 0xac, 0xa8, 0xfb, 0x34,
-	0x59, 0xe7, 0xce, 0x4d, 0xc5, 0x45, 0x38, 0xe0, 0xf5, 0x27, 0x86, 0xfc, 0x13, 0xf7, 0x60, 0xf2,
-	0x87, 0xba, 0x07, 0x73, 0x11, 0x46, 0xa8, 0xdd, 0xed, 0xf0, 0x5c, 0x83, 0x22, 0x3f, 0x39, 0x46,
-	0x96, 0xed, 0x6e, 0x27, 0xde, 0x18, 0x4e, 0x62, 0xac, 0x00, 0xd3, 0x2b, 0x56, 0x17, 0xc9, 0x4b,
-	0x50, 0xf0, 0xe5, 0x0e, 0x28, 0x3b, 0xf7, 0x13, 0x3a, 0xbc, 0x2b, 0xe1, 0x77, 0xf7, 0x67, 0x27,
-	0x38, 0xb1, 0x02, 0xa0, 0x2e, 0x62, 0x7c, 0x65, 0x04, 0x22, 0xd6, 0xf4, 0x21, 0x86, 0xa9, 0x9e,
-	0x70, 0x90, 0xbc, 0x9a, 0xd5, 0x41, 0xa2, 0xbc, 0x0e, 0x62, 0x7e, 0xc7, 0x7d, 0x22, 0xac, 0x1e,
-	0x2d, 0xda, 0x76, 0xe5, 0xb8, 0xea, 0x7a, 0x5c, 0xa6, 0x6d, 0x17, 0x39, 0x46, 0xa7, 0x22, 0x8c,
-	0xf4, 0x4d, 0x45, 0xb8, 0x0d, 0xf9, 0xa6, 0xd9, 0x6d, 0x52, 0xe9, 0x84, 0xcf, 0xe6, 0xe4, 0xe2,
-	0x51, 0x55, 0xe1, 0xe4, 0xe2, 0x3f, 0x51, 0xf0, 0x64, 0x73, 0xa9, 0xa5, 0xfc, 0xc6, 0xd2, 0x10,
-	0xcc, 0x36, 0x97, 0xb4, 0xf7, 0x59, 0xcc, 0x25, 0xfd, 0x89, 0x21, 0x7f, 0xa6, 0xa9, 0xd5, 0x44,
-	0x82, 0xaa, 0x8c, 0x08, 0x7e, 0x3e, 0x63, 0x46, 0x05, 0xe7, 0x21, 0x34, 0x35, 0xf9, 0x81, 0x8a,
-	0xb3, 0x31, 0x0f, 0xa5, 0xc8, 0x55, 0x10, 0xd6, 0xbf, 0x3a, 0xfd, 0x32, 0xd2, 0xbf, 0x4b, 0x66,
-	0x60, 0x22, 0xc7, 0x18, 0xdf, 0x1c, 0x06, 0xad, 0x17, 0x47, 0x73, 0x25, 0xcc, 0x5a, 0x24, 0xcf,
-	0x3e, 0x96, 0xb8, 0xe5, 0xd8, 0x28, 0xb1, 0xcc, 0x7a, 0xec, 0x50, 0xaf, 0xa9, 0x4f, 0x6f, 0xb9,
-	0xe6, 0xb5, 0xf5, 0xb8, 0x16, 0x45, 0x62, 0x9c, 0x96, 0x9d, 0x9d, 0x1d, 0xd3, 0xb6, 0x1a, 0xd4,
-	0x0f, 0x92, 0xc1, 0xad, 0x35, 0x09, 0x47, 0x4d, 0x41, 0x56, 0x61, 0xda, 0xa7, 0xc1, 0xfa, 0xae,
-	0x4d, 0x3d, 0x9d, 0x50, 0x26, 0x33, 0x0c, 0x1f, 0x55, 0xc6, 0x42, 0x35, 0x49, 0x80, 0xbd, 0x65,
-	0xb8, 0x25, 0x2e, 0x92, 0xfb, 0x74, 0xa2, 0x96, 0x5c, 0xd8, 0xa1, 0x25, 0x9e, 0xc0, 0x63, 0x4f,
-	0x09, 0xc6, 0xa5, 0x61, 0x5a, 0xed, 0xae, 0x47, 0x43, 0x2e, 0xa3, 0x71, 0x2e, 0x2b, 0x09, 0x3c,
-	0xf6, 0x94, 0xe0, 0x71, 0xf1, 0xb6, 0xd9, 0xf4, 0xcb, 0x63, 0x91, 0xb8, 0x38, 0x03, 0xa0, 0x80,
-	0x1b, 0x1f, 0x0e, 0xc1, 0x04, 0xd2, 0xc0, 0xdb, 0xd3, 0xbd, 0xf6, 0x3a, 0xe4, 0xdb, 0x3c, 0xd9,
-	0x30, 0x97, 0xf1, 0x56, 0x03, 0x17, 0x22, 0xb2, 0x11, 0x05, 0x27, 0xb2, 0x04, 0x25, 0x8f, 0xc9,
-	0x90, 0xa9, 0xa0, 0x62, 0x0c, 0x8d, 0xf0, 0xca, 0x9b, 0x46, 0xdd, 0x8d, 0x7f, 0x62, 0xb4, 0x18,
-	0xb1, 0x61, 0x6c, 0x4b, 0x5c, 0xd4, 0x90, 0xca, 0x4a, 0xb6, 0xe9, 0x2d, 0x2f, 0x7b, 0xf0, 0x53,
-	0x40, 0xdd, 0xfc, 0xb8, 0x1b, 0xfe, 0x44, 0x25, 0xc4, 0xf8, 0x30, 0x07, 0x10, 0xde, 0x75, 0x23,
-	0xdb, 0x50, 0xf0, 0x9f, 0x8b, 0xa9, 0x89, 0x19, 0xb3, 0xa8, 0x24, 0x93, 0x48, 0x7e, 0x8d, 0x84,
-	0xa0, 0x16, 0x70, 0x3f, 0x1d, 0xf1, 0xe3, 0x61, 0xd0, 0xa5, 0x1e, 0x90, 0x8a, 0xf8, 0x14, 0x53,
-	0x2f, 0x9a, 0xe1, 0x15, 0x14, 0x4d, 0x87, 0x1c, 0x8a, 0x12, 0xcb, 0x54, 0x0c, 0x15, 0xe4, 0x97,
-	0xab, 0x85, 0xab, 0x18, 0x2a, 0x1f, 0x00, 0x35, 0x36, 0x4d, 0xe9, 0xcc, 0x3f, 0x34, 0xa5, 0x73,
-	0xf4, 0x81, 0x28, 0x9d, 0xcc, 0x0e, 0xf1, 0x9c, 0x36, 0x5d, 0xc0, 0xeb, 0xd2, 0x45, 0xa5, 0xed,
-	0x10, 0x14, 0x60, 0x54, 0x78, 0xf2, 0x3c, 0x94, 0xba, 0x3e, 0xad, 0x2e, 0x5d, 0x5d, 0xf4, 0x68,
-	0xdd, 0x97, 0xf9, 0x13, 0xda, 0x69, 0x79, 0x23, 0x44, 0x61, 0x94, 0xce, 0xf8, 0xa5, 0x1c, 0x9c,
-	0xa8, 0xd6, 0x3c, 0xcb, 0x0d, 0xf4, 0xe6, 0x79, 0x9d, 0x5f, 0xf1, 0x09, 0x4c, 0xb6, 0x14, 0xe5,
-	0x54, 0x7c, 0xbc, 0x4f, 0xe8, 0x58, 0x10, 0xc5, 0x2e, 0xaf, 0x09, 0x10, 0x86, 0x2c, 0xd8, 0x50,
-	0x8b, 0xed, 0x39, 0x39, 0x25, 0xaa, 0x1c, 0x8a, 0x12, 0x6b, 0xdc, 0x81, 0xa9, 0x2a, 0xed, 0x98,
-	0x6e, 0x8b, 0xa7, 0x72, 0x08, 0x2f, 0xf2, 0x3c, 0x14, 0x7d, 0x05, 0x4b, 0xde, 0x94, 0xd3, 0xc4,
-	0x18, 0xd2, 0x90, 0x27, 0x85, 0x93, 0x5b, 0xc5, 0x80, 0x8b, 0xe2, 0x98, 0x11, 0x9e, 0x71, 0x1f,
-	0x15, 0xce, 0xd8, 0x85, 0xf1, 0xb0, 0x38, 0x6d, 0x90, 0x26, 0x4c, 0xd6, 0x22, 0x91, 0x70, 0xa4,
-	0x8d, 0x23, 0x5f, 0x6e, 0xe2, 0x59, 0x00, 0x8b, 0x71, 0x26, 0x98, 0xe4, 0x6a, 0xfc, 0x6b, 0x0e,
-	0x26, 0xb5, 0x64, 0x69, 0x6d, 0xba, 0x49, 0xc7, 0xfc, 0x72, 0xc6, 0xfc, 0xc9, 0x78, 0xe7, 0xdd,
-	0xc3, 0x39, 0xef, 0x26, 0x9d, 0xf3, 0xc7, 0x2d, 0xb1, 0xc7, 0x4c, 0xfe, 0xfd, 0x21, 0x28, 0xe8,
-	0x04, 0xce, 0xd7, 0x21, 0xcf, 0xcf, 0xfb, 0xc1, 0xce, 0x00, 0xae, 0x3b, 0xa0, 0xe0, 0xc4, 0x58,
-	0x72, 0x4f, 0x67, 0xe6, 0xcb, 0x72, 0x45, 0x61, 0x3a, 0x98, 0x5e, 0x80, 0x82, 0x13, 0xb9, 0x0a,
-	0xc3, 0xd4, 0xae, 0xcb, 0xc3, 0xe0, 0xe8, 0x0c, 0xf9, 0x5d, 0xd0, 0x65, 0xbb, 0x8e, 0x8c, 0x0b,
-	0xbf, 0x05, 0xe4, 0x78, 0x1d, 0x33, 0x90, 0xaa, 0x62, 0x78, 0x0b, 0x88, 0x43, 0x51, 0x62, 0x8d,
-	0x5f, 0x1d, 0x82, 0xd1, 0x6a, 0x77, 0x8b, 0x1d, 0x6b, 0xbf, 0x95, 0x83, 0x93, 0x49, 0x9f, 0x77,
-	0x38, 0x31, 0x2f, 0x1f, 0xcb, 0x2d, 0x35, 0xa4, 0x8d, 0xca, 0x63, 0xb2, 0x2a, 0x27, 0x53, 0x90,
-	0x98, 0x56, 0x03, 0xa6, 0x76, 0x86, 0xe9, 0xda, 0x43, 0xc7, 0x92, 0xae, 0x3d, 0xd1, 0x2f, 0x55,
-	0xdb, 0xf8, 0xab, 0x11, 0x00, 0xd1, 0x23, 0xeb, 0x6e, 0x70, 0x18, 0xdb, 0xe0, 0x05, 0x18, 0x57,
-	0xaf, 0x72, 0x5c, 0x0f, 0x03, 0x3d, 0xda, 0x13, 0xb7, 0x1a, 0xc1, 0x61, 0x8c, 0x92, 0x59, 0x4b,
-	0xd4, 0x0e, 0xbc, 0x3d, 0x71, 0xd8, 0x8d, 0xc4, 0xad, 0xa5, 0x65, 0x8d, 0xc1, 0x08, 0x15, 0x99,
-	0x8b, 0xf9, 0x02, 0x44, 0x4a, 0xf7, 0x89, 0x7b, 0xd8, 0xf1, 0x2f, 0xc2, 0x84, 0xfe, 0x5a, 0xb1,
-	0xda, 0x2a, 0x4b, 0x46, 0xab, 0x9c, 0x1b, 0x51, 0x24, 0xc6, 0x69, 0xc9, 0xcb, 0x70, 0x22, 0x9e,
-	0x7b, 0x29, 0x8f, 0x85, 0x33, 0xb2, 0xf4, 0x89, 0x78, 0xca, 0x26, 0x26, 0xa8, 0xd9, 0x2c, 0xac,
-	0x7b, 0x7b, 0xd8, 0xb5, 0xe5, 0xf9, 0xa0, 0x67, 0xe1, 0x12, 0x87, 0xa2, 0xc4, 0xb2, 0x2e, 0x64,
-	0x25, 0xa9, 0x27, 0xe0, 0x3c, 0x6e, 0x51, 0x08, 0xbb, 0xb0, 0x1a, 0xc1, 0x61, 0x8c, 0x92, 0x49,
-	0x90, 0x86, 0x19, 0xc4, 0xe7, 0x79, 0xc2, 0xb4, 0x72, 0xe1, 0x84, 0x13, 0xd7, 0x85, 0x45, 0x40,
-	0xe2, 0x33, 0x87, 0xbc, 0x04, 0x12, 0x2b, 0x2b, 0x92, 0x1b, 0x13, 0xaa, 0x73, 0x82, 0xbf, 0x71,
-	0x12, 0xa6, 0xab, 0x5d, 0xd7, 0x6d, 0x5b, 0xb4, 0xae, 0x4d, 0x65, 0xe3, 0x15, 0x98, 0x94, 0xd7,
-	0x7a, 0xf4, 0xf1, 0x77, 0xa4, 0x5b, 0xba, 0xc6, 0x3e, 0xdb, 0xcf, 0xe3, 0x3e, 0x44, 0x62, 0x27,
-	0x0f, 0xad, 0xac, 0xfe, 0x8d, 0xe8, 0x11, 0x25, 0x56, 0x48, 0xea, 0x99, 0x77, 0x5b, 0x45, 0x8d,
-	0x07, 0xc9, 0xa3, 0xe0, 0x81, 0x56, 0xb1, 0x0b, 0x46, 0xa3, 0xcd, 0xc6, 0x4f, 0x72, 0x90, 0xee,
-	0x9e, 0x25, 0xef, 0xf4, 0x36, 0x73, 0x69, 0xb0, 0x66, 0x4a, 0x97, 0x70, 0xff, 0x96, 0x9a, 0xf1,
-	0x96, 0xbe, 0x9a, 0xbd, 0xa5, 0x52, 0x54, 0x6f, 0x7b, 0xff, 0x2d, 0x07, 0xa5, 0xcd, 0xcd, 0x6b,
-	0xda, 0x5e, 0x41, 0x38, 0xe3, 0x8b, 0x8b, 0x59, 0x0b, 0x8d, 0x80, 0x7a, 0x8b, 0x4e, 0xc7, 0x6d,
-	0x53, 0x3d, 0x39, 0xe4, 0x6d, 0xa9, 0x6a, 0x2a, 0x05, 0xf6, 0x29, 0x49, 0xae, 0xc0, 0xc9, 0x28,
-	0x46, 0x9a, 0x6b, 0xbc, 0x51, 0x79, 0x99, 0x40, 0xdb, 0x8b, 0xc6, 0xb4, 0x32, 0x49, 0x56, 0xd2,
-	0x66, 0x93, 0xaf, 0xb8, 0xf4, 0xb0, 0x92, 0x68, 0x4c, 0x2b, 0x63, 0xac, 0x43, 0x29, 0xf2, 0x3e,
-	0x10, 0x79, 0x15, 0xa6, 0x6a, 0x4e, 0xc7, 0xf5, 0xa8, 0xef, 0x5b, 0x8e, 0x7d, 0x8d, 0xee, 0xd0,
-	0xb6, 0x6c, 0x32, 0xbf, 0x76, 0xb5, 0x98, 0xc0, 0x61, 0x0f, 0xb5, 0xf1, 0x27, 0x8f, 0x81, 0xbe,
-	0xec, 0xf3, 0x8b, 0x2b, 0x43, 0x99, 0xc2, 0xee, 0x35, 0x1d, 0x7e, 0xcb, 0x0f, 0x1e, 0x7e, 0xd3,
-	0x7b, 0x71, 0x22, 0x04, 0xd7, 0x0c, 0x43, 0x70, 0xa3, 0xc7, 0x10, 0x82, 0xd3, 0x4a, 0x60, 0x4f,
-	0x18, 0xee, 0xab, 0x39, 0x18, 0xb7, 0x9d, 0x3a, 0x55, 0x3a, 0x33, 0x77, 0x1b, 0x94, 0x2e, 0xad,
-	0x0f, 0xd4, 0x89, 0x22, 0xb6, 0x24, 0x39, 0x8a, 0xe8, 0xab, 0x3e, 0xa8, 0xa2, 0x28, 0x8c, 0x89,
-	0x26, 0x2b, 0x50, 0x30, 0x1b, 0x0d, 0xcb, 0xb6, 0x82, 0x3d, 0x79, 0x6b, 0xe9, 0x5c, 0x9a, 0xaa,
-	0xbf, 0x20, 0x69, 0x84, 0xd9, 0xa9, 0xbe, 0x50, 0x97, 0x65, 0x76, 0xbb, 0xbe, 0x24, 0x5c, 0x1c,
-	0xc0, 0x6e, 0x57, 0xc9, 0x5a, 0x11, 0x27, 0x92, 0xba, 0xd0, 0x18, 0xde, 0x19, 0x36, 0x60, 0x54,
-	0x44, 0x66, 0xe5, 0xbb, 0x3e, 0xdc, 0x69, 0x29, 0xa2, 0xb6, 0x28, 0x31, 0xa4, 0xa9, 0x3c, 0xeb,
-	0x25, 0xde, 0xb9, 0x95, 0xcc, 0x71, 0x09, 0xed, 0xac, 0x4f, 0x77, 0xad, 0x93, 0xd7, 0xa2, 0x76,
-	0xe2, 0xf8, 0x61, 0xec, 0xc4, 0x89, 0xbe, 0x36, 0x62, 0x13, 0x46, 0x7d, 0x6e, 0x85, 0xf2, 0x70,
-	0x74, 0xe9, 0xd2, 0x62, 0xb6, 0x83, 0x24, 0x66, 0xc8, 0x8a, 0xde, 0x11, 0x30, 0x94, 0xec, 0x89,
-	0x03, 0x05, 0x15, 0x33, 0x97, 0x11, 0xed, 0x6c, 0xa6, 0x4f, 0xd2, 0xe5, 0xa8, 0xee, 0xae, 0x08,
-	0x28, 0x6a, 0x21, 0xe4, 0x36, 0x0c, 0xd7, 0xcd, 0xa6, 0x8c, 0x6d, 0xbf, 0x9a, 0xf9, 0x32, 0x96,
-	0x12, 0xc3, 0xad, 0x8a, 0xa5, 0x85, 0x55, 0x64, 0x5c, 0xc9, 0x76, 0x78, 0x59, 0x79, 0x6a, 0x90,
-	0x03, 0x38, 0xae, 0x02, 0x09, 0x9b, 0xb9, 0xe7, 0xba, 0xf3, 0x32, 0x8c, 0xed, 0x38, 0xed, 0x6e,
-	0x47, 0x06, 0xc5, 0x4b, 0x97, 0x66, 0xd2, 0x46, 0xfb, 0x26, 0x27, 0x09, 0x37, 0x01, 0xf1, 0xed,
-	0xa3, 0x2a, 0x4b, 0xbe, 0x94, 0x83, 0x13, 0x6c, 0xe9, 0xe8, 0x79, 0xe0, 0x97, 0xc9, 0x00, 0x33,
-	0xf5, 0x86, 0xcf, 0x8e, 0x56, 0x35, 0xc3, 0xb4, 0x22, 0x7c, 0x25, 0x26, 0x01, 0x13, 0x12, 0x89,
-	0x0b, 0x05, 0xdf, 0xaa, 0xd3, 0x9a, 0xe9, 0xf9, 0xe5, 0x93, 0xc7, 0x26, 0x3d, 0x74, 0xb9, 0x49,
-	0xde, 0xa8, 0xa5, 0x90, 0xff, 0xcf, 0x1f, 0xdb, 0x91, 0x0f, 0x65, 0xc9, 0xe7, 0xd1, 0x4e, 0x1d,
-	0xe7, 0xf3, 0x68, 0x27, 0xc5, 0x4b, 0x3b, 0x31, 0x09, 0x98, 0x14, 0x49, 0xbe, 0x98, 0x83, 0xd3,
-	0xe2, 0xd6, 0x72, 0xf2, 0xca, 0xfa, 0xe9, 0x8c, 0x76, 0x2e, 0x0f, 0xe0, 0x2f, 0xa4, 0xb1, 0xc4,
-	0x74, 0x49, 0xe4, 0x7d, 0x98, 0xf0, 0xa2, 0x3e, 0x61, 0x9e, 0x2b, 0x91, 0x75, 0x04, 0x62, 0xde,
-	0x65, 0x91, 0xa7, 0x11, 0x03, 0x61, 0x5c, 0x16, 0x79, 0x16, 0x4a, 0xae, 0xdc, 0xdc, 0x2c, 0xbf,
-	0xc3, 0xd3, 0x2c, 0x86, 0xc5, 0x21, 0xbc, 0x11, 0x82, 0x31, 0x4a, 0x43, 0x6e, 0x40, 0x29, 0x70,
-	0xda, 0xd4, 0x93, 0x49, 0xc1, 0x65, 0x3e, 0x5f, 0xce, 0xa7, 0x4d, 0xfe, 0x4d, 0x4d, 0x16, 0xba,
+	// 7414 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x5b, 0x6c, 0x5c, 0xd7,
+	0x75, 0xa8, 0x87, 0xe4, 0x90, 0x33, 0x6b, 0x48, 0x91, 0xdc, 0x7a, 0x8d, 0x29, 0x59, 0x54, 0x8e,
+	0x63, 0xc3, 0xba, 0xd7, 0x21, 0x63, 0x39, 0xbe, 0xd7, 0x89, 0xe3, 0x07, 0x87, 0x2f, 0xc9, 0x12,
+	0x1f, 0x5e, 0x43, 0x49, 0x37, 0x96, 0x61, 0xdf, 0xc3, 0x99, 0xcd, 0x99, 0x23, 0xce, 0x9c, 0x73,
+	0x7c, 0xce, 0x19, 0xd2, 0xb4, 0x5b, 0xd4, 0x09, 0x1a, 0xa4, 0x69, 0x1a, 0xb4, 0x45, 0x91, 0xd6,
+	0x45, 0x50, 0xb4, 0xfd, 0x08, 0xfa, 0x93, 0xa2, 0x1f, 0x45, 0xfb, 0x53, 0x20, 0x1f, 0x45, 0x5b,
+	0xa4, 0x01, 0x8a, 0xa6, 0x5f, 0x0d, 0xd0, 0x80, 0x89, 0xd9, 0x1f, 0x07, 0x6d, 0x9a, 0xaf, 0xa2,
+	0x80, 0x50, 0xa0, 0xc5, 0x7e, 0x9e, 0xc7, 0x9c, 0x91, 0xc8, 0x33, 0x94, 0x10, 0x34, 0xf9, 0x9b,
+	0xb3, 0xd6, 0xda, 0x6b, 0xed, 0xf7, 0x5e, 0xaf, 0xbd, 0x07, 0xe6, 0x1b, 0x56, 0xd0, 0xec, 0x6c,
+	0xce, 0xd4, 0x9c, 0xf6, 0xac, 0xe9, 0x35, 0x1c, 0xd7, 0x73, 0xee, 0xf0, 0x1f, 0xb3, 0xee, 0x76,
+	0x63, 0xd6, 0x74, 0x2d, 0x7f, 0x76, 0xd7, 0xf1, 0xb6, 0xb7, 0x5a, 0xce, 0xee, 0xec, 0xce, 0x33,
+	0x66, 0xcb, 0x6d, 0x9a, 0xcf, 0xcc, 0x36, 0xa8, 0x4d, 0x3d, 0x33, 0xa0, 0xf5, 0x19, 0xd7, 0x73,
+	0x02, 0x87, 0x3c, 0x1b, 0x32, 0x99, 0x51, 0x4c, 0xf8, 0x8f, 0x19, 0x77, 0xbb, 0x31, 0xc3, 0x98,
+	0xcc, 0x28, 0x26, 0x33, 0x8a, 0xc9, 0xd4, 0x27, 0x22, 0x92, 0x1b, 0x0e, 0x13, 0xc8, 0x78, 0x6d,
+	0x76, 0xb6, 0xf8, 0x17, 0xff, 0xe0, 0xbf, 0x84, 0x8c, 0x29, 0x63, 0xfb, 0x79, 0x7f, 0xc6, 0x72,
+	0x58, 0x95, 0x66, 0x6b, 0x8e, 0x47, 0x67, 0x77, 0xba, 0xea, 0x31, 0x75, 0x29, 0x42, 0xe3, 0x3a,
+	0x2d, 0xab, 0xb6, 0x37, 0xbb, 0xf3, 0xcc, 0x26, 0x0d, 0xba, 0xab, 0x3c, 0xf5, 0xa9, 0x90, 0xb4,
+	0x6d, 0xd6, 0x9a, 0x96, 0x4d, 0xbd, 0xbd, 0xb0, 0xc9, 0x6d, 0x1a, 0x98, 0x69, 0x02, 0x66, 0x7b,
+	0x95, 0xf2, 0x3a, 0x76, 0x60, 0xb5, 0x69, 0x57, 0x81, 0xff, 0x73, 0xbf, 0x02, 0x7e, 0xad, 0x49,
+	0xdb, 0x66, 0x57, 0xb9, 0x67, 0x7b, 0x95, 0xeb, 0x04, 0x56, 0x6b, 0xd6, 0xb2, 0x03, 0x3f, 0xf0,
+	0x92, 0x85, 0x8c, 0x45, 0x18, 0x9e, 0x6b, 0x3b, 0x1d, 0x3b, 0x20, 0x2f, 0x40, 0x7e, 0xc7, 0x6c,
+	0x75, 0x68, 0x39, 0x77, 0x31, 0xf7, 0x54, 0xb1, 0xf2, 0xc4, 0xb7, 0xf7, 0xa7, 0x1f, 0x39, 0xd8,
+	0x9f, 0xce, 0xdf, 0x64, 0xc0, 0xbb, 0xfb, 0xd3, 0xa7, 0xa8, 0x5d, 0x73, 0xea, 0x96, 0xdd, 0x98,
+	0xbd, 0xe3, 0x3b, 0xf6, 0xcc, 0x6a, 0xa7, 0xbd, 0x49, 0x3d, 0x14, 0x65, 0x8c, 0x6f, 0x0e, 0xc0,
+	0xf8, 0x9c, 0x57, 0x6b, 0x5a, 0x3b, 0xb4, 0x1a, 0x30, 0xfe, 0x8d, 0x3d, 0x72, 0x1b, 0x06, 0x03,
+	0xd3, 0xe3, 0xec, 0x4a, 0x97, 0x5f, 0x99, 0xc9, 0x30, 0xde, 0x33, 0x1b, 0xa6, 0xa7, 0xd8, 0x55,
+	0x46, 0x0e, 0xf6, 0xa7, 0x07, 0x37, 0x4c, 0x0f, 0x19, 0x57, 0xf2, 0x16, 0x0c, 0xd9, 0x8e, 0x4d,
+	0xcb, 0x03, 0x9c, 0xfb, 0x5c, 0x26, 0xee, 0xab, 0x8e, 0xad, 0x6b, 0x5b, 0x29, 0x1c, 0xec, 0x4f,
+	0x0f, 0x31, 0x08, 0x72, 0xc6, 0xac, 0xf6, 0xef, 0x5a, 0x6e, 0x79, 0xb0, 0x8f, 0xda, 0xbf, 0x6e,
+	0xb9, 0xf1, 0xda, 0xbf, 0x6e, 0xb9, 0xc8, 0xb8, 0x1a, 0x3f, 0xc9, 0x41, 0x71, 0xce, 0x6b, 0x74,
+	0xda, 0xd4, 0x0e, 0x7c, 0xe2, 0x01, 0xb8, 0xa6, 0x67, 0xb6, 0x69, 0x40, 0x3d, 0xbf, 0x9c, 0xbb,
+	0x38, 0xf8, 0x54, 0xe9, 0xf2, 0x4b, 0x99, 0x24, 0xae, 0x2b, 0x36, 0x15, 0x22, 0x87, 0x0f, 0x34,
+	0xc8, 0xc7, 0x88, 0x14, 0x62, 0x43, 0xd1, 0xf4, 0x02, 0x6b, 0xcb, 0xac, 0x05, 0x7e, 0x79, 0x80,
+	0x8b, 0x7c, 0x31, 0x93, 0xc8, 0x39, 0xc9, 0xa5, 0x32, 0x29, 0x25, 0x16, 0x15, 0xc4, 0xc7, 0x50,
+	0x84, 0xf1, 0x77, 0x43, 0x50, 0x50, 0x08, 0x72, 0x11, 0x86, 0x6c, 0xb3, 0xad, 0x66, 0xda, 0xa8,
+	0x2c, 0x38, 0xb4, 0x6a, 0xb6, 0x59, 0xef, 0x9b, 0x6d, 0xca, 0x28, 0x5c, 0x33, 0x68, 0xf2, 0xe1,
+	0x8d, 0x50, 0xac, 0x9b, 0x41, 0x13, 0x39, 0x86, 0x9c, 0x87, 0xa1, 0xb6, 0x53, 0xa7, 0x7c, 0x80,
+	0xf2, 0x62, 0xf4, 0x56, 0x9c, 0x3a, 0x45, 0x0e, 0x65, 0xe5, 0xb7, 0x3c, 0xa7, 0x5d, 0x1e, 0x8a,
+	0x97, 0x5f, 0xf2, 0x9c, 0x36, 0x72, 0x0c, 0xf9, 0x4a, 0x0e, 0x26, 0x54, 0xf5, 0xae, 0x3b, 0x35,
+	0x33, 0xb0, 0x1c, 0xbb, 0x9c, 0xe7, 0xa3, 0xbd, 0xd8, 0x57, 0x47, 0x28, 0x66, 0x95, 0xb2, 0x94,
+	0x3a, 0x91, 0xc4, 0x60, 0x97, 0x60, 0x72, 0x19, 0xa0, 0xd1, 0x72, 0x36, 0xcd, 0x16, 0xeb, 0x83,
+	0xf2, 0x30, 0xaf, 0xb5, 0x1e, 0xc2, 0x65, 0x8d, 0xc1, 0x08, 0x15, 0xd9, 0x86, 0x11, 0x53, 0x2c,
+	0xb9, 0xf2, 0x08, 0xaf, 0xf7, 0x42, 0xc6, 0x7a, 0xc7, 0x96, 0x6d, 0xa5, 0x74, 0xb0, 0x3f, 0x3d,
+	0x22, 0x81, 0xa8, 0x24, 0x90, 0xa7, 0xa1, 0xe0, 0xb8, 0xac, 0xaa, 0x66, 0xab, 0x5c, 0xb8, 0x98,
+	0x7b, 0xaa, 0x50, 0x99, 0x90, 0xd5, 0x2b, 0xac, 0x49, 0x38, 0x6a, 0x0a, 0x72, 0x09, 0x46, 0xfc,
+	0xce, 0x26, 0x1b, 0xad, 0x72, 0x91, 0xb7, 0x65, 0x5c, 0x12, 0x8f, 0x54, 0x05, 0x18, 0x15, 0x9e,
+	0x3c, 0x07, 0x25, 0x8f, 0xd6, 0x3a, 0x9e, 0x4f, 0xd9, 0xf0, 0x95, 0x81, 0xf3, 0x3e, 0x29, 0xc9,
+	0x4b, 0x18, 0xa2, 0x30, 0x4a, 0x67, 0xfc, 0xc3, 0x30, 0x74, 0xf5, 0x2b, 0x79, 0x06, 0x4a, 0xb2,
+	0xbe, 0xd7, 0x9d, 0x86, 0xcf, 0xa7, 0x57, 0xa1, 0x32, 0xce, 0xf8, 0xcc, 0x85, 0x60, 0x8c, 0xd2,
+	0x90, 0x5b, 0x30, 0xe0, 0x3f, 0x2b, 0x77, 0x91, 0x97, 0x33, 0xf5, 0x5f, 0xf5, 0x59, 0xbd, 0x04,
+	0x86, 0x0f, 0xf6, 0xa7, 0x07, 0xaa, 0xcf, 0xe2, 0x80, 0xff, 0x2c, 0xdb, 0x3f, 0x1a, 0x56, 0xd0,
+	0xd7, 0xfe, 0xb1, 0x6c, 0x05, 0x9a, 0x35, 0xdf, 0x3f, 0x96, 0xad, 0x00, 0x19, 0x57, 0xb6, 0xfb,
+	0x35, 0x83, 0xc0, 0xe5, 0xd3, 0x3b, 0xeb, 0xee, 0x77, 0x65, 0x63, 0x63, 0x5d, 0xb3, 0xe7, 0xeb,
+	0x87, 0x41, 0x90, 0x33, 0x26, 0xef, 0xb1, 0x9e, 0x14, 0x38, 0xc7, 0xdb, 0x93, 0xeb, 0xe2, 0x4a,
+	0x5f, 0xeb, 0xc2, 0xf1, 0xf6, 0xb4, 0x38, 0x39, 0x26, 0x1a, 0x81, 0x51, 0x69, 0xbc, 0x75, 0xf5,
+	0x2d, 0x9f, 0x2f, 0x83, 0xcc, 0xad, 0x5b, 0x58, 0xaa, 0x26, 0x5a, 0xb7, 0xb0, 0x54, 0x45, 0xce,
+	0x98, 0x8d, 0x8d, 0x67, 0xee, 0xca, 0x55, 0x93, 0x6d, 0x6c, 0xd0, 0xdc, 0x8d, 0x8f, 0x0d, 0x9a,
+	0xbb, 0xc8, 0xb8, 0x32, 0xe6, 0x8e, 0xef, 0xf3, 0x45, 0x92, 0x95, 0xf9, 0x5a, 0xb5, 0x1a, 0x67,
+	0xbe, 0x56, 0xad, 0x22, 0xe3, 0xca, 0x67, 0x55, 0xcd, 0xe7, 0x8b, 0x2a, 0xf3, 0xac, 0x9a, 0x4f,
+	0x30, 0x5f, 0x9e, 0xaf, 0x22, 0xe3, 0x6a, 0xbc, 0x0d, 0xa7, 0x15, 0x06, 0xa9, 0xeb, 0xf8, 0x16,
+	0x1f, 0x1a, 0xba, 0x45, 0x66, 0xa1, 0x58, 0x73, 0xec, 0x2d, 0xab, 0xb1, 0x62, 0xba, 0x72, 0xd3,
+	0xd6, 0xbb, 0xfd, 0xbc, 0x42, 0x60, 0x48, 0x43, 0x1e, 0x83, 0xc1, 0x6d, 0xba, 0x27, 0x77, 0xef,
+	0x92, 0x24, 0x1d, 0xbc, 0x46, 0xf7, 0x90, 0xc1, 0x3f, 0x53, 0xf8, 0xe0, 0x0f, 0xa6, 0x1f, 0x79,
+	0xff, 0xfb, 0x17, 0x1f, 0x31, 0xbe, 0x31, 0x00, 0xe7, 0x52, 0x65, 0x56, 0x03, 0x33, 0xe8, 0xf8,
+	0xe4, 0xf7, 0x73, 0x70, 0xda, 0x4c, 0xc3, 0x4b, 0xb5, 0xe2, 0xd5, 0xbe, 0xa6, 0x64, 0x8c, 0x63,
+	0xe5, 0x31, 0x59, 0xcf, 0xf4, 0x4e, 0xc0, 0xf4, 0x7a, 0xb0, 0xbe, 0x61, 0x27, 0x96, 0xef, 0x9a,
+	0x35, 0x2a, 0x1b, 0xac, 0xfb, 0x66, 0x55, 0x21, 0x30, 0xa4, 0x61, 0x7b, 0x63, 0x9d, 0x6e, 0x99,
+	0x9d, 0x96, 0xd8, 0x1c, 0x0a, 0xe1, 0xde, 0xb8, 0x20, 0xc0, 0xa8, 0xf0, 0x91, 0x7e, 0xfa, 0x56,
+	0x0e, 0x4e, 0xa6, 0x2c, 0x24, 0xd6, 0xd1, 0x1d, 0xaf, 0x25, 0xc7, 0x44, 0x77, 0xf4, 0x0d, 0xbc,
+	0x8e, 0x0c, 0x4e, 0xbe, 0x94, 0x83, 0xf1, 0xc8, 0xca, 0x9a, 0xeb, 0xc8, 0x23, 0x35, 0xfb, 0x59,
+	0x11, 0xe3, 0x55, 0x39, 0x2b, 0x25, 0x8e, 0x27, 0x10, 0x98, 0x94, 0x6a, 0xfc, 0x63, 0x0e, 0x92,
+	0x44, 0xc4, 0x84, 0x13, 0x1d, 0x9f, 0x7a, 0xac, 0x6b, 0xaa, 0xb4, 0xe6, 0xd1, 0x40, 0x0e, 0xea,
+	0x13, 0x33, 0x42, 0x93, 0x65, 0xb5, 0x98, 0x61, 0x7a, 0xfb, 0xcc, 0xce, 0x33, 0x33, 0x82, 0xe2,
+	0x1a, 0xdd, 0xab, 0xd2, 0x16, 0x65, 0x3c, 0x2a, 0xe4, 0x60, 0x7f, 0xfa, 0xc4, 0x8d, 0x18, 0x03,
+	0x4c, 0x30, 0x64, 0x22, 0x5c, 0xd3, 0xf7, 0x77, 0x1d, 0xaf, 0x2e, 0x45, 0x0c, 0x1c, 0x59, 0xc4,
+	0x7a, 0x8c, 0x01, 0x26, 0x18, 0x1a, 0x7f, 0x95, 0x83, 0x91, 0x8a, 0x59, 0xdb, 0x76, 0xb6, 0xb6,
+	0xd8, 0x29, 0x59, 0xef, 0x78, 0x42, 0x97, 0x10, 0x63, 0xa2, 0x4f, 0xc9, 0x05, 0x09, 0x47, 0x4d,
+	0x41, 0x36, 0x60, 0x58, 0x74, 0x87, 0xac, 0xd4, 0x27, 0x23, 0x95, 0xd2, 0x1a, 0x3c, 0x1f, 0x0e,
+	0xa6, 0xc1, 0xcf, 0x08, 0x0d, 0x7e, 0xe6, 0xaa, 0x1d, 0xac, 0x31, 0xad, 0xd8, 0xb2, 0x1b, 0x15,
+	0x38, 0xd8, 0x9f, 0x1e, 0x5e, 0xe2, 0x3c, 0x50, 0xf2, 0x62, 0x07, 0x6a, 0xdb, 0x7c, 0x47, 0x89,
+	0xe3, 0x73, 0xac, 0x18, 0x1e, 0xa8, 0x2b, 0x21, 0x0a, 0xa3, 0x74, 0xc6, 0x9b, 0x90, 0x9f, 0x37,
+	0x6b, 0x4d, 0x4a, 0x6e, 0x24, 0x17, 0x7b, 0xe9, 0xf2, 0x53, 0x69, 0xbd, 0xa5, 0x17, 0x7e, 0xb4,
+	0xc3, 0xc6, 0x7a, 0x6d, 0x09, 0xc6, 0x47, 0x39, 0x38, 0x3b, 0xdf, 0xea, 0xf8, 0x01, 0xf5, 0x6e,
+	0xc9, 0x79, 0xb5, 0x41, 0xdb, 0x6e, 0xcb, 0x0c, 0x28, 0xf9, 0xff, 0x50, 0x60, 0xd6, 0x53, 0xdd,
+	0x0c, 0x4c, 0x29, 0xb1, 0x77, 0x57, 0xf0, 0x99, 0xc9, 0xa8, 0x59, 0x1d, 0xd6, 0x36, 0xef, 0xd0,
+	0x5a, 0xb0, 0x42, 0x03, 0x33, 0xd4, 0x96, 0x42, 0x18, 0x6a, 0xae, 0x64, 0x1b, 0x86, 0x7c, 0x97,
+	0xd6, 0x64, 0x47, 0x5f, 0xcd, 0x34, 0xf9, 0x93, 0xd5, 0xae, 0xba, 0xb4, 0x16, 0xaa, 0x96, 0xec,
+	0x0b, 0xb9, 0x10, 0xe3, 0xdf, 0x72, 0x70, 0xae, 0x47, 0x53, 0xaf, 0x5b, 0x7e, 0x40, 0xde, 0xe8,
+	0x6a, 0xee, 0xcc, 0xe1, 0x9a, 0xcb, 0x4a, 0xf3, 0xc6, 0xea, 0x59, 0xa5, 0x20, 0x91, 0xa6, 0xbe,
+	0x0d, 0x79, 0x2b, 0xa0, 0x6d, 0xa5, 0xd5, 0x5f, 0xcf, 0xd4, 0xd6, 0x1e, 0xd5, 0xaf, 0x8c, 0x29,
+	0xab, 0xf0, 0x2a, 0x13, 0x81, 0x42, 0x92, 0xf1, 0xb7, 0x39, 0x60, 0x83, 0x5e, 0xb7, 0xa4, 0x16,
+	0x36, 0x14, 0xec, 0xb9, 0x4a, 0xbb, 0x57, 0xbb, 0xea, 0xd0, 0xc6, 0x9e, 0xcb, 0xcc, 0xc8, 0x31,
+	0x4d, 0xc8, 0x00, 0xc8, 0x49, 0xc9, 0x9b, 0x30, 0xec, 0xf3, 0x0d, 0x5f, 0xee, 0xa0, 0x4b, 0xb2,
+	0xd0, 0xb0, 0x38, 0x06, 0xee, 0xee, 0x4f, 0x1f, 0xca, 0xf6, 0x9e, 0xd1, 0xbc, 0x45, 0x39, 0x94,
+	0x5c, 0xd9, 0x9e, 0xdb, 0xa6, 0xbe, 0x6f, 0x36, 0xa8, 0x5c, 0x0f, 0x7a, 0xcf, 0x5d, 0x11, 0x60,
+	0x54, 0x78, 0xe3, 0x73, 0x00, 0xf3, 0x8e, 0x1d, 0x58, 0x76, 0x87, 0xae, 0xd9, 0xe4, 0x71, 0xc8,
+	0x53, 0xcf, 0x73, 0x3c, 0xa9, 0x4b, 0xea, 0xe6, 0x2f, 0x32, 0x20, 0x0a, 0x1c, 0x79, 0x92, 0xad,
+	0x63, 0xab, 0x45, 0xeb, 0xbc, 0xf6, 0x85, 0xca, 0x09, 0x55, 0xfb, 0x25, 0x0e, 0x45, 0x89, 0x35,
+	0x66, 0x60, 0x64, 0x9e, 0x99, 0xda, 0xd4, 0x63, 0x7c, 0xa3, 0xc6, 0xf6, 0x58, 0xcc, 0xd8, 0x56,
+	0x46, 0xf5, 0x77, 0x06, 0x60, 0x74, 0xde, 0x73, 0x6c, 0x35, 0x0a, 0x0f, 0x61, 0x9d, 0x34, 0x62,
+	0xeb, 0x24, 0x9b, 0x21, 0x14, 0xad, 0x72, 0xaf, 0x35, 0x42, 0x1c, 0x3d, 0xe2, 0x42, 0x43, 0x5e,
+	0xee, 0x5f, 0x14, 0x67, 0x17, 0x76, 0x7e, 0x7c, 0x0a, 0x18, 0xdf, 0xcb, 0xc1, 0x44, 0x94, 0xfc,
+	0x21, 0xac, 0xc4, 0xad, 0xf8, 0x4a, 0x9c, 0xeb, 0xbb, 0x89, 0x3d, 0x96, 0xdf, 0x7f, 0xe6, 0xe3,
+	0x4d, 0x63, 0xdd, 0xcc, 0xec, 0xdb, 0xd1, 0xdd, 0x08, 0x40, 0xb6, 0x6f, 0xae, 0xaf, 0xad, 0x8f,
+	0x0f, 0xe7, 0xc7, 0x65, 0x25, 0x46, 0xa3, 0xd0, 0xbb, 0x89, 0x6f, 0x8c, 0x09, 0x67, 0x07, 0xa3,
+	0x5f, 0x6b, 0xd2, 0x7a, 0xa7, 0xa5, 0x94, 0x24, 0xdd, 0x71, 0x55, 0x09, 0x47, 0x4d, 0x41, 0xde,
+	0x80, 0xc9, 0x9a, 0x63, 0xd7, 0x3a, 0x9e, 0x47, 0xed, 0xda, 0xde, 0x3a, 0xf7, 0xca, 0xc9, 0x85,
+	0x3b, 0x23, 0x8b, 0x4d, 0xce, 0x27, 0x09, 0xee, 0xa6, 0x01, 0xb1, 0x9b, 0x91, 0x30, 0x4e, 0x7d,
+	0x97, 0xda, 0x75, 0x6e, 0x3f, 0x15, 0xa2, 0xc6, 0x29, 0x07, 0xa3, 0xc2, 0x93, 0x1b, 0x70, 0xd6,
+	0x0f, 0x98, 0x2a, 0x63, 0x37, 0x16, 0xa8, 0x59, 0x6f, 0x59, 0x36, 0x53, 0x2c, 0x1c, 0xbb, 0xee,
+	0x73, 0x93, 0x68, 0xb0, 0x72, 0xee, 0x60, 0x7f, 0xfa, 0x6c, 0x35, 0x9d, 0x04, 0x7b, 0x95, 0x25,
+	0x6f, 0xc2, 0x94, 0xdf, 0xa9, 0xd5, 0xa8, 0xef, 0x6f, 0x75, 0x5a, 0xaf, 0x3a, 0x9b, 0xfe, 0x15,
+	0xcb, 0x67, 0x5a, 0xd1, 0x75, 0xab, 0x6d, 0x05, 0xdc, 0xec, 0xc9, 0x57, 0x2e, 0x1c, 0xec, 0x4f,
+	0x4f, 0x55, 0x7b, 0x52, 0xe1, 0x3d, 0x38, 0x10, 0x84, 0x33, 0x62, 0xcb, 0xe9, 0xe2, 0x3d, 0xc2,
+	0x79, 0x4f, 0x1d, 0xec, 0x4f, 0x9f, 0x59, 0x4a, 0xa5, 0xc0, 0x1e, 0x25, 0xd9, 0x08, 0x06, 0x56,
+	0x9b, 0xbe, 0xeb, 0xd8, 0x94, 0xdb, 0x36, 0x91, 0x11, 0xdc, 0x90, 0x70, 0xd4, 0x14, 0xe4, 0x4e,
+	0x38, 0xf9, 0xd8, 0xa2, 0x90, 0x06, 0xcb, 0xd1, 0x77, 0xab, 0x53, 0x07, 0xfb, 0xd3, 0x13, 0xb7,
+	0x22, 0x9c, 0xd8, 0xc2, 0xc2, 0x18, 0x6f, 0xe3, 0x6f, 0x06, 0x80, 0x74, 0x6f, 0x04, 0xe4, 0x1a,
+	0x0c, 0x9b, 0xb5, 0xc0, 0xda, 0xa1, 0xd2, 0xa3, 0xf6, 0x78, 0x9a, 0x12, 0x23, 0x44, 0x21, 0xdd,
+	0xa2, 0x6c, 0x86, 0xd0, 0x70, 0xf7, 0x98, 0xe3, 0x45, 0x51, 0xb2, 0x20, 0x0e, 0x4c, 0xb6, 0x4c,
+	0x3f, 0x50, 0x73, 0xb5, 0xce, 0x9a, 0x2c, 0x37, 0xc9, 0xff, 0x75, 0xb8, 0x46, 0xb1, 0x12, 0x95,
+	0xd3, 0x6c, 0xe6, 0x5e, 0x4f, 0x32, 0xc2, 0x6e, 0xde, 0xc4, 0x03, 0xa8, 0xa9, 0xc3, 0x8c, 0xed,
+	0x91, 0xd9, 0x7d, 0x82, 0xfa, 0x4c, 0x0c, 0xb7, 0x7e, 0x0d, 0xf2, 0x31, 0x22, 0xc5, 0xf8, 0xf1,
+	0x30, 0x8c, 0x2c, 0xcc, 0x2d, 0x6f, 0x98, 0xfe, 0xf6, 0x21, 0x5c, 0x74, 0x6c, 0x42, 0x48, 0xb5,
+	0x20, 0xb9, 0xa4, 0x95, 0xba, 0x80, 0x9a, 0x82, 0x38, 0x50, 0x34, 0x95, 0xc3, 0x53, 0x6e, 0xf9,
+	0x2f, 0x65, 0x34, 0x41, 0x24, 0x97, 0xa8, 0xc3, 0x51, 0x82, 0x30, 0x94, 0x41, 0x7c, 0x28, 0x29,
+	0xe1, 0xcc, 0x5c, 0x1c, 0xea, 0xc7, 0x0b, 0x1d, 0xf2, 0x11, 0x9e, 0x8b, 0x08, 0x00, 0xa3, 0x52,
+	0xc8, 0xa7, 0x60, 0xb4, 0x4e, 0xd9, 0xce, 0x41, 0xed, 0x9a, 0x45, 0xd9, 0x26, 0x31, 0xc8, 0xfa,
+	0x85, 0x6d, 0x96, 0x0b, 0x11, 0x38, 0xc6, 0xa8, 0xc8, 0x1d, 0x28, 0xee, 0x5a, 0x41, 0x93, 0xef,
+	0xe9, 0xe5, 0x61, 0x3e, 0xd4, 0x9f, 0xce, 0x54, 0x51, 0xc6, 0x21, 0xec, 0x96, 0x5b, 0x8a, 0x27,
+	0x86, 0xec, 0x99, 0xb9, 0xca, 0x3e, 0xb8, 0x57, 0x98, 0xef, 0x06, 0xc5, 0x78, 0x01, 0x8e, 0xc0,
+	0x90, 0x86, 0xf8, 0x30, 0xca, 0x3e, 0xaa, 0xf4, 0xed, 0x0e, 0x5b, 0x21, 0xd2, 0xaf, 0x91, 0xcd,
+	0x57, 0xac, 0x98, 0x88, 0x1e, 0xb9, 0x15, 0x61, 0x8b, 0x31, 0x21, 0x6c, 0xf6, 0xed, 0x36, 0xa9,
+	0x2d, 0x9d, 0x87, 0x7a, 0xf6, 0xdd, 0x6a, 0x52, 0x1b, 0x39, 0x86, 0x38, 0x7c, 0x7d, 0x48, 0x35,
+	0x8d, 0x7b, 0x0d, 0xb3, 0xfa, 0xef, 0x42, 0x6d, 0xaf, 0x72, 0x42, 0x2e, 0x0e, 0xf9, 0x8d, 0x11,
+	0x11, 0x4c, 0xc9, 0x73, 0xec, 0xc5, 0x77, 0xac, 0xa0, 0x5c, 0xe2, 0x95, 0xd2, 0x3b, 0xc5, 0x1a,
+	0x87, 0xa2, 0xc4, 0x0a, 0xf3, 0x9e, 0x0d, 0xae, 0x5f, 0x1e, 0x8d, 0xab, 0x9a, 0x62, 0x06, 0xf8,
+	0xa8, 0xf0, 0xc6, 0x5f, 0xe6, 0xa0, 0xc4, 0xd6, 0x9b, 0x5a, 0x23, 0x4f, 0xc2, 0x70, 0x60, 0x7a,
+	0x0d, 0x69, 0x07, 0x47, 0x44, 0x6c, 0x70, 0x28, 0x4a, 0x2c, 0x31, 0x21, 0x1f, 0x98, 0xfe, 0xb6,
+	0xd2, 0x2b, 0x3e, 0x9b, 0xa9, 0xd9, 0x72, 0xa1, 0x87, 0x2a, 0x05, 0xfb, 0xf2, 0x51, 0x70, 0x26,
+	0x4f, 0x41, 0x81, 0x9d, 0x03, 0x4b, 0xa6, 0xaf, 0xbc, 0x14, 0xa3, 0x6c, 0x61, 0x2f, 0x49, 0x18,
+	0x6a, 0xac, 0xf1, 0x1c, 0xe4, 0x17, 0x77, 0xa8, 0xcd, 0x0f, 0x08, 0x5f, 0x9a, 0x81, 0x49, 0xdb,
+	0x57, 0x99, 0x87, 0xa8, 0x29, 0x8c, 0x37, 0xe0, 0xc4, 0xe2, 0x3b, 0xb4, 0xd6, 0x09, 0x1c, 0x4f,
+	0x98, 0x8b, 0xe4, 0x55, 0x20, 0x3e, 0xf5, 0x76, 0xac, 0x1a, 0x9d, 0xab, 0xd5, 0x98, 0x9a, 0xbc,
+	0x1a, 0xee, 0x3f, 0x53, 0x92, 0x13, 0xa9, 0x76, 0x51, 0x60, 0x4a, 0x29, 0xe3, 0xf7, 0x72, 0x50,
+	0x8a, 0xf8, 0xb9, 0xd8, 0xee, 0xd3, 0x98, 0xaf, 0x56, 0x3a, 0xb5, 0x6d, 0xed, 0x64, 0x78, 0x29,
+	0xab, 0xf3, 0x4c, 0x70, 0x09, 0x57, 0x8d, 0x06, 0x61, 0x28, 0xe3, 0x3e, 0x0e, 0x30, 0xe3, 0xcf,
+	0x73, 0x10, 0x96, 0x63, 0xe3, 0xbe, 0x19, 0x56, 0x2d, 0x32, 0xee, 0x92, 0xaf, 0xc4, 0x92, 0xf7,
+	0x73, 0x70, 0x36, 0xde, 0x58, 0x6e, 0x7a, 0x1f, 0xdd, 0xad, 0x31, 0x2d, 0x05, 0x9c, 0xad, 0xa6,
+	0x73, 0xc3, 0x5e, 0x62, 0x8c, 0x9b, 0x90, 0x5f, 0x36, 0x3b, 0x0d, 0x7a, 0x28, 0x03, 0x86, 0xcd,
+	0x22, 0x8f, 0x9a, 0xad, 0x40, 0x1d, 0x96, 0x72, 0x16, 0xa1, 0x84, 0xa1, 0xc6, 0x1a, 0xdf, 0x1c,
+	0x82, 0x52, 0xc4, 0xdd, 0xcd, 0x36, 0x00, 0x8f, 0xba, 0x4e, 0xf2, 0xf8, 0x41, 0xea, 0x3a, 0xc8,
+	0x31, 0x6c, 0xba, 0x79, 0x74, 0xc7, 0xf2, 0x2d, 0xc7, 0x4e, 0x1e, 0x3f, 0x28, 0xe1, 0xa8, 0x29,
+	0xc8, 0x34, 0xe4, 0xeb, 0xd4, 0x0d, 0x9a, 0x7c, 0x32, 0x0f, 0x55, 0x8a, 0xac, 0xaa, 0x0b, 0x0c,
+	0x80, 0x02, 0xce, 0x08, 0xb6, 0x68, 0x50, 0x6b, 0x96, 0x87, 0xf8, 0x96, 0xcd, 0x09, 0x96, 0x18,
+	0x00, 0x05, 0x3c, 0xc5, 0x59, 0x95, 0x7f, 0xf0, 0xce, 0xaa, 0xe1, 0x63, 0x76, 0x56, 0x11, 0x17,
+	0x4e, 0xfa, 0x7e, 0x73, 0xdd, 0xb3, 0x76, 0xcc, 0x80, 0x86, 0xb3, 0x67, 0xe4, 0x28, 0x72, 0xce,
+	0x1e, 0xec, 0x4f, 0x9f, 0xac, 0x56, 0xaf, 0x24, 0xb9, 0x60, 0x1a, 0x6b, 0x52, 0x85, 0xd3, 0x96,
+	0xed, 0xd3, 0x5a, 0xc7, 0xa3, 0x57, 0x1b, 0xb6, 0xe3, 0xd1, 0x2b, 0x8e, 0xcf, 0xd8, 0xc9, 0x28,
+	0x92, 0x76, 0xba, 0x5e, 0x4d, 0x23, 0xc2, 0xf4, 0xb2, 0xc6, 0x77, 0x72, 0x30, 0x1a, 0xf5, 0xf0,
+	0x13, 0x1f, 0xa0, 0xb9, 0xb0, 0x54, 0x15, 0x5b, 0x89, 0x5c, 0xe1, 0x2f, 0x67, 0x0e, 0x1c, 0x08,
+	0x36, 0xa1, 0xbe, 0x14, 0xc2, 0x30, 0x22, 0xe6, 0x10, 0x41, 0xca, 0xc7, 0x21, 0xbf, 0xe5, 0x78,
+	0x35, 0x2a, 0xf7, 0x50, 0xbd, 0x4a, 0x96, 0x18, 0x10, 0x05, 0xce, 0xf8, 0x28, 0x07, 0x11, 0x09,
+	0xe4, 0x97, 0x60, 0x8c, 0xc9, 0xb8, 0xe6, 0x6d, 0xc6, 0x5a, 0x53, 0xc9, 0xdc, 0x1a, 0xcd, 0xa9,
+	0x72, 0x5a, 0xca, 0x1f, 0x8b, 0x81, 0x31, 0x2e, 0x8f, 0xfc, 0x6f, 0x28, 0x9a, 0xf5, 0xba, 0x47,
+	0x7d, 0x9f, 0x8a, 0x23, 0xa6, 0x28, 0xdc, 0x7a, 0x73, 0x0a, 0x88, 0x21, 0x9e, 0x2d, 0xc3, 0x66,
+	0x7d, 0xcb, 0x67, 0x33, 0x5b, 0x5a, 0x68, 0x7a, 0x19, 0x32, 0x21, 0x0c, 0x8e, 0x9a, 0xc2, 0xf8,
+	0xea, 0x10, 0xc4, 0x65, 0x93, 0x3a, 0x8c, 0x6f, 0x7b, 0x9b, 0xf3, 0xdc, 0xf5, 0x98, 0xc5, 0x09,
+	0x7c, 0xf2, 0x60, 0x7f, 0x7a, 0xfc, 0x5a, 0x9c, 0x03, 0x26, 0x59, 0x4a, 0x29, 0xd7, 0xe8, 0x5e,
+	0x60, 0x6e, 0x66, 0xd9, 0x30, 0x95, 0x94, 0x28, 0x07, 0x4c, 0xb2, 0x24, 0xcf, 0x41, 0x69, 0xdb,
+	0xdb, 0x54, 0x8b, 0x3c, 0xe9, 0x79, 0xbd, 0x16, 0xa2, 0x30, 0x4a, 0xc7, 0xba, 0x70, 0xdb, 0xdb,
+	0x64, 0x9b, 0xa2, 0x8a, 0x57, 0xeb, 0x2e, 0xbc, 0x26, 0xe1, 0xa8, 0x29, 0x88, 0x0b, 0x64, 0x5b,
+	0xf5, 0x9e, 0x76, 0xb4, 0xca, 0xbd, 0xe8, 0xf0, 0x7e, 0xda, 0x33, 0xec, 0x30, 0xbd, 0xd6, 0xc5,
+	0x07, 0x53, 0x78, 0x93, 0xcf, 0xc1, 0xd9, 0x6d, 0x6f, 0x53, 0x1e, 0x15, 0xeb, 0x9e, 0x65, 0xd7,
+	0x2c, 0x37, 0x16, 0xa8, 0xd6, 0xc7, 0xc9, 0xb5, 0x74, 0x32, 0xec, 0x55, 0xde, 0xf8, 0x1a, 0x5b,
+	0xc7, 0x91, 0x38, 0xe4, 0xfd, 0xe2, 0x19, 0x5b, 0x30, 0xd2, 0xa4, 0x66, 0x9d, 0x7a, 0x4a, 0xf7,
+	0x79, 0x21, 0xdb, 0xaa, 0xe0, 0x3c, 0x42, 0xcd, 0x4c, 0x7c, 0xfb, 0xa8, 0x98, 0x1b, 0x6b, 0x30,
+	0x2c, 0x60, 0x87, 0xb0, 0x83, 0xf4, 0x49, 0x38, 0x70, 0x0f, 0x57, 0xde, 0x07, 0x39, 0x28, 0x72,
+	0x73, 0xba, 0xc1, 0x74, 0x6a, 0x5d, 0x64, 0xf0, 0x1e, 0x87, 0xe7, 0x16, 0x8c, 0x88, 0x73, 0xdf,
+	0xe7, 0x67, 0x52, 0xd6, 0xb6, 0x8a, 0xec, 0x9e, 0xb0, 0xad, 0x42, 0xa7, 0xf0, 0x51, 0x31, 0x37,
+	0xfe, 0x35, 0x07, 0xc3, 0x57, 0x6d, 0xb7, 0xf3, 0x33, 0x92, 0x88, 0xb2, 0x02, 0x43, 0xcc, 0x12,
+	0x8a, 0xa7, 0x3b, 0x8d, 0x56, 0x9e, 0x88, 0xa6, 0x3a, 0x95, 0xe3, 0xa9, 0x4e, 0x68, 0xee, 0x2a,
+	0x37, 0xb1, 0x28, 0x13, 0x09, 0xcc, 0xb5, 0x60, 0xe8, 0xba, 0x65, 0x6f, 0x1f, 0x6e, 0x9e, 0xf8,
+	0x35, 0xc7, 0xed, 0x9a, 0x27, 0x55, 0x06, 0x44, 0x81, 0x53, 0xf3, 0x7f, 0x30, 0x7d, 0xfe, 0x1b,
+	0x5f, 0xc8, 0xc1, 0xe4, 0x0a, 0x6d, 0x3b, 0xd6, 0xbb, 0x66, 0xe8, 0xe5, 0x66, 0x85, 0x9a, 0x56,
+	0x20, 0x5d, 0xd4, 0xba, 0xd0, 0x15, 0x2b, 0x40, 0x06, 0xbf, 0x8f, 0x2e, 0xca, 0x83, 0xbb, 0x6c,
+	0xab, 0x5c, 0x0d, 0xf7, 0xac, 0x30, 0xb8, 0xab, 0x10, 0x18, 0xd2, 0x18, 0x7f, 0x9c, 0x83, 0x11,
+	0x51, 0x09, 0xaa, 0x78, 0xe7, 0x7a, 0xf0, 0xbe, 0x0d, 0x79, 0x5e, 0x4e, 0xee, 0xb6, 0x9f, 0xc9,
+	0x66, 0xa0, 0x31, 0x0e, 0x42, 0x23, 0xe3, 0x3f, 0x51, 0xf0, 0x64, 0x6a, 0x73, 0xdb, 0x7c, 0x67,
+	0x4e, 0xfb, 0xf4, 0xb5, 0xda, 0xbc, 0xc2, 0xa1, 0x28, 0xb1, 0xc6, 0xfb, 0x83, 0x50, 0x50, 0xae,
+	0x23, 0xf2, 0xc5, 0x1c, 0x94, 0x4c, 0xdb, 0x76, 0x02, 0x53, 0x78, 0x56, 0xc4, 0x24, 0x5f, 0xcd,
+	0x54, 0x31, 0xc5, 0x74, 0x66, 0x2e, 0x64, 0xb8, 0x68, 0x07, 0xde, 0x5e, 0xb8, 0xe9, 0x47, 0x30,
+	0x18, 0x95, 0x4b, 0xde, 0x86, 0xe1, 0x96, 0xb9, 0x49, 0x5b, 0x6a, 0xce, 0x5f, 0xed, 0xaf, 0x06,
+	0xd7, 0x39, 0x2f, 0x21, 0x5c, 0xf7, 0x83, 0x00, 0xa2, 0x14, 0x34, 0xf5, 0x12, 0x4c, 0x24, 0x2b,
+	0x4a, 0x26, 0x22, 0xe3, 0x27, 0x86, 0xec, 0x54, 0x6c, 0x3b, 0x53, 0x13, 0x7e, 0xe0, 0xf9, 0xdc,
+	0xd4, 0xa7, 0xa1, 0x14, 0x11, 0x73, 0x94, 0xa2, 0xc6, 0x6b, 0x50, 0x5a, 0xa1, 0x81, 0x67, 0xd5,
+	0x38, 0x83, 0xfb, 0xcd, 0x9a, 0x43, 0xed, 0xa8, 0xef, 0xb2, 0x49, 0xc8, 0x58, 0xfa, 0xc4, 0x01,
+	0x70, 0x3d, 0xa7, 0x4d, 0x83, 0x26, 0xed, 0xa8, 0x11, 0xcd, 0xa6, 0xfc, 0xad, 0x6b, 0x36, 0xc2,
+	0x17, 0x10, 0x7e, 0x63, 0x44, 0x84, 0x71, 0x09, 0xf2, 0x2b, 0x9d, 0x80, 0xbe, 0x73, 0xff, 0x55,
+	0x6f, 0xdc, 0x86, 0x51, 0x4e, 0x7a, 0xc5, 0x69, 0xb1, 0x0d, 0x85, 0xb5, 0xad, 0xcd, 0xbe, 0x93,
+	0x76, 0x13, 0x27, 0x42, 0x81, 0x63, 0x33, 0xbb, 0xe9, 0xb4, 0xea, 0xd4, 0x93, 0x3d, 0xa0, 0x47,
+	0xf4, 0x0a, 0x87, 0xa2, 0xc4, 0x1a, 0x3f, 0xca, 0x41, 0x89, 0x17, 0x94, 0x1b, 0x41, 0x0b, 0x46,
+	0x9a, 0x42, 0x8e, 0xec, 0x85, 0x6c, 0xde, 0xfe, 0x68, 0x85, 0x23, 0x87, 0xa4, 0x00, 0xa0, 0x12,
+	0xc1, 0xa4, 0xed, 0x9a, 0x56, 0xc0, 0xa4, 0x0d, 0x1c, 0xbb, 0xb4, 0x5b, 0x82, 0x33, 0x2a, 0x11,
+	0xc6, 0x9f, 0x4c, 0x00, 0xac, 0x3a, 0x75, 0x2a, 0x9b, 0x3a, 0x05, 0x03, 0x56, 0x5d, 0x76, 0x22,
+	0xc8, 0x42, 0x03, 0x57, 0x17, 0x70, 0xc0, 0xaa, 0xeb, 0x51, 0x19, 0xe8, 0xb9, 0x17, 0x3f, 0x07,
+	0xa5, 0xba, 0xe5, 0xbb, 0x2d, 0x73, 0x6f, 0x35, 0x45, 0x53, 0x5b, 0x08, 0x51, 0x18, 0xa5, 0x23,
+	0x4f, 0xcb, 0xc8, 0xa6, 0xd0, 0xd2, 0xca, 0x89, 0xc8, 0x66, 0x81, 0x55, 0x2f, 0x12, 0xd4, 0x7c,
+	0x1e, 0x46, 0x95, 0x6f, 0x90, 0x4b, 0xc9, 0xf3, 0x52, 0xa7, 0x54, 0xf4, 0x64, 0x23, 0x82, 0xc3,
+	0x18, 0x65, 0xd2, 0x77, 0x39, 0xfc, 0x50, 0x7c, 0x97, 0x0b, 0x30, 0xe1, 0x07, 0x8e, 0x47, 0xeb,
+	0x8a, 0xe2, 0xea, 0x42, 0x99, 0xc4, 0x1a, 0x3a, 0x51, 0x4d, 0xe0, 0xb1, 0xab, 0x04, 0x59, 0x87,
+	0x53, 0xbb, 0x89, 0xa0, 0x31, 0x6f, 0xfc, 0x49, 0xce, 0xe9, 0xbc, 0xe4, 0x74, 0xea, 0x56, 0x0a,
+	0x0d, 0xa6, 0x96, 0x24, 0x2f, 0xc0, 0x98, 0xaa, 0x26, 0x3f, 0x2a, 0xcb, 0xa7, 0x38, 0x2b, 0x6d,
+	0xcb, 0x6c, 0x44, 0x91, 0x18, 0xa7, 0x25, 0x9f, 0x84, 0xbc, 0xdb, 0x34, 0x7d, 0x2a, 0x5d, 0x9d,
+	0xca, 0x8f, 0x94, 0x5f, 0x67, 0xc0, 0xbb, 0xfb, 0xd3, 0x45, 0x36, 0x66, 0xfc, 0x03, 0x05, 0x21,
+	0xb9, 0x0c, 0xb0, 0xe9, 0x74, 0xec, 0xba, 0xe9, 0xed, 0x5d, 0x5d, 0x90, 0x91, 0x0e, 0xad, 0xc3,
+	0x54, 0x34, 0x06, 0x23, 0x54, 0xd1, 0xf0, 0x72, 0xf1, 0xde, 0xe1, 0x65, 0x72, 0x1b, 0x8a, 0x3c,
+	0x2a, 0x44, 0xeb, 0x73, 0x81, 0x74, 0x5b, 0x1e, 0x25, 0x80, 0xa0, 0x4f, 0xe6, 0xaa, 0x62, 0x82,
+	0x21, 0x3f, 0xf2, 0x26, 0xc0, 0x96, 0x65, 0x5b, 0x7e, 0x93, 0x73, 0x2f, 0x1d, 0x99, 0xbb, 0x6e,
+	0xe7, 0x92, 0xe6, 0x82, 0x11, 0x8e, 0xe4, 0x0d, 0x98, 0xa4, 0x7e, 0x60, 0xb5, 0xcd, 0x80, 0xd6,
+	0x75, 0x82, 0x49, 0x99, 0x07, 0xc2, 0x74, 0x5c, 0x6e, 0x31, 0x49, 0x70, 0x37, 0x0d, 0x88, 0xdd,
+	0x8c, 0xc8, 0xf3, 0x50, 0x70, 0x3d, 0xa7, 0xc1, 0x0c, 0xcb, 0xf2, 0x54, 0x6c, 0xba, 0x14, 0xd6,
+	0x25, 0xfc, 0x6e, 0xe4, 0x37, 0x6a, 0x6a, 0xf2, 0x2f, 0x39, 0x98, 0xf4, 0xa8, 0xef, 0x74, 0xbc,
+	0x1a, 0xf5, 0x75, 0xc5, 0x4e, 0xf3, 0x4d, 0xe9, 0x66, 0xc6, 0xd4, 0x70, 0xb5, 0xd3, 0xcc, 0x60,
+	0x92, 0xb1, 0x38, 0x65, 0xa9, 0x6a, 0x70, 0x17, 0xfe, 0x6e, 0x1a, 0xf0, 0x0b, 0x3f, 0x98, 0x9e,
+	0xee, 0xbe, 0x8d, 0xa0, 0x99, 0xb3, 0x99, 0xfe, 0xab, 0x3f, 0x98, 0x9e, 0x50, 0xdf, 0x61, 0x3f,
+	0x75, 0xb5, 0x8b, 0x1d, 0x21, 0xae, 0x53, 0xbf, 0xba, 0x2e, 0xfd, 0xcb, 0xfa, 0x08, 0x59, 0x67,
+	0x40, 0x14, 0x38, 0xf2, 0x14, 0x14, 0xea, 0x26, 0x6d, 0x3b, 0x36, 0xad, 0x97, 0xc7, 0x42, 0xd7,
+	0xdb, 0x82, 0x84, 0xa1, 0xc6, 0x92, 0xb7, 0x60, 0xd8, 0xe2, 0xea, 0x7f, 0xf9, 0x04, 0x9f, 0x30,
+	0xd9, 0xcc, 0x0c, 0x61, 0x41, 0x88, 0x84, 0x24, 0xf1, 0x1b, 0x25, 0x5b, 0x52, 0x83, 0x11, 0xa7,
+	0x13, 0x70, 0x09, 0xe3, 0x5c, 0x42, 0x36, 0x87, 0xf5, 0x9a, 0xe0, 0x21, 0xf2, 0x93, 0xe5, 0x07,
+	0x2a, 0xce, 0xac, 0xbd, 0xb5, 0xa6, 0xd5, 0xaa, 0x7b, 0xd4, 0x2e, 0x4f, 0x70, 0x9f, 0x05, 0x6f,
+	0xef, 0xbc, 0x84, 0xa1, 0xc6, 0x92, 0xff, 0x0b, 0x63, 0x4e, 0x27, 0xe0, 0xab, 0x97, 0x8d, 0xb2,
+	0x5f, 0x9e, 0xe4, 0xe4, 0x93, 0x6c, 0x2f, 0x59, 0x8b, 0x22, 0x30, 0x4e, 0xc7, 0xf6, 0xf3, 0xa6,
+	0xe3, 0x07, 0xec, 0x83, 0x6f, 0x69, 0x67, 0xe2, 0xfb, 0xf9, 0x95, 0x08, 0x0e, 0x63, 0x94, 0xe4,
+	0x2b, 0x39, 0x98, 0x6c, 0x27, 0xd5, 0xf6, 0xf2, 0x59, 0xde, 0x19, 0x4b, 0x19, 0x15, 0xbf, 0x04,
+	0x37, 0x11, 0x5a, 0xec, 0x02, 0x63, 0xb7, 0x5c, 0x9e, 0x53, 0xe9, 0xef, 0xd9, 0xb5, 0xa6, 0xe7,
+	0xd8, 0xf1, 0x1a, 0x3d, 0xca, 0x6b, 0xb4, 0x9a, 0x7d, 0xc5, 0xa4, 0x71, 0xad, 0x3c, 0x7a, 0xb0,
+	0x3f, 0x7d, 0x3a, 0x15, 0x85, 0xe9, 0xf5, 0x98, 0x5a, 0x80, 0x33, 0xe9, 0xab, 0xee, 0x7e, 0x4a,
+	0xe7, 0x60, 0x54, 0xe9, 0x5c, 0x82, 0x47, 0x7b, 0x56, 0x8a, 0x6d, 0xd9, 0x4a, 0x79, 0xc9, 0xc5,
+	0xb7, 0xec, 0x2e, 0xcd, 0xe3, 0x04, 0x8c, 0x46, 0x6f, 0x8a, 0xf0, 0xe0, 0x42, 0x24, 0x43, 0x97,
+	0x38, 0x50, 0x74, 0xaa, 0xc7, 0x11, 0x5c, 0x58, 0xab, 0x76, 0x05, 0x17, 0x34, 0x08, 0x43, 0x19,
+	0xf7, 0x0b, 0x2e, 0xfc, 0xd9, 0x00, 0x84, 0xe5, 0xc8, 0xd3, 0x50, 0xa0, 0x76, 0xdd, 0x75, 0x2c,
+	0x3b, 0x48, 0x86, 0x65, 0x16, 0x25, 0x1c, 0x35, 0x45, 0x24, 0x14, 0x31, 0x70, 0xcf, 0x50, 0x44,
+	0x13, 0xc6, 0x4d, 0x9e, 0x7e, 0x10, 0xfa, 0x90, 0x07, 0x8f, 0xe4, 0x43, 0xd6, 0x89, 0xa3, 0x71,
+	0x2e, 0x98, 0x64, 0xcb, 0x24, 0xf9, 0x61, 0x71, 0x2e, 0x69, 0x28, 0x93, 0xa4, 0x6a, 0x9c, 0x0b,
+	0x26, 0xd9, 0x1a, 0x7f, 0x31, 0x00, 0x6a, 0x5f, 0xf9, 0x59, 0xf0, 0x84, 0x10, 0x03, 0x86, 0x3d,
+	0xea, 0xab, 0x3c, 0xe4, 0xa2, 0xd8, 0xbb, 0x91, 0x43, 0x50, 0x62, 0xd8, 0xb6, 0x4a, 0xdf, 0xb1,
+	0x82, 0x79, 0xa7, 0xae, 0xb4, 0x5e, 0xbe, 0xad, 0x2e, 0x4a, 0x18, 0x6a, 0xac, 0xb1, 0x0b, 0x63,
+	0xac, 0x5d, 0xad, 0x16, 0x6d, 0x55, 0x03, 0xea, 0xfa, 0x64, 0x0b, 0xf2, 0x3e, 0xfb, 0xd1, 0x97,
+	0x29, 0x12, 0xe6, 0x74, 0x50, 0x37, 0xe2, 0x32, 0x61, 0x7c, 0x51, 0xb0, 0x37, 0xfe, 0x69, 0x00,
+	0x8a, 0xba, 0x47, 0x0f, 0xe1, 0x87, 0xb9, 0x1c, 0xe6, 0x5f, 0x8b, 0x39, 0x5e, 0x8e, 0xe4, 0x5e,
+	0x33, 0x95, 0x70, 0xce, 0xde, 0x13, 0xe9, 0xb5, 0x3a, 0x11, 0x9b, 0x3c, 0x1d, 0x77, 0xd8, 0x9d,
+	0x89, 0x3a, 0x8b, 0x22, 0xf4, 0xd2, 0x73, 0xb7, 0x0d, 0x45, 0xfe, 0x63, 0x49, 0xdd, 0x40, 0xca,
+	0x3a, 0x77, 0x6e, 0x2a, 0x2e, 0xc2, 0x01, 0xaf, 0x3f, 0x31, 0xe4, 0x9f, 0xb8, 0x39, 0x94, 0x3f,
+	0xd4, 0xcd, 0xa1, 0x4b, 0x30, 0x44, 0xed, 0x4e, 0x9b, 0xe7, 0x1a, 0x14, 0xf9, 0xc9, 0x31, 0xb4,
+	0x68, 0x77, 0xda, 0xf1, 0xc6, 0x70, 0x12, 0x63, 0x09, 0x98, 0x5e, 0xb1, 0x3c, 0x4f, 0x5e, 0x84,
+	0x82, 0x2f, 0x77, 0x40, 0xd9, 0xb9, 0x1f, 0xd3, 0xe1, 0x5d, 0x09, 0xbf, 0xbb, 0x3f, 0x3d, 0xc6,
+	0x89, 0x15, 0x00, 0x75, 0x11, 0xe3, 0x4b, 0x43, 0x10, 0xb1, 0xa6, 0x0f, 0x31, 0x4c, 0xf5, 0x84,
+	0x83, 0xe4, 0x95, 0xac, 0x0e, 0x12, 0xe5, 0x75, 0x10, 0xf3, 0x3b, 0xee, 0x13, 0x61, 0xf5, 0x68,
+	0xd2, 0x96, 0x2b, 0xc7, 0x55, 0xd7, 0xe3, 0x0a, 0x6d, 0xb9, 0xc8, 0x31, 0x3a, 0x15, 0x61, 0xa8,
+	0x67, 0x2a, 0xc2, 0x6d, 0xc8, 0x37, 0xcc, 0x4e, 0x83, 0x4a, 0x27, 0x7c, 0x36, 0x27, 0x17, 0x8f,
+	0xaa, 0x0a, 0x27, 0x17, 0xff, 0x89, 0x82, 0x27, 0x9b, 0x4b, 0x4d, 0xe5, 0x37, 0x96, 0x86, 0x60,
+	0xb6, 0xb9, 0xa4, 0xbd, 0xcf, 0x62, 0x2e, 0xe9, 0x4f, 0x0c, 0xf9, 0x33, 0x4d, 0xad, 0x26, 0x12,
+	0x54, 0x65, 0x44, 0xf0, 0xb3, 0x19, 0x33, 0x2a, 0x38, 0x0f, 0xa1, 0xa9, 0xc9, 0x0f, 0x54, 0x9c,
+	0x8d, 0x59, 0x28, 0x45, 0x2e, 0xcf, 0xb0, 0xfe, 0xd5, 0xe9, 0x97, 0x91, 0xfe, 0x5d, 0x30, 0x03,
+	0x13, 0x39, 0xc6, 0xf8, 0xfa, 0x20, 0x68, 0xbd, 0x38, 0x9a, 0x2b, 0x61, 0xd6, 0x22, 0x79, 0xf6,
+	0xb1, 0xc4, 0x2d, 0xc7, 0x46, 0x89, 0x65, 0xd6, 0x63, 0x9b, 0x7a, 0x0d, 0x7d, 0x7a, 0xcb, 0x35,
+	0xaf, 0xad, 0xc7, 0x95, 0x28, 0x12, 0xe3, 0xb4, 0xec, 0xec, 0x6c, 0x9b, 0xb6, 0xb5, 0x45, 0xfd,
+	0x20, 0x19, 0xdc, 0x5a, 0x91, 0x70, 0xd4, 0x14, 0x64, 0x19, 0x26, 0x7d, 0x1a, 0xac, 0xed, 0xda,
+	0xd4, 0xd3, 0x09, 0x65, 0x32, 0xc3, 0xf0, 0x51, 0x65, 0x2c, 0x54, 0x93, 0x04, 0xd8, 0x5d, 0x86,
+	0x5b, 0xe2, 0x22, 0xb9, 0x4f, 0x27, 0x6a, 0xc9, 0x85, 0x1d, 0x5a, 0xe2, 0x09, 0x3c, 0x76, 0x95,
+	0x60, 0x5c, 0xb6, 0x4c, 0xab, 0xd5, 0xf1, 0x68, 0xc8, 0x65, 0x38, 0xce, 0x65, 0x29, 0x81, 0xc7,
+	0xae, 0x12, 0x3c, 0x2e, 0xde, 0x32, 0x1b, 0x7e, 0x79, 0x24, 0x12, 0x17, 0x67, 0x00, 0x14, 0x70,
+	0xe3, 0x83, 0x01, 0x18, 0x43, 0x1a, 0x78, 0x7b, 0xba, 0xd7, 0x5e, 0x83, 0x7c, 0x8b, 0x27, 0x1b,
+	0xe6, 0x32, 0xde, 0x6a, 0xe0, 0x42, 0x44, 0x36, 0xa2, 0xe0, 0x44, 0x16, 0xa0, 0xe4, 0x31, 0x19,
+	0x32, 0x15, 0x54, 0x8c, 0xa1, 0x11, 0x5e, 0x12, 0xd4, 0xa8, 0xbb, 0xf1, 0x4f, 0x8c, 0x16, 0x23,
+	0x36, 0x8c, 0x6c, 0x8a, 0x8b, 0x1a, 0x52, 0x59, 0xc9, 0x36, 0xbd, 0xe5, 0x65, 0x0f, 0x7e, 0x0a,
+	0xa8, 0x9b, 0x1f, 0x77, 0xc3, 0x9f, 0xa8, 0x84, 0x18, 0x1f, 0xe4, 0x00, 0xc2, 0xdb, 0x81, 0x64,
+	0x1b, 0x0a, 0xfe, 0xb3, 0x31, 0x35, 0x31, 0x63, 0x16, 0x95, 0x64, 0x12, 0xc9, 0xaf, 0x91, 0x10,
+	0xd4, 0x02, 0xee, 0xa7, 0x23, 0x7e, 0x34, 0x08, 0xba, 0xd4, 0x03, 0x52, 0x11, 0x9f, 0x64, 0xea,
+	0x45, 0x23, 0xbc, 0x82, 0xa2, 0xe9, 0x90, 0x43, 0x51, 0x62, 0x99, 0x8a, 0xa1, 0x82, 0xfc, 0x72,
+	0xb5, 0x70, 0x15, 0x43, 0xe5, 0x03, 0xa0, 0xc6, 0xa6, 0x29, 0x9d, 0xf9, 0x87, 0xa6, 0x74, 0x0e,
+	0x3f, 0x10, 0xa5, 0x93, 0xd9, 0x21, 0x9e, 0xd3, 0xa2, 0x73, 0xb8, 0x2a, 0x5d, 0x54, 0xda, 0x0e,
+	0x41, 0x01, 0x46, 0x85, 0x27, 0xcf, 0x41, 0xa9, 0xe3, 0xd3, 0xea, 0xc2, 0xb5, 0x79, 0x8f, 0xd6,
+	0x7d, 0x99, 0x3f, 0xa1, 0x9d, 0x96, 0x37, 0x42, 0x14, 0x46, 0xe9, 0x8c, 0x5f, 0xc9, 0xc1, 0x89,
+	0x6a, 0xcd, 0xb3, 0xdc, 0x40, 0x6f, 0x9e, 0xab, 0xfc, 0x8a, 0x4f, 0x60, 0xb2, 0xa5, 0x28, 0xa7,
+	0xe2, 0x63, 0x3d, 0x42, 0xc7, 0x82, 0x28, 0x76, 0xdd, 0x4f, 0x80, 0x30, 0x64, 0xc1, 0x86, 0x5a,
+	0x6c, 0xcf, 0xc9, 0x29, 0x51, 0xe5, 0x50, 0x94, 0x58, 0xe3, 0x0e, 0x4c, 0x54, 0x69, 0xdb, 0x74,
+	0x9b, 0x3c, 0x95, 0x43, 0x78, 0x91, 0x67, 0xa1, 0xe8, 0x2b, 0x58, 0xf2, 0x6e, 0xa1, 0x26, 0xc6,
+	0x90, 0x86, 0x3c, 0x21, 0x9c, 0xdc, 0x2a, 0x06, 0x5c, 0x14, 0xc7, 0x8c, 0xf0, 0x8c, 0xfb, 0xa8,
+	0x70, 0xc6, 0x2e, 0x8c, 0x86, 0xc5, 0xe9, 0x16, 0x69, 0xc0, 0x78, 0x2d, 0x12, 0x09, 0x0f, 0xaf,
+	0x10, 0x1e, 0x3e, 0x68, 0xce, 0xb3, 0x00, 0xe6, 0xe3, 0x4c, 0x30, 0xc9, 0xd5, 0xf8, 0xf7, 0x1c,
+	0x8c, 0x6b, 0xc9, 0xd2, 0xda, 0x74, 0x93, 0x8e, 0xf9, 0xc5, 0x8c, 0xf9, 0x93, 0xf1, 0xce, 0xbb,
+	0x87, 0x73, 0xde, 0x4d, 0x3a, 0xe7, 0x8f, 0x5b, 0x62, 0x97, 0x99, 0xfc, 0x8d, 0x01, 0x28, 0xe8,
+	0x04, 0xce, 0xd7, 0x20, 0xcf, 0xcf, 0xfb, 0xfe, 0xce, 0x00, 0xae, 0x3b, 0xa0, 0xe0, 0xc4, 0x58,
+	0x72, 0x4f, 0x67, 0xe6, 0xcb, 0x72, 0x45, 0x61, 0x3a, 0x98, 0x5e, 0x80, 0x82, 0x13, 0xb9, 0x06,
+	0x83, 0xd4, 0xae, 0xcb, 0xc3, 0xe0, 0xe8, 0x0c, 0xf9, 0xed, 0xd9, 0x45, 0xbb, 0x8e, 0x8c, 0x0b,
+	0xbf, 0x05, 0xe4, 0x78, 0x6d, 0x33, 0x90, 0xaa, 0x62, 0x78, 0x0b, 0x88, 0x43, 0x51, 0x62, 0x8d,
+	0x5f, 0x1f, 0x80, 0xe1, 0x6a, 0x67, 0x93, 0x1d, 0x6b, 0xbf, 0x93, 0x83, 0x93, 0x49, 0x9f, 0x77,
+	0x38, 0x31, 0xaf, 0x1c, 0xcb, 0x2d, 0x35, 0xa4, 0x5b, 0x95, 0x73, 0xb2, 0x2a, 0x27, 0x53, 0x90,
+	0x98, 0x56, 0x03, 0xa6, 0x76, 0x86, 0xe9, 0xda, 0x03, 0xc7, 0x92, 0xae, 0x3d, 0xd6, 0x2b, 0x55,
+	0xdb, 0xf8, 0xeb, 0x21, 0x00, 0xd1, 0x23, 0x6b, 0x6e, 0x70, 0x18, 0xdb, 0xe0, 0x79, 0x18, 0x55,
+	0xef, 0x98, 0xac, 0x86, 0x81, 0x1e, 0xed, 0x89, 0x5b, 0x8e, 0xe0, 0x30, 0x46, 0xc9, 0xac, 0x25,
+	0x6a, 0x07, 0xde, 0x9e, 0x38, 0xec, 0x86, 0xe2, 0xd6, 0xd2, 0xa2, 0xc6, 0x60, 0x84, 0x8a, 0xcc,
+	0xc4, 0x7c, 0x01, 0x22, 0xa5, 0xfb, 0xc4, 0x3d, 0xec, 0xf8, 0x17, 0x60, 0x4c, 0x7f, 0x2d, 0x59,
+	0x2d, 0x95, 0x25, 0xa3, 0x55, 0xce, 0xf5, 0x28, 0x12, 0xe3, 0xb4, 0xe4, 0x25, 0x38, 0x11, 0xcf,
+	0xbd, 0x94, 0xc7, 0xc2, 0x19, 0x59, 0xfa, 0x44, 0x3c, 0x65, 0x13, 0x13, 0xd4, 0x6c, 0x16, 0xd6,
+	0xbd, 0x3d, 0xec, 0xd8, 0xf2, 0x7c, 0xd0, 0xb3, 0x70, 0x81, 0x43, 0x51, 0x62, 0x59, 0x17, 0xb2,
+	0x92, 0xd4, 0x13, 0x70, 0x1e, 0xb7, 0x28, 0x84, 0x5d, 0x58, 0x8d, 0xe0, 0x30, 0x46, 0xc9, 0x24,
+	0x48, 0xc3, 0x0c, 0xe2, 0xf3, 0x3c, 0x61, 0x5a, 0xb9, 0x70, 0xc2, 0x89, 0xeb, 0xc2, 0x22, 0x20,
+	0xf1, 0xa9, 0x43, 0x5e, 0x02, 0x89, 0x95, 0x15, 0xc9, 0x8d, 0x09, 0xd5, 0x39, 0xc1, 0xdf, 0x38,
+	0x09, 0x93, 0xd5, 0x8e, 0xeb, 0xb6, 0x2c, 0x5a, 0xd7, 0xa6, 0xb2, 0xf1, 0x32, 0x8c, 0xcb, 0x6b,
+	0x3d, 0xfa, 0xf8, 0x3b, 0xd2, 0x2d, 0x5d, 0x63, 0x9f, 0xed, 0xe7, 0x71, 0x1f, 0x22, 0xb1, 0x93,
+	0x87, 0x56, 0x56, 0xff, 0x46, 0xf4, 0x88, 0x12, 0x2b, 0x24, 0xf5, 0xcc, 0xbb, 0xad, 0xa2, 0xc6,
+	0xfd, 0xe4, 0x51, 0xf0, 0x40, 0xab, 0xd8, 0x05, 0xa3, 0xd1, 0x66, 0xe3, 0xc7, 0x39, 0x48, 0x77,
+	0xcf, 0x92, 0xb7, 0xbb, 0x9b, 0xb9, 0xd0, 0x5f, 0x33, 0xa5, 0x4b, 0xb8, 0x77, 0x4b, 0xcd, 0x78,
+	0x4b, 0x5f, 0xc9, 0xde, 0x52, 0x29, 0xaa, 0xbb, 0xbd, 0xff, 0x91, 0x83, 0xd2, 0xc6, 0xc6, 0x75,
+	0x6d, 0xaf, 0x20, 0x9c, 0xf1, 0xc5, 0xc5, 0xac, 0xb9, 0xad, 0x80, 0x7a, 0xf3, 0x4e, 0xdb, 0x6d,
+	0x51, 0x3d, 0x39, 0xe4, 0x6d, 0xa9, 0x6a, 0x2a, 0x05, 0xf6, 0x28, 0x49, 0xae, 0xc2, 0xc9, 0x28,
+	0x46, 0x9a, 0x6b, 0xbc, 0x51, 0x79, 0x99, 0x40, 0xdb, 0x8d, 0xc6, 0xb4, 0x32, 0x49, 0x56, 0xd2,
+	0x66, 0x93, 0xef, 0xde, 0x74, 0xb1, 0x92, 0x68, 0x4c, 0x2b, 0x63, 0xac, 0x41, 0x29, 0xf2, 0xa2,
+	0x12, 0x79, 0x05, 0x26, 0x6a, 0x4e, 0xdb, 0xf5, 0xa8, 0xef, 0x5b, 0x8e, 0x7d, 0x9d, 0xee, 0xd0,
+	0x96, 0x6c, 0x32, 0xbf, 0x76, 0x35, 0x9f, 0xc0, 0x61, 0x17, 0xb5, 0xf1, 0xa7, 0xe7, 0x40, 0x5f,
+	0xf6, 0xf9, 0xf9, 0x95, 0xa1, 0x4c, 0x61, 0xf7, 0x9a, 0x0e, 0xbf, 0xe5, 0xfb, 0x0f, 0xbf, 0xe9,
+	0xbd, 0x38, 0x11, 0x82, 0x6b, 0x84, 0x21, 0xb8, 0xe1, 0x63, 0x08, 0xc1, 0x69, 0x25, 0xb0, 0x2b,
+	0x0c, 0xf7, 0xe5, 0x1c, 0x8c, 0xda, 0x4e, 0x9d, 0x2a, 0x9d, 0x99, 0xbb, 0x0d, 0x4a, 0x97, 0xd7,
+	0xfa, 0xea, 0x44, 0x11, 0x5b, 0x92, 0x1c, 0x45, 0xf4, 0x55, 0x1f, 0x54, 0x51, 0x14, 0xc6, 0x44,
+	0x93, 0x25, 0x28, 0x98, 0x5b, 0x5b, 0x96, 0x6d, 0x05, 0x7b, 0xf2, 0xd6, 0xd2, 0xf9, 0x34, 0x55,
+	0x7f, 0x4e, 0xd2, 0x08, 0xb3, 0x53, 0x7d, 0xa1, 0x2e, 0xcb, 0xec, 0x76, 0x7d, 0x49, 0xb8, 0xd8,
+	0x87, 0xdd, 0xae, 0x92, 0xb5, 0x22, 0x4e, 0x24, 0x75, 0xa1, 0x31, 0xbc, 0x33, 0x6c, 0xc0, 0xb0,
+	0x88, 0xcc, 0xca, 0x97, 0x90, 0xb8, 0xd3, 0x52, 0x44, 0x6d, 0x51, 0x62, 0x48, 0x43, 0x79, 0xd6,
+	0x4b, 0xbc, 0x73, 0x2b, 0x99, 0xe3, 0x12, 0xda, 0x59, 0x9f, 0xee, 0x5a, 0x27, 0xaf, 0x46, 0xed,
+	0xc4, 0xd1, 0xc3, 0xd8, 0x89, 0x63, 0x3d, 0x6d, 0xc4, 0x06, 0x0c, 0xfb, 0xdc, 0x0a, 0xe5, 0xe1,
+	0xe8, 0xd2, 0xe5, 0xf9, 0x6c, 0x07, 0x49, 0xcc, 0x90, 0x15, 0xbd, 0x23, 0x60, 0x28, 0xd9, 0x13,
+	0x07, 0x0a, 0x2a, 0x66, 0x2e, 0x23, 0xda, 0xd9, 0x4c, 0x9f, 0xa4, 0xcb, 0x51, 0xdd, 0x5d, 0x11,
+	0x50, 0xd4, 0x42, 0xc8, 0x6d, 0x18, 0xac, 0x9b, 0x0d, 0x19, 0xdb, 0x7e, 0x25, 0xf3, 0x65, 0x2c,
+	0x25, 0x86, 0x5b, 0x15, 0x0b, 0x73, 0xcb, 0xc8, 0xb8, 0x92, 0xed, 0xf0, 0xb2, 0xf2, 0x44, 0x3f,
+	0x07, 0x70, 0x5c, 0x05, 0x12, 0x36, 0x73, 0xd7, 0x75, 0xe7, 0x45, 0x18, 0xd9, 0x71, 0x5a, 0x9d,
+	0xb6, 0x0c, 0x8a, 0x97, 0x2e, 0x4f, 0xa5, 0x8d, 0xf6, 0x4d, 0x4e, 0x12, 0x6e, 0x02, 0xe2, 0xdb,
+	0x47, 0x55, 0x96, 0x7c, 0x21, 0x07, 0x27, 0xd8, 0xd2, 0xd1, 0xf3, 0xc0, 0x2f, 0x93, 0x3e, 0x66,
+	0xea, 0x0d, 0x9f, 0x1d, 0xad, 0x6a, 0x86, 0x69, 0x45, 0xf8, 0x6a, 0x4c, 0x02, 0x26, 0x24, 0x12,
+	0x17, 0x0a, 0xbe, 0x55, 0xa7, 0x35, 0xd3, 0xf3, 0xcb, 0x27, 0x8f, 0x4d, 0x7a, 0xe8, 0x72, 0x93,
+	0xbc, 0x51, 0x4b, 0x21, 0xbf, 0xcc, 0x1f, 0xdb, 0x91, 0x4f, 0x8b, 0xc9, 0x07, 0xe5, 0x4e, 0x1d,
+	0xe7, 0x83, 0x72, 0x27, 0xc5, 0x4b, 0x3b, 0x31, 0x09, 0x98, 0x14, 0x49, 0x3e, 0x9f, 0x83, 0xd3,
+	0xe2, 0xd6, 0x72, 0xf2, 0xca, 0xfa, 0xe9, 0x8c, 0x76, 0x2e, 0x0f, 0xe0, 0xcf, 0xa5, 0xb1, 0xc4,
+	0x74, 0x49, 0xe4, 0x3d, 0x18, 0xf3, 0xa2, 0x3e, 0x61, 0x9e, 0x2b, 0x91, 0x75, 0x04, 0x62, 0xde,
+	0x65, 0x91, 0xa7, 0x11, 0x03, 0x61, 0x5c, 0x16, 0x79, 0x06, 0x4a, 0xae, 0xdc, 0xdc, 0x2c, 0xbf,
+	0xcd, 0xd3, 0x2c, 0x06, 0xc5, 0x21, 0xbc, 0x1e, 0x82, 0x31, 0x4a, 0x43, 0x6e, 0x40, 0x29, 0x70,
+	0x5a, 0xd4, 0x93, 0x49, 0xc1, 0x65, 0x3e, 0x5f, 0x2e, 0xa4, 0x4d, 0xfe, 0x0d, 0x4d, 0x16, 0xba,
 	0xde, 0x42, 0x98, 0x8f, 0x51, 0x3e, 0xcc, 0x12, 0x54, 0x6f, 0x1a, 0x78, 0xdc, 0x50, 0x7d, 0x34,
-	0x6e, 0x09, 0x56, 0xa3, 0x48, 0x8c, 0xd3, 0x92, 0x55, 0x98, 0x76, 0x3d, 0xcb, 0xf1, 0xac, 0x60,
-	0x6f, 0xb1, 0x6d, 0xfa, 0x3e, 0x67, 0x20, 0xf2, 0xa2, 0x74, 0x38, 0x61, 0x23, 0x49, 0x80, 0xbd,
-	0x65, 0xc8, 0xd3, 0x50, 0x50, 0xc0, 0xf2, 0x63, 0x5c, 0xbd, 0x1b, 0x17, 0x39, 0x55, 0x02, 0x86,
-	0x1a, 0xdb, 0xe7, 0x0a, 0xe6, 0xb9, 0x2c, 0x57, 0x30, 0x49, 0x1d, 0xce, 0x99, 0xdd, 0xc0, 0xe1,
-	0xb7, 0x0f, 0xe2, 0x45, 0x36, 0x9d, 0x6d, 0x6a, 0x97, 0x2f, 0xf0, 0xe3, 0xed, 0xc2, 0xc1, 0xfe,
-	0xec, 0xb9, 0x85, 0x7b, 0xd0, 0xe1, 0x3d, 0xb9, 0x90, 0x0e, 0x14, 0xa8, 0xbc, 0x46, 0x5a, 0xfe,
-	0xc4, 0x00, 0xe7, 0x4a, 0xfc, 0x2e, 0xaa, 0x0a, 0x72, 0x0b, 0x18, 0x6a, 0x11, 0x64, 0x13, 0x4a,
-	0x2d, 0xc7, 0x0f, 0x16, 0xda, 0x96, 0xe9, 0x53, 0xbf, 0xfc, 0x38, 0x9f, 0x27, 0xa9, 0x47, 0xe2,
-	0x65, 0x45, 0x16, 0x4e, 0x93, 0xcb, 0x61, 0x49, 0x8c, 0xb2, 0x21, 0x94, 0x7b, 0x9b, 0xbb, 0x7c,
-	0xd4, 0x1c, 0x3b, 0xa0, 0xef, 0x06, 0xe5, 0xf3, 0xbc, 0x2d, 0x4f, 0xa5, 0x71, 0xde, 0x70, 0xea,
-	0xd5, 0x38, 0xb5, 0xd8, 0x18, 0x12, 0x40, 0x4c, 0xf2, 0x64, 0x26, 0xbf, 0xeb, 0xd4, 0xab, 0x2e,
-	0xad, 0x6d, 0x98, 0x41, 0xad, 0x55, 0x9e, 0x8d, 0x7b, 0x4d, 0x36, 0x22, 0x38, 0x8c, 0x51, 0x92,
-	0x1a, 0x8c, 0x75, 0x44, 0xae, 0x75, 0xf9, 0x89, 0x01, 0xd4, 0x47, 0x99, 0xaf, 0x2d, 0x0e, 0x1f,
-	0xf9, 0x81, 0x8a, 0x33, 0xf9, 0xcd, 0x1c, 0x4c, 0x26, 0xd2, 0x81, 0xca, 0x9f, 0x1c, 0xe4, 0xc8,
-	0x8b, 0xf3, 0xaa, 0x3c, 0xc5, 0x3b, 0x29, 0x0e, 0xbc, 0xdb, 0x0b, 0xc2, 0x64, 0x25, 0x44, 0xeb,
-	0xf9, 0x75, 0x87, 0xf2, 0x93, 0x03, 0xb5, 0x9e, 0xf3, 0x50, 0xad, 0xe7, 0x1f, 0xa8, 0x38, 0x93,
-	0x8b, 0x30, 0x16, 0x58, 0x1d, 0xea, 0x74, 0x83, 0xf2, 0x53, 0xf1, 0x38, 0xc0, 0xa6, 0x00, 0xa3,
-	0xc2, 0xcf, 0xbc, 0x02, 0xd3, 0x3d, 0x0a, 0xf1, 0x91, 0xb2, 0xf1, 0x7f, 0xc4, 0x0c, 0xe0, 0x88,
-	0x09, 0x72, 0xdc, 0x86, 0xdb, 0x2a, 0x4c, 0xcb, 0x87, 0x77, 0x99, 0xb6, 0xd4, 0xee, 0xea, 0x77,
-	0xc8, 0x22, 0x81, 0x50, 0x4c, 0x12, 0x60, 0x6f, 0x19, 0x36, 0x63, 0x6b, 0xe2, 0x21, 0x2a, 0x91,
-	0xf9, 0x3b, 0x12, 0x77, 0x52, 0x2d, 0x46, 0x70, 0x18, 0xa3, 0x34, 0xfe, 0x20, 0x07, 0x13, 0xb1,
-	0x93, 0xfb, 0xd8, 0x63, 0x1e, 0x2b, 0x40, 0x3a, 0x96, 0xe7, 0x39, 0x9e, 0x50, 0x7f, 0xd6, 0xd8,
-	0x9e, 0xe4, 0xcb, 0x5b, 0xce, 0xfc, 0x76, 0xdd, 0x5a, 0x0f, 0x16, 0x53, 0x4a, 0x18, 0x5f, 0x1e,
-	0x86, 0x30, 0xb1, 0x43, 0x5f, 0x29, 0xcd, 0xf5, 0xbd, 0x52, 0xfa, 0x0c, 0x14, 0xee, 0xf8, 0x8e,
-	0xbd, 0x11, 0x5e, 0x3c, 0xd5, 0x43, 0xf1, 0x5a, 0x75, 0xfd, 0x3a, 0xa7, 0xd4, 0x14, 0x9c, 0xfa,
-	0x9d, 0x15, 0xab, 0x1d, 0xf4, 0x5e, 0xcf, 0x7c, 0xed, 0x75, 0x01, 0x47, 0x4d, 0xc1, 0x5f, 0xbb,
-	0xda, 0xa1, 0xda, 0xe7, 0x18, 0xbe, 0x76, 0xc5, 0x80, 0x28, 0x70, 0x64, 0x1e, 0x8a, 0xda, 0x65,
-	0x29, 0x3d, 0xa8, 0xba, 0xa7, 0xb4, 0x6b, 0x13, 0x43, 0x1a, 0xae, 0x89, 0x49, 0xb7, 0x9c, 0xb4,
-	0x3e, 0x57, 0x32, 0xea, 0xb0, 0x09, 0xdf, 0x9e, 0xd8, 0xa6, 0x15, 0x18, 0xb5, 0x94, 0x68, 0x8a,
-	0x4f, 0xfe, 0x90, 0x29, 0x3e, 0x6c, 0x1c, 0xc6, 0x6e, 0x52, 0x8f, 0xdf, 0x16, 0xbf, 0x08, 0x63,
-	0x3b, 0xe2, 0x67, 0x32, 0x39, 0x50, 0x52, 0xa0, 0xc2, 0xb3, 0xde, 0xd8, 0xea, 0x5a, 0xed, 0xfa,
-	0x52, 0xb8, 0x34, 0x74, 0x6f, 0x54, 0x14, 0x02, 0x43, 0x1a, 0x56, 0xa0, 0xc9, 0x14, 0xd5, 0x4e,
-	0xc7, 0x0a, 0x92, 0xd7, 0xad, 0x56, 0x15, 0x02, 0x43, 0x1a, 0xf2, 0x14, 0x8c, 0x36, 0xad, 0x60,
-	0xd3, 0x6c, 0x26, 0xe3, 0x0a, 0xab, 0x1c, 0x8a, 0x12, 0xcb, 0x9d, 0xe2, 0x56, 0xb0, 0xe9, 0x51,
-	0xee, 0x64, 0xeb, 0xb9, 0x6e, 0xb0, 0x1a, 0xc1, 0x61, 0x8c, 0x92, 0x57, 0xc9, 0x91, 0x2d, 0x93,
-	0xce, 0xea, 0xb0, 0x4a, 0x0a, 0x81, 0x21, 0x0d, 0x9b, 0x55, 0x35, 0xa7, 0xe3, 0x5a, 0x6d, 0x99,
-	0x28, 0x12, 0x99, 0x55, 0x8b, 0x12, 0x8e, 0x9a, 0x82, 0x51, 0xb3, 0x7d, 0xa1, 0xe1, 0x78, 0x9d,
-	0xe4, 0xcb, 0x41, 0x1b, 0x12, 0x8e, 0x9a, 0xc2, 0xb8, 0x09, 0x13, 0x62, 0x7d, 0x2c, 0xb6, 0x4d,
-	0xab, 0xb3, 0xba, 0x48, 0x96, 0x7b, 0x12, 0x8f, 0x2e, 0xa6, 0x24, 0x1e, 0x9d, 0x8e, 0x15, 0x4a,
-	0x49, 0x40, 0xfa, 0xf6, 0x10, 0x14, 0x1e, 0xe2, 0x43, 0x6a, 0xb5, 0xd8, 0x43, 0x6a, 0xc7, 0xf0,
-	0xea, 0x56, 0xda, 0x23, 0x6a, 0xdb, 0x89, 0x47, 0xd4, 0x16, 0x07, 0xcc, 0xb1, 0xbb, 0xe7, 0x03,
-	0x6a, 0x3f, 0xce, 0x81, 0xbe, 0xb6, 0xc1, 0x37, 0x84, 0x8a, 0x65, 0xf3, 0x50, 0xe3, 0x83, 0xef,
-	0x4c, 0x27, 0xd6, 0x99, 0x6b, 0x03, 0xb5, 0x32, 0x5a, 0xf5, 0xbe, 0x2f, 0x38, 0x7e, 0x9c, 0x83,
-	0x72, 0x5a, 0x81, 0x87, 0xf0, 0x68, 0x9c, 0x1d, 0x7f, 0x34, 0xee, 0xca, 0xb1, 0x35, 0xb6, 0xcf,
-	0xe3, 0x71, 0x3f, 0xe8, 0xd3, 0x54, 0xfe, 0x6c, 0xdb, 0xdb, 0xea, 0x40, 0xc8, 0x0d, 0x10, 0x77,
-	0x10, 0x5c, 0xd3, 0x0f, 0x93, 0xb7, 0x61, 0xd4, 0xe7, 0x91, 0x3f, 0x39, 0xb6, 0x2f, 0x66, 0x3c,
-	0x19, 0x18, 0x0b, 0xe9, 0x0d, 0xe2, 0xbf, 0x51, 0xb2, 0x35, 0xbe, 0x97, 0x83, 0xf1, 0x87, 0xf8,
-	0xe4, 0xdf, 0x56, 0x7c, 0xf4, 0x5e, 0x1a, 0x68, 0xf4, 0xfa, 0x8c, 0xd8, 0x37, 0x1e, 0x83, 0xd8,
-	0x53, 0x7b, 0xc4, 0x86, 0xa2, 0xd2, 0xbd, 0x54, 0xb6, 0xed, 0x4b, 0x03, 0x39, 0x5c, 0xc3, 0xed,
-	0x5f, 0x41, 0x7c, 0x0c, 0x45, 0x24, 0x82, 0xa8, 0x43, 0x87, 0x0a, 0xa2, 0x3e, 0x74, 0x67, 0x7e,
-	0xba, 0x2d, 0x3b, 0xf2, 0x40, 0x6c, 0xd9, 0x73, 0xc7, 0x6e, 0xcb, 0x3e, 0xfe, 0xe0, 0x6d, 0xd9,
-	0x88, 0xb3, 0x2f, 0x3f, 0x80, 0xb3, 0xef, 0x7d, 0x38, 0xb5, 0x13, 0x1e, 0xbd, 0x7a, 0xbe, 0xc8,
-	0x77, 0xcc, 0x2e, 0xa6, 0x5a, 0xb0, 0x4c, 0x8d, 0xf0, 0x03, 0x6a, 0x07, 0x91, 0x43, 0x3b, 0xbc,
-	0x1b, 0x78, 0x33, 0x85, 0x1d, 0xa6, 0x0a, 0x49, 0xba, 0x7a, 0xc6, 0x0e, 0xe1, 0xea, 0xf9, 0x66,
-	0x0e, 0x4e, 0x9b, 0x69, 0x6f, 0x76, 0xcb, 0x18, 0xc1, 0x6b, 0x03, 0xf9, 0xea, 0x62, 0x1c, 0xa5,
-	0xe3, 0x2c, 0x0d, 0x85, 0xe9, 0x75, 0x20, 0x4f, 0x86, 0xee, 0x5e, 0x11, 0x91, 0x4f, 0x77, 0xd4,
-	0x7e, 0x3d, 0x19, 0x66, 0x01, 0xde, 0xdb, 0xd5, 0x81, 0xd5, 0x8c, 0x63, 0x08, 0xb5, 0x94, 0x06,
-	0x08, 0xb5, 0x24, 0xfc, 0x70, 0xe3, 0xc7, 0xe4, 0x87, 0xb3, 0x61, 0xca, 0xea, 0x98, 0x4d, 0xba,
-	0xd1, 0x6d, 0xb7, 0x45, 0xde, 0x9d, 0x5f, 0x9e, 0xe0, 0xbc, 0x53, 0x93, 0xbf, 0xae, 0x39, 0x35,
-	0xb3, 0x9d, 0x7c, 0x19, 0x52, 0x27, 0xcd, 0x5e, 0x49, 0x70, 0xc2, 0x1e, 0xde, 0x6c, 0x5a, 0xf2,
-	0xfb, 0x5f, 0x34, 0x60, 0xbd, 0xcd, 0xa3, 0x10, 0xf2, 0x5f, 0x15, 0x2e, 0x87, 0x60, 0x8c, 0xd2,
-	0x90, 0xab, 0x50, 0xac, 0xdb, 0xbe, 0xcc, 0x6f, 0x9d, 0xe4, 0xbb, 0xd4, 0xa7, 0xd8, 0xde, 0xb6,
-	0x74, 0xbd, 0xaa, 0x33, 0x5b, 0xcf, 0xa5, 0x5c, 0x20, 0xd4, 0x78, 0x0c, 0xcb, 0x93, 0x35, 0xce,
-	0x4c, 0x3e, 0x1f, 0x24, 0xc2, 0x06, 0x17, 0xfa, 0xb8, 0x92, 0x96, 0xae, 0xab, 0xd7, 0x8e, 0x26,
-	0xa4, 0x38, 0xf9, 0x28, 0x50, 0xc8, 0x21, 0xf2, 0xf4, 0xdd, 0xf4, 0x3d, 0x9f, 0xbe, 0xbb, 0x01,
-	0x67, 0x83, 0xa0, 0x1d, 0x8b, 0x46, 0xcb, 0xbb, 0xa3, 0xfc, 0x22, 0x71, 0x5e, 0xbc, 0x96, 0xba,
-	0xb9, 0x79, 0x2d, 0x8d, 0x04, 0xfb, 0x95, 0xe5, 0x61, 0xd9, 0xa0, 0xad, 0x5d, 0xc9, 0xe7, 0x07,
-	0x09, 0xcb, 0x86, 0x61, 0x7f, 0x19, 0x96, 0x0d, 0x01, 0x18, 0x95, 0x42, 0xd6, 0xfb, 0x39, 0xd1,
-	0x4f, 0xf2, 0x3d, 0xe6, 0xe8, 0x2e, 0xf1, 0xa8, 0x17, 0xf6, 0xd4, 0x3d, 0xbd, 0xb0, 0x3d, 0x5e,
-	0xe3, 0xd3, 0x47, 0xf0, 0x1a, 0xdf, 0xe6, 0x97, 0x43, 0x57, 0x17, 0xa5, 0xc7, 0x3d, 0x9b, 0xc6,
-	0xc6, 0x2f, 0x71, 0x88, 0xcc, 0x09, 0xfe, 0x13, 0x05, 0x4f, 0xb2, 0x01, 0xa7, 0x5c, 0xa7, 0xde,
-	0xe3, 0x74, 0xe6, 0x2e, 0xf6, 0xc8, 0xe5, 0xee, 0x8d, 0x14, 0x1a, 0x4c, 0x2d, 0xc9, 0x37, 0xf0,
-	0x10, 0xce, 0xef, 0x12, 0xe7, 0xe5, 0x06, 0x1e, 0x82, 0x31, 0x4a, 0x93, 0xf4, 0xc1, 0x3e, 0xfa,
-	0xc0, 0x7c, 0xb0, 0x33, 0x0f, 0xc1, 0x07, 0xfb, 0xd8, 0xa1, 0x7d, 0xb0, 0xff, 0x17, 0x4e, 0xba,
-	0x4e, 0x7d, 0xc9, 0xf2, 0xbd, 0x2e, 0xff, 0xcf, 0x98, 0x4a, 0xb7, 0xde, 0xa4, 0x01, 0x77, 0xe2,
-	0x96, 0x2e, 0x5d, 0x8a, 0x56, 0x52, 0xfc, 0x27, 0xd7, 0x9c, 0xfc, 0x4f, 0x2e, 0xbe, 0xc8, 0x13,
-	0xa5, 0xb8, 0xdd, 0xc3, 0x53, 0x47, 0x52, 0x90, 0x98, 0x26, 0x27, 0xea, 0x02, 0xbe, 0xf0, 0xc0,
-	0x5c, 0xc0, 0xaf, 0x42, 0xc1, 0x6f, 0x75, 0x83, 0xba, 0xb3, 0x6b, 0x73, 0x6f, 0x7e, 0x51, 0xbf,
-	0x35, 0x5d, 0xa8, 0x4a, 0xf8, 0xdd, 0xfd, 0xd9, 0x29, 0xf5, 0x3b, 0x62, 0xe5, 0x4b, 0x08, 0xf9,
-	0x8d, 0x3e, 0x19, 0x95, 0xc6, 0x31, 0x67, 0x54, 0x9e, 0x3d, 0x52, 0x36, 0x65, 0x9a, 0x6b, 0xfb,
-	0x89, 0x9f, 0x05, 0xd7, 0xf6, 0xaf, 0xe4, 0x60, 0x62, 0x27, 0xea, 0x38, 0x91, 0x1e, 0xf7, 0x6c,
-	0x81, 0xba, 0x98, 0x0b, 0xa6, 0x62, 0xb0, 0xbd, 0x2a, 0x06, 0xba, 0x9b, 0x04, 0x60, 0x5c, 0x78,
-	0x6f, 0xd8, 0xf0, 0xc9, 0x87, 0x17, 0x36, 0x1c, 0xdc, 0xad, 0xfe, 0x87, 0x53, 0x70, 0x22, 0xf1,
-	0x06, 0xb5, 0x7e, 0x7e, 0x22, 0x77, 0xd8, 0xe7, 0x27, 0x62, 0xef, 0x43, 0x0c, 0x3d, 0xd0, 0xf7,
-	0x21, 0x86, 0x1f, 0xce, 0xfb, 0x10, 0x53, 0x0f, 0xe2, 0x7d, 0x88, 0xe9, 0x23, 0xbd, 0x0f, 0x11,
-	0x79, 0x9f, 0x63, 0xe4, 0x3e, 0xef, 0x73, 0x2c, 0xc0, 0xa4, 0xca, 0x72, 0xa3, 0xf2, 0x7d, 0x00,
-	0xe1, 0x48, 0xd5, 0x57, 0x3a, 0x16, 0xe3, 0x68, 0x4c, 0xd2, 0x93, 0xff, 0x03, 0x79, 0x9b, 0x17,
-	0x1c, 0x1d, 0xe0, 0x6d, 0xa9, 0xf8, 0x44, 0xe2, 0x6a, 0xb9, 0x7c, 0xde, 0x49, 0x25, 0x40, 0xe4,
-	0x39, 0xec, 0xae, 0xfa, 0x81, 0x42, 0x28, 0x79, 0x13, 0xca, 0x4e, 0xa3, 0xd1, 0x76, 0xcc, 0x7a,
-	0xf8, 0x86, 0x85, 0xf2, 0xed, 0x8a, 0x84, 0xdd, 0x0b, 0x92, 0x41, 0x79, 0xbd, 0x0f, 0x1d, 0xf6,
-	0xe5, 0xc0, 0xac, 0xa7, 0xc9, 0xf8, 0x9b, 0x2f, 0x7e, 0xb9, 0xc8, 0x9b, 0xf9, 0xbf, 0x8e, 0xa3,
-	0x99, 0xf1, 0x07, 0x66, 0x64, 0x83, 0xc3, 0xcb, 0x34, 0x71, 0x2c, 0x26, 0x6b, 0x42, 0x3c, 0x38,
-	0xe3, 0xa6, 0xd9, 0x96, 0xbe, 0x4c, 0x43, 0xbb, 0x97, 0x85, 0x7b, 0x5e, 0x4a, 0x39, 0x93, 0x6a,
-	0x9d, 0xfa, 0xd8, 0x87, 0x73, 0xf4, 0x75, 0x8b, 0xc2, 0x03, 0x7b, 0xdd, 0x22, 0xfe, 0x1a, 0xfc,
-	0xc4, 0xc3, 0x78, 0x0d, 0x9e, 0xfc, 0x34, 0xf5, 0x51, 0x15, 0x61, 0x92, 0xbd, 0x71, 0x1c, 0x83,
-	0xfd, 0x33, 0xf7, 0xb0, 0xca, 0x6f, 0xe7, 0x60, 0x46, 0x4c, 0xa9, 0xb4, 0xbf, 0xfa, 0x91, 0xc9,
-	0x64, 0xc7, 0xe0, 0xca, 0xe7, 0xe1, 0xc1, 0x6a, 0x4c, 0x10, 0xf7, 0x3d, 0xdf, 0x43, 0x38, 0xf9,
-	0x6a, 0x8a, 0x0a, 0x31, 0x39, 0x80, 0xc3, 0x22, 0xfd, 0xa9, 0x8e, 0x93, 0x07, 0x87, 0xd0, 0x1a,
-	0x66, 0xf6, 0xc4, 0x4b, 0x5c, 0x7d, 0xdf, 0x81, 0xbb, 0x11, 0x3d, 0x22, 0xb3, 0x3e, 0xc5, 0x16,
-	0xee, 0x3d, 0xd1, 0x37, 0xe8, 0xbe, 0x98, 0x83, 0x53, 0x69, 0x9b, 0x44, 0x4a, 0x2d, 0xaa, 0xf1,
-	0x5a, 0x0c, 0xe6, 0x11, 0x8d, 0xd6, 0xe1, 0x78, 0x5e, 0x27, 0xf9, 0xf5, 0xd1, 0x88, 0x17, 0x37,
-	0xa0, 0xee, 0x2f, 0xd2, 0xa7, 0x33, 0xa5, 0x4f, 0xc7, 0xfe, 0x3b, 0x21, 0xff, 0x10, 0xff, 0x3b,
-	0x61, 0x34, 0xc3, 0x7f, 0x27, 0x8c, 0x3d, 0xcc, 0xff, 0x4e, 0x28, 0x1c, 0xf2, 0xbf, 0x13, 0x8a,
-	0x3f, 0x33, 0xff, 0x9d, 0x60, 0x7c, 0x94, 0x83, 0xa9, 0xff, 0xea, 0x7f, 0x0e, 0xf7, 0xa3, 0x48,
-	0x18, 0xf5, 0x21, 0xfe, 0x2b, 0xdc, 0x9d, 0x78, 0x60, 0x6a, 0xf9, 0x58, 0x1a, 0xd9, 0x27, 0x40,
-	0xf5, 0x0e, 0xa4, 0x99, 0xc6, 0x87, 0xbb, 0xd7, 0x17, 0xcb, 0xf7, 0x19, 0x3a, 0x74, 0xbe, 0xcf,
-	0x7f, 0xa4, 0xf4, 0x2a, 0x3f, 0x37, 0xdf, 0x7f, 0x50, 0xff, 0x82, 0x75, 0x2a, 0xed, 0x5f, 0xb0,
-	0x12, 0xff, 0x7a, 0x95, 0xfc, 0x17, 0xa4, 0xa1, 0x07, 0xf8, 0x2f, 0x48, 0x13, 0x50, 0x8a, 0xfe,
-	0x7b, 0xf6, 0xdc, 0x77, 0x3e, 0x3a, 0xff, 0xc8, 0xf7, 0x3e, 0x3a, 0xff, 0xc8, 0xf7, 0x3f, 0x3a,
-	0xff, 0xc8, 0x07, 0x07, 0xe7, 0x73, 0xdf, 0x39, 0x38, 0x9f, 0xfb, 0xde, 0xc1, 0xf9, 0xdc, 0xf7,
-	0x0f, 0xce, 0xe7, 0x7e, 0x74, 0x70, 0x3e, 0xf7, 0x6b, 0xff, 0x78, 0xfe, 0x91, 0x37, 0x0a, 0xaa,
-	0x6d, 0xff, 0x19, 0x00, 0x00, 0xff, 0xff, 0x04, 0x35, 0xfa, 0xb9, 0xa2, 0x7e, 0x00, 0x00,
+	0x6e, 0x09, 0x56, 0xa3, 0x48, 0x8c, 0xd3, 0x92, 0x65, 0x98, 0x74, 0x3d, 0xcb, 0xf1, 0xac, 0x60,
+	0x6f, 0xbe, 0x65, 0xfa, 0x3e, 0x67, 0x20, 0xf2, 0xa2, 0x74, 0x38, 0x61, 0x3d, 0x49, 0x80, 0xdd,
+	0x65, 0xc8, 0x53, 0x50, 0x50, 0xc0, 0xf2, 0x39, 0xae, 0xde, 0x8d, 0x8a, 0x9c, 0x2a, 0x01, 0x43,
+	0x8d, 0xed, 0x71, 0x05, 0xf3, 0x7c, 0x96, 0x2b, 0x98, 0xa4, 0x0e, 0xe7, 0xcd, 0x4e, 0xe0, 0xf0,
+	0xdb, 0x07, 0xf1, 0x22, 0x1b, 0xce, 0x36, 0xb5, 0xcb, 0x17, 0xf9, 0xf1, 0x76, 0xf1, 0x60, 0x7f,
+	0xfa, 0xfc, 0xdc, 0x3d, 0xe8, 0xf0, 0x9e, 0x5c, 0x48, 0x1b, 0x0a, 0x54, 0x5e, 0x23, 0x2d, 0x7f,
+	0xac, 0x8f, 0x73, 0x25, 0x7e, 0x17, 0x55, 0x05, 0xb9, 0x05, 0x0c, 0xb5, 0x08, 0xb2, 0x01, 0xa5,
+	0xa6, 0xe3, 0x07, 0x73, 0x2d, 0xcb, 0xf4, 0xa9, 0x5f, 0x7e, 0x8c, 0xcf, 0x93, 0xd4, 0x23, 0xf1,
+	0x8a, 0x22, 0x0b, 0xa7, 0xc9, 0x95, 0xb0, 0x24, 0x46, 0xd9, 0x10, 0xca, 0xbd, 0xcd, 0x1d, 0x3e,
+	0x6a, 0x8e, 0x1d, 0xd0, 0x77, 0x82, 0xf2, 0x05, 0xde, 0x96, 0x27, 0xd3, 0x38, 0xaf, 0x3b, 0xf5,
+	0x6a, 0x9c, 0x5a, 0x6c, 0x0c, 0x09, 0x20, 0x26, 0x79, 0x32, 0x93, 0xdf, 0x75, 0xea, 0x55, 0x97,
+	0xd6, 0xd6, 0xcd, 0xa0, 0xd6, 0x2c, 0x4f, 0xc7, 0xbd, 0x26, 0xeb, 0x11, 0x1c, 0xc6, 0x28, 0x49,
+	0x0d, 0x46, 0xda, 0x22, 0xd7, 0xba, 0xfc, 0x78, 0x1f, 0xea, 0xa3, 0xcc, 0xd7, 0x16, 0x87, 0x8f,
+	0xfc, 0x40, 0xc5, 0x99, 0xfc, 0x76, 0x0e, 0xc6, 0x13, 0xe9, 0x40, 0xe5, 0x8f, 0xf7, 0x73, 0xe4,
+	0xc5, 0x79, 0x55, 0x9e, 0xe4, 0x9d, 0x14, 0x07, 0xde, 0xed, 0x06, 0x61, 0xb2, 0x12, 0xa2, 0xf5,
+	0xfc, 0xba, 0x43, 0xf9, 0x89, 0xbe, 0x5a, 0xcf, 0x79, 0xa8, 0xd6, 0xf3, 0x0f, 0x54, 0x9c, 0xc9,
+	0x25, 0x18, 0x09, 0xac, 0x36, 0x75, 0x3a, 0x41, 0xf9, 0xc9, 0x78, 0x1c, 0x60, 0x43, 0x80, 0x51,
+	0xe1, 0xa7, 0x5e, 0x86, 0xc9, 0x2e, 0x85, 0xf8, 0x48, 0xd9, 0xf8, 0x3f, 0x64, 0x06, 0x70, 0xc4,
+	0x04, 0x39, 0x6e, 0xc3, 0x6d, 0x19, 0x26, 0xe5, 0x53, 0xc5, 0x4c, 0x5b, 0x6a, 0x75, 0xf4, 0x3b,
+	0x64, 0x91, 0x40, 0x28, 0x26, 0x09, 0xb0, 0xbb, 0x0c, 0x9b, 0xb1, 0x35, 0xf1, 0x10, 0x95, 0xc8,
+	0xfc, 0x1d, 0x8a, 0x3b, 0xa9, 0xe6, 0x23, 0x38, 0x8c, 0x51, 0x1a, 0x7f, 0x94, 0x83, 0xb1, 0xd8,
+	0xc9, 0x7d, 0xec, 0x31, 0x8f, 0x25, 0x20, 0x6d, 0xcb, 0xf3, 0x1c, 0x4f, 0xa8, 0x3f, 0x2b, 0x6c,
+	0x4f, 0xf2, 0xe5, 0x2d, 0x67, 0x7e, 0xbb, 0x6e, 0xa5, 0x0b, 0x8b, 0x29, 0x25, 0x8c, 0x2f, 0x0e,
+	0x42, 0x98, 0xd8, 0xa1, 0xaf, 0x94, 0xe6, 0x7a, 0x5e, 0x29, 0x7d, 0x1a, 0x0a, 0x77, 0x7c, 0xc7,
+	0x5e, 0x0f, 0x2f, 0x9e, 0xea, 0xa1, 0x78, 0xb5, 0xba, 0xb6, 0xca, 0x29, 0x35, 0x05, 0xa7, 0x7e,
+	0x7b, 0xc9, 0x6a, 0x05, 0xdd, 0xd7, 0x33, 0x5f, 0x7d, 0x4d, 0xc0, 0x51, 0x53, 0xf0, 0xd7, 0xae,
+	0x76, 0xa8, 0xf6, 0x39, 0x86, 0xaf, 0x5d, 0x31, 0x20, 0x0a, 0x1c, 0x99, 0x85, 0xa2, 0x76, 0x59,
+	0x4a, 0x0f, 0xaa, 0xee, 0x29, 0xed, 0xda, 0xc4, 0x90, 0x86, 0x6b, 0x62, 0xd2, 0x2d, 0x27, 0xad,
+	0xcf, 0xa5, 0x8c, 0x3a, 0x6c, 0xc2, 0xb7, 0x27, 0xb6, 0x69, 0x05, 0x46, 0x2d, 0x25, 0x9a, 0xe2,
+	0x93, 0x3f, 0x64, 0x8a, 0x0f, 0x1b, 0x87, 0x91, 0x9b, 0xd4, 0xe3, 0xb7, 0xc5, 0x2f, 0xc1, 0xc8,
+	0x8e, 0xf8, 0x99, 0x4c, 0x0e, 0x94, 0x14, 0xa8, 0xf0, 0xac, 0x37, 0x36, 0x3b, 0x56, 0xab, 0xbe,
+	0x10, 0x2e, 0x0d, 0xdd, 0x1b, 0x15, 0x85, 0xc0, 0x90, 0x86, 0x15, 0x68, 0x30, 0x45, 0xb5, 0xdd,
+	0xb6, 0x82, 0xe4, 0x75, 0xab, 0x65, 0x85, 0xc0, 0x90, 0x86, 0x3c, 0x09, 0xc3, 0x0d, 0x2b, 0xd8,
+	0x30, 0x1b, 0xc9, 0xb8, 0xc2, 0x32, 0x87, 0xa2, 0xc4, 0x72, 0xa7, 0xb8, 0x15, 0x6c, 0x78, 0x94,
+	0x3b, 0xd9, 0xba, 0xae, 0x1b, 0x2c, 0x47, 0x70, 0x18, 0xa3, 0xe4, 0x55, 0x72, 0x64, 0xcb, 0xa4,
+	0xb3, 0x3a, 0xac, 0x92, 0x42, 0x60, 0x48, 0xc3, 0x66, 0x55, 0xcd, 0x69, 0xbb, 0x56, 0x4b, 0x26,
+	0x8a, 0x44, 0x66, 0xd5, 0xbc, 0x84, 0xa3, 0xa6, 0x60, 0xd4, 0x6c, 0x5f, 0xd8, 0x72, 0xbc, 0x76,
+	0xf2, 0xe5, 0xa0, 0x75, 0x09, 0x47, 0x4d, 0x61, 0xdc, 0x84, 0x31, 0xb1, 0x3e, 0xe6, 0x5b, 0xa6,
+	0xd5, 0x5e, 0x9e, 0x27, 0x8b, 0x5d, 0x89, 0x47, 0x97, 0x52, 0x12, 0x8f, 0x4e, 0xc7, 0x0a, 0xa5,
+	0x24, 0x20, 0x7d, 0x6b, 0x00, 0x0a, 0x0f, 0xf1, 0x21, 0xb5, 0x5a, 0xec, 0x21, 0xb5, 0x63, 0x78,
+	0x75, 0x2b, 0xed, 0x11, 0xb5, 0xed, 0xc4, 0x23, 0x6a, 0xf3, 0x7d, 0xe6, 0xd8, 0xdd, 0xf3, 0x01,
+	0xb5, 0x1f, 0xe5, 0x40, 0x5f, 0xdb, 0xe0, 0x1b, 0x42, 0xc5, 0xb2, 0x79, 0xa8, 0xf1, 0xc1, 0x77,
+	0xa6, 0x13, 0xeb, 0xcc, 0x95, 0xbe, 0x5a, 0x19, 0xad, 0x7a, 0xcf, 0x17, 0x1c, 0x3f, 0xca, 0x41,
+	0x39, 0xad, 0xc0, 0x43, 0x78, 0x34, 0xce, 0x8e, 0x3f, 0x1a, 0x77, 0xf5, 0xd8, 0x1a, 0xdb, 0xe3,
+	0xf1, 0xb8, 0xef, 0xf7, 0x68, 0x2a, 0x7f, 0xb6, 0xed, 0x2d, 0x75, 0x20, 0xe4, 0xfa, 0x88, 0x3b,
+	0x08, 0xae, 0xe9, 0x87, 0xc9, 0x5b, 0x30, 0xec, 0xf3, 0xc8, 0x9f, 0x1c, 0xdb, 0x17, 0x32, 0x9e,
+	0x0c, 0x8c, 0x85, 0xf4, 0x06, 0xf1, 0xdf, 0x28, 0xd9, 0x1a, 0xdf, 0xcd, 0xc1, 0xe8, 0x43, 0x7c,
+	0xf2, 0x6f, 0x33, 0x3e, 0x7a, 0x2f, 0xf6, 0x35, 0x7a, 0x3d, 0x46, 0xec, 0x6b, 0xe7, 0x20, 0xf6,
+	0xd4, 0x1e, 0xb1, 0xa1, 0xa8, 0x74, 0x2f, 0x95, 0x6d, 0xfb, 0x62, 0x5f, 0x0e, 0xd7, 0x70, 0xfb,
+	0x57, 0x10, 0x1f, 0x43, 0x11, 0x89, 0x20, 0xea, 0xc0, 0xa1, 0x82, 0xa8, 0x0f, 0xdd, 0x99, 0x9f,
+	0x6e, 0xcb, 0x0e, 0x3d, 0x10, 0x5b, 0xf6, 0xfc, 0xb1, 0xdb, 0xb2, 0x8f, 0x3d, 0x78, 0x5b, 0x36,
+	0xe2, 0xec, 0xcb, 0xf7, 0xe1, 0xec, 0x7b, 0x0f, 0x4e, 0xed, 0x84, 0x47, 0xaf, 0x9e, 0x2f, 0xf2,
+	0x1d, 0xb3, 0x4b, 0xa9, 0x16, 0x2c, 0x53, 0x23, 0xfc, 0x80, 0xda, 0x41, 0xe4, 0xd0, 0x0e, 0xef,
+	0x06, 0xde, 0x4c, 0x61, 0x87, 0xa9, 0x42, 0x92, 0xae, 0x9e, 0x91, 0x43, 0xb8, 0x7a, 0xbe, 0xde,
+	0xf3, 0x45, 0xf1, 0xc2, 0xb1, 0xbf, 0x28, 0xfe, 0xe8, 0x91, 0x5f, 0x13, 0x7f, 0x22, 0x74, 0xf7,
+	0x8a, 0x88, 0x7c, 0xba, 0xa3, 0xf6, 0xab, 0xc9, 0x30, 0x0b, 0xf0, 0xde, 0xae, 0xf6, 0xad, 0x66,
+	0x1c, 0x43, 0xa8, 0xa5, 0xd4, 0x47, 0xa8, 0x25, 0xe1, 0x87, 0x1b, 0x3d, 0x26, 0x3f, 0x9c, 0x0d,
+	0x13, 0x56, 0xdb, 0x6c, 0xd0, 0xf5, 0x4e, 0xab, 0x25, 0xf2, 0xee, 0xfc, 0xf2, 0x18, 0xe7, 0x9d,
+	0x9a, 0xfc, 0x75, 0xdd, 0xa9, 0x99, 0xad, 0xe4, 0xcb, 0x90, 0x3a, 0x69, 0xf6, 0x6a, 0x82, 0x13,
+	0x76, 0xf1, 0x66, 0xd3, 0x92, 0xdf, 0xff, 0xa2, 0x01, 0xeb, 0x6d, 0x1e, 0x85, 0x90, 0xff, 0x43,
+	0x71, 0x25, 0x04, 0x63, 0x94, 0x86, 0x5c, 0x83, 0x62, 0xdd, 0xf6, 0x65, 0x7e, 0xeb, 0x38, 0xdf,
+	0xa5, 0x3e, 0xc1, 0xf6, 0xb6, 0x85, 0xd5, 0xaa, 0xce, 0x6c, 0x3d, 0x9f, 0x72, 0x81, 0x50, 0xe3,
+	0x31, 0x2c, 0x4f, 0x56, 0x38, 0x33, 0xf9, 0x7c, 0x90, 0x08, 0x1b, 0x5c, 0xec, 0xe1, 0x4a, 0x5a,
+	0x58, 0x55, 0xaf, 0x1d, 0x8d, 0x49, 0x71, 0xf2, 0x51, 0xa0, 0x90, 0x43, 0xe4, 0xe9, 0xbb, 0xc9,
+	0x7b, 0x3e, 0x7d, 0x77, 0x03, 0xce, 0x06, 0x41, 0x2b, 0x16, 0x8d, 0x96, 0x77, 0x47, 0xf9, 0x45,
+	0xe2, 0xbc, 0x78, 0x2d, 0x75, 0x63, 0xe3, 0x7a, 0x1a, 0x09, 0xf6, 0x2a, 0xcb, 0xc3, 0xb2, 0x41,
+	0x4b, 0xbb, 0x92, 0x2f, 0xf4, 0x13, 0x96, 0x0d, 0xc3, 0xfe, 0x32, 0x2c, 0x1b, 0x02, 0x30, 0x2a,
+	0x85, 0xac, 0xf5, 0x72, 0xa2, 0x9f, 0xe4, 0x7b, 0xcc, 0xd1, 0x5d, 0xe2, 0x51, 0x2f, 0xec, 0xa9,
+	0x7b, 0x7a, 0x61, 0xbb, 0xbc, 0xc6, 0xa7, 0x8f, 0xe0, 0x35, 0xbe, 0xcd, 0x2f, 0x87, 0x2e, 0xcf,
+	0x4b, 0x8f, 0x7b, 0x36, 0x8d, 0x8d, 0x5f, 0xe2, 0x10, 0x99, 0x13, 0xfc, 0x27, 0x0a, 0x9e, 0x64,
+	0x1d, 0x4e, 0xb9, 0x4e, 0xbd, 0xcb, 0xe9, 0xcc, 0x5d, 0xec, 0x91, 0xcb, 0xdd, 0xeb, 0x29, 0x34,
+	0x98, 0x5a, 0x92, 0x6f, 0xe0, 0x21, 0x9c, 0xdf, 0x25, 0xce, 0xcb, 0x0d, 0x3c, 0x04, 0x63, 0x94,
+	0x26, 0xe9, 0x83, 0x7d, 0xf4, 0x81, 0xf9, 0x60, 0xa7, 0x1e, 0x82, 0x0f, 0xf6, 0xdc, 0xa1, 0x7d,
+	0xb0, 0xbf, 0x08, 0x27, 0x5d, 0xa7, 0xbe, 0x60, 0xf9, 0x5e, 0x87, 0xff, 0xcb, 0x4e, 0xa5, 0x53,
+	0x6f, 0xd0, 0x80, 0x3b, 0x71, 0x4b, 0x97, 0x2f, 0x47, 0x2b, 0x29, 0xfe, 0xc5, 0x6c, 0x46, 0xfe,
+	0x8b, 0x19, 0x5f, 0xe4, 0x89, 0x52, 0xdc, 0xee, 0xe1, 0xa9, 0x23, 0x29, 0x48, 0x4c, 0x93, 0x13,
+	0x75, 0x01, 0x5f, 0x7c, 0x60, 0x2e, 0xe0, 0x57, 0xa0, 0xe0, 0x37, 0x3b, 0x41, 0xdd, 0xd9, 0xb5,
+	0xb9, 0x37, 0xbf, 0xa8, 0xdf, 0x9a, 0x2e, 0x54, 0x25, 0xfc, 0xee, 0xfe, 0xf4, 0x84, 0xfa, 0x1d,
+	0xb1, 0xf2, 0x25, 0x84, 0xfc, 0x56, 0x8f, 0x8c, 0x4a, 0xe3, 0x98, 0x33, 0x2a, 0xcf, 0x1e, 0x29,
+	0x9b, 0x32, 0xcd, 0xb5, 0xfd, 0xf8, 0x4f, 0x83, 0x6b, 0xfb, 0xd7, 0x72, 0x30, 0xb6, 0x13, 0x75,
+	0x9c, 0x48, 0x8f, 0x7b, 0xb6, 0x40, 0x5d, 0xcc, 0x05, 0x53, 0x31, 0xd8, 0x5e, 0x15, 0x03, 0xdd,
+	0x4d, 0x02, 0x30, 0x2e, 0xbc, 0x3b, 0x6c, 0xf8, 0xc4, 0xc3, 0x0b, 0x1b, 0xf6, 0xef, 0x56, 0xff,
+	0xfb, 0x49, 0x38, 0x91, 0x78, 0x83, 0x5a, 0x3f, 0x3f, 0x91, 0x3b, 0xec, 0xf3, 0x13, 0xb1, 0xf7,
+	0x21, 0x06, 0x1e, 0xe8, 0xfb, 0x10, 0x83, 0x0f, 0xe7, 0x7d, 0x88, 0x89, 0x07, 0xf1, 0x3e, 0xc4,
+	0xe4, 0x91, 0xde, 0x87, 0x88, 0xbc, 0xcf, 0x31, 0x74, 0x9f, 0xf7, 0x39, 0xe6, 0x60, 0x5c, 0x65,
+	0xb9, 0x51, 0xf9, 0x3e, 0x80, 0x70, 0xa4, 0xea, 0x2b, 0x1d, 0xf3, 0x71, 0x34, 0x26, 0xe9, 0xc9,
+	0x2f, 0x40, 0xde, 0xe6, 0x05, 0x87, 0xfb, 0x78, 0x5b, 0x2a, 0x3e, 0x91, 0xb8, 0x5a, 0x2e, 0x9f,
+	0x77, 0x52, 0x09, 0x10, 0x79, 0x0e, 0xbb, 0xab, 0x7e, 0xa0, 0x10, 0x4a, 0xde, 0x80, 0xb2, 0xb3,
+	0xb5, 0xd5, 0x72, 0xcc, 0x7a, 0xf8, 0x86, 0x85, 0xf2, 0xed, 0x8a, 0x84, 0xdd, 0x8b, 0x92, 0x41,
+	0x79, 0xad, 0x07, 0x1d, 0xf6, 0xe4, 0xc0, 0xac, 0xa7, 0xf1, 0xf8, 0x9b, 0x2f, 0x7e, 0xb9, 0xc8,
+	0x9b, 0xf9, 0xff, 0x8e, 0xa3, 0x99, 0xf1, 0x07, 0x66, 0x64, 0x83, 0xc3, 0xcb, 0x34, 0x71, 0x2c,
+	0x26, 0x6b, 0x42, 0x3c, 0x38, 0xe3, 0xa6, 0xd9, 0x96, 0xbe, 0x4c, 0x43, 0xbb, 0x97, 0x85, 0x7b,
+	0x41, 0x4a, 0x39, 0x93, 0x6a, 0x9d, 0xfa, 0xd8, 0x83, 0x73, 0xf4, 0x75, 0x8b, 0xc2, 0x03, 0x7b,
+	0xdd, 0x22, 0xfe, 0x1a, 0xfc, 0xd8, 0xc3, 0x78, 0x0d, 0x9e, 0xfc, 0x24, 0xf5, 0x51, 0x15, 0x61,
+	0x92, 0xbd, 0x7e, 0x1c, 0x83, 0xfd, 0x53, 0xf7, 0xb0, 0xca, 0xef, 0xe6, 0x60, 0x4a, 0x4c, 0xa9,
+	0xb4, 0xbf, 0xfa, 0x91, 0xc9, 0x64, 0xc7, 0xe0, 0xca, 0xe7, 0xe1, 0xc1, 0x6a, 0x4c, 0x10, 0xf7,
+	0x3d, 0xdf, 0x43, 0x38, 0xf9, 0x72, 0x8a, 0x0a, 0x31, 0xde, 0x87, 0xc3, 0x22, 0xfd, 0xa9, 0x8e,
+	0x93, 0x07, 0x87, 0xd1, 0x1a, 0xfe, 0xb0, 0xa7, 0x0b, 0x85, 0xf0, 0x1a, 0xad, 0x1f, 0x9f, 0x0b,
+	0x25, 0xfa, 0x84, 0xc8, 0x51, 0x1c, 0x29, 0x53, 0x7b, 0xe2, 0xb5, 0xb0, 0x9e, 0x6f, 0xd5, 0xdd,
+	0x88, 0x1e, 0xe3, 0x59, 0x9f, 0x8b, 0x0b, 0xf7, 0xc7, 0xe8, 0x3b, 0x79, 0x9f, 0xcf, 0xc1, 0xa9,
+	0xb4, 0x8d, 0x2c, 0xa5, 0x16, 0xd5, 0x78, 0x2d, 0xfa, 0xf3, 0xda, 0x46, 0xeb, 0x70, 0x3c, 0x2f,
+	0xa8, 0xfc, 0xe6, 0x70, 0xc4, 0xd3, 0x1c, 0x50, 0xf7, 0xe7, 0x29, 0xde, 0x99, 0x52, 0xbc, 0x63,
+	0xff, 0xef, 0x90, 0x7f, 0x88, 0xff, 0xef, 0x30, 0x9c, 0xe1, 0xff, 0x1d, 0x46, 0x1e, 0xe6, 0xff,
+	0x3b, 0x14, 0x0e, 0xf9, 0xff, 0x0e, 0xc5, 0x9f, 0x9a, 0xff, 0x77, 0x30, 0x3e, 0xcc, 0xc1, 0xc4,
+	0xff, 0xf4, 0x3f, 0xb0, 0xfb, 0x61, 0x24, 0xd4, 0xfb, 0x10, 0xff, 0xb9, 0xee, 0x4e, 0x3c, 0x78,
+	0xb6, 0x78, 0x2c, 0x8d, 0xec, 0x11, 0x44, 0x7b, 0x1b, 0xd2, 0xcc, 0xf7, 0xc3, 0xdd, 0x3d, 0x8c,
+	0xe5, 0x24, 0x0d, 0x1c, 0x3a, 0x27, 0xe9, 0xbf, 0x52, 0x7a, 0x95, 0x9f, 0xed, 0xef, 0x3d, 0xa8,
+	0x7f, 0xea, 0x3a, 0x95, 0xf6, 0x4f, 0x5d, 0x89, 0x7f, 0xe6, 0x4a, 0xfe, 0x53, 0xd3, 0xc0, 0x03,
+	0xfc, 0xa7, 0xa6, 0x31, 0x28, 0x45, 0xff, 0x13, 0x7d, 0xe6, 0xdb, 0x1f, 0x5e, 0x78, 0xe4, 0xbb,
+	0x1f, 0x5e, 0x78, 0xe4, 0x7b, 0x1f, 0x5e, 0x78, 0xe4, 0xfd, 0x83, 0x0b, 0xb9, 0x6f, 0x1f, 0x5c,
+	0xc8, 0x7d, 0xf7, 0xe0, 0x42, 0xee, 0x7b, 0x07, 0x17, 0x72, 0x3f, 0x3c, 0xb8, 0x90, 0xfb, 0x8d,
+	0x7f, 0xbe, 0xf0, 0xc8, 0xeb, 0x05, 0xd5, 0xb6, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x93,
+	0x85, 0x41, 0x78, 0x80, 0x00, 0x00,
 }
 
 func (m *Amount) Marshal() (dAtA []byte, err error) {
@@ -3544,6 +3578,52 @@ func (m *ArtifactRepositoryRef) MarshalToSizedBuffer(dAtA []byte) (int, error) {
 	return len(dAtA) - i, nil
 }
 
+func (m *ArtifactRepositoryRefStatus) Marshal() (dAtA []byte, err error) {
+	size := m.Size()
+	dAtA = make([]byte, size)
+	n, err := m.MarshalToSizedBuffer(dAtA[:size])
+	if err != nil {
+		return nil, err
+	}
+	return dAtA[:n], nil
+}
+
+func (m *ArtifactRepositoryRefStatus) MarshalTo(dAtA []byte) (int, error) {
+	size := m.Size()
+	return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ArtifactRepositoryRefStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+	i := len(dAtA)
+	_ = i
+	var l int
+	_ = l
+	i--
+	if m.Default {
+		dAtA[i] = 1
+	} else {
+		dAtA[i] = 0
+	}
+	i--
+	dAtA[i] = 0x18
+	i -= len(m.Namespace)
+	copy(dAtA[i:], m.Namespace)
+	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace)))
+	i--
+	dAtA[i] = 0x12
+	{
+		size, err := m.ArtifactRepositoryRef.MarshalToSizedBuffer(dAtA[:i])
+		if err != nil {
+			return 0, err
+		}
+		i -= size
+		i = encodeVarintGenerated(dAtA, i, uint64(size))
+	}
+	i--
+	dAtA[i] = 0xa
+	return len(dAtA) - i, nil
+}
+
 func (m *ArtifactoryArtifact) Marshal() (dAtA []byte, err error) {
 	size := m.Size()
 	dAtA = make([]byte, size)
@@ -8241,6 +8321,20 @@ func (m *WorkflowStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
 	_ = i
 	var l int
 	_ = l
+	if m.ArtifactRepositoryRef != nil {
+		{
+			size, err := m.ArtifactRepositoryRef.MarshalToSizedBuffer(dAtA[:i])
+			if err != nil {
+				return 0, err
+			}
+			i -= size
+			i = encodeVarintGenerated(dAtA, i, uint64(size))
+		}
+		i--
+		dAtA[i] = 0x1
+		i--
+		dAtA[i] = 0x92
+	}
 	i -= len(m.Progress)
 	copy(dAtA[i:], m.Progress)
 	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Progress)))
@@ -8893,6 +8987,20 @@ func (m *ArtifactRepositoryRef) Size() (n int) {
 	return n
 }
 
+func (m *ArtifactRepositoryRefStatus) Size() (n int) {
+	if m == nil {
+		return 0
+	}
+	var l int
+	_ = l
+	l = m.ArtifactRepositoryRef.Size()
+	n += 1 + l + sovGenerated(uint64(l))
+	l = len(m.Namespace)
+	n += 1 + l + sovGenerated(uint64(l))
+	n += 2
+	return n
+}
+
 func (m *ArtifactoryArtifact) Size() (n int) {
 	if m == nil {
 		return 0
@@ -10660,6 +10768,10 @@ func (m *WorkflowStatus) Size() (n int) {
 	n += 2 + sovGenerated(uint64(m.EstimatedDuration))
 	l = len(m.Progress)
 	n += 2 + l + sovGenerated(uint64(l))
+	if m.ArtifactRepositoryRef != nil {
+		l = m.ArtifactRepositoryRef.Size()
+		n += 2 + l + sovGenerated(uint64(l))
+	}
 	return n
 }
 
@@ -10854,17 +10966,6 @@ func (this *ArtifactLocation) String() string {
 	}, "")
 	return s
 }
-func (this *ArtifactRepositoryRef) String() string {
-	if this == nil {
-		return "nil"
-	}
-	s := strings.Join([]string{`&ArtifactRepositoryRef{`,
-		`ConfigMap:` + fmt.Sprintf("%v", this.ConfigMap) + `,`,
-		`Key:` + fmt.Sprintf("%v", this.Key) + `,`,
-		`}`,
-	}, "")
-	return s
-}
 func (this *ArtifactoryArtifact) String() string {
 	if this == nil {
 		return "nil"
@@ -12056,7 +12157,7 @@ func (this *WorkflowSpec) String() string {
 		`Volumes:` + repeatedStringForVolumes + `,`,
 		`VolumeClaimTemplates:` + repeatedStringForVolumeClaimTemplates + `,`,
 		`Parallelism:` + valueToStringGenerated(this.Parallelism) + `,`,
-		`ArtifactRepositoryRef:` + strings.Replace(this.ArtifactRepositoryRef.String(), "ArtifactRepositoryRef", "ArtifactRepositoryRef", 1) + `,`,
+		`ArtifactRepositoryRef:` + strings.Replace(fmt.Sprintf("%v", this.ArtifactRepositoryRef), "ArtifactRepositoryRef", "ArtifactRepositoryRef", 1) + `,`,
 		`Suspend:` + valueToStringGenerated(this.Suspend) + `,`,
 		`NodeSelector:` + mapStringForNodeSelector + `,`,
 		`Affinity:` + strings.Replace(fmt.Sprintf("%v", this.Affinity), "Affinity", "v1.Affinity", 1) + `,`,
@@ -12151,6 +12252,7 @@ func (this *WorkflowStatus) String() string {
 		`Synchronization:` + strings.Replace(this.Synchronization.String(), "SynchronizationStatus", "SynchronizationStatus", 1) + `,`,
 		`EstimatedDuration:` + fmt.Sprintf("%v", this.EstimatedDuration) + `,`,
 		`Progress:` + fmt.Sprintf("%v", this.Progress) + `,`,
+		`ArtifactRepositoryRef:` + strings.Replace(fmt.Sprintf("%v", this.ArtifactRepositoryRef), "ArtifactRepositoryRefStatus", "ArtifactRepositoryRefStatus", 1) + `,`,
 		`}`,
 	}, "")
 	return s
@@ -13433,6 +13535,144 @@ func (m *ArtifactRepositoryRef) Unmarshal(dAtA []byte) error {
 	}
 	return nil
 }
+func (m *ArtifactRepositoryRefStatus) Unmarshal(dAtA []byte) error {
+	l := len(dAtA)
+	iNdEx := 0
+	for iNdEx < l {
+		preIndex := iNdEx
+		var wire uint64
+		for shift := uint(0); ; shift += 7 {
+			if shift >= 64 {
+				return ErrIntOverflowGenerated
+			}
+			if iNdEx >= l {
+				return io.ErrUnexpectedEOF
+			}
+			b := dAtA[iNdEx]
+			iNdEx++
+			wire |= uint64(b&0x7F) << shift
+			if b < 0x80 {
+				break
+			}
+		}
+		fieldNum := int32(wire >> 3)
+		wireType := int(wire & 0x7)
+		if wireType == 4 {
+			return fmt.Errorf("proto: ArtifactRepositoryRefStatus: wiretype end group for non-group")
+		}
+		if fieldNum <= 0 {
+			return fmt.Errorf("proto: ArtifactRepositoryRefStatus: illegal tag %d (wire type %d)", fieldNum, wire)
+		}
+		switch fieldNum {
+		case 1:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field ArtifactRepositoryRef", wireType)
+			}
+			var msglen int
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				msglen |= int(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			if msglen < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			if err := m.ArtifactRepositoryRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+				return err
+			}
+			iNdEx = postIndex
+		case 2:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field Namespace", 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.Namespace = string(dAtA[iNdEx:postIndex])
+			iNdEx = postIndex
+		case 3:
+			if wireType != 0 {
+				return fmt.Errorf("proto: wrong wireType = %d for field Default", wireType)
+			}
+			var v int
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				v |= int(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			m.Default = bool(v != 0)
+		default:
+			iNdEx = preIndex
+			skippy, err := skipGenerated(dAtA[iNdEx:])
+			if err != nil {
+				return err
+			}
+			if skippy < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if (iNdEx + skippy) > l {
+				return io.ErrUnexpectedEOF
+			}
+			iNdEx += skippy
+		}
+	}
+
+	if iNdEx > l {
+		return io.ErrUnexpectedEOF
+	}
+	return nil
+}
 func (m *ArtifactoryArtifact) Unmarshal(dAtA []byte) error {
 	l := len(dAtA)
 	iNdEx := 0
@@ -28958,6 +29198,42 @@ func (m *WorkflowStatus) Unmarshal(dAtA []byte) error {
 			}
 			m.Progress = Progress(dAtA[iNdEx:postIndex])
 			iNdEx = postIndex
+		case 18:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field ArtifactRepositoryRef", wireType)
+			}
+			var msglen int
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				msglen |= int(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			if msglen < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			if m.ArtifactRepositoryRef == nil {
+				m.ArtifactRepositoryRef = &ArtifactRepositoryRefStatus{}
+			}
+			if err := m.ArtifactRepositoryRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+				return err
+			}
+			iNdEx = postIndex
 		default:
 			iNdEx = preIndex
 			skippy, err := skipGenerated(dAtA[iNdEx:])
diff --git a/pkg/apis/workflow/v1alpha1/generated.proto b/pkg/apis/workflow/v1alpha1/generated.proto
index 105ae6e63..d8a427ebe 100644
--- a/pkg/apis/workflow/v1alpha1/generated.proto
+++ b/pkg/apis/workflow/v1alpha1/generated.proto
@@ -111,12 +111,26 @@ message ArtifactLocation {
   optional GCSArtifact gcs = 9;
 }
 
+// +protobuf.options.(gogoproto.goproto_stringer)=false
 message ArtifactRepositoryRef {
+  // The name of the config map. Defaults to "artifact-repositories".
   optional string configMap = 1;
 
+  // The config map key. Defaults to the value of the "workflows.argoproj.io/default-artifact-repository" annotation.
   optional string key = 2;
 }
 
+// +protobuf.options.(gogoproto.goproto_stringer)=false
+message ArtifactRepositoryRefStatus {
+  optional ArtifactRepositoryRef artifactRepositoryRef = 1;
+
+  // The namespace of the config map. Defaults to the workflow's namespace, or the controller's namespace (if found).
+  optional string namespace = 2;
+
+  // If this ref represents the default artifact repository, rather than a config map.
+  optional bool default = 3;
+}
+
 // ArtifactoryArtifact is the location of an artifactory artifact
 message ArtifactoryArtifact {
   // URL of the artifact
@@ -1497,6 +1511,9 @@ message WorkflowStatus {
 
   // Synchronization stores the status of synchronization locks
   optional SynchronizationStatus synchronization = 15;
+
+  // ArtifactRepositoryRef is used to cache the repository to use so we do not need to determine it everytime we reconcile.
+  optional ArtifactRepositoryRefStatus artifactRepositoryRef = 18;
 }
 
 // WorkflowStep is a reference to a template to execute in a series of step
diff --git a/pkg/apis/workflow/v1alpha1/openapi_generated.go b/pkg/apis/workflow/v1alpha1/openapi_generated.go
index a8a5a797d..378d66bb3 100644
--- a/pkg/apis/workflow/v1alpha1/openapi_generated.go
+++ b/pkg/apis/workflow/v1alpha1/openapi_generated.go
@@ -19,6 +19,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
 		"github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.Artifact":                    schema_pkg_apis_workflow_v1alpha1_Artifact(ref),
 		"github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.ArtifactLocation":            schema_pkg_apis_workflow_v1alpha1_ArtifactLocation(ref),
 		"github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.ArtifactRepositoryRef":       schema_pkg_apis_workflow_v1alpha1_ArtifactRepositoryRef(ref),
+		"github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.ArtifactRepositoryRefStatus": schema_pkg_apis_workflow_v1alpha1_ArtifactRepositoryRefStatus(ref),
 		"github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.ArtifactoryArtifact":         schema_pkg_apis_workflow_v1alpha1_ArtifactoryArtifact(ref),
 		"github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.ArtifactoryAuth":             schema_pkg_apis_workflow_v1alpha1_ArtifactoryAuth(ref),
 		"github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.Backoff":                     schema_pkg_apis_workflow_v1alpha1_Backoff(ref),
@@ -413,14 +414,56 @@ func schema_pkg_apis_workflow_v1alpha1_ArtifactRepositoryRef(ref common.Referenc
 				Properties: map[string]spec.Schema{
 					"configMap": {
 						SchemaProps: spec.SchemaProps{
-							Type:   []string{"string"},
-							Format: "",
+							Description: "The name of the config map. Defaults to \"artifact-repositories\".",
+							Type:        []string{"string"},
+							Format:      "",
 						},
 					},
 					"key": {
 						SchemaProps: spec.SchemaProps{
-							Type:   []string{"string"},
-							Format: "",
+							Description: "The config map key. Defaults to the value of the \"workflows.argoproj.io/default-artifact-repository\" annotation.",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+				},
+			},
+		},
+	}
+}
+
+func schema_pkg_apis_workflow_v1alpha1_ArtifactRepositoryRefStatus(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Type: []string{"object"},
+				Properties: map[string]spec.Schema{
+					"configMap": {
+						SchemaProps: spec.SchemaProps{
+							Description: "The name of the config map. Defaults to \"artifact-repositories\".",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"key": {
+						SchemaProps: spec.SchemaProps{
+							Description: "The config map key. Defaults to the value of the \"workflows.argoproj.io/default-artifact-repository\" annotation.",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"namespace": {
+						SchemaProps: spec.SchemaProps{
+							Description: "The namespace of the config map. Defaults to the workflow's namespace, or the controller's namespace (if found).",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"default": {
+						SchemaProps: spec.SchemaProps{
+							Description: "If this ref represents the default artifact repository, rather than a config map.",
+							Type:        []string{"boolean"},
+							Format:      "",
 						},
 					},
 				},
@@ -4918,11 +4961,17 @@ func schema_pkg_apis_workflow_v1alpha1_WorkflowStatus(ref common.ReferenceCallba
 							Ref:         ref("github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.SynchronizationStatus"),
 						},
 					},
+					"artifactRepositoryRef": {
+						SchemaProps: spec.SchemaProps{
+							Description: "ArtifactRepositoryRef is used to cache the repository to use so we do not need to determine it everytime we reconcile.",
+							Ref:         ref("github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.ArtifactRepositoryRefStatus"),
+						},
+					},
 				},
 			},
 		},
 		Dependencies: []string{
-			"github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.Condition", "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.NodeStatus", "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.Outputs", "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.SynchronizationStatus", "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.Template", "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.WorkflowSpec", "k8s.io/api/core/v1.Volume", "k8s.io/apimachinery/pkg/apis/meta/v1.Time"},
+			"github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.ArtifactRepositoryRefStatus", "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.Condition", "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.NodeStatus", "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.Outputs", "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.SynchronizationStatus", "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.Template", "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1.WorkflowSpec", "k8s.io/api/core/v1.Volume", "k8s.io/apimachinery/pkg/apis/meta/v1.Time"},
 	}
 }
 
diff --git a/pkg/apis/workflow/v1alpha1/workflow_types.go b/pkg/apis/workflow/v1alpha1/workflow_types.go
index 1d776b439..aa5c683e5 100644
--- a/pkg/apis/workflow/v1alpha1/workflow_types.go
+++ b/pkg/apis/workflow/v1alpha1/workflow_types.go
@@ -940,18 +940,56 @@ func (a *ArtifactLocation) GetKey() string {
 	return ""
 }
 
+// +protobuf.options.(gogoproto.goproto_stringer)=false
 type ArtifactRepositoryRef struct {
+	// The name of the config map. Defaults to "artifact-repositories".
 	ConfigMap string `json:"configMap,omitempty" protobuf:"bytes,1,opt,name=configMap"`
-	Key       string `json:"key,omitempty" protobuf:"bytes,2,opt,name=key"`
+	// The config map key. Defaults to the value of the "workflows.argoproj.io/default-artifact-repository" annotation.
+	Key string `json:"key,omitempty" protobuf:"bytes,2,opt,name=key"`
 }
 
-func (r ArtifactRepositoryRef) GetConfigMap() string {
-	if r.ConfigMap == "" {
-		return "artifact-repositories"
+func (r *ArtifactRepositoryRef) GetConfigMapOr(configMap string) string {
+	if r == nil || r.ConfigMap == "" {
+		return configMap
 	}
 	return r.ConfigMap
 }
 
+func (r *ArtifactRepositoryRef) GetKeyOr(key string) string {
+	if r == nil || r.Key == "" {
+		return key
+	}
+	return r.Key
+}
+
+func (r *ArtifactRepositoryRef) String() string {
+	if r == nil {
+		return "nil"
+	}
+	return fmt.Sprintf("%s#%s", r.ConfigMap, r.Key)
+}
+
+var DefaultArtifactRepositoryRefStatus = &ArtifactRepositoryRefStatus{Default: true}
+
+// +protobuf.options.(gogoproto.goproto_stringer)=false
+type ArtifactRepositoryRefStatus struct {
+	ArtifactRepositoryRef `json:",inline" protobuf:"bytes,1,opt,name=artifactRepositoryRef"`
+	// The namespace of the config map. Defaults to the workflow's namespace, or the controller's namespace (if found).
+	Namespace string `json:"namespace,omitempty" protobuf:"bytes,2,opt,name=namespace"`
+	// If this ref represents the default artifact repository, rather than a config map.
+	Default bool `json:"default,omitempty" protobuf:"varint,3,opt,name=default"`
+}
+
+func (r *ArtifactRepositoryRefStatus) String() string {
+	if r == nil {
+		return "nil"
+	}
+	if r.Default {
+		return "default-artifact-repository"
+	}
+	return fmt.Sprintf("%s/%s", r.Namespace, r.ArtifactRepositoryRef.String())
+}
+
 // Outputs hold parameters, artifacts, and results from a step
 type Outputs struct {
 	// Parameters holds the list of output parameters produced by a step
@@ -1217,6 +1255,9 @@ type WorkflowStatus struct {
 
 	// Synchronization stores the status of synchronization locks
 	Synchronization *SynchronizationStatus `json:"synchronization,omitempty" protobuf:"bytes,15,opt,name=synchronization"`
+
+	// ArtifactRepositoryRef is used to cache the repository to use so we do not need to determine it everytime we reconcile.
+	ArtifactRepositoryRef *ArtifactRepositoryRefStatus `json:"artifactRepositoryRef,omitempty" protobuf:"bytes,18,opt,name=artifactRepositoryRef"`
 }
 
 func (ws *WorkflowStatus) IsOffloadNodeStatus() bool {
diff --git a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go
index 66b4774b6..829c5adc2 100644
--- a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go
+++ b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go
@@ -193,6 +193,23 @@ func (in *ArtifactRepositoryRef) DeepCopy() *ArtifactRepositoryRef {
 	return out
 }
 
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ArtifactRepositoryRefStatus) DeepCopyInto(out *ArtifactRepositoryRefStatus) {
+	*out = *in
+	out.ArtifactRepositoryRef = in.ArtifactRepositoryRef
+	return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArtifactRepositoryRefStatus.
+func (in *ArtifactRepositoryRefStatus) DeepCopy() *ArtifactRepositoryRefStatus {
+	if in == nil {
+		return nil
+	}
+	out := new(ArtifactRepositoryRefStatus)
+	in.DeepCopyInto(out)
+	return out
+}
+
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *ArtifactoryArtifact) DeepCopyInto(out *ArtifactoryArtifact) {
 	*out = *in
@@ -2500,6 +2517,11 @@ func (in *WorkflowStatus) DeepCopyInto(out *WorkflowStatus) {
 		*out = new(SynchronizationStatus)
 		(*in).DeepCopyInto(*out)
 	}
+	if in.ArtifactRepositoryRef != nil {
+		in, out := &in.ArtifactRepositoryRef, &out.ArtifactRepositoryRef
+		*out = new(ArtifactRepositoryRefStatus)
+		**out = **in
+	}
 	return
 }
 
diff --git a/server/apiserver/argoserver.go b/server/apiserver/argoserver.go
index 2f5864d23..66412d02c 100644
--- a/server/apiserver/argoserver.go
+++ b/server/apiserver/argoserver.go
@@ -46,6 +46,7 @@ import (
 	grpcutil "github.com/argoproj/argo/util/grpc"
 	"github.com/argoproj/argo/util/instanceid"
 	"github.com/argoproj/argo/util/json"
+	"github.com/argoproj/argo/workflow/artifactrepositories"
 	"github.com/argoproj/argo/workflow/events"
 	"github.com/argoproj/argo/workflow/hydrator"
 )
@@ -162,7 +163,8 @@ func (as *argoServer) Run(ctx context.Context, port int, browserOpenFunc func(st
 		wfArchive = sqldb.NewWorkflowArchive(session, persistence.GetClusterName(), as.managedNamespace, instanceIDService)
 	}
 	eventRecorderManager := events.NewEventRecorderManager(as.kubeClientset)
-	artifactServer := artifacts.NewArtifactServer(as.gatekeeper, hydrator.New(offloadRepo), wfArchive, instanceIDService)
+	artifactRepositories := artifactrepositories.New(as.kubeClientset, as.managedNamespace, &config.ArtifactRepository)
+	artifactServer := artifacts.NewArtifactServer(as.gatekeeper, hydrator.New(offloadRepo), wfArchive, instanceIDService, artifactRepositories)
 	eventServer := event.NewController(instanceIDService, eventRecorderManager, as.eventQueueSize, as.eventWorkerCount)
 	grpcServer := as.newGRPCServer(instanceIDService, offloadRepo, wfArchive, eventServer, config.Links)
 	httpServer := as.newHTTPServer(ctx, port, artifactServer)
diff --git a/server/artifacts/artifact_server.go b/server/artifacts/artifact_server.go
index 63888e0c7..f2f260731 100644
--- a/server/artifacts/artifact_server.go
+++ b/server/artifacts/artifact_server.go
@@ -21,24 +21,26 @@ import (
 	wfv1 "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1"
 	"github.com/argoproj/argo/server/auth"
 	"github.com/argoproj/argo/util/instanceid"
+	"github.com/argoproj/argo/workflow/artifactrepositories"
 	artifact "github.com/argoproj/argo/workflow/artifacts"
 	"github.com/argoproj/argo/workflow/hydrator"
 )
 
 type ArtifactServer struct {
-	gatekeeper        auth.Gatekeeper
-	hydrator          hydrator.Interface
-	wfArchive         sqldb.WorkflowArchive
-	instanceIDService instanceid.Service
-	artDriverFactory  artifact.NewDriverFunc
+	gatekeeper           auth.Gatekeeper
+	hydrator             hydrator.Interface
+	wfArchive            sqldb.WorkflowArchive
+	instanceIDService    instanceid.Service
+	artDriverFactory     artifact.NewDriverFunc
+	artifactRepositories artifactrepositories.Interface
 }
 
-func NewArtifactServer(authN auth.Gatekeeper, hydrator hydrator.Interface, wfArchive sqldb.WorkflowArchive, instanceIDService instanceid.Service) *ArtifactServer {
-	return newArtifactServer(authN, hydrator, wfArchive, instanceIDService, artifact.NewDriver)
+func NewArtifactServer(authN auth.Gatekeeper, hydrator hydrator.Interface, wfArchive sqldb.WorkflowArchive, instanceIDService instanceid.Service, artifactRepositories artifactrepositories.Interface) *ArtifactServer {
+	return newArtifactServer(authN, hydrator, wfArchive, instanceIDService, artifact.NewDriver, artifactRepositories)
 }
 
-func newArtifactServer(authN auth.Gatekeeper, hydrator hydrator.Interface, wfArchive sqldb.WorkflowArchive, instanceIDService instanceid.Service, artDriverFactory artifact.NewDriverFunc) *ArtifactServer {
-	return &ArtifactServer{authN, hydrator, wfArchive, instanceIDService, artDriverFactory}
+func newArtifactServer(authN auth.Gatekeeper, hydrator hydrator.Interface, wfArchive sqldb.WorkflowArchive, instanceIDService instanceid.Service, artDriverFactory artifact.NewDriverFunc, artifactRepositories artifactrepositories.Interface) *ArtifactServer {
+	return &ArtifactServer{authN, hydrator, wfArchive, instanceIDService, artDriverFactory, artifactRepositories}
 }
 
 func (a *ArtifactServer) GetArtifact(w http.ResponseWriter, r *http.Request) {
diff --git a/workflow/artifactrepositories/artifactrepositories.go b/workflow/artifactrepositories/artifactrepositories.go
new file mode 100644
index 000000000..7ddc04109
--- /dev/null
+++ b/workflow/artifactrepositories/artifactrepositories.go
@@ -0,0 +1,96 @@
+package artifactrepositories
+
+import (
+	"fmt"
+
+	log "github.com/sirupsen/logrus"
+	v1 "k8s.io/api/core/v1"
+	apierr "k8s.io/apimachinery/pkg/api/errors"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/apimachinery/pkg/util/wait"
+	"k8s.io/client-go/kubernetes"
+	"sigs.k8s.io/yaml"
+
+	"github.com/argoproj/argo/config"
+	wfv1 "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1"
+	errorsutil "github.com/argoproj/argo/util/errors"
+	"github.com/argoproj/argo/util/retry"
+)
+
+//go:generate mockery -name Interface
+
+type Interface interface {
+	// Resolve Figures out the correct repository to for a workflow.
+	Resolve(ref *wfv1.ArtifactRepositoryRef, workflowNamespace string) (*wfv1.ArtifactRepositoryRefStatus, error)
+	// Get returns the referenced repository. May return nil (if no default artifact repository is configured).
+	Get(ref *wfv1.ArtifactRepositoryRefStatus) (*config.ArtifactRepository, error)
+}
+
+func New(kubernetesInterface kubernetes.Interface, namespace string, defaultArtifactRepository *config.ArtifactRepository) Interface {
+	return &artifactRepositories{kubernetesInterface, namespace, defaultArtifactRepository}
+}
+
+type artifactRepositories struct {
+	kubernetesInterface       kubernetes.Interface
+	namespace                 string
+	defaultArtifactRepository *config.ArtifactRepository
+}
+
+func (s *artifactRepositories) Resolve(ref *wfv1.ArtifactRepositoryRef, workflowNamespace string) (*wfv1.ArtifactRepositoryRefStatus, error) {
+	var refs []*wfv1.ArtifactRepositoryRefStatus
+	if ref != nil {
+		refs = []*wfv1.ArtifactRepositoryRefStatus{
+			{Namespace: workflowNamespace, ArtifactRepositoryRef: wfv1.ArtifactRepositoryRef{ConfigMap: ref.ConfigMap, Key: ref.Key}},
+			{Namespace: s.namespace, ArtifactRepositoryRef: wfv1.ArtifactRepositoryRef{ConfigMap: ref.ConfigMap, Key: ref.Key}},
+		}
+	} else {
+		refs = []*wfv1.ArtifactRepositoryRefStatus{
+			{Namespace: workflowNamespace},
+			wfv1.DefaultArtifactRepositoryRefStatus,
+		}
+	}
+	for _, r := range refs {
+		resolvedRef, _, err := s.get(r)
+		if apierr.IsNotFound(err) {
+			continue
+		}
+		if err != nil {
+			return nil, fmt.Errorf(`error getting config map for artifact repository ref "%v": %w`, r, err)
+		}
+		log.WithField("artifactRepositoryRef", r).Info("resolved artifact repository")
+		return resolvedRef, nil
+	}
+	return nil, fmt.Errorf("failed to find any artifact repository - should never happen")
+}
+
+func (s *artifactRepositories) Get(ref *wfv1.ArtifactRepositoryRefStatus) (*config.ArtifactRepository, error) {
+	_, repo, err := s.get(ref)
+	return repo, err
+}
+
+func (s *artifactRepositories) get(ref *wfv1.ArtifactRepositoryRefStatus) (*wfv1.ArtifactRepositoryRefStatus, *config.ArtifactRepository, error) {
+	if ref.Default {
+		return ref, s.defaultArtifactRepository, nil
+	}
+	var cm *v1.ConfigMap
+	namespace := ref.Namespace
+	configMap := ref.GetConfigMapOr("artifact-repositories")
+	err := wait.ExponentialBackoff(retry.DefaultRetry, func() (bool, error) {
+		var err error
+		cm, err = s.kubernetesInterface.CoreV1().ConfigMaps(namespace).Get(configMap, metav1.GetOptions{})
+		return err == nil || !errorsutil.IsTransientErr(err), err
+	})
+	if err != nil {
+		return nil, nil, err
+	}
+	key := ref.GetKeyOr(cm.Annotations["workflows.argoproj.io/default-artifact-repository"])
+	value, ok := cm.Data[key]
+	if !ok {
+		return nil, nil, fmt.Errorf(`config map missing key %s for artifact repository ref "%v"`, ref, key)
+	}
+	repo := &config.ArtifactRepository{}
+	// we need the fully filled out ref so we can store it in the workflow status and it will never change
+	// (even if the config map default annotation is changed)
+	// this means users can change the default
+	return &wfv1.ArtifactRepositoryRefStatus{Namespace: namespace, ArtifactRepositoryRef: wfv1.ArtifactRepositoryRef{ConfigMap: configMap, Key: key}}, repo, yaml.Unmarshal([]byte(value), repo)
+}
diff --git a/workflow/artifactrepositories/mocks/Interface.go b/workflow/artifactrepositories/mocks/Interface.go
new file mode 100644
index 000000000..7b6bc00c1
--- /dev/null
+++ b/workflow/artifactrepositories/mocks/Interface.go
@@ -0,0 +1,61 @@
+// Code generated by mockery v1.1.1. DO NOT EDIT.
+
+package mocks
+
+import (
+	config "github.com/argoproj/argo/config"
+	mock "github.com/stretchr/testify/mock"
+
+	v1alpha1 "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1"
+)
+
+// Interface is an autogenerated mock type for the Interface type
+type Interface struct {
+	mock.Mock
+}
+
+// Get provides a mock function with given fields: ref
+func (_m *Interface) Get(ref *v1alpha1.ArtifactRepositoryRefStatus) (*config.ArtifactRepository, error) {
+	ret := _m.Called(ref)
+
+	var r0 *config.ArtifactRepository
+	if rf, ok := ret.Get(0).(func(*v1alpha1.ArtifactRepositoryRefStatus) *config.ArtifactRepository); ok {
+		r0 = rf(ref)
+	} else {
+		if ret.Get(0) != nil {
+			r0 = ret.Get(0).(*config.ArtifactRepository)
+		}
+	}
+
+	var r1 error
+	if rf, ok := ret.Get(1).(func(*v1alpha1.ArtifactRepositoryRefStatus) error); ok {
+		r1 = rf(ref)
+	} else {
+		r1 = ret.Error(1)
+	}
+
+	return r0, r1
+}
+
+// Resolve provides a mock function with given fields: ref, workflowNamespace
+func (_m *Interface) Resolve(ref *v1alpha1.ArtifactRepositoryRef, workflowNamespace string) (*v1alpha1.ArtifactRepositoryRefStatus, error) {
+	ret := _m.Called(ref, workflowNamespace)
+
+	var r0 *v1alpha1.ArtifactRepositoryRefStatus
+	if rf, ok := ret.Get(0).(func(*v1alpha1.ArtifactRepositoryRef, string) *v1alpha1.ArtifactRepositoryRefStatus); ok {
+		r0 = rf(ref, workflowNamespace)
+	} else {
+		if ret.Get(0) != nil {
+			r0 = ret.Get(0).(*v1alpha1.ArtifactRepositoryRefStatus)
+		}
+	}
+
+	var r1 error
+	if rf, ok := ret.Get(1).(func(*v1alpha1.ArtifactRepositoryRef, string) error); ok {
+		r1 = rf(ref, workflowNamespace)
+	} else {
+		r1 = ret.Error(1)
+	}
+
+	return r0, r1
+}
diff --git a/workflow/artifactrepositories/mocks/default.go b/workflow/artifactrepositories/mocks/default.go
new file mode 100644
index 000000000..980830107
--- /dev/null
+++ b/workflow/artifactrepositories/mocks/default.go
@@ -0,0 +1,15 @@
+package mocks
+
+import (
+	"github.com/stretchr/testify/mock"
+
+	"github.com/argoproj/argo/config"
+	wfv1 "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1"
+)
+
+func DummyArtifactRepositories(repo *config.ArtifactRepository) *Interface {
+	i := &Interface{}
+	i.On("Resolve", mock.Anything, mock.Anything).Return(wfv1.DefaultArtifactRepositoryRefStatus, nil)
+	i.On("Get", mock.Anything).Return(repo, nil)
+	return i
+}
diff --git a/workflow/controller/config.go b/workflow/controller/config.go
index 29a7a168c..ff341acc5 100644
--- a/workflow/controller/config.go
+++ b/workflow/controller/config.go
@@ -12,6 +12,7 @@ import (
 	"github.com/argoproj/argo/errors"
 	"github.com/argoproj/argo/persist/sqldb"
 	"github.com/argoproj/argo/util/instanceid"
+	"github.com/argoproj/argo/workflow/artifactrepositories"
 	"github.com/argoproj/argo/workflow/hydrator"
 )
 
@@ -33,6 +34,7 @@ func (wfc *WorkflowController) updateConfig(v interface{}) error {
 		}
 	}
 	wfc.session = nil
+	wfc.artifactRepositories = artifactrepositories.New(wfc.kubeclientset, wfc.namespace, &wfc.Config.ArtifactRepository)
 	wfc.offloadNodeStatusRepo = sqldb.ExplosiveOffloadNodeStatusRepo
 	wfc.wfArchive = sqldb.NullWorkflowArchive
 	wfc.archiveLabelSelector = labels.Everything()
diff --git a/workflow/controller/controller.go b/workflow/controller/controller.go
index ca0325e04..40871c9ee 100644
--- a/workflow/controller/controller.go
+++ b/workflow/controller/controller.go
@@ -40,6 +40,7 @@ import (
 	wfextvv1alpha1 "github.com/argoproj/argo/pkg/client/informers/externalversions/workflow/v1alpha1"
 	authutil "github.com/argoproj/argo/util/auth"
 	errorsutil "github.com/argoproj/argo/util/errors"
+	"github.com/argoproj/argo/workflow/artifactrepositories"
 	"github.com/argoproj/argo/workflow/common"
 	controllercache "github.com/argoproj/argo/workflow/controller/cache"
 	"github.com/argoproj/argo/workflow/controller/estimation"
@@ -64,6 +65,8 @@ type WorkflowController struct {
 	configController config.Controller
 	// Config is the workflow controller's configuration
 	Config config.Config
+	// get the artifact repository
+	artifactRepositories artifactrepositories.Interface
 
 	// cliExecutorImage is the executor image as specified from the command line
 	cliExecutorImage string
diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go
index 403753e37..116f63cf0 100644
--- a/workflow/controller/operator.go
+++ b/workflow/controller/operator.go
@@ -150,7 +150,6 @@ func newWorkflowOperationCtx(wf *wfv1.Workflow, wfc *WorkflowController) *wfOper
 		controller:             wfc,
 		globalParams:           make(map[string]string),
 		volumes:                wf.Spec.DeepCopy().Volumes,
-		artifactRepository:     &wfc.Config.ArtifactRepository,
 		completedPods:          make(map[string]bool),
 		succeededPods:          make(map[string]bool),
 		deadline:               time.Now().UTC().Add(maxOperationTime),
@@ -203,6 +202,23 @@ func (woc *wfOperationCtx) operate() {
 		return
 	}
 
+	if woc.wf.Status.ArtifactRepositoryRef == nil {
+		ref, err := woc.controller.artifactRepositories.Resolve(woc.execWf.Spec.ArtifactRepositoryRef, woc.wf.Namespace)
+		if err != nil {
+			woc.markWorkflowError(fmt.Errorf("failed to resolve artifact repository: %w", err))
+			return
+		}
+		woc.wf.Status.ArtifactRepositoryRef = ref
+		woc.updated = true
+	}
+
+	repo, err := woc.controller.artifactRepositories.Get(woc.wf.Status.ArtifactRepositoryRef)
+	if err != nil {
+		woc.markWorkflowError(fmt.Errorf("failed to get artifact repository: %v", err))
+		return
+	}
+	woc.artifactRepository = repo
+
 	// Workflow Level Synchronization lock
 	if woc.execWf.Spec.Synchronization != nil {
 		acquired, wfUpdate, msg, err := woc.controller.syncManager.TryAcquire(woc.wf, "", woc.execWf.Spec.Synchronization)
@@ -301,16 +317,6 @@ func (woc *wfOperationCtx) operate() {
 		return
 	}
 
-	if woc.execWf.Spec.ArtifactRepositoryRef != nil {
-		repo, err := woc.getArtifactRepositoryByRef(woc.execWf.Spec.ArtifactRepositoryRef)
-		if err == nil {
-			woc.artifactRepository = repo
-		} else {
-			woc.markWorkflowError(err)
-			return
-		}
-	}
-
 	err = woc.substituteParamsInVolumes(woc.globalParams)
 	if err != nil {
 		woc.log.WithError(err).Error("volumes global param substitution error")
@@ -3059,31 +3065,6 @@ func (woc *wfOperationCtx) includeScriptOutput(nodeName, boundaryID string) (boo
 	return false, nil
 }
 
-func (woc *wfOperationCtx) getArtifactRepositoryByRef(arRef *wfv1.ArtifactRepositoryRef) (*config.ArtifactRepository, error) {
-	namespaces := []string{woc.wf.ObjectMeta.Namespace, woc.controller.namespace}
-	for _, namespace := range namespaces {
-		cm, err := woc.controller.kubeclientset.CoreV1().ConfigMaps(namespace).Get(arRef.GetConfigMap(), metav1.GetOptions{})
-		if err != nil {
-			if apierr.IsNotFound(err) {
-				continue
-			}
-			return nil, err
-		}
-		value, ok := cm.Data[arRef.Key]
-		if !ok {
-			continue
-		}
-		woc.log.WithFields(log.Fields{"namespace": namespace, "name": cm.Name}).Debug("Found artifact repository by ref")
-		ar := &config.ArtifactRepository{}
-		err = yaml.Unmarshal([]byte(value), ar)
-		if err != nil {
-			return nil, err
-		}
-		return ar, nil
-	}
-	return nil, fmt.Errorf("failed to find artifactory ref {%s}/%s#%s", strings.Join(namespaces, ","), arRef.GetConfigMap(), arRef.Key)
-}
-
 func (woc *wfOperationCtx) fetchWorkflowSpec() (wfv1.WorkflowSpecHolder, error) {
 	if woc.wf.Spec.WorkflowTemplateRef == nil {
 		return nil, fmt.Errorf("cannot fetch workflow spec without workflowTemplateRef")


Test patch:
diff --git a/server/artifacts/artifact_server_test.go b/server/artifacts/artifact_server_test.go
index 3abcbc58e..0762662b1 100644
--- a/server/artifacts/artifact_server_test.go
+++ b/server/artifacts/artifact_server_test.go
@@ -17,12 +17,14 @@ import (
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	kubefake "k8s.io/client-go/kubernetes/fake"
 
-	"github.com/argoproj/argo/persist/sqldb/mocks"
+	"github.com/argoproj/argo/config"
+	sqldbmocks "github.com/argoproj/argo/persist/sqldb/mocks"
 	wfv1 "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1"
 	fakewfv1 "github.com/argoproj/argo/pkg/client/clientset/versioned/fake"
 	"github.com/argoproj/argo/server/auth"
 	authmocks "github.com/argoproj/argo/server/auth/mocks"
 	"github.com/argoproj/argo/util/instanceid"
+	armocks "github.com/argoproj/argo/workflow/artifactrepositories/mocks"
 	"github.com/argoproj/argo/workflow/common"
 	hydratorfake "github.com/argoproj/argo/workflow/hydrator/fake"
 )
@@ -94,14 +96,14 @@ func newServer() *ArtifactServer {
 		ObjectMeta: metav1.ObjectMeta{Namespace: "my-ns", Name: "your-wf"}})
 	ctx := context.WithValue(context.WithValue(context.Background(), auth.KubeKey, kube), auth.WfKey, argo)
 	gatekeeper.On("Context", mock.Anything).Return(ctx, nil)
-	a := &mocks.WorkflowArchive{}
+	a := &sqldbmocks.WorkflowArchive{}
 	a.On("GetWorkflow", "my-uuid").Return(wf, nil)
 
 	fakeArtifactDriverFactory := func(_ *wfv1.Artifact, _ resource.Interface) (artifact.ArtifactDriver, error) {
 		return &fakeArtifactDriver{data: []byte("my-data")}, nil
 	}
 
-	return newArtifactServer(gatekeeper, hydratorfake.Noop, a, instanceid.NewService(instanceId), fakeArtifactDriverFactory)
+	return newArtifactServer(gatekeeper, hydratorfake.Noop, a, instanceid.NewService(instanceId), fakeArtifactDriverFactory, armocks.DummyArtifactRepositories(&config.ArtifactRepository{}))
 }
 
 func TestArtifactServer_GetArtifact(t *testing.T) {
diff --git a/test/e2e/smoke_test.go b/test/e2e/smoke_test.go
index 925fa20ee..0b47c1b66 100644
--- a/test/e2e/smoke_test.go
+++ b/test/e2e/smoke_test.go
@@ -3,6 +3,7 @@
 package e2e
 
 import (
+	"os"
 	"testing"
 	"time"
 
@@ -49,9 +50,16 @@ func (s *SmokeSuite) TestRunAsNonRootWorkflow() {
 }
 
 func (s *SmokeSuite) TestArtifactPassing() {
-	if s.Config.ContainerRuntimeExecutor != common.ContainerRuntimeExecutorDocker {
+
+	switch s.Config.ContainerRuntimeExecutor {
+	case common.ContainerRuntimeExecutorKubelet, common.ContainerRuntimeExecutorK8sAPI:
 		s.T().Skip("non-docker not supported")
+	case common.ContainerRuntimeExecutorPNS:
+		if os.Getenv("CI") == "true" {
+			s.T().Skip("non-docker not supported")
+		}
 	}
+
 	s.Given().
 		Workflow("@smoke/artifact-passing.yaml").
 		When().
diff --git a/test/e2e/testdata/artifact-repository-ref.yaml b/test/e2e/testdata/artifact-repository-ref.yaml
index 23f3c4b70..950292456 100644
--- a/test/e2e/testdata/artifact-repository-ref.yaml
+++ b/test/e2e/testdata/artifact-repository-ref.yaml
@@ -7,7 +7,7 @@ metadata:
 spec:
   entrypoint: main
   artifactRepositoryRef:
-    key: minio
+    key: my-key
   templates:
     - name: main
       container:
diff --git a/workflow/artifactrepositories/artifactrepositories_test.go b/workflow/artifactrepositories/artifactrepositories_test.go
new file mode 100644
index 000000000..ca63e5516
--- /dev/null
+++ b/workflow/artifactrepositories/artifactrepositories_test.go
@@ -0,0 +1,96 @@
+package artifactrepositories
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+	corev1 "k8s.io/api/core/v1"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	kubefake "k8s.io/client-go/kubernetes/fake"
+
+	"github.com/argoproj/argo/config"
+	wfv1 "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1"
+)
+
+func TestArtifactRepositories(t *testing.T) {
+	defaultArtifactRepository := &config.ArtifactRepository{}
+	k := kubefake.NewSimpleClientset()
+	i := New(k, "my-ctrl-ns", defaultArtifactRepository)
+	t.Run("Explicit.WorkflowNamespace", func(t *testing.T) {
+		_, err := k.CoreV1().ConfigMaps("my-wf-ns").Create(&corev1.ConfigMap{
+			ObjectMeta: metav1.ObjectMeta{Name: "artifact-repositories"},
+			Data:       map[string]string{"my-key": ""},
+		})
+		assert.NoError(t, err)
+
+		ref, err := i.Resolve(&wfv1.ArtifactRepositoryRef{Key: "my-key"}, "my-wf-ns")
+		if assert.NoError(t, err) {
+			assert.Equal(t, "my-wf-ns", ref.Namespace)
+			assert.Equal(t, "artifact-repositories", ref.ConfigMap)
+			assert.Equal(t, "my-key", ref.Key)
+			assert.False(t, ref.Default)
+		}
+
+		err = k.CoreV1().ConfigMaps("my-wf-ns").Delete("artifact-repositories", nil)
+		assert.NoError(t, err)
+	})
+	t.Run("Explicit.ControllerNamespace", func(t *testing.T) {
+		_, err := k.CoreV1().ConfigMaps("my-ctrl-ns").Create(&corev1.ConfigMap{
+			ObjectMeta: metav1.ObjectMeta{Name: "artifact-repositories"},
+			Data:       map[string]string{"my-key": ""},
+		})
+		assert.NoError(t, err)
+
+		ref, err := i.Resolve(&wfv1.ArtifactRepositoryRef{Key: "my-key"}, "my-wf-ns")
+		if assert.NoError(t, err) {
+			assert.Equal(t, "my-ctrl-ns", ref.Namespace)
+			assert.Equal(t, "artifact-repositories", ref.ConfigMap)
+			assert.Equal(t, "my-key", ref.Key)
+			assert.False(t, ref.Default)
+		}
+
+		err = k.CoreV1().ConfigMaps("my-ctrl-ns").Delete("artifact-repositories", nil)
+		assert.NoError(t, err)
+	})
+	t.Run("Explicit.ConfigMapNotFound", func(t *testing.T) {
+		_, err := i.Resolve(&wfv1.ArtifactRepositoryRef{}, "my-wf-ns")
+		assert.Error(t, err)
+	})
+	t.Run("Explicit.ConfigMapMissingKey", func(t *testing.T) {
+		_, err := k.CoreV1().ConfigMaps("my-ns").Create(&corev1.ConfigMap{
+			ObjectMeta: metav1.ObjectMeta{Name: "artifact-repositories"},
+		})
+		assert.NoError(t, err)
+
+		_, err = i.Resolve(&wfv1.ArtifactRepositoryRef{}, "my-wf-ns")
+		assert.Error(t, err)
+
+		err = k.CoreV1().ConfigMaps("my-ns").Delete("artifact-repositories", nil)
+		assert.NoError(t, err)
+	})
+	t.Run("WorkflowNamespaceDefault", func(t *testing.T) {
+		_, err := k.CoreV1().ConfigMaps("my-wf-ns").Create(&corev1.ConfigMap{
+			ObjectMeta: metav1.ObjectMeta{
+				Name:        "artifact-repositories",
+				Annotations: map[string]string{"workflows.argoproj.io/default-artifact-repository": "default-v1"},
+			},
+			Data: map[string]string{"default-v1": ""},
+		})
+		assert.NoError(t, err)
+
+		ref, err := i.Resolve(nil, "my-wf-ns")
+		if assert.NoError(t, err) {
+			assert.Equal(t, "my-wf-ns", ref.Namespace)
+			assert.Equal(t, "artifact-repositories", ref.ConfigMap)
+			assert.Equal(t, "default-v1", ref.Key)
+			assert.False(t, ref.Default)
+		}
+		err = k.CoreV1().ConfigMaps("my-wf-ns").Delete("artifact-repositories", nil)
+		assert.NoError(t, err)
+	})
+	t.Run("Default", func(t *testing.T) {
+		ref, err := i.Resolve(nil, "my-wf-ns")
+		assert.NoError(t, err)
+		assert.Equal(t, wfv1.DefaultArtifactRepositoryRefStatus, ref)
+	})
+}
diff --git a/workflow/controller/controller_test.go b/workflow/controller/controller_test.go
index 3667f58c2..2176c6079 100644
--- a/workflow/controller/controller_test.go
+++ b/workflow/controller/controller_test.go
@@ -29,6 +29,7 @@ import (
 	"github.com/argoproj/argo/pkg/client/clientset/versioned/scheme"
 	wfextv "github.com/argoproj/argo/pkg/client/informers/externalversions"
 	"github.com/argoproj/argo/test"
+	armocks "github.com/argoproj/argo/workflow/artifactrepositories/mocks"
 	"github.com/argoproj/argo/workflow/common"
 	controllercache "github.com/argoproj/argo/workflow/controller/cache"
 	"github.com/argoproj/argo/workflow/controller/estimation"
@@ -146,7 +147,12 @@ func newController(options ...interface{}) (context.CancelFunc, *WorkflowControl
 	ctx, cancel := context.WithCancel(context.Background())
 	kube := fake.NewSimpleClientset()
 	wfc := &WorkflowController{
-		Config:               config.Config{ExecutorImage: "executor:latest"},
+		Config: config.Config{ExecutorImage: "executor:latest"},
+		artifactRepositories: armocks.DummyArtifactRepositories(&config.ArtifactRepository{
+			S3: &config.S3ArtifactRepository{
+				S3Bucket: wfv1.S3Bucket{Endpoint: "my-endpoint", Bucket: "my-bucket"},
+			},
+		}),
 		kubeclientset:        kube,
 		dynamicInterface:     dynamicClient,
 		wfclientset:          wfclientset,
diff --git a/workflow/controller/dag_test.go b/workflow/controller/dag_test.go
index 683b2a989..80beb0e7c 100644
--- a/workflow/controller/dag_test.go
+++ b/workflow/controller/dag_test.go
@@ -1867,16 +1867,12 @@ status:
 `
 
 func TestDagOptionalInputArtifacts(t *testing.T) {
-	cancel, controller := newController()
-	defer cancel()
-	wfcset := controller.wfclientset.ArgoprojV1alpha1().Workflows("")
-
 	wf := unmarshalWF(testDagOptionalInputArtifacts)
-	wf, err := wfcset.Create(wf)
-	assert.NoError(t, err)
+	cancel, controller := newController(wf)
+	defer cancel()
 	woc := newWorkflowOperationCtx(wf, controller)
-
 	woc.operate()
+	assert.Equal(t, wfv1.NodeRunning, woc.wf.Status.Phase)
 	optionalInputArtifactsNode := woc.wf.GetNodeByName("dag-optional-inputartifacts.B")
 	if assert.NotNil(t, optionalInputArtifactsNode) {
 		assert.Equal(t, wfv1.NodePending, optionalInputArtifactsNode.Phase)
diff --git a/workflow/controller/operator_test.go b/workflow/controller/operator_test.go
index ec9a0205d..e0010c4cf 100644
--- a/workflow/controller/operator_test.go
+++ b/workflow/controller/operator_test.go
@@ -2339,7 +2339,6 @@ spec:
 func TestResolveIOPathPlaceholders(t *testing.T) {
 	wf := unmarshalWF(ioPathPlaceholders)
 	woc := newWoc(*wf)
-	woc.artifactRepository.S3 = new(config.S3ArtifactRepository)
 	woc.operate()
 	assert.Equal(t, wfv1.NodeRunning, woc.wf.Status.Phase)
 	pods, err := woc.controller.kubeclientset.CoreV1().Pods(wf.ObjectMeta.Namespace).List(metav1.ListOptions{})
@@ -2369,7 +2368,6 @@ spec:
 func TestResolvePlaceholdersInOutputValues(t *testing.T) {
 	wf := unmarshalWF(outputValuePlaceholders)
 	woc := newWoc(*wf)
-	woc.artifactRepository.S3 = new(config.S3ArtifactRepository)
 	woc.operate()
 	assert.Equal(t, wfv1.NodeRunning, woc.wf.Status.Phase)
 	pods, err := woc.controller.kubeclientset.CoreV1().Pods(wf.ObjectMeta.Namespace).List(metav1.ListOptions{})
@@ -2407,7 +2405,6 @@ spec:
 func TestResolvePodNameInRetries(t *testing.T) {
 	wf := unmarshalWF(podNameInRetries)
 	woc := newWoc(*wf)
-	woc.artifactRepository.S3 = new(config.S3ArtifactRepository)
 	woc.operate()
 	assert.Equal(t, wfv1.NodeRunning, woc.wf.Status.Phase)
 	pods, err := woc.controller.kubeclientset.CoreV1().Pods(wf.ObjectMeta.Namespace).List(metav1.ListOptions{})
@@ -2633,65 +2630,6 @@ func TestResourceWithOwnerReferenceTemplate(t *testing.T) {
 	}
 }
 
-var artifactRepositoryRef = `
-apiVersion: argoproj.io/v1alpha1
-kind: Workflow
-metadata:
-  generateName: artifact-repo-config-ref-
-  namespace: my-ns
-spec:
-  entrypoint: whalesay
-  artifactRepositoryRef:
-    key: minio
-  templates:
-  - name: whalesay
-    container:
-      image: docker/whalesay:latest
-      command: [sh, -c]
-      args: ["cowsay hello world | tee /tmp/hello_world.txt"]
-    outputs:
-      artifacts:
-      - name: message
-        path: /tmp/hello_world.txt
-`
-
-var artifactRepositoryConfigMapData = `
-s3:
-  bucket: my-bucket
-  keyPrefix: prefix/in/bucket
-  endpoint: my-minio-endpoint.default:9000
-  insecure: true
-  accessKeySecret:
-    name: my-minio-cred
-    key: accesskey
-  secretKeySecret:
-    name: my-minio-cred
-    key: secretkey
-`
-
-func TestArtifactRepositoryRef(t *testing.T) {
-	wf := unmarshalWF(artifactRepositoryRef)
-	woc := newWoc(*wf)
-	_, err := woc.controller.kubeclientset.CoreV1().ConfigMaps(wf.ObjectMeta.Namespace).Create(
-		&apiv1.ConfigMap{
-			ObjectMeta: metav1.ObjectMeta{
-				Name: "artifact-repositories",
-			},
-			Data: map[string]string{
-				"minio": artifactRepositoryConfigMapData,
-			},
-		},
-	)
-	assert.NoError(t, err)
-	woc.operate()
-	assert.Equal(t, woc.artifactRepository.S3.Bucket, "my-bucket")
-	assert.Equal(t, woc.artifactRepository.S3.Endpoint, "my-minio-endpoint.default:9000")
-	assert.Equal(t, wfv1.NodeRunning, woc.wf.Status.Phase)
-	pods, err := woc.controller.kubeclientset.CoreV1().Pods(wf.ObjectMeta.Namespace).List(metav1.ListOptions{})
-	assert.NoError(t, err)
-	assert.True(t, len(pods.Items) > 0, "pod was not created successfully")
-}
-
 var stepScriptTmpl = `
 apiVersion: argoproj.io/v1alpha1
 kind: Workflow
@@ -3010,30 +2948,6 @@ spec:
 			"Normal WorkflowRunning Workflow Running",
 			"Warning WorkflowFailed invalid spec: template name '123' undefined",
 		},
-		`
-apiVersion: argoproj.io/v1alpha1
-kind: Workflow
-metadata:
-  name: artifact-repo-config-ref-
-spec:
-  entrypoint: whalesay
-  artifactRepositoryRef:
-    configMap: artifact-repository
-    key: config
-  templates:
-  - name: whalesay
-    container:
-      image: docker/whalesay:latest
-      command: [sh, -c]
-      args: ["cowsay hello world | tee /tmp/hello_world.txt"]
-    outputs:
-      artifacts:
-      - name: message
-        path: /tmp/hello_world.txt
-`: {
-			"Normal WorkflowRunning Workflow Running",
-			"Warning WorkflowFailed failed to find artifactory ref {,}/artifact-repository#config",
-		},
 		// DAG
 		`
 metadata:
@@ -3078,8 +2992,9 @@ spec:
 		},
 	} {
 		wf := unmarshalWF(manifest)
-		cancel, controller := newController(wf)
 		t.Run(wf.Name, func(t *testing.T) {
+			cancel, controller := newController(wf)
+			defer cancel()
 			woc := newWorkflowOperationCtx(wf, controller)
 			woc.operate()
 			makePodsPhase(woc, apiv1.PodSucceeded)
@@ -3087,7 +3002,6 @@ spec:
 			woc.operate()
 			assert.Equal(t, want, getEvents(controller, len(want)))
 		})
-		cancel()
 	}
 }
 
@@ -3676,7 +3590,6 @@ spec:
 func TestResolvePlaceholdersInGlobalVariables(t *testing.T) {
 	wf := unmarshalWF(globalVariablePlaceholders)
 	woc := newWoc(*wf)
-	woc.artifactRepository.S3 = new(config.S3ArtifactRepository)
 	woc.operate()
 	assert.Equal(t, wfv1.NodeRunning, woc.wf.Status.Phase)
 	pods, err := woc.controller.kubeclientset.CoreV1().Pods(wf.ObjectMeta.Namespace).List(metav1.ListOptions{})
diff --git a/workflow/controller/workflowpod_test.go b/workflow/controller/workflowpod_test.go
index 788e31b12..5bb633ebd 100644
--- a/workflow/controller/workflowpod_test.go
+++ b/workflow/controller/workflowpod_test.go
@@ -16,6 +16,7 @@ import (
 	"github.com/argoproj/argo/config"
 	wfv1 "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1"
 	"github.com/argoproj/argo/test/util"
+	armocks "github.com/argoproj/argo/workflow/artifactrepositories/mocks"
 	"github.com/argoproj/argo/workflow/common"
 )
 
@@ -36,12 +37,8 @@ func newWoc(wfs ...wfv1.Workflow) *wfOperationCtx {
 	} else {
 		wf = &wfs[0]
 	}
-	cancel, controller := newController()
+	cancel, controller := newController(wf)
 	defer cancel()
-	_, err := controller.wfclientset.ArgoprojV1alpha1().Workflows(wf.ObjectMeta.Namespace).Create(wf)
-	if err != nil {
-		panic(err)
-	}
 	woc := newWorkflowOperationCtx(wf, controller)
 	return woc
 }
@@ -480,18 +477,22 @@ func TestMetadata(t *testing.T) {
 // TestWorkflowControllerArchiveConfig verifies archive location substitution of workflow
 func TestWorkflowControllerArchiveConfig(t *testing.T) {
 	woc := newWoc()
-	woc.artifactRepository.S3 = &config.S3ArtifactRepository{
+	setArtifactRepository(woc.controller, &config.ArtifactRepository{S3: &config.S3ArtifactRepository{
 		S3Bucket: wfv1.S3Bucket{
 			Bucket: "foo",
 		},
 		KeyFormat: "{{workflow.creationTimestamp.Y}}/{{workflow.creationTimestamp.m}}/{{workflow.creationTimestamp.d}}/{{workflow.name}}/{{pod.name}}",
-	}
+	}})
 	woc.operate()
 	pods, err := woc.controller.kubeclientset.CoreV1().Pods("").List(metav1.ListOptions{})
 	assert.NoError(t, err)
 	assert.Len(t, pods.Items, 1)
 }
 
+func setArtifactRepository(controller *WorkflowController, repo *config.ArtifactRepository) {
+	controller.artifactRepositories = armocks.DummyArtifactRepositories(repo)
+}
+
 // TestWorkflowControllerArchiveConfigUnresolvable verifies workflow fails when archive location has
 // unresolvable variables
 func TestWorkflowControllerArchiveConfigUnresolvable(t *testing.T) {
@@ -505,12 +506,12 @@ func TestWorkflowControllerArchiveConfigUnresolvable(t *testing.T) {
 		},
 	}
 	woc := newWoc(*wf)
-	woc.artifactRepository.S3 = &config.S3ArtifactRepository{
+	setArtifactRepository(woc.controller, &config.ArtifactRepository{S3: &config.S3ArtifactRepository{
 		S3Bucket: wfv1.S3Bucket{
 			Bucket: "foo",
 		},
 		KeyFormat: "{{workflow.unresolvable}}",
-	}
+	}})
 	woc.operate()
 	pods, err := woc.controller.kubeclientset.CoreV1().Pods("").List(metav1.ListOptions{})
 	assert.NoError(t, err)
@@ -520,12 +521,12 @@ func TestWorkflowControllerArchiveConfigUnresolvable(t *testing.T) {
 // TestConditionalNoAddArchiveLocation verifies we do not add archive location if it is not needed
 func TestConditionalNoAddArchiveLocation(t *testing.T) {
 	woc := newWoc()
-	woc.artifactRepository.S3 = &config.S3ArtifactRepository{
+	setArtifactRepository(woc.controller, &config.ArtifactRepository{S3: &config.S3ArtifactRepository{
 		S3Bucket: wfv1.S3Bucket{
 			Bucket: "foo",
 		},
 		KeyFormat: "path/in/bucket",
-	}
+	}})
 	woc.operate()
 	pods, err := woc.controller.kubeclientset.CoreV1().Pods("").List(metav1.ListOptions{})
 	assert.NoError(t, err)
@@ -540,14 +541,17 @@ func TestConditionalNoAddArchiveLocation(t *testing.T) {
 // TestConditionalNoAddArchiveLocation verifies we do  add archive location if it is needed for logs
 func TestConditionalAddArchiveLocationArchiveLogs(t *testing.T) {
 	woc := newWoc()
-	woc.artifactRepository.S3 = &config.S3ArtifactRepository{
-		S3Bucket: wfv1.S3Bucket{
-			Bucket: "foo",
+	setArtifactRepository(woc.controller, &config.ArtifactRepository{
+		S3: &config.S3ArtifactRepository{
+			S3Bucket: wfv1.S3Bucket{
+				Bucket: "foo",
+			},
+			KeyFormat: "path/in/bucket",
 		},
-		KeyFormat: "path/in/bucket",
-	}
-	woc.artifactRepository.ArchiveLogs = pointer.BoolPtr(true)
+		ArchiveLogs: pointer.BoolPtr(true),
+	})
 	woc.operate()
+	assert.Equal(t, wfv1.NodeRunning, woc.wf.Status.Phase)
 	pods, err := woc.controller.kubeclientset.CoreV1().Pods("").List(metav1.ListOptions{})
 	assert.NoError(t, err)
 	assert.Len(t, pods.Items, 1)
@@ -570,12 +574,12 @@ func TestConditionalArchiveLocation(t *testing.T) {
 		},
 	}
 	woc := newWoc()
-	woc.artifactRepository.S3 = &config.S3ArtifactRepository{
+	setArtifactRepository(woc.controller, &config.ArtifactRepository{S3: &config.S3ArtifactRepository{
 		S3Bucket: wfv1.S3Bucket{
 			Bucket: "foo",
 		},
 		KeyFormat: "path/in/bucket",
-	}
+	}})
 	woc.operate()
 	pods, err := woc.controller.kubeclientset.CoreV1().Pods("").List(metav1.ListOptions{})
 	assert.NoError(t, err)